From b73251d6defcb7a92662de405073dfb6db099143 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 28 Jun 2024 11:30:02 +0300 Subject: [PATCH] feat(net): Enable IPv6 immediately if already connected 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); }