diff options
Diffstat (limited to 'msm8998/hal/src/HAL.cpp')
-rw-r--r-- | msm8998/hal/src/HAL.cpp | 56 |
1 files changed, 35 insertions, 21 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); |