Lines 135-140
Link Here
|
135 |
exit_with_hooks 0 |
135 |
exit_with_hooks 0 |
136 |
fi |
136 |
fi |
137 |
|
137 |
|
|
|
138 |
# simple IP arithmetic functions: |
139 |
|
140 |
function quad2num() |
141 |
{ |
142 |
if [ $# -eq 4 ]; then |
143 |
let n="$1<<24|$2<<16|$3<<8|$4" |
144 |
echo $n; |
145 |
return 0; |
146 |
fi |
147 |
echo '0'; |
148 |
return 1; |
149 |
} |
150 |
|
151 |
function ip2num() |
152 |
{ |
153 |
IFS='.' quad2num $1; |
154 |
} |
155 |
|
156 |
function num2ip() |
157 |
{ |
158 |
let n="$1"; |
159 |
let o1='(n>>24)&0xff'; |
160 |
let o2='(n>>16)&0xff'; |
161 |
let o3='(n>>8)&0xff'; |
162 |
let o4='n & 0xff'; |
163 |
echo $o1.$o2.$o3.$o4; |
164 |
} |
165 |
|
166 |
function mask() |
167 |
{ |
168 |
ip=$1 |
169 |
m=$2 |
170 |
let ip=`IFS='.' ip2num $ip`; |
171 |
let m=`IFS='.' ip2num $m`; |
172 |
let n='ip&m'; |
173 |
num2ip $n; |
174 |
} |
175 |
|
176 |
function routerReachable() |
177 |
{ # Handle silly DHCP servers that give us a router not on our subnet: |
178 |
router=$1 |
179 |
routerSubnet=`mask $router $new_subnet_mask` |
180 |
mySubnet=`mask $new_ip_address $new_subnet_mask` |
181 |
unreachable=0 |
182 |
if [ "$routerSubnet" != "$mySubnet" ]; then |
183 |
unreachable=1 |
184 |
if /sbin/arping -f -q -I $interface -w2 $router; then |
185 |
/sbin/route add ${router}/32 dev $interface |
186 |
if [ $? -eq 0 ]; then |
187 |
unreachable=0 |
188 |
fi |
189 |
else |
190 |
unreachable=1 |
191 |
fi; |
192 |
fi; |
193 |
return $unreachable; |
194 |
} |
195 |
|
196 |
function add_default_gateway() |
197 |
{ |
198 |
router=$1 |
199 |
metric=$2 |
200 |
if routerReachable $router ; then |
201 |
/sbin/route add default gw $router $metric dev $interface; |
202 |
return $?; |
203 |
fi; |
204 |
return 1; |
205 |
} |
206 |
|
138 |
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ |
207 |
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ |
139 |
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then |
208 |
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then |
140 |
current_hostname=`hostname` |
209 |
current_hostname=`hostname` |
Lines 172-178
Link Here
|
172 |
dev $interface |
241 |
dev $interface |
173 |
fi |
242 |
fi |
174 |
for router in $new_routers; do |
243 |
for router in $new_routers; do |
175 |
route add default gw $router $metric_arg dev $interface |
244 |
add_default_gateway $router $metric_arg |
176 |
done |
245 |
done |
177 |
fi |
246 |
fi |
178 |
if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; |
247 |
if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; |