Commit graph

270 commits

Message SHA1
TetheringManager API clean up
Per API review:
- @IntDef defined on the type integer parameter
- have getters on each parameter that is set in the
  TetheringRequest.Builder
- new added API should not be deprecated
Below APIs is moved from system-current to module-lib-current that only
plafrom code(e.g. ConnectivityManager and Settings) can use them.
TetheringRequest.
onTetherableInterfaceRegexpsChanged, TetheringInterfaceRegexps:
Only platform code can use them because interfaces by regular
expressions are a mechanism which is planning to be deprecated.

Also rename some constants for easier to understand.

Bug: 149858697
Bug: 151243337
Test: m doc-comment-check-docs
      atest TetheringTests
Change-Id: Idd041f0fbeca411ea23e49786a50dd7feb77ef45

markchien   commited 2020-03-19 16:32:37 +08:00
f1332573bb
Support static address configuration
Application can specify static ipv4 server and client address to setup
tethering and this is one shot configuration. Tethering service would
not save the configuration and the configuration would be reset when
tethering stop or start failure.

When startTethering callback fired, it just mean tethering is requested
successful. Therefore, callers may call startTethering again if
startTethering successful but do not receive following tethering active
notification for a while. Tethering service never actually does anything
synchronously when startTethering is called:
  -startProvisioningIfNeeded just posts a message to the handler thread.
  -enableTetheringInternal doesn't do anything synchronously, it just
  asks the downstreams to get their interfaces ready and waits for
  callbacks.
If tethering is already enabled with a different request,
tethering would be disabled and re-enabled.

Bug: 141256482
Test: -build, flash, boot
      -atest TetheringTests
      -atest CtsTetheringTest

Change-Id: I2b2dd965a673e6f1626738d41b5d443f0f9fbd0e
Merged-In: I0399917e7cefa1547d617e688225544c4fc1a231
(cherry picked from commit 5d6723e24e21154bef3967585a8adc069e007f49)

Automerger Merge Worker   authored and   markchien   commited 2020-03-19 12:39:46 +08:00
9462a3c9f0
Merge changes from topic "netstack_api_review" into rvc-dev
* changes:
  Remove usage of Context.NETWORK_STACK_SERVICE
  Remove NETWORK_STACK_SERVICE constant

Remi NGUYEN VAN   authored and   Android (Google) Code Review   commited 2020-03-19 01:21:29 +00:00
06b45ca764
Add individual API tracking files for modules
This adds metalava api tracking generation to the module
stub rules, to make sure we know exactly what API a
particular module stub exports.

Bug: 147768409
Test: m update-api
Exempt-From-Owner-Approval: Approved in master
Change-Id: Iaf2ef5b5751eb208d119ddbc74481239366fe581
Merged-In: Iaf2ef5b5751eb208d119ddbc74481239366fe581

Anton Hansson   commited 2020-03-18 11:03:12 +00:00
49bdf5615f
Remove usage of Context.NETWORK_STACK_SERVICE
The NetworkStack.getService() API should be used instead.

Bug: 151243982
Test: atest FrameworksNetTests TetheringTests
      Manual tethering test
Change-Id: I7855090bffbe895c8349ad4903b8f2eb55515f0b

Remi NGUYEN VAN   commited 2020-03-18 18:31:39 +09:00
b8fecf4b32
[SP25] Rename functions that add Entry conditionally
Currently, in NetworkStats, there are many methods to manipulate
the records. However, some methods are similar and ambiguous,
such as addEntry, addValues, setValues, addIfaceValues,
combineValues and combineAllValues.

Thus, properly grouping and renaming methods are necessary.
In this change, for methods that add one record conditionally,
name them addEntry.
  addValues -> addEntry

Test: atest FrameworksNetTests ImsPhoneCallTrackerTest TetheringTests
Fix: 148895143
Change-Id: I9495a198cf247e6c79100f7ac1edcea370b071de

