Merge "[CTT-2] Clean up unused {function, exception} and improve readability" am: d6ca2420bb am: 45805fe7f0 am: 303f4de48e

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

Change-Id: I59a11e0e225f72e253201b1ba5a3ffb55e024caa
This commit is contained in:
Maciej Żenczykowski
2021-07-13 02:58:26 +00:00
committed by Automerger Merge Worker

View File

@@ -1443,25 +1443,6 @@ public class BpfCoordinator {
return addr6;
}
@Nullable
private Inet4Address ipv4MappedAddressBytesToIpv4Address(final byte[] addr46) {
if (addr46.length != 16) return null;
if (addr46[0] != 0 || addr46[1] != 0 || addr46[2] != 0 || addr46[3] != 0
|| addr46[4] != 0 || addr46[5] != 0 || addr46[6] != 0 || addr46[7] != 0
|| addr46[8] != 0 && addr46[9] != 0 || (addr46[10] & 0xff) != 0xff
|| (addr46[11] & 0xff) != 0xff) {
return null;
}
final byte[] addr4 = new byte[4];
addr4[0] = addr46[12];
addr4[1] = addr46[13];
addr4[2] = addr46[14];
addr4[3] = addr46[15];
return parseIPv4Address(addr4);
}
// TODO: parse CTA_PROTOINFO of conntrack event in ConntrackMonitor. For TCP, only add rules
// while TCP status is established.
@VisibleForTesting
@@ -1861,7 +1842,7 @@ public class BpfCoordinator {
try {
final InetAddress ia = Inet4Address.getByAddress(addrBytes);
if (ia instanceof Inet4Address) return (Inet4Address) ia;
} catch (UnknownHostException | IllegalArgumentException e) {
} catch (UnknownHostException e) {
mLog.e("Failed to parse IPv4 address: " + e);
}
return null;
@@ -1899,24 +1880,25 @@ public class BpfCoordinator {
private void refreshAllConntrackTimeouts() {
final long now = mDeps.elapsedRealtimeNanos();
// TODO: Consider ignoring TCP traffic on upstream and monitor on downstream only
// because TCP is a bidirectional traffic. Probably don't need to extend timeout by
// both directions for TCP.
mBpfCoordinatorShim.tetherOffloadRuleForEach(UPSTREAM, (k, v) -> {
if ((now - v.lastUsed) / 1_000_000 < CONNTRACK_TIMEOUT_UPDATE_INTERVAL_MS) {
updateConntrackTimeout((byte) k.l4proto,
parseIPv4Address(k.src4), (short) k.srcPort,
parseIPv4Address(k.dst4), (short) k.dstPort);
}
});
// Reverse the source and destination {address, port} from downstream value because
// #updateConntrackTimeout refresh the timeout of netlink attribute CTA_TUPLE_ORIG
// which is opposite direction for downstream map value.
mBpfCoordinatorShim.tetherOffloadRuleForEach(DOWNSTREAM, (k, v) -> {
if ((now - v.lastUsed) / 1_000_000 < CONNTRACK_TIMEOUT_UPDATE_INTERVAL_MS) {
updateConntrackTimeout((byte) k.l4proto,
ipv4MappedAddressBytesToIpv4Address(v.dst46), (short) v.dstPort,
ipv4MappedAddressBytesToIpv4Address(v.src46), (short) v.srcPort);
}
});
// TODO: Consider ignoring TCP traffic on upstream and monitor on downstream only
// because TCP is a bidirectional traffic. Probably don't need to extend timeout by
// both directions for TCP.
mBpfCoordinatorShim.tetherOffloadRuleForEach(UPSTREAM, (k, v) -> {
if ((now - v.lastUsed) / 1_000_000 < CONNTRACK_TIMEOUT_UPDATE_INTERVAL_MS) {
updateConntrackTimeout((byte) k.l4proto, parseIPv4Address(k.src4),
(short) k.srcPort, parseIPv4Address(k.dst4), (short) k.dstPort);
parseIPv4Address(v.dst46), (short) v.dstPort,
parseIPv4Address(v.src46), (short) v.srcPort);
}
});
}