From 99b0a765a8da94e9d17367911bbc37942dd4df1a Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 13 May 2024 14:29:14 +0200 Subject: [PATCH] fix(esp_netif): Fix PPP server to negotiate its own address is configured Closes https://github.com/espressif/esp-protocols/issues/565 --- components/esp_netif/lwip/esp_netif_lwip_ppp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/esp_netif/lwip/esp_netif_lwip_ppp.c b/components/esp_netif/lwip/esp_netif_lwip_ppp.c index db5e9f44f5..1c5e91d3f6 100644 --- a/components/esp_netif/lwip/esp_netif_lwip_ppp.c +++ b/components/esp_netif/lwip/esp_netif_lwip_ppp.c @@ -165,7 +165,7 @@ static void on_ppp_notify_phase(ppp_pcb *pcb, u8_t phase, void *ctx) #endif // PPP_NOTIFY_PHASE /** - * @brief PPP low level output callback used to transmit data using standard esp-netif interafce + * @brief PPP low level output callback used to transmit data using standard esp-netif interface * * @param pcb PPP control block * @param data Buffer to write to serial port @@ -255,6 +255,10 @@ esp_err_t esp_netif_start_ppp(esp_netif_t *esp_netif) // Set our preferred address, and accept the remote ppp_ctx->ppp->ipcp_wantoptions.ouraddr = ppp_ctx->ppp_our_ip4_addr.addr; ppp_ctx->ppp->ipcp_wantoptions.accept_remote = 1; + ppp_ctx->ppp->ask_for_local = 1; /* `ask_for_local` option in the lwip's pcb is `0` by default and causes + * the initial negotiation IPCP request to reset our own address to '0.0.0.0'. + * https://github.com/lwip-tcpip/lwip/blob/1cc1536e/src/netif/ppp/ipcp.c#L728-L729 + */ } if (ppp_ctx->ppp_their_ip4_addr.addr != IPADDR_ANY) { // Set their preferred address, and accept the local