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

  1. #!/bin/osavtcl
  2. #    
  3. #   Copyright (C) 1997, The Santa Cruz Operation, Inc.
  4. #   All Rights Reserved.
  5. #   The information in this file is provided for the exclusive use of
  6. #   the licensees of The Santa Cruz Operation, Inc.  Such users have the
  7. #   right to use, modify, and incorporate this code into other products  
  8. #   for purposes authorized by the license agreement provided they include
  9. #   this notice and the associated copyright notice with any such product.
  10. #   The information in this file is provided "AS IS" without warranty.
  11. #
  12. #ident "@(#)ipx.chk    1.2"
  13. #
  14.  
  15. # verify that the state information in /etc/chains 
  16. # refering to ipx configuration is up to date with the 
  17. # state information in /etc/netware/nwconfig 
  18. #
  19.  
  20. source /usr/lib/netcfg/bin/ipx.fn
  21.  
  22. #cmdtrace on
  23.  
  24. proc DoExit {cbs} {
  25. keylget cbs dialog dialog
  26. VtClose
  27. exit 0
  28. }
  29.  
  30. # WindowWarning a suitable warning with the give message
  31. #
  32. proc WindowWarning { warning } {
  33. #    echo $warning
  34.     set parent [VtOpen plopGUI ""]
  35.     VtShowDialog [VtWarningDialog $parent.err -ok \
  36.             -okCallback DoExit \
  37.             -message $warning]
  38.     VtUnLock
  39.     VtMainLoop
  40. }
  41.  
  42. # VerifyIpxChain {chain nic}
  43. # Verifies netcfg:ipx chains
  44.  
  45. proc VerifyIpxChain { chain nic } {
  46.     set num [ FindIpxLanNumber adapter /dev/$nic ]
  47.     if { $num == 0 } {
  48.         # 
  49.         #  netware configuration doesn't know about this chain
  50.  
  51.         WindowWarning \
  52.         "Netcfg and nwcm configurations are not synchronised.\n\n\
  53.         Netcfg is configured with the chain $chain. The device\n\
  54.         cannot be identified in the netware configuration file.\n\
  55.         Please rectify the situation before continuing."
  56.     }
  57. }
  58.  
  59. # VerifyIpxNwipChain { elem chain }
  60. # Verifies and if necessary removes part of the chain 
  61. # running nwip from  netcfg
  62.  
  63. proc VerifyIpxNwipChain {elem chain} {
  64.     set num [ FindIpxLanNumber adapter /dev/nwip ]
  65.     if { $num == 0 } {
  66.         # 
  67.         #  netware configuration doesn't know about this
  68.         #  chain
  69.         WindowWarning \
  70.         "Netcfg and nwcm configurations are not synchronised.\n\n\
  71.         Netcfg is configured with the chain $chain.\n\
  72.         In the netware configuration this should be identifiable\n\
  73.         as an adapter set to /dev/nwip. Please rectify the \n\
  74.         situation before continuing."
  75.     }
  76. }
  77.  
  78. # Check the chains that netcfg knows about and 
  79. # verify that nwcm knows about them.
  80. # And vice verca.
  81. # And print warnings when necessary
  82. #
  83. proc IpxCheckChains {} {
  84. global MAXLAN
  85.  
  86. set chains [ exec cat /usr/lib/netcfg/chains ]
  87. foreach chain $chains {
  88.     set elems [ split $chain # ]
  89.     set nelem [ llength $elems ]
  90.     set nic [ lindex $elems [ expr $nelem - 1 ] ]
  91.     for { set n 0 } { $n < [ expr $nelem - 1 ] } { incr n } {
  92.         if [ cequal [ lindex $elems $n ] ipx ] {
  93.             # found a chain involving ipx
  94.             if [ cequal $nic "tcp" ] {
  95.                 VerifyIpxNwipChain ipx $chain
  96.             } else {
  97.                 VerifyIpxChain $chain $nic
  98.             }
  99.         }
  100.     }
  101. }
  102.  
  103. # Check the devices nwcm knows about and 
  104. # check that netcfg has them 
  105.  
  106. for { set i 1 } { $i <  [ expr $MAXLAN + 1 ] } { incr i } {
  107.     set adap [ GetNwcmParam lan_${i}_adapter ]
  108.     set tmp [ split $adap / ]
  109.     set dev [ lindex $tmp 2 ]
  110.  
  111.     if { [ cequal ${dev} "nwip" ] } {
  112.         set found 0
  113.         foreach chain $chains {
  114.             if { [ string first "ipx#tcp" $chain ]  != -1 } {
  115.                 set found 1
  116.                 break
  117.             }
  118.         } 
  119.         if { $found == 0 } {
  120.             WindowWarning \
  121.             "Netcfg and nwcm configurations are not synchronised.\n\n\
  122.             Netware is configured to use the device $adap.\n\
  123.             Netcfg does not know about this chain (it should\n\
  124.             appear as ipx running over tcp). Please rectify\n\
  125.             the situation before continuing."
  126.         }
  127.         
  128.     } elseif { ! [ cequal $dev "" ]  } {
  129.         set found 0
  130.         foreach chain $chains {
  131.             if { [ string first "ipx#$dev" $chain ]  != -1 } {
  132.                 set found 1
  133.                 break
  134.             }
  135.         } 
  136.         if { $found == 0 } {
  137.             WindowWarning \
  138.             "Netcfg and nwcm configurations are not synchronised.\n\n\
  139.             Netware is configured to use the device $adap\n\
  140.             Netcfg does not know about this chain. Please\n\
  141.             rectify the situation before continuing."
  142.         }
  143.     }
  144. }
  145.  
  146. }
  147.  
  148. # main
  149.  
  150. IpxCheckChains
  151.