summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/OffloadController.java3
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java14
-rw-r--r--services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp11
-rw-r--r--tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java9
4 files changed, 23 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
index 3aca45f8bd9a..ce6b8be77d44 100644
--- a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
+++ b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
@@ -161,6 +161,7 @@ public class OffloadController {
}
}
- return mHwInterface.setUpstreamParameters(iface, v4addr, v4gateway, v6gateways);
+ return mHwInterface.setUpstreamParameters(
+ iface, v4addr, v4gateway, (v6gateways.isEmpty() ? null : v6gateways));
}
}
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
index 3ecf0d1d0c71..1fc16841e355 100644
--- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
+++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
@@ -16,6 +16,8 @@
package com.android.server.connectivity.tethering;
+import static com.android.internal.util.BitUtils.uint16;
+
import android.hardware.tetheroffload.control.V1_0.IOffloadControl;
import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback;
import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate;
@@ -33,6 +35,9 @@ import java.util.ArrayList;
*/
public class OffloadHardwareInterface {
private static final String TAG = OffloadHardwareInterface.class.getSimpleName();
+ private static final String NO_INTERFACE_NAME = "";
+ private static final String NO_IPV4_ADDRESS = "";
+ private static final String NO_IPV4_GATEWAY = "";
private static native boolean configOffload();
@@ -107,6 +112,11 @@ public class OffloadHardwareInterface {
public boolean setUpstreamParameters(
String iface, String v4addr, String v4gateway, ArrayList<String> v6gws) {
+ iface = iface != null ? iface : NO_INTERFACE_NAME;
+ v4addr = v4addr != null ? v4addr : NO_IPV4_ADDRESS;
+ v4gateway = v4gateway != null ? v4gateway : NO_IPV4_GATEWAY;
+ v6gws = v6gws != null ? v6gws : new ArrayList<>();
+
final CbResults results = new CbResults();
try {
mOffloadControl.setUpstreamParameters(
@@ -143,8 +153,8 @@ public class OffloadHardwareInterface {
handler.post(() -> {
controlCb.onNatTimeoutUpdate(
params.proto,
- params.src.addr, params.src.port,
- params.dst.addr, params.dst.port);
+ params.src.addr, uint16(params.src.port),
+ params.dst.addr, uint16(params.dst.port));
});
}
}
diff --git a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
index 241ccf6ed166..4e5c27fca784 100644
--- a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
+++ b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
@@ -71,7 +71,7 @@ int conntrackSocket(unsigned groups) {
// auto-close it (otherwise there would be double-close problems).
//
// Rely upon the compiler to eliminate the constexprs used for clarity.
-hidl_handle&& handleFromFileDescriptor(base::unique_fd fd) {
+hidl_handle handleFromFileDescriptor(base::unique_fd fd) {
hidl_handle h;
NATIVE_HANDLE_DECLARE_STORAGE(storage, 0, 0);
@@ -83,7 +83,7 @@ hidl_handle&& handleFromFileDescriptor(base::unique_fd fd) {
static constexpr bool kTakeOwnership = true;
h.setTo(nh, kTakeOwnership);
- return std::move(h);
+ return h;
}
} // namespace
@@ -116,13 +116,14 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c
bool rval;
hidl_string msg;
- configInterface->setHandles(h1, h2,
+ const auto status = configInterface->setHandles(h1, h2,
[&rval, &msg](bool success, const hidl_string& errMsg) {
rval = success;
msg = errMsg;
});
- if (!rval) {
- ALOGE("IOffloadConfig::setHandles() error: %s", msg.c_str());
+ if (!status.isOk() || !rval) {
+ ALOGE("IOffloadConfig::setHandles() error: '%s' / '%s'",
+ status.description().c_str(), msg.c_str());
}
return rval;
diff --git a/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java b/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java
index 4d340d1eff33..14284d661744 100644
--- a/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java
+++ b/tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java
@@ -155,8 +155,7 @@ public class OffloadControllerTest {
lp.setInterfaceName(testIfName);
offload.setUpstreamLinkProperties(lp);
inOrder.verify(mHardware, times(1)).setUpstreamParameters(
- eq(testIfName), eq(null), eq(null), mStringArrayCaptor.capture());
- assertTrue(mStringArrayCaptor.getValue().isEmpty());
+ eq(testIfName), eq(null), eq(null), eq(null));
inOrder.verifyNoMoreInteractions();
final String ipv4Addr = "192.0.2.5";
@@ -164,16 +163,14 @@ public class OffloadControllerTest {
lp.addLinkAddress(new LinkAddress(linkAddr));
offload.setUpstreamLinkProperties(lp);
inOrder.verify(mHardware, times(1)).setUpstreamParameters(
- eq(testIfName), eq(ipv4Addr), eq(null), mStringArrayCaptor.capture());
- assertTrue(mStringArrayCaptor.getValue().isEmpty());
+ eq(testIfName), eq(ipv4Addr), eq(null), eq(null));
inOrder.verifyNoMoreInteractions();
final String ipv4Gateway = "192.0.2.1";
lp.addRoute(new RouteInfo(InetAddress.getByName(ipv4Gateway)));
offload.setUpstreamLinkProperties(lp);
inOrder.verify(mHardware, times(1)).setUpstreamParameters(
- eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), mStringArrayCaptor.capture());
- assertTrue(mStringArrayCaptor.getValue().isEmpty());
+ eq(testIfName), eq(ipv4Addr), eq(ipv4Gateway), eq(null));
inOrder.verifyNoMoreInteractions();
final String ipv6Gw1 = "fe80::cafe";