From: seanedmond@linux.microsoft.com
To: u-boot@lists.denx.de
Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, sjg@chromium.org,
xypron.glpk@gmx.de, ilias.apalodimas@linaro.org
Subject: [PATCH v2 3/3] net: bootp: add config option BOOTP_RANDOM_XID
Date: Mon, 23 Oct 2023 17:21:59 -0700 [thread overview]
Message-ID: <20231024002159.74477-4-seanedmond@linux.microsoft.com> (raw)
In-Reply-To: <20231024002159.74477-1-seanedmond@linux.microsoft.com>
From: Sean Edmond <seanedmond@microsoft.com>
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>
---
cmd/Kconfig | 7 +++++++
net/bootp.c | 31 +++++++++++++++++--------------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/cmd/Kconfig b/cmd/Kconfig
index adbb1a6187..910f465d14 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1838,6 +1838,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
+ 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
diff --git a/net/bootp.c b/net/bootp.c
index bab17a9ceb..f1ca2efacf 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -822,22 +822,25 @@ void bootp_request(void)
/* Only generate a new transaction ID for each new BOOTP request */
if (bootp_try == 1) {
- /*
- * Bootp ID is the lower 4 bytes of our ethernet address
- * plus the current time in ms.
- */
- bootp_id = ((u32)net_ethaddr[2] << 24)
- | ((u32)net_ethaddr[3] << 16)
- | ((u32)net_ethaddr[4] << 8)
- | (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);
+ 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.
+ */
+ bootp_id = ((u32)net_ethaddr[2] << 24)
+ | ((u32)net_ethaddr[3] << 16)
+ | ((u32)net_ethaddr[4] << 8)
+ | (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);
/*
* Calculate proper packet lengths taking into account the
* variable size of the options field
--
2.40.0
next prev parent reply other threads:[~2023-10-24 0:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-24 0:21 [PATCH v2 0/3] BOOTP/DHCPv4 enhancements seanedmond
2023-10-24 0:21 ` [PATCH v2 1/3] net: Get pxe config file from dhcp option 209 seanedmond
2023-10-24 5:54 ` Heinrich Schuchardt
2023-10-24 13:52 ` Peter Robinson
2023-11-04 1:03 ` Sean Edmond
2023-11-04 7:53 ` Heinrich Schuchardt
2023-11-07 23:50 ` Sean Edmond
2023-11-08 0:23 ` Tom Rini
2023-11-08 12:24 ` Peter Robinson
2023-11-09 21:04 ` Tom Rini
2023-11-09 21:35 ` Heinrich Schuchardt
2023-11-09 21:40 ` Tom Rini
2023-10-24 0:21 ` [PATCH v2 2/3] net: bootp: BOOTP/DHCPv4 retransmission improvements seanedmond
2023-10-24 6:06 ` Heinrich Schuchardt
2023-10-24 16:42 ` Sean Edmond
2023-11-04 1:04 ` Sean Edmond
2023-11-04 7:48 ` Heinrich Schuchardt
2023-10-24 0:21 ` seanedmond [this message]
2023-10-24 6:19 ` [PATCH v2 3/3] net: bootp: add config option BOOTP_RANDOM_XID Heinrich Schuchardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231024002159.74477-4-seanedmond@linux.microsoft.com \
--to=seanedmond@linux.microsoft.com \
--cc=ilias.apalodimas@linaro.org \
--cc=joe.hershberger@ni.com \
--cc=rfried.dev@gmail.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.