Merge "Add support for reading a snapshot of the APF data" into pi-dev

am: 20c294be69

Change-Id: I3b940f5a3b795f85d244882eaa7eca56bd9e167d
This commit is contained in:
Bernie Innocenti
2018-04-19 18:45:10 -07:00
committed by android-build-merger

View File

@@ -16,6 +16,7 @@
package android.net.ip;
import com.android.internal.util.HexDump;
import com.android.internal.util.MessageUtils;
import com.android.internal.util.WakeupMessage;
@@ -142,6 +143,12 @@ public class IpClient extends StateMachine {
// Install an APF program to filter incoming packets.
public void installPacketFilter(byte[] filter) {}
// Asynchronously read back the APF program & data buffer from the wifi driver.
// Due to Wifi HAL limitations, the current implementation only supports dumping the entire
// buffer. In response to this request, the driver returns the data buffer asynchronously
// by sending an IpClient#EVENT_READ_PACKET_FILTER_COMPLETE message.
public void startReadPacketFilter() {}
// If multicast filtering cannot be accomplished with APF, this function will be called to
// actuate multicast filtering using another means.
public void setFallbackMulticastFilter(boolean enabled) {}
@@ -248,6 +255,11 @@ public class IpClient extends StateMachine {
log("installPacketFilter(byte[" + filter.length + "])");
}
@Override
public void startReadPacketFilter() {
mCallback.startReadPacketFilter();
log("startReadPacketFilter()");
}
@Override
public void setFallbackMulticastFilter(boolean enabled) {
mCallback.setFallbackMulticastFilter(enabled);
log("setFallbackMulticastFilter(" + enabled + ")");
@@ -559,6 +571,7 @@ public class IpClient extends StateMachine {
private static final int CMD_SET_MULTICAST_FILTER = 9;
private static final int EVENT_PROVISIONING_TIMEOUT = 10;
private static final int EVENT_DHCPACTION_TIMEOUT = 11;
private static final int EVENT_READ_PACKET_FILTER_COMPLETE = 12;
private static final int MAX_LOG_RECORDS = 500;
private static final int MAX_PACKET_RECORDS = 100;
@@ -611,6 +624,7 @@ public class IpClient extends StateMachine {
private ApfFilter mApfFilter;
private boolean mMulticastFiltering;
private long mStartTimeMillis;
private byte[] mApfDataSnapshot;
public static class Dependencies {
public INetworkManagementService getNMS() {
@@ -823,6 +837,10 @@ public class IpClient extends StateMachine {
sendMessage(EVENT_PRE_DHCP_ACTION_COMPLETE);
}
public void readPacketFilterComplete(byte[] data) {
sendMessage(EVENT_READ_PACKET_FILTER_COMPLETE, data);
}
/**
* Set the TCP buffer sizes to use.
*
@@ -863,6 +881,7 @@ public class IpClient extends StateMachine {
final ProvisioningConfiguration provisioningConfig = mConfiguration;
final ApfCapabilities apfCapabilities = (provisioningConfig != null)
? provisioningConfig.mApfCapabilities : null;
final byte[] apfDataSnapshot = mApfDataSnapshot;
IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
pw.println(mTag + " APF dump:");
@@ -880,6 +899,14 @@ public class IpClient extends StateMachine {
}
}
pw.decreaseIndent();
pw.println(mTag + " latest APF data snapshot: ");
pw.increaseIndent();
if (apfDataSnapshot != null) {
pw.println(HexDump.dumpHexString(apfDataSnapshot));
} else {
pw.println("No last snapshot.");
}
pw.decreaseIndent();
pw.println();
pw.println(mTag + " current ProvisioningConfiguration:");
@@ -1676,6 +1703,11 @@ public class IpClient extends StateMachine {
break;
}
case EVENT_READ_PACKET_FILTER_COMPLETE: {
mApfDataSnapshot = (byte[]) msg.obj;
break;
}
case EVENT_DHCPACTION_TIMEOUT:
stopDhcpAction();
break;