Commit Graph

11822 Commits

Author SHA1 Message Date
Lorenzo Colitti
ccf6ed900a Fix DadProxyTest when forwarding is on. am: b6bffbca95 am: 3f29d3ef39 am: f6adb01d24
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1664401

Change-Id: I8e4df65ae7343445ea56c6e9a01b1573380988a3
2021-04-06 06:09:58 +00:00
Lorenzo Colitti
498626e6c5 Fix a race condition in upstream selection. am: 491999292b am: bf8a7b622d am: 505a805d70
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662400

Change-Id: I0ac607254e18f3c49c85e5add73eb2122be2dbc0
2021-04-06 06:09:57 +00:00
Lorenzo Colitti
4dce5c51e2 Add unit tests for race conditions in upstream selection. am: 6748e62ef2 am: afb685e650 am: 4321aa067b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662399

Change-Id: Ie7fb4e07a2c571218871a6560f77bbc985280c1e
2021-04-06 06:09:56 +00:00
Lorenzo Colitti
eb2a150485 Fix DadProxyTest when forwarding is on. am: b6bffbca95 am: 3f29d3ef39 am: 658bdb7e1e
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1664401

Change-Id: Ia5a9d8ea7ecf3a7615dbf725fbfaa3eb2a766015
2021-04-06 05:29:43 +00:00
Lorenzo Colitti
365b803fac Fix a race condition in upstream selection. am: 491999292b am: bf8a7b622d am: 6033471338
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662400

Change-Id: Ic99e65a5e24cc497fb00a8f0969e97aaf120ac8d
2021-04-06 05:29:42 +00:00
Lorenzo Colitti
035bde8ae5 Add unit tests for race conditions in upstream selection. am: 6748e62ef2 am: afb685e650 am: 48cd598f81
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662399

Change-Id: Id16999b1c4659b7c44b24a2deef8fdeb37803d42
2021-04-06 05:29:41 +00:00
Lorenzo Colitti
f6adb01d24 Fix DadProxyTest when forwarding is on. am: b6bffbca95 am: 3f29d3ef39
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1664401

Change-Id: I3904270affd954bf265ac3df31041d794a559cc0
2021-04-06 04:42:41 +00:00
Lorenzo Colitti
505a805d70 Fix a race condition in upstream selection. am: 491999292b am: bf8a7b622d
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662400

Change-Id: I62d575655a0f4880f0f2c2a793bf9eb1ca9295dc
2021-04-06 04:42:40 +00:00
Lorenzo Colitti
4321aa067b Add unit tests for race conditions in upstream selection. am: 6748e62ef2 am: afb685e650
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662399

Change-Id: Ic1cf40e3eaca0e60043a86982c72ac420727d63f
2021-04-06 04:42:38 +00:00
Lorenzo Colitti
658bdb7e1e Fix DadProxyTest when forwarding is on. am: b6bffbca95 am: 3f29d3ef39
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1664401

Change-Id: I5715c990a0de3b3de1a09e44a25bf96d7027feb5
2021-04-06 04:42:31 +00:00
Lorenzo Colitti
6033471338 Fix a race condition in upstream selection. am: 491999292b am: bf8a7b622d
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662400

Change-Id: Ie771aba579b10a742b14d598dfcc50eee6baf4df
2021-04-06 04:42:30 +00:00
Lorenzo Colitti
48cd598f81 Add unit tests for race conditions in upstream selection. am: 6748e62ef2 am: afb685e650
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662399

Change-Id: I08b9b57734374ab12634ea8ba20c718c6e7c3280
2021-04-06 04:42:29 +00:00
Lorenzo Colitti
3f29d3ef39 Fix DadProxyTest when forwarding is on. am: b6bffbca95
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1664401

Change-Id: I08b7f80b872a0cac5c1e0b930f4aca47c186b598
2021-04-06 03:59:23 +00:00
Lorenzo Colitti
bf8a7b622d Fix a race condition in upstream selection. am: 491999292b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662400

Change-Id: I6e1e1834489b80eb332176a69f4f6740e9575bdd
2021-04-06 03:59:22 +00:00
Lorenzo Colitti
afb685e650 Add unit tests for race conditions in upstream selection. am: 6748e62ef2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662399

Change-Id: Id2dcfdc1ec744e67f9f7877ea264bffdf1354b62
2021-04-06 03:59:19 +00:00
Lorenzo Colitti
b6bffbca95 Fix DadProxyTest when forwarding is on.
When forwarding is on, DadProxyTest fails because forwarding
disables optimistic addresses. This results in the DAD proxy
getting EADDRNOTAVAIL.

Forwarding is on quite often on real hardware because many
solutions for wifi calling use forwarding.

