merge Tether{Down,Up}stream4{Key,Value} - part 2 - java

Generated via:
  git grep 'Tether(Down|Up)stream4(Key|Value)' | cut -d: -f1 | sort -u | while read i; do
    sed -r -i 's@TetherUpstream4Value@Tether4Value@g' "$i"
    sed -r -i 's@TetherDownstream4Value@Tether4Value@g' "$i"
    sed -r -i 's@TetherDownstream4Key@Tether4Key@g' "$i"
    sed -r -i 's@TetherUpstream4Key@Tether4Key@g' "$i"
  done

  cd Tethering/src/com/android/networkstack/tethering
  git mv TetherUpstream4Key.java Tether4Key.java
  git mv TetherUpstream4Value.java Tether4Value.java

  git diff TetherDownstream4Key.java Tether4Key.java
  git diff TetherDownstream4Value.java Tether4Value.java
  git rm TetherDownstream4Key.java
  git rm TetherDownstream4Value.java

Fixup resulting 'import' duplication
  mcedit Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java
  mcedit Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java
  mcedit Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java
  mcedit Tethering/tests/unit/src/android/net/ip/IpServerTest.java

Test: N/A, requires follow up commit
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1dfc3108ca4bbd0cefc3420bc7e421594b62619c
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 90b9b3f..d0a5af4 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
@@ -28,11 +28,9 @@
 
 import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
 import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
-import com.android.networkstack.tethering.TetherDownstream4Key;
-import com.android.networkstack.tethering.TetherDownstream4Value;
+import com.android.networkstack.tethering.Tether4Key;
+import com.android.networkstack.tethering.Tether4Value;
 import com.android.networkstack.tethering.TetherStatsValue;
-import com.android.networkstack.tethering.TetherUpstream4Key;
-import com.android.networkstack.tethering.TetherUpstream4Value;
 
 /**
  * Bpf coordinator class for API shims.
@@ -136,27 +134,27 @@
     }
 
     @Override
-    public boolean tetherOffloadRuleAdd(@NonNull TetherDownstream4Key key,
-            @NonNull TetherDownstream4Value value) {
+    public boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value) {
         /* no op */
         return true;
     }
 
     @Override
