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" != x ] && [ 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 if [ x$new_interface_mtu != x ]; then 83*83ee113eSDavid van Moolenbroek mtu_arg="mtu $new_interface_mtu" 84*83ee113eSDavid van Moolenbroek fi 85*83ee113eSDavid van Moolenbroekif [ x$IF_METRIC != x ]; then 86*83ee113eSDavid van Moolenbroek metric_arg="metric $IF_METRIC" 87*83ee113eSDavid van Moolenbroekfi 88*83ee113eSDavid van Moolenbroek 89*83ee113eSDavid van Moolenbroekif [ x$reason = xMEDIUM ]; then 90*83ee113eSDavid van Moolenbroek eval "ifconfig $interface $medium" 91*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1 92*83ee113eSDavid van Moolenbroek sleep 1 93*83ee113eSDavid van Moolenbroek exit_with_hooks 0 94*83ee113eSDavid van Moolenbroekfi 95*83ee113eSDavid van Moolenbroek 96*83ee113eSDavid van Moolenbroek### 97*83ee113eSDavid van Moolenbroek### DHCPv4 Handlers 98*83ee113eSDavid van Moolenbroek### 99*83ee113eSDavid van Moolenbroek 100*83ee113eSDavid van Moolenbroekif [ x$reason = xPREINIT ]; then 101*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 102*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 103*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 104*83ee113eSDavid van Moolenbroek fi 105*83ee113eSDavid van Moolenbroek ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \ 106*83ee113eSDavid van Moolenbroek broadcast 255.255.255.255 up 107*83ee113eSDavid van Moolenbroek exit_with_hooks 0 108*83ee113eSDavid van Moolenbroekfi 109*83ee113eSDavid van Moolenbroek 110*83ee113eSDavid van Moolenbroekif [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then 111*83ee113eSDavid van Moolenbroek exit_with_hooks 0 112*83ee113eSDavid van Moolenbroekfi 113*83ee113eSDavid van Moolenbroek 114*83ee113eSDavid van Moolenbroekif [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ 115*83ee113eSDavid van Moolenbroek [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then 116*83ee113eSDavid van Moolenbroek current_hostname=`hostname` 117*83ee113eSDavid van Moolenbroek if [ x$current_hostname = x ] || \ 118*83ee113eSDavid van Moolenbroek [ x$current_hostname = x$old_host_name ]; then 119*83ee113eSDavid van Moolenbroek if [ x$current_hostname = x ] || \ 120*83ee113eSDavid van Moolenbroek [ x$new_host_name != x$old_host_name ]; then 121*83ee113eSDavid van Moolenbroek hostname $new_host_name 122*83ee113eSDavid van Moolenbroek fi 123*83ee113eSDavid van Moolenbroek fi 124*83ee113eSDavid van Moolenbroek 125*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ 126*83ee113eSDavid van Moolenbroek [ x$alias_ip_address != x$old_ip_address ]; then 127*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 128*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 129*83ee113eSDavid van Moolenbroek fi 130*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ] 131*83ee113eSDavid van Moolenbroek then 132*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $old_ip_address $medium" 133*83ee113eSDavid van Moolenbroek route delete $old_ip_address 127.1 >/dev/null 2>&1 134*83ee113eSDavid van Moolenbroek for router in $old_routers; do 135*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 136*83ee113eSDavid van Moolenbroek done 137*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 138*83ee113eSDavid van Moolenbroek set $old_static_routes 139*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 140*83ee113eSDavid van Moolenbroek route delete $1 $2 141*83ee113eSDavid van Moolenbroek shift; shift 142*83ee113eSDavid van Moolenbroek done 143*83ee113eSDavid van Moolenbroek fi 144*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' |sh 145*83ee113eSDavid van Moolenbroek fi 146*83ee113eSDavid van Moolenbroek if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ 147*83ee113eSDavid van Moolenbroek [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then 148*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \ 149*83ee113eSDavid van Moolenbroek $new_broadcast_arg $mtu_arg $metric_arg $medium" 150*83ee113eSDavid van Moolenbroek route add $new_ip_address 127.1 >/dev/null 2>&1 151*83ee113eSDavid van Moolenbroek for router in $new_routers; do 152*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 153*83ee113eSDavid van Moolenbroek done 154*83ee113eSDavid van Moolenbroek if [ "$new_static_routes" != "" ]; then 155*83ee113eSDavid van Moolenbroek set $new_static_routes 156*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 157*83ee113eSDavid van Moolenbroek route add $1 $2 158*83ee113eSDavid van Moolenbroek shift; shift 159*83ee113eSDavid van Moolenbroek done 160*83ee113eSDavid van Moolenbroek fi 161*83ee113eSDavid van Moolenbroek else 162*83ee113eSDavid van Moolenbroek # we haven't changed the address, have we changed other options 163*83ee113eSDavid van Moolenbroek # that we wish to update? 164*83ee113eSDavid van Moolenbroek if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then 165*83ee113eSDavid van Moolenbroek # if we've changed routers delete the old and add the new. 166*83ee113eSDavid van Moolenbroek $LOGGER "New Routers: $new_routers" 167*83ee113eSDavid van Moolenbroek for router in $old_routers; do 168*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 169*83ee113eSDavid van Moolenbroek done 170*83ee113eSDavid van Moolenbroek for router in $new_routers; do 171*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 172*83ee113eSDavid van Moolenbroek done 173*83ee113eSDavid van Moolenbroek fi 174*83ee113eSDavid van Moolenbroek fi 175*83ee113eSDavid van Moolenbroek if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; 176*83ee113eSDavid van Moolenbroek then 177*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 178*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 179*83ee113eSDavid van Moolenbroek fi 180*83ee113eSDavid van Moolenbroek make_resolv_conf 181*83ee113eSDavid van Moolenbroek exit_with_hooks 0 182*83ee113eSDavid van Moolenbroekfi 183*83ee113eSDavid van Moolenbroek 184*83ee113eSDavid van Moolenbroekif [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \ 185*83ee113eSDavid van Moolenbroek || [ x$reason = xSTOP ]; then 186*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 187*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 188*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 189*83ee113eSDavid van Moolenbroek fi 190*83ee113eSDavid van Moolenbroek if [ x$old_ip_address != x ]; then 191*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $old_ip_address $medium" 192*83ee113eSDavid van Moolenbroek route delete $old_ip_address 127.1 >/dev/null 2>&1 193*83ee113eSDavid van Moolenbroek for router in $old_routers; do 194*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 195*83ee113eSDavid van Moolenbroek done 196*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 197*83ee113eSDavid van Moolenbroek set $old_static_routes 198*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 199*83ee113eSDavid van Moolenbroek route delete $1 $2 200*83ee113eSDavid van Moolenbroek shift; shift 201*83ee113eSDavid van Moolenbroek done 202*83ee113eSDavid van Moolenbroek fi 203*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \ 204*83ee113eSDavid van Moolenbroek |sh >/dev/null 2>&1 205*83ee113eSDavid van Moolenbroek fi 206*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 207*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 208*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 209*83ee113eSDavid van Moolenbroek fi 210*83ee113eSDavid van Moolenbroek exit_with_hooks 0 211*83ee113eSDavid van Moolenbroekfi 212*83ee113eSDavid van Moolenbroek 213*83ee113eSDavid van Moolenbroekif [ x$reason = xTIMEOUT ]; then 214*83ee113eSDavid van Moolenbroek if [ x$alias_ip_address != x ]; then 215*83ee113eSDavid van Moolenbroek ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1 216*83ee113eSDavid van Moolenbroek route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1 217*83ee113eSDavid van Moolenbroek fi 218*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \ 219*83ee113eSDavid van Moolenbroek $new_broadcast_arg $mtu_arg $metric_arg $medium" 220*83ee113eSDavid van Moolenbroek sleep 1 221*83ee113eSDavid van Moolenbroek if [ "$new_routers" != "" ]; then 222*83ee113eSDavid van Moolenbroek set $new_routers 223*83ee113eSDavid van Moolenbroek if ping -q -c 1 -w 1 $1; then 224*83ee113eSDavid van Moolenbroek if [ x$new_ip_address != x$alias_ip_address ] && \ 225*83ee113eSDavid van Moolenbroek [ x$alias_ip_address != x ]; then 226*83ee113eSDavid van Moolenbroek ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg 227*83ee113eSDavid van Moolenbroek route add $alias_ip_address 127.0.0.1 228*83ee113eSDavid van Moolenbroek fi 229*83ee113eSDavid van Moolenbroek route add $new_ip_address 127.1 >/dev/null 2>&1 230*83ee113eSDavid van Moolenbroek for router in $new_routers; do 231*83ee113eSDavid van Moolenbroek route add default $router >/dev/null 2>&1 232*83ee113eSDavid van Moolenbroek done 233*83ee113eSDavid van Moolenbroek set $new_static_routes 234*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 235*83ee113eSDavid van Moolenbroek route add $0 $1 236*83ee113eSDavid van Moolenbroek shift; shift 237*83ee113eSDavid van Moolenbroek done 238*83ee113eSDavid van Moolenbroek make_resolv_conf 239*83ee113eSDavid van Moolenbroek exit_with_hooks 0 240*83ee113eSDavid van Moolenbroek fi 241*83ee113eSDavid van Moolenbroek fi 242*83ee113eSDavid van Moolenbroek eval "ifconfig $interface inet -alias $new_ip_address $medium" 243*83ee113eSDavid van Moolenbroek for router in $old_routers; do 244*83ee113eSDavid van Moolenbroek route delete default $router >/dev/null 2>&1 245*83ee113eSDavid van Moolenbroek done 246*83ee113eSDavid van Moolenbroek if [ "$old_static_routes" != "" ]; then 247*83ee113eSDavid van Moolenbroek set $old_static_routes 248*83ee113eSDavid van Moolenbroek while [ $# -gt 1 ]; do 249*83ee113eSDavid van Moolenbroek route delete $1 $2 250*83ee113eSDavid van Moolenbroek shift; shift 251*83ee113eSDavid van Moolenbroek done 252*83ee113eSDavid van Moolenbroek fi 253*83ee113eSDavid van Moolenbroek arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \ 254*83ee113eSDavid van Moolenbroek |sh >/dev/null 2>&1 255*83ee113eSDavid van Moolenbroek exit_with_hooks 1 256*83ee113eSDavid van Moolenbroekfi 257*83ee113eSDavid van Moolenbroek 258*83ee113eSDavid van Moolenbroek### 259*83ee113eSDavid van Moolenbroek### DHCPv6 Handlers 260*83ee113eSDavid van Moolenbroek### 261*83ee113eSDavid van Moolenbroek 262*83ee113eSDavid van Moolenbroekif [ ${reason} = PREINIT6 ] ; then 263*83ee113eSDavid van Moolenbroek # Ensure interface is up. 264*83ee113eSDavid van Moolenbroek ifconfig ${interface} up 265*83ee113eSDavid van Moolenbroek 266*83ee113eSDavid van Moolenbroek # XXX: Remove any stale addresses from aborted clients. 267*83ee113eSDavid van Moolenbroek 268*83ee113eSDavid van Moolenbroek exit_with_hooks 0 269*83ee113eSDavid van Moolenbroekfi 270*83ee113eSDavid van Moolenbroek 271*83ee113eSDavid van Moolenbroekif [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then 272*83ee113eSDavid van Moolenbroek echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix} 273*83ee113eSDavid van Moolenbroek 274*83ee113eSDavid van Moolenbroek exit_with_hooks 0 275*83ee113eSDavid van Moolenbroekfi 276*83ee113eSDavid van Moolenbroek 277*83ee113eSDavid van Moolenbroekif [ ${reason} = BOUND6 ] ; then 278*83ee113eSDavid van Moolenbroek if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then 279*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 280*83ee113eSDavid van Moolenbroek fi 281*83ee113eSDavid van Moolenbroek 282*83ee113eSDavid van Moolenbroek ifconfig ${interface} inet6 add ${new_ip6_address}/${new_ip6_prefixlen} 283*83ee113eSDavid van Moolenbroek 284*83ee113eSDavid van Moolenbroek # Check for nameserver options. 285*83ee113eSDavid van Moolenbroek make_resolv_conf 286*83ee113eSDavid van Moolenbroek 287*83ee113eSDavid van Moolenbroek exit_with_hooks 0 288*83ee113eSDavid van Moolenbroekfi 289*83ee113eSDavid van Moolenbroek 290*83ee113eSDavid van Moolenbroekif [ ${reason} = RENEW6 ] || [ ${reason} = REBIND6 ] ; then 291*83ee113eSDavid van Moolenbroek # Make sure nothing has moved around on us. 292*83ee113eSDavid van Moolenbroek 293*83ee113eSDavid van Moolenbroek # Nameservers/domains/etc. 294*83ee113eSDavid van Moolenbroek if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] || 295*83ee113eSDavid van Moolenbroek [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then 296*83ee113eSDavid van Moolenbroek make_resolv_conf 297*83ee113eSDavid van Moolenbroek fi 298*83ee113eSDavid van Moolenbroek 299*83ee113eSDavid van Moolenbroek exit_with_hooks 0 300*83ee113eSDavid van Moolenbroekfi 301*83ee113eSDavid van Moolenbroek 302*83ee113eSDavid van Moolenbroekif [ ${reason} = DEPREF6 ] ; then 303*83ee113eSDavid van Moolenbroek if [ x${new_ip6_prefixlen} = x ] ; then 304*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 305*83ee113eSDavid van Moolenbroek fi 306*83ee113eSDavid van Moolenbroek 307*83ee113eSDavid van Moolenbroek # XXX: 308*83ee113eSDavid van Moolenbroek # There doesn't appear to be a way to update an addr to indicate 309*83ee113eSDavid van Moolenbroek # preference. 310*83ee113eSDavid van Moolenbroek 311*83ee113eSDavid van Moolenbroek exit_with_hooks 0 312*83ee113eSDavid van Moolenbroekfi 313*83ee113eSDavid van Moolenbroek 314*83ee113eSDavid van Moolenbroekif [ ${reason} = EXPIRE6 -o ${reason} = RELEASE6 -o ${reason} = STOP6 ] ; then 315*83ee113eSDavid van Moolenbroek if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then 316*83ee113eSDavid van Moolenbroek exit_with_hooks 2; 317*83ee113eSDavid van Moolenbroek fi 318*83ee113eSDavid van Moolenbroek 319*83ee113eSDavid van Moolenbroek ifconfig ${interface} inet6 delete ${old_ip6_address}/${old_ip6_prefixlen} 320*83ee113eSDavid van Moolenbroek 321*83ee113eSDavid van Moolenbroek exit_with_hooks 0 322*83ee113eSDavid van Moolenbroekfi 323*83ee113eSDavid van Moolenbroek 324*83ee113eSDavid van Moolenbroekexit_with_hooks 0 325