* 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);
}
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 */
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 */
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 */
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