doc: cmd: wget: document lwIP syntax

The lwIP version of wget supports a different syntax with a URL,
in addition to the legacy syntax. Document that.

While we're at it, fix a couple of minor issues in the legacy
syntax:
- hostIPaddr can be a DNS name if CONFIG_CMD_DNS is enabled
- path is mandatory

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Jerome Forissier 2024-11-18 10:18:01 +01:00 committed by Heinrich Schuchardt
parent f9dd2e2c9f
commit 5753b9eb48

View file

@ -11,29 +11,54 @@ Synopsis
::
wget address [[hostIPaddr:]path]
wget [address] [host:]path
wget [address] url # lwIP only
Description
-----------
The wget command is used to download a file from an HTTP server.
The wget command is used to download a file from an HTTP(S) server.
In order to use HTTPS you will need to compile wget with lwIP support.
Legacy syntax
~~~~~~~~~~~~~
The legacy syntax is supported by the legacy network stack (CONFIG_NET=y)
as well as by the lwIP base network stack (CONFIG_NET_LWIP=y). It supports HTTP
only.
wget command will use HTTP over TCP to download files from an HTTP server.
By default the destination port is 80 and the source port is pseudo-random.
The environment variable *httpdstp* can be used to set the destination port.
On the legacy nework stack the environment variable *httpdstp* can be used to
set the destination port
address
memory address for the data downloaded
hostIPaddr
IP address of the HTTP server, defaults to the value of environment
variable *serverip*
host
IP address (or host name if `CONFIG_CMD_DNS` is enabled) of the HTTP
server, defaults to the value of environment variable *serverip*.
path
path of the file to be downloaded.
Example
-------
New syntax (lwIP only)
~~~~~~~~~~~~~~~~~~~~~~
In addition to the syntax described above, wget accepts URLs if the network
stack is lwIP.
address
memory address for the data downloaded
url
HTTP or HTTPS URL, that is: http[s]://<host>[:<port>]/<path>.
Examples
--------
Example with the legacy network stack
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the example the following steps are executed:
@ -52,13 +77,42 @@ In the example the following steps are executed:
HTTP/1.0 302 Found
Packets received 4, Transfer Successful
Example with lwIP
~~~~~~~~~~~~~~~~~
In the example the following steps are executed:
* setup client network address
* download a file from the HTTPS server
::
=> dhcp
DHCP client bound to address 10.0.2.15 (3 ms)
=> wget https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.4-aarch64-minimal.iso
##########################################################################
##########################################################################
##########################################################################
[...]
1694892032 bytes transferred in 492181 ms (3.3 MiB/s)
Bytes transferred = 1694892032 (65060000 hex)
Configuration
-------------
The command is only available if CONFIG_CMD_WGET=y.
To enable lwIP support set CONFIG_NET_LWIP=y.
TCP Selective Acknowledgments can be enabled via CONFIG_PROT_TCP_SACK=y.
This will improve the download speed.
TCP Selective Acknowledgments in the legacy network stack can be enabled via
CONFIG_PROT_TCP_SACK=y. This will improve the download speed. Selective
Acknowledgments are enabled by default with lwIP.
.. note::
U-Boot currently has no way to verify certificates for HTTPS.
A place to store the root CA certificates is needed, and then MBed TLS would
need to walk the entire chain. Therefore, man-in-the middle attacks are
possible and HTTPS should not be relied upon for payload authentication.
Return value
------------