diff options
| author | 2019-05-13 14:37:31 +0000 | |
|---|---|---|
| committer | 2019-05-13 14:37:31 +0000 | |
| commit | 31e7bbccb1c12719b7c5b420ab4e103b71ebdb5c (patch) | |
| tree | 1de0b84012d0f9b8631e899ef79a96429688c33e | |
| parent | c31ccecf6c987504f7740815f0db560e33a605d5 (diff) | |
| parent | aedc602ebe88d544173c4161064bc6cd370a854e (diff) | |
Merge "Send message to add/remove NAT-T keepalive packet filter." into qt-dev
| -rw-r--r-- | packages/NetworkStack/src/android/net/ip/IpClient.java | 13 | ||||
| -rw-r--r-- | services/core/java/com/android/server/connectivity/KeepaliveTracker.java | 26 |
2 files changed, 19 insertions, 20 deletions
diff --git a/packages/NetworkStack/src/android/net/ip/IpClient.java b/packages/NetworkStack/src/android/net/ip/IpClient.java index dc74c041c35a..266b1b047a90 100644 --- a/packages/NetworkStack/src/android/net/ip/IpClient.java +++ b/packages/NetworkStack/src/android/net/ip/IpClient.java @@ -372,10 +372,6 @@ public class IpClient extends StateMachine { private boolean mMulticastFiltering; private long mStartTimeMillis; - /* This must match the definition in KeepaliveTracker.KeepaliveInfo */ - private static final int TYPE_NATT = 1; - private static final int TYPE_TCP = 2; - /** * Reading the snapshot is an asynchronous operation initiated by invoking * Callback.startReadPacketFilter() and completed when the WiFi Service responds with an @@ -705,7 +701,7 @@ public class IpClient extends StateMachine { * keepalive offload. */ public void addKeepalivePacketFilter(int slot, @NonNull TcpKeepalivePacketDataParcelable pkt) { - sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, TYPE_TCP, pkt); + sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, 0 /* Unused */, pkt); } /** @@ -714,7 +710,7 @@ public class IpClient extends StateMachine { */ public void addNattKeepalivePacketFilter(int slot, @NonNull NattKeepalivePacketDataParcelable pkt) { - sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, TYPE_NATT, pkt); + sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF, slot, 0 /* Unused */ , pkt); } /** @@ -1626,13 +1622,12 @@ public class IpClient extends StateMachine { case CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF: { final int slot = msg.arg1; - final int type = msg.arg2; if (mApfFilter != null) { - if (type == TYPE_NATT) { + if (msg.obj instanceof NattKeepalivePacketDataParcelable) { mApfFilter.addNattKeepalivePacketFilter(slot, (NattKeepalivePacketDataParcelable) msg.obj); - } else { + } else if (msg.obj instanceof TcpKeepalivePacketDataParcelable) { mApfFilter.addTcpKeepalivePacketFilter(slot, (TcpKeepalivePacketDataParcelable) msg.obj); } diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java index 0edab4fe3c34..3de2537cffc7 100644 --- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java +++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java @@ -327,6 +327,8 @@ public class KeepaliveTracker { Log.d(TAG, "Starting keepalive " + mSlot + " on " + mNai.name()); switch (mType) { case TYPE_NATT: + mNai.asyncChannel.sendMessage( + CMD_ADD_KEEPALIVE_PACKET_FILTER, slot, 0 /* Unused */, mPacket); mNai.asyncChannel .sendMessage(CMD_START_SOCKET_KEEPALIVE, slot, mInterval, mPacket); break; @@ -337,9 +339,8 @@ public class KeepaliveTracker { handleStopKeepalive(mNai, mSlot, ERROR_INVALID_SOCKET); return; } - mNai.asyncChannel - .sendMessage(CMD_ADD_KEEPALIVE_PACKET_FILTER, slot, 0 /* Unused */, - mPacket); + mNai.asyncChannel.sendMessage( + CMD_ADD_KEEPALIVE_PACKET_FILTER, slot, 0 /* Unused */, mPacket); // TODO: check result from apf and notify of failure as needed. mNai.asyncChannel .sendMessage(CMD_START_SOCKET_KEEPALIVE, slot, mInterval, mPacket); @@ -375,14 +376,17 @@ public class KeepaliveTracker { return; default: mStartedState = STOPPING; - if (mType == TYPE_NATT) { - mNai.asyncChannel.sendMessage(CMD_STOP_SOCKET_KEEPALIVE, mSlot); - } else if (mType == TYPE_TCP) { - mNai.asyncChannel.sendMessage(CMD_STOP_SOCKET_KEEPALIVE, mSlot); - mNai.asyncChannel.sendMessage(CMD_REMOVE_KEEPALIVE_PACKET_FILTER, mSlot); - mTcpController.stopSocketMonitor(mSlot); - } else { - Log.wtf(TAG, "Stopping keepalive with unknown type: " + mType); + switch (mType) { + case TYPE_TCP: + mTcpController.stopSocketMonitor(mSlot); + // fall through + case TYPE_NATT: + mNai.asyncChannel.sendMessage(CMD_STOP_SOCKET_KEEPALIVE, mSlot); + mNai.asyncChannel.sendMessage(CMD_REMOVE_KEEPALIVE_PACKET_FILTER, + mSlot); + break; + default: + Log.wtf(TAG, "Stopping keepalive with unknown type: " + mType); } } |