1aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger#!/bin/bash 2aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 3aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# dhclient-script for Linux. 4aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 5aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# This program is free software; you can redistribute it and/or 6aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# modify it under the terms of the GNU General Public License 7aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# as published by the Free Software Foundation; either version 8aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 2 of the License, or (at your option) any later version. 9aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 10aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 11aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 12aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Probably, I did not understand, what this funny feature as "alias" 13aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# means exactly. For now I suppose, that it is a static address, which 14aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# we should install and preserve. 15aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 16aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 1720ed7b24df05eadf83168d1d0ce0052a31380928Stephen Hemmingerexec >> /var/log/DHS.log 2>&1 18aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 19aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerecho dhc-script $* reason=$reason 20aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerset | grep "^\(old_\|new_\|check_\)" 21aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 22aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerLOG () { 23aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo LOG $* ; 24aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 25aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 26aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# convert 8bit mask to length 27aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = mask 28aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 29aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerMask8ToLen() { 30aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local l=0; 31aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 32aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger while [ $l -le 7 ]; do 33aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ $[ ( 1 << $l ) + $1 ] -eq 256 ]; then 34aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return $[ 8 - $l ] 35aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 36aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger l=$[ $l + 1 ] 37aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done 38aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0; 39aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 40aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 41aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# convert inet dotted quad mask to length 42aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = dotquad mask 43aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 44aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerMaskToLen() { 45aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local masklen=0 46aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local mask8=$1 47aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 48aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger case $1 in 49aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 0.0.0.0) 50aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0; 51aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 52aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 255.*.0.0) 53aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger masklen=8 54aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask8=${mask8#255.} 55aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask8=${mask8%.0.0} 56aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 57aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 255.255.*.0) 58aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger masklen=16 59aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask8=${mask8#255.255.} 60aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask8=${mask8%.0} 61aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 62aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 255.255.255.*) 63aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger masklen=24 64aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask8=${mask8#255.255.255.} 65aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 66aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger *) 67aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 255 68aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 69aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger esac 70aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger Mask8ToLen $mask8 71aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return $[ $? + $masklen ] 72aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 73aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 74aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# calculate ABC "natural" mask 75aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = dotquad address 76aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 77aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerABCMask () { 78aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local class; 79aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 80aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger class=${1%%.*} 81aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 82aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$1" = "255.255.255.255" ]; then 83aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo $1 84aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ "$1" = "0.0.0.0" ]; then 85aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo $1 86aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 224 ]; then 87aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo 240.0.0.0 88aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 192 ]; then 89aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo 255.255.255.0 90aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 128 ]; then 91aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo 255.255.0.0 92aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger else 93aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo 255.0.0.0 94aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 95aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 96aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 97aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# calculate ABC "natural" mask length 98aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = dotquad address 99aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 100aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerABCMaskLen () { 101aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local class; 102aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 103aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger class=${1%%.*} 104aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 105aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$1" = "255.255.255.255" ]; then 106aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 32 107aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ "$1" = "0.0.0.0" ]; then 108aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0 109aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 224 ]; then 110aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 4; 111aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 192 ]; then 112aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 24; 113aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger elif [ $class -ge 128 ]; then 114aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 16; 115aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger else 116aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 8; 117aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 118aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 119aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 120aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Delete IP address 121aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = interface 122aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $2 = address 123aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $3 = mask 124aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $4 = broadcast 125aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $5 = label 126aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 127aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerDelINETAddr () { 128aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local masklen=32 129aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local addrid=$1 130aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 131aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG DelINETAddr $* 132aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 133aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$5" ]; then 134aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger addrid=$addrid:$5 135aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 136aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG ifconfig $addrid down 137aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $addrid down 138aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 139aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 140aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Add IP address 141aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = interface 142aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $2 = address 143aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $3 = mask 144aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $4 = broadcast 145aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $5 = label 146aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 147aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerAddINETAddr () { 148aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local mask_arg 149aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local brd_arg 150aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local addrid=$1 151aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 152aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG AddINETAddr $* 153aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 154aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$5" ]; then 155aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger addrid=$addrid:$5 156aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 157aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$3" ]; then 158aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mask_arg="netmask $3" 159aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 160aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$4" ]; then 161aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger brd_arg="broadcast $4" 162aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 163aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 164aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG ifconfig $addrid $2 $mask_arg $brd_arg up 165aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $addrid $2 $mask_arg $brd_arg up 166aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 167aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 168aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Add default routes 169aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = routers list 170aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 171aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerAddDefaultRoutes() { 172aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local router 173aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 174aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$1" ]; then 175aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG AddDefaultRoutes $* 176aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger for router in $1; do 177aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG route add default gw $router 178aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger route add default gw $router 179aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done ; 180aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 181aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 182aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 183aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Delete default routes 184aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = routers list 185aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 186aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerDelDefaultRoutes() { 187aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local router 188aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 189aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$1" ]; then 190aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG DelDefaultRoutes $* 191aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 192aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger for router in $1; do 193aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG route del default gw $router 194aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger route del default gw $router 195aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done 196aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 197aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 198aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 199aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# ping a host 200aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = dotquad address of the host 201aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 202aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerPingNode() { 203aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG PingNode $* 204aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if ping -q -c 1 -w 2 $1 ; then 205aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0; 206aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 207aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 1; 208aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 209aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 210aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Check (and add route, if alive) default routers 211aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = routers list 212aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# returns: 0 if at least one router is alive. 213aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 214aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerCheckRouterList() { 215aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local router 216aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local succeed=1 217aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 218aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG CheckRouterList $* 219aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 220aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger for router in $1; do 221aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if PingNode $router ; then 222aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger succeed=0 223aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger route add default gw $router 224aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 225aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done 226aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return $succeed 227aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 228aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 229aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Delete/create static routes. 230aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = operation (del/add) 231aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $2 = routes list in format "dst1 nexthop1 dst2 ..." 232aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 233aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# BEWARE: this feature of DHCP is obsolete, because does not 234aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# support subnetting. 235aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 236aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerX-StaticRouteList() { 237aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local op=$1 238aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local lst="$2" 239aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local masklen 240aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 241aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG X-StaticRouteList $* 242aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 243aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$lst" ]; then 244aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger set $lst 245aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger while [ $# -gt 1 ]; do 246aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger route $op -net $1 netmask `ABCMask "$1"` gw $2 247aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger shift; shift; 248aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done 249aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 250aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 251aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 252aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Create static routes. 253aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = routes list in format "dst1 nexthop1 dst2 ..." 254aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 255aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerAddStaticRouteList() { 256aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG AddStaticRouteList $* 257aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger X-StaticRouteList add "$1" 258aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 259aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 260aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Delete static routes. 261aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# arg: $1 = routes list in format "dst1 nexthop1 dst2 ..." 262aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 263aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerDelStaticRouteList() { 264aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG DelStaticRouteList $* 265aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger X-StaticRouteList del "$1" 266aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 267aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 268aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Broadcast unsolicited ARP to update neighbours' caches. 269aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = interface 270aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $2 = address 271aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 272aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerUnsolicitedARP() { 273aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ -f /sbin/arping ]; then 274aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger /sbin/arping -A -c 1 -I "$1" "$2" & 275aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger (sleep 2 ; /sbin/arping -U -c 1 -I "$1" "$2" ) & 276aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 277aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 278aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 279aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Duplicate address detection. 280aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: $1 = interface 281aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# $2 = test address 282aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# returns: 0, if DAD succeeded. 283aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerDAD() { 284aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ -f /sbin/arping ]; then 285aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger /sbin/arping -c 2 -w 3 -D -I "$1" "$2" 286aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return $? 287aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 288aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0 289aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 290aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 291aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 292aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Setup resolver. 293aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# args: NO 294aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# domain and nameserver list are passed in global variables. 295aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 296aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# NOTE: we try to be careful and not to break user supplied resolv.conf. 297aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# The script mangles it, only if it has dhcp magic signature. 298aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# 299aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerUpdateDNS() { 300aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local nameserver 301aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger local idstring="#### Generated by DHCPCD" 302aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 303aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG UpdateDNS $* 304aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 305aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$new_domain_name" = "" -a "$new_domain_name_servers" = "" ]; then 306aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0; 307aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 308aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 309aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo $idstring > /etc/resolv.conf.dhcp 310aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$new_domain_name" ]; then 311aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo search $new_domain_name >> /etc/resolv.conf.dhcp 312aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 313aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo options ndots:1 >> /etc/resolv.conf.dhcp 314aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 315aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$new_domain_name_servers" ]; then 316aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger for nameserver in $new_domain_name_servers; do 317aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo nameserver $nameserver >> /etc/resolv.conf.dhcp 318aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger done 319aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger else 320aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger echo nameserver 127.0.0.1 >> /etc/resolv.conf.dhcp 321aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 322aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 323aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ -f /etc/resolv.conf ]; then 324aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "`head -1 /etc/resolv.conf`" != "$idstring" ]; then 325aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0 326aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 327aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_domain_name" = "$new_domain_name" -a 328aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger "$new_domain_name_servers" = "$old_domain_name_servers" ]; then 329aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger return 0 330aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 331aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 332aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger mv /etc/resolv.conf.dhcp /etc/resolv.conf 333aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger} 334aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 335aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingercase $reason in 336aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerNBI) 337aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 1 338aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 339aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 340aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerMEDIUM) 341aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 342aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 343aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 344aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerPREINIT) 345aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $interface:dhcp down 346aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $interface:dhcp1 down 347aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ -d /proc/sys/net/ipv4/conf/$interface ]; then 348aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $interface:dhcp 10.10.10.10 netmask 255.255.255.255 349aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $interface:dhcp down 350aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ -d /proc/sys/net/ipv4/conf/$interface ]; then 351aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger LOG The interface $interface already configured. 352aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 353aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 354aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ifconfig $interface:dhcp up 355aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 356aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 357aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 358aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerARPSEND) 359aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 360aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 361aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 362aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerARPCHECK) 363aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if DAD "$interface" "$check_ip_address" ; then 364aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 365aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 366aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 1 367aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 368aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 369aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerBOUND|RENEW|REBIND|REBOOT) 370aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_ip_address" -a "$alias_ip_address" -a \ 371aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger "$alias_ip_address" != "$old_ip_address" ]; then 372aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 373aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 374aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_ip_address" -a "$old_ip_address" != "$new_ip_address" ]; then 375aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$old_ip_address" "$old_subnet_mask" "$old_broadcast_address" dhcp 376aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelDefaultRoutes "$old_routers" 377aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelStaticRouteList "$old_static_routes" 378aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 379aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_ip_address" = "" -o "$old_ip_address" != "$new_ip_address" -o \ 380aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger "$reason" = "BOUND" -o "$reason" = "REBOOT" ]; then 381aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$new_ip_address" "$new_subnet_mask" "$new_broadcast_address" dhcp 382aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddStaticRouteList "$new_static_routes" 383aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddDefaultRoutes "$new_routers" 384aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger UnsolicitedARP "$interface" "$new_ip_address" 385aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 386aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$new_ip_address" != "$alias_ip_address" -a "$alias_ip_address" ]; then 387aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 388aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 389aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger UpdateDNS 390aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 391aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 392aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 393aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerEXPIRE|FAIL) 394aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" ]; then 395aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 396aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 397aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_ip_address" ]; then 398aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$old_ip_address" "$old_subnet_mask" "$old_broadcast_address" dhcp 399aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelDefaultRoutes "$old_routers" 400aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelStaticRouteList "$old_static_routes" 401aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 402aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" ]; then 403aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 404aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 405aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 406aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 407aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 408aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerTIMEOUT) 409aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" ]; then 410aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 411aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 412aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Seems, <null address> means, that no more old leases found. 413aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger# Or does it mean bug in dhcpcd? 8) Fail for now. 414aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$new_ip_address" = "<null address>" ]; then 415aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$old_ip_address" ]; then 416aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$old_ip_address" "$old_subnet_mask" "$old_broadcast_address" dhcp 417aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 418aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" ]; then 419aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 420aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 421aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 1 422aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 423aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if DAD "$interface" "$new_ip_address" ; then 424aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$new_ip_address" "$new_subnet_mask" "$new_broadcast_address" dhcp 425aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger UnsolicitedARP "$interface" "$new_ip_address" 426aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" -a "$alias_ip_address" != "$new_ip_address" ]; then 427aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 428aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger UnsolicitedARP "$interface" "$alias_ip_address" 429aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 430aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if CheckRouterList "$new_routers" ; then 431aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddStaticRouteList "$new_static_routes" 432aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger UpdateDNS 433aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 0 434aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 435aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 436aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelINETAddr "$interface" "$new_ip_address" "$new_subnet_mask" "$new_broadcast_address" dhcp 437aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelDefaultRoutes "$old_routers" 438aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger DelStaticRouteList "$old_static_routes" 439aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger if [ "$alias_ip_address" ]; then 440aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger AddINETAddr "$interface" "$alias_ip_address" "$alias_subnet_mask" "$alias_broadcast_address" dhcp1 441aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger fi 442aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger exit 1 443aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger ;; 444aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingeresac 445aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemminger 446aba5acdfdb347d2c21fc67d613d83d4430ca3937osdl.org!shemmingerexit 0 447