-    public boolean tetherOffloadRuleRemove(@NonNull TetherDownstream4Key key) {
+    public boolean tetherOffloadRuleRemove(@NonNull Tether4Key key) {
         /* no op */
         return true;
     }
 
     @Override
-    public boolean tetherOffloadRuleAdd(@NonNull TetherUpstream4Key key,
-            @NonNull TetherUpstream4Value value) {
+    public boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value) {
         /* no op */
         return true;
     }
 
     @Override
-    public boolean tetherOffloadRuleRemove(@NonNull TetherUpstream4Key key) {
+    public boolean tetherOffloadRuleRemove(@NonNull Tether4Key key) {
         /* no op */
         return true;
     }
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 b9ce769..e6a2823 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
@@ -30,16 +30,14 @@
 import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
 import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
 import com.android.networkstack.tethering.BpfMap;
-import com.android.networkstack.tethering.TetherDownstream4Key;
-import com.android.networkstack.tethering.TetherDownstream4Value;
+import com.android.networkstack.tethering.Tether4Key;
+import com.android.networkstack.tethering.Tether4Value;
 import com.android.networkstack.tethering.TetherDownstream6Key;
 import com.android.networkstack.tethering.TetherDownstream6Value;
 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.TetherUpstream4Key;
-import com.android.networkstack.tethering.TetherUpstream4Value;
 
 import java.io.FileDescriptor;
 
@@ -61,12 +59,12 @@
     // BPF map of ingress queueing discipline which pre-processes the packets by the IPv4
     // downstream rules.
     @Nullable
-    private final BpfMap<TetherDownstream4Key, TetherDownstream4Value> mBpfDownstream4Map;
+    private final BpfMap<Tether4Key, Tether4Value> mBpfDownstream4Map;
 
     // BPF map of ingress queueing discipline which pre-processes the packets by the IPv4
     // upstream rules.
     @Nullable
-    private final BpfMap<TetherUpstream4Key, TetherUpstream4Value> mBpfUpstream4Map;
+    private final BpfMap<Tether4Key, Tether4Value> mBpfUpstream4Map;
 
     // BPF map of ingress queueing discipline which pre-processes the packets by the IPv6
     // forwarding rules.
@@ -250,8 +248,8 @@
     }
 
     @Override
-    public boolean tetherOffloadRuleAdd(@NonNull TetherDownstream4Key key,
-            @NonNull TetherDownstream4Value value) {
+    public boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value) {
         if (!isInitialized()) return false;
 
         try {
@@ -268,7 +266,7 @@
     }
 
     @Override
-    public boolean tetherOffloadRuleRemove(@NonNull TetherDownstream4Key key) {
+    public boolean tetherOffloadRuleRemove(@NonNull Tether4Key key) {
         if (!isInitialized()) return false;
 
         try {
@@ -284,8 +282,8 @@
     }
 
     @Override
-    public boolean tetherOffloadRuleAdd(@NonNull TetherUpstream4Key key,
-            @NonNull TetherUpstream4Value value) {
+    public boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value) {
         if (!isInitialized()) return false;
 
         try {
@@ -302,7 +300,7 @@
     }
 
     @Override
-    public boolean tetherOffloadRuleRemove(@NonNull TetherUpstream4Key key) {
+    public boolean tetherOffloadRuleRemove(@NonNull Tether4Key key) {
         if (!isInitialized()) return false;
 
         try {
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 36d2de1..6bcec18 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
@@ -23,11 +23,9 @@
 
 import com.android.networkstack.tethering.BpfCoordinator.Dependencies;
 import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
-import com.android.networkstack.tethering.TetherDownstream4Key;
-import com.android.networkstack.tethering.TetherDownstream4Value;
+import com.android.networkstack.tethering.Tether4Key;
+import com.android.networkstack.tethering.Tether4Value;
 import com.android.networkstack.tethering.TetherStatsValue;
-import com.android.networkstack.tethering.TetherUpstream4Key;
-import com.android.networkstack.tethering.TetherUpstream4Value;
 
 /**
  * Bpf coordinator class for API shims.
@@ -116,23 +114,23 @@
     /**
      * Adds a tethering IPv4 downstream offload rule to BPF map.
      */
-    public abstract boolean tetherOffloadRuleAdd(@NonNull TetherDownstream4Key key,
-            @NonNull TetherDownstream4Value value);
+    public abstract boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value);
 
     /**
      * Deletes a tethering IPv4 downstream offload rule from the BPF map.
      */
-    public abstract boolean tetherOffloadRuleRemove(@NonNull TetherDownstream4Key key);
+    public abstract boolean tetherOffloadRuleRemove(@NonNull Tether4Key key);
 
     /**
      * Adds a tethering IPv4 upstream offload rule to BPF map.
      */
-    public abstract boolean tetherOffloadRuleAdd(@NonNull TetherUpstream4Key key,
-            @NonNull TetherUpstream4Value value);
+    public abstract boolean tetherOffloadRuleAdd(@NonNull Tether4Key key,
+            @NonNull Tether4Value value);
 
     /**
      * Deletes a tethering IPv4 upstream offload rule from the BPF map.
      */
-    public abstract boolean tetherOffloadRuleRemove(@NonNull TetherUpstream4Key key);
+    public abstract boolean tetherOffloadRuleRemove(@NonNull Tether4Key key);
 }
 
diff --git a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
index e4216d8..0c8784b 100644
--- a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
+++ b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
@@ -237,11 +237,11 @@
         }
 
         /** Get downstream4 BPF map. */
-        @Nullable public BpfMap<TetherDownstream4Key, TetherDownstream4Value>
+        @Nullable public BpfMap<Tether4Key, Tether4Value>
                 getBpfDownstream4Map() {
             try {
                 return new BpfMap<>(TETHER_DOWNSTREAM4_MAP_PATH,
-                    BpfMap.BPF_F_RDWR, TetherDownstream4Key.class, TetherDownstream4Value.class);
+                    BpfMap.BPF_F_RDWR, Tether4Key.class, Tether4Value.class);
             } catch (ErrnoException e) {
                 Log.e(TAG, "Cannot create downstream4 map: " + e);
                 return null;
@@ -249,11 +249,11 @@
         }
 
         /** Get upstream4 BPF map. */
-        @Nullable public BpfMap<TetherUpstream4Key, TetherUpstream4Value>
+        @Nullable public BpfMap<Tether4Key, Tether4Value>
                 getBpfUpstream4Map() {
             try {
                 return new BpfMap<>(TETHER_UPSTREAM4_MAP_PATH,
-                    BpfMap.BPF_F_RDWR, TetherUpstream4Key.class, TetherUpstream4Value.class);
+                    BpfMap.BPF_F_RDWR, Tether4Key.class, Tether4Value.class);
             } catch (ErrnoException e) {
                 Log.e(TAG, "Cannot create upstream4 map: " + e);
                 return null;
@@ -906,25 +906,25 @@
     // TODO: add ether ip support.
     private class BpfConntrackEventConsumer implements ConntrackEventConsumer {
         @NonNull
-        private TetherUpstream4Key makeTetherUpstream4Key(
+        private Tether4Key makeTether4Key(
                 @NonNull ConntrackEvent e, @NonNull ClientInfo c) {
-            return new TetherUpstream4Key(c.downstreamIfindex, c.downstreamMac,
+            return new Tether4Key(c.downstreamIfindex, c.downstreamMac,
                     e.tupleOrig.protoNum, e.tupleOrig.srcIp.getAddress(),
                     e.tupleOrig.dstIp.getAddress(), e.tupleOrig.srcPort, e.tupleOrig.dstPort);
         }
 
         @NonNull
-        private TetherDownstream4Key makeTetherDownstream4Key(
+        private Tether4Key makeTether4Key(
                 @NonNull ConntrackEvent e, @NonNull ClientInfo c, int upstreamIndex) {
-            return new TetherDownstream4Key(upstreamIndex, NULL_MAC_ADDRESS /* dstMac (rawip) */,
+            return new Tether4Key(upstreamIndex, NULL_MAC_ADDRESS /* dstMac (rawip) */,
                     e.tupleReply.protoNum, e.tupleReply.srcIp.getAddress(),
                     e.tupleReply.dstIp.getAddress(), e.tupleReply.srcPort, e.tupleReply.dstPort);
         }
 
         @NonNull
-        private TetherUpstream4Value makeTetherUpstream4Value(@NonNull ConntrackEvent e,
+        private Tether4Value makeTether4Value(@NonNull ConntrackEvent e,
                 int upstreamIndex) {
-            return new TetherUpstream4Value(upstreamIndex,
+            return new Tether4Value(upstreamIndex,
                     NULL_MAC_ADDRESS /* ethDstMac (rawip) */,
                     NULL_MAC_ADDRESS /* ethSrcMac (rawip) */, ETH_P_IP,
                     NetworkStackConstants.ETHER_MTU, toIpv4MappedAddressBytes(e.tupleReply.dstIp),
@@ -933,9 +933,9 @@
         }
 
         @NonNull
-        private TetherDownstream4Value makeTetherDownstream4Value(@NonNull ConntrackEvent e,
+        private Tether4Value makeTether4Value(@NonNull ConntrackEvent e,
                 @NonNull ClientInfo c, int upstreamIndex) {
-            return new TetherDownstream4Value(c.downstreamIfindex,
+            return new Tether4Value(c.downstreamIfindex,
                     c.clientMac, c.downstreamMac, ETH_P_IP, NetworkStackConstants.ETHER_MTU,
                     e.tupleOrig.dstIp.getAddress(), e.tupleOrig.srcIp.getAddress(),
                     e.tupleOrig.dstPort, e.tupleOrig.srcPort,
@@ -962,8 +962,8 @@
             final Integer upstreamIndex = mIpv4UpstreamIndices.get(e.tupleReply.dstIp);
             if (upstreamIndex == null) return;
 
-            final TetherUpstream4Key upstream4Key = makeTetherUpstream4Key(e, tetherClient);
-            final TetherDownstream4Key downstream4Key = makeTetherDownstream4Key(e,
+            final Tether4Key upstream4Key = makeTether4Key(e, tetherClient);
+            final Tether4Key downstream4Key = makeTether4Key(e,
                     tetherClient, upstreamIndex);
 
             if (e.msgType == (NetlinkConstants.NFNL_SUBSYS_CTNETLINK << 8
@@ -973,9 +973,9 @@
                 return;
             }
 
-            final TetherUpstream4Value upstream4Value = makeTetherUpstream4Value(e,
+            final Tether4Value upstream4Value = makeTether4Value(e,
                     upstreamIndex);
-            final TetherDownstream4Value downstream4Value = makeTetherDownstream4Value(e,
+            final Tether4Value downstream4Value = makeTether4Value(e,
                     tetherClient, upstreamIndex);
 
             mBpfCoordinatorShim.tetherOffloadRuleAdd(upstream4Key, upstream4Value);
diff --git a/Tethering/src/com/android/networkstack/tethering/TetherUpstream4Key.java b/Tethering/src/com/android/networkstack/tethering/Tether4Key.java
similarity index 94%
rename from Tethering/src/com/android/networkstack/tethering/TetherUpstream4Key.java
rename to Tethering/src/com/android/networkstack/tethering/Tether4Key.java
index 77cfa99..5884dce 100644
--- a/Tethering/src/com/android/networkstack/tethering/TetherUpstream4Key.java
+++ b/Tethering/src/com/android/networkstack/tethering/Tether4Key.java
@@ -29,7 +29,7 @@
 import java.util.Objects;
 
 /** The key of BpfMap which is used for IPv4 bpf offload. */
-public class TetherUpstream4Key extends Struct {
+public class Tether4Key extends Struct {
     @Field(order = 0, type = Type.U32)
     public final long iif;
 
@@ -51,7 +51,7 @@
     @Field(order = 6, type = Type.UBE16)
     public final int dstPort;
 
-    public TetherUpstream4Key(final long iif, @NonNull final MacAddress dstMac, final short l4proto,
+    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);
diff --git a/Tethering/src/com/android/networkstack/tethering/TetherUpstream4Value.java b/Tethering/src/com/android/networkstack/tethering/Tether4Value.java
similarity index 95%
rename from Tethering/src/com/android/networkstack/tethering/TetherUpstream4Value.java
rename to Tethering/src/com/android/networkstack/tethering/Tether4Value.java
index e1ff688..3770f1a 100644
--- a/Tethering/src/com/android/networkstack/tethering/TetherUpstream4Value.java
+++ b/Tethering/src/com/android/networkstack/tethering/Tether4Value.java
@@ -29,7 +29,7 @@
 import java.util.Objects;
 
 /** The value of BpfMap which is used for IPv4 bpf offload. */
-public class TetherUpstream4Value extends Struct {
+public class Tether4Value extends Struct {
     @Field(order = 0, type = Type.U32)
     public final long oif;
 
@@ -60,7 +60,7 @@
     @Field(order = 9, type = Type.U63)
     public final long lastUsed;
 
-    public TetherUpstream4Value(final long oif, @NonNull final MacAddress ethDstMac,
+    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) {
diff --git a/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Key.java b/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Key.java
deleted file mode 100644
index 51b1f76..0000000
--- a/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Key.java
+++ /dev/null
@@ -1,79 +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 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;
-
-/** The key of BpfMap which is used for IPv4 bpf offload. */
-public class TetherDownstream4Key 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 TetherDownstream4Key(final long iif, 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);
-        }
-    }
-}
diff --git a/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Value.java b/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Value.java
deleted file mode 100644
index 56ea566..0000000
--- a/Tethering/src/com/android/networkstack/tethering/TetherDownstream4Value.java
+++ /dev/null
@@ -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;
-
-/** The value of BpfMap which is used for IPv4 bpf offload. */
-public class TetherDownstream4Value 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 = 4)
-    public final byte[] src4;
-
-    @Field(order = 6, type = Type.ByteArray, arraysize = 4)
-    public final byte[] dst4;
-
-    @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 TetherDownstream4Value(final long oif, @NonNull final MacAddress ethDstMac,
-            @NonNull final MacAddress ethSrcMac, final int ethProto, final int pmtu,
-            final byte[] src4, final byte[] dst4, 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.src4 = src4;
-        this.dst4 = dst4;
-        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, "
-                            + "src4: %s, dst4: %s, srcPort: %d, dstPort: %d, "
-                            + "lastUsed: %d",
-                    oif, ethDstMac, ethSrcMac, ethProto, pmtu,
-                    InetAddress.getByAddress(src4), InetAddress.getByAddress(dst4),
-                    Short.toUnsignedInt((short) srcPort), Short.toUnsignedInt((short) dstPort),
-                    lastUsed);
-        } catch (UnknownHostException | IllegalArgumentException e) {
-            return String.format("Invalid IP address", e);
-        }
-    }
-}
diff --git a/Tethering/tests/unit/src/android/net/ip/IpServerTest.java b/Tethering/tests/unit/src/android/net/ip/IpServerTest.java
index 9b42c73..e5cc4cc 100644
--- a/Tethering/tests/unit/src/android/net/ip/IpServerTest.java
+++ b/Tethering/tests/unit/src/android/net/ip/IpServerTest.java
@@ -104,16 +104,14 @@
 import com.android.networkstack.tethering.BpfCoordinator.Ipv6ForwardingRule;
 import com.android.networkstack.tethering.BpfMap;
 import com.android.networkstack.tethering.PrivateAddressCoordinator;
-import com.android.networkstack.tethering.TetherDownstream4Key;
-import com.android.networkstack.tethering.TetherDownstream4Value;
+import com.android.networkstack.tethering.Tether4Key;
+import com.android.networkstack.tethering.Tether4Value;
 import com.android.networkstack.tethering.TetherDownstream6Key;
 import com.android.networkstack.tethering.TetherDownstream6Value;
 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.TetherUpstream4Key;
-import com.android.networkstack.tethering.TetherUpstream4Value;
 import com.android.networkstack.tethering.TetheringConfiguration;
 import com.android.testutils.DevSdkIgnoreRule;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter;
@@ -177,8 +175,8 @@
     @Mock private NetworkStatsManager mStatsManager;
     @Mock private TetheringConfiguration mTetherConfig;
     @Mock private ConntrackMonitor mConntrackMonitor;
-    @Mock private BpfMap<TetherDownstream4Key, TetherDownstream4Value> mBpfDownstream4Map;
-    @Mock private BpfMap<TetherUpstream4Key, TetherUpstream4Value> mBpfUpstream4Map;
+    @Mock private BpfMap<Tether4Key, Tether4Value> mBpfDownstream4Map;
+    @Mock private BpfMap<Tether4Key, Tether4Value> mBpfUpstream4Map;
     @Mock private BpfMap<TetherDownstream6Key, TetherDownstream6Value> mBpfDownstream6Map;
     @Mock private BpfMap<TetherStatsKey, TetherStatsValue> mBpfStatsMap;
     @Mock private BpfMap<TetherLimitKey, TetherLimitValue> mBpfLimitMap;
@@ -309,13 +307,13 @@
                     }
 
                     @Nullable
-                    public BpfMap<TetherDownstream4Key, TetherDownstream4Value>
+                    public BpfMap<Tether4Key, Tether4Value>
                             getBpfDownstream4Map() {
                         return mBpfDownstream4Map;
                     }
 
                     @Nullable
-                    public BpfMap<TetherUpstream4Key, TetherUpstream4Value>
+                    public BpfMap<Tether4Key, Tether4Value>
                             getBpfUpstream4Map() {
                         return mBpfUpstream4Map;
                     }
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 30b4bf4..af8053a 100644
--- a/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
+++ b/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
@@ -158,8 +158,8 @@
     @Mock private IpServer mIpServer2;
     @Mock private TetheringConfiguration mTetherConfig;
     @Mock private ConntrackMonitor mConntrackMonitor;
-    @Mock private BpfMap<TetherDownstream4Key, TetherDownstream4Value> mBpfDownstream4Map;
-    @Mock private BpfMap<TetherUpstream4Key, TetherUpstream4Value> mBpfUpstream4Map;
+    @Mock private BpfMap<Tether4Key, Tether4Value> mBpfDownstream4Map;
+    @Mock private BpfMap<Tether4Key, Tether4Value> mBpfUpstream4Map;
     @Mock private BpfMap<TetherDownstream6Key, TetherDownstream6Value> mBpfDownstream6Map;
 
     // Late init since methods must be called by the thread that created this object.
@@ -205,13 +205,13 @@
                     }
 
                     @Nullable
-                    public BpfMap<TetherDownstream4Key, TetherDownstream4Value>
+                    public BpfMap<Tether4Key, Tether4Value>
                             getBpfDownstream4Map() {
                         return mBpfDownstream4Map;
                     }
 
                     @Nullable
-                    public BpfMap<TetherUpstream4Key, TetherUpstream4Value>
+                    public BpfMap<Tether4Key, Tether4Value>
                             getBpfUpstream4Map() {
                         return mBpfUpstream4Map;
                     }