1*83ee113eSDavid van Moolenbroek#!/bin/sh 2*83ee113eSDavid van Moolenbroek 3*83ee113eSDavid van Moolenbroekmake_resolv_conf() { 4*83ee113eSDavid van Moolenbroek if [ x"$new_domain_name_servers" != x ]; then 5*83ee113eSDavid van Moolenbroek cat /dev/null > /etc/resolv.conf.dhclient 6*83ee113eSDavid van Moolenbroek if [ x"$new_domain_search" != x ]; then 7*83ee113eSDavid van Moolenbroek echo search $new_domain_search >> /etc/resolv.conf.dhclient 8*83ee113eSDavid van Moolenbroek elif [ x"$new_domain_name" != x ]; then 9*83ee113eSDavid van Moolenbroek # Note that the DHCP 'Domain Name Option' is really just a domain 10*83ee113eSDavid van Moolenbroek # name, and that this practice of using the domain name option as 11*83ee113eSDavid van Moolenbroek # a search path is both nonstandard and deprecated. 12*83ee113eSDavid van Moolenbroek echo search $new_domain_name >> /etc/resolv.conf.dhclient 13*83ee113eSDavid van Moolenbroek fi 14*83ee113eSDavid van Moolenbroek for nameserver in $new_domain_name_servers; do 15*83ee113eSDavid van Moolenbroek echo nameserver $nameserver >>/etc/resolv.conf.dhclient 16*83ee113eSDavid van Moolenbroek done 17*83ee113eSDavid van Moolenbroek 18*83ee113eSDavid van Moolenbroek mv /etc/resolv.conf.dhclient /etc/resolv.conf 19*83ee113eSDavid van Moolenbroek elif [ "x${new_dhcp6_name_servers}" != x ] ; then 20*83ee113eSDavid van Moolenbroek cat /dev/null > /etc/resolv.conf.dhclient6 21*83ee113eSDavid van Moolenbroek chmod 644 /etc/resolv.conf.dhclient6 22*83ee113eSDavid van Moolenbroek 23*83ee113eSDavid van Moolenbroek if [ "x${new_dhcp6_domain_search}" != x ] ; then 24*83ee113eSDavid van Moolenbroek echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 25*83ee113eSDavid van Moolenbroek fi 26*83ee113eSDavid van Moolenbroek for nameserver in ${new_dhcp6_name_servers} ; do 27*83ee113eSDavid van Moolenbroek # If the nameserver has a link-local address 28*83ee113eSDavid van Moolenbroek # add a <zone_id> (interface name) to it. 29*83ee113eSDavid van Moolenbroek case $nameserver in 30*83ee113eSDavid van Moolenbroek fe80:*) zone_id="%$interface";; 31*83ee113eSDavid van Moolenbroek FE80:*) zone_id="%$interface";; 32*83ee113eSDavid van Moolenbroek *) zone_id="";; 33*83ee113eSDavid van Moolenbroek esac 34*83ee113eSDavid van Moolenbroek echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 35*83ee113eSDavid van Moolenbroek done 36*83ee113eSDavid van Moolenbroek 37*83ee113eSDavid van Moolenbroek mv /etc/resolv.conf.dhclient6 /etc/resolv.conf 38*83ee113eSDavid van Moolenbroek fi 39*83ee113eSDavid van Moolenbroek} 40*83ee113eSDavid van Moolenbroek 41*83ee113eSDavid van Moolenbroek# Must be used on exit. Invokes the local dhcp client exit hooks, if any. 42*83ee113eSDavid van Moolenbroekexit_with_hooks() { 43*83ee113eSDavid van Moolenbroek exit_status=$1 44*83ee113eSDavid van Moolenbroek if [ -f /etc/dhclient-exit-hooks ]; then 45*83ee113eSDavid van Moolenbroek . /etc/dhclient-exit-hooks 46*83ee113eSDavid van Moolenbroek fi 47*83ee113eSDavid van Moolenbroek# probably should do something with exit status of the local script 48*83ee113eSDavid van Moolenbroek exit $exit_status 49*83ee113eSDavid van Moolenbroek} 50*83ee113eSDavid van Moolenbroek 51*83ee113eSDavid van Moolenbroek# Invoke the local dhcp client enter hooks, if they exist. 52*83ee113eSDavid van Moolenbroekif [ -f /etc/dhclient-enter-hooks ]; then 53*83ee113eSDavid van Moolenbroek exit_status=0 54*83ee113eSDavid van Moolenbroek . /etc/dhclient-enter-hooks 55*83ee113eSDavid van Moolenbroek # allow the local script to abort processing of this state 56*83ee113eSDavid van Moolenbroek # local script must set exit_status variable to nonzero. 57*83ee113eSDavid van Moolenbroek if [ $exit_status -ne 0 ]; then 58*83ee113eSDavid van Moolenbroek exit $exit_status 59*83ee113eSDavid van Moolenbroek fi 60*83ee113eSDavid van Moolenbroekfi 61*83ee113eSDavid van Moolenbroek 62*83ee113eSDavid van Moolenbroekif [ x$new_network_number != x ]; then 63*83ee113eSDavid van Moolenbroek echo New Network Number: $new_network_number 64*83ee113eSDavid van Moolenbroekfi 65*83ee113eSDavid van Moolenbroek 66*83ee113eSDavid van Moolenbroekif [ x$new_broadcast_address != x ]; then 67*83ee113eSDavid van Moolenbroek echo New Broadcast Address: $new_broadcast_address 68*83ee113eSDavid van Moolenbroek new_broadcast_arg="broadcast $new_broadcast_address" 69*83ee113eSDavid van Moolenbroekfi 70*83ee113eSDavid van Moolenbroekif [ x$old_broadcast_address != x ]; then 71*83ee113eSDavid van Moolenbroek old_broadcast_arg="broadcast $old_broadcast_address" 72*83ee113eSDavid van Moolenbroekfi 73*83ee113eSDavid van Moolenbroekif [ x$new_subnet_mask != x ]; then 74*83ee113eSDavid van Moolenbroek new_netmask_arg="netmask $new_subnet_mask" 75*83ee113eSDavid van Moolenbroekfi 76*83ee113eSDavid van Moolenbroekif [ x$old_subnet_mask != x ]; then 77*83ee113eSDavid van Moolenbroek old_netmask_arg="netmask $old_subnet_mask" 78*83ee113eSDavid van Moolenbroekfi 79*83ee113eSDavid van Moolenbroekif [ x$alias_subnet_mask != x ]; then 80*83ee113eSDavid van Moolenbroek alias_subnet_arg="netmask $alias_subnet_mask" 81*83ee113eSDavid van Moolenbroekfi 82*83ee113eSDavid van Moolenbroek 83*83ee113eSDavid van Moolenbroekif [ x$reason = xMEDIUM ]; then 84*83ee113eSDavid van Moolenbroek eval "ifconfig $interface $medium" 85*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1 86*83ee113eSDavid van Moolenbroek sleep 1 87*83ee113eSDavid van Moolenbroek exit_with_hooks 0 88*83ee113eSDavid van Moolenbroekfi 89*83ee113eSDavid van Moolenbroek 90*83ee113eSDavid van Moolenbroek### 91*83ee113eSDavid van Moolenbroek### DHCPv4 Handlers 92*83ee113eSDavid van Moolenbroek### 93*83ee113eSDavid van Moolenbroek 94*83ee113eSDavid van Moolenbroekif [ x$reason = xPREINIT ]; then 95*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 96*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 97*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 98*83ee113eSDavid van Moolenbroek fi 99*83ee113eSDavid van Moolenbroek ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \ 100*83ee113eSDavid van Moolenbroek broadcast 255.255.255.255 up 101*83ee113eSDavid van Moolenbroek exit_with_hooks 0 102*83ee113eSDavid van Moolenbroekfi 103*83ee113eSDavid van Moolenbroek 104*83ee113eSDavid van Moolenbroekif [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then 105*83ee113eSDavid van Moolenbroek exit_with_hooks 0; 106*83ee113eSDavid van Moolenbroekfi 107*83ee113eSDavid van Moolenbroek 108*83ee113eSDavid van Moolenbroekif [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ 109*83ee113eSDavid van Moolenbroek [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then 110*83ee113eSDavid van Moolenbroek current_hostname=`hostname` 111*83ee113eSDavid van Moolenbroek if [ x$current_hostname = x ] || \ 112*83ee113eSDavid van Moolenbroek [ x$current_hostname = x$old_host_name ]; then 113*83ee113eSDavid van Moolenbroek if [ x$current_hostname = x ] || \ 114*83ee113eSDavid van Moolenbroek [ x$new_host_name != x$old_host_name ]; then 115*83ee113eSDavid van Moolenbroek hostname $new_host_name 116*83ee113eSDavid van Moolenbroek fi 117*83ee113eSDavid van Moolenbroek fi 118*83ee113eSDavid van Moolenbroek 119*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ 120*83ee113eSDavid van Moolenbroek [ x$alias_ip_address != x$old_ip_address ]; then 121*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 122*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 123*83ee113eSDavid van Moolenbroek fi 124*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ] 125*83ee113eSDavid van Moolenbroek then 126*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $old_ip_address $medium" 127*83ee113eSDavid van Moolenbroek route delete $old_ip_address 127.1 >/dev/null 2>&1 128*83ee113eSDavid van Moolenbroek for router in $old_routers; do 129*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 130*83ee113eSDavid van Moolenbroek done 131*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 132*83ee113eSDavid van Moolenbroek set $old_static_routes 133*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 134*83ee113eSDavid van Moolenbroek route delete $1 $2 135*83ee113eSDavid van Moolenbroek shift; shift 136*83ee113eSDavid van Moolenbroek done 137*83ee113eSDavid van Moolenbroek fi 138*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' |sh 139*83ee113eSDavid van Moolenbroek fi 140*83ee113eSDavid van Moolenbroek if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ 141*83ee113eSDavid van Moolenbroek [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then 142*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \ 143*83ee113eSDavid van Moolenbroek $new_broadcast_arg $medium" 144*83ee113eSDavid van Moolenbroek route add $new_ip_address 127.1 >/dev/null 2>&1 145*83ee113eSDavid van Moolenbroek for router in $new_routers; do 146*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 147*83ee113eSDavid van Moolenbroek done 148*83ee113eSDavid van Moolenbroek if [ "$new_static_routes" != "" ]; then 149*83ee113eSDavid van Moolenbroek set $new_static_routes 150*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 151*83ee113eSDavid van Moolenbroek route add $1 $2 152*83ee113eSDavid van Moolenbroek shift; shift 153*83ee113eSDavid van Moolenbroek done 154*83ee113eSDavid van Moolenbroek fi 155*83ee113eSDavid van Moolenbroek else 156*83ee113eSDavid van Moolenbroek # we haven't changed the address, have we changed other options 157*83ee113eSDavid van Moolenbroek # that we wish to update? 158*83ee113eSDavid van Moolenbroek if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then 159*83ee113eSDavid van Moolenbroek # if we've changed routers delete the old and add the new. 160*83ee113eSDavid van Moolenbroek $LOGGER "New Routers: $new_routers" 161*83ee113eSDavid van Moolenbroek for router in $old_routers; do 162*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 163*83ee113eSDavid van Moolenbroek done 164*83ee113eSDavid van Moolenbroek for router in $new_routers; do 165*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 166*83ee113eSDavid van Moolenbroek done 167*83ee113eSDavid van Moolenbroek fi 168*83ee113eSDavid van Moolenbroek fi 169*83ee113eSDavid van Moolenbroek if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; 170*83ee113eSDavid van Moolenbroek then 171*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 172*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 173*83ee113eSDavid van Moolenbroek fi 174*83ee113eSDavid van Moolenbroek make_resolv_conf 175*83ee113eSDavid van Moolenbroek exit_with_hooks 0 176*83ee113eSDavid van Moolenbroekfi 177*83ee113eSDavid van Moolenbroek 178*83ee113eSDavid van Moolenbroekif [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \ 179*83ee113eSDavid van Moolenbroek || [ x$reason = xSTOP ]; then 180*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 181*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 182*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 183*83ee113eSDavid van Moolenbroek fi 184*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ]; then 185*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $old_ip_address $medium" 186*83ee113eSDavid van Moolenbroek route delete $old_ip_address 127.1 >/dev/null 2>&1 187*83ee113eSDavid van Moolenbroek for router in $old_routers; do 188*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 189*83ee113eSDavid van Moolenbroek done 190*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 191*83ee113eSDavid van Moolenbroek set $old_static_routes 192*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 193*83ee113eSDavid van Moolenbroek route delete $1 $2 194*83ee113eSDavid van Moolenbroek shift; shift 195*83ee113eSDavid van Moolenbroek done 196*83ee113eSDavid van Moolenbroek fi 197*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \ 198*83ee113eSDavid van Moolenbroek |sh >/dev/null 2>&1 199*83ee113eSDavid van Moolenbroek fi 200*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 201*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 202*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 203*83ee113eSDavid van Moolenbroek fi 204*83ee113eSDavid van Moolenbroek exit_with_hooks 0 205*83ee113eSDavid van Moolenbroekfi 206*83ee113eSDavid van Moolenbroek 207*83ee113eSDavid van Moolenbroekif [ x$reason = xTIMEOUT ]; then 208*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 209*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 210*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 211*83ee113eSDavid van Moolenbroek fi 212*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \ 213*83ee113eSDavid van Moolenbroek $new_broadcast_arg $medium" 214*83ee113eSDavid van Moolenbroek sleep 1 215*83ee113eSDavid van Moolenbroek if [ "$new_routers" != "" ]; then 216*83ee113eSDavid van Moolenbroek set $new_routers 217*83ee113eSDavid van Moolenbroek if ping -q -c 1 -w 1 $1; then 218*83ee113eSDavid van Moolenbroek if [ x$new_ip_address != x$alias_ip_address ] && \ 219*83ee113eSDavid van Moolenbroek [ x$alias_ip_address != x ]; then 220*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 221*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 222*83ee113eSDavid van Moolenbroek fi 223*83ee113eSDavid van Moolenbroek route add $new_ip_address 127.1 >/dev/null 2>&1 224*83ee113eSDavid van Moolenbroek for router in $new_routers; do 225*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 226*83ee113eSDavid van Moolenbroek done 227*83ee113eSDavid van Moolenbroek set $new_static_routes 228*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 229*83ee113eSDavid van Moolenbroek route add $0 $1 230*83ee113eSDavid van Moolenbroek shift; shift 231*83ee113eSDavid van Moolenbroek done 232*83ee113eSDavid van Moolenbroek make_resolv_conf 233*83ee113eSDavid van Moolenbroek exit_with_hooks 0 234*83ee113eSDavid van Moolenbroek fi 235*83ee113eSDavid van Moolenbroek fi 236*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $new_ip_address $medium" 237*83ee113eSDavid van Moolenbroek for router in $old_routers; do 238*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 239*83ee113eSDavid van Moolenbroek done 240*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 241*83ee113eSDavid van Moolenbroek set $old_static_routes 242*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 243*83ee113eSDavid van Moolenbroek route delete $1 $2 244*83ee113eSDavid van Moolenbroek shift; shift 245*83ee113eSDavid van Moolenbroek done 246*83ee113eSDavid van Moolenbroek fi 247*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \ 248*83ee113eSDavid van Moolenbroek |sh >/dev/null 2>&1 249*83ee113eSDavid van Moolenbroek exit_with_hooks 1 250*83ee113eSDavid van Moolenbroekfi 251*83ee113eSDavid van Moolenbroek 252*83ee113eSDavid van Moolenbroek### 253*83ee113eSDavid van Moolenbroek### DHCPv6 Handlers 254*83ee113eSDavid van Moolenbroek### 255*83ee113eSDavid van Moolenbroek 256*83ee113eSDavid van Moolenbroekif [ ${reason} = PREINIT6 ] ; then 257*83ee113eSDavid van Moolenbroek # Ensure interface is up. 258*83ee113eSDavid van Moolenbroek ifconfig ${interface} up 259*83ee113eSDavid van Moolenbroek 260*83ee113eSDavid van Moolenbroek # XXX: Remove any stale addresses from aborted clients. 261*83ee113eSDavid van Moolenbroek 262*83ee113eSDavid van Moolenbroek exit_with_hooks 0 263*83ee113eSDavid van Moolenbroekfi 264*83ee113eSDavid van Moolenbroek 265*83ee113eSDavid van Moolenbroekif [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then 266*83ee113eSDavid van Moolenbroek echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix} 267*83ee113eSDavid van Moolenbroek 268*83ee113eSDavid van Moolenbroek exit_with_hooks 0 269*83ee113eSDavid van Moolenbroekfi 270*83ee113eSDavid van Moolenbroek 271*83ee113eSDavid van Moolenbroekif [ ${reason} = BOUND6 ] ; then 272*83ee113eSDavid van Moolenbroek if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then 273*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 274*83ee113eSDavid van Moolenbroek fi 275*83ee113eSDavid van Moolenbroek 276*83ee113eSDavid van Moolenbroek ifconfig ${interface} inet6 add ${new_ip6_address}/${new_ip6_prefixlen} 277*83ee113eSDavid van Moolenbroek 278*83ee113eSDavid van Moolenbroek # Check for nameserver options. 279*83ee113eSDavid van Moolenbroek make_resolv_conf 280*83ee113eSDavid van Moolenbroek 281*83ee113eSDavid van Moolenbroek exit_with_hooks 0 282*83ee113eSDavid van Moolenbroekfi 283*83ee113eSDavid van Moolenbroek 284*83ee113eSDavid van Moolenbroekif [ ${reason} = RENEW6 ] || [ ${reason} = REBIND6 ] ; then 285*83ee113eSDavid van Moolenbroek # Make sure nothing has moved around on us. 286*83ee113eSDavid van Moolenbroek 287*83ee113eSDavid van Moolenbroek # Nameservers/domains/etc. 288*83ee113eSDavid van Moolenbroek if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] || 289*83ee113eSDavid van Moolenbroek [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then 290*83ee113eSDavid van Moolenbroek make_resolv_conf 291*83ee113eSDavid van Moolenbroek fi 292*83ee113eSDavid van Moolenbroek 293*83ee113eSDavid van Moolenbroek exit_with_hooks 0 294*83ee113eSDavid van Moolenbroekfi 295*83ee113eSDavid van Moolenbroek 296*83ee113eSDavid van Moolenbroekif [ ${reason} = DEPREF6 ] ; then 297*83ee113eSDavid van Moolenbroek if [ x${new_ip6_prefixlen} = x ] ; then 298*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 299*83ee113eSDavid van Moolenbroek fi 300*83ee113eSDavid van Moolenbroek 301*83ee113eSDavid van Moolenbroek # XXX: 302*83ee113eSDavid van Moolenbroek # There doesn't appear to be a way to update an addr to indicate 303*83ee113eSDavid van Moolenbroek # preference. 304*83ee113eSDavid van Moolenbroek 305*83ee113eSDavid van Moolenbroek exit_with_hooks 0 306*83ee113eSDavid van Moolenbroekfi 307*83ee113eSDavid van Moolenbroek 308*83ee113eSDavid van Moolenbroekif [ ${reason} = EXPIRE6 -o ${reason} = RELEASE6 -o ${reason} = STOP6 ] ; then 309*83ee113eSDavid van Moolenbroek if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then 310*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 311*83ee113eSDavid van Moolenbroek fi 312*83ee113eSDavid van Moolenbroek 313*83ee113eSDavid van Moolenbroek ifconfig ${interface} inet6 delete ${old_ip6_address}/${old_ip6_prefixlen} 314*83ee113eSDavid van Moolenbroek 315*83ee113eSDavid van Moolenbroek exit_with_hooks 0 316*83ee113eSDavid van Moolenbroekfi 317*83ee113eSDavid van Moolenbroek 318*83ee113eSDavid van Moolenbroekexit_with_hooks 0 319