net: Add option to prefer bootp/dhcp serverip
Currently we can choose between 2 different types of behavior for the
serverip variable:
1) Always overwrite it with the DHCP server IP address (default)
2) Ignore what the DHCP server says (CONFIG_BOOTP_SERVERIP)
This patch adds a 3rd option:
3) Use serverip from DHCP if no serverip is given
(CONFIG_BOOTP_PREFER_SERVERIP)
With this new option, we can have the default case that a boot file gets
loaded from the DHCP provided TFTP server work while allowing users to
specify their own serverip variable to explicitly use a different tftp
server.
Signed-off-by: Alexander Graf <agraf@suse.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
committed by
Joe Hershberger
parent
449312c1c0
commit
bdce340cc6
@@ -147,9 +147,14 @@ static void store_net_params(struct bootp_hdr *bp)
|
||||
{
|
||||
#if !defined(CONFIG_BOOTP_SERVERIP)
|
||||
struct in_addr tmp_ip;
|
||||
bool overwrite_serverip = true;
|
||||
|
||||
#if defined(CONFIG_BOOTP_PREFER_SERVERIP)
|
||||
overwrite_serverip = false;
|
||||
#endif
|
||||
|
||||
net_copy_ip(&tmp_ip, &bp->bp_siaddr);
|
||||
if (tmp_ip.s_addr != 0)
|
||||
if (tmp_ip.s_addr != 0 && (overwrite_serverip || !net_server_ip.s_addr))
|
||||
net_copy_ip(&net_server_ip, &bp->bp_siaddr);
|
||||
memcpy(net_server_ethaddr,
|
||||
((struct ethernet_hdr *)net_rx_packet)->et_src, 6);
|
||||
|
||||
Reference in New Issue
Block a user