Revert "Add utilities to create IPv6 ICMP messages."
Revert "Rename net-utils-framework-common in FrameworksTelephony..."
Revert submission 1579863-ipv6_utils
Reason for revert: Build breakage
Bug: 181339273
Reverted Changes:
I0d3b133e5:Rename net-utils-framework-common in FrameworksTel...
I1c050ae42:Add utilities to create IPv6 ICMP messages.
Change-Id: I2b3a26d6fe22c24618e3cab61f717a8b991f2b4d
diff --git a/staticlibs/Android.bp b/staticlibs/Android.bp
index 03296e7..a3bfbce 100644
--- a/staticlibs/Android.bp
+++ b/staticlibs/Android.bp
@@ -60,9 +60,6 @@
"//packages/modules/CaptivePortalLogin",
"//frameworks/libs/net/common/tests:__subpackages__",
],
- static_libs: [
- "net-utils-framework-common",
- ],
libs: [
"androidx.annotation_annotation",
],
@@ -149,7 +146,6 @@
"//packages/modules/NetworkStack:__subpackages__",
"//packages/modules/CaptivePortalLogin",
"//frameworks/libs/net/common/tests:__subpackages__",
- "//frameworks/libs/net/common/device",
"//packages/modules/Wifi/framework/tests:__subpackages__",
]
}
diff --git a/staticlibs/device/com/android/net/module/util/Ipv6Utils.java b/staticlibs/device/com/android/net/module/util/Ipv6Utils.java
deleted file mode 100644
index 73c2431..0000000
--- a/staticlibs/device/com/android/net/module/util/Ipv6Utils.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util;
-
-import static android.system.OsConstants.IPPROTO_ICMPV6;
-
-import static com.android.net.module.util.IpUtils.icmpv6Checksum;
-import static com.android.net.module.util.NetworkStackConstants.ETHER_TYPE_IPV6;
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_NEIGHBOR_ADVERTISEMENT;
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ROUTER_ADVERTISEMENT;
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ROUTER_SOLICITATION;
-
-import android.net.MacAddress;
-
-import com.android.net.module.util.structs.EthernetHeader;
-import com.android.net.module.util.structs.Icmpv6Header;
-import com.android.net.module.util.structs.Ipv6Header;
-import com.android.net.module.util.structs.NaHeader;
-import com.android.net.module.util.structs.RaHeader;
-import com.android.net.module.util.structs.RsHeader;
-
-import java.net.Inet6Address;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * Utilities for IPv6 packets.
- */
-public class Ipv6Utils {
- /**
- * Build a generic ICMPv6 packet(e.g., packet used in the neighbor discovery protocol).
- */
- public static ByteBuffer buildIcmpv6Packet(final MacAddress srcMac, final MacAddress dstMac,
- final Inet6Address srcIp, final Inet6Address dstIp, short type, short code,
- final ByteBuffer... options) {
- final int etherHeaderLen = Struct.getSize(EthernetHeader.class);
- final int ipv6HeaderLen = Struct.getSize(Ipv6Header.class);
- final int icmpv6HeaderLen = Struct.getSize(Icmpv6Header.class);
- int payloadLen = 0;
- for (ByteBuffer option: options) {
- payloadLen += option.limit();
- }
- final ByteBuffer packet = ByteBuffer.allocate(etherHeaderLen + ipv6HeaderLen
- + icmpv6HeaderLen + payloadLen);
- final EthernetHeader ethHeader =
- new EthernetHeader(dstMac, srcMac, (short) ETHER_TYPE_IPV6);
- final Ipv6Header ipv6Header =
- new Ipv6Header((int) 0x60000000 /* version, traffic class, flowlabel */,
- icmpv6HeaderLen + payloadLen /* payload length */,
- (byte) IPPROTO_ICMPV6 /* next header */, (byte) 0xff /* hop limit */, srcIp, dstIp);
- final Icmpv6Header icmpv6Header = new Icmpv6Header(type, code, (short) 0 /* checksum */);
-
- ethHeader.writeToByteBuffer(packet);
- ipv6Header.writeToByteBuffer(packet);
- icmpv6Header.writeToByteBuffer(packet);
- for (ByteBuffer option : options) {
- packet.put(option);
- // in case option might be reused by caller, restore the position and
- // limit of bytebuffer.
- option.clear();
- }
- packet.flip();
-
- // Populate the ICMPv6 checksum field.
- packet.putShort(etherHeaderLen + ipv6HeaderLen + 2, icmpv6Checksum(packet,
- etherHeaderLen /* ipOffset */,
- (int) (etherHeaderLen + ipv6HeaderLen) /* transportOffset */,
- (short) (icmpv6HeaderLen + payloadLen) /* transportLen */));
- return packet;
- }
-
- /**
- * Build the ICMPv6 packet payload including payload header and specific options.
- */
- private static ByteBuffer[] buildIcmpv6Payload(final ByteBuffer payloadHeader,
- final ByteBuffer... options) {
- final ByteBuffer[] payload = new ByteBuffer[options.length + 1];
- payload[0] = payloadHeader;
- System.arraycopy(options, 0, payload, 1, options.length);
- return payload;
- }
-
- /**
- * Build an ICMPv6 Router Advertisement packet from the required specified parameters.
- */
- public static ByteBuffer buildRaPacket(final MacAddress srcMac, final MacAddress dstMac,
- final Inet6Address srcIp, final Inet6Address dstIp, final byte flags,
- final int lifetime, final long reachableTime, final long retransTimer,
- final ByteBuffer... options) {
- final RaHeader raHeader = new RaHeader((byte) 0 /* hopLimit, unspecified */,
- flags, lifetime, reachableTime, retransTimer);
- final ByteBuffer[] payload = buildIcmpv6Payload(
- ByteBuffer.wrap(raHeader.writeToBytes(ByteOrder.BIG_ENDIAN)), options);
- return buildIcmpv6Packet(srcMac, dstMac, srcIp, dstIp,
- (byte) ICMPV6_ROUTER_ADVERTISEMENT /* type */, (byte) 0 /* code */, payload);
- }
-
- /**
- * Build an ICMPv6 Neighbor Advertisement packet from the required specified parameters.
- */
- public static ByteBuffer buildNaPacket(final MacAddress srcMac, final MacAddress dstMac,
- final Inet6Address srcIp, final Inet6Address dstIp, final int flags,
- final Inet6Address target, final ByteBuffer... options) {
- final NaHeader naHeader = new NaHeader(flags, target);
- final ByteBuffer[] payload = buildIcmpv6Payload(
- ByteBuffer.wrap(naHeader.writeToBytes(ByteOrder.BIG_ENDIAN)), options);
- return buildIcmpv6Packet(srcMac, dstMac, srcIp, dstIp,
- (byte) ICMPV6_NEIGHBOR_ADVERTISEMENT /* type */, (byte) 0 /* code */, payload);
- }
-
- /**
- * Build an ICMPv6 Router Solicitation packet from the required specified parameters.
- */
- public static ByteBuffer buildRsPacket(final MacAddress srcMac, final MacAddress dstMac,
- final Inet6Address srcIp, final Inet6Address dstIp, final ByteBuffer... options) {
- final RsHeader rsHeader = new RsHeader((int) 0 /* reserved */);
- final ByteBuffer[] payload = buildIcmpv6Payload(
- ByteBuffer.wrap(rsHeader.writeToBytes(ByteOrder.BIG_ENDIAN)), options);
- return buildIcmpv6Packet(srcMac, dstMac, srcIp, dstIp,
- (byte) ICMPV6_ROUTER_SOLICITATION /* type */, (byte) 0 /* code */, payload);
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java b/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java
deleted file mode 100644
index d895cfa..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/EthernetHeader.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-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;
-
-/**
- * L2 ethernet header as per IEEE 802.3. Does not include a 802.1Q tag.
- *
- * 0 1
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Destination |
- * +- -+
- * | Ethernet |
- * +- -+
- * | Address |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Source |
- * +- -+
- * | Ethernet |
- * +- -+
- * | Address |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1|
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class EthernetHeader extends Struct {
- @Field(order = 0, type = Type.EUI48)
- public final MacAddress dstMac;
- @Field(order = 1, type = Type.EUI48)
- public final MacAddress srcMac;
- @Field(order = 2, type = Type.U16)
- public final int etherType;
-
- public EthernetHeader(final MacAddress dstMac, final MacAddress srcMac,
- final int etherType) {
- this.dstMac = dstMac;
- this.srcMac = srcMac;
- this.etherType = etherType;
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/Icmpv6Header.java b/staticlibs/device/com/android/net/module/util/structs/Icmpv6Header.java
deleted file mode 100644
index c82ae02..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/Icmpv6Header.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import com.android.net.module.util.Struct;
-import com.android.net.module.util.Struct.Field;
-import com.android.net.module.util.Struct.Type;
-
-/**
- * ICMPv6 header as per https://tools.ietf.org/html/rfc4443.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Code | Checksum |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class Icmpv6Header extends Struct {
- @Field(order = 0, type = Type.U8)
- public short type;
- @Field(order = 1, type = Type.U8)
- public short code;
- @Field(order = 2, type = Type.S16)
- public short checksum;
-
- public Icmpv6Header(final short type, final short code, final short checksum) {
- this.type = type;
- this.code = code;
- this.checksum = checksum;
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java b/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java
deleted file mode 100644
index 3ad8157..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/Ipv6Header.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-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.Inet6Address;
-
-/**
- * L3 IPv6 header as per https://tools.ietf.org/html/rfc8200.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |Version| Traffic Class | Flow Label |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Payload Length | Next Header | Hop Limit |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * + +
- * | |
- * + Source Address +
- * | |
- * + +
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * + +
- * | |
- * + Destination Address +
- * | |
- * + +
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class Ipv6Header extends Struct {
- @Field(order = 0, type = Type.S32)
- public int vtf;
- @Field(order = 1, type = Type.U16)
- public int length;
- @Field(order = 2, type = Type.S8)
- public byte nextHeader;
- @Field(order = 3, type = Type.U8)
- public short hopLimit;
- @Field(order = 4, type = Type.Ipv6Address)
- public Inet6Address srcIp;
- @Field(order = 5, type = Type.Ipv6Address)
- public Inet6Address dstIp;
-
- public Ipv6Header(final int vtf, final int length, final byte nextHeader, final short hopLimit,
- final Inet6Address srcIp, final Inet6Address dstIp) {
- this.vtf = vtf;
- this.length = length;
- this.nextHeader = nextHeader;
- this.hopLimit = hopLimit;
- this.srcIp = srcIp;
- this.dstIp = dstIp;
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/LlaOption.java b/staticlibs/device/com/android/net/module/util/structs/LlaOption.java
deleted file mode 100644
index 2cdeefb..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/LlaOption.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-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.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * ICMPv6 source/target link-layer address option, as per https://tools.ietf.org/html/rfc4861.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Length | Link-Layer Address ...
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class LlaOption extends Struct {
- @Field(order = 0, type = Type.S8)
- // 1 for Source Link-layer Address; 2 for Target Link-layer Address.
- public final byte type;
- @Field(order = 1, type = Type.S8)
- public final byte length; // Length in 8-byte units
- @Field(order = 2, type = Type.EUI48)
- public final MacAddress linkLayerAddress;
-
- public LlaOption(final byte type, final byte length, final MacAddress linkLayerAddress) {
- this.type = type;
- this.length = length;
- this.linkLayerAddress = linkLayerAddress;
- }
-
- /**
- * Build a target link-layer address option from the required specified parameters.
- */
- public static ByteBuffer build(final byte type, final MacAddress linkLayerAddress) {
- final LlaOption option = new LlaOption(type, (byte) 1 /* option len */, linkLayerAddress);
- return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/MtuOption.java b/staticlibs/device/com/android/net/module/util/structs/MtuOption.java
deleted file mode 100644
index a35b576..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/MtuOption.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ND_OPTION_MTU;
-
-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.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * ICMPv6 MTU option, as per https://tools.ietf.org/html/rfc4861.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Length | Reserved |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | MTU |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class MtuOption extends Struct {
- @Field(order = 0, type = Type.S8)
- public final byte type;
- @Field(order = 1, type = Type.S8)
- public final byte length; // Length in 8-byte units
- @Field(order = 2, type = Type.S16)
- public final short reserved;
- @Field(order = 3, type = Type.U32)
- public final long mtu;
-
- public MtuOption(final byte type, final byte length, final short reserved,
- final long mtu) {
- this.type = type;
- this.length = length;
- this.reserved = reserved;
- this.mtu = mtu;
- }
-
- /**
- * Build a MTU option from the required specified parameters.
- */
- public static ByteBuffer build(final long mtu) {
- final MtuOption option = new MtuOption((byte) ICMPV6_ND_OPTION_MTU,
- (byte) 1 /* option len */, (short) 0 /* reserved */, mtu);
- return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/NaHeader.java b/staticlibs/device/com/android/net/module/util/structs/NaHeader.java
deleted file mode 100644
index 8101b06..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/NaHeader.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-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.Inet6Address;
-
-/**
- * ICMPv6 Neighbor Advertisement header, follow [Icmpv6Header], as per
- * https://tools.ietf.org/html/rfc4861. This does not contain any option.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Code | Checksum |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |R|S|O| Reserved |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * + +
- * | |
- * + Target Address +
- * | |
- * + +
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Options ...
- * +-+-+-+-+-+-+-+-+-+-+-+-
- */
-public class NaHeader extends Struct {
- @Field(order = 0, type = Type.S32)
- public int flags; // Router flag, Solicited flag, Override flag and 29 Reserved bits.
- @Field(order = 1, type = Type.Ipv6Address)
- public Inet6Address target;
-
- public NaHeader(final int flags, final Inet6Address target) {
- this.flags = flags;
- this.target = target;
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java b/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java
deleted file mode 100644
index 7dc0192..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/PrefixInformationOption.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ND_OPTION_PIO;
-
-import android.annotation.NonNull;
-import android.net.IpPrefix;
-
-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.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * ICMPv6 prefix information option, as per https://tools.ietf.org/html/rfc4861.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Length | Prefix Length |L|A| Reserved1 |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Valid Lifetime |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Preferred Lifetime |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Reserved2 |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * + +
- * | |
- * + Prefix +
- * | |
- * + +
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class PrefixInformationOption extends Struct {
- @Field(order = 0, type = Type.S8)
- public final byte type;
- @Field(order = 1, type = Type.S8)
- public final byte length; // Length in 8-byte units
- @Field(order = 2, type = Type.S8)
- public final byte prefixLen;
- @Field(order = 3, type = Type.S8)
- // On-link flag, Autonomous address configuration flag, 6-reserved bits
- public final byte flags;
- @Field(order = 4, type = Type.U32)
- public final long validLifetime;
- @Field(order = 5, type = Type.U32)
- public final long preferredLifetime;
- @Field(order = 6, type = Type.S32)
- public final int reserved;
- @Field(order = 7, type = Type.ByteArray, arraysize = 16)
- public final byte[] prefix;
-
- public PrefixInformationOption(final byte type, final byte length, final byte prefixLen,
- final byte flags, final long validLifetime, final long preferredLifetime,
- final int reserved, @NonNull final byte[] prefix) {
- this.type = type;
- this.length = length;
- this.prefixLen = prefixLen;
- this.flags = flags;
- this.validLifetime = validLifetime;
- this.preferredLifetime = preferredLifetime;
- this.reserved = reserved;
- this.prefix = prefix;
- }
-
- /**
- * Build a Prefix Information option from the required specified parameters.
- */
- public static ByteBuffer build(final IpPrefix prefix, final byte flags,
- final long validLifetime, final long preferredLifetime) {
- final PrefixInformationOption option = new PrefixInformationOption(
- (byte) ICMPV6_ND_OPTION_PIO, (byte) 4 /* option len */,
- (byte) prefix.getPrefixLength(), flags, validLifetime, preferredLifetime,
- (int) 0, prefix.getRawAddress());
- return ByteBuffer.wrap(option.writeToBytes(ByteOrder.nativeOrder()));
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/RaHeader.java b/staticlibs/device/com/android/net/module/util/structs/RaHeader.java
deleted file mode 100644
index 31a5cb7..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/RaHeader.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import com.android.net.module.util.Struct;
-import com.android.net.module.util.Struct.Field;
-import com.android.net.module.util.Struct.Type;
-
-/**
- * ICMPv6 Router Advertisement header, follow [Icmpv6Header], as per
- * https://tools.ietf.org/html/rfc4861. This does not contain any option.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Code | Checksum |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Cur Hop Limit |M|O| Reserved | Router Lifetime |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Reachable Time |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Retrans Timer |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Options ...
- * +-+-+-+-+-+-+-+-+-+-+-+-
- */
-public class RaHeader extends Struct {
- @Field(order = 0, type = Type.S8)
- public final byte hopLimit;
- // "Managed address configuration", "Other configuration" bits, and 6 reserved bits
- @Field(order = 1, type = Type.S8)
- public final byte flags;
- @Field(order = 2, type = Type.U16)
- public final int lifetime;
- @Field(order = 3, type = Type.U32)
- public final long reachableTime;
- @Field(order = 4, type = Type.U32)
- public final long retransTimer;
-
- public RaHeader(final byte hopLimit, final byte flags, final int lifetime,
- final long reachableTime, final long retransTimer) {
- this.hopLimit = hopLimit;
- this.flags = flags;
- this.lifetime = lifetime;
- this.reachableTime = reachableTime;
- this.retransTimer = retransTimer;
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java b/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java
deleted file mode 100644
index de55e66..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/RdnssOption.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import static com.android.net.module.util.NetworkStackConstants.ICMPV6_ND_OPTION_RDNSS;
-
-import android.net.InetAddresses;
-
-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.Inet6Address;
-import java.nio.ByteBuffer;
-
-/**
- * IPv6 RA recursive DNS server option, as per https://tools.ietf.org/html/rfc8106.
- * This should be followed by a series of DNSv6 server addresses.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Length | Reserved |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Lifetime |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * : Addresses of IPv6 Recursive DNS Servers :
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-public class RdnssOption extends Struct {
- @Field(order = 0, type = Type.S8)
- public final byte type;
- @Field(order = 1, type = Type.S8)
- public final byte length; // Length in 8-byte units
- @Field(order = 2, type = Type.S16)
- public final short reserved;
- @Field(order = 3, type = Type.U32)
- public final long lifetime;
-
- public RdnssOption(final byte type, final byte length, final short reserved,
- final long lifetime) {
- this.type = type;
- this.length = length;
- this.reserved = reserved;
- this.lifetime = lifetime;
- }
-
- /**
- * Build a RDNSS option from the required specified Inet6Address parameters.
- */
- public static ByteBuffer build(final long lifetime, final Inet6Address... servers) {
- final byte length = (byte) (1 + 2 * servers.length);
- final RdnssOption option = new RdnssOption((byte) ICMPV6_ND_OPTION_RDNSS,
- length, (short) 0, lifetime);
- final ByteBuffer buffer = ByteBuffer.allocate(length * 8);
- option.writeToByteBuffer(buffer);
- for (Inet6Address server : servers) {
- buffer.put(server.getAddress());
- }
- buffer.flip();
- return buffer;
- }
-
- /**
- * Build a RDNSS option from the required specified String parameters.
- */
- public static ByteBuffer build(final long lifetime, final String... servers) {
- final Inet6Address[] serverArray = new Inet6Address[servers.length];
- for (int i = 0; i < servers.length; i++) {
- serverArray[i] = (Inet6Address) InetAddresses.parseNumericAddress(servers[i]);
- }
- return build(lifetime, serverArray);
- }
-}
diff --git a/staticlibs/device/com/android/net/module/util/structs/RsHeader.java b/staticlibs/device/com/android/net/module/util/structs/RsHeader.java
deleted file mode 100644
index 0b51ff2..0000000
--- a/staticlibs/device/com/android/net/module/util/structs/RsHeader.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2021 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.net.module.util.structs;
-
-import com.android.net.module.util.Struct;
-import com.android.net.module.util.Struct.Field;
-import com.android.net.module.util.Struct.Type;
-
-/**
- * ICMPv6 Router Solicitation header, follow [Icmpv6Header], as per
- * https://tools.ietf.org/html/rfc4861. This does not contain any option.
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Type | Code | Checksum |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Reserved |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Options ...
- * +-+-+-+-+-+-+-+-+-+-+-+-
- */
-public class RsHeader extends Struct {
- @Field(order = 0, type = Type.S32)
- public final int reserved;
-
- public RsHeader(final int reserved) {
- this.reserved = reserved;
- }
-}