From 77abd9487677c409ab682f458cf9cf5540fb278c Mon Sep 17 00:00:00 2001 From: Aaron Huang Date: Thu, 2 May 2019 21:14:20 +0800 Subject: [PATCH] Send message to add/remove NAT-T keepalive packet filter. Remove definition of TYPE_NATT and TYPE_TCP since the type can be identified by checking message.obj is an instance of NattKeepalivePacketData or TcpKeepalivePacketData. It's more simple and won't have dependency on KeepaliveInfo. Bug: 33530442 Test: atest FrameworksNetTests atest NetworkStackTests Change-Id: Ic97ffe9ff5781778efd264460809f5059f0f4230 --- .../server/connectivity/KeepaliveTracker.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java index bde430cc29..1e7335f61b 100644 --- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java +++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java @@ -347,6 +347,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; @@ -357,9 +359,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); @@ -395,14 +396,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); } }