Commit Graph

977 Commits

Author SHA1 Message Date
Hungming Chen
c03323c8ef Open and close clat bpf map while clat is starting and stoping
BpfMap class supports AutoCloseable interface which closes
file descriptor only in try-exit. BpfMap class doesn't close
fds while the object is released.

Change the timing of opening and closing bpf map file descriptors
to clat is starting and stoping.

Moreover, the reason that manual close BPF map file descriptors is
as follows. Just don't rely on that GC releasing to close the file
descriptors even if class BpfMap supports close file descriptor in
finalize(). If the interfaces are added and removed quickly, too
many unclosed file descriptors may cause unexpected problems.

Bug: 230880517
Test: manual test
Steps:
1. Connect to IPv6 only wifi (GoogleGuest) and mobile data
2. Check that map fds are appeared:
   /proc/$(system_server_pid)/fd/$(bpf_map_fd)

$ adb shell ps | grep system_server
system        1929   825 20311224 730060 do_epoll_wait      0 S system_server

$ adb shell ls -all proc/1929/fd | grep bpf-map
.. system system 64 2022-05-05 13:36:42 .. 331 -> anon_inode:bpf-map
.. system system 64 2022-05-05 13:36:42 .. 348 -> anon_inode:bpf-map

3. Check the clat maps are added.
$ adb shell dumpsys connectivity
NetworkAgentInfo{network{105}  handle{454377263117}  ni{WIFI ..
Nat464Xlat:
..
  Forwarding rules:
    BPF ingress map: iif nat64Prefix v6Addr -> v4Addr oif
      47 /64:ff9b::/96 /2a00:79e1:abc:6f02:f182:6c29:ab56:9961 -> /192.0.0.4 62
    BPF egress map: iif v4Addr -> v6Addr nat64Prefix oif
      62 /192.0.0.4 -> /2a00:79e1:abc:6f02:f182:6c29:ab56:9961 /64:ff9b::/96 47 ether
NetworkAgentInfo{network{106}  handle{458672230413}  ni{MOBILE[LTE] ..
    Nat464Xlat:
      <not start>

4. Disconnect from wifi

5. Check that map fds are disappeared:
   /proc/$(system_server_pid)/fd/$(bpf_map_fd)

$ adb shell ls -all proc/1929/fd | grep bpf-map
(fd 331 and 348 were not found)

Change-Id: I60c0301bf00beae5cf5ab3535c6a3da68a2a4a9b
2022-05-05 18:53:37 +08:00
sewookseo
04ced836b8 Support QosCallback with UDP socket. UnitTest
Adding unit tests to QosSocketFilterTest

Bug: 203146631
Test: atest & verified on LTE test equipment
Change-Id: I0cd82dde0067d754dfab01ed0406370d7debb937
2022-05-05 08:45:00 +00:00
Junyu Lai
c259e615e6 Improve logging for NetworkStatsObservers
In order to have better logging to gather information
about the callers. This change includes:
 1. Add pid and package name into RequestInfo for better logging.
 2. Print current observers in dumpsys section.
 3. Enable register/unregister usage request logging by default.

The log added in the dumpsys section looks like:
Stats Observers:
  RequestInfo from pid/uid:2001/1000(android) for DataUsageRequest [...] accessLevel:3
  ...

Test: NetworkStatsObserversTest
Bug: 229103088
Change-Id: Ide68776dc279610e8dee0efd924b59a1fac2b7b6
2022-05-05 16:30:50 +08:00
Chiachang Wang
e85648b4a5 Merge "Test [set|get]AppExclusionList" am: 34a257ad5f am: 227e4f18a5
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2076483

Change-Id: I93b2b057f6c2ab0fd63f2d39de5eefad0743ddc1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-05 02:20:04 +00:00
chiachangwang
218d5652de Test [set|get]AppExclusionList
Bug: 192078259
Test: atest FrameworksNetTests
Change-Id: Iee81d84b4127420121ce2d5a7defc3dbe34b6cde
2022-05-04 10:13:46 +00:00
Sooraj Sasindran
f7b4c451ce Allow device owner to configure profile network preference
isMangedProfile returns true for managed profiles.
But enterprise device can be fully managed like device owner.
Hence check specifically if request is coming on fully managed
device.

Bug: 226966328
Bug: 231071836

Test: ran DevicePolicyManager CTS and ConnectivityServiceTest
Change-Id: I7827466bd61e24ba9c36c3a2e25043257e2ed602
(cherry picked from commit bb65aa8fc2)
Merged-In: I7827466bd61e24ba9c36c3a2e25043257e2ed602
2022-05-04 06:19:28 +00:00
Aaron Huang
132df4ed06 Merge "Add NetworkTemplateTest to common test for cts coverage" 2022-05-03 07:01:55 +00:00
Mark Chien
e470dac462 Merge "Fix ConnectivityManager memory leak" am: 8e3b96b61f am: 4d8cf6676c
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2076481

Change-Id: I5824a3dc5fb3a37cd2dac51054b3a7ef4bf86bb7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-03 05:42:23 +00:00
Mark Chien
14921d65d5 Merge "Add a test to identify memory leak in ConnectivityManager" am: 15b83ab323 am: a00d1c34f2
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2076480

Change-Id: Ibe3673064e0fc4d83d68e57bfcffa8bedc5c27c2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-03 05:41:47 +00:00
Mark Chien
8e3b96b61f Merge "Fix ConnectivityManager memory leak" 2022-05-03 02:46:05 +00:00
Mark Chien
15b83ab323 Merge "Add a test to identify memory leak in ConnectivityManager" 2022-05-03 02:43:24 +00:00
Treehugger Robot
2d30a274d9 Merge "Follow-up 2076940: Allow device owner to configure profile network preference " am: a14bd2a032 am: 82e76fab0a
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2083405

Change-Id: I6e6f284076e1eb4de8dc09b7eebdbf2eff19ae95
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-02 15:49:56 +00:00
Treehugger Robot
a14bd2a032 Merge "Follow-up 2076940: Allow device owner to configure profile network preference " 2022-05-02 15:00:55 +00:00
Vadim Caen
baade1ca1e Follow-up 2076940: Allow device owner to configure profile network preference
https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2076940

Fixes build failure


Bug: 231104107
Test: tests/unit/java/com/android/server/ConnectivityServiceTest.java
Change-Id: I7b6a3880ce0b0b9ad6fc6aa7a5fd4e249bb1606d
2022-05-02 09:22:32 +00:00
Sooraj Sasindran
19f11ae93c Merge "Allow device owner to configure profile network preference" am: 07a20408db am: 87f4d52d9f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2076940

Change-Id: I3c170a47f89bfe87cacdc7332cb318b63c05d5a0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-02 07:43:12 +00:00
Sooraj Sasindran
07a20408db Merge "Allow device owner to configure profile network preference" 2022-05-02 07:13:21 +00:00
Sooraj Sasindran
bb65aa8fc2 Allow device owner to configure profile network preference
isMangedProfile returns true for managed profiles.
But enterprise device can be fully managed like device owner.
Hence check specifically if request is coming on fully managed
device.

Bug: 226966328
Bug: 231071836

Test: ran DevicePolicyManager CTS and ConnectivityServiceTest
Change-Id: I7827466bd61e24ba9c36c3a2e25043257e2ed602
2022-05-01 21:20:36 -07:00
Treehugger Robot
6a957c70c0 Merge "[MS83] Add Cts for NetworkStatsCollection/History builders" 2022-05-02 02:26:55 +00:00
Lucas Lin
f0b7e57ca7 Merge changes from topics "CATEGORY_ERROR_IKE", "CATEGORY_ERROR_NETWORK", "CATEGORY_ERROR_USER_DEACTIVATED", "CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED" am: 025a3c993a am: be18923405
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1956069

Change-Id: Idbb887a00e1e1b45a47bf1be4cadc89649ebbc0b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 20:13:08 +00:00
lucaslin
ceebe448d7 Test VpnManager event for CATEGORY_EVENT_IKE_ERROR am: 827b44daea am: cef31c9562
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1956036

Change-Id: I3825e450f1e74217dfa6cfd41ceb8a1c487f64e8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 20:13:06 +00:00
lucaslin
1c6fd861aa Test VpnManager event for CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED am: 0772c169b5 am: 84992958f6
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2070968

Change-Id: I70eb9d90f41e0100ede17af4bd670ab422fe308e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 20:13:04 +00:00
lucaslin
472ec76971 Test VpnManager event for CATEGORY_EVENT_DEACTIVATED_BY_USER am: c5bf088ced am: 4ebe1bdd4f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1955936

Change-Id: I87d29e1078d8aa8a3516080ee438168e036af11e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 20:13:01 +00:00
lucaslin
cef31c9562 Test VpnManager event for CATEGORY_EVENT_IKE_ERROR am: 827b44daea
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1956036

Change-Id: Ifde51b2ee0c3e252911fca5314b2808e4adb94cb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 19:53:47 +00:00
lucaslin
84992958f6 Test VpnManager event for CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED am: 0772c169b5
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2070968

Change-Id: I51615394160058bc1defa4b298a8a61fb0b1a52e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 19:53:44 +00:00
lucaslin
4ebe1bdd4f Test VpnManager event for CATEGORY_EVENT_DEACTIVATED_BY_USER am: c5bf088ced
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1955936

Change-Id: I08dfbc1cb8895bae5151c2ef1d7042d4f7c03e6b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-29 19:53:39 +00:00
Lucas Lin
025a3c993a Merge changes from topics "CATEGORY_ERROR_IKE", "CATEGORY_ERROR_NETWORK", "CATEGORY_ERROR_USER_DEACTIVATED", "CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED"
* changes:
  Test VpnManager event for CATEGORY_EVENT_NETWORK_ERROR
  Test VpnManager event for CATEGORY_EVENT_IKE_ERROR
  Test VpnManager event for CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED
  Test VpnManager event for CATEGORY_EVENT_DEACTIVATED_BY_USER
2022-04-29 08:13:51 +00:00
markchien
d201566169 Fix ConnectivityManager memory leak
ConnectivityManager have a self reference static instance. This
causes a leak if context is refernce from a static variable. Using
the applicationContext, which will never be freed for the life of the
application, for the sInstance static instance.

Bug: 202978965
Test: atest ConnectivityManagerTest
Change-Id: I87206e1bfbb1f877b5a10f5fdbc25e2f9f11bef4
2022-04-29 08:01:23 +00:00
markchien
ed0fab0356 Add a test to identify memory leak in ConnectivityManager
The sInstance static instance which self reference to
ConnectivityManager which holds a reference to a ConnectivityManager
instance causes the Context referenced by that instance to never be
GCed.

Bug: 202978965
Test: atest ConnectivityManagerTest
Change-Id: I0227f63dbc27688ea5f4ef9275fd0f9c247ad14c
2022-04-29 16:00:50 +08:00
lucaslin
cfec723ef9 Test VpnManager event for CATEGORY_EVENT_NETWORK_ERROR
Bug: 191413541
Test: atest FrameworksNetTests:VpnTest
Change-Id: Idffd5f5f8fc6614281f3fb0884228a797d783fe3
2022-04-26 01:10:10 +00:00
lucaslin
827b44daea Test VpnManager event for CATEGORY_EVENT_IKE_ERROR
Bug: 191413541
Test: atest FrameworksNetTests:VpnTest
Change-Id: Iebc0ac281eb03fac9626c64e44cdd14be1462d89
2022-04-26 01:10:03 +00:00
lucaslin
0772c169b5 Test VpnManager event for CATEGORY_EVENT_ALWAYS_ON_STATE_CHANGED
Bug: 225010642
Test: atest FrameworksNetTests:VpnTest
Change-Id: I078be4e00470efd9d7a2a87b40919116b99c83b8
2022-04-26 09:09:03 +08:00
lucaslin
c5bf088ced Test VpnManager event for CATEGORY_EVENT_DEACTIVATED_BY_USER
Bug: 191413541
Test: atest FrameworksNetTests:VpnTest
Change-Id: Idc876275b88c2f4ddeb85c43d37d5f657b0f307b
2022-04-25 23:12:26 +08:00
Chiachang Wang
9d8045fbc1 Merge "Test Ikev2VpnProfile provisioned with IkeTunnelConnectionParams" am: 2e670756ac am: 43e3eed32a
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2063922

Change-Id: Ic632dbf24734b9d80ab33a6f3ff915ed854ec89f
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 09:31:53 +00:00
Chiachang Wang
fe35305b32 Merge "Test Ikev2VpnProfile provisioned with IkeTunnelConnectionParams" am: 2e670756ac am: 9942af20c0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2063922

Change-Id: I966e6dac28759075313774966039097ff033d686
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-25 09:31:52 +00:00
Chiachang Wang
2e670756ac Merge "Test Ikev2VpnProfile provisioned with IkeTunnelConnectionParams" 2022-04-25 08:44:45 +00:00
Maciej Żenczykowski
d560797e5e adjust for new T bpfloader net_shared location am: 0736d7bd91 am: 2d59dc9854
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2071008

Change-Id: I1c90acd36a7105fcf9997c08443d3b624d487f76
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-23 09:56:36 +00:00
Maciej Żenczykowski
4249b8be1d adjust for new T bpfloader net_shared location am: 0736d7bd91 am: 96706b661f
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2071008

Change-Id: Iba57cbfe6f3c41fc7c396098f0caa662d68b1e0e
Ignore-AOSP-First: this is an automerge
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-23 09:56:33 +00:00
Maciej Żenczykowski
0736d7bd91 adjust for new T bpfloader net_shared location
(this is safe because on pre-T none of these maps and programs are mainlined
 and thus safe to access from mainline code anyway)

Test: TreeHugger, manual
Bug: 218408035
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I23e565d665247f33e084978890a1ee8ffe0fe568
2022-04-23 09:03:06 +00:00
Maciej Żenczykowski
2fadc5413c Merge "[CLATJ#27] Use ClatdCoordinator since T+ devices" am: b4bf6cea38 am: 8d75a93995
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1951099

Change-Id: I3878e5359349d8195e8741ea69ae437edab68909
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-21 14:34:12 +00:00
chiachangwang
476e2a08bf Test Ikev2VpnProfile provisioned with IkeTunnelConnectionParams
Bug: 223841137
Test: atest CtsNetTestCases FrameworksNetTests
Change-Id: I683f6242e4ed4a469893e3a17fe7b479a7a768e5
2022-04-21 14:49:41 +08:00
Hungming Chen
eb15a2d816 [CLATJ#27] Use ClatdCoordinator since T+ devices
- For clatd start and stop, use ClatdCoordinator on T+ and Netd on S-
- Fix the unit test for T+ and S- devices
  Note that mokito.verify(.., times(1)) is replaced by verify(..)
  because times(1) is the default and can be omitted.
  See verify in mockito/src/main/java/org/mockito/Mockito.java

Note that this commit needs to be merged with aosp/1956072.

Bug: 212345928
Test: atest FrameworksNetTests
      manual test
      1. Connect to ipv6-only wifi.
      2. Try IPv4 traffic.
         $ ping 8.8.8.8
      3. Check bpf entries are added
      4. Disconnect from ipv6-only wifi.
      5. Check bpf entries are removed
      6. testipv4.com shows 10/10

Change-Id: I7dfda6eec19de94e4258971effcd8a1210542473
2022-04-21 13:24:36 +08:00
Aaron Huang
d79f543df0 Merge "Fix NullPointerException happens in dumpCheckin" am: 6b7e457988 am: 44a02af11a am: a4d60dd2ad
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2059628

Change-Id: If9933b6aad05abf79e85f9172ba6eb6f8492d648
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-20 06:12:50 +00:00
markchien
28160b3141 Fix permission bypass problem for Tethering deprecated APIs
Since the tethering functions in ConnectivityService is delegated
to TetheringManager instance and get caches informataion in
TetheringManager without checking ACCESS_NETWORK_STATE permission.
If application use reflection call getTetherXXX functions in
ConnectivityService, it can get tethering status with no additional
execution privileges needed.

Bug: 162952629
Test: manual
Ignore-AOSP-First: security fix
Change-Id: I5b897f216db19fead6ba6ac07915aa0f6ff5bf42
2022-04-19 19:13:10 +08:00
Aaron Huang
c3a43b4063 Fix NullPointerException happens in dumpCheckin
Currently dumpCheckin passes a null object to create
the contructor of NetworkStatsCollection.Key but the
constructor requires non-null object. Thus, it caused
the NPE in dumpCheckin. To fix this exception, create
an NetworkIdentitySet() object instead of using an
null object.

Bug: 225131008
Bug: 226539404
Test: dumpsys netstats --checkin is fine
      FrameworksNetTests
Change-Id: I7f2dadf0647b3f42e0f667d96291d2ae37e23faf
2022-04-19 17:49:30 +08:00
Natasha Lee
e765e2fbc0 Merge "Save appIds permissions for each user" am: 7f85379b07 am: 54a472764a
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2052545

Change-Id: I0fdfcb45c508ae01b87471b1716442755cd76fb0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-13 00:59:49 +00:00
Natasha Lee
7f85379b07 Merge "Save appIds permissions for each user" 2022-04-12 23:55:06 +00:00
paulhu
a501e47e19 Save appIds permissions for each user
PermissionMonitor does not store any information regarding
traffic permission. It just checks permission from each package
and sends the result to netd. In addition, bpf can store traffic
permissions for appIds only because of memory limitations.

However, there is a mistaken permission overwriting when
different packages are installed on multi-user. Because
PermissionMonitor updates appIds traffic permissions to netd
from each user, so the permission result will depend on the
latest user state.

To fix the problem, save the traffic permissions by each user and
appId on PermissionMonitor. An appId has a permission if and
only if at least one uid in that appId has that permission.

bug: 224775316
Test: atest FrameworksNetTests CtsNetTestCases \
      CtsNetTestCasesUpdateStatsPermission \
      CtsNetTestCasesInternetPermission
Change-Id: Ieb01fb21f6201a58723eb7e6446b127627be2c0e
2022-04-12 11:06:46 +00:00
Paul Hu
104c01390a Merge "Remove NativeDaemonConnector relevant files" am: 631c2387a6 am: 4eaeac9baa
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2059332

Change-Id: If12e2a9dff214da5541d4002b33d313898aa2b18
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-12 08:16:33 +00:00
Paul Hu
631c2387a6 Merge "Remove NativeDaemonConnector relevant files" 2022-04-12 07:37:16 +00:00
paulhu
cee953bd09 Remove NativeDaemonConnector relevant files
NsdService is using binder call to communicate with
mdnsresponder, so there is no one to use NativeDaemonConnector
now. Thus, remove NativeDaemonConnector relevant files.

Bug: 209894875
Test: atest FrameworksNetTests
Change-Id: Ic70d9417dc85c04c537e09d8f8586a762ac9a97b
2022-04-12 07:35:31 +00:00