Commit Graph

110 Commits

Author SHA1 Message Date
Erik Kline
9e22554068 Delete legacy "wifi interface name guessing" behaviour
Now that Wi-Fi always passes us the AP interface name (and mode)
we no longer need to guess which interface on which we're supposed
to be starting IP serving (either tethering or local-only hotspot).

Test: as follows
    - built
    - flashed
    - booted
    - TetheringTest passes
Bug: 32163131
Bug: 62343300

Change-Id: I6019410ee5adff4929690d35ba09294765fcd6a4
2017-06-08 18:51:33 +09:00
Erik Kline
1454ee750e Handle Wi-Fi passing explicit interface name and AP/IP mode
Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net passes
Bug: 31466854
Bug: 32163131
Bug: 62018531
Bug: 62076211
Merged-In: I599813c4b4d866623344df56f62ed6a40b4025d6
Merged-In: I8f1d172a3514e4fb9230af9e09aeaf638f03091c
Change-Id: I3557a9c14f4e9f1de1869084566a179003d98ffe
(cherry picked from commit 2efb827f61)
2017-06-02 22:43:34 +09:00
Erik Kline
292b65a6f1 Expand logging capabilities of Tethering subsystem
Introduce a SharedLog that can be shared among all Tethering
components.  All log entries go to the same log, and each includes
its subsystem name.  Additionally, all entries emitted to the
system log shared the same tag, so can easily be watched.

More subsystems can inherit a SharedLog, but to minimize cherry-pick
conflicts we limit ourselves to these changes only.

Test: as follows
    - built
    - flashed
    - booted
    - log output observed via dumpsys
    - runtest frameworks-net passes
Bug: 32163131
Bug: 36988090
Bug: 38218697
Merged-In: Ia9d15f0dcc49ce070f8684eb8c8481310859faa5
Merged-In: I2644f518304a03da469fb9c2aa01a6d8f1a97901
Change-Id: I1229d4c55987402d84b0d4a2c8a595e0c829aa3e
(cherry picked from commit 7747fd4ce0)
2017-05-24 19:52:51 +09:00
Jayachandran C
ab571a1ba4 Fix up upstream interface types for case DUN_UNSPECIFIED
The existing logic will add TYPE_MOBILE and TYPE_MOBILE_HIPRI
even if the carrier config has TYPE_DUN for DUN_UNSPECIFIED.

A check is added not to modify the upstream interface types
if there is already a cellular interface type. Add TYPE_MOBILE
and TYPE_MOBILE_HIPRI if there is no cellular types found.

Test: Hotspot on Verizon and T-Mobile US.
      Verified the requestNetwork has the DUN capability.

Bug: 38186915
Change-Id: I74fc5c791fee2885bf66df8975e92c2b48f1668c
2017-05-18 00:33:24 -07:00
Erik Kline
5afccc6251 Fix broken DUN evaluation logic
Test: as follows
    - built
    - booted
    - flashed
    - runtest frameworks-net passes
Bug: 32163131
Bug: 38152109
Bug: 38186915
Merged-In: Ib9a469b16a598c47b615a15fc7cce420bfe4b8b7
Merged-In: I293b4cd57dcd1968c2b38f4e92e24cc0d2e135a9
Change-Id: Id4803504e825290d62c0b51a2b9bd664dcef30b1
(cherry picked from commit 54f2f3704e)
2017-05-16 17:31:14 +09:00
Erik Kline
38356e9024 Refactor and improve logging.
Test: as follows
    - build
    - flashed
    - booted
    - "runtest frameworks-net" passed
    - "dumpsys connectivity" shows new log output
Bug: 32163131
Bug: 36504926

Merged-In: Ieb9a8e3f85f41d18056a7827997f12986ff13ca1
Merged-In: I744b048224e0b8bf6fe4da763833b755441c0911
Merged-In: Ic0c384547687572058d5ef62977163b2560bfc69
Merged-In: Iae91c43d1bfd9fbedc88821a0bd3a5168ad3b719
Merged-In: I52606d4375c9b16de03123995737a994ba58b4d7
Merged-In: I35110b6479280abc650e0ee257045d241923faf9
Change-Id: I14d6da18660223f7cace156cb6594ee18928a7b0
(cherry picked from commit 1fdc2e23b5)
2017-05-10 13:07:08 +09:00
Erik Kline
080f9734d6 Notify WifiManager of interface state changes
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
      (except for an unrelated IpConnectivityMetricsTest error)