junyulai   authored and   Junyu Lai   commited 2020-03-17 14:59:59 +00:00
abb0596a0a
[SP21] Address comments for API council review about aosp/1172143
Test: atest FrameworksNetTests ImsPhoneCallTrackerTest
Test: atest TetheringTests NetworkStackTests
Test: m doc-comment-check-docs
Fix: 148552904

Change-Id: I141393f229e772d2eb9f7c156849e379bd71b845
Merged-In: I141393f229e772d2eb9f7c156849e379bd71b845
(cherry picked from aosp/1253717)

junyulai   authored and   Junyu Lai   commited 2020-03-17 14:57:59 +00:00
4aa86b782b
Merge "Cleanup the TetheredClients API" into rvc-dev
Remi NGUYEN VAN   authored and   Android (Google) Code Review   commited 2020-03-17 04:49:06 +00:00
677a3b5e92
Merge "[TNU01] Add Tethering notification updater" into rvc-dev
Paul Hu   authored and   Android (Google) Code Review   commited 2020-03-17 01:38:03 +00:00
517ca12acd
Cleanup the TetheredClients API
Add comments to getters as requested in API review, and remove the
expirationTime private field that was planned to be replaced with
LinkAddress expiration.

Test: atest TetheringTests
Fixes: 150878126
Change-Id: Iecf65859cdeeaac2fa7b817b4f505c510424ac89
Merged-In: Iecf65859cdeeaac2fa7b817b4f505c510424ac89
(cherry picked from commit 594d0eae38c13e2bb03de0b3ae1f8781991c321e)

Automerger Merge Worker   authored and   Remi NGUYEN VAN   commited 2020-03-16 10:11:29 +00:00
0010ca0c70
Change TetheringConstants class to final
Bug: 151322331
Test: m doc-comment-check-docs

Change-Id: Ieca36d81b7799988b8dbb9c0d22de690136303ab
Merged-In: Ia02be3d1d91a08ae4a56b25560ed448c96a693db
(cherry picked from commit 5e2740b24658ba340a6b47a46c89cfd642afe394)

Automerger Merge Worker   authored and   Mark Chien   commited 2020-03-16 07:43:05 +00:00
943fb5b686
[TNU01] Add Tethering notification updater
There are lots of Carrier/OEM requests for tethering
notification customization. So add a new tethering notification
updater class which can let OEM customize the behavior they
wanted.

Bug: 122085773
Test: atest TetheringTests
Change-Id: I7faacde7ac84e93ea0dfe03dd33d2cc41c589225
Merged-In: I7faacde7ac84e93ea0dfe03dd33d2cc41c589225
(cherry picked from aosp/1137358)

Automerger Merge Worker   authored and   Paul Hu   commited 2020-03-12 01:42:35 +00:00
9cb35621a6
Merge "Create all variants of stubs for tethering" into rvc-dev
Anton Hansson   authored and   Android (Google) Code Review   commited 2020-03-11 10:16:02 +00:00
ab74d2b865
Create all variants of stubs for tethering
Add separate publicapi, systemapi and module_libs stubs for tethering.

Bug: 147768409
Test: m
Test: m framework-tethering-stubs-{public,system,module_libs_}api
Change-Id: I0ed44691b4e7080818442a9d0eb37d874f707195

Anton Hansson   commited 2020-03-10 13:13:36 +00:00
6a9c68b619
Merge "[SP19] Reduce log when set limit and request stats update" into rvc-dev
Lorenzo Colitti   authored and   Android (Google) Code Review   commited 2020-03-10 03:06:21 +00:00
407e9eb150
Merge "Send offload status changed callback" into rvc-dev
Mark Chien   authored and   Android (Google) Code Review   commited 2020-03-09 09:50:20 +00:00
47f84e53b0
Merge "Tethering: add isTetheringSupported with callerPkg parameter" into rvc-dev
Mark Chien   authored and   Android (Google) Code Review   commited 2020-03-09 09:49:56 +00:00
137cb5acfe
Send offload status changed callback
The callback would be fired when offload started, stopped, or failed.
If offload is not supported, "failed" callback would be fired when user
enable tethering. Enabling multiple tethering would not have multiple
offload status callbacks because offload should already be started or
failed.

