Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 158867 | Differences between
and this patch

Collapse All | Expand All

(-)dhclient-script.orig (-1 / +70 lines)
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 ];

Return to bug 158867