[PATCH 15/26] net: bootp: Fall back to BOOTP from DHCP when unit testing

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Oct 12 09:16:17 CEST 2023


On 10/12/23 03:56, Sean Anderson wrote:
> If we sent a DHCP packet and get a BOOTP response from the server, we
> shouldn't try to send a DHCPREQUEST packet, since it won't be DHCPACKed.
> Transition straight to BIND. This is only enabled for UNIT_TEST to avoid
> bloat, since I suspect the number of BOOTP servers in the wild is
> vanishingly small.
>
> Signed-off-by: Sean Anderson <seanga2 at gmail.com>
> ---
>
>   net/bootp.c | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/net/bootp.c b/net/bootp.c
> index 2053cce88c6..7b0f45e18a9 100644
> --- a/net/bootp.c
> +++ b/net/bootp.c
> @@ -1073,6 +1073,11 @@ static void dhcp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
>   			    CONFIG_SYS_BOOTFILE_PREFIX,
>   			    strlen(CONFIG_SYS_BOOTFILE_PREFIX)) == 0) {
>   #endif	/* CONFIG_SYS_BOOTFILE_PREFIX */
> +			if (CONFIG_IS_ENABLED(UNIT_TEST) &&
> +			    dhcp_message_type((u8 *)bp->bp_vend) == -1) {
> +				debug("got BOOTP response; transitioning to BOUND\n");
> +				goto dhcp_got_bootp;

This may result in unexpected behavior when running tests against an
actual network. Please, avoid this.

Best regards

Heinrich

> +			}
>   			dhcp_packet_process_options(bp);
>   			if (CONFIG_IS_ENABLED(EFI_LOADER) &&
>   			    IS_ENABLED(CONFIG_NETDEVICES))
> @@ -1099,6 +1104,7 @@ static void dhcp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
>   		debug("DHCP State: REQUESTING\n");
>
>   		if (dhcp_message_type((u8 *)bp->bp_vend) == DHCP_ACK) {
> +dhcp_got_bootp:
>   			dhcp_packet_process_options(bp);
>   			/* Store net params from reply */
>   			store_net_params(bp);



More information about the U-Boot mailing list