dhcpc: Use client IP address as source address for DHCP renew/rebind messages
No binary (build failed)
—
(log yok)
| @@ -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 | |