64 lines
2.4 KiB
Diff
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
|
|
|