From 87bb6c3603b9381745b82669ab304f861f8acc10 Mon Sep 17 00:00:00 2001 From: Hungming Chen Date: Mon, 4 Apr 2022 23:14:51 +0800 Subject: [PATCH] Move TetherStatsKey and TetherStatsValue to common libs EthernetTetheringTest needs to parse BPF map content for bpf stats tests. Move the struct class files to common libs. Compare TetherStats{Key, Value}.java between frameworks/libs/net/common and packages/modules/Connectivity/Tethering. There is only the package name change as expected. $ diff packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering/TetherStatsKey.java frameworks/libs/net/common/device/com/android/net/module/util/bpf/TetherStatsKey.java 17c17 < package com.android.networkstack.tethering; Bug: 227159997 Test: atest TetheringCoverageTests Change-Id: I87193cb6409b4d19c72184011d7e99275800dab1 --- .../apishim/api30/BpfCoordinatorShimImpl.java | 2 +- .../apishim/api31/BpfCoordinatorShimImpl.java | 4 +- .../apishim/common/BpfCoordinatorShim.java | 2 +- .../tethering/BpfCoordinator.java | 2 + .../tethering/TetherStatsKey.java | 53 ------------ .../tethering/TetherStatsValue.java | 80 ------------------- .../tethering/util/TetheringUtils.java | 2 +- .../unit/src/android/net/ip/IpServerTest.java | 4 +- .../tethering/BpfCoordinatorTest.java | 2 + 9 files changed, 11 insertions(+), 140 deletions(-) delete mode 100644 Tethering/src/com/android/networkstack/tethering/TetherStatsKey.java delete mode 100644 Tethering/src/com/android/networkstack/tethering/TetherStatsValue.java diff --git a/Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java b/Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java index 22d2c5d2f5..b865a8edd9 100644 --- a/Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java +++ b/Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java @@ -30,9 +30,9 @@ import androidx.annotation.Nullable; import com.android.net.module.util.IBpfMap.ThrowingBiConsumer; import com.android.net.module.util.bpf.Tether4Key; import com.android.net.module.util.bpf.Tether4Value; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.networkstack.tethering.BpfCoordinator.Dependencies; import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule; -import com.android.networkstack.tethering.TetherStatsValue; /** * Bpf coordinator class for API shims. diff --git a/Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java b/Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java index 5afb862295..0683e5ec68 100644 --- a/Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java +++ b/Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java @@ -33,6 +33,8 @@ import com.android.net.module.util.BpfMap; import com.android.net.module.util.IBpfMap.ThrowingBiConsumer; import com.android.net.module.util.bpf.Tether4Key; import com.android.net.module.util.bpf.Tether4Value; +import com.android.net.module.util.bpf.TetherStatsKey; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.networkstack.tethering.BpfCoordinator.Dependencies; import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule; import com.android.networkstack.tethering.BpfUtils; @@ -42,8 +44,6 @@ import com.android.networkstack.tethering.TetherDevValue; import com.android.networkstack.tethering.TetherDownstream6Key; import com.android.networkstack.tethering.TetherLimitKey; import com.android.networkstack.tethering.TetherLimitValue; -import com.android.networkstack.tethering.TetherStatsKey; -import com.android.networkstack.tethering.TetherStatsValue; import com.android.networkstack.tethering.TetherUpstream6Key; import java.io.FileDescriptor; diff --git a/Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java b/Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java index 915e210d45..69cbab5140 100644 --- a/Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java +++ b/Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java @@ -25,9 +25,9 @@ import androidx.annotation.Nullable; import com.android.net.module.util.IBpfMap.ThrowingBiConsumer; import com.android.net.module.util.bpf.Tether4Key; import com.android.net.module.util.bpf.Tether4Value; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.networkstack.tethering.BpfCoordinator.Dependencies; import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule; -import com.android.networkstack.tethering.TetherStatsValue; /** * Bpf coordinator class for API shims. diff --git a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java index f8a10941b2..bba0a409a4 100644 --- a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java +++ b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java @@ -68,6 +68,8 @@ import com.android.net.module.util.NetworkStackConstants; import com.android.net.module.util.Struct.U32; import com.android.net.module.util.bpf.Tether4Key; import com.android.net.module.util.bpf.Tether4Value; +import com.android.net.module.util.bpf.TetherStatsKey; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.net.module.util.netlink.ConntrackMessage; import com.android.net.module.util.netlink.NetlinkConstants; import com.android.net.module.util.netlink.NetlinkSocket; diff --git a/Tethering/src/com/android/networkstack/tethering/TetherStatsKey.java b/Tethering/src/com/android/networkstack/tethering/TetherStatsKey.java deleted file mode 100644 index 5442480a01..0000000000 --- a/Tethering/src/com/android/networkstack/tethering/TetherStatsKey.java +++ /dev/null @@ -1,53 +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 com.android.net.module.util.Struct; -import com.android.net.module.util.Struct.Field; -import com.android.net.module.util.Struct.Type; - -/** The key of BpfMap which is used for tethering stats. */ -public class TetherStatsKey extends Struct { - @Field(order = 0, type = Type.U32) - public final long ifindex; // upstream interface index - - public TetherStatsKey(final long ifindex) { - this.ifindex = ifindex; - } - - // TODO: remove equals, hashCode and toString once aosp/1536721 is merged. - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - - if (!(obj instanceof TetherStatsKey)) return false; - - final TetherStatsKey that = (TetherStatsKey) obj; - - return ifindex == that.ifindex; - } - - @Override - public int hashCode() { - return Long.hashCode(ifindex); - } - - @Override - public String toString() { - return String.format("ifindex: %d", ifindex); - } -} diff --git a/Tethering/src/com/android/networkstack/tethering/TetherStatsValue.java b/Tethering/src/com/android/networkstack/tethering/TetherStatsValue.java deleted file mode 100644 index 844d2e8f7e..0000000000 --- a/Tethering/src/com/android/networkstack/tethering/TetherStatsValue.java +++ /dev/null @@ -1,80 +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 com.android.net.module.util.Struct; -import com.android.net.module.util.Struct.Field; -import com.android.net.module.util.Struct.Type; - -/** The key of BpfMap which is used for tethering stats. */ -public class TetherStatsValue extends Struct { - // Use the signed long variable to store the uint64 stats from stats BPF map. - // U63 is enough for each data element even at 5Gbps for ~468 years. - // 2^63 / (5 * 1000 * 1000 * 1000) * 8 / 86400 / 365 = 468. - @Field(order = 0, type = Type.U63) - public final long rxPackets; - @Field(order = 1, type = Type.U63) - public final long rxBytes; - @Field(order = 2, type = Type.U63) - public final long rxErrors; - @Field(order = 3, type = Type.U63) - public final long txPackets; - @Field(order = 4, type = Type.U63) - public final long txBytes; - @Field(order = 5, type = Type.U63) - public final long txErrors; - - public TetherStatsValue(final long rxPackets, final long rxBytes, final long rxErrors, - final long txPackets, final long txBytes, final long txErrors) { - this.rxPackets = rxPackets; - this.rxBytes = rxBytes; - this.rxErrors = rxErrors; - this.txPackets = txPackets; - this.txBytes = txBytes; - this.txErrors = txErrors; - } - - // TODO: remove equals, hashCode and toString once aosp/1536721 is merged. - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - - if (!(obj instanceof TetherStatsValue)) return false; - - final TetherStatsValue that = (TetherStatsValue) obj; - - return rxPackets == that.rxPackets - && rxBytes == that.rxBytes - && rxErrors == that.rxErrors - && txPackets == that.txPackets - && txBytes == that.txBytes - && txErrors == that.txErrors; - } - - @Override - public int hashCode() { - return Long.hashCode(rxPackets) ^ Long.hashCode(rxBytes) ^ Long.hashCode(rxErrors) - ^ Long.hashCode(txPackets) ^ Long.hashCode(txBytes) ^ Long.hashCode(txErrors); - } - - @Override - public String toString() { - return String.format("rxPackets: %s, rxBytes: %s, rxErrors: %s, txPackets: %s, " - + "txBytes: %s, txErrors: %s", rxPackets, rxBytes, rxErrors, txPackets, - txBytes, txErrors); - } -} diff --git a/Tethering/src/com/android/networkstack/tethering/util/TetheringUtils.java b/Tethering/src/com/android/networkstack/tethering/util/TetheringUtils.java index 66d67a1ce6..e6236df2cd 100644 --- a/Tethering/src/com/android/networkstack/tethering/util/TetheringUtils.java +++ b/Tethering/src/com/android/networkstack/tethering/util/TetheringUtils.java @@ -22,7 +22,7 @@ import android.util.Log; import androidx.annotation.NonNull; import com.android.net.module.util.JniUtil; -import com.android.networkstack.tethering.TetherStatsValue; +import com.android.net.module.util.bpf.TetherStatsValue; import java.io.FileDescriptor; import java.net.Inet6Address; diff --git a/Tethering/tests/unit/src/android/net/ip/IpServerTest.java b/Tethering/tests/unit/src/android/net/ip/IpServerTest.java index 6488421464..549361ca17 100644 --- a/Tethering/tests/unit/src/android/net/ip/IpServerTest.java +++ b/Tethering/tests/unit/src/android/net/ip/IpServerTest.java @@ -103,6 +103,8 @@ import com.android.net.module.util.InterfaceParams; 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.bpf.TetherStatsKey; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.networkstack.tethering.BpfCoordinator; import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule; import com.android.networkstack.tethering.PrivateAddressCoordinator; @@ -112,8 +114,6 @@ import com.android.networkstack.tethering.TetherDevValue; import com.android.networkstack.tethering.TetherDownstream6Key; import com.android.networkstack.tethering.TetherLimitKey; import com.android.networkstack.tethering.TetherLimitValue; -import com.android.networkstack.tethering.TetherStatsKey; -import com.android.networkstack.tethering.TetherStatsValue; import com.android.networkstack.tethering.TetherUpstream6Key; import com.android.networkstack.tethering.TetheringConfiguration; import com.android.networkstack.tethering.util.InterfaceSet; diff --git a/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java b/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java index 4967d27683..3630f2478f 100644 --- a/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java +++ b/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java @@ -102,6 +102,8 @@ import com.android.net.module.util.InterfaceParams; 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.bpf.TetherStatsKey; +import com.android.net.module.util.bpf.TetherStatsValue; import com.android.net.module.util.netlink.ConntrackMessage; import com.android.net.module.util.netlink.NetlinkConstants; import com.android.net.module.util.netlink.NetlinkSocket;