home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd2.bin / suse / inst-sys / sbin / bootp < prev    next >
Text File  |  1999-04-30  |  3KB  |  170 lines

  1. #! /bin/sh
  2. # Copyright (c) 1998 SuSE GmbH Nuernberg, Germany.  All rights reserved.
  3. #
  4. # Author: Thomas Fehr <fehr@suse.de>, 1998
  5. #         Werner Fink <werner@suse.de>, 1998
  6. #
  7. # /sbin/bootp
  8. #
  9.  
  10. TMPDIR=/tmp/.bootp.$$
  11. test -e ${TMPDIR} && rm -rf ${TMPDIR}
  12.  
  13. mkdir -m 1700 $TMPDIR
  14. if [ $? -ne 0 -o ! -d $TMPDIR ]
  15. then
  16.     echo "$0: Can not create clean directory ${TMPDIR}."
  17.     exit 1
  18. fi
  19. trap 'echo "$0: Aborting ..."; rm -rf ${TMPDIR}' 1 2 3 6 7 13 15
  20.  
  21. tmprc=${TMPDIR}/rc.config
  22. tmprt=${TMPDIR}/route.conf
  23.  
  24. PATH=/sbin:/usr/sbin:/bin:/usr/bin
  25. export PATH
  26. OLDIFS="$IFS"
  27. NL='
  28. '
  29.  
  30. BOOTPC='bootpc --timeoutwait 10 --returniffail'
  31.  
  32. DEVICE=eth0
  33. [ -n "$1" ] && DEVICE=$1
  34.  
  35. VERBOSE=0
  36. [ "$2" = -v ] && VERBOSE=1
  37.  
  38. echo Setting up $DEVICE using bootp
  39.  
  40. #
  41. # Broadcast
  42. #
  43. ifconfig dummy0 down
  44. ifconfig $DEVICE up
  45. route add default $DEVICE
  46.  
  47. #
  48. # The program bootpc provides us the information in
  49. # bourne shell syntax like
  50. #
  51. #    SERVER='<IP adress>'
  52. #
  53.  
  54. eval `$BOOTPC --dev $DEVICE`
  55. [ $? -ne 0 ] && exit 1
  56.  
  57. if [ -n "$IPADDR" -a -z "$HOSTFULL" ]
  58. then
  59.     eval `$BOOTPC --in2host $IPADDR --dev $DEVICE`
  60.     [ $? -ne 0 ] && exit 1
  61. fi
  62. [ -n "$HOSTFULL" ] && HOSTNAME=$HOSTFULL
  63.  
  64. #
  65. # Close device
  66. #
  67. ifconfig $DEVICE down
  68.  
  69. if [ $VERBOSE -gt 0 ]
  70. then
  71.     echo SERVER=$SERVER
  72.     echo IPADDR=$IPADDR
  73.     echo NETMASK=$NETMASK
  74.     echo BROADCAST=$BROADCAST
  75.     echo NETWORK=$NETWORK
  76.     echo GATEWAY=$GATEWAYS
  77.     echo DNSSRV=$DNSSRVS
  78.     echo SEARCHLIST=$SEARCH
  79.     echo HOSTNAME=$HOSTNAME
  80. fi
  81.  
  82. #
  83. # Set up network
  84. #
  85. ifconfig dummy0 down
  86. ifconfig dummy0 $IPADDR up
  87. ifconfig $DEVICE $IPADDR broadcast $BROADCAST netmask $NETMASK up
  88.  
  89. #
  90. # Write temporary rc.config
  91. #
  92. IFS="$NL"
  93. while read -r line ; do
  94.     IFS="$OLDIFS"
  95.     case "$line" in
  96.     \#*|"")    echo "$line" ;;
  97.     *FQHOSTNAME=*)
  98.         set -- $line
  99.         if [ -n "$HOSTNAME" -a "${1%%=*}" = "FQHOSTNAME" ]
  100.         then
  101.         echo FQHOSTNAME=\"$HOSTNAME\"
  102.         hostname ${HOSTNAME%%.*}
  103.         else
  104.         echo "$line"
  105.         fi    ;;
  106.     *SEARCHLIST=*)
  107.         set -- $line
  108.         if [ -n "$SEARCH"   -a "${1%%=*}" = "SEARCHLIST" ]
  109.         then
  110.         echo SEARCHLIST=\"$SEARCH\"
  111.         else
  112.         echo "$line"
  113.         fi    ;;
  114.     *NAMESERVER=*)
  115.         set -- $line
  116.         if [ -n "$DNSSRVS"  -a "${1%%=*}" = "NAMESERVER" ]
  117.         then
  118.         echo NAMESERVER=\"$DNSSRVS\"
  119.         else
  120.         echo "$line"
  121.         fi    ;;
  122.     *)    echo "$line" ;;
  123.     esac
  124.     IFS="$NL"
  125. done < /etc/rc.config > $tmprc
  126. IFS="$OLDIFS"
  127.  
  128. #
  129. # Write temporary route.conf
  130. #
  131. IFS="$NL"
  132. while read -r line ; do
  133.     IFS="$OLDIFS"
  134.     case "$line" in
  135.     \#*|"")    echo    "$line" ;;
  136.     *${DEVICE}*)
  137.         set -- $line
  138.         if [ -n "$NETWORK" -a -n "$NETMASK" -a "$DEVICE" = "$4" ]
  139.         then
  140.         echo -e "$NETWORK\t\t0.0.0.0\t\t$NETMASK\t\t$DEVICE"
  141.         else
  142.         echo    "$line"
  143.         fi    ;;
  144.     *default*)
  145.         set -- $line
  146.         if [ -n "$GATEWAYS" -a "default" = "$1" ]
  147.         then
  148.         echo -e "default\t\t$GATEWAYS"
  149.         else
  150.         echo    "$line"
  151.         fi    ;;
  152.     *)    echo    "$line" ;;
  153.     esac
  154.     IFS="$NL"
  155. done < /etc/route.conf > $tmprt
  156. IFS="$OLDIFS"
  157.  
  158. #
  159. # Move temporary rc.config and route.conf into /etc
  160. #
  161. test -s $tmprc && mv $tmprc /etc/rc.config
  162. test -s $tmprt && mv $tmprt /etc/route.conf
  163.  
  164. echo -n "Calling SuSEconfig..."
  165. /sbin/SuSEconfig --nonewpackage >/dev/null 2>&1
  166. echo done.
  167.  
  168. rm -rf $TMPDIR
  169. exit 0
  170.