1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

dhclient: not always skip the nfsroot interface

Don't skip the nfsroot interface when use dhcp
to get the address for nfsroot interface as the
nfsroot interface may need dhclient to renew
the lease.

(From OE-Core rev: 27aec88c2ff4588acacadbe1cd61d7ce233fc817)

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mingli Yu
2020-04-02 14:26:08 +08:00
committed by Richard Purdie
parent 4882a93566
commit 5badcf8168
@@ -1,5 +1,19 @@
#!/bin/sh
# Add an initial /var/lib/dhcp/dhclient.leases to make
# sure the IP which dhclient try to renew is the same
# with the IP which kernel got from dhcp server during
# boot
update_dhclient_leases()
{
local addr=$1
local interface=$2
echo "lease {" >> /var/lib/dhcp/dhclient.leases
echo " interface \"${addr}\";" >> /var/lib/dhcp/dhclient.leases
echo " fixed-address ${interface:0:-3};" >> /var/lib/dhcp/dhclient.leases
echo "}" >> /var/lib/dhcp/dhclient.leases
}
# In case the interface is used for nfs, skip it.
nfsroot=0
interfaces=""
@@ -19,6 +33,7 @@ while read dev mtpt fstype rest; do
done
exec 0<&9 9<&-
if [ $nfsroot -eq 0 ]; then
interfaces="$INTERFACES"
else
@@ -27,7 +42,16 @@ else
fi
for i in $INTERFACES; do
if test "x$i" = "x$nfs_iface"; then
echo "dhclient skipping nfsroot interface $i"
interface_addr=`ip -4 address show $nfs_iface | grep 'inet '|sed 's/.*inet \(\S\+\).*/\1/'`
if [ "x$interface_addr" != "x" ] && cat /proc/cmdline | grep "ip=dhcp" > /dev/null ; then
# use to renew lease if needed
interfaces="$interfaces $i"
# use to update /var/lib/dhcp/dhclient.leases if needed
# when the ip got by kernel, we need use dhclient to renew the ip
update_dhclient_leases $nfs_iface $interface_addr
else
echo "dhclient skipping nfsroot interface $i"
fi
else
interfaces="$interfaces $i"
fi