diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-10 07:27:50 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-10 07:27:50 +0000 |
commit | 3bbde207fb3fe6e77ff71e89bf0b5b76d538f041 (patch) | |
tree | b9df45cea8d95a401c5b8006fdeb4e8d3b614b10 | |
parent | befcc75017d2dde916bf503dd35a0b1f37275577 (diff) | |
parent | ec5a83ab38a41ea3f0af08c45276900e6d26cc39 (diff) | |
download | ipacfg-mgr-3bbde207fb3fe6e77ff71e89bf0b5b76d538f041.tar.gz |
release-request-7f84484c-eec6-4577-8d5a-55079be4f3c5-for-git_oc-mr1-release-4262309 snap-temp-L02100000091441105
Change-Id: I622a0ec9c10d7160cc14e0820af16eeb9438fa2a
-rw-r--r-- | msm8998/hal/src/HAL.cpp | 56 | ||||
-rw-r--r-- | msm8998/hal/src/PrefixParser.cpp | 12 | ||||
-rw-r--r-- | msm8998/ipacm/src/IPACM_OffloadManager.cpp | 4 |
3 files changed, 48 insertions, 24 deletions
diff --git a/msm8998/hal/src/HAL.cpp b/msm8998/hal/src/HAL.cpp index 8ff0aa8..22aff0f 100644 --- a/msm8998/hal/src/HAL.cpp +++ b/msm8998/hal/src/HAL.cpp @@ -41,6 +41,7 @@ /* External Includes */ #include <cutils/log.h> #include <string> +#include <sys/socket.h> #include <sys/types.h> #include <vector> @@ -399,15 +400,26 @@ Return<void> HAL::setLocalPrefixes const hidl_vec<hidl_string>& prefixes, setLocalPrefixes_cb hidl_cb ) { + BoolResult res; + PrefixParser parser; + vector<string> prefixesStr = convertHidlStrToStdStr(prefixes); + LocalLogBuffer::FunctionLog fl(__func__); - fl.addArg("prefixes", "unused"); - #pragma unused(prefixes) + fl.addArg("prefixes", prefixesStr); - /* Fake Success */ - BoolResult res = ipaResultToBoolResult(RET::SUCCESS); - hidl_cb(res.success, res.errMsg); + if (!isInitialized()) { + BoolResult res = makeInputCheckFailure("Not initialized"); + } else if(prefixesStr.size() < 1) { + res = ipaResultToBoolResult(RET::FAIL_INPUT_CHECK); + } else if (!parser.add(prefixesStr)) { + res = makeInputCheckFailure(parser.getLastErrAsStr()); + } else { + res = ipaResultToBoolResult(RET::SUCCESS); + } + hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); + mLogs.addLog(fl); return Void(); } /* setLocalPrefixes */ @@ -484,7 +496,12 @@ Return<void> HAL::setUpstreamParameters * qualified here. But then, how do we allow them to be empty/null as well * while still preserving a sane API on PrefixParser? */ - if (!v4AddrParser.addV4(v4Addr) && !v4Addr.empty()) { + if (!isInitialized()) { + 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()) { BoolResult res = makeInputCheckFailure(v4AddrParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); @@ -496,19 +513,6 @@ Return<void> HAL::setUpstreamParameters BoolResult res = makeInputCheckFailure(v6GwParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); - } else if (v6GwParser.size() > 1) { - RET ipaReturn = mIPA->stopAllOffload(); - if (ipaReturn != RET::SUCCESS) { - BoolResult res = - makeInputCheckFailure("Cannot accept more than 1 IPv6 Gateway. Offload still running and may result in data path errors"); - hidl_cb(res.success, res.errMsg); - fl.setResult(res.success, res.errMsg); - } else { - BoolResult res = - makeInputCheckFailure("Cannot accept more than 1 IPv6 Gateway. In an effort to avoid any data path errors, offload has been stopped"); - hidl_cb(res.success, res.errMsg); - fl.setResult(res.success, res.errMsg); - } } else { RET ipaReturn = mIPA->setUpstream( iface.c_str(), @@ -535,7 +539,12 @@ Return<void> HAL::addDownstream PrefixParser prefixParser; - if (!prefixParser.add(prefix)) { + if (!isInitialized()) { + BoolResult res = makeInputCheckFailure("Not initialized (setUpstreamParameters)"); + hidl_cb(res.success, res.errMsg); + fl.setResult(res.success, res.errMsg); + } + else if (!prefixParser.add(prefix)) { BoolResult res = makeInputCheckFailure(prefixParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); @@ -564,7 +573,12 @@ Return<void> HAL::removeDownstream PrefixParser prefixParser; - if (!prefixParser.add(prefix)) { + if (!isInitialized()) { + BoolResult res = makeInputCheckFailure("Not initialized (setUpstreamParameters)"); + hidl_cb(res.success, res.errMsg); + fl.setResult(res.success, res.errMsg); + } + else if (!prefixParser.add(prefix)) { BoolResult res = makeInputCheckFailure(prefixParser.getLastErrAsStr()); hidl_cb(res.success, res.errMsg); fl.setResult(res.success, res.errMsg); diff --git a/msm8998/hal/src/PrefixParser.cpp b/msm8998/hal/src/PrefixParser.cpp index 60aae08..d38bec0 100644 --- a/msm8998/hal/src/PrefixParser.cpp +++ b/msm8998/hal/src/PrefixParser.cpp @@ -118,6 +118,9 @@ string PrefixParser::getLastErrAsStr() { /* ------------------------------ PRIVATE ----------------------------------- */ bool PrefixParser::add(vector<string> in, IP_FAM famHint) { + if (in.size() == 0) + return false; + for (size_t i = 0; i < in.size(); i++) { if (!add(in[i], famHint)) return false; @@ -126,6 +129,11 @@ bool PrefixParser::add(vector<string> in, IP_FAM famHint) { } /* add */ bool PrefixParser::add(string in, IP_FAM famHint) { + if (in.length() == 0) { + mLastErr = "Failed to parse string, length = 0..."; + return false; + } + if (famHint == IP_FAM::INVALID) famHint = guessIPFamily(in); @@ -138,8 +146,10 @@ bool PrefixParser::add(string in, IP_FAM famHint) { } int mask = parseSubnetMask(subnet, famHint); - if (!isMaskValid(mask, famHint)) + if (!isMaskValid(mask, famHint)) { + mLastErr = "Invalid mask"; return false; + } Prefix pre = makeBlankPrefix(famHint); diff --git a/msm8998/ipacm/src/IPACM_OffloadManager.cpp b/msm8998/ipacm/src/IPACM_OffloadManager.cpp index 04f6806..332abd5 100644 --- a/msm8998/ipacm/src/IPACM_OffloadManager.cpp +++ b/msm8998/ipacm/src/IPACM_OffloadManager.cpp @@ -226,8 +226,8 @@ RET IPACM_OffloadManager::removeDownstream(const char * downstream_name, const P IPACMDBG_H("removeDownstream name(%s), ip-family(%d) \n", downstream_name, prefix.fam); if(ipa_get_if_index(downstream_name, &index)) { - IPACMERR("netdev(%s) already removed, ignored\n", downstream_name); - return SUCCESS; + IPACMERR("fail to get iface index.\n"); + return FAIL_HARDWARE; } evt_data = (ipacm_event_ipahal_stream*)malloc(sizeof(ipacm_event_ipahal_stream)); |