summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr Service <qctecmdr@qualcomm.com>2017-10-26 20:39:12 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-26 20:39:11 -0700
commit1c8d3f9edf0c5f7aafc652335d8e01f7358b7fc2 (patch)
tree58d09d0e5d537b31a90a951c711f8cb09b93094a
parent32eea0433bff2e58040d02861bdaa16046b73d51 (diff)
parent861bfff49fe3d1bab4804ac138e350b537ffca7d (diff)
downloadipacfg-mgr-1c8d3f9edf0c5f7aafc652335d8e01f7358b7fc2.tar.gz
Merge "IPACM: fix downstream iface list add/del issue"
-rw-r--r--ipacm/inc/IPACM_OffloadManager.h2
-rw-r--r--ipacm/src/IPACM_OffloadManager.cpp18
2 files changed, 11 insertions, 9 deletions
diff --git a/ipacm/inc/IPACM_OffloadManager.h b/ipacm/inc/IPACM_OffloadManager.h
index 72070dd..bade0aa 100644
--- a/ipacm/inc/IPACM_OffloadManager.h
+++ b/ipacm/inc/IPACM_OffloadManager.h
@@ -96,7 +96,7 @@ public:
private:
- std::list<const char *> valid_ifaces;
+ std::list<std::string> valid_ifaces;
bool upstream_v4_up;
diff --git a/ipacm/src/IPACM_OffloadManager.cpp b/ipacm/src/IPACM_OffloadManager.cpp
index 32606b9..616cf70 100644
--- a/ipacm/src/IPACM_OffloadManager.cpp
+++ b/ipacm/src/IPACM_OffloadManager.cpp
@@ -213,6 +213,14 @@ RET IPACM_OffloadManager::addDownstream(const char * downstream_name, const Pref
return FAIL_INPUT_CHECK;
}
+ /* Iface is valid, add to list if not present */
+ if (std::find(valid_ifaces.begin(), valid_ifaces.end(), std::string(downstream_name)) == valid_ifaces.end())
+ {
+ /* Iface is new, add it to the list */
+ valid_ifaces.push_back(downstream_name);
+ IPACMDBG_H("add iface(%s) to list\n", downstream_name);
+ }
+
/* check if downstream netdev driver finished its configuration on IPA-HW */
if (IPACM_Iface::ipacmcfg->CheckNatIfaces(downstream_name))
{
@@ -263,13 +271,6 @@ RET IPACM_OffloadManager::addDownstream(const char * downstream_name, const Pref
return SUCCESS;
}
- /* Iface is valid, add to list if not present */
- if (std::find(valid_ifaces.begin(), valid_ifaces.end(), downstream_name) == valid_ifaces.end())
- {
- /* Iface is new, add it to the list */
- valid_ifaces.push_back(downstream_name);
- }
-
evt_data = (ipacm_event_ipahal_stream*)malloc(sizeof(ipacm_event_ipahal_stream));
if(evt_data == NULL)
{
@@ -303,7 +304,7 @@ RET IPACM_OffloadManager::removeDownstream(const char * downstream_name, const P
IPACMERR("iface length is 0.\n");
return FAIL_HARDWARE;
}
- if (std::find(valid_ifaces.begin(), valid_ifaces.end(), downstream_name) == valid_ifaces.end())
+ if (std::find(valid_ifaces.begin(), valid_ifaces.end(), std::string(downstream_name)) == valid_ifaces.end())
{
IPACMERR("iface is not present in list.\n");
return FAIL_HARDWARE;
@@ -508,6 +509,7 @@ RET IPACM_OffloadManager::stopAllOffload()
upstream_v6_up = false;
memset(event_cache, 0, MAX_EVENT_CACHE*sizeof(framework_event_cache));
latest_cache_index = 0;
+ valid_ifaces.clear();
return result;
}