The udhcpc script fails to properly set a default route when:
- 'ip' is present ($have_bin_ip -eq 1)
- there are 2 or more interfaces connected to the same network
(e.g. ethernet + wifi on the same home LAN / same DHCP server)
In this case, when the first interface gets an address from DHCP
(e.g. eth0), a default route is set correctly. When the second interface
(e.g. wlan0) gets its address, 'ip route add' without 'dev $interface' sets
the route on the other interface. The result looks like:
# ip route
default via 192.168.1.1 dev eth0 metric 5
default via 192.168.1.1 dev eth0 metric 10 # wrong dev here
192.168.1.0/24 dev eth0 scope link src 192.168.1.20
192.168.1.0/24 dev wlan0 scope link src 192.168.1.30
#
The situation might go unnoticed until eth0 is disconnected, because only
wlan0 is present but there is no route through wlan0.
Fix by explicitly passing "dev $interface" to 'ip route add'. Note that all
other 'ip' invocations already have "dev $interface" passed.
(From OE-Core rev: bb526eee429f25b85372f41e4d6d2865bcc39173)
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The udhcpc script calls ip addr flush .. which flushes addresses
of any address family, including IPv6. However, busybox udhcpc is
IPv4 only and should not influence IPv6 addressing. Hence use ip
addr flush with family constrait.
The script particularly broke IPv6 SLAAC: Typically when udhcpc
calls the script the kernel already assigned the IPv6 link-local
address. The flush removes the link-local IPv6 address again and
prohibits proper IPv6 operation such as SLAAC since neighbor
discovery protocol relies on IPv6 link-local addressing.
(From OE-Core rev: b77541dbb2f442e51842f9d24c8745a6df2d1478)
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When using iproute2 to remove the route all default rules
will be removed. Scope the removal by interface like it is
done with ifconfig.
(From OE-Core rev: 2127a57cb1b3d83f9f7640051403e47e485b132c)
Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Linux allows to install multiple default routes with
different metrics. Start with a metric above 0 to
allow other parts of the system to install routes
with a lower metric.
(From OE-Core rev: 566441f58d398d93f948067cf399d00cf3b37eba)
Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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>
[YOCTO #2788]
The system will be hung when udhcpc starts, if nfs is mounted
at "/" directory and default route is different after starting
udhcpc.
The cause is that root_is_nfs() does not work after kernel-2.6.37,
since the device name has been changed from /dev/root to
${IPADDR}:${NFSDIR} on /proc/mounts. which leads to remove
the default routes to nfs server,
Now we use a loose match to check if rootfs is nfs.
(From OE-Core rev: 9921cb0104ea36daf909c110bb6767e5fd307da0)
Signed-off-by: Roy.Li <rongqing.li@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Support resolvconf
* Avoid bashism $((metric++))
* Use 'domain' instead of 'search' for domain parameter
(From OE-Core rev: 3d4ccf98b83fe662f375cd5b029fdd602824c0e8)
Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Having one monolithic packages directory makes it hard to find things
and is generally overwhelming. This commit splits it into several
logical sections roughly based on function, recipes.txt gives more
information about the classifications used.
The opportunity is also used to switch from "packages" to "recipes"
as used in OpenEmbedded as the term "packages" can be confusing to
people and has many different meanings.
Not all recipes have been classified yet, this is just a first pass
at separating things out. Some packages are moved to meta-extras as
they're no longer actively used or maintained.
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>