mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-21 12:10:24 +09:00
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:
parent
449312c1c0
commit
bdce340cc6
10
cmd/Kconfig
10
cmd/Kconfig
@ -1121,6 +1121,16 @@ config BOOTP_HOSTNAME
|
|||||||
help
|
help
|
||||||
The name may or may not be qualified with the local domain name.
|
The name may or may not be qualified with the local domain name.
|
||||||
|
|
||||||
|
config BOOTP_PREFER_SERVERIP
|
||||||
|
bool "serverip variable takes precedent over DHCP server IP."
|
||||||
|
depends on CMD_BOOTP
|
||||||
|
help
|
||||||
|
By default a BOOTP/DHCP reply will overwrite the 'serverip' variable.
|
||||||
|
|
||||||
|
With this option enabled, the 'serverip' variable in the environment
|
||||||
|
takes precedence over DHCP server IP and will only be set by the DHCP
|
||||||
|
server if not already set in the environment.
|
||||||
|
|
||||||
config BOOTP_SUBNETMASK
|
config BOOTP_SUBNETMASK
|
||||||
bool "Request & store 'netmask' from BOOTP/DHCP server"
|
bool "Request & store 'netmask' from BOOTP/DHCP server"
|
||||||
default y
|
default y
|
||||||
|
@ -147,9 +147,14 @@ static void store_net_params(struct bootp_hdr *bp)
|
|||||||
{
|
{
|
||||||
#if !defined(CONFIG_BOOTP_SERVERIP)
|
#if !defined(CONFIG_BOOTP_SERVERIP)
|
||||||
struct in_addr tmp_ip;
|
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);
|
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);
|
net_copy_ip(&net_server_ip, &bp->bp_siaddr);
|
||||||
memcpy(net_server_ethaddr,
|
memcpy(net_server_ethaddr,
|
||||||
((struct ethernet_hdr *)net_rx_packet)->et_src, 6);
|
((struct ethernet_hdr *)net_rx_packet)->et_src, 6);
|
||||||
|
Loading…
Reference in New Issue
Block a user