summaryrefslogtreecommitdiff
path: root/msm8998/hal/src/HAL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'msm8998/hal/src/HAL.cpp')
-rw-r--r--msm8998/hal/src/HAL.cpp56
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);