diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-16 07:21:32 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-16 07:21:32 +0000 |
commit | c6b4664ae094b5927f3c89465848dc4dd3b6ccbd (patch) | |
tree | cacb79087cb949b56478519224737573dbc4ad4d | |
parent | 923f17dd3cacbed3deb293c1a1831d4f4e1b0813 (diff) | |
parent | f7f6aa6be49a5359bc3393fc574d8825d3f420a9 (diff) | |
download | ipacfg-mgr-oreo-mr1-wear-release.tar.gz |
Snap for 4396806 from f7f6aa6be49a5359bc3393fc574d8825d3f420a9 to oc-mr1-releaseandroid-wear-8.1.0_r1android-vts-8.1_r9android-vts-8.1_r8android-vts-8.1_r7android-vts-8.1_r6android-vts-8.1_r5android-vts-8.1_r4android-vts-8.1_r3android-vts-8.1_r14android-vts-8.1_r13android-vts-8.1_r12android-vts-8.1_r11android-vts-8.1_r10android-security-8.1.0_r93android-security-8.1.0_r92android-security-8.1.0_r91android-security-8.1.0_r90android-security-8.1.0_r89android-security-8.1.0_r88android-security-8.1.0_r87android-security-8.1.0_r86android-security-8.1.0_r85android-security-8.1.0_r84android-security-8.1.0_r83android-security-8.1.0_r82android-cts-8.1_r9android-cts-8.1_r8android-cts-8.1_r7android-cts-8.1_r6android-cts-8.1_r5android-cts-8.1_r4android-cts-8.1_r3android-cts-8.1_r25android-cts-8.1_r24android-cts-8.1_r23android-cts-8.1_r22android-cts-8.1_r21android-cts-8.1_r20android-cts-8.1_r2android-cts-8.1_r19android-cts-8.1_r18android-cts-8.1_r17android-cts-8.1_r16android-cts-8.1_r15android-cts-8.1_r14android-cts-8.1_r13android-cts-8.1_r12android-cts-8.1_r11android-cts-8.1_r10android-cts-8.1_r1android-8.1.0_r81android-8.1.0_r80android-8.1.0_r79android-8.1.0_r78android-8.1.0_r77android-8.1.0_r76android-8.1.0_r75android-8.1.0_r74android-8.1.0_r73android-8.1.0_r72android-8.1.0_r71android-8.1.0_r70android-8.1.0_r69android-8.1.0_r68android-8.1.0_r66android-8.1.0_r6android-8.1.0_r5android-8.1.0_r4android-8.1.0_r3android-8.1.0_r23android-8.1.0_r19android-8.1.0_r16android-8.1.0_r15android-8.1.0_r12android-8.1.0_r11android-8.1.0_r10android-8.1.0_r1security-oc-mr1-releaseoreo-mr1-wear-releaseoreo-mr1-vts-releaseoreo-mr1-security-releaseoreo-mr1-s1-releaseoreo-mr1-releaseoreo-mr1-cuttlefish-testingoreo-mr1-cts-releaseoreo-m4-s1-release
Change-Id: I39153fead3f21ab1f5d49fce1d731293083f5116
-rw-r--r-- | msm8998/hal/src/HAL.cpp | 14 | ||||
-rw-r--r-- | msm8998/ipacm/inc/IPACM_OffloadManager.h | 2 | ||||
-rw-r--r-- | msm8998/ipacm/src/IPACM_OffloadManager.cpp | 29 |
3 files changed, 32 insertions, 13 deletions
diff --git a/msm8998/hal/src/HAL.cpp b/msm8998/hal/src/HAL.cpp index 59f978d..e19a149 100644 --- a/msm8998/hal/src/HAL.cpp +++ b/msm8998/hal/src/HAL.cpp @@ -506,8 +506,7 @@ Return<void> HAL::setUpstreamParameters BoolResult res = makeInputCheckFailure("Not initialized (setUpstreamParameters)"); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); - } - else if (!v4AddrParser.addV4(v4Addr) && !v4Addr.empty()) { + } else if (!v4AddrParser.addV4(v4Addr) && !v4Addr.empty()) { BoolResult res = makeInputCheckFailure(v4AddrParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); @@ -519,7 +518,7 @@ Return<void> HAL::setUpstreamParameters BoolResult res = makeInputCheckFailure(v6GwParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); - } else { + } else if (iface.size()>= 1) { RET ipaReturn = mIPA->setUpstream( iface.c_str(), v4GwParser.getFirstPrefix(), @@ -527,6 +526,15 @@ Return<void> HAL::setUpstreamParameters BoolResult res = ipaResultToBoolResult(ipaReturn); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); + } else { + /* send NULL iface string when upstream down */ + RET ipaReturn = mIPA->setUpstream( + NULL, + v4GwParser.getFirstPrefix(), + v6GwParser.getFirstPrefix()); + BoolResult res = ipaResultToBoolResult(ipaReturn); + hidl_cb(res.success, res.errMsg); + fl.setResult(res.success, res.errMsg); } mLogs.addLog(fl); diff --git a/msm8998/ipacm/inc/IPACM_OffloadManager.h b/msm8998/ipacm/inc/IPACM_OffloadManager.h index 72070dd..bade0aa 100644 --- a/msm8998/ipacm/inc/IPACM_OffloadManager.h +++ b/msm8998/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/msm8998/ipacm/src/IPACM_OffloadManager.cpp b/msm8998/ipacm/src/IPACM_OffloadManager.cpp index ca54ea6..2061fd2 100644 --- a/msm8998/ipacm/src/IPACM_OffloadManager.cpp +++ b/msm8998/ipacm/src/IPACM_OffloadManager.cpp @@ -212,6 +212,13 @@ RET IPACM_OffloadManager::addDownstream(const char * downstream_name, const Pref IPACMERR("fail to get iface index.\n"); 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 +270,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 +303,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; @@ -493,12 +493,23 @@ RET IPACM_OffloadManager::setUpstream(const char *upstream_name, const Prefix& g RET IPACM_OffloadManager::stopAllOffload() { Prefix v4gw, v6gw; + RET result = SUCCESS; + memset(&v4gw, 0, sizeof(v4gw)); memset(&v6gw, 0, sizeof(v6gw)); v4gw.fam = V4; v6gw.fam = V6; IPACMDBG_H("posting setUpstream(NULL), ipv4-fam(%d) ipv6-fam(%d)\n", v4gw.fam, v6gw.fam); - return setUpstream(NULL, v4gw, v6gw); + result = setUpstream(NULL, v4gw, v6gw); + + /* reset the event cache */ + default_gw_index = INVALID_IFACE; + upstream_v4_up = false; + upstream_v6_up = false; + memset(event_cache, 0, MAX_EVENT_CACHE*sizeof(framework_event_cache)); + latest_cache_index = 0; + valid_ifaces.clear(); + return result; } RET IPACM_OffloadManager::setQuota(const char * upstream_name /* upstream */, uint64_t mb/* limit */) |