Commit Graph

14477 Commits

Author SHA1 Message Date
Roshan Pius
fc3adb5ae1 NetworkCapabilities: Hide copy constructor
Only used by connectivity service, no need to mark it public.

Bug: 184537591
Test: Compiles
Change-Id: Ie0d515d73e30a4e15141a3d92aa739192badeb13
2021-04-05 09:29:30 -07: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
Remi NGUYEN VAN
df6ce19fa9 Merge "Reduce framework-connectivity footprint" into sc-dev 2021-04-05 02:15:32 +00:00
Benedict Wong
9429e3b8f9 Merge "Downgrade list of subIds in NetworkCapabilities to @SystemApi" am: 42d706acfc am: 10b113c621 am: 46557b02fe
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652974

Change-Id: I7a85feb9753ae91ff3d67dc82c8bc880a6626074
2021-04-03 02:01:25 +00:00
Benedict Wong
46557b02fe Merge "Downgrade list of subIds in NetworkCapabilities to @SystemApi" am: 42d706acfc am: 10b113c621
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652974

Change-Id: Ib714d9a03e5b5152a576330711a8894178db4a95
2021-04-03 01:15:50 +00:00
Benedict Wong
10b113c621 Merge "Downgrade list of subIds in NetworkCapabilities to @SystemApi" am: 42d706acfc
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652974

Change-Id: I4dc51bf65af853a7510586169caa12b083c2f94b
2021-04-02 23:10:21 +00:00
Benedict Wong
42d706acfc Merge "Downgrade list of subIds in NetworkCapabilities to @SystemApi" 2021-04-02 22:33:20 +00:00
Sarah Chin
d9d1d62be7 [automerger skipped] Merge "API to get network visible network capability name" am: aac4d3242a am: 238cd3344e am: ea1a278478 -s ours
am skip reason: skip tag Change-Id Iae63ac4d62641cee2bd0f0c5f50dd729750d514c with SHA-1 34fbbbb6b9 is already in history

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1653200

Change-Id: Ia36214cc8bf32e5b39d27f55d5e7eb4ac3c22c84
2021-04-02 18:41:49 +00:00
Sarah Chin
ea1a278478 Merge "API to get network visible network capability name" am: aac4d3242a am: 238cd3344e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1653200

Change-Id: Ia6c65d6cd6d322d5599942ec65323a0d62e4dd1b
2021-04-02 17:56:48 +00:00
Sarah Chin
238cd3344e Merge "API to get network visible network capability name" am: aac4d3242a
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1653200

Change-Id: I7f8b909ec061d8bb875ff2688e2fb9a4cea54318
2021-04-02 17:45:29 +00:00
Sarah Chin
aac4d3242a Merge "API to get network visible network capability name" 2021-04-02 16:50:10 +00:00
Chalard Jean
e1ce6ae5d0 Cleanup setGlobalProxy
This is a small cleanup of a function called by DevicePolicyManager
coming from a conflicting change. This no longer makes a concrete
difference but is still a good change.

Test: m services.devicepolicy
Bug: 172183305
Change-Id: I7ee907314ddb253eb4e97d177f0ea0ab3b58cf03
2021-04-02 20:37:21 +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
Remi NGUYEN VAN
deed4cbcf9 Reduce framework-connectivity footprint
Cleanup framework-connectivity to reduce its memory and storage usage:
 - Build libframework-connectivity-jni using standard C and removing
   dependencies on libc++. This saves about 100kB of storage (40+60kB
   on the 32+64 bit variants).
 - Remove dependency on protobuffer libraries, as their usage has been
   removed. This saves about 15kB of storage.

From local measurements, the reduced code size also improves memory
usage.

This also removes a jarjar workaround for net-utils-device-common, as
the library is no longer used either.

Bug: 184111895
Test: device boots, connectivity working
Change-Id: Ibfbd0fe1098293812ae24812621752a7a44f9130
2021-04-02 10:18:00 +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
Benedict Wong
5cec03468c Downgrade list of subIds in NetworkCapabilities to @SystemApi
This change downgrades API visibility for the list-of-subIds in the
NetworkCapabilities to SystemApi

Bug: 175662146
Test: atest NetworkCapabilitiesTest#testSubIds
Test: atest FrameworksNetTests
Change-Id: I372fa9eaa7585aefd1710948ca007456feedd578
2021-04-02 01:18:11 -07: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
Maciej Żenczykowski
62733f5524 bpf_progs - adjust for dstMac addition
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I515be275d09dc7e6bae2564f7db2445ea15cc757
2021-04-02 05:12:33 +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
Steven Moreland
a732a85f7e Remove unstable IpPrefix
Seems nothing is using this.

