Re: Bug#17885: DHCP breaks other interfaces (fwd)

Linux-Kernel Mail Account (kernel@whitestar.soark.net)
Sat, 7 Feb 1998 07:37:26 -0500 (EST)


This is not a issue with the kernels after 2.1.73 or so as 0.0.0.0 is not
a valid address for network interfaces..
Note that this breaks all of the older DHCP clients, a rewritten DHCP
client (Not backword compatable with older kernels) is avaleable from
ftp://phystech.com/pub/dhcpcd-1.3.1.tar.gz
Could you test and see if its still 'broken' in 2.0.33? (and 2.0.34 when
that comes out)
Tho it should be noted that how the 2.0 DHCP client's work is actualy
broken according to the standards..

Hope this helps.

Zephaniah E, Hull.

On Sat, 7 Feb 1998, Herbert Xu wrote:

> Please cc karn@ka9q.ampr.org and 17885-forwarded@bugs.debian.org when
> replying.

>
> ----- Forwarded message from Phil Karn -----
>
<snip>

> Package: kernel-source-2.0.32
> Version: 2.0.32-1
>
> The symptom:
>
> On a machine with multiple interfaces, starting a DHCP client on one
> interface breaks all other interfaces until the DHCP client
> successfully binds to an address.
>
> On further investigation, I noticed that the other interfaces weren't
> actually disabled. But while the DHCP client was negotiating an
> address, all packets leaving the other interfaces have the originating
> interface's Ethernet address in the *destination* field -- so the
> hosts they're intended for never see them.
>
> The bug:
>
> The problem is an unintended consequence of code in
> net/ipv4/devinet.c, function ip_chk_addr, lines 120-126. This function
> ordinarily takes an IP address and returns IS_BROADCAST, IS_MYADDR or
> 0. But when an interface (any interface) is configured to IP address
> 0.0.0.0 (as it is during DHCP resolution), this function returns
> IS_MYADDR instead of 0 for any arbitrary non-broadcast address. This
> is intended to cause the calls to ip_chk_addr on line 437 and 439 of
> net/ipv4/ip_input.c to return IS_MYADDR during DHCP resolution so that
> the response packets from the DHCP server will be accepted regardless
> of their IP destination address.
>
> But this code has an unintended side effect. It causes the ARP
> machinery to resolve *all* outbound packets (regardless of interface)
> to the local Ethernet address instead of the correct one. This is what
> breaks the other interfaces.
>
<snip>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu