Make a v4 nattKeepalivePacket helper method am: df347448a1

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2616794

Change-Id: I93318e497128a74410367233b4263f2b5f85e164
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
chiachangwang
2023-06-07 02:51:26 +00:00
committed by Automerger Merge Worker

View File

@@ -55,15 +55,22 @@ public final class NattKeepalivePacketData extends KeepalivePacketData implement
public static NattKeepalivePacketData nattKeepalivePacket( public static NattKeepalivePacketData nattKeepalivePacket(
InetAddress srcAddress, int srcPort, InetAddress dstAddress, int dstPort) InetAddress srcAddress, int srcPort, InetAddress dstAddress, int dstPort)
throws InvalidPacketException { throws InvalidPacketException {
if (dstPort != NattSocketKeepalive.NATT_PORT) {
throw new InvalidPacketException(ERROR_INVALID_PORT);
}
if (!(srcAddress instanceof Inet4Address) || !(dstAddress instanceof Inet4Address)) { if (!(srcAddress instanceof Inet4Address) || !(dstAddress instanceof Inet4Address)) {
throw new InvalidPacketException(ERROR_INVALID_IP_ADDRESS); throw new InvalidPacketException(ERROR_INVALID_IP_ADDRESS);
} }
if (dstPort != NattSocketKeepalive.NATT_PORT) { return nattKeepalivePacketv4(
throw new InvalidPacketException(ERROR_INVALID_PORT); (Inet4Address) srcAddress, srcPort,
(Inet4Address) dstAddress, dstPort);
} }
private static NattKeepalivePacketData nattKeepalivePacketv4(
Inet4Address srcAddress, int srcPort, Inet4Address dstAddress, int dstPort)
throws InvalidPacketException {
int length = IPV4_HEADER_LENGTH + UDP_HEADER_LENGTH + 1; int length = IPV4_HEADER_LENGTH + UDP_HEADER_LENGTH + 1;
ByteBuffer buf = ByteBuffer.allocate(length); ByteBuffer buf = ByteBuffer.allocate(length);
buf.order(ByteOrder.BIG_ENDIAN); buf.order(ByteOrder.BIG_ENDIAN);