From patchwork Mon Nov 11 21:08:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010014 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=J3K8e1ly; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW6C2XSYz1xwV for ; Tue, 12 Nov 2024 13:47:14 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D26FB8931C; Tue, 12 Nov 2024 03:47:03 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="J3K8e1ly"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4174B89395; Mon, 11 Nov 2024 22:09:13 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6F84589308 for ; Mon, 11 Nov 2024 22:09:10 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-20ca1b6a80aso52894315ad.2 for ; Mon, 11 Nov 2024 13:09:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359349; x=1731964149; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P63Vsgtcvl2TudwahpTpDUIBZwb2CA4sfIhYo+JwR30=; b=J3K8e1ly1ZlWyUzPcBzC7RbVaEHI5dJ+3/FhkvyRtj8nRbbkRA4dXEVTX26ahcSGb7 c3rrUI+KdeNiLN47T5xMZm1p9FY5smsMSa5JyYKvB8osiEwdGYgLyGObQqssibddYQY8 zyK7DlagCoU35mbs8qzoK668IaAU5/Niplo+lYaM5vdDo3jNEI4eHQmaHmo1nZTU5Yyw +OeuGs7wQCc6Fj6iOsK1PYmnW5NMljKyZsapIFG+Ej7dNt8e60xyno0u2agWNKsRpQDI I8fhgmFPTvq5lHdB7NvqiF2Hr3tZR7tcRXfY0zGzIG6i5FWmwjy7TpNX69pX2kFATZHc DbyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359349; x=1731964149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P63Vsgtcvl2TudwahpTpDUIBZwb2CA4sfIhYo+JwR30=; b=nnueqD1lvsR1sD7DtRlMw1cHUlkdOHmg6c3HMwqZBG7zXrr8YuEw/rfBUk8LyyhtmK qOGjKMJonaRn4JnXc73SIesf8eYe0Q+U1B4UHIKgTuCJOi5xhBfZRcLdLa5w2+8Ewxcc Z0sS8x6ISd6QHmEPaggIjA8wU6wrAK7ttBkBIkffylb1per9Hr7hsILlJQcVy39DI+yt Y4FAsNYIi3aXuP9Htyza6CT0cjyHtappxpkbtC5NAJnkYiIymHu5iE6vFseWe0bNGRCE /3B0yeefhisk6GOrDcWpC5Qrr2z/sWOABkJy/LN7dW5T6yKN99WFFp4AsOAng+Bk7axB sI1A== X-Gm-Message-State: AOJu0YzqHvWZk0bOhUxZ+CIAtHEhKkFCmyQXUjKt98zlaOMyQTlmmdEk UrNVgZj5qsP3GFhea9coXKOaQMaAO/WdmcFAcmrQ8UbnqYxmMa7LnXP6CUhh X-Google-Smtp-Source: AGHT+IGjHU95/KK4278ufIczRqxL7wd8F8cGlf34bu48C14VroWwu633OtSAmZ9HS1DOjrYSPpR6Pg== X-Received: by 2002:a17:902:f54a:b0:20c:b485:eda3 with SMTP id d9443c01a7336-21183cbe6a2mr162677885ad.20.1731359348831; Mon, 11 Nov 2024 13:09:08 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:08 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 1/7] net: Kconfig: add CONFIG_WGET symbol Date: Mon, 11 Nov 2024 18:08:55 -0300 Message-ID: <20241111210901.560691-2-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Let net/wget.c and net/lwip/wget.c depend on CONFIG_WGET, and cmd/wget.c depend on CONFIG_CMD_WGET. This way, the wget code can be used regardless of whether the wget command is available. Signed-off-by: Adriano Cordova Reviewed-by: Heinrich Schuchardt --- (no changes since v1) cmd/Kconfig | 5 +---- net/Kconfig | 9 +++++++++ net/Makefile | 2 +- net/lwip/Makefile | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index 636833646f..8f3ad94089 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -2115,11 +2115,8 @@ config CMD_TFTPBOOT config CMD_WGET bool "wget" - depends on CMD_NET default y if SANDBOX - select PROT_TCP if NET - select PROT_TCP_LWIP if NET_LWIP - select PROT_DNS_LWIP if NET_LWIP + select WGET help wget is a simple command to download kernel, or other files, from a http server over TCP. diff --git a/net/Kconfig b/net/Kconfig index 76ab7d91ee..b4bb68dd61 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -244,6 +244,15 @@ config NET_RANDOM_ETHADDR generated. It will be saved to the appropriate environment variable, too. +config WGET + bool "Enable wget" + select PROT_TCP if NET + select PROT_TCP_LWIP if NET_LWIP + select PROT_DNS_LWIP if NET_LWIP + help + Selecting this will enable wget, an interface to send HTTP requests + via the network stack. + config TFTP_BLOCKSIZE int "TFTP block size" default 1468 diff --git a/net/Makefile b/net/Makefile index 209377aeb2..7c917b318c 100644 --- a/net/Makefile +++ b/net/Makefile @@ -29,7 +29,7 @@ obj-$(CONFIG_$(PHASE_)TCP_FUNCTION_FASTBOOT) += fastboot_tcp.o obj-$(CONFIG_CMD_WOL) += wol.o obj-$(CONFIG_PROT_UDP) += udp.o obj-$(CONFIG_PROT_TCP) += tcp.o -obj-$(CONFIG_CMD_WGET) += wget.o +obj-$(CONFIG_WGET) += wget.o # Disable this warning as it is triggered by: # sprintf(buf, index ? "foo%d" : "foo", index) diff --git a/net/lwip/Makefile b/net/lwip/Makefile index f2558f8763..79dd6b3fb5 100644 --- a/net/lwip/Makefile +++ b/net/lwip/Makefile @@ -5,4 +5,4 @@ obj-$(CONFIG_CMD_DHCP) += dhcp.o obj-$(CONFIG_CMD_DNS) += dns.o obj-$(CONFIG_CMD_PING) += ping.o obj-$(CONFIG_CMD_TFTPBOOT) += tftp.o -obj-$(CONFIG_CMD_WGET) += wget.o +obj-$(CONFIG_WGET) += wget.o From patchwork Mon Nov 11 21:08:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010015 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=CbsToLrP; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW6N5q1Fz1xwV for ; Tue, 12 Nov 2024 13:47:24 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4A1EA893B0; Tue, 12 Nov 2024 03:47:04 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CbsToLrP"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 88CBF89393; Mon, 11 Nov 2024 22:09:14 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 48E5589390 for ; Mon, 11 Nov 2024 22:09:12 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-211a4682fcaso7753145ad.2 for ; Mon, 11 Nov 2024 13:09:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359351; x=1731964151; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oe6U34LuFSeoZ4IHnli480pAA45RaY6CL4/SpJ6SA2I=; b=CbsToLrPPIJKLL5wCa4xjqNLnkkqw9BsCw2YFuCdsF5gJRMdMT+smFr9tpv/WtD2IB VRc+CtlSrg2ESXyF7EPGc7L0CVtmX8aFyqq9c5njZp7KgdtoYrFNN/7rsR2ob/cFq/va nMWAZF73OQg+MuhlrSyZFD+Nimt8htVmnbkqphCqrHNZ0TcsPl9hsB7r9kj8hRqcIiOq 19uuihoTticbXKaOJbxTCoD6hzP0+xfVhj66xhk0hmWRX5X96uQ9kJexp7SxTwwmvyZu mxeU7OIt5+wMJdGXHY9RVFz5jp4QJZwx5rvOBflfnHNo/HF/FQcDWQ7SkIXxXm1dKfP/ 6bIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359351; x=1731964151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oe6U34LuFSeoZ4IHnli480pAA45RaY6CL4/SpJ6SA2I=; b=MHi7Ai+s3IhIChiMTJWUiCRc5yPOMALgzpI2x/rmN7UjFRo9mmUmaIkbAuxE1gPM/f XwPLv9xh2USB8vmo0JvIZHPIYyXxEyb+KglCIvFPhGGk9gphqeAQyJGXjPRALwIW6ndu EyFGCP3t9lRDvm7tj6g9K9HYj2uZqQbU/MZe+QsijIzBbTXAHsTpalZullkIi32hL3Za /5VL5FEGexMJAJMbQ0WHPKH4TOANtMD3jsurLH5lWk8YcGcQXUCLF3H9mWYHFrXQF21T vVpIfgSNV1sU0uRwaXxV3pOlBDFIE2kCwoF+lxE1zOot4dI0ovposz2RUhwczD1/hKoI gxpQ== X-Gm-Message-State: AOJu0Ywp4pBwRj4O3D95rw+ew+8zSwvG7nDuAMaD+q+JB11yjLEat2SF toyG0l+KprhhptpCen+ON4kYn/i8znq3QPNmqKtGnkAwiElSKLIiQd/XYyZw X-Google-Smtp-Source: AGHT+IH9RrUpuqvyooJUn8valz22x8XgzAJrJzl1+/m3t1XjP6WnUteqz8uxbxw5zkHcvBlWLqpZJA== X-Received: by 2002:a17:902:f60a:b0:202:26d:146c with SMTP id d9443c01a7336-211834e6b57mr213482425ad.5.1731359350705; Mon, 11 Nov 2024 13:09:10 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:10 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 2/7] net: wget: add definition of struct wget_http_info Date: Mon, 11 Nov 2024 18:08:56 -0300 Message-ID: <20241111210901.560691-3-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean The struct wget_http_info exposes the HTTP information of the last HTTP request issued by wget, and it controls whether the efi bootdevice is set, and whether the buffer size needs to be checked (lwip stack only). This information is otherwise discarded. The wget_http_info struct can be used by HTTP drivers to have more control over HTTP requests. Signed-off-by: Adriano Cordova Reviewed-by: Heinrich Schuchardt --- Changes in v2: - Add Sphinx style documentation - Change status_code in wget_http_info from ulong to u32 include/net-common.h | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/include/net-common.h b/include/net-common.h index fd7c5e7b48..8985b81c2d 100644 --- a/include/net-common.h +++ b/include/net-common.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -506,4 +507,51 @@ int wget_with_dns(ulong dst_addr, char *uri); bool wget_validate_uri(char *uri); //int do_wget(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]); +/** + * enum wget_http_method - http method + */ +enum wget_http_method { + WGET_HTTP_METHOD_GET, + WGET_HTTP_METHOD_POST, + WGET_HTTP_METHOD_PATCH, + WGET_HTTP_METHOD_OPTIONS, + WGET_HTTP_METHOD_CONNECT, + WGET_HTTP_METHOD_HEAD, + WGET_HTTP_METHOD_PUT, + WGET_HTTP_METHOD_DELETE, + WGET_HTTP_METHOD_TRACE, + WGET_HTTP_METHOD_MAX +}; + +/** + * define MAX_HTTP_HEADERS_SIZE - maximum headers buffer size + * + * When receiving http headers, wget fills a buffer with up + * to MAX_HTTP_HEADERS_SIZE bytes of header information. + */ +#define MAX_HTTP_HEADERS_SIZE SZ_64K + +/** + * struct wget_http_info - wget parameters + * @method: HTTP Method. Filled by client. + * @status_code: HTTP status code. Filled by wget. + * @file_size: download size. Filled by wget. + * @buffer_size: size of client-provided buffer. Filled by client. + * @set_bootdev: set boot device with download. Filled by client. + * @check_buffer_size: check download does not exceed buffer size. + * Filled by client. + * @hdr_cont_len: content length according to headers. Filled by wget + * @headers: buffer for headers. Filled by wget. + */ +struct wget_http_info { + enum wget_http_method method; + u32 status_code; + ulong file_size; + ulong buffer_size; + bool set_bootdev; + bool check_buffer_size; + u32 hdr_cont_len; + char *headers; +}; + #endif /* __NET_COMMON_H__ */ From patchwork Mon Nov 11 21:08:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010016 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=N5LO5NNr; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW6Z6n7hz1xwV for ; Tue, 12 Nov 2024 13:47:34 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B61B8893B5; Tue, 12 Nov 2024 03:47:04 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="N5LO5NNr"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 5A5F189390; Mon, 11 Nov 2024 22:09:16 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 26E1289308 for ; Mon, 11 Nov 2024 22:09:14 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-20ca388d242so50032805ad.2 for ; Mon, 11 Nov 2024 13:09:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359353; x=1731964153; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qmGkMdqzulSjuW4hC8wyrnhuag8BeWgA1BOlcFI+SZ8=; b=N5LO5NNrDBQaBiZhNh2WTEfefgcmSzB+KxdJQXQUMiKP3cqw7q38/JDuFhjH4OvGZL 8HOrQ2+aAw+m4uNiFe8WEHHj/+U3keRUYka9Tl03ULDJdPr1BryZxKTrRy7aHujAn+BT 9JUMQgXkV1rBRRI0G0WaK68IVe/fsaw9wO6sfSmwZ12484gTmzOjCutuV/hRZaiNyUGi 6+bKGOjbRgjTFvsCiA6he5vlTgCPSre9SIcWYPzt72lPfZ+cDN4CR6u0Oh0R6d1lchI9 T0liWdTrGbWRsa5mOb80djkmJNk4MizZEpulXqiDvtoZfDwQbhP2woB1XF/AGRxwMrbp Hr4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359353; x=1731964153; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qmGkMdqzulSjuW4hC8wyrnhuag8BeWgA1BOlcFI+SZ8=; b=KoU7KfcU2xrrNFok0TafDJOSAvX5/FEjOGTIw+CFAYh1qkbcJTWRDHDge1k0pB6xFb W+6eyHRgGBaAcsh419e3JX0sx82iYb99kAWWPlDekumWfu9ZWlFAdYrD57CkCRUmuSDX Ouj8mv9RDZ6wUCfacmGfkOwIRZI5ex1cKU2FftcUaFvzQBD0Hsak9kAWPTcPvzkB+Zar H9Qn7oBBCjsZ9PenDCmsmnwt7b6guHxRYgRe0CeXJMYN0pAslx+KesIHCco0MNxHtsGb IODSp5yHxHe4bOCu/ioxaChEpRnHStBxmMnjZLqexLQqgvyl656HwXkxaWkOeUM9Ql3s GSTg== X-Gm-Message-State: AOJu0YwmegLtOu9gb1Q13Zw2EAWHPNWsNupms//C0NlRZm0krXEBPay9 4RP+QyMcboujJnT8xW5kRbvAbkDNj7IxqJiw2X9i2BuMorPek3GOcmLjJkQu X-Google-Smtp-Source: AGHT+IFo5WWtMe6wEsIhOW8r4QmAdVj8mcc0zVFbDuHko4kwOjG71ssmkF74HpWPByZwopyGMwN39g== X-Received: by 2002:a17:902:d50d:b0:20c:9ec9:9a77 with SMTP id d9443c01a7336-21183e11f41mr174391635ad.37.1731359352557; Mon, 11 Nov 2024 13:09:12 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:12 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 3/7] net: wget: Add interface to issue wget_requests using wget_http_info Date: Mon, 11 Nov 2024 18:08:57 -0300 Message-ID: <20241111210901.560691-4-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Declare and define a global default struct wget_http_info and an interface to issue wget requests providing a custom struct wget_http_info. This code is common to legacy wget and lwip wget. The idea is that the command wget should use the default wget_http_info and other internal u-boot code can call wget_request with their own wget_http_info struct. Signed-off-by: Adriano Cordova --- Changes in v2: - Instead of having a single global wget_http_info struct, let the user of wget (e.g. the efi code) provide an instance of wget_http_info to wget with the desired parameters. This lets the user cache the wget paramenters in their wget_http_info struct as desired (e.g. the content length from a HEAD request to a subsequent GET request, see the next efi patch). If none is provided, wget uses default_wget_info. - Add wget_request to trigger a wget request with a custom wget_http_info struct. include/net-common.h | 4 ++++ net/net-common.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/net-common.h b/include/net-common.h index 8985b81c2d..1efb0db9ff 100644 --- a/include/net-common.h +++ b/include/net-common.h @@ -554,4 +554,8 @@ struct wget_http_info { char *headers; }; +extern struct wget_http_info default_wget_info; +extern struct wget_http_info *wget_info; +int wget_request(ulong dst_addr, char *uri, struct wget_http_info *info); + #endif /* __NET_COMMON_H__ */ diff --git a/net/net-common.c b/net/net-common.c index a7f767d5e9..45288fe5f8 100644 --- a/net/net-common.c +++ b/net/net-common.c @@ -1,4 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 +#include void copy_filename(char *dst, const char *src, int size) { @@ -11,3 +12,16 @@ void copy_filename(char *dst, const char *src, int size) *dst++ = *src++; *dst = '\0'; } + +struct wget_http_info default_wget_info = { + .method = WGET_HTTP_METHOD_GET, + .set_bootdev = true, +}; + +struct wget_http_info *wget_info; + +int wget_request(ulong dst_addr, char *uri, struct wget_http_info *info) +{ + wget_info = info ? info : &default_wget_info; + return wget_with_dns(dst_addr, uri); +} From patchwork Mon Nov 11 21:08:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010017 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=YCEdEvQZ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW6m6NPbz1xwV for ; Tue, 12 Nov 2024 13:47:44 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 29846893BA; Tue, 12 Nov 2024 03:47:05 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YCEdEvQZ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 66F7F89308; Mon, 11 Nov 2024 22:09:18 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 1D50289393 for ; Mon, 11 Nov 2024 22:09:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-21145812538so45352095ad.0 for ; Mon, 11 Nov 2024 13:09:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359354; x=1731964154; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lN6tD7WsCiG4Mi8bzkuLQbM7O7AuO+NzG5eK4Z4uCAY=; b=YCEdEvQZocP0oH/zaHAXasqk17kn51eEaVLOeUgiB36Ai3ALPn+kuMsSLx/Y1XStyb C6gtuZ45L+nL1Nkkhf9vi46CWj5q73lQCLpHv/cn4X8UbuLtWgAumNiohdsKW1jW9Bw3 ExgfGHP7pYLAkb732gbBG6NzuJ39Lv7u4TQRHteFLyLLnutQqqco+9GVYNbILWuj2y79 VLWJDv0s+AnQJtXPx9p4TgwU8+CkdHzlN/RJPkEnZy1mSof92vZThsz/3G1L4gQwyr3D BuL9d2aXq+PFswjqkACSRBpLxQCtCmlc9olLHCAo7sF3xsB2qlfACnvv6XwzTxA1E1pb rI2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359354; x=1731964154; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lN6tD7WsCiG4Mi8bzkuLQbM7O7AuO+NzG5eK4Z4uCAY=; b=ZAfqwQkLHx3sl2mG80IypoeaLslZLJwEAFVQezQpfoJw0hlbIP3897Uoi6gn0wVcfj 277PVSCFYbQPt7VR2LwggFTHv2JAxXsuEbGEpWV37Sig0FhDU/93KabgstkA5k2JEA3b fLwlGeyNdvXmd4Ls6m8Ydt7no80HIQmCB5RMIhSoYRRN0Q5HMlBcrEJvyd8Rcj4CSI7K SHxs+LuT0FeTjlvOD4aBC1nGcQ6xyfRxqJ0PrXgi5RTmlrfXg0BMcfB/1TKbJLfDJ12d Z+ZOL/ggoIkRRKhUaRx3AaL6d9m9CkmRLD3dHmrEuArl234mFaRfZ6jRzNlyxSGy8uva U0kQ== X-Gm-Message-State: AOJu0YzVVpWDCkOE3eYklldnw2eOPNAcyYZTxSAFdfy5QYC0RYWhSr2w qPuEYqi/Lw58KploC28IxOgD4xscMl/9JBq1+9bpKRz7YcTHNF9eyzIibKrN X-Google-Smtp-Source: AGHT+IF2sVGqCNUmf65qhShL8ttD/dYF0F1hX9zq7tSwZEj7TbRfA5dShfwxvamSso9QqoCp0t8N9w== X-Received: by 2002:a17:902:e5c6:b0:20b:57f0:b38b with SMTP id d9443c01a7336-21183c97540mr207869395ad.19.1731359354586; Mon, 11 Nov 2024 13:09:14 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:14 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 4/7] net: wget: integrate struct wget_info into legacy wget code Date: Mon, 11 Nov 2024 18:08:58 -0300 Message-ID: <20241111210901.560691-5-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Each wget request now fills the struct wget_info. The efi bootdevice is now set conditionally to the set_bootdevice variable in wget_info, and the same holds for lmb memory check. Signed-off-by: Adriano Cordova --- Changes in v2: - wget_info is now a pointer to a wget_http_info, which defaults to default_wget_http_info. - wget_fill_info now uses the global wget_info instead of receiving it as a parameter. cmd/net.c | 2 ++ net/wget.c | 91 +++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 72 insertions(+), 21 deletions(-) diff --git a/cmd/net.c b/cmd/net.c index c90578e1b9..79525f73a5 100644 --- a/cmd/net.c +++ b/cmd/net.c @@ -196,6 +196,8 @@ U_BOOT_CMD( #if defined(CONFIG_CMD_WGET) static int do_wget(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { + wget_info = &default_wget_info; + return netboot_common(WGET, cmdtp, argc, argv); } diff --git a/net/wget.c b/net/wget.c index 635f82efbb..21f1875866 100644 --- a/net/wget.c +++ b/net/wget.c @@ -22,10 +22,10 @@ DECLARE_GLOBAL_DATA_PTR; /* The default, change with environment variable 'httpdstp' */ #define SERVER_PORT 80 -static const char bootfile1[] = "GET "; +static const char bootfileGET[] = "GET "; +static const char bootfileHEAD[] = "HEAD "; static const char bootfile3[] = " HTTP/1.0\r\n\r\n"; static const char http_eom[] = "\r\n\r\n"; -static const char http_ok[] = "200"; static const char content_len[] = "Content-Length"; static const char linefeed[] = "\r\n"; static struct in_addr web_server_ip; @@ -77,7 +77,7 @@ static inline int store_block(uchar *src, unsigned int offset, unsigned int len) ulong newsize = offset + len; uchar *ptr; - if (CONFIG_IS_ENABLED(LMB)) { + if (CONFIG_IS_ENABLED(LMB) && wget_info->set_bootdev) { if (store_addr < image_load_addr || lmb_read_check(store_addr, len)) { printf("\nwget error: "); @@ -132,8 +132,17 @@ static void wget_send_stored(void) IP_TCP_HDR_SIZE + TCP_TSOPT_SIZE + 2; offset = ptr; - memcpy(offset, &bootfile1, strlen(bootfile1)); - offset += strlen(bootfile1); + switch (wget_info->method) { + case WGET_HTTP_METHOD_HEAD: + memcpy(offset, &bootfileHEAD, strlen(bootfileHEAD)); + offset += strlen(bootfileHEAD); + break; + case WGET_HTTP_METHOD_GET: + default: + memcpy(offset, &bootfileGET, strlen(bootfileGET)); + offset += strlen(bootfileGET); + break; + } memcpy(offset, image_url, strlen(image_url)); offset += strlen(image_url); @@ -193,6 +202,47 @@ static void wget_timeout_handler(void) #define PKT_QUEUE_OFFSET 0x20000 #define PKT_QUEUE_PACKET_SIZE 0x800 +static void wget_fill_info(const uchar *pkt, int hlen) +{ + const char *first_space; + const char *second_space; + char *pos, *end; + + if (wget_info->headers && hlen < MAX_HTTP_HEADERS_SIZE) + strncpy(wget_info->headers, pkt, hlen); + + //Get status code + first_space = strchr(pkt, ' '); + if (!first_space) { + wget_info->status_code = -1; + return; + } + + second_space = strchr(first_space + 1, ' '); + if (!second_space) { + wget_info->status_code = -1; + return; + } + + wget_info->status_code = (u32)simple_strtoul(first_space + 1, &end, 10); + + if (second_space != end) + wget_info->status_code = -1; + + pos = strstr((char *)pkt, content_len); + + if (pos) { + pos += sizeof(content_len) + 1; + while (*pos == ' ') + pos++; + content_length = simple_strtoul(pos, &end, 10); + debug_cond(DEBUG_WGET, + "wget: Connected Len %lu\n", + content_length); + wget_info->hdr_cont_len = content_length; + } +} + static void wget_connected(uchar *pkt, unsigned int tcp_seq_num, u8 action, unsigned int tcp_ack_num, unsigned int len) { @@ -241,7 +291,11 @@ static void wget_connected(uchar *pkt, unsigned int tcp_seq_num, initial_data_seq_num = tcp_seq_num + hlen; next_data_seq_num = tcp_seq_num + len; - if (strstr((char *)pkt, http_ok) == 0) { + wget_fill_info(pkt, hlen); + debug_cond(DEBUG_WGET, + "wget: HTTP Status Code %d\n", wget_info->status_code); + + if (wget_info->status_code != 200) { debug_cond(DEBUG_WGET, "wget: Connected Bad Xfer\n"); wget_loop_state = NETLOOP_FAIL; @@ -251,17 +305,6 @@ static void wget_connected(uchar *pkt, unsigned int tcp_seq_num, "wget: Connected Pkt %p hlen %x\n", pkt, hlen); - pos = strstr((char *)pkt, content_len); - if (!pos) { - content_length = -1; - } else { - pos += sizeof(content_len) + 2; - strict_strtoul(pos, 10, &content_length); - debug_cond(DEBUG_WGET, - "wget: Connected Len %lu\n", - content_length); - } - net_boot_file_size = 0; if (len > hlen) { @@ -397,10 +440,13 @@ static void wget_handler(uchar *pkt, u16 dport, case WGET_TRANSFERRED: printf("Packets received %d, Transfer Successful\n", packets); net_set_state(wget_loop_state); - efi_set_bootdev("Net", "", image_url, - map_sysmem(image_load_addr, 0), - net_boot_file_size); - env_set_hex("filesize", net_boot_file_size); + wget_info->file_size = net_boot_file_size; + if (wget_info->method == WGET_HTTP_METHOD_GET && wget_info->set_bootdev) { + efi_set_bootdev("Net", "", image_url, + map_sysmem(image_load_addr, 0), + net_boot_file_size); + env_set_hex("filesize", net_boot_file_size); + } break; } } @@ -425,6 +471,9 @@ static unsigned int random_port(void) void wget_start(void) { + if (!wget_info) + wget_info = &default_wget_info; + image_url = strchr(net_boot_file_name, ':'); if (image_url > 0) { web_server_ip = string_to_ip(net_boot_file_name); From patchwork Mon Nov 11 21:08:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010018 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=UgJWEwHb; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW6y0tJMz1xwV for ; Tue, 12 Nov 2024 13:47:54 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 84EDF893BE; Tue, 12 Nov 2024 03:47:05 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="UgJWEwHb"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 136BF89393; Mon, 11 Nov 2024 22:09:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D9CFB8931D for ; Mon, 11 Nov 2024 22:09:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-20c6f492d2dso54403715ad.0 for ; Mon, 11 Nov 2024 13:09:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359356; x=1731964156; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZtQDfjVZKJaazOG3mwifxz6rNtT2yBhIiysJWigZBAE=; b=UgJWEwHbPEKAjsy4gIN5IvLfqIE2nJ6lffPgP/kd4cflRtnMddFYe6a0sQu9FvAhig x6UAuTK2Dtgxcwvzd88C8iQ89p2rNO+8rwIHRz9uy6oJ0KAQJ+zCwCYngJmAV90vtNHP WmZsHFLKIq8fUBjYPalmGuGvqE0qhm8e3nfN7bQ7UA98sjA+5FHACzdF8lhMlJNeEJ1v upjhu57p7ow+2ocCHvXx885kd+/pppzsZd78o/LDgEeUz2GXwV/SpGxViIwAmfJlR6Je nsgnHEbg5e9m/Vmya29Pd1l0LOg9inC6VqDxKvAHqWQxNbr6VkdZxw31FAv9mC3LKvHO DpVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359356; x=1731964156; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZtQDfjVZKJaazOG3mwifxz6rNtT2yBhIiysJWigZBAE=; b=tSiJSUBWVMmnjBqG00wVlq8NJ1j1MQo+6QdvEpK0EuhylMcWHEAYCB2txq8pIWd02c 8itEjWlY7hMxp8cVyXyUxTZQGMOr+EurIIQhik4g3gslPekubsaYHrqLE4/qkovwSixm uSeonU6hl+K4s4Ahtm5PIpL/Lqm9X2DIxDrArwYV1f5K873Vio7S93vIdzUxrr0kGRs6 qQvQoMyYk3iQXIcMB5FKa+k0oJDD3lMxlo+cyANG8aHgc/r7QBEIN7K52eXWd9/j7U89 gI3VZduze7v8ZdtdbUpTCkDHnXOQl9CZ8sfcjdAxz+kGSj9zpKOXNsgnj7KMEqAVMSDj 1ilg== X-Gm-Message-State: AOJu0YxL8Gyd1Pv8ujFD/bV10XK19SQoHj31CmKJ4nIWshXrdaw72Srk cGCyH+21I2CJL5alYiBUSFTQpJef2uu+vAR1v0YmhjFmkR3RNYzin0vkCZ5K X-Google-Smtp-Source: AGHT+IG2M2wBa0MZEp/Si6BnX7xuh7PpqMm2oprWGzlcgWKFO+DGUmriyAha4N7IBf7UbpaP+b955g== X-Received: by 2002:a17:903:98c:b0:20c:9da6:65b0 with SMTP id d9443c01a7336-2118358c055mr214977245ad.35.1731359356416; Mon, 11 Nov 2024 13:09:16 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:16 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 5/7] net: wget: make wget_with_dns return value compatible with its lwip version Date: Mon, 11 Nov 2024 18:08:59 -0300 Message-ID: <20241111210901.560691-6-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean There are two wget_with_dns functions, one in the legacy network stack and one in lwip, but the return values are not compatible. This commit modifies the legacy version of wget_with_dns so that the return values are compatible: 0 on success, otherwise a negative error. This way wget_with_dns can be called in a network stack agnostic way. Signed-off-by: Adriano Cordova --- Changes in v2: - Remove wget_with_dns from include/net-lwip.h, as it already is in include/net-common.h - Adjust return value in the documentation of wget_with_dns. include/net-common.h | 2 +- include/net-lwip.h | 9 --------- net/wget.c | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/include/net-common.h b/include/net-common.h index 1efb0db9ff..3cd0f34374 100644 --- a/include/net-common.h +++ b/include/net-common.h @@ -495,7 +495,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]); * * @dst_addr: destination address to download the file * @uri: uri string of target file of wget - * Return: downloaded file size, negative if failed + * Return: zero on success, negative if failed */ int wget_with_dns(ulong dst_addr, char *uri); /** diff --git a/include/net-lwip.h b/include/net-lwip.h index 1c3583f82a..4d7f9387d1 100644 --- a/include/net-lwip.h +++ b/include/net-lwip.h @@ -16,15 +16,6 @@ void net_lwip_remove_netif(struct netif *netif); struct netif *net_lwip_get_netif(void); int net_lwip_rx(struct udevice *udev, struct netif *netif); -/** - * wget_with_dns() - runs dns host IP address resulution before wget - * - * @dst_addr: destination address to download the file - * @uri: uri string of target file of wget - * Return: downloaded file size, negative if failed - */ - -int wget_with_dns(ulong dst_addr, char *uri); /** * wget_validate_uri() - varidate the uri * diff --git a/net/wget.c b/net/wget.c index 21f1875866..3bc2522cde 100644 --- a/net/wget.c +++ b/net/wget.c @@ -579,7 +579,7 @@ int wget_with_dns(ulong dst_addr, char *uri) out: free(str_copy); - return ret; + return ret < 0 ? ret : 0; } #endif From patchwork Mon Nov 11 21:09:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010019 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=TOzI9HzF; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW770FcPz1xwV for ; Tue, 12 Nov 2024 13:48:03 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EAADC893C6; Tue, 12 Nov 2024 03:47:05 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="TOzI9HzF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0108889395; Mon, 11 Nov 2024 22:09:22 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CE55E89390 for ; Mon, 11 Nov 2024 22:09:19 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-20c77459558so44941195ad.0 for ; Mon, 11 Nov 2024 13:09:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359358; x=1731964158; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UBa2GkXLuIYJ65Jon+bpKA9Vxhlr8kT8576a43XST8c=; b=TOzI9HzFuEz9jtRG1mERFUeiJA1IyRhEJAsdEJCNPUTCXLrrrPjDVtYDC/xCRBuwJ8 CY1utoJk+RsfIrwaXJgIEzuCdXrzMIvEj9UDtI40xyQ/rB89qm86Hy+3I8VH7IWbwk2l HUAcC4eLPBAb/+dRTaYPrxAvELEu5zj2PS1/0cRK77O/2sCfxpdmI6mQ8Vw2F0sFKVXw wgKoPUbI7qNo/SehNWhrTzzXjhvhTJN6ywvdQYQm5Mo5e1oGTrL4ktFMhLdeCI7mMFc5 TJRruemWiw6r4v40Wg77Mit5ZrFMDaADoqyt7i+Vf2krEWjzuNOw/SyCA+92zoGkP77J AttA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359358; x=1731964158; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UBa2GkXLuIYJ65Jon+bpKA9Vxhlr8kT8576a43XST8c=; b=NmztYYGBf8SYN2UcGEBj67GTCcU9qeVSqONAWaxHEGQ9n6ptLmRxiZ1RqtUu6cYsTd apguBKtJfXeZDDSqbF3WkKugHdNOM57p81orhFifJyRqiew8xM6H4LJPiLtKQ9VjZqrm 6IuwA5szr0vZxMwCOxxzC3/ohtDThSJjoxmHeLg+xAEBsWqLX5OUSPsE37WgUucEQniT lP82K10KyriL6JmwMZZFLJQ/mdt8rvsjzmH+crB28xy/K8ooqNUGONmcyUzmiTImlv+4 HkiuhlN6PkKGmaa1SGNbR+bpMOAgZmiTXbK0sJVPYy2+zG14/xSii2u3DH1sOfQMvDJB JYAA== X-Gm-Message-State: AOJu0Yy6pXGcbHBA/tbV9Gn0MXRAGDXsVYsAK1JACyodw4QtFOCv6LHb 0nkkMs0rDyNPYNOfSYqHkuW6AGhtA9VNULKqAGKcNUbMkbjJ0TVAXaqpAl87 X-Google-Smtp-Source: AGHT+IFwRmTUPlVOCR4RiCrLVEJE5bzqWn48hvZZe1eSCEOlvYlGF2BitSs9NmByFeMMmKG85MlWMQ== X-Received: by 2002:a17:902:e951:b0:20c:5bdc:c228 with SMTP id d9443c01a7336-211ab92969cmr2198355ad.13.1731359358355; Mon, 11 Nov 2024 13:09:18 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:18 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 6/7] net/lwip: wget: put server_name and port into wget_ctx Date: Mon, 11 Nov 2024 18:09:00 -0300 Message-ID: <20241111210901.560691-7-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Currently server_name and port are local variables in wget_loop. This commit puts them inside ctx, so that they are accessible from the http callbacks. Signed-off-by: Adriano Cordova --- (no changes since v1) net/lwip/wget.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/lwip/wget.c b/net/lwip/wget.c index b495ebd1aa..4add520045 100644 --- a/net/lwip/wget.c +++ b/net/lwip/wget.c @@ -23,6 +23,8 @@ enum done_state { }; struct wget_ctx { + char server_name[SERVER_NAME_SIZE]; + u16 port; char *path; ulong daddr; ulong saved_daddr; @@ -209,13 +211,11 @@ static void httpc_result_cb(void *arg, httpc_result_t httpc_result, static int wget_loop(struct udevice *udev, ulong dst_addr, char *uri) { - char server_name[SERVER_NAME_SIZE]; httpc_connection_t conn; httpc_state_t *state; struct netif *netif; struct wget_ctx ctx; char *path; - u16 port; ctx.daddr = dst_addr; ctx.saved_daddr = dst_addr; @@ -224,7 +224,7 @@ static int wget_loop(struct udevice *udev, ulong dst_addr, char *uri) ctx.prevsize = 0; ctx.start_time = 0; - if (parse_url(uri, server_name, &port, &path)) + if (parse_url(uri, ctx.server_name, &ctx.port, &path)) return CMD_RET_USAGE; netif = net_lwip_new_netif(udev); @@ -234,7 +234,7 @@ static int wget_loop(struct udevice *udev, ulong dst_addr, char *uri) memset(&conn, 0, sizeof(conn)); conn.result_fn = httpc_result_cb; ctx.path = path; - if (httpc_get_file_dns(server_name, port, path, &conn, httpc_recv_cb, + if (httpc_get_file_dns(ctx.server_name, ctx.port, path, &conn, httpc_recv_cb, &ctx, &state)) { net_lwip_remove_netif(netif); return CMD_RET_FAILURE; From patchwork Mon Nov 11 21:09:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adriano Cordova X-Patchwork-Id: 2010020 X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=LMhYdXea; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XnW7J13Lzz1xwV for ; Tue, 12 Nov 2024 13:48:12 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 54BD98936C; Tue, 12 Nov 2024 03:47:06 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LMhYdXea"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 053E389390; Mon, 11 Nov 2024 22:09:24 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C373489308 for ; Mon, 11 Nov 2024 22:09:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=adrianox@gmail.com Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-20ca1b6a80aso52896325ad.2 for ; Mon, 11 Nov 2024 13:09:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731359360; x=1731964160; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kEWp96VSHpRvpYgoXgS9nEZCB6a4+/TUWxB68SOPSzQ=; b=LMhYdXeafkyredmYmQoAeSxAarLcA5ekhggsk+2R62PeF1iwyBFjTZPlO8w65WTaLR Fv1s53lYa02Vu1cfoNJ2ZhqZCNPbpMtnEOdTwArfQyclJ5j+g2uxZV0qebcu86E0uwW+ zKd+pwDgizJjKmCfeIDGmtyCFKrKuH3xgcOPZvZ8luSbompZ3kAPESrHzT46fgjgTANI Nnv4OdSA9B9zLYH7WPwIbB9aGCYcniTNyYxaRgOPquo8jrpW6vxka2kUxGx2jrTudOFC atqr/OgQsX/O7MlYpDXHaFFfVHlt85fD+36zunLaeV7a7cARMQO55wjm7XqyL2dg4OSU H1Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731359360; x=1731964160; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kEWp96VSHpRvpYgoXgS9nEZCB6a4+/TUWxB68SOPSzQ=; b=H/11O6qem5XUidmiFZNHHNQgt2gJBKik0/ni35E038lQisvUmg5v33tlISp1XgTnht t0dpvZSqUz0J0rwUrSDrF0caGqMAnOX3qgMSO274FBpZkriwjqV9aPXu6caYqUoZHEcI /eH5kL0hFVoQK0bnyeVZJUSbPrDrJnsnIJMErCXj/BZ5Xc0uCWmaeCLKEaxZkoNso/JQ 0Meiwm1VnySUgV63U43Vns+aZqiH8Sux+XgvVuDpLbfSWwefkeDDMy4ym0yX/DWnfpNM 2d54ILt1Gk+bsVNowJCZqLGCJ6vhDFfJCa7ABGLSFJ4THsWg84rSMXyhcMqGSa6iLewI oPVw== X-Gm-Message-State: AOJu0Ywwkdg1kWNBX0JB6M7aj0miDEBKmeyZMjhopobctXAo9Z0TIY+H H/HHCxCU8E5YEBY3wUp4l+Dy/7CnclqZ9b9ue+EABztMWzrGapjqsmde09TZ X-Google-Smtp-Source: AGHT+IGlVieiAHmMpGVyyQEayb8VHovO10Lyt8BEC+g2fVHCMn+lNc51S91HXcudF3RG7ocJwgCZIA== X-Received: by 2002:a17:902:cecf:b0:20c:93c2:9175 with SMTP id d9443c01a7336-21183d191bbmr164773385ad.30.1731359360215; Mon, 11 Nov 2024 13:09:20 -0800 (PST) Received: from adriano.. ([191.119.55.5]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177dc9068sm79807415ad.2.2024.11.11.13.09.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Nov 2024 13:09:19 -0800 (PST) From: Adriano Cordova To: u-boot@lists.denx.de Cc: joe.hershberger@ni.com, rfried.dev@gmail.com, jerome.forissier@linaro.org, xypron.glpk@gmx.de, ilias.apalodimas@linaro.org, Adriano Cordova Subject: [PATCH v2 7/7] net/lwip: wget: integrate struct wget_info into wget code Date: Mon, 11 Nov 2024 18:09:01 -0300 Message-ID: <20241111210901.560691-8-adrianox@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241111210901.560691-1-adrianox@gmail.com> References: <20241111210901.560691-1-adrianox@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2024 03:47:02 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Each wget request now fills the struct wget_info. Also, the efi bootdevice is now set conditionally to the set_bootdevice variable in wget_info and a buffer size check is performed if check_buffer_size is set. Signed-off-by: Adriano Cordova --- Changes in v2: - wget_info is now a pointer - wget_lwip_fill_info now directly uses wget_info instead of receiving a pointer to it as an argument. - Set default_wget_info as the default wget_http_info. net/lwip/wget.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/net/lwip/wget.c b/net/lwip/wget.c index 4add520045..53c3b169e0 100644 --- a/net/lwip/wget.c +++ b/net/lwip/wget.c @@ -34,6 +34,18 @@ struct wget_ctx { enum done_state done; }; +static void wget_lwip_fill_info(struct pbuf *hdr, u16_t hdr_len, u32_t hdr_cont_len) +{ + if (wget_info->headers && hdr_len < MAX_HTTP_HEADERS_SIZE) + pbuf_copy_partial(hdr, (void *)wget_info->headers, hdr_len, 0); + wget_info->hdr_cont_len = (u32)hdr_cont_len; +} + +static void wget_lwip_set_file_size(u32_t rx_content_len) +{ + wget_info->file_size = (ulong)rx_content_len; +} + static int parse_url(char *url, char *host, u16 *port, char **path) { char *p, *pp; @@ -178,6 +190,13 @@ static void httpc_result_cb(void *arg, httpc_result_t httpc_result, struct wget_ctx *ctx = arg; ulong elapsed; + wget_info->status_code = (u32)srv_res; + + if (err == ERR_BUF) { + ctx->done = FAILURE; + return; + } + if (httpc_result != HTTPC_RESULT_OK) { log_err("\nHTTP client error %d\n", httpc_result); ctx->done = FAILURE; @@ -197,8 +216,11 @@ static void httpc_result_cb(void *arg, httpc_result_t httpc_result, printf("%u bytes transferred in %lu ms (", rx_content_len, elapsed); print_size(rx_content_len / elapsed * 1000, "/s)\n"); printf("Bytes transferred = %lu (%lx hex)\n", ctx->size, ctx->size); - efi_set_bootdev("Net", "", ctx->path, map_sysmem(ctx->saved_daddr, 0), - rx_content_len); + if (wget_info->set_bootdev) { + efi_set_bootdev("Net", "", ctx->path, map_sysmem(ctx->saved_daddr, 0), + rx_content_len); + } + wget_lwip_set_file_size(rx_content_len); if (env_set_hex("filesize", rx_content_len) || env_set_hex("fileaddr", ctx->saved_daddr)) { log_err("Could not set filesize or fileaddr\n"); @@ -209,6 +231,17 @@ static void httpc_result_cb(void *arg, httpc_result_t httpc_result, ctx->done = SUCCESS; } +static err_t httpc_headers_done_cb(httpc_state_t *connection, void *arg, struct pbuf *hdr, + u16_t hdr_len, u32_t content_len) +{ + wget_lwip_fill_info(hdr, hdr_len, content_len); + + if (wget_info->check_buffer_size && (ulong)content_len > wget_info->buffer_size) + return ERR_BUF; + + return ERR_OK; +} + static int wget_loop(struct udevice *udev, ulong dst_addr, char *uri) { httpc_connection_t conn; @@ -233,6 +266,7 @@ static int wget_loop(struct udevice *udev, ulong dst_addr, char *uri) memset(&conn, 0, sizeof(conn)); conn.result_fn = httpc_result_cb; + conn.headers_done_fn = httpc_headers_done_cb; ctx.path = path; if (httpc_get_file_dns(ctx.server_name, ctx.port, path, &conn, httpc_recv_cb, &ctx, &state)) { @@ -259,6 +293,9 @@ int wget_with_dns(ulong dst_addr, char *uri) { eth_set_current(); + if (!wget_info) + wget_info = &default_wget_info; + return wget_loop(eth_get_dev(), dst_addr, uri); } @@ -285,6 +322,7 @@ int do_wget(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) if (parse_legacy_arg(url, nurl, sizeof(nurl))) return CMD_RET_FAILURE; + wget_info = &default_wget_info; if (wget_with_dns(dst_addr, nurl)) return CMD_RET_FAILURE;