summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-08-10 08:07:49 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-08-10 08:07:49 +0000
commit30d9c2b5bfd9c10f9dcc670aeadcbf6304ee2c5f (patch)
treeb9df45cea8d95a401c5b8006fdeb4e8d3b614b10
parenta4bb2c714bcdc476f3ba5598438bc6556122705a (diff)
parent88f11661bf70693f71169a6d36967e080f69a83c (diff)
downloadandroid_hardware_qcom_data_ipacfg-mgr-30d9c2b5bfd9c10f9dcc670aeadcbf6304ee2c5f.tar.gz
android_hardware_qcom_data_ipacfg-mgr-30d9c2b5bfd9c10f9dcc670aeadcbf6304ee2c5f.tar.bz2
android_hardware_qcom_data_ipacfg-mgr-30d9c2b5bfd9c10f9dcc670aeadcbf6304ee2c5f.zip
release-request-0b474cbb-ff20-424d-a570-a0a7b83a7705-for-git_pi-release-4262110 snap-temp-L42700000091449286
Change-Id: Id495218dcc11f3d5aa78f0e2c4c72a633082b5b6
-rw-r--r--msm8998/hal/src/HAL.cpp56
-rw-r--r--msm8998/hal/src/PrefixParser.cpp12
-rw-r--r--msm8998/ipacm/src/IPACM_OffloadManager.cpp4
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));