Bug: 31466854
Bug: 32163131
Change-Id: I702ea79eb2c02604761e4e1ebcd5f9e445178efb
2017-04-28 16:19:54 +09:00
Erik Kline
413190bed6 Switch to WifiManager.{start,stop}SoftAp()
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
Bug: 31466854

Change-Id: I730d029128a14b936c111ae159b9708d935f4656
(cherry picked from commit ceb54c63dc)
2017-04-27 22:32:37 +09:00
Erik Kline
5fe3718c6d Clarify IControlsTethering LOCAL_ONLY state name
Test: as follows
    - build
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - manually starting tethering shows Settings and icon updates
Bug: 31466854
Bug: 32163131

Change-Id: I1f45511f00aca37480f894be4a9a004f1a3b35d7
(cherry picked from commit ca41be796a)
2017-04-21 18:03:19 +09:00
Erik Kline
668b722498 Add local-only hotspot info into tether state change broadcast
Test: as follows
    - build
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - manually starting tethering shows Settings and icon updates
Bug: 31466854
Bug: 32163131

Change-Id: I938074587dfeec221c5cdb43a392802ad3fc3589
2017-04-21 13:26:04 +09:00
Hugo Benichi
5eb9053c4e Connectivity metrics: add transports to connect stats
This patch groups connect() events per netId. It adds netid and
transport information to serialized ConnectStatistics events.

Test: updated NetdEventListenerServiceTest
      updated IpConnectivityMetricsTest
      $ runtest frameworks-net passes
Bug: 34901696
Change-Id: Id0d536ff723ded5c26eafe0bb138ba75ba2856c5
Merged-In: I4769496383943e714a1d350c298e093c2ed57477

(cherry picked from commit dfc2cc5857)
2017-04-14 01:44:52 +00:00
Hugo Benichi
2a5cfb9738 Connectivity metrics: log DnsEvents in-band
This patch changes how DnsEvents are logged in IpConnectivityMetrics.
The following changes are made:
 - DnsEventBatch are not logged after 100 queries on the same network
    - this allows to merge DnsEvent and DnsEventBatch into one class
 - DnsEventBatch are not logged after a network disconnect
    - this allows to remove the NetworkCallback
 - DnsEvent are now logged similarly to ConnectStats when statistics are
   flushed, in a direct call from IpConnectivityMetrics into
   NetdEventListenerService, in a direct call from IpConnectivityMetrics
   into NetdEventListenerService.
    - this allows to remove the Parcelable implementation of DnsEvent
 - transports information is added to DnsEvent.

Test: - simplified NetdEventListenerServiceTest covering dns logging
      - updated IpConnectivityEventBuilderTest
      - updated IpConnectivityMetricsTest
      - $ runtest frameworks-net passes
      - manually verified $ adb shell dumpsys connmetrics list proto
Bug: 34901696
Change-Id: I4fcd0ad7a7b85d587647f471a90c1e53a18fc95a
Merged-In: Ia4b33fd4212741152662a2adbb0533bd1b4902ee

(cherry picked from commit 0699cf9804)
2017-04-14 01:41:48 +00:00
Erik Kline
5f2b7992cf Tethering: support Local-only Hotspot mode for downstreams
Test: as follows
    - built (bullhead)
    - flashed
    - booted
    - "runtest frameworks-net" passes
Bug: 31466854

Change-Id: Ia50e28c8ce0af8cdd7ac63217d921aff213668e7
2017-04-10 21:42:16 +09:00
TreeHugger Robot
ff51916f83 Merge "Fix NetworkNotificationManagerTest" 2017-03-23 06:25:38 +00:00
Hugo Benichi
f8b804be5a Fix NetworkNotificationManagerTest
The testNotificationsShownAndCleared test was not doing anything
because the list of notification to show was always empty.

This patch fixes this issue and actually makes the test loop on
non-empty collections, and also fixes another ordering issue in
assertions themselves, hidden until now by the first issue.

Test: runtest -x frameworks/base/tests/net/java/com/android/server/connectivity/NetworkNotificationManagerTest.java
Change-Id: I4837b1175d7c9133e9156e33acaa1e7e3341cc62
2017-03-23 12:32:27 +09:00
Hugo Benichi
f927f0c52e Connectivity metrics: add transports to validation probes
This patch adds transports info to ValidationProbeEvent and migrates
netId logging for this event to the topt-level netId field in
ConnectivityMetricsEvent.

