Commit Graph

10 Commits

Author SHA1 Message Date
Luca Ceresoli
e223f7cbb1 busybox: udhcpc: fix 'ip route add' with multiple interfaces on the same network
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>
2020-01-27 16:48:08 +00:00
Stefan Agner
b4d44736da busybox: udhcpc: fix IPv6 support when using udhcpc
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>
2020-01-21 12:52:53 +00:00
Mark O'Donovan
691277f889 udhcpc: specify full path for ip command calls
(From OE-Core rev: 97dd53468537968422569797122ddef4b779a488)

Signed-off-by: Mark O'Donovan <modonovan@biotector.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-02-11 12:27:49 +00:00
Holger Hans Peter Freyther
f7c45a4f74 busybox:udhcpc: Remove the routes from the right interface
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>
2015-02-24 17:41:44 +00:00
Holger Hans Peter Freyther
48fa8684dd busybox:udhcpc: Start with a metric of 10 for routes
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>
2015-02-24 17:41:44 +00:00
yadi.hu@windriver.com
7e8ca6fb18 BusyBox: Fixing broadcast address is not fed and rightly initialized
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>
2014-11-04 10:27:10 +00:00
Mark Hatle
e9b5ef1c20 busybox: fix ip reference in simple.script
The ip is being installed into /sbin as of the latest busybox.

(From OE-Core rev: 222ae6001db286d66462c6334f7f054ca727b7be)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-07-18 21:23:42 +01:00
Roy.Li
2ccbf35ed1 busybox:udhcpc: fix the root_is_nfs() function
[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>
2012-07-26 14:40:49 +01:00
Andreas Oberritter
f60cdd4d56 busybox: port improvements to simple.script from Debian (udhcpc)
* 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>
2012-05-04 16:44:59 +01:00
Richard Purdie
29d6678fd5 Major layout change to the packages directory
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>
2010-08-27 15:29:45 +01:00