diff options
| author | Remi NGUYEN VAN <reminv@google.com> | 2021-01-15 18:08:24 +0900 |
|---|---|---|
| committer | Remi NGUYEN VAN <reminv@google.com> | 2021-02-01 11:52:14 +0900 |
| commit | a31d72986318194bfdbd7ffefa87b335239cac7e (patch) | |
| tree | 6b477db74c6244c2b285da9591b9cf8ee0bf6481 /core/java/android/net/NattKeepalivePacketData.java | |
| parent | d2d77dba7d21fdcccdc9c36cce41ffa205e30517 (diff) | |
Move module sources to packages/Connectivity
Files that are planned to be part of the connectivity module are grouped
in packages/Connectivity, so they can be built separately and moved in
one operation with their history into packages/modules/Connectivity.
This places the files in the existing framework-connectivity-sources
filegroup instead of the current framework-core-sources filegroup. Both
are used the same way in framework-non-updatable-sources.
Bug: 171540887
Test: m
Change-Id: I62d9d91574ace6f5c4624035d190260c3126b91e
Diffstat (limited to 'core/java/android/net/NattKeepalivePacketData.java')
| -rw-r--r-- | core/java/android/net/NattKeepalivePacketData.java | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/core/java/android/net/NattKeepalivePacketData.java b/core/java/android/net/NattKeepalivePacketData.java deleted file mode 100644 index c4f8fc281f25..000000000000 --- a/core/java/android/net/NattKeepalivePacketData.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (C) 2019 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 android.net; - -import static android.net.InvalidPacketException.ERROR_INVALID_IP_ADDRESS; -import static android.net.InvalidPacketException.ERROR_INVALID_PORT; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.SystemApi; -import android.os.Parcel; -import android.os.Parcelable; -import android.system.OsConstants; - -import com.android.net.module.util.IpUtils; - -import java.net.Inet4Address; -import java.net.InetAddress; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.Objects; - -/** @hide */ -@SystemApi -public final class NattKeepalivePacketData extends KeepalivePacketData implements Parcelable { - private static final int IPV4_HEADER_LENGTH = 20; - private static final int UDP_HEADER_LENGTH = 8; - - // This should only be constructed via static factory methods, such as - // nattKeepalivePacket - public NattKeepalivePacketData(@NonNull InetAddress srcAddress, int srcPort, - @NonNull InetAddress dstAddress, int dstPort, @NonNull byte[] data) throws - InvalidPacketException { - super(srcAddress, srcPort, dstAddress, dstPort, data); - } - - /** - * Factory method to create Nat-T keepalive packet structure. - * @hide - */ - public static NattKeepalivePacketData nattKeepalivePacket( - InetAddress srcAddress, int srcPort, InetAddress dstAddress, int dstPort) - throws InvalidPacketException { - - if (!(srcAddress instanceof Inet4Address) || !(dstAddress instanceof Inet4Address)) { - throw new InvalidPacketException(ERROR_INVALID_IP_ADDRESS); - } - - if (dstPort != NattSocketKeepalive.NATT_PORT) { - throw new InvalidPacketException(ERROR_INVALID_PORT); - } - - int length = IPV4_HEADER_LENGTH + UDP_HEADER_LENGTH + 1; - ByteBuffer buf = ByteBuffer.allocate(length); - buf.order(ByteOrder.BIG_ENDIAN); - buf.putShort((short) 0x4500); // IP version and TOS - buf.putShort((short) length); - buf.putInt(0); // ID, flags, offset - buf.put((byte) 64); // TTL - buf.put((byte) OsConstants.IPPROTO_UDP); - int ipChecksumOffset = buf.position(); - buf.putShort((short) 0); // IP checksum - buf.put(srcAddress.getAddress()); - buf.put(dstAddress.getAddress()); - buf.putShort((short) srcPort); - buf.putShort((short) dstPort); - buf.putShort((short) (length - 20)); // UDP length - int udpChecksumOffset = buf.position(); - buf.putShort((short) 0); // UDP checksum - buf.put((byte) 0xff); // NAT-T keepalive - buf.putShort(ipChecksumOffset, IpUtils.ipChecksum(buf, 0)); - buf.putShort(udpChecksumOffset, IpUtils.udpChecksum(buf, 0, IPV4_HEADER_LENGTH)); - - return new NattKeepalivePacketData(srcAddress, srcPort, dstAddress, dstPort, buf.array()); - } - - /** Parcelable Implementation */ - public int describeContents() { - return 0; - } - - /** Write to parcel */ - public void writeToParcel(@NonNull Parcel out, int flags) { - out.writeString(getSrcAddress().getHostAddress()); - out.writeString(getDstAddress().getHostAddress()); - out.writeInt(getSrcPort()); - out.writeInt(getDstPort()); - } - - /** Parcelable Creator */ - public static final @NonNull Parcelable.Creator<NattKeepalivePacketData> CREATOR = - new Parcelable.Creator<NattKeepalivePacketData>() { - public NattKeepalivePacketData createFromParcel(Parcel in) { - final InetAddress srcAddress = - InetAddresses.parseNumericAddress(in.readString()); - final InetAddress dstAddress = - InetAddresses.parseNumericAddress(in.readString()); - final int srcPort = in.readInt(); - final int dstPort = in.readInt(); - try { - return NattKeepalivePacketData.nattKeepalivePacket(srcAddress, srcPort, - dstAddress, dstPort); - } catch (InvalidPacketException e) { - throw new IllegalArgumentException( - "Invalid NAT-T keepalive data: " + e.getError()); - } - } - - public NattKeepalivePacketData[] newArray(int size) { - return new NattKeepalivePacketData[size]; - } - }; - - @Override - public boolean equals(@Nullable final Object o) { - if (!(o instanceof NattKeepalivePacketData)) return false; - final NattKeepalivePacketData other = (NattKeepalivePacketData) o; - final InetAddress srcAddress = getSrcAddress(); - final InetAddress dstAddress = getDstAddress(); - return srcAddress.equals(other.getSrcAddress()) - && dstAddress.equals(other.getDstAddress()) - && getSrcPort() == other.getSrcPort() - && getDstPort() == other.getDstPort(); - } - - @Override - public int hashCode() { - return Objects.hash(getSrcAddress(), getDstAddress(), getSrcPort(), getDstPort()); - } -} |