Test: modified unit tests. $ runtest frameworks-net passes
Bug: 3490169
Change-Id: Ibf51049ba8901ae5ca4ea86e2f500944a4738b5c
2017-03-21 11:43:18 +09:00
Hugo Benichi
948a85948d Connectivity metrics: change how interface names are logged
This patch deprecates the ifname field for specific metrics events of
types DhcpClientEvent, DhcpErrorEvent, IpReachabilityEvent and
IpManagerEvent.

Instead ifnames are logged in ConnectivityMetricsEvent, allowing for
link layer inference.

Test: updated unit tests, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I8bfabcb115bbd5289471d653c153a40bb48f28cd
2017-03-21 10:18:56 +09:00
Hugo Benichi
73fd4d1faf Connectivity metrics: serialize networkId, transports, ifname
This patch adds translation from ConnectivityMetricsEvent to
IpConnectivityEvent of recently added fields:
 - top-level network id
 - top-level ifname
 - transports

Also adds inference of link layer from transports or ifname.

At the moment these new fields are not populated in
ConnectivityMetricsEvent. Follow-up patches will fill this gap for
the events of the android.net.metrics package.

Test: new unit tests, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I563a6a3183470bdfaabb7c781a1beaf6b1058bf0
2017-03-21 10:18:11 +09:00
TreeHugger Robot
44d5d0c2fb Merge "ConnectivityMetricsEvent: add ifname, netid, transports" 2017-03-16 02:50:23 +00:00
Hugo Benichi
946b7e424e ConnectivityMetricsEvent: add ifname, netid, transports
This patch adds new fields to ConnectivityMetricsEvent to make it more
symmetric to IpConnectivityEvent in ipconnectivity.proto.

Follow-up patches will start populating these fields for users of
IpConnectivityLog.

Test: unit tests updated, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I396767cdfcf38cce893c0d6e1f4524f12e3fdc64
2017-03-16 09:58:02 +09:00
Hugo Benichi
97035b4abf Merge "Connectivity metrics: simplify ConnectivityMetricsEvent" 2017-03-16 00:37:47 +00:00
Hugo Benichi
ec27c4d9f3 Connectivity metrics: simplify ConnectivityMetricsEvent
Now that ConnectivityMetricsEvent is only used for core networking
metrics and is not @SystemApi anymore, remove unused fields and prepare
for additional new fields.

Test: updated unit tests, $ runtest frameworks-net passes
Bug: 34901696
Change-Id: I15abad19981d491f16f2a3afe401f1e833079907
2017-03-15 15:12:38 +09:00
TreeHugger Robot
1809db5cb1 Merge "IP connectivity metrics: add new APF counters." 2017-03-15 04:24:30 +00:00
Hugo Benichi
22d9b2d430 IP connectivity metrics: add new APF counters.
This patch adds a few missing counters to APF events:
 - an actual lifetime duration to ApfProgramEvent.
 - counters for total number of updates to ApfStatistics.

ApfProgramEvents are now recorded at program removal in order to
populate the actual lifetime of the program. ApfProgramEvents whose
actual lifetime was less than 1 second are filtered out.

Finally, instance fields of ApfProgramEvent and ApfStats classes are
made mutable to allow for simple record-like creation. This was not
possible when these classes were tagged @SystemApi.

Test: - manually verified output of $ dumpsys connmetrics list
      - unit tests updated.
Bug: 34901696

Change-Id: I02694ebb9421ce1c2aa757fa6aa209d19a654dcd
2017-03-15 11:49:48 +09:00
Hugo Benichi
a2decca4f2 IP connectivity metrics: ConnectStats additions
This patch:
  - adds a counter to ConnectStats for counting the number of successful
    connect() calls done in blocking mode. This allows to compute error
    rates for connect() in blocking mode.
  - add printing of ConnectStats when dumping NetdEventListenerService
    and/or IpConnectivityMetrics service.

Test: $ runtest frameworks-net, + manual tests verifying logged events.
Bug: 34901696
Change-Id: I889e8ccd12681b0511be487e9d2ee44290a2d7d7
2017-03-13 09:25:15 +09:00
Hugo Benichi
f684050e8f IP connectivity metrics: update ipconnectivity.proto
This patch adds several new fields to ipconnectivity.proto for
improving APF metrics, connect metrics, and link_layer inference.

