diff options
| -rw-r--r-- | api/system-current.txt | 19 | ||||
| -rw-r--r-- | api/test-current.txt | 19 | ||||
| -rw-r--r-- | core/java/android/net/util/SocketUtils.java | 45 | ||||
| -rw-r--r-- | packages/NetworkStack/src/android/net/apf/ApfFilter.java | 2 | ||||
| -rw-r--r-- | packages/NetworkStack/src/android/net/dhcp/DhcpClient.java | 5 | ||||
| -rw-r--r-- | packages/NetworkStack/src/android/net/ip/ConnectivityPacketTracker.java | 3 | ||||
| -rw-r--r-- | packages/NetworkStack/src/android/net/ip/IpNeighborMonitor.java | 3 | ||||
| -rw-r--r-- | services/net/java/android/net/netlink/NetlinkSocket.java | 2 |
8 files changed, 34 insertions, 64 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 41d8eea73013..6867cdf895df 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3516,19 +3516,16 @@ package android.net.metrics { package android.net.util { public class SocketUtils { - method public static void addArpEntry(java.net.Inet4Address, android.net.MacAddress, String, java.io.FileDescriptor) throws java.io.IOException; - method public static void attachControlPacketFilter(java.io.FileDescriptor, int) throws java.net.SocketException; - method public static void attachDhcpFilter(java.io.FileDescriptor) throws java.net.SocketException; - method public static void attachRaFilter(java.io.FileDescriptor, int) throws java.net.SocketException; - method public static void bindSocket(java.io.FileDescriptor, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; - 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 void connectSocket(java.io.FileDescriptor, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; + method public static void addArpEntry(@NonNull java.net.Inet4Address, @NonNull android.net.MacAddress, @NonNull String, @NonNull java.io.FileDescriptor) throws java.io.IOException; + method public static void attachControlPacketFilter(@NonNull java.io.FileDescriptor, int) throws java.net.SocketException; + method public static void attachDhcpFilter(@NonNull java.io.FileDescriptor) throws java.net.SocketException; + method public static void attachRaFilter(@NonNull java.io.FileDescriptor, int) throws java.net.SocketException; + method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException; + method public static void closeSocket(@Nullable 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[]); - method public static void sendTo(java.io.FileDescriptor, byte[], int, int, int, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; - method public static void setSocketTimeValueOption(java.io.FileDescriptor, int, int, long) throws android.system.ErrnoException; + method public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]); + method public static void setSocketTimeValueOption(@NonNull java.io.FileDescriptor, int, int, long) throws android.system.ErrnoException; } } diff --git a/api/test-current.txt b/api/test-current.txt index 271f7cbfa823..2c53dd6c2713 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -917,19 +917,16 @@ package android.net.metrics { package android.net.util { public class SocketUtils { - method public static void addArpEntry(java.net.Inet4Address, android.net.MacAddress, String, java.io.FileDescriptor) throws java.io.IOException; - method public static void attachControlPacketFilter(java.io.FileDescriptor, int) throws java.net.SocketException; - method public static void attachDhcpFilter(java.io.FileDescriptor) throws java.net.SocketException; - method public static void attachRaFilter(java.io.FileDescriptor, int) throws java.net.SocketException; - method public static void bindSocket(java.io.FileDescriptor, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; - 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 void connectSocket(java.io.FileDescriptor, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; + method public static void addArpEntry(@NonNull java.net.Inet4Address, @NonNull android.net.MacAddress, @NonNull String, @NonNull java.io.FileDescriptor) throws java.io.IOException; + method public static void attachControlPacketFilter(@NonNull java.io.FileDescriptor, int) throws java.net.SocketException; + method public static void attachDhcpFilter(@NonNull java.io.FileDescriptor) throws java.net.SocketException; + method public static void attachRaFilter(@NonNull java.io.FileDescriptor, int) throws java.net.SocketException; + method public static void bindSocketToInterface(@NonNull java.io.FileDescriptor, @NonNull String) throws android.system.ErrnoException; + method public static void closeSocket(@Nullable 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[]); - method public static void sendTo(java.io.FileDescriptor, byte[], int, int, int, java.net.SocketAddress) throws android.system.ErrnoException, java.net.SocketException; - method public static void setSocketTimeValueOption(java.io.FileDescriptor, int, int, long) throws android.system.ErrnoException; + method public static java.net.SocketAddress makePacketSocketAddress(int, @NonNull byte[]); + method public static void setSocketTimeValueOption(@NonNull java.io.FileDescriptor, int, int, long) throws android.system.ErrnoException; } } diff --git a/core/java/android/net/util/SocketUtils.java b/core/java/android/net/util/SocketUtils.java index fbb15ed693d9..5827f9ec9343 100644 --- a/core/java/android/net/util/SocketUtils.java +++ b/core/java/android/net/util/SocketUtils.java @@ -19,6 +19,8 @@ package android.net.util; import static android.system.OsConstants.SOL_SOCKET; import static android.system.OsConstants.SO_BINDTODEVICE; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.net.MacAddress; @@ -49,7 +51,7 @@ public class SocketUtils { * * <p>Data sent through the socket will go directly to the underlying network, ignoring VPNs. */ - public static void bindSocketToInterface(FileDescriptor socket, String iface) + public static void bindSocketToInterface(@NonNull FileDescriptor socket, @NonNull String iface) throws ErrnoException { // SO_BINDTODEVICE actually takes a string. This works because the first member // of struct ifreq is a NULL-terminated interface name. @@ -75,7 +77,7 @@ public class SocketUtils { /** * 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, @NonNull byte[] hwAddr) { return new PacketSocketAddress(ifIndex, hwAddr); } @@ -83,45 +85,21 @@ public class SocketUtils { * Set an option on a socket that takes a time value argument. */ public static void setSocketTimeValueOption( - FileDescriptor fd, int level, int option, long millis) throws ErrnoException { + @NonNull FileDescriptor fd, int level, int option, long millis) throws ErrnoException { Os.setsockoptTimeval(fd, level, option, StructTimeval.fromMillis(millis)); } /** - * Bind a socket to the specified address. - */ - public static void bindSocket(FileDescriptor fd, SocketAddress addr) - throws ErrnoException, SocketException { - Os.bind(fd, addr); - } - - /** - * Connect a socket to the specified address. - */ - public static void connectSocket(FileDescriptor fd, SocketAddress addr) - throws ErrnoException, SocketException { - Os.connect(fd, addr); - } - - /** - * Send a message on a socket, using the specified SocketAddress. - */ - public static void sendTo(FileDescriptor fd, byte[] bytes, int byteOffset, int byteCount, - int flags, SocketAddress addr) throws ErrnoException, SocketException { - Os.sendto(fd, bytes, byteOffset, byteCount, flags, addr); - } - - /** * @see IoBridge#closeAndSignalBlockedThreads(FileDescriptor) */ - public static void closeSocket(FileDescriptor fd) throws IOException { + public static void closeSocket(@Nullable FileDescriptor fd) throws IOException { IoBridge.closeAndSignalBlockedThreads(fd); } /** * Attaches a socket filter that accepts DHCP packets to the given socket. */ - public static void attachDhcpFilter(FileDescriptor fd) throws SocketException { + public static void attachDhcpFilter(@NonNull FileDescriptor fd) throws SocketException { NetworkUtils.attachDhcpFilter(fd); } @@ -130,7 +108,8 @@ public class SocketUtils { * @param fd the socket's {@link FileDescriptor}. * @param packetType the hardware address type, one of ARPHRD_*. */ - public static void attachRaFilter(FileDescriptor fd, int packetType) throws SocketException { + public static void attachRaFilter(@NonNull FileDescriptor fd, int packetType) + throws SocketException { NetworkUtils.attachRaFilter(fd, packetType); } @@ -142,7 +121,7 @@ public class SocketUtils { * @param fd the socket's {@link FileDescriptor}. * @param packetType the hardware address type, one of ARPHRD_*. */ - public static void attachControlPacketFilter(FileDescriptor fd, int packetType) + public static void attachControlPacketFilter(@NonNull FileDescriptor fd, int packetType) throws SocketException { NetworkUtils.attachControlPacketFilter(fd, packetType); } @@ -150,8 +129,8 @@ public class SocketUtils { /** * Add an entry into the ARP cache. */ - public static void addArpEntry(Inet4Address ipv4Addr, MacAddress ethAddr, String ifname, - FileDescriptor fd) throws IOException { + public static void addArpEntry(@NonNull Inet4Address ipv4Addr, @NonNull MacAddress ethAddr, + @NonNull String ifname, @NonNull FileDescriptor fd) throws IOException { NetworkUtils.addArpEntry(ipv4Addr, ethAddr, ifname, fd); } diff --git a/packages/NetworkStack/src/android/net/apf/ApfFilter.java b/packages/NetworkStack/src/android/net/apf/ApfFilter.java index 923f162c92a6..3dd90eeff767 100644 --- a/packages/NetworkStack/src/android/net/apf/ApfFilter.java +++ b/packages/NetworkStack/src/android/net/apf/ApfFilter.java @@ -475,7 +475,7 @@ public class ApfFilter { socket = Os.socket(AF_PACKET, SOCK_RAW, ETH_P_IPV6); SocketAddress addr = makePacketSocketAddress( (short) ETH_P_IPV6, mInterfaceParams.index); - SocketUtils.bindSocket(socket, addr); + Os.bind(socket, addr); SocketUtils.attachRaFilter(socket, mApfCapabilities.apfPacketFormat); } catch(SocketException|ErrnoException e) { Log.e(TAG, "Error starting filter", e); diff --git a/packages/NetworkStack/src/android/net/dhcp/DhcpClient.java b/packages/NetworkStack/src/android/net/dhcp/DhcpClient.java index b0e8da9a7fb7..0b7809e9f614 100644 --- a/packages/NetworkStack/src/android/net/dhcp/DhcpClient.java +++ b/packages/NetworkStack/src/android/net/dhcp/DhcpClient.java @@ -317,7 +317,7 @@ public class DhcpClient extends StateMachine { try { mPacketSock = Os.socket(AF_PACKET, SOCK_RAW, ETH_P_IP); SocketAddress addr = makePacketSocketAddress((short) ETH_P_IP, mIface.index); - SocketUtils.bindSocket(mPacketSock, addr); + Os.bind(mPacketSock, addr); SocketUtils.attachDhcpFilter(mPacketSock); } catch(SocketException|ErrnoException e) { Log.e(TAG, "Error creating packet socket", e); @@ -412,8 +412,7 @@ public class DhcpClient extends StateMachine { try { if (encap == DhcpPacket.ENCAP_L2) { if (DBG) Log.d(TAG, "Broadcasting " + description); - SocketUtils.sendTo( - mPacketSock, buf.array(), 0, buf.limit(), 0, mInterfaceBroadcastAddr); + Os.sendto(mPacketSock, buf.array(), 0, buf.limit(), 0, mInterfaceBroadcastAddr); } else if (encap == DhcpPacket.ENCAP_BOOTP && to.equals(INADDR_BROADCAST)) { if (DBG) Log.d(TAG, "Broadcasting " + description); // We only send L3-encapped broadcasts in DhcpRebindingState, diff --git a/packages/NetworkStack/src/android/net/ip/ConnectivityPacketTracker.java b/packages/NetworkStack/src/android/net/ip/ConnectivityPacketTracker.java index 649257ae3b5f..de548245447f 100644 --- a/packages/NetworkStack/src/android/net/ip/ConnectivityPacketTracker.java +++ b/packages/NetworkStack/src/android/net/ip/ConnectivityPacketTracker.java @@ -104,8 +104,7 @@ public class ConnectivityPacketTracker { try { s = Os.socket(AF_PACKET, SOCK_RAW | SOCK_NONBLOCK, 0); SocketUtils.attachControlPacketFilter(s, ARPHRD_ETHER); - SocketUtils.bindSocket( - s, makePacketSocketAddress((short) ETH_P_ALL, mInterface.index)); + Os.bind(s, makePacketSocketAddress((short) ETH_P_ALL, mInterface.index)); } catch (ErrnoException | IOException e) { logError("Failed to create packet tracking socket: ", e); closeFd(s); diff --git a/packages/NetworkStack/src/android/net/ip/IpNeighborMonitor.java b/packages/NetworkStack/src/android/net/ip/IpNeighborMonitor.java index b29d61793a61..6ae9a2b7f19b 100644 --- a/packages/NetworkStack/src/android/net/ip/IpNeighborMonitor.java +++ b/packages/NetworkStack/src/android/net/ip/IpNeighborMonitor.java @@ -34,7 +34,6 @@ import android.net.netlink.StructNdMsg; import android.net.util.NetworkStackUtils; import android.net.util.PacketReader; import android.net.util.SharedLog; -import android.net.util.SocketUtils; import android.os.Handler; import android.os.SystemClock; import android.system.ErrnoException; @@ -150,7 +149,7 @@ public class IpNeighborMonitor extends PacketReader { try { fd = Os.socket(AF_NETLINK, SOCK_DGRAM | SOCK_NONBLOCK, NETLINK_ROUTE); - SocketUtils.bindSocket(fd, makeNetlinkSocketAddress(0, OsConstants.RTMGRP_NEIGH)); + Os.bind(fd, makeNetlinkSocketAddress(0, OsConstants.RTMGRP_NEIGH)); NetlinkSocket.connectToKernel(fd); if (VDBG) { diff --git a/services/net/java/android/net/netlink/NetlinkSocket.java b/services/net/java/android/net/netlink/NetlinkSocket.java index 16f72bd53e15..4240d240ca23 100644 --- a/services/net/java/android/net/netlink/NetlinkSocket.java +++ b/services/net/java/android/net/netlink/NetlinkSocket.java @@ -109,7 +109,7 @@ public class NetlinkSocket { } public static void connectToKernel(FileDescriptor fd) throws ErrnoException, SocketException { - SocketUtils.connectSocket(fd, makeNetlinkSocketAddress(0, 0)); + Os.connect(fd, makeNetlinkSocketAddress(0, 0)); } private static void checkTimeout(long timeoutMs) { |