Merge "Move Tether4Key and Tether4Value to common libs" am: 34e16b9537
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1978067 Change-Id: I870a9ee32a54ebe2408ff1fed5642ff8372e3e95
This commit is contained in:
@@ -27,10 +27,10 @@ import android.util.SparseArray;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
||||||
import com.android.networkstack.tethering.Tether4Key;
|
|
||||||
import com.android.networkstack.tethering.Tether4Value;
|
|
||||||
import com.android.networkstack.tethering.TetherStatsValue;
|
import com.android.networkstack.tethering.TetherStatsValue;
|
||||||
|
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.android.net.module.util.BpfMap;
|
import com.android.net.module.util.BpfMap;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
||||||
import com.android.networkstack.tethering.BpfUtils;
|
import com.android.networkstack.tethering.BpfUtils;
|
||||||
import com.android.networkstack.tethering.Tether4Key;
|
|
||||||
import com.android.networkstack.tethering.Tether4Value;
|
|
||||||
import com.android.networkstack.tethering.Tether6Value;
|
import com.android.networkstack.tethering.Tether6Value;
|
||||||
import com.android.networkstack.tethering.TetherDevKey;
|
import com.android.networkstack.tethering.TetherDevKey;
|
||||||
import com.android.networkstack.tethering.TetherDevValue;
|
import com.android.networkstack.tethering.TetherDevValue;
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ import android.util.SparseArray;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
||||||
import com.android.networkstack.tethering.Tether4Key;
|
|
||||||
import com.android.networkstack.tethering.Tether4Value;
|
|
||||||
import com.android.networkstack.tethering.TetherStatsValue;
|
import com.android.networkstack.tethering.TetherStatsValue;
|
||||||
|
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ import com.android.net.module.util.BpfMap;
|
|||||||
import com.android.net.module.util.CollectionUtils;
|
import com.android.net.module.util.CollectionUtils;
|
||||||
import com.android.net.module.util.NetworkStackConstants;
|
import com.android.net.module.util.NetworkStackConstants;
|
||||||
import com.android.net.module.util.Struct;
|
import com.android.net.module.util.Struct;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.net.module.util.netlink.ConntrackMessage;
|
import com.android.net.module.util.netlink.ConntrackMessage;
|
||||||
import com.android.net.module.util.netlink.NetlinkConstants;
|
import com.android.net.module.util.netlink.NetlinkConstants;
|
||||||
import com.android.net.module.util.netlink.NetlinkSocket;
|
import com.android.net.module.util.netlink.NetlinkSocket;
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.networkstack.tethering;
|
|
||||||
|
|
||||||
import android.net.MacAddress;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.android.net.module.util.Struct;
|
|
||||||
import com.android.net.module.util.Struct.Field;
|
|
||||||
import com.android.net.module.util.Struct.Type;
|
|
||||||
|
|
||||||
import java.net.Inet4Address;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/** Key type for downstream & upstream IPv4 forwarding maps. */
|
|
||||||
public class Tether4Key extends Struct {
|
|
||||||
@Field(order = 0, type = Type.U32)
|
|
||||||
public final long iif;
|
|
||||||
|
|
||||||
@Field(order = 1, type = Type.EUI48)
|
|
||||||
public final MacAddress dstMac;
|
|
||||||
|
|
||||||
@Field(order = 2, type = Type.U8, padding = 1)
|
|
||||||
public final short l4proto;
|
|
||||||
|
|
||||||
@Field(order = 3, type = Type.ByteArray, arraysize = 4)
|
|
||||||
public final byte[] src4;
|
|
||||||
|
|
||||||
@Field(order = 4, type = Type.ByteArray, arraysize = 4)
|
|
||||||
public final byte[] dst4;
|
|
||||||
|
|
||||||
@Field(order = 5, type = Type.UBE16)
|
|
||||||
public final int srcPort;
|
|
||||||
|
|
||||||
@Field(order = 6, type = Type.UBE16)
|
|
||||||
public final int dstPort;
|
|
||||||
|
|
||||||
public Tether4Key(final long iif, @NonNull final MacAddress dstMac, final short l4proto,
|
|
||||||
final byte[] src4, final byte[] dst4, final int srcPort,
|
|
||||||
final int dstPort) {
|
|
||||||
Objects.requireNonNull(dstMac);
|
|
||||||
|
|
||||||
this.iif = iif;
|
|
||||||
this.dstMac = dstMac;
|
|
||||||
this.l4proto = l4proto;
|
|
||||||
this.src4 = src4;
|
|
||||||
this.dst4 = dst4;
|
|
||||||
this.srcPort = srcPort;
|
|
||||||
this.dstPort = dstPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
try {
|
|
||||||
return String.format(
|
|
||||||
"iif: %d, dstMac: %s, l4proto: %d, src4: %s, dst4: %s, "
|
|
||||||
+ "srcPort: %d, dstPort: %d",
|
|
||||||
iif, dstMac, l4proto,
|
|
||||||
Inet4Address.getByAddress(src4), Inet4Address.getByAddress(dst4),
|
|
||||||
Short.toUnsignedInt((short) srcPort), Short.toUnsignedInt((short) dstPort));
|
|
||||||
} catch (UnknownHostException | IllegalArgumentException e) {
|
|
||||||
return String.format("Invalid IP address", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.networkstack.tethering;
|
|
||||||
|
|
||||||
import android.net.MacAddress;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.android.net.module.util.Struct;
|
|
||||||
import com.android.net.module.util.Struct.Field;
|
|
||||||
import com.android.net.module.util.Struct.Type;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/** Value type for downstream & upstream IPv4 forwarding maps. */
|
|
||||||
public class Tether4Value extends Struct {
|
|
||||||
@Field(order = 0, type = Type.U32)
|
|
||||||
public final long oif;
|
|
||||||
|
|
||||||
// The ethhdr struct which is defined in uapi/linux/if_ether.h
|
|
||||||
@Field(order = 1, type = Type.EUI48)
|
|
||||||
public final MacAddress ethDstMac;
|
|
||||||
@Field(order = 2, type = Type.EUI48)
|
|
||||||
public final MacAddress ethSrcMac;
|
|
||||||
@Field(order = 3, type = Type.UBE16)
|
|
||||||
public final int ethProto; // Packet type ID field.
|
|
||||||
|
|
||||||
@Field(order = 4, type = Type.U16)
|
|
||||||
public final int pmtu;
|
|
||||||
|
|
||||||
@Field(order = 5, type = Type.ByteArray, arraysize = 16)
|
|
||||||
public final byte[] src46;
|
|
||||||
|
|
||||||
@Field(order = 6, type = Type.ByteArray, arraysize = 16)
|
|
||||||
public final byte[] dst46;
|
|
||||||
|
|
||||||
@Field(order = 7, type = Type.UBE16)
|
|
||||||
public final int srcPort;
|
|
||||||
|
|
||||||
@Field(order = 8, type = Type.UBE16)
|
|
||||||
public final int dstPort;
|
|
||||||
|
|
||||||
// TODO: consider using U64.
|
|
||||||
@Field(order = 9, type = Type.U63)
|
|
||||||
public final long lastUsed;
|
|
||||||
|
|
||||||
public Tether4Value(final long oif, @NonNull final MacAddress ethDstMac,
|
|
||||||
@NonNull final MacAddress ethSrcMac, final int ethProto, final int pmtu,
|
|
||||||
final byte[] src46, final byte[] dst46, final int srcPort,
|
|
||||||
final int dstPort, final long lastUsed) {
|
|
||||||
Objects.requireNonNull(ethDstMac);
|
|
||||||
Objects.requireNonNull(ethSrcMac);
|
|
||||||
|
|
||||||
this.oif = oif;
|
|
||||||
this.ethDstMac = ethDstMac;
|
|
||||||
this.ethSrcMac = ethSrcMac;
|
|
||||||
this.ethProto = ethProto;
|
|
||||||
this.pmtu = pmtu;
|
|
||||||
this.src46 = src46;
|
|
||||||
this.dst46 = dst46;
|
|
||||||
this.srcPort = srcPort;
|
|
||||||
this.dstPort = dstPort;
|
|
||||||
this.lastUsed = lastUsed;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
try {
|
|
||||||
return String.format(
|
|
||||||
"oif: %d, ethDstMac: %s, ethSrcMac: %s, ethProto: %d, pmtu: %d, "
|
|
||||||
+ "src46: %s, dst46: %s, srcPort: %d, dstPort: %d, "
|
|
||||||
+ "lastUsed: %d",
|
|
||||||
oif, ethDstMac, ethSrcMac, ethProto, pmtu,
|
|
||||||
InetAddress.getByAddress(src46), InetAddress.getByAddress(dst46),
|
|
||||||
Short.toUnsignedInt((short) srcPort), Short.toUnsignedInt((short) dstPort),
|
|
||||||
lastUsed);
|
|
||||||
} catch (UnknownHostException | IllegalArgumentException e) {
|
|
||||||
return String.format("Invalid IP address", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -101,11 +101,11 @@ import androidx.test.runner.AndroidJUnit4;
|
|||||||
|
|
||||||
import com.android.net.module.util.BpfMap;
|
import com.android.net.module.util.BpfMap;
|
||||||
import com.android.net.module.util.NetworkStackConstants;
|
import com.android.net.module.util.NetworkStackConstants;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator;
|
import com.android.networkstack.tethering.BpfCoordinator;
|
||||||
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
|
||||||
import com.android.networkstack.tethering.PrivateAddressCoordinator;
|
import com.android.networkstack.tethering.PrivateAddressCoordinator;
|
||||||
import com.android.networkstack.tethering.Tether4Key;
|
|
||||||
import com.android.networkstack.tethering.Tether4Value;
|
|
||||||
import com.android.networkstack.tethering.Tether6Value;
|
import com.android.networkstack.tethering.Tether6Value;
|
||||||
import com.android.networkstack.tethering.TetherDevKey;
|
import com.android.networkstack.tethering.TetherDevKey;
|
||||||
import com.android.networkstack.tethering.TetherDevValue;
|
import com.android.networkstack.tethering.TetherDevValue;
|
||||||
|
|||||||
@@ -99,6 +99,8 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito;
|
|||||||
import com.android.net.module.util.BpfMap;
|
import com.android.net.module.util.BpfMap;
|
||||||
import com.android.net.module.util.CollectionUtils;
|
import com.android.net.module.util.CollectionUtils;
|
||||||
import com.android.net.module.util.NetworkStackConstants;
|
import com.android.net.module.util.NetworkStackConstants;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Key;
|
||||||
|
import com.android.net.module.util.bpf.Tether4Value;
|
||||||
import com.android.net.module.util.netlink.ConntrackMessage;
|
import com.android.net.module.util.netlink.ConntrackMessage;
|
||||||
import com.android.net.module.util.netlink.NetlinkConstants;
|
import com.android.net.module.util.netlink.NetlinkConstants;
|
||||||
import com.android.net.module.util.netlink.NetlinkSocket;
|
import com.android.net.module.util.netlink.NetlinkSocket;
|
||||||
|
|||||||
Reference in New Issue
Block a user