Bug: 183654927
Test: N/A
Change-Id: I94233d79fb5d93970b38a79a09fc4d50822c3620
2021-04-01 22:59:02 +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
Aaron Huang
2cc32e4558 [automerger skipped] Merge "Expose BIP and VSIM relavent definitions" am: 5e6693605c am: 30129ac6cd am: 15d9affab4 -s ours
am skip reason: skip tag Change-Id I41e881c6fe39e92d5cdac2d0a02fa8a8e814c9c5 with SHA-1 d3881b98ed is already in history

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652223

Change-Id: I82342526cd5d9983d0459b4da014dc8e9bda9482
2021-04-01 13:49:44 +00:00
Aaron Huang
c8616c336f [automerger skipped] Merge "Move deduceRestrictedCapability to libs/net and rename it" am: 6098194278 am: af5827c506 am: 032eba8da7 -s ours
am skip reason: skip tag Change-Id I77970b3a5e5e0e9d263639694b1f06519169bf64 with SHA-1 f0fc6d7f68 is already in history

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1644999

Change-Id: I6a434d0839828f3c2692a5cc8d523dbddc92b4ef
2021-04-01 13:47:59 +00:00
Aaron Huang
15d9affab4 Merge "Expose BIP and VSIM relavent definitions" am: 5e6693605c am: 30129ac6cd
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652223

Change-Id: Ibab74f3bcf6c804a31be54d4b7183ea75a6e172e
2021-04-01 13:04:07 +00:00
Aaron Huang
032eba8da7 Merge "Move deduceRestrictedCapability to libs/net and rename it" am: 6098194278 am: af5827c506
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1644999

Change-Id: Idc33279ef58a6c2bc971271ccf85cafa264b1d1d
2021-04-01 13:03:23 +00:00
Aaron Huang
30129ac6cd Merge "Expose BIP and VSIM relavent definitions" am: 5e6693605c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1652223

Change-Id: I1e9d92cd27fc0dcd84cc62ad7c2a591c9f5a54e5
2021-04-01 12:26:04 +00:00
Aaron Huang
af5827c506 Merge "Move deduceRestrictedCapability to libs/net and rename it" am: 6098194278
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1644999

Change-Id: I088dfe837eb986c2de792d0672a2e707112b6042
2021-04-01 12:21:47 +00:00
Aaron Huang
5e6693605c Merge "Expose BIP and VSIM relavent definitions" 2021-04-01 11:38:17 +00:00
Aaron Huang
6098194278 Merge "Move deduceRestrictedCapability to libs/net and rename it" 2021-04-01 11:37:51 +00:00
Hungming Chen
8078b9abfa [NFCT.TETHER.11] Test TetherOffloadRule{Add, Remove} and set limit for IPv4
Add a unit test to verify that BPF coordinator access downstream4
and upstream4 map while the conntrack event was received.

Verify shim API for IPv4:
- tetherOffloadRuleAdd
- tetherOffloadRuleRemove
- tetherOffloadGetAndClearStats
- tetherOffloadSetInterfaceQuota
- isAnyIpv4RuleOnUpstream

Test: atest TetheringCoverageTests

Change-Id: Ia57f07990d8750fd6ff67d7f4a18aa610336024a
2021-04-01 18:30:47 +08:00
Hungming Chen
9b8c60629f Populate the key destination mac address
Required because XDP offload needs input interface mac address
to be a part of the key. The mac address is used for checking
packets which are received from exceped input interface.

Test: atest TetheringCoverageTests, TetheringPrivilegedTests
Change-Id: Ied159454b516c0d70efe0a85744d1bb606892f2d
2021-04-01 18:30:43 +08:00
Lorenzo Colitti
dc6715c6f8 Set the limit whenever any IPv4 or IPv6 rule exists.
Currently, BpfCoordinator only sets the data limit on a given
upstream whenever the first IPv6 rule is created on that
upstream, and clears it whenever the last rule is deleted on that
upstream. It never does this when adding or removing IPv4 rules.

This makes it impossible to offload traffic on IPv4-only
networks.

Fix this by setting the limit when IPv4 rules are created or
deleted as well.

Test: atest TetheringCoverageTests
Manual tests as the follows
Test {add, clear} limit with IPv6-only network [OK]
Test {add} limit with IPv4-only upstream [OK]

TODO:
Test {clear} limit with IPv4-only network. blocked by aosp/1579873
because the IPv4 rules have never deleted.

Change-Id: I5a29bdd18e564318759f617023163e23fb5a3ed0
2021-04-01 18:30:43 +08: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