Merge "Add SocketUtils for NetworkStack"

am: cec60fa56a

Change-Id: I0db40afbf2de55d77d9d5493e556f499d2383f59
This commit is contained in:
Remi NGUYEN VAN
2019-01-28 21:19:36 -08:00
committed by android-build-merger
5 changed files with 60 additions and 2 deletions

View File

@@ -3241,6 +3241,9 @@ package android.net {
method public static void setThreadStatsTagApp(); method public static void setThreadStatsTagApp();
method public static void setThreadStatsTagBackup(); method public static void setThreadStatsTagBackup();
method public static void setThreadStatsTagRestore(); method public static void setThreadStatsTagRestore();
field public static final int TAG_SYSTEM_DHCP = -192; // 0xffffff40
field public static final int TAG_SYSTEM_DHCP_SERVER = -186; // 0xffffff46
field public static final int TAG_SYSTEM_PROBE = -190; // 0xffffff42
} }
public class VpnService extends android.app.Service { public class VpnService extends android.app.Service {
@@ -3266,6 +3269,8 @@ package android.net.apf {
public class ApfCapabilities { public class ApfCapabilities {
ctor public ApfCapabilities(int, int, int); ctor public ApfCapabilities(int, int, int);
method public boolean getApfDrop8023Frames(android.content.Context);
method public int[] getApfEthTypeBlackList(android.content.Context);
method public boolean hasDataAccess(); method public boolean hasDataAccess();
field public final int apfPacketFormat; field public final int apfPacketFormat;
field public final int apfVersionSupported; field public final int apfVersionSupported;
@@ -3463,6 +3468,7 @@ package android.net.util {
public class SocketUtils { public class SocketUtils {
method public static void bindSocketToInterface(java.io.FileDescriptor, String) throws android.system.ErrnoException; method public static void bindSocketToInterface(java.io.FileDescriptor, String) throws android.system.ErrnoException;
method public static void closeSocket(java.io.FileDescriptor) throws java.io.IOException;
method public static java.net.SocketAddress makeNetlinkSocketAddress(int, int); method public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
method public static java.net.SocketAddress makePacketSocketAddress(short, int); method public static java.net.SocketAddress makePacketSocketAddress(short, int);
method public static java.net.SocketAddress makePacketSocketAddress(int, byte[]); method public static java.net.SocketAddress makePacketSocketAddress(int, byte[]);

View File

@@ -692,6 +692,9 @@ package android.net {
method public static long getLoopbackRxPackets(); method public static long getLoopbackRxPackets();
method public static long getLoopbackTxBytes(); method public static long getLoopbackTxBytes();
method public static long getLoopbackTxPackets(); method public static long getLoopbackTxPackets();
field public static final int TAG_SYSTEM_DHCP = -192; // 0xffffff40
field public static final int TAG_SYSTEM_DHCP_SERVER = -186; // 0xffffff46
field public static final int TAG_SYSTEM_PROBE = -190; // 0xffffff42
} }
} }
@@ -700,6 +703,8 @@ package android.net.apf {
public class ApfCapabilities { public class ApfCapabilities {
ctor public ApfCapabilities(int, int, int); ctor public ApfCapabilities(int, int, int);
method public boolean getApfDrop8023Frames(android.content.Context);
method public int[] getApfEthTypeBlackList(android.content.Context);
method public boolean hasDataAccess(); method public boolean hasDataAccess();
field public final int apfPacketFormat; field public final int apfPacketFormat;
field public final int apfVersionSupported; field public final int apfVersionSupported;
@@ -893,6 +898,18 @@ package android.net.metrics {
} }
package android.net.util {
public class SocketUtils {
method public static void bindSocketToInterface(java.io.FileDescriptor, String) throws android.system.ErrnoException;
method public static void closeSocket(java.io.FileDescriptor) throws java.io.IOException;
method public static java.net.SocketAddress makeNetlinkSocketAddress(int, int);
method public static java.net.SocketAddress makePacketSocketAddress(short, int);
method public static java.net.SocketAddress makePacketSocketAddress(int, byte[]);
}
}
package android.os { package android.os {
public static class Build.VERSION { public static class Build.VERSION {

View File

@@ -128,10 +128,14 @@ public class TrafficStats {
public static final int TAG_SYSTEM_APP = 0xFFFFFF05; public static final int TAG_SYSTEM_APP = 0xFFFFFF05;
/** @hide */ /** @hide */
@SystemApi
@TestApi
public static final int TAG_SYSTEM_DHCP = 0xFFFFFF40; public static final int TAG_SYSTEM_DHCP = 0xFFFFFF40;
/** @hide */ /** @hide */
public static final int TAG_SYSTEM_NTP = 0xFFFFFF41; public static final int TAG_SYSTEM_NTP = 0xFFFFFF41;
/** @hide */ /** @hide */
@SystemApi
@TestApi
public static final int TAG_SYSTEM_PROBE = 0xFFFFFF42; public static final int TAG_SYSTEM_PROBE = 0xFFFFFF42;
/** @hide */ /** @hide */
public static final int TAG_SYSTEM_NEIGHBOR = 0xFFFFFF43; public static final int TAG_SYSTEM_NEIGHBOR = 0xFFFFFF43;
@@ -140,6 +144,8 @@ public class TrafficStats {
/** @hide */ /** @hide */
public static final int TAG_SYSTEM_PAC = 0xFFFFFF45; public static final int TAG_SYSTEM_PAC = 0xFFFFFF45;
/** @hide */ /** @hide */
@SystemApi
@TestApi
public static final int TAG_SYSTEM_DHCP_SERVER = 0xFFFFFF46; public static final int TAG_SYSTEM_DHCP_SERVER = 0xFFFFFF46;
private static INetworkStatsService sStatsService; private static INetworkStatsService sStatsService;

View File

@@ -18,6 +18,9 @@ package android.net.apf;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.TestApi; import android.annotation.TestApi;
import android.content.Context;
import com.android.internal.R;
/** /**
* APF program support capabilities. * APF program support capabilities.
@@ -74,4 +77,18 @@ public class ApfCapabilities {
public boolean hasDataAccess() { public boolean hasDataAccess() {
return apfVersionSupported >= 4; return apfVersionSupported >= 4;
} }
/**
* @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames.
*/
public boolean getApfDrop8023Frames(Context context) {
return context.getResources().getBoolean(R.bool.config_apfDrop802_3Frames);
}
/**
* @return An array of blacklisted EtherType, packets with EtherTypes within it will be dropped.
*/
public int[] getApfEthTypeBlackList(Context context) {
return context.getResources().getIntArray(R.array.config_apfEthTypeBlackList);
}
} }

View File

@@ -20,13 +20,17 @@ import static android.system.OsConstants.SOL_SOCKET;
import static android.system.OsConstants.SO_BINDTODEVICE; import static android.system.OsConstants.SO_BINDTODEVICE;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.net.NetworkUtils; import android.net.NetworkUtils;
import android.system.ErrnoException; import android.system.ErrnoException;
import android.system.NetlinkSocketAddress; import android.system.NetlinkSocketAddress;
import android.system.Os; import android.system.Os;
import android.system.PacketSocketAddress; import android.system.PacketSocketAddress;
import libcore.io.IoBridge;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.IOException;
import java.net.SocketAddress; import java.net.SocketAddress;
/** /**
@@ -34,6 +38,7 @@ import java.net.SocketAddress;
* @hide * @hide
*/ */
@SystemApi @SystemApi
@TestApi
public class SocketUtils { public class SocketUtils {
/** /**
* Create a raw datagram socket that is bound to an interface. * Create a raw datagram socket that is bound to an interface.
@@ -57,18 +62,25 @@ public class SocketUtils {
} }
/** /**
* Make a socket address to bind to packet sockets. * Make socket address that packet sockets can bind to.
*/ */
public static SocketAddress makePacketSocketAddress(short protocol, int ifIndex) { public static SocketAddress makePacketSocketAddress(short protocol, int ifIndex) {
return new PacketSocketAddress(protocol, ifIndex); return new PacketSocketAddress(protocol, ifIndex);
} }
/** /**
* Make a socket address to send raw packets. * Make a socket address that packet socket can send packets to.
*/ */
public static SocketAddress makePacketSocketAddress(int ifIndex, byte[] hwAddr) { public static SocketAddress makePacketSocketAddress(int ifIndex, byte[] hwAddr) {
return new PacketSocketAddress(ifIndex, hwAddr); return new PacketSocketAddress(ifIndex, hwAddr);
} }
/**
* @see IoBridge#closeAndSignalBlockedThreads(FileDescriptor)
*/
public static void closeSocket(FileDescriptor fd) throws IOException {
IoBridge.closeAndSignalBlockedThreads(fd);
}
private SocketUtils() {} private SocketUtils() {}
} }