Loading Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -859,13 +859,17 @@ filegroup { "core/java/android/annotation/NonNull.java", "core/java/android/annotation/Nullable.java", "core/java/android/annotation/IntDef.java", "core/java/android/annotation/IntRange.java", "core/java/android/annotation/UnsupportedAppUsage.java", "core/java/android/net/DhcpResults.java", "core/java/android/util/LocalLog.java", "core/java/com/android/internal/annotations/VisibleForTesting.java", "core/java/com/android/internal/util/HexDump.java", "core/java/com/android/internal/util/IndentingPrintWriter.java", "core/java/com/android/internal/util/IState.java", "core/java/com/android/internal/util/MessageUtils.java", "core/java/com/android/internal/util/Preconditions.java", "core/java/com/android/internal/util/RingBufferIndices.java", "core/java/com/android/internal/util/State.java", "core/java/com/android/internal/util/StateMachine.java", "core/java/com/android/internal/util/WakeupMessage.java", Loading packages/NetworkStack/src/android/net/apf/ApfFilter.java +24 −6 Original line number Diff line number Diff line Loading @@ -26,11 +26,6 @@ import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_UDP; import static android.system.OsConstants.SOCK_RAW; import static com.android.internal.util.BitUtils.bytesToBEInt; import static com.android.internal.util.BitUtils.getUint16; import static com.android.internal.util.BitUtils.getUint32; import static com.android.internal.util.BitUtils.getUint8; import static com.android.internal.util.BitUtils.uint32; import static com.android.server.util.NetworkStackConstants.ICMPV6_ECHO_REQUEST_TYPE; import static com.android.server.util.NetworkStackConstants.ICMPV6_NEIGHBOR_ADVERTISEMENT; import static com.android.server.util.NetworkStackConstants.ICMPV6_ROUTER_ADVERTISEMENT; Loading Loading @@ -1586,6 +1581,29 @@ public class ApfFilter { // TODO: move to android.net.NetworkUtils @VisibleForTesting public static int ipv4BroadcastAddress(byte[] addrBytes, int prefixLength) { return bytesToBEInt(addrBytes) | (int) (uint32(-1) >>> prefixLength); return bytesToBEInt(addrBytes) | (int) (Integer.toUnsignedLong(-1) >>> prefixLength); } private static int uint8(byte b) { return b & 0xff; } private static int getUint16(ByteBuffer buffer, int position) { return buffer.getShort(position) & 0xffff; } private static long getUint32(ByteBuffer buffer, int position) { return Integer.toUnsignedLong(buffer.getInt(position)); } private static int getUint8(ByteBuffer buffer, int position) { return uint8(buffer.get(position)); } private static int bytesToBEInt(byte[] bytes) { return (uint8(bytes[0]) << 24) + (uint8(bytes[1]) << 16) + (uint8(bytes[2]) << 8) + (uint8(bytes[3])); } } packages/NetworkStack/src/android/net/dhcp/DhcpClient.java +3 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ import static android.system.OsConstants.SO_BROADCAST; import static android.system.OsConstants.SO_RCVBUF; import static android.system.OsConstants.SO_REUSEADDR; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import android.content.Context; import android.net.DhcpResults; import android.net.NetworkUtils; Loading Loading @@ -328,7 +330,7 @@ public class DhcpClient extends StateMachine { Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_REUSEADDR, 1); Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_BROADCAST, 1); Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_RCVBUF, 0); Os.bind(mUdpSock, Inet4Address.ANY, DhcpPacket.DHCP_CLIENT); Os.bind(mUdpSock, IPV4_ADDR_ANY, DhcpPacket.DHCP_CLIENT); } catch(SocketException|ErrnoException e) { Log.e(TAG, "Error creating UDP socket", e); return false; Loading packages/NetworkStack/src/android/net/dhcp/DhcpLeaseRepository.java +2 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.net.shared.Inet4AddressUtils.inet4AddressToIntHTH; import static android.net.shared.Inet4AddressUtils.intToInet4AddressHTH; import static android.net.shared.Inet4AddressUtils.prefixLengthToV4NetmaskIntHTH; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_BITS; import static java.lang.Math.min; Loading Loading @@ -201,7 +202,7 @@ class DhcpLeaseRepository { private static boolean isIpAddrOutsidePrefix(@NonNull IpPrefix prefix, @Nullable Inet4Address addr) { return addr != null && !addr.equals(Inet4Address.ANY) && !prefix.contains(addr); return addr != null && !addr.equals(IPV4_ADDR_ANY) && !prefix.contains(addr); } @Nullable Loading packages/NetworkStack/src/android/net/dhcp/DhcpPacket.java +7 −4 Original line number Diff line number Diff line package android.net.dhcp; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ALL; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import android.annotation.Nullable; import android.net.DhcpResults; import android.net.LinkAddress; Loading Loading @@ -43,8 +46,8 @@ public abstract class DhcpPacket { public static final int MINIMUM_LEASE = 60; public static final int INFINITE_LEASE = (int) 0xffffffff; public static final Inet4Address INADDR_ANY = (Inet4Address) Inet4Address.ANY; public static final Inet4Address INADDR_BROADCAST = (Inet4Address) Inet4Address.ALL; public static final Inet4Address INADDR_ANY = IPV4_ADDR_ANY; public static final Inet4Address INADDR_BROADCAST = IPV4_ADDR_ALL; public static final byte[] ETHER_BROADCAST = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, Loading Loading @@ -1212,9 +1215,9 @@ public abstract class DhcpPacket { */ public DhcpResults toDhcpResults() { Inet4Address ipAddress = mYourIp; if (ipAddress.equals(Inet4Address.ANY)) { if (ipAddress.equals(IPV4_ADDR_ANY)) { ipAddress = mClientIp; if (ipAddress.equals(Inet4Address.ANY)) { if (ipAddress.equals(IPV4_ADDR_ANY)) { return null; } } Loading Loading
Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -859,13 +859,17 @@ filegroup { "core/java/android/annotation/NonNull.java", "core/java/android/annotation/Nullable.java", "core/java/android/annotation/IntDef.java", "core/java/android/annotation/IntRange.java", "core/java/android/annotation/UnsupportedAppUsage.java", "core/java/android/net/DhcpResults.java", "core/java/android/util/LocalLog.java", "core/java/com/android/internal/annotations/VisibleForTesting.java", "core/java/com/android/internal/util/HexDump.java", "core/java/com/android/internal/util/IndentingPrintWriter.java", "core/java/com/android/internal/util/IState.java", "core/java/com/android/internal/util/MessageUtils.java", "core/java/com/android/internal/util/Preconditions.java", "core/java/com/android/internal/util/RingBufferIndices.java", "core/java/com/android/internal/util/State.java", "core/java/com/android/internal/util/StateMachine.java", "core/java/com/android/internal/util/WakeupMessage.java", Loading
packages/NetworkStack/src/android/net/apf/ApfFilter.java +24 −6 Original line number Diff line number Diff line Loading @@ -26,11 +26,6 @@ import static android.system.OsConstants.IPPROTO_ICMPV6; import static android.system.OsConstants.IPPROTO_UDP; import static android.system.OsConstants.SOCK_RAW; import static com.android.internal.util.BitUtils.bytesToBEInt; import static com.android.internal.util.BitUtils.getUint16; import static com.android.internal.util.BitUtils.getUint32; import static com.android.internal.util.BitUtils.getUint8; import static com.android.internal.util.BitUtils.uint32; import static com.android.server.util.NetworkStackConstants.ICMPV6_ECHO_REQUEST_TYPE; import static com.android.server.util.NetworkStackConstants.ICMPV6_NEIGHBOR_ADVERTISEMENT; import static com.android.server.util.NetworkStackConstants.ICMPV6_ROUTER_ADVERTISEMENT; Loading Loading @@ -1586,6 +1581,29 @@ public class ApfFilter { // TODO: move to android.net.NetworkUtils @VisibleForTesting public static int ipv4BroadcastAddress(byte[] addrBytes, int prefixLength) { return bytesToBEInt(addrBytes) | (int) (uint32(-1) >>> prefixLength); return bytesToBEInt(addrBytes) | (int) (Integer.toUnsignedLong(-1) >>> prefixLength); } private static int uint8(byte b) { return b & 0xff; } private static int getUint16(ByteBuffer buffer, int position) { return buffer.getShort(position) & 0xffff; } private static long getUint32(ByteBuffer buffer, int position) { return Integer.toUnsignedLong(buffer.getInt(position)); } private static int getUint8(ByteBuffer buffer, int position) { return uint8(buffer.get(position)); } private static int bytesToBEInt(byte[] bytes) { return (uint8(bytes[0]) << 24) + (uint8(bytes[1]) << 16) + (uint8(bytes[2]) << 8) + (uint8(bytes[3])); } }
packages/NetworkStack/src/android/net/dhcp/DhcpClient.java +3 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ import static android.system.OsConstants.SO_BROADCAST; import static android.system.OsConstants.SO_RCVBUF; import static android.system.OsConstants.SO_REUSEADDR; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import android.content.Context; import android.net.DhcpResults; import android.net.NetworkUtils; Loading Loading @@ -328,7 +330,7 @@ public class DhcpClient extends StateMachine { Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_REUSEADDR, 1); Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_BROADCAST, 1); Os.setsockoptInt(mUdpSock, SOL_SOCKET, SO_RCVBUF, 0); Os.bind(mUdpSock, Inet4Address.ANY, DhcpPacket.DHCP_CLIENT); Os.bind(mUdpSock, IPV4_ADDR_ANY, DhcpPacket.DHCP_CLIENT); } catch(SocketException|ErrnoException e) { Log.e(TAG, "Error creating UDP socket", e); return false; Loading
packages/NetworkStack/src/android/net/dhcp/DhcpLeaseRepository.java +2 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.net.shared.Inet4AddressUtils.inet4AddressToIntHTH; import static android.net.shared.Inet4AddressUtils.intToInet4AddressHTH; import static android.net.shared.Inet4AddressUtils.prefixLengthToV4NetmaskIntHTH; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_BITS; import static java.lang.Math.min; Loading Loading @@ -201,7 +202,7 @@ class DhcpLeaseRepository { private static boolean isIpAddrOutsidePrefix(@NonNull IpPrefix prefix, @Nullable Inet4Address addr) { return addr != null && !addr.equals(Inet4Address.ANY) && !prefix.contains(addr); return addr != null && !addr.equals(IPV4_ADDR_ANY) && !prefix.contains(addr); } @Nullable Loading
packages/NetworkStack/src/android/net/dhcp/DhcpPacket.java +7 −4 Original line number Diff line number Diff line package android.net.dhcp; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ALL; import static com.android.server.util.NetworkStackConstants.IPV4_ADDR_ANY; import android.annotation.Nullable; import android.net.DhcpResults; import android.net.LinkAddress; Loading Loading @@ -43,8 +46,8 @@ public abstract class DhcpPacket { public static final int MINIMUM_LEASE = 60; public static final int INFINITE_LEASE = (int) 0xffffffff; public static final Inet4Address INADDR_ANY = (Inet4Address) Inet4Address.ANY; public static final Inet4Address INADDR_BROADCAST = (Inet4Address) Inet4Address.ALL; public static final Inet4Address INADDR_ANY = IPV4_ADDR_ANY; public static final Inet4Address INADDR_BROADCAST = IPV4_ADDR_ALL; public static final byte[] ETHER_BROADCAST = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, Loading Loading @@ -1212,9 +1215,9 @@ public abstract class DhcpPacket { */ public DhcpResults toDhcpResults() { Inet4Address ipAddress = mYourIp; if (ipAddress.equals(Inet4Address.ANY)) { if (ipAddress.equals(IPV4_ADDR_ANY)) { ipAddress = mClientIp; if (ipAddress.equals(Inet4Address.ANY)) { if (ipAddress.equals(IPV4_ADDR_ANY)) { return null; } } Loading