
13 Sep
2023
13 Sep
'23
8:07 a.m.
On Fri, Sep 08, 2023 at 07:53:09PM +0600, Maxim Uvarov wrote:
+#include <common.h> +#include <command.h> +#include <console.h>
+#include <lwip/dhcp.h> +#include <lwip/prot/dhcp.h> +#include "lwip/timeouts.h"
+#include <net/eth.h> +#include <net/ulwip.h>
+#define DHCP_WAIT_MS 2000
Is this the time we wait for a dhcp reply? If so we should bump it to something higher
+static void dhcp_tmo(void *arg) +{
- struct netif *netif = (struct netif *)arg;
- struct dhcp *dhcp;
- int err = 0;
- dhcp = netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP);
- if (!dhcp)
return;
- switch (dhcp->state) {
- case DHCP_STATE_BOUND:
err += env_set("bootfile", dhcp->boot_file_name);
err += env_set("ipaddr", ip4addr_ntoa(&dhcp->offered_ip_addr));
err += env_set("netmask", ip4addr_ntoa(&dhcp->offered_sn_mask));
err += env_set("serverip", ip4addr_ntoa(&dhcp->server_ip_addr));
if (err)
log_err("error update envs\n");
log_info("DHCP client bound to address %s\n", ip4addr_ntoa(&dhcp->offered_ip_addr));
break;
- default:
return;
- }
+}
+int ulwip_dhcp(void) +{
- struct netif *netif;
- int eth_idx;
- eth_idx = eth_get_dev_index();
- if (eth_idx < 0)
return -EPERM;
- netif = netif_get_by_index(eth_idx + 1);
Why is the +1 needed here?
- if (!netif)
return -ENOENT;
- sys_timeout(DHCP_WAIT_MS, dhcp_tmo, netif);
- return dhcp_start(netif) ? 0 : -EPERM;
+}
2.30.2