From fef3c7369d44a451a59ec03e9cbd30e07785b2d4 Mon Sep 17 00:00:00 2001 From: Me No Dev Date: Mon, 1 Jul 2024 11:20:05 +0300 Subject: [PATCH] feat(net): Enable IPv6 immediately if already connected (#9948) If the interface is already connected, try to enable IPv6 immediately. Otherwise the interface would need to go through disconnect/connect cycle for IPv6 to be enabled. --- libraries/Network/src/NetworkInterface.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/Network/src/NetworkInterface.cpp b/libraries/Network/src/NetworkInterface.cpp index 777fefe9cb0..d7813611b65 100644 --- a/libraries/Network/src/NetworkInterface.cpp +++ b/libraries/Network/src/NetworkInterface.cpp @@ -320,6 +320,15 @@ bool NetworkInterface::hasGlobalIPv6() const { bool NetworkInterface::enableIPv6(bool en) { if (en) { setStatusBits(ESP_NETIF_WANT_IP6_BIT); + if (_esp_netif != NULL && connected()) { + // If we are already connected, try to enable IPv6 immediately + esp_err_t err = esp_netif_create_ip6_linklocal(_esp_netif); + if (err != ESP_OK) { + log_e("Failed to enable IPv6 Link Local on %s: [%d] %s", desc(), err, esp_err_to_name(err)); + } else { + log_v("Enabled IPv6 Link Local on %s", desc()); + } + } } else { clearStatusBits(ESP_NETIF_WANT_IP6_BIT); }