Bug: 130596697
Test: -build, flash, boot
      -atest TetheringTests
      -ON/OFF hotspotf

Change-Id: Ifb16dcedc8081833fa95a39596fe5cdc309ededd
Merged-In: Ifb16dcedc8081833fa95a39596fe5cdc309ededd
Merged-In: Ia0398601144b0e5f61dc0c5771eacf13e7cfbb59
(cherry picked from commit cd266076bed28459234c5d74ad373867944df116)

Automerger Merge Worker   authored and   Mark Chien   commited 2020-03-09 07:59:29 +00:00
74f27e6f63
[SP19] Reduce log when set limit and request stats update
setLimit can be ignored if the quota is unlimited and not
changed, and the log could be omitted since it will still be
logged in HAL. Request stats update will print error log in
service if it is not correctly responded in time.

Test: atest TetheringTests
Test: manual
Fix: 149735152
AOSP-Change: 1242601
Change-Id: I01c0191d5b89942fa69b167b8a6b40ed2821300b
Merged-In: I92d214f4648fec6be13e04147290ecdd156fab4e
(cherry picked from commit b9565c7db00e44b50f9983691b603ebd6918ee45)

Automerger Merge Worker   authored and   Lorenzo Colitti   commited 2020-03-09 07:54:27 +00:00
cee6cd88ee
Merge "Fix crash and duplicated ethernet tethering request" into rvc-dev
Mark Chien   authored and   Android (Google) Code Review   commited 2020-03-09 07:51:43 +00:00
cf9a67a5db
Merge the following changes to tethering:
======
Fix a logic error in IpServerTest#addRemoveipv6ForwardingRules

When checking that link-local and multicast neighbours are
ignored, make sure the test neighbours are added on the correct
interface. Otherwise, they might be ignored because events on the
wrong interface are ignored, and not necessarily because
link-local and multicast neighbours are ignored.

Test: atest TetheringTests
Change-Id: I4a624ea4ce9ee9a9352afccbc7bf866587d4cdfa
======
Clear IPv6 forwarding rules when losing upstream or stopping.

Test: new unit test
Change-Id: I8626932e43e0daa300dad5fe6a81f47a6d667030
======

Bug: 149963652
Change-Id: I691053b22cb0b20e49419212f378cc473b1f35dc
(cherry picked from commit 3384bb9a4d7bd85370fe64e59f2872a5cab644d7)

Automerger Merge Worker   authored and   Lorenzo Colitti   commited 2020-03-09 03:25:23 +00:00
f1194880cb
Support losing the upstream in IpServerTest.
Allow dispatchTetherConnectionChanged to pass in a null
upstream interface and/or null LinkProperties. This will allow
future tests to check what happens when the upstream interface
goes away.

Bug: 149963652
Test: test-only change
Change-Id: I7cfc32d072f23644159d33700d6cd830c426ea19
Merged-In: I7cfc32d072f23644159d33700d6cd830c426ea19
(cherry picked from commit 62457f17e72c7ef0bee5c5bb1a04935a549b9fe6)

Automerger Merge Worker   authored and   Lorenzo Colitti   commited 2020-03-09 03:02:22 +00:00
230178c6af
Tethering: add isTetheringSupported with callerPkg parameter
BT tethering need to know whether tethering is supported for its caller
that call isTetheringSupported in binder thread under BT's process.
Current isTetheringSupported API is getting callerPkg inside
TetheringManager that would be BT's package name for bt tethering case.
Provide isTetheringSupported(String callerPkg) for caller to pass its
caller's package name if the use case is under binder IPC.

Bug: 146915889
Test: -boot, flash, boot

Change-Id: I01646fe045772c57b4e39a5e129531f8a2cea89f
Merged-In: I01646fe045772c57b4e39a5e129531f8a2cea89f
Merged-In: I2a35e1b6851e7a799c343be0dd60da23514768ba
(cherry picked from commit e09a92fabe7956692f34e94c198d9763bf76e53d)