Fix the test to retry after two seconds if the packet is not
forwarded on the first attempt.

It would also be possible to make this work more reliably in the
test by simply disabling DAD or disabling forwarding. However,
because DAD does happen in real usage (downstream interfaces
always disable DAD, but upstream interfaces don't), that seems
risky. For example, if the test disabled DAD, it would not catch
bugs where the DAD proxy crashed or stopped forwarding if it got
EADDRNOTAVAIL.

Test: atest TetheringPrivilegedTests on coral, which has forwarding on
Change-Id: I58280ef7c0e40371cd770ead4c8baa7190c288fd
2021-04-05 23:42:29 +09:00
Lorenzo Colitti
491999292b Fix a race condition in upstream selection.
Current upstream selection code suffers from a race where if the
CONNECTIVITY_ACTION broadcast for a given network switch is
received and processed before the NetworkCallbacks for that
network switch, upstream selection just re-selects the same
upstream it had before. The incorrect upstream persists until
another CONNECTIVITY_ACTION is received.

Fix this by defining a new EVENT_DEFAULT_SWITCHED message code
communicated from UpstreamNetworkMonitor to Tethering, and send
that whenever the default network switches.

The message is sent in onLinkPropertiesChanged, because the
tethering code stores all information about networks in an
UpstreamNetworkState structure that contains Network,
LinkProperties and NetworkCapabilities. When a network switch
occurs, onLinkPropertiesChanged always follows onAvailable and
onCapabilitiesChanged, and thus marks the first point in time
when all the information is available.

This CL tries not to change existing codepaths too much, but
it does move the update of mDefaultInternetNetwork from
onCapabilitiesChanged to onLinkPropertiesChanged. This should
not be a problem because the only thing that reads
mDefaultInternetNetwork is getCurrentPreferredUpstream, which,
in the case of a default network switch, will be run by the
onLinkPropertiesChanged which will immediately follow.

Bug: 173068192
Test: changes to existing unit tests show bug is fixed
Change-Id: Ic9196bc92892811b25bda463ffd839ee5c19d294
2021-04-05 22:52:13 +09:00
Lorenzo Colitti
6748e62ef2 Add unit tests for race conditions in upstream selection.
In the current tethering code, upstream selection is only
triggered by CONNECTIVITY_ACTION. But in automatic mode, the
upstream network is selected by listening to a NetworkCallback
that tracks the default network.

This causes a race where if the CONNECTIVITY_ACTION for a network
switch is received and processed before the callbacks for that
network switch, upstream selection just re-selects the upstream
currently in use.

Make it possible to test this by giving TestConnectivityManager
the ability to choose the ordering between NetworkCallbacks and
CONNECTIVITY_ACTION, and to run an arbitrary Runnable between
calling one and calling the other. TetheringTest passes a
Runnable that calls mLooper.dispatchAll(), which ensures that
the tethering code fully processes the first set of information
it receives (either the broadcast (or the callbacks) before
receiving any more information.

Add test coverage to testAutomaticUpstreamSelection that
exercises various orderings, and make the test pass by expecting
the buggy behaviour of the current code.

An upcoming CL will fix the bug and update the tests.

Bug: 173068192
Test: test-only change
Change-Id: I7805444dcf59f6d5f8517fbcf2f2b1641783d50b
2021-04-05 14:51:53 +09:00
Lorenzo Colitti
57850ea847 Dump the input destination MAC address for IPv4 flows. am: e9bc8c9db7 am: a16ca88456 am: 6ca408f317
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662403

Change-Id: I389a4b23b8496cbaee0b815de1c53de532c657f7
2021-04-02 10:51:07 +00:00
Lorenzo Colitti
a8402cec06 Dump the input destination MAC address for IPv4 flows. am: e9bc8c9db7 am: a16ca88456 am: cf257bb217
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662403

Change-Id: I6c92f144be4979bdfa6c98462f56c86ef006eedc
2021-04-02 10:50:22 +00:00
Lorenzo Colitti
6ca408f317 Dump the input destination MAC address for IPv4 flows. am: e9bc8c9db7 am: a16ca88456
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662403

Change-Id: Ib095466f92872d50cc751b34cc870df31dc8e345
2021-04-02 10:06:09 +00:00
Lorenzo Colitti
cf257bb217 Dump the input destination MAC address for IPv4 flows. am: e9bc8c9db7 am: a16ca88456
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662403

Change-Id: I6725ba6f2d2fb07b05f85ac1cacd2ea22e6a5d84
2021-04-02 10:01:25 +00:00
Lorenzo Colitti
a16ca88456 Dump the input destination MAC address for IPv4 flows. am: e9bc8c9db7
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1662403

Change-Id: I461c6214d0591d426f6cbc5f23dd2b56551abdcb
2021-04-02 09:26:29 +00:00
Lorenzo Colitti
e9bc8c9db7 Dump the input destination MAC address for IPv4 flows.
This is needed for forwarding to work, so it should be dumped.

New output:

  Forwarding rules:
    29(29) -> 14(rmnet2) 86dd 00:00:00:00:00:00 00:00:00:00:00:00
    [ap_br_wlan2]: iif(iface) oif(iface) v6addr srcmac dstmac
      14(rmnet2) 29(ap_br_wlan2) 2001:240:2423:13fa:3c21:e35a:6a59:ff8a da:17:fd:70:3d:14 26:5b:b2:ee:bc:ba
    IPv4: [inDstMac] iif(iface) src -> nat -> dst
      [da:17:fd:70:3d:14] 29(29) 192.168.222.151:39208 -> 14(rmnet2) 100.102.14.231:39208 -> 172.217.175.3:80
      [da:17:fd:70:3d:14] 29(29) 192.168.222.151:47386 -> 14(rmnet2) 100.102.14.231:47386 -> 216.58.197.196:443

Also add a call to getHostAddress() to remove the / on IPv6
forwarding rules.

Test: manual
Change-Id: I347ea5a3fd88c51f1fae0c76c75dfa30c68a55ad
2021-04-02 05:42:22 +00:00
Remi NGUYEN VAN
9980f77bc2 Merge "Allow connectivity tests to use hidden APIs" into sc-dev 2021-04-02 02:18:51 +00:00
Aaron Huang
6d4d4dc8ce [automerger skipped] Merge "Update import class of TAG_SYSTEM_NEIGHBOR" am: 5316e1ff18 am: 9c3cfaa9b8 am: 985a17dfae -s ours
am skip reason: skip tag Change-Id I8fcd2772ed873d318233d3029184e4352245d4cd with SHA-1 8369a74fab is already in history

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

Change-Id: Iee12d5591bdf9fab6fa4f67fb2d65c78165eb00c
2021-04-01 17:28:48 +00:00
Aaron Huang
fe5afda1d0 [automerger skipped] Merge "Update import class of TAG_SYSTEM_NEIGHBOR" am: 5316e1ff18 am: 9c3cfaa9b8 am: b3cc853814 -s ours
am skip reason: skip tag Change-Id I8fcd2772ed873d318233d3029184e4352245d4cd with SHA-1 8369a74fab is already in history

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

Change-Id: I9cea9b056fa9c833245e7dc851319ce78909ff8d
2021-04-01 17:09:23 +00:00
Aaron Huang
b3cc853814 Merge "Update import class of TAG_SYSTEM_NEIGHBOR" am: 5316e1ff18 am: 9c3cfaa9b8
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1626079

Change-Id: Ic491a32bbc6bb8173f15f491adb31a942eb7e773
2021-04-01 16:45:23 +00:00
Aaron Huang
985a17dfae Merge "Update import class of TAG_SYSTEM_NEIGHBOR" am: 5316e1ff18 am: 9c3cfaa9b8
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1626079

Change-Id: I11f5bf7f264d48d6ad0dab63aace39fc85251cf0
2021-04-01 16:45:13 +00:00
Aaron Huang
9c3cfaa9b8 Merge "Update import class of TAG_SYSTEM_NEIGHBOR" am: 5316e1ff18
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1626079

Change-Id: Idd6ae755683a38d665a7b0744bcd7d8d1d29ea6f
2021-04-01 16:25:45 +00:00
Aaron Huang
5316e1ff18 Merge "Update import class of TAG_SYSTEM_NEIGHBOR" 2021-04-01 15:59:39 +00:00
Lorenzo Colitti
8c710a06c7 Rename members in TestConnectivityManager. am: 9bbdac6275 am: a6d9d23180 am: 4a5ef290d1
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1659938

Change-Id: I9f6dc8d2a54007f3018809341116aa37393286bc
2021-04-01 10:07:50 +00:00
Lorenzo Colitti
dbeab700ef Add the ability to affect ordering in the tethering unit tests. am: 3e09f80e8a am: bdb012f733 am: cf5967991b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1635021

Change-Id: I6753c24f31c5c304cfafa55c9ccdc0bf5d5da59c
2021-04-01 10:07:50 +00:00
Lorenzo Colitti
d2374540dd Make Tethering file NetworkRequests only if needed. am: 2bcde0fd97 am: cce64f0dd7 am: ef85c9dcc4
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556199

Change-Id: I1cc275ec8b5974193855b4b6ebff822f418f35aa
2021-04-01 10:07:49 +00:00
Lorenzo Colitti
45ed4e60d0 Expose upstream requirements to UpstreamNetworkMonitor. am: 0e7e32ab2c am: 9dcd8587ed am: ce664ec1cf
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556198

Change-Id: I2008fa03e5be4d692c5aca09f3ceeb3a822c0bea
2021-04-01 10:07:48 +00:00
Lorenzo Colitti
daab695c62 Rename members in TestConnectivityManager. am: 9bbdac6275 am: a6d9d23180 am: cece10d4e0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1659938

Change-Id: I3aefc96deeb0cbed9bc608c3435e18cda174b391
2021-04-01 09:26:23 +00:00
Lorenzo Colitti
7ba849ee98 Add the ability to affect ordering in the tethering unit tests. am: 3e09f80e8a am: bdb012f733 am: a116b7f370
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1635021

Change-Id: I1ebce83cee60c2b5adc2102a7bda23b9c06460e2
2021-04-01 09:26:22 +00:00
Lorenzo Colitti
cfe964feac Make Tethering file NetworkRequests only if needed. am: 2bcde0fd97 am: cce64f0dd7 am: bd868cd5d0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556199

Change-Id: I5e1059993a86ec1fdd5bb9a7001683af5dcd6b57
2021-04-01 09:26:21 +00:00
Lorenzo Colitti
a403fd6c1a Expose upstream requirements to UpstreamNetworkMonitor. am: 0e7e32ab2c am: 9dcd8587ed am: 9902d8c14f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556198

Change-Id: Ie3d1ea858e3582ff84a409efb4403bac0b609993
2021-04-01 09:26:19 +00:00
Lorenzo Colitti
4a5ef290d1 Rename members in TestConnectivityManager. am: 9bbdac6275 am: a6d9d23180
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1659938

Change-Id: I71d41b70504eee31bd7ab235e1325e7f689a60c5
2021-04-01 08:39:18 +00:00
Lorenzo Colitti
cf5967991b Add the ability to affect ordering in the tethering unit tests. am: 3e09f80e8a am: bdb012f733
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1635021

Change-Id: Id3a48f7092e0bed9f28cd4896a7d62ad82239758
2021-04-01 08:39:17 +00:00
Lorenzo Colitti
cece10d4e0 Rename members in TestConnectivityManager. am: 9bbdac6275 am: a6d9d23180
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1659938

Change-Id: If02ce4eed9804d705a575fe7171459dafba216c9
2021-04-01 08:39:16 +00:00
Lorenzo Colitti
ef85c9dcc4 Make Tethering file NetworkRequests only if needed. am: 2bcde0fd97 am: cce64f0dd7
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556199

Change-Id: Id07332dfcdd7f3430a67fc7a7dcade4139c7c4ab
2021-04-01 08:39:16 +00:00
Lorenzo Colitti
ce664ec1cf Expose upstream requirements to UpstreamNetworkMonitor. am: 0e7e32ab2c am: 9dcd8587ed
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556198

Change-Id: I285334ac1096dcbd3102961f4d9bd7f44f2dcded
2021-04-01 08:39:15 +00:00
Lorenzo Colitti
a116b7f370 Add the ability to affect ordering in the tethering unit tests. am: 3e09f80e8a am: bdb012f733
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1635021

Change-Id: Iee27da6e7f6972564ee062e789905197e8994aa9
2021-04-01 08:39:15 +00:00
Lorenzo Colitti
bd868cd5d0 Make Tethering file NetworkRequests only if needed. am: 2bcde0fd97 am: cce64f0dd7
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556199

Change-Id: I66b565a18a850c020f1289566c646bdda1b6bd94
2021-04-01 08:39:15 +00:00
Lorenzo Colitti
9902d8c14f Expose upstream requirements to UpstreamNetworkMonitor. am: 0e7e32ab2c am: 9dcd8587ed
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556198

Change-Id: I47a5bdced72c17ecc5182f57623de1ae21f29036
2021-04-01 08:39:14 +00:00
Lorenzo Colitti
a6d9d23180 Rename members in TestConnectivityManager. am: 9bbdac6275
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1659938

Change-Id: I406e1acb5615bff8eae2690af4972ec5040bc77a
2021-04-01 08:04:34 +00:00
Lorenzo Colitti
bdb012f733 Add the ability to affect ordering in the tethering unit tests. am: 3e09f80e8a
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1635021

Change-Id: Iddf2d125678538248f7070899baffebfbc7529d3
2021-04-01 08:04:33 +00:00
Lorenzo Colitti
cce64f0dd7 Make Tethering file NetworkRequests only if needed. am: 2bcde0fd97
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1556199

Change-Id: Ieaedc7d8d7bea358b42dc4e8e5b4533c69c7c8e4
2021-04-01 08:04:32 +00:00