# 
# snaldmod
#
# Load modules if not already loaded
# Use snatrydrivers to find driver if one not available
#

if [ "x$READINSTCAT" = "x" ]
then
  #
  # Not run from other script.  Set path for message catalog file.  
  # Set "C" to be the default. 
  NLSPATH=/opt/ibm/sna/lib/nls/msg/LC_MESSAGES/%N:/opt/ibm/sna/lib/nls/msg/%L/%N
  export NLSPATH=${NLSPATH}:/opt/ibm/sna/lib/nls/msg/C/%N

  #
  # Set path for snareadinstcat binary
  READINSTCAT=/opt/ibm/sna/bin/snareadinstcat
fi

#
# Exit silently if Driver is already running
#
cat /proc/modules | grep sna_linux > /dev/null 2>&1
if [ $? = 0 ]
then
  exit 0
fi

#
# Ensure streams is loaded
# (this is done by snatrydrivers)

# 
# Call snatrydrivers to ensure compatable 
# Kernel Isolation Driver
#
/opt/ibm/sna/bin/snatrydrivers
TRYRC=$?
if [ $TRYRC != 0 ]
then
  exit $TRYRC
fi

# Load up the Isolation Layer driver
/sbin/insmod -f -o sna_linux /etc/opt/ibm/sna/snapix0/Driver.o >/dev/null 2>&1

# Load up the Trace driver
/sbin/insmod -f -o sna_trace /opt/ibm/sna/drivers/snapixt/Driver.o >/dev/null 2>&1

# Create the trace device entry
MAJOR=`awk '/sna_trace/ { print $1 }' /proc/devices`
MINOR=0
mknod /dev/sna_trace c $MAJOR $MINOR 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi


# Find out the major number of the clone device
CLONEMAJOR=`awk '/clone-drvr/ { print $1 }' /proc/devices`

# Load up the router
/sbin/insmod -f -o streams-sixr /opt/ibm/sna/drivers/snapixr/Driver.o >/dev/null 2>&1

# Create device entries for the router
MAJOR=`awk '/sixr/ { print $1 }' /proc/devices`
mknod /dev/sna_v5access c $CLONEMAJOR $MAJOR 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi
mknod /dev/sna_v5router c $MAJOR 0 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi
chmod a+rw /dev/sna_v5access

# Load up the LAN glue
/sbin/insmod -f -o streams-sixy /opt/ibm/sna/drivers/snapixy/Driver.o >/dev/null 2>&1

# Create the LAN glue device
MAJOR=`awk '/sixy/ { print $1 }' /proc/devices`
mknod /dev/sna_LLG c $CLONEMAJOR $MAJOR 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi

# Load up the SNAP-LLC2 driver
/sbin/insmod -f -o streams-sixn /opt/ibm/sna/drivers/snapixn/Driver.o >/dev/null 2>&1

# Create the SNAP-LLC2 device entry
MAJOR=`awk '/sixn/ { print $1 }' /proc/devices`
mknod /dev/sna_LAN c $CLONEMAJOR $MAJOR 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi

# Load up the SNAP-IPDLC driver
/sbin/insmod -f -o streams-sixi /opt/ibm/sna/drivers/snapixi/Driver.o >/dev/null 2>&1

# Create the SNAP-IPDLC device entry
MAJOR=`awk '/sixi/ { print $1 }' /proc/devices`
mknod /dev/sna_HPRIP c $CLONEMAJOR $MAJOR 2>/dev/null
if [ $? != 0 ]
then
  exit 99
fi

# Load up the DLC to Channel mapper
/sbin/insmod -f -o streams-sixc /opt/ibm/sna/drivers/snapixc/Driver.o >/dev/null 2>&1

# Create the DCL to Channel mapper device entry
MAJOR=`awk '/sixc/ { print $1 }' /proc/devices`
mknod /dev/sna_DCM c $CLONEMAJOR $MAJOR 2>/dev/null
if [ $? != 0 ]
then
  # echo "CTC channel driver not available"
  $READINSTCAT 56
fi

mv /var/opt/ibm/sna/ksyms.gz /var/opt/ibm/sna/ksyms.bak.gz > /dev/null 2>&1
echo `date` > /var/opt/ibm/sna/ksyms
cat /proc/ksyms | sort >> /var/opt/ibm/sna/ksyms
gzip /var/opt/ibm/sna/ksyms

exit 0