Automerger Merge Worker   authored and   Mark Chien   commited 2020-03-09 02:42:28 +00:00
1adfc1cbf1
Fix crash and duplicated ethernet tethering request
This change fix two things:
1. Handle ethernet callback in internal thread to avoid crash. IpServer
should be created from tethering thread, otherwise mIpNeighborMonitor of
IpServer would throw
   IllegalStateException("start() called from off-thread")
2. Ethernet tethering request may be duplicated if multiple
startTethering is called but no stopTethering

Bug: 130840861
Bug: 148824036
Test: ON/OFF ethernet tehtering manually
      atest TetheringTests

Change-Id: Ibd3ea6bc6751bd65647ff381f9b0124bc3395c09
Merged-In: I7c5127e96d80d077735010d2e62c7227805ccb10
Merged-In: Ibd3ea6bc6751bd65647ff381f9b0124bc3395c09
(cherry picked from commit 72702b979654234c18045f04270040056a74cf90)

Automerger Merge Worker   authored and   Mark Chien   commited 2020-03-09 02:02:23 +00:00
0a368b10bc
Merge "Mark updatable APEXes" into rvc-dev
TreeHugger Robot   authored and   Android (Google) Code Review   commited 2020-02-28 02:05:04 +00:00
1131b744f0
tethering: transitive deps from jni_libs
The build system collects transtive deps from jni_libs for APKs.
No need to list them explicitly in android_app definition.

Bug: 146992436
Test: m com.android.tethering
      deapexer extract com.android.tethering.apex apex
      unzip apex/priv-app/Tethering/Tethering.apk -u apk
      ls apk/lib/arm64-v8a

Merged-In: Icba6ea3611c443cbf22ad6363d0239377d16ac9e
Change-Id: Icba6ea3611c443cbf22ad6363d0239377d16ac9e
(cherry picked from commit 9618b66f285ad5baa50b004b788d60272958a04d)

Jooyung Han   commited 2020-02-26 14:14:17 +09:00
81675e2d94
Build framework-tethering against module_current
Bug: 146757305
Test: build

Change-Id: Id6051296a02060179666b67fc6ea9092273c1780
Merged-In: Id6051296a02060179666b67fc6ea9092273c1780
Merged-In: Iad504f0e709daadfb4d86205c07f0faf429f5a8f
(cherry picked from commit bb09ceaf09c8aea00a5001ba7079c13a2575e809)

Automerger Merge Worker   authored and   Mark Chien   commited 2020-02-25 09:47:25 +00:00
5650a2bcce
Mark updatable APEXes
Mark updatable APEXes as updatable: true so that they are opted-out from
optimizations that make sense only for non-updatable modules; such as
symlinking to the libs in the system partition.

Bug: 149805758
Test: m and check that there is no symlink from the APEX to the system
partition.

Change-Id: Idb55300a60a261c7bb6359439ed220ff51fcf06c

Jiyong Park   commited 2020-02-24 21:10:56 +09:00
477b4734f5
Re-submit "Create all variants of stubs for wifi"
Use sdk_version: module_current instead.

This reverts commit d20f03011f95bd04bace0977d246cdc737ce5627.

Bug: 147768409
Test: m
Test: build/soong/soong_ui.bash --make-mode dist ANDROID_BUILDSPEC=vendor/google/build/app_build_spec.mk
Exempt-From-Owner-Approval: clean cp
Change-Id: I36cf007a4813027721dfb6389e10cf95085f85e4
Merged-In: I36cf007a4813027721dfb6389e10cf95085f85e4
(cherry picked from commit 21f0ed2a0aceddd4ce3dfcf792cb1ae9a144547b)

Anton Hansson   commited 2020-02-22 11:05:37 +00:00
050ccee922
Merge "Use exposed permission defintion in Tethering" am: f1a0c3abea am: e8f538b03a am: d53db580d7
Change-Id: Ieba1160f9f333ac9b112941a8fdcc15e9b563d5b

Automerger Merge Worker   commited 2020-02-21 12:21:04 +00:00
3bd7306154
Use exposed permission defintion in Tethering
The permissions are checked by Tethering; mainline modules should be
able to do permission checks based on these permissions.

