Annotation of embedaddon/dhcp/client/scripts/solaris, revision 1.1.1.1

1.1       misho       1: #!/bin/sh  
                      2: 
                      3: make_resolv_conf() {
                      4:   if [ x"$new_domain_name_servers" != x ]; then
                      5:     cat /dev/null > /etc/resolv.conf.dhclient
                      6:     if [ x"$new_domain_search" != x ]; then
                      7:       echo search $new_domain_search >> /etc/resolv.conf.dhclient
                      8:     elif [ x"$new_domain_name" != x ]; then
                      9:       # Note that the DHCP 'Domain Name Option' is really just a domain
                     10:       # name, and that this practice of using the domain name option as
                     11:       # a search path is both nonstandard and deprecated.
                     12:       echo search $new_domain_name >> /etc/resolv.conf.dhclient
                     13:     fi
                     14:     for nameserver in $new_domain_name_servers; do
                     15:       echo nameserver $nameserver >>/etc/resolv.conf.dhclient
                     16:     done
                     17: 
                     18:     mv /etc/resolv.conf.dhclient /etc/resolv.conf
                     19:   fi
                     20: }
                     21: 
                     22: # Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
                     23: exit_with_hooks() {
                     24:   exit_status=$1
                     25:   if [ -f /etc/dhclient-exit-hooks ]; then
                     26:     . /etc/dhclient-exit-hooks
                     27:   fi
                     28: # probably should do something with exit status of the local script
                     29:   exit $exit_status
                     30: }
                     31: 
                     32: # Invoke the local dhcp client enter hooks, if they exist.
                     33: if [ -f /etc/dhclient-enter-hooks ]; then
                     34:   exit_status=0
                     35:   . /etc/dhclient-enter-hooks
                     36:   # allow the local script to abort processing of this state
                     37:   # local script must set exit_status variable to nonzero.
                     38:   if [ $exit_status -ne 0 ]; then
                     39:     exit $exit_status
                     40:   fi
                     41: fi
                     42: 
                     43: if [ x$new_broadcast_address != x ]; then
                     44:   new_broadcast_arg="broadcast $new_broadcast_address"
                     45: fi
                     46: if [ x$old_broadcast_address != x ]; then
                     47:   old_broadcast_arg="broadcast $old_broadcast_address"
                     48: fi
                     49: if [ x$new_subnet_mask != x ]; then
                     50:   new_netmask_arg="netmask $new_subnet_mask"
                     51: fi
                     52: if [ x$old_subnet_mask != x ]; then
                     53:   old_netmask_arg="netmask $old_subnet_mask"
                     54: fi
                     55: if [ x$alias_subnet_mask != x ]; then
                     56:   alias_subnet_arg="netmask $alias_subnet_mask"
                     57: fi
                     58:  if [ x$new_interface_mtu != x ]; then
                     59:    mtu_arg="mtu $new_interface_mtu"
                     60:  fi
                     61: if [ x$IF_METRIC != x ]; then
                     62:   metric_arg="metric $IF_METRIC"
                     63: fi
                     64: 
                     65: ifconfig=/sbin/ifconfig
                     66: 
                     67: release=`uname -r`
                     68: release=`expr $release : '\(.*\)\..*'`
                     69: relmajor=`echo $release |sed -e 's/^\([^\.]*\)\..*$/\1/'`
                     70: relminor=`echo $release |sed -e 's/^.*\.\([^\.]*\)$/\1/'`
                     71: 
                     72: if [ x$reason = xMEDIUM ]; then
                     73:   eval "$ifconfig $interface $medium"
                     74:   $ifconfig $interface
                     75:   sleep 1
                     76:   exit_with_hooks 0
                     77: fi
                     78: 
                     79: if [ x$reason = xPREINIT ]; then
                     80:   if [ x$alias_ip_address != x ]; then
                     81:     $ifconfig ${interface}:1 0 down > /dev/null 2>&1
                     82:     route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
                     83:   fi
                     84:   if [ $relmajor -gt 5 ] || ( [ $relmajor -eq 5 ] && [ $relminor -ge 5 ] )
                     85:   then
                     86:          # Turn the interface on
                     87:          $ifconfig $interface plumb
                     88:          $ifconfig $interface up
                     89:   else
                     90:       $ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
                     91:               broadcast 255.255.255.255 up
                     92:   fi 
                     93:   exit_with_hooks 0
                     94: fi
                     95: 
                     96: if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
                     97:   exit_with_hooks 0;
                     98: fi
                     99:   
                    100: if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
                    101:    [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
                    102:   current_hostname=`hostname`
                    103:   if [ x$current_hostname = x ] || \
                    104:      [ x$current_hostname = x$old_host_name ]; then
                    105:     if [ x$current_hostname = x ] || \
                    106:        [ x$new_host_name != x$old_host_name ]; then
                    107:       hostname $new_host_name
                    108:     fi
                    109:   fi
                    110:     
                    111:   if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
                    112:                [ x$alias_ip_address != x$old_ip_address ]; then
                    113:     $ifconfig ${interface}:1 inet 0 down > /dev/null 2>&1
                    114:     route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
                    115:   fi
                    116:   if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
                    117:     $ifconfig ${interface} inet 0 down
                    118:     route delete $old_ip_address 127.1 >/dev/null 2>&1
                    119:     for router in $old_routers; do
                    120:       route delete default $router >/dev/null 2>&1
                    121:     done
                    122:   fi
                    123:   if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
                    124:      [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
                    125:     eval "$ifconfig $interface inet $new_ip_address $new_netmask_arg \
                    126:                        $new_broadcast_arg $mtu_arg $metric_arg $medium"
                    127:     route add $new_ip_address 127.1 1 >/dev/null 2>&1
                    128:     for router in $new_routers; do
                    129:       route add default $router 1 >/dev/null 2>&1
                    130:     done
                    131:   else                                                                        
                    132:     # we haven't changed the address, have we changed other options           
                    133:     # that we wish to update?
                    134:     if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then
                    135:       # if we've changed routers delete the old and add the new.
                    136:       $LOGGER "New Routers: $new_routers"
                    137:       for router in $old_routers; do
                    138:         route delete default $router >/dev/null 2>&1
                    139:       done
                    140:       for router in $new_routers; do
                    141:         route add default $router 1 >/dev/null 2>&1
                    142:       done
                    143:     fi
                    144:   fi
                    145:   if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
                    146:    then
                    147:     $ifconfig ${interface}:1 inet $alias_ip_address $alias_subnet_arg
                    148:     route add $alias_ip_address 127.0.0.1 1
                    149:   fi
                    150:   make_resolv_conf
                    151:   exit_with_hooks 0
                    152: fi
                    153: 
                    154: if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
                    155:    || [ x$reason = xSTOP ]; then
                    156:   if [ x$alias_ip_address != x ]; then
                    157:     $ifconfig ${interface}:1 0 down > /dev/null 2>&1
                    158:     route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
                    159:   fi
                    160:   if [ x$old_ip_address != x ]; then
                    161:     $ifconfig $interface inet 0 down
                    162:     route delete $old_ip_address 127.1 >/dev/null 2>&1
                    163:     for router in $old_routers; do
                    164:       route delete default $router >/dev/null 2>&1
                    165:     done
                    166:   fi
                    167:   if [ x$alias_ip_address != x ]; then
                    168:     $ifconfig ${interface}:1 inet $alias_ip_address $alias_subnet_arg
                    169:     route add $alias_ip_address 127.0.0.1 1
                    170:   fi
                    171:   exit_with_hooks 0
                    172: fi
                    173: 
                    174: if [ x$reason = xTIMEOUT ]; then
                    175:   if [ x$alias_ip_address != x ]; then
                    176:     $ifconfig ${interface}:1 0 down > /dev/null 2>&1
                    177:     route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
                    178:   fi
                    179:   eval "$ifconfig $interface inet $new_ip_address $new_netmask_arg \
                    180:                        $new_broadcast_arg $mtu_arg $metric_arg $medium"
                    181:   sleep 1
                    182:   set $new_routers
                    183:   if ping -s -n -I 1 $1 64 1; then
                    184:     if [ x$new_ip_address != x$alias_ip_address ] && \
                    185:                        [ x$alias_ip_address != x ]; then
                    186:       $ifconfig ${interface}:1 inet $alias_ip_address $alias_subnet_arg
                    187:       route add $alias_ip_address 127.0.0.1 1
                    188:     fi
                    189:     route add $new_ip_address 127.1 1 >/dev/null 2>&1
                    190:     for router in $new_routers; do
                    191:       route add default $router 1 >/dev/null 2>&1
                    192:     done
                    193:     make_resolv_conf
                    194:     exit_with_hooks 0
                    195:   fi
                    196:   $ifconfig $interface inet 0 down
                    197:   for router in $old_routers; do
                    198:     route delete default $router >/dev/null 2>&1
                    199:   done
                    200:   exit_with_hooks 1
                    201: fi
                    202: 
                    203: exit_with_hooks 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>