Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7d66598 authored by Aaron Huang's avatar Aaron Huang Committed by Gerrit Code Review
Browse files

Merge "Add keepalive related methods and fields to system APIs"

parents 9bda007c 08d9ade8
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -4290,6 +4290,14 @@ package android.net {
    method public void onUpstreamChanged(@Nullable android.net.Network);
  }
  public class InvalidPacketException extends java.lang.Exception {
    ctor public InvalidPacketException(int);
    field public static final int ERROR_INVALID_IP_ADDRESS = -21; // 0xffffffeb
    field public static final int ERROR_INVALID_LENGTH = -23; // 0xffffffe9
    field public static final int ERROR_INVALID_PORT = -22; // 0xffffffea
    field public final int error;
  }
  public final class IpConfiguration implements android.os.Parcelable {
    ctor public IpConfiguration();
    ctor public IpConfiguration(@NonNull android.net.IpConfiguration);
@@ -4340,6 +4348,15 @@ package android.net {
    method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
  }
  public class KeepalivePacketData {
    ctor protected KeepalivePacketData(@NonNull java.net.InetAddress, int, @NonNull java.net.InetAddress, int, @NonNull byte[]) throws android.net.InvalidPacketException;
    method @NonNull public byte[] getPacket();
    field @NonNull public final java.net.InetAddress dstAddress;
    field public final int dstPort;
    field @NonNull public final java.net.InetAddress srcAddress;
    field public final int srcPort;
  }
  public class LinkAddress implements android.os.Parcelable {
    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int, int, int);
    ctor public LinkAddress(@NonNull java.net.InetAddress, @IntRange(from=0, to=128) int);
+61 −0
Original line number Diff line number Diff line
/*
 * 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 android.annotation.IntDef;
import android.annotation.SystemApi;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Thrown when a packet is invalid.
 * @hide
 */
@SystemApi
public class InvalidPacketException extends Exception {
    public final int error;

    // Must match SocketKeepalive#ERROR_INVALID_IP_ADDRESS.
    /** Invalid IP address. */
    public static final int ERROR_INVALID_IP_ADDRESS = -21;

    // Must match SocketKeepalive#ERROR_INVALID_PORT.
    /** Invalid port number. */
    public static final int ERROR_INVALID_PORT = -22;

    // Must match SocketKeepalive#ERROR_INVALID_LENGTH.
    /** Invalid packet length. */
    public static final int ERROR_INVALID_LENGTH = -23;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = { "ERROR_" }, value = {
        ERROR_INVALID_IP_ADDRESS,
        ERROR_INVALID_PORT,
        ERROR_INVALID_LENGTH
    })
    public @interface ErrorCode {}

    /**
     * This packet is invalid.
     * See the error code for details.
     */
    public InvalidPacketException(@ErrorCode final int error) {
        this.error = error;
    }
}
+18 −30
Original line number Diff line number Diff line
@@ -16,13 +16,13 @@

package android.net;

import static android.net.SocketKeepalive.ERROR_INVALID_IP_ADDRESS;
import static android.net.SocketKeepalive.ERROR_INVALID_PORT;
import static android.net.InvalidPacketException.ERROR_INVALID_IP_ADDRESS;
import static android.net.InvalidPacketException.ERROR_INVALID_PORT;

import android.net.SocketKeepalive.InvalidPacketException;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.net.util.IpUtils;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

import java.net.InetAddress;
@@ -33,13 +33,16 @@ import java.net.InetAddress;
 *
 * @hide
 */
public class KeepalivePacketData implements Parcelable {
@SystemApi
public class KeepalivePacketData {
    private static final String TAG = "KeepalivePacketData";

    /** Source IP address */
    @NonNull
    public final InetAddress srcAddress;

    /** Destination IP address */
    @NonNull
    public final InetAddress dstAddress;

    /** Source port */
@@ -51,13 +54,14 @@ public class KeepalivePacketData implements Parcelable {
    /** Packet data. A raw byte string of packet data, not including the link-layer header. */
    private final byte[] mPacket;

    protected static final int IPV4_HEADER_LENGTH = 20;
    protected static final int UDP_HEADER_LENGTH = 8;

    // This should only be constructed via static factory methods, such as
    // nattKeepalivePacket
    protected KeepalivePacketData(InetAddress srcAddress, int srcPort,
            InetAddress dstAddress, int dstPort, byte[] data) throws InvalidPacketException {
    // nattKeepalivePacket.
    /**
     * A holding class for data necessary to build a keepalive packet.
     */
    protected KeepalivePacketData(@NonNull InetAddress srcAddress, int srcPort,
            @NonNull InetAddress dstAddress, int dstPort,
                    @NonNull byte[] data) throws InvalidPacketException {
        this.srcAddress = srcAddress;
        this.dstAddress = dstAddress;
        this.srcPort = srcPort;
@@ -78,16 +82,12 @@ public class KeepalivePacketData implements Parcelable {
        }
    }

    @NonNull
    public byte[] getPacket() {
        return mPacket.clone();
    }

    /* Parcelable Implementation */
    public int describeContents() {
        return 0;
    }

    /** Write to parcel */
    /** @hide */
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(srcAddress.getHostAddress());
        out.writeString(dstAddress.getHostAddress());
@@ -96,6 +96,7 @@ public class KeepalivePacketData implements Parcelable {
        out.writeByteArray(mPacket);
    }

    /** @hide */
    protected KeepalivePacketData(Parcel in) {
        srcAddress = NetworkUtils.numericToInetAddress(in.readString());
        dstAddress = NetworkUtils.numericToInetAddress(in.readString());
@@ -103,17 +104,4 @@ public class KeepalivePacketData implements Parcelable {
        dstPort = in.readInt();
        mPacket = in.createByteArray();
    }

    /** Parcelable Creator */
    public static final @android.annotation.NonNull Parcelable.Creator<KeepalivePacketData> CREATOR =
            new Parcelable.Creator<KeepalivePacketData>() {
                public KeepalivePacketData createFromParcel(Parcel in) {
                    return new KeepalivePacketData(in);
                }

                public KeepalivePacketData[] newArray(int size) {
                    return new KeepalivePacketData[size];
                }
            };

}
+3 −1
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package android.net;
import static android.net.SocketKeepalive.ERROR_INVALID_IP_ADDRESS;
import static android.net.SocketKeepalive.ERROR_INVALID_PORT;

import android.net.SocketKeepalive.InvalidPacketException;
import android.net.util.IpUtils;
import android.os.Parcel;
import android.os.Parcelable;
@@ -32,6 +31,9 @@ import java.nio.ByteOrder;

/** @hide */
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
    private NattKeepalivePacketData(InetAddress srcAddress, int srcPort,
+0 −11
Original line number Diff line number Diff line
@@ -147,17 +147,6 @@ public abstract class SocketKeepalive implements AutoCloseable {
        }
    }

    /**
     * This packet is invalid.
     * See the error code for details.
     * @hide
     */
    public static class InvalidPacketException extends ErrorCodeException {
        public InvalidPacketException(final int error) {
            super(error);
        }
    }

    @NonNull final IConnectivityManager mService;
    @NonNull final Network mNetwork;
    @NonNull final ParcelFileDescriptor mPfd;
Loading