Bug: 135411507
Test: m
Change-Id: Ib7f2aedfaaa909bbc356196114c62af9345f2593

Chiachang Wang   commited 2020-02-21 17:50:18 +08:00
1784f25df5
Merge "Stop exposing constructor of TetheringConstants" am: e19cd8f3ab am: f2472fa7aa am: 051bd7f721
Change-Id: If4cf11820b0d712584e7ee393c26c7c359d7952f

Automerger Merge Worker   commited 2020-02-20 13:27:19 +00:00
8a6e5c57b1
[automerger skipped] Merge "Stop exposing generated AIDL from Tethering" am: 703048d08b am: fdbd820293 am: 4cfcbfa7ec -s ours
am skip reason: Change-Id Ia4222fa35a9a2f3c75cebb12f75c536f27e2fe16 with SHA-1 e814258f09 is in history

Change-Id: I51ef292d3a4d28c62bbe8156b907183a0b56208b

Automerger Merge Worker   commited 2020-02-20 12:56:40 +00:00
867616df5d
Merge "Stop exposing constructor of TetheringConstants"
Mark Chien   authored and   Gerrit Code Review   commited 2020-02-20 12:46:19 +00:00
e19cd8f3ab
Merge "Stop exposing generated AIDL from Tethering"
Anton Hansson   authored and   Gerrit Code Review   commited 2020-02-20 12:18:34 +00:00
703048d08b
Merge "Stop exposing generated AIDL from Tethering"
Anton Hansson   authored and   Android (Google) Code Review   commited 2020-02-20 10:41:29 +00:00
62d3e5c218
Stop exposing constructor of TetheringConstants
Fully-static utility classes must not have constructor.

Bug: 149430003
Test: -build, flash, boot
      -atest TetheringTests

Change-Id: I18e1129ef8717211d667ccd3b4110169dd7905b4

markchien   commited 2020-02-20 16:11:35 +08:00
1bec13e963
Merge "Tethering: Don't crash if wifi unavailable." am: 084e8536d1 am: b1b7db8c76 am: 911b4cf5cd
Change-Id: I62927826271d36eb89f39ac076f0bf9522a61423

Automerger Merge Worker   commited 2020-02-20 04:29:18 +00:00
cce2909d0f
Merge "Tethering offload: add/remove IPv6 forwarding rules on ND events." am: 9a1f9d4669 am: 8d78f124e7 am: 2353495350
Change-Id: If7947436f2a26786f69377712ad0ff1234ac93fe

Automerger Merge Worker   commited 2020-02-19 23:12:04 +00:00
6bc4e1f98c
Merge "Minimal support for IPv6 upstreams in IpServer tests." am: ffd4bf34be am: 21d63cba5b am: 954d0c274f
Change-Id: Iba46592442663cdc9b69aa2c5cb1ea0893f8f087

Automerger Merge Worker   commited 2020-02-19 23:11:42 +00:00
696580b598
Merge "Reduce advertised ipv6 mtu by 16 to fit ethernet header" am: b23d20fea7 am: 376e086fef am: f0fff78d9d
Change-Id: I2ce8d87603b1628735b376efe21da43d3ea53225

Automerger Merge Worker   commited 2020-02-19 23:11:06 +00:00
75f615e14c
[automerger skipped] Merge "Add tethering client callbacks" am: 5ea7a9466b am: 6b281c9304 am: 3883a5ce7b -s ours
am skip reason: Change-Id I96291038cf7b39a67547a5f74fcd7cbedc1ca002 with SHA-1 c8871c1b66 is in history

Change-Id: I046ad2de1e65468df9f70f189abfa1162f15a7c0

Automerger Merge Worker   commited 2020-02-19 23:10:08 +00:00
3c1cf6e09a
[automerger skipped] Merge "Fix usage of annotations in TetheringLib" am: 907976e0a2 am: a4dbd9a897 am: 3cea47c781 -s ours
am skip reason: Change-Id I1fae97a1c1e0ba07fa3e2d64cde7650cd26d0acd with SHA-1 63dc279dfc is in history

