[PATCH] net: lwip: dhcp: support arguments for TFTP file download
Jerome Forissier
jerome.forissier at linaro.org
Thu Nov 14 18:19:55 CET 2024
On 11/14/24 18:15, Heinrich Schuchardt wrote:
> Jerome Forissier <jerome.forissier at linaro.org> schrieb am Do., 14. Nov.
> 2024, 18:10:
>
>> The dhcp command is supposed to have the following syntax as per
>> "help dhcp":
>>
>> dhcp [loadAddress] [[hostIPaddr:]bootfilename]
>>
>> In other words, any arguments should be passed to an implicit
>> tftpboot command after the DHCP exchange has occurred.
>>
>> Add the missing code to the lwIP version of do_dhcp().
>>
>> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
>> ---
>> net/lwip/dhcp.c | 27 ++++++++++++++++++++++++++-
>> 1 file changed, 26 insertions(+), 1 deletion(-)
>>
>> diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c
>> index 23b56226921..6f987e469d6 100644
>> --- a/net/lwip/dhcp.c
>> +++ b/net/lwip/dhcp.c
>> @@ -111,9 +111,34 @@ static int dhcp_loop(struct udevice *udev)
>>
>> int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>> {
>> + int ret;
>> +
>> eth_set_current();
>>
>> - return dhcp_loop(eth_get_dev());
>> + ret = dhcp_loop(eth_get_dev());
>> + if (ret)
>> + return ret;
>> +
>> + if (argc > 1) {
>> + int i;
>> + char **tftp_argv;
>> + struct cmd_tbl cmdtp = {};
>> +
>> + /* Invoke tftpboot with the arguments passed to dhcp */
>> + if (argc > 3)
>> + return CMD_RET_FAILURE;
>> + tftp_argv = malloc(argc * sizeof(char *));
>> + if (!tftp_argv)
>> + return CMD_RET_FAILURE;
>> + tftp_argv[0] = "tftpboot";
>> + for (i = 1; i < argc; i++)
>> + tftp_argv[i] = argv[i];
>>
>
> Couldn't you just pass the original argv and argc if argc > 1.
Ha! Yes. I don't know why I thought tftpboot might be confused by
the content of argv[0]. It is of course not the case. v2 coming
shortly, thanks!
--
Jerome
>
> Best regards
>
> Heinrich
>
>
> + ret = do_tftpb(&cmdtp, 0, argc, tftp_argv);
>> + free(tftp_argv);
>> + return ret;
>> + }
>> +
>> + return CMD_RET_SUCCESS;
>> }
>>
>> int dhcp_run(ulong addr, const char *fname, bool autoload)
>> --
>> 2.40.1
>>
>>
>
More information about the U-Boot
mailing list