Merge tag 'v2025.01-rc3' into next
authorTom Rini <trini@konsulko.com>
Mon, 25 Nov 2024 23:23:49 +0000 (17:23 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 25 Nov 2024 23:34:08 +0000 (17:34 -0600)
Prepare v2025.01-rc3

1  2 
Kconfig
cmd/Kconfig
include/net-common.h
net/lwip/wget.c
test/boot/bootm.c

diff --cc Kconfig
Simple merge
diff --cc cmd/Kconfig
Simple merge
Simple merge
diff --cc net/lwip/wget.c
@@@ -34,19 -36,32 +38,44 @@@ struct wget_ctx 
        enum done_state done;
  };
  
- static int parse_url(char *url, char *host, u16 *port, char **path)
 +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;
 +}
 +
+ bool wget_validate_uri(char *uri);
+ int mbedtls_hardware_poll(void *data, unsigned char *output, size_t len,
+                         size_t *olen)
+ {
+       struct udevice *dev;
+       int ret;
+       *olen = 0;
+       ret = uclass_get_device(UCLASS_RNG, 0, &dev);
+       if (ret) {
+               log_err("Failed to get an rng: %d\n", ret);
+               return ret;
+       }
+       ret = dm_rng_read(dev, output, len);
+       if (ret)
+               return ret;
+       *olen = len;
+       return 0;
+ }
+ static int parse_url(char *url, char *host, u16 *port, char **path,
+                    bool *is_https)
  {
        char *p, *pp;
        long lport;
@@@ -231,19 -246,12 +270,23 @@@ static void httpc_result_cb(void *arg, 
        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)
  {
+       char server_name[SERVER_NAME_SIZE];
+ #if defined CONFIG_WGET_HTTPS
+       altcp_allocator_t tls_allocator;
+ #endif
        httpc_connection_t conn;
        httpc_state_t *state;
        struct netif *netif;
                return -1;
  
        memset(&conn, 0, sizeof(conn));
+ #if defined CONFIG_WGET_HTTPS
+       if (is_https) {
+               tls_allocator.alloc = &altcp_tls_alloc;
+               tls_allocator.arg =
+                       altcp_tls_create_config_client(NULL, 0, server_name);
+               if (!tls_allocator.arg) {
+                       log_err("error: Cannot create a TLS connection\n");
+                       net_lwip_remove_netif(netif);
+                       return -1;
+               }
+               conn.altcp_allocator = &tls_allocator;
+       }
+ #endif
        conn.result_fn = httpc_result_cb;
 +      conn.headers_done_fn = httpc_headers_done_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;
@@@ -320,9 -342,8 +381,9 @@@ int do_wget(struct cmd_tbl *cmdtp, int 
        }
  
        if (parse_legacy_arg(url, nurl, sizeof(nurl)))
-           return CMD_RET_FAILURE;
+               return CMD_RET_FAILURE;
  
 +      wget_info = &default_wget_info;
        if (wget_with_dns(dst_addr, nurl))
                return CMD_RET_FAILURE;
  
Simple merge