Change-Id: Ifdfeae4e43afd3892ced4964d54e532a1f46e8fc

Automerger Merge Worker   commited 2020-02-19 23:09:45 +00:00
acf2c63b4e
[automerger skipped] Merge "Use framework-tethering-stub instead of framework-tethering" am: b8a6208240 am: 101b4e2bb5 am: 42dbff65d6 -s ours
am skip reason: Change-Id I97ef83f7f9b4c1376f373713036f5256318f1050 with SHA-1 44fc26d19e is in history

Change-Id: I1771917998eeda2d18abb1f576e5091828651ea0

Automerger Merge Worker   commited 2020-02-19 23:09:23 +00:00
efc2d97316
Merge "Add TetheringTests to postsubmit" am: a0c1281870 am: 2d89fa53d3 am: b9a8a92364
Change-Id: I6597bb11941d92f222e8dc0a4edf1e9f8e2a5fde

Automerger Merge Worker   commited 2020-02-19 23:09:00 +00:00
26c1bc0ab3
Tethering: Don't crash if wifi unavailable.
r.android.com/1213016 seems to have caused the following crash on devices
without wifi:

FATAL EXCEPTION: main
Process: com.android.networkstack.process, PID: 1041
java.lang.RuntimeException: Unable to create service com.android.server.connectivity.tethering.TetheringService: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.net.wifi.WifiManager.registerSoftApCallback(java.util.concurrent.Executor, android.net.wifi.WifiManager$SoftApCallback)' on a null object reference
	at android.app.ActivityThread.handleCreateService(ActivityThread.java:4005)
	at android.app.ActivityThread.access$1500(ActivityThread.java:220)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:216)
	at android.app.ActivityThread.main(ActivityThread.java:7396)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.net.wifi.WifiManager.registerSoftApCallback(java.util.concurrent.Executor, android.net.wifi.WifiManager$SoftApCallback)' on a null object reference
	at com.android.server.connectivity.tethering.Tethering.<init>(Tethering.java:317)
	at com.android.server.connectivity.tethering.TetheringService.makeTethering(TetheringService.java:90)
	at com.android.server.connectivity.tethering.TetheringService.onCreate(TetheringService.java:81)
	at android.app.ActivityThread.handleCreateService(ActivityThread.java:3993)

Fix it by null checking wifiManager before calling a method on it.

Bug: 142352330
Change-Id: I46e2f3053a59d3dba6a186a9eed34fa63b45d03e

Peter Collingbourne   commited 2020-02-19 12:55:44 -08:00
9969e5dff7
Stop exposing generated AIDL from Tethering
We don't want new modules exposing stable aidl directly. APIs should
be defined as java @SystemApi. It also seems like nothing actually
depend on these interfaces, except one simple exception.

Bug: 147200698
Test: m
Change-Id: Ia4222fa35a9a2f3c75cebb12f75c536f27e2fe16

Anton Hansson   commited 2020-02-19 19:03:24 +00:00
e814258f09
Stop exposing generated AIDL from Tethering
We don't want new modules exposing stable aidl directly. APIs should
be defined as java @SystemApi. It also seems like nothing actually
depend on these interfaces, except one simple exception.

Bug: 147200698
Test: m
Change-Id: Ia4222fa35a9a2f3c75cebb12f75c536f27e2fe16
Merged-In: Ia4222fa35a9a2f3c75cebb12f75c536f27e2fe16

Anton Hansson   commited 2020-02-19 16:26:05 +00:00
c82ea10ea2
Merge "Tethering offload: add/remove IPv6 forwarding rules on ND events."
Lorenzo Colitti   authored and   Gerrit Code Review   commited 2020-02-19 13:41:10 +00:00
9a1f9d4669
Merge "Minimal support for IPv6 upstreams in IpServer tests."
Lorenzo Colitti   authored and   Gerrit Code Review   commited 2020-02-19 13:38:00 +00:00
ffd4bf34be