Applied, thanks!
On Thu, Feb 18, 2016 at 12:27 PM, Hans Dedecker <[email protected]> wrote: > RFC2131 paragraph 4.1 states DHCP messages broadcast by a client prior to > that client obtaining its IP address must have the source IP address > field in the header set to 0. > Request messages transmitted in renewing and rebinding state need to use > the obtained IP address as source IP address in the header; this behavior > lines up with other implementations like ISC dhcp client. > > Signed-off-by: Hans Dedecker <[email protected]> > --- > networking/udhcp/dhcpc.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c > index 48097bc..431f807 100644 > --- a/networking/udhcp/dhcpc.c > +++ b/networking/udhcp/dhcpc.c > @@ -675,10 +675,10 @@ static void add_client_options(struct dhcp_packet > *packet) > * client reverts to using the IP broadcast address. > */ > > -static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet) > +static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet, > uint32_t src_nip) > { > return udhcp_send_raw_packet(packet, > - /*src*/ INADDR_ANY, CLIENT_PORT, > + /*src*/ src_nip, CLIENT_PORT, > /*dst*/ INADDR_BROADCAST, SERVER_PORT, MAC_BCAST_ADDR, > client_config.ifindex); > } > @@ -689,7 +689,7 @@ static int bcast_or_ucast(struct dhcp_packet *packet, > uint32_t ciaddr, uint32_t > return udhcp_send_kernel_packet(packet, > ciaddr, CLIENT_PORT, > server, SERVER_PORT); > - return raw_bcast_from_client_config_ifindex(packet); > + return raw_bcast_from_client_config_ifindex(packet, ciaddr); > } > > /* Broadcast a DHCP discover packet to the network, with an optionally > requested IP */ > @@ -715,7 +715,7 @@ static NOINLINE int send_discover(uint32_t xid, uint32_t > requested) > add_client_options(&packet); > > bb_info_msg("Sending discover..."); > - return raw_bcast_from_client_config_ifindex(&packet); > + return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY); > } > > /* Broadcast a DHCP request message */ > @@ -759,7 +759,7 @@ static NOINLINE int send_select(uint32_t xid, uint32_t > server, uint32_t requeste > > addr.s_addr = requested; > bb_info_msg("Sending select for %s...", inet_ntoa(addr)); > - return raw_bcast_from_client_config_ifindex(&packet); > + return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY); > } > > /* Unicast or broadcast a DHCP renew message */ > @@ -827,7 +827,7 @@ static NOINLINE int send_decline(/*uint32_t xid,*/ > uint32_t server, uint32_t req > udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server); > > bb_info_msg("Sending decline..."); > - return raw_bcast_from_client_config_ifindex(&packet); > + return raw_bcast_from_client_config_ifindex(&packet, INADDR_ANY); > } > #endif > > -- > 1.9.1 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
