mirror of
https://git.yoctoproject.org/poky
synced 2026-03-05 06:49:39 +01:00
When using udhcpc along with ip command(/sbin/ip), broadcast address is not
assigned. Broadcast address is successfully assigned when using udhcpc without
ip command existence.
with ip command:
$ifconfig eth0|grep Bcast
inet addr:128.224.162.141 Bcast:0.0.0.0 Mask:255.255.254.0
$
without ip command:
$ifconfig eth0|grep Bcast
inet addr:128.224.162.141 Bcast:128.224.163.255 Mask:255.255.254.0
$
/etc/udhcp.d/50default[simple.script] is called to set ip address by dhcp
client, In case of ifconfig, it doesn't care of it's existence because it
will automatically calculate broadcast address then assign it if there is
no broadcast option. However in case of ip command, it requires broadcast
address statically.
(From OE-Core rev: 666c6a126cd12d2555361f5b573b6a26437df780)
Signed-off-by: Hu <yadi.hu@windriver.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
89 lines
2.5 KiB
Bash
89 lines
2.5 KiB
Bash
#!/bin/sh
|
|
|
|
# udhcpc script edited by Tim Riker <Tim@Rikers.org>
|
|
|
|
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
|
|
|
|
RESOLV_CONF="/etc/resolv.conf"
|
|
[ -n "$subnet" ] && NETMASK="netmask $subnet"
|
|
|
|
# return 0 if root is mounted on a network filesystem
|
|
root_is_nfs() {
|
|
sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
|
|
grep -q "^/ \(nfs\|smbfs\|ncp\|coda\)$"
|
|
}
|
|
|
|
have_bin_ip=0
|
|
if [ -x /sbin/ip ]; then
|
|
have_bin_ip=1
|
|
BROADCAST="broadcast +"
|
|
fi
|
|
|
|
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
|
|
|
|
case "$1" in
|
|
deconfig)
|
|
if [ -x /sbin/resolvconf ]; then
|
|
/sbin/resolvconf -d "${interface}.udhcpc"
|
|
fi
|
|
if ! root_is_nfs ; then
|
|
if [ $have_bin_ip -eq 1 ]; then
|
|
ip addr flush dev $interface
|
|
ip link set dev $interface up
|
|
else
|
|
/sbin/ifconfig $interface 0.0.0.0
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
renew|bound)
|
|
if [ $have_bin_ip -eq 1 ]; then
|
|
ip addr add dev $interface local $ip/$mask $BROADCAST
|
|
else
|
|
/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
|
|
fi
|
|
|
|
if [ -n "$router" ] ; then
|
|
if ! root_is_nfs ; then
|
|
if [ $have_bin_ip -eq 1 ]; then
|
|
while ip route del default 2>/dev/null ; do
|
|
:
|
|
done
|
|
else
|
|
while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
|
|
:
|
|
done
|
|
fi
|
|
fi
|
|
|
|
metric=0
|
|
for i in $router ; do
|
|
if [ $have_bin_ip -eq 1 ]; then
|
|
ip route add default via $i metric $metric
|
|
else
|
|
route add default gw $i dev $interface metric $metric 2>/dev/null
|
|
fi
|
|
metric=$(($metric + 1))
|
|
done
|
|
fi
|
|
|
|
# Update resolver configuration file
|
|
R=""
|
|
[ -n "$domain" ] && R="domain $domain
|
|
"
|
|
for i in $dns; do
|
|
echo "$0: Adding DNS $i"
|
|
R="${R}nameserver $i
|
|
"
|
|
done
|
|
|
|
if [ -x /sbin/resolvconf ]; then
|
|
echo -n "$R" | /sbin/resolvconf -a "${interface}.udhcpc"
|
|
else
|
|
echo -n "$R" > "$RESOLV_CONF"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
exit 0
|