Files
openwrt-kernel5.4-nss-qsdk10.0/package/qca/qca-nss-ecm/patches/404-IPv6-solicitation-fix-with-zero-gateway-address.patch
2025-06-24 13:14:22 +02:00

64 lines
2.4 KiB
Diff

From 5b51ae2f1eca61c6f68e40a05333da5a362ff327 Mon Sep 17 00:00:00 2001
From: Murat Sezgin <msezgin@codeaurora.org>
Date: Mon, 13 Apr 2020 09:01:48 -0700
Subject: [qca-nss-ecm] IPv6 solicitation fix with zero gateway address
The ECM function can find a zero gateway address for
a host IP address. In this case, we need to use the
host IP address while sending the solicitation request.
Signed-off-by: Murat Sezgin <msezgin@codeaurora.org>
Change-Id: I1979834088ddfe1843566f51f64348f79e2df0fc
---
frontends/nss/ecm_nss_ipv6.c | 11 ++++++++++-
frontends/sfe/ecm_sfe_ipv6.c | 11 ++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c
index a05781b..9eb591c 100644
--- a/frontends/nss/ecm_nss_ipv6.c
+++ b/frontends/nss/ecm_nss_ipv6.c
@@ -516,7 +516,16 @@ struct ecm_db_node_instance *ecm_nss_ipv6_node_establish_and_ref(struct ecm_fron
return NULL;
}
- DEBUG_TRACE("Have a gw address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(gw_addr));
+ /*
+ * The found gateway address can be all zeros,
+ * so in this case use the host address.
+ */
+ if (ECM_IP_ADDR_IS_NULL(gw_addr)) {
+ DEBUG_TRACE("GW address is found as zeros, so use host IP\n");
+ ECM_IP_ADDR_COPY(gw_addr, addr);
+ } else {
+ DEBUG_TRACE("Have a gw address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(gw_addr));
+ }
if (ecm_interface_mac_addr_get_no_route(dev, gw_addr, node_addr)) {
DEBUG_TRACE("Found the mac address for gateway\n");
diff --git a/frontends/sfe/ecm_sfe_ipv6.c b/frontends/sfe/ecm_sfe_ipv6.c
index 51a9ccb..e609df7 100644
--- a/frontends/sfe/ecm_sfe_ipv6.c
+++ b/frontends/sfe/ecm_sfe_ipv6.c
@@ -245,7 +245,16 @@ struct ecm_db_node_instance *ecm_sfe_ipv6_node_establish_and_ref(struct ecm_fron
return NULL;
}
- DEBUG_TRACE("Have a gw address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(gw_addr));
+ /*
+ * The found gateway address can be all zeros,
+ * so in this case use the host address.
+ */
+ if (ECM_IP_ADDR_IS_NULL(gw_addr)) {
+ DEBUG_TRACE("GW address is found as zeros, so use host IP\n");
+ ECM_IP_ADDR_COPY(gw_addr, addr);
+ } else {
+ DEBUG_TRACE("Have a gw address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(gw_addr));
+ }
if (ecm_interface_mac_addr_get_no_route(dev, gw_addr, node_addr)) {
DEBUG_TRACE("Found the mac address for gateway\n");
--
cgit v1.1