home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nwnet / root / usr / lib / netcfg / bin / ipx.uc / ipx
Text File  |  1998-08-19  |  5KB  |  200 lines

  1. #!/bin/tcl
  2. #    
  3. #    
  4. #   Copyright (C) 1997, The Santa Cruz Operation, Inc.
  5. #   All Rights Reserved.
  6. #   The information in this file is provided for the exclusive use of
  7. #   the licensees of The Santa Cruz Operation, Inc.  Such users have the
  8. #   right to use, modify, and incorporate this code into other products  
  9. #   for purposes authorized by the license agreement provided they include
  10. #   this notice and the associated copyright notice with any such product.
  11. #   The information in this file is provided "AS IS" without warranty.
  12. #
  13. #ident "@(#)ipx.uc    1.5"
  14. #
  15.  
  16. # This file is used to update the netware configuration
  17.  
  18. #cmdtrace on [ open "/tmp/ipxuc.log" a+ ]
  19.  
  20. # Global constants:
  21. set OK 0
  22. set FAIL 1
  23. set RELINK 2
  24. set CANCEL 3
  25. set REBOOT 2
  26.  
  27.  
  28.  
  29. set configFile "/etc/netware/nwconfig"
  30.  
  31. #
  32. # file containing nwcm commands to update the configuration
  33. #
  34.  
  35. set IPX_NEWCFG "/usr/lib/ipxrt/tmp/config"
  36. set NWCM "/usr/sbin/nwcm.be"
  37. set NETINFO "/usr/sbin/netinfo"
  38. set NETCONFIG "/etc/netconfig"
  39. set TCP tcp
  40. set IPX_TMPDIR "/usr/lib/ipxrt/tmp"
  41.  
  42. source /usr/lib/netcfg/bin/ipx.fn
  43.  
  44. # main Main MAIN
  45.  
  46. global attrFile ncfgState adapter interface dbg dbgfd
  47.  
  48. loadlibindex /usr/lib/sysadm.tlib
  49.  
  50. set attrFile [lindex $argv 0]
  51. set ncfgState [lindex $argv 1]
  52. set adapter [lindex $argv 2]
  53.  
  54. if [ cequal $adapter "/dev/${TCP}" ] {
  55.     set adapter /dev/nwip
  56. set interface [lindex $argv 3]
  57.  
  58. exec cp $configFile $IPX_TMPDIR
  59.  
  60. set dbg 0
  61. if {$dbg} then {
  62.     if {[set dbgfd [open "/tmp/ipxuc.dbg" w]] == -1} then {
  63.         set dbg 0
  64.     }
  65. }
  66.  
  67. switch $ncfgState {
  68.     INITIAL_INIT -
  69.     INIT -
  70.     RECONF {
  71.         #
  72.         # someone wants the netware config updated 
  73.         # all netware parameters involved are in 
  74.         # the IPX_NEWCFG file
  75.         #
  76.         if { [set config_fd [open $IPX_NEWCFG r]] == -1 } {
  77.             return "ERROR cannot open file $IPX_NEWCFG for reading"
  78.         }
  79.  
  80.         if [ cequal $adapter "/dev/nwip" ] {
  81.             if [catch {exec $NETINFO -a -d nwip -p inet} ret] {
  82.                 puts "netinfo error:"
  83.                 puts $ret
  84.                 exit $FAIL
  85.             } 
  86.         }
  87.  
  88.         #
  89.         # Some default nwcm values cannot be set directly and 
  90.         # have to be set using the -r option to nwcm.
  91.         # If Setting a value fails its probably a good idea
  92.         # to set it to the default anyway - so do it.
  93.         #
  94.  
  95.         while { [ gets $config_fd line ] != -1 } {
  96.             if [catch {exec $NWCM -s $line} ret] {
  97.                 #puts "nwcm error:$NWCM $line"
  98.                 #puts $ret
  99.                 #puts "setting to default"
  100.                 #
  101.                 # get the parameter from the line 
  102.                 #
  103.                 set splitline [split $line = ]
  104.                 set param [lindex $splitline 0 ]
  105.                 if [catch {exec $NWCM -r $param} ret] {
  106.                     puts "nwcm error:$NWCM $line"
  107.                     puts $ret
  108.                 }
  109.             } 
  110.         }
  111.  
  112.         close $config_fd
  113.         exec rm $IPX_NEWCFG
  114.     }
  115.     REMOVE {
  116.         #
  117.         # the remove script has been called
  118.         # simply remove the network configured 
  119.         # over the interface. 
  120.         #
  121.         # XXX If this is the only interface configured 
  122.         # and ipx_auto_discovery is set you maybe want to 
  123.         # warn the user that rebooting the system is 
  124.         # likely to reconfigure the card
  125.         # 
  126.  
  127.         #
  128.         # Repeatedly remove any ipx's configured over
  129.         # the card since several ipx lan's can be 
  130.         # configured over one NIC.
  131.         #
  132.  
  133.         set resetPParams {         \
  134.             adapter             \
  135.             network             \
  136.             rip_ageout_intervals     \
  137.             frame_type             \
  138.         }
  139.  
  140.         while {[set number [FindIpxLanNumber adapter $adapter] ]} {
  141.             foreach pp $resetPParams {
  142.                 if [catch {exec $NWCM -r lan_${number}_$pp } ret] {
  143.                     puts "nwcm error:$NWCM $line"
  144.                     puts $ret
  145.                 }
  146.             }
  147.         }
  148.  
  149.         # 
  150.         # reset to default any of the other parameters which 
  151.         # might have been modified so that if the number
  152.         # gets re-used then we don't acquire old values
  153.         #
  154.  
  155.         # remove the netinfo entry for the nwip driver
  156.  
  157.         if [ cequal $adapter "/dev/nwip" ] {
  158.             if [catch {exec $NETINFO -r -d nwip} ret] {
  159.                 puts "netinfo error:"
  160.                 puts $ret
  161.                 exit $FAIL
  162.             } 
  163.         }
  164.     }
  165.     default {
  166.         echo "ipx.uc:unknown command" $ncfgState
  167.         exit $FAIL
  168.     }
  169. }
  170.  
  171. if [ catch {exec diff $configFile $IPX_TMPDIR/nwconfig} ret ] {
  172.     #
  173.     # things have changed - suggest a reboot 
  174.     #
  175.     # check to see if we want netconfig entries present or not
  176.     #
  177.     catch {exec $NWCM -v "ipx_start_at_boot"} ret
  178.  
  179.     if [ cequal $ret "ipx_start_at_boot=off" ] {
  180.         exec grep -v "^\[is\]px " $NETCONFIG > $IPX_TMPDIR/netconfig
  181.         exec mv $IPX_TMPDIR/netconfig $NETCONFIG
  182.     } else {
  183.         if [ catch { exec grep "^\[is\]px " $NETCONFIG } ret ] {
  184.             exec echo "spx tpi_cots_ord v netware spx /dev/nspx2 /usr/lib/novell.so\nipx tpi_clts     v netware ipx /dev/ipx   /usr/lib/novell.so" >> $NETCONFIG
  185.         }
  186.     }
  187.     
  188.     exec rm $IPX_TMPDIR/nwconfig
  189.     exit $REBOOT
  190. }
  191.  
  192.  
  193. exec rm $IPX_TMPDIR/nwconfig
  194.  
  195. exit $OK
  196.  
  197.     
  198.