mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-12 02:06:59 +02:00
net: bootp: add config option BOOTP_RANDOM_XID
The new config option BOOTP_RANDOM_XID will randomize the transaction ID for each new BOOT/DHCPv4 exchange. Signed-off-by: Sean Edmond <seanedmond@microsoft.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
e6bca3305b
commit
2111bd7e93
@ -1909,6 +1909,13 @@ config BOOTP_VCI_STRING
|
||||
default "U-Boot.arm" if ARM
|
||||
default "U-Boot"
|
||||
|
||||
config BOOTP_RANDOM_XID
|
||||
bool "Send random transaction ID to BOOTP/DHCP server"
|
||||
depends on CMD_BOOTP && (LIB_RAND || LIB_HW_RAND)
|
||||
help
|
||||
Selecting this will allow for a random transaction ID to get
|
||||
selected for each BOOTP/DHCPv4 exchange.
|
||||
|
||||
if CMD_DHCP6
|
||||
|
||||
config DHCP6_PXE_CLIENTARCH
|
||||
|
11
net/bootp.c
11
net/bootp.c
@ -834,6 +834,10 @@ void bootp_request(void)
|
||||
|
||||
/* Only generate a new transaction ID for each new BOOTP request */
|
||||
if (bootp_try == 1) {
|
||||
if (IS_ENABLED(CONFIG_BOOTP_RANDOM_XID)) {
|
||||
srand(get_ticks() + rand());
|
||||
bootp_id = rand();
|
||||
} else {
|
||||
/*
|
||||
* Bootp ID is the lower 4 bytes of our ethernet address
|
||||
* plus the current time in ms.
|
||||
@ -844,12 +848,11 @@ void bootp_request(void)
|
||||
| (u32)net_ethaddr[5];
|
||||
bootp_id += get_timer(0);
|
||||
bootp_id = htonl(bootp_id);
|
||||
bootp_add_id(bootp_id);
|
||||
net_copy_u32(&bp->bp_id, &bootp_id);
|
||||
} else {
|
||||
net_copy_u32(&bp->bp_id, &bootp_id);
|
||||
}
|
||||
}
|
||||
|
||||
bootp_add_id(bootp_id);
|
||||
net_copy_u32(&bp->bp_id, &bootp_id);
|
||||
/*
|
||||
* Calculate proper packet lengths taking into account the
|
||||
* variable size of the options field
|
||||
|
Loading…
Reference in New Issue
Block a user