Test: build, flashed, ran $ adb shell dumpsys connmetrics list proto
      updated metrics unit tests depending on proto schema
Bug: 34901696
Change-Id: I6f68e16f583a6b407f33f8a500133e100f3453c7
2017-03-09 15:19:02 +09:00
Erik Kline
e20e7ebbfb Merge "Update UpstreamNetworkMonitor to use custom Handlers" am: 35c89886c2 am: 279a4feb72
am: c239511cdb

Change-Id: I9a210b4896810e7365b2403495716395b3866650
2017-02-24 08:24:51 +00:00
Erik Kline
279a4feb72 Merge "Update UpstreamNetworkMonitor to use custom Handlers"
am: 35c89886c2

Change-Id: I76433822a9b7c124e4b7cfcf2a20cb0e43a60199
2017-02-24 08:15:19 +00:00
Erik Kline
b583b03675 Update UpstreamNetworkMonitor to use custom Handlers
Test: as follows
    - built (bullhead)
    - flashed
    - booted
    - runtest frameworks-net passes
Bug: 32130437
Bug: 32163131

Change-Id: I2bc3f87cdf7fa6392b4750eb8adb4ea33c6a3f43
2017-02-24 13:06:51 +09:00
Hugo Benichi
95cb226c1a IP connectivity metrics: cleanup obsolete code
This patch cleans obsolete code related to IP connectivity metrics:
 - remove @SystemApi on android.net.metrics: now that metrics events
   are processed and serialized in the frameworks only, event classes
   should not appear in the system apis.
 - remove obsolete Logger classes: ConnectivityMetrics app was the
   unique user of ConnectivityMetricsLogger until nyc-mr1. From nyc-mr1
   the app started using dumpsys to get metrics for IpConnectivity and
   Telephony, which made ConnectivityMetricsLogger obsolete.
 - simplifications in MetricsTestUtil

Test: - runtest frameworks-net
      - manually verified $ adb shell dumpsys connmetrics
Bug: 30054585
Bug: 32648597
Change-Id: I85ef65f7f69eb9299e4636cc7af54067201d9daf
2017-02-22 12:56:38 +09:00
Hugo Benichi
01432b306d resolve merge conflicts of 9355bce0c3 to master
Test: none
Change-Id: Iac65e01d07edf79ec97e7d996f8cfee6f811606b
2017-02-17 10:47:58 +09:00
Hugo Benichi
9355bce0c3 Merge "IP connectivity metrics: delete obsolete logger service" am: 37e3f22c2e am: c54962a4bd
am: 9c2b6afa2f

Change-Id: I5f8cd508812d9532778c2f1f019308a4b8d8ee33
2017-02-17 00:18:35 +00:00
Hugo Benichi
c54962a4bd Merge "IP connectivity metrics: delete obsolete logger service"
am: 37e3f22c2e

Change-Id: Ib335bc5e19c2c703d23267bf2835fc89fcf5a957
2017-02-17 00:00:14 +00:00
Hugo Benichi
37e3f22c2e Merge "IP connectivity metrics: delete obsolete logger service" 2017-02-16 23:52:13 +00:00
Hugo Benichi
d22edc28f5 IP connectivity metrics: delete obsolete logger service
Test: - runtest frameworks-net
      - manually verified $ adb shell dumpsys connmetrics
Bug: 32648597

Change-Id: I69f7dee5871508398d7f7209658a00c768e2d18e
2017-02-15 17:12:58 +09:00
Erik Kline
ea50c00f28 Merge "Verify duplicate upstream notifications are ignored" am: 3d57eb0bdc am: 02e71f6245 am: 8055dafb08
am: d850804723

Change-Id: I56a8b708178419d467abac0166f1be6c86b42491
2017-02-14 18:19:01 +00:00
Erik Kline
6bf2e10802 Merge "Cleanup in the face of upstream error" am: ed6d75d5f3 am: 76e6f790db am: 663ec79cb2
am: ea7e8f7352

Change-Id: I5ca36fc3b7153b029174a49593ee769e06758729
2017-02-14 18:17:43 +00:00
Erik Kline
d850804723 Merge "Verify duplicate upstream notifications are ignored" am: 3d57eb0bdc am: 02e71f6245
am: 8055dafb08

Change-Id: I1e10adfba2ebb9f52e86d8b35f3d0b87134c0e91
2017-02-14 09:49:56 +00:00
Erik Kline
02e71f6245 Merge "Verify duplicate upstream notifications are ignored"
am: 3d57eb0bdc

Change-Id: Iff84a1a12714047b20408f03e3bb2252a463b74b
2017-02-14 09:41:53 +00:00
Erik Kline
624bf3d7f6 Verify duplicate upstream notifications are ignored
Test: as follows
    - built (bullhead)
    - flashed
    - booted
    - runtest .../tethering/TetherInterfaceStateMachineTest.java passes
Bug: 32163131

Change-Id: I3c097d766fe4c416a8e3f02640809fe1199c6ef2
2017-02-14 15:55:57 +09:00
Erik Kline
ea7e8f7352 Merge "Cleanup in the face of upstream error" am: ed6d75d5f3 am: 76e6f790db
am: 663ec79cb2

Change-Id: Ib726fe85b816eccbc0beab555873b77f3454bc64
2017-02-14 06:25:47 +00:00
Erik Kline
76e6f790db Merge "Cleanup in the face of upstream error"
am: ed6d75d5f3

Change-Id: If8dbf882bd8c4a8d53ae026d8f83a00a52590830
2017-02-14 06:17:38 +00:00
Erik Kline
8ea45483fc Cleanup in the face of upstream error
If either enableNat() or startInterfaceForwarding() fail, be sure
to cleanup any commands that might have succeeded.

Most of this change is a refactoring of cleanupUpstreamIface() into
two methods, one of which (cleanupUpstreamInterface()) is reused
in error handling scenarios.

Test: as follows
    - built (bullhead)
    - flashed
    - booted
    - runtest -x .../tethering/TetherInterfaceStateMachineTest.java passes
Bug: 32031803
Bug: 32163131

Change-Id: Ia4d56e03beeab1908d8b8c2202e94992f1aa58a4
2017-02-14 12:20:39 +09:00
Erik Kline
349a8aeff9 Merge "Add test coverage for cleanup bug to be fixed." am: 89e6bf0532 am: 0cca15ff88 am: 3de5971b40
am: 60d14c429b

Change-Id: Ia4a084be38e6f4dce14da012afb6760a3cbd32d0
2017-02-13 12:14:13 +00:00
Erik Kline
60d14c429b Merge "Add test coverage for cleanup bug to be fixed." am: 89e6bf0532 am: 0cca15ff88
am: 3de5971b40

Change-Id: I470c481a0eebc9cadf134c73ece08803927f4ca2
2017-02-13 12:08:11 +00:00
Erik Kline
0cca15ff88 Merge "Add test coverage for cleanup bug to be fixed."
am: 89e6bf0532

Change-Id: I33347c8fc2bec5660b8e9c14a316f6d14a6cf8b1
2017-02-13 11:57:37 +00:00
Erik Kline
a954be9563 Add test coverage for cleanup bug to be fixed.
The test calls that need to pass but do not currently are commented out.

Test: as follows
    - built (bullhead)
    - flashed
    - booted
    - runtest -x .../tethering/TetherInterfaceStateMachineTest.java passes
Bug: 32031803
Bug: 32163131

Change-Id: I68ed476920bef882f353d8e8a54c72120bc27002
2017-02-13 17:38:34 +09:00
Erik Kline
ee929e69fb Merge "Add test for repeated calls to registerMobileUpstreamRequest()" am: 603eefd5d5 am: 180a3d07a8 am: d85f448274
am: 2ebea21074

Change-Id: I2e0ab82edd8997188c8c16dce6373ccb19657e3d
2017-02-02 16:52:43 +00:00
Erik Kline
2ebea21074 Merge "Add test for repeated calls to registerMobileUpstreamRequest()" am: 603eefd5d5 am: 180a3d07a8
am: d85f448274

Change-Id: Ia629aa5dbdf10566c28525d9a05b096482db3f2d
2017-02-02 05:25:05 +00:00
Erik Kline
180a3d07a8 Merge "Add test for repeated calls to registerMobileUpstreamRequest()"
am: 603eefd5d5

Change-Id: I6b2a0d6df70df028ef9b8ff5d689c5a627d8daf8
2017-02-02 05:15:23 +00:00