Commit Graph

258 Commits

Author SHA1 Message Date
Erik Kline
84714bffa1 Refactor to IpNeighborMonitor and single-threaded semantics
IpReachabilityMonitor (and IpNeighborMonitor) are only accessed from
the IpManager StateMachine's thread. Consequently lots of locking can
now be removed.

Additionally:
    - rename BlockingSocketReader to PacketReader
    - incorporate IpReachabilityMonitor output in dump()

Test: as follows
    - runtest frameworks-net passes
    - "adb shell ip neigh change <address> dev wlan0 nud failed"
      triggers wifi to disconnect
Bug: 62476366
Bug: 67013397
Change-Id: I18aca29ae0019a72a7e559c2832e0d9b0e33d81e
2017-12-08 11:12:05 +09:00
Erik Kline
b3f9f4a305 Send empty LinkProperties when entering StoppedState.
Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net passes
    - changing from DHCPv4 to static while continuously pinging the
      default gateway works jsut fine
    - dumpsys log shows that during the change we send the empty LP:
  12-06 08:46:51.085 - CMD_ON_QUIT wlan0/23 0 0 null [rcvd_in=StoppingState, proc_in=StoppingState]
  12-06 08:46:51.092 - INVOKE onLinkPropertiesChange({{InterfaceName: wlan0 LinkAddresses: []  Routes: [] DnsAddresses: [] Domains: null MTU: 0}})

Bug: 69800563
Change-Id: I01047e9a72fce718a167c592bf14406c3bab3ba9
2017-12-07 18:07:38 +09:00
Hugo Benichi
f5cf390e41 Merge "Fix bug in MacAddress.fromString()" am: cdb84d2fc7 am: 9d077ecd9d
am: 5d2bd6bf0c

Change-Id: I7df23a45618825b874658ccbbf1d1fda6b164954
2017-12-05 10:09:35 +00:00
Hugo Benichi
9d077ecd9d Merge "Fix bug in MacAddress.fromString()"
am: cdb84d2fc7

Change-Id: If4c85f0a5ea259f53f9cffa6eacb58fcde1fd1df
2017-12-05 09:47:50 +00:00
Hugo Benichi
d2c5b1925b Fix bug in MacAddress.fromString()
Test: runtest frameworks-net
Bug: 69390696
Change-Id: I83f01e4915092e08ed201d9b6738bb02498d3bba
2017-12-05 13:14:08 +09:00
nharold
b8ab1d404b Merge "Validate IpSecAlgorithm Length" am: 68b81299d2 am: 5e3d66e78b
am: 7a8f0dc0c0

Change-Id: I1a28d860ac7125afc1f82ac17d1834b0121c0e11
2017-12-05 02:46:06 +00:00
nharold
5e3d66e78b Merge "Validate IpSecAlgorithm Length"
am: 68b81299d2

Change-Id: I23f7612c119e67f9a1647568aeefde38a365f8da
2017-12-05 02:28:10 +00:00
nharold
68b81299d2 Merge "Validate IpSecAlgorithm Length" 2017-12-05 02:13:55 +00:00
Hugo Benichi
469f4f6010 Merge "MacAddress: light refactors and improve documentation" am: d871cab32d am: 2f7cb5752b
am: 13b2fa0f85

Change-Id: Iae0e87bcc9bd9c1ba98319f3b65f18f6743c02a0
2017-12-05 00:06:50 +00:00
Hugo Benichi
2f7cb5752b Merge "MacAddress: light refactors and improve documentation"
am: d871cab32d

Change-Id: I51bb8786ecd7f53e3342625c7a2625007eedfc0f
2017-12-04 23:38:27 +00:00
Nathan Harold
3349b26630 Validate IpSecAlgorithm Length
Improve the Validation of IpSecAlgorithm by
explicitly checking the length in addition to
the truncation length (previously an oversight).
In addition, we now check the lengths during
un-parceling, which will catch someone maliciously
manually building a parcel and passing it, bypassing
the checks in the constructor.

Bug: 68780091
Test: runtest -x IpSecAlgorithmTest.java
Change-Id: I8172762617264d34f47d5144336464510f07a701
2017-12-04 15:12:14 -08:00
Hugo Benichi
84bb7fc761 MacAddress: light refactors and improve documentation
This patch does some light refactoring in MacAddress to prepare for
exposing MacAddress in the public api:
 - documention is improved
 - some method names are renamed
 - a toSafeString method is added
 - a padding bug in the conversion methods outputting strings for
   mac addresses is fixed

Bug: 69390696
Test: runtest frameworks-net
Change-Id: I399a97dabc2dfa8df9c5518c8b12484e43ca05c9
2017-12-04 22:34:43 +09:00
Xin Li
220871a697 Merge commit '98e12851336b7db16e583f9afac63ecc97465980' from
oc-mr1-dev-plus-aosp-without-vendor into stage-aosp-master.

Change-Id: Ia7b8da4a00d215160e4a4fa40f6044208d1297b7
Merged-In: I19846d2a3ee27aecbae2367a74ee49082eea154d
2017-11-14 12:31:11 -08:00
Hugo Benichi
9c114081a8 Merge "MacAddress follow-up: define the core of the class" am: cd35c65b5b am: d39a50350a
am: f7c0f2e6bf

Change-Id: Iaa55c54a46844428da0ddd9d0a5ee899c0aa1dfb
2017-11-09 12:55:56 +00:00
Hugo Benichi
f7c0f2e6bf Merge "MacAddress follow-up: define the core of the class" am: cd35c65b5b
am: d39a50350a

Change-Id: I1063cbb5a468818f68ee5406e52b6cd74c85c4bf
2017-11-09 12:43:52 +00:00
Hugo Benichi
ac52e40049 MacAddress follow-up: define the core of the class
Test: new unit test parts of $ runtest frameworks-net
Change-Id: I08c57d2d656802f7bdd7a93fde711a7e77247583
2017-11-09 16:36:45 +09:00
Hugo Benichi
ffdbb572e5 Merge "Define MacAddress class" am: 925349ac8f am: 37caaaa705
am: 76c2cd2a6a

Change-Id: I0e09e64bb2a6306c0422443038351fabf10e2d6e
2017-11-08 06:57:00 +00:00
Hugo Benichi
76c2cd2a6a Merge "Define MacAddress class" am: 925349ac8f
am: 37caaaa705

Change-Id: I377de35ab9ce9d8bf44bd90295a2a41fbea06d7a
2017-11-08 06:46:49 +00:00
Hugo Benichi
59c8e423a8 Define MacAddress class
Test: new unit tests part of $ runtest frameworks-net
Change-Id: I5a6a868ff86e9bffdc551d4e2bb486b585525c30
2017-11-08 11:09:49 +09:00
Hugo Benichi
aab9077049 Merge "Refactor ApfFilter creation" am: 5e619dce66 am: 6c25e1e24d
am: 55939f351b

Change-Id: Iff87d6efa0bb55c84e852a84489a0218acd21100
2017-11-07 23:22:39 +00:00
Hugo Benichi
55939f351b Merge "Refactor ApfFilter creation" am: 5e619dce66
am: 6c25e1e24d

Change-Id: I3f406b08287092d4e2bc23f158693cea6f6646e4
2017-11-07 22:53:09 +00:00
Hugo Benichi
7216636a62 Refactor ApfFilter creation
This patch introduces a helper ApfConfiguration class for passing filter
parameters to the constructor of ApfFilter. The benefits are:
  - less parameter boilerplate across IpManager, ApfFilter, ApfTest
  - easier to add more parameters in the future (useful for hardware
    counters options and further gservices configurable options)

There is no functional changes otherwise.

Test: runtest frameworks-net
Change-Id: I47231c21df80bc36b6d4e15369748017b50b8da1
2017-11-07 21:42:39 +09:00
Jeff Sharkey
e4595d58b6 Merge "Define NOT_ROAMING network capability." am: 8f380ab29c am: 3fe1ae29cd
am: 69b31d4eb0

Change-Id: I04220ff55fc87dbf8d417a30f15a06a877b412d4
2017-11-03 23:18:45 +00:00
Jeff Sharkey
69b31d4eb0 Merge "Define NOT_ROAMING network capability." am: 8f380ab29c
am: 3fe1ae29cd

Change-Id: Ib511f7af82c80fd4e95f4da9de1fdce200deb987
2017-11-03 23:07:03 +00:00
Jeff Sharkey
72f9c42b9e Define NOT_ROAMING network capability.
The "roaming" state of a network really belongs on NetworkCapabilities
instead of being published through NetworkInfo.isRoaming().  One major
reason is to support developers creating NetworkRequests for a
non-roaming network.

Watch for any capability changes that network statistics are
interested in (either metered or roaming) and notify it to perform
an update pass; fixes bug where we previously only triggered on
roaming changes.

Fix bug in VPNs where metered/roaming capabilities of underlying
networks weren't being propagated; this was probably preventing
some jobs from running over unmetered networks, and causing other
jobs to run over roaming networks!  Also passes along link bandwidth
information from underlying networks, and propegates any changes
to underlying networks.

Fix race condition by reading prevNc inside lock.  Utility methods
correctly calculate min/max link bandwidth values.

Test: bit FrameworksNetTests:android.net.,com.android.server.net.,com.android.server.connectivity.,com.android.server.ConnectivityServiceTest
Bug: 68397798, 16207332
Change-Id: I3e1a6544c902bf3a79356b72d3616af1fd2b0f49
2017-11-01 19:05:42 -06:00
Erik Kline
bee33f843e Merge "Switch to listening for CarrierConfig changes for provisioning rechecks" am: c21effd526 am: 166c27440d
am: fc0b863b44

Change-Id: I2e46e8271209798692d5074d336ef73eb96370bb
2017-10-25 14:07:34 +00:00
Erik Kline
fc0b863b44 Merge "Switch to listening for CarrierConfig changes for provisioning rechecks" am: c21effd526
am: 166c27440d

Change-Id: I16c6e768d8df46d2d11947edc0c5620dd3f1b2a9
2017-10-25 13:58:16 +00:00
Erik Kline
de63772eff Switch to listening for CarrierConfig changes for provisioning rechecks
This change switches the signal used for provisioning rechecks from:

    ACTION_SIM_STATE_CHANGED

to:

    ACTION_CARRIER_CONFIG_CHANGED

Additionally:
    - reexamine carrier config overrides during provisioning re-checks
      (this just was never happening before).
    - refactor shared code out to VersionedBroadcastListener

Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net
Bug: 63400667
Bug: 67755969
Change-Id: Ib9d222eb7ca0e0dd988a1bd97ab32059189ada2c
2017-10-20 19:56:27 +09:00
TreeHugger Robot
92ec65eee1 Merge "Migrating remaining core networking tests to Junit4" 2017-10-13 05:26:31 +00:00
Hugo Benichi
3d6ba6ed6d Migrating remaining core networking tests to Junit4
Bug: 62918393
Test: runtest frameworks-net
Change-Id: I30f7eaa0307b8fad5a8de7a0da235a4f76c18677
2017-10-13 12:16:32 +09:00
Hugo Benichi
14f16b977c Merge "Import a few android.net unit tests into frameworks-net" am: 24660e5bb7 am: 1ce75f643c am: 3d4d464f0a
am: 86eb8a58af

Change-Id: I4922d8505e641652cea028c6d60a0f9996b130e6
2017-10-12 12:45:11 +00:00
Hugo Benichi
86eb8a58af Merge "Import a few android.net unit tests into frameworks-net" am: 24660e5bb7 am: 1ce75f643c
am: 3d4d464f0a

Change-Id: Icf9ccd265754f1b85720bb778633dc5ef515646e
2017-10-12 12:34:55 +00:00
Hugo Benichi
96ba9c4422 Merge "Migrate most of core networking tests to junit4" am: 9d456cd9c6 am: 7d9588c836 am: c40687f85a
am: 550de399d7

Change-Id: I44024c6cfe2bcb66f00a39ac9d97182ff62a23d1
2017-10-12 09:52:28 +00:00
Hugo Benichi
550de399d7 Merge "Migrate most of core networking tests to junit4" am: 9d456cd9c6 am: 7d9588c836
am: c40687f85a

Change-Id: Ic59ca37bbb31ba091c8b6d31170584b946c2527a
2017-10-12 09:43:11 +00:00
Hugo Benichi
da7edaff32 Import a few android.net unit tests into frameworks-net
Bug: 62918393
Test: runtest frameworks-net
Change-Id: I3c7c60bcfeffec5c5ec287810312349237a2868a
2017-10-12 15:55:22 +09:00
Hugo Benichi
4a0c5d7ef7 Migrate most of core networking tests to junit4
This patch is a batch of mechanical changes to test classes to migrate
away from AndroidTestCase and TestCase.

Bug: 62918393
Test: runtest frameworks-net
Change-Id: I74134609e511f22c4d9ecd65780e981f9ba7ae3f
2017-10-12 15:26:09 +09:00
nharold
19d69c61fa Merge changes from topic "ipsec-svc-cleanup" am: 9778c7884f am: ae61e0c6e8 am: 4e793fd0b5
am: b87c060ec7

Change-Id: I7418f23141b26f23555397d231e8a73692c04085
2017-10-04 21:14:17 +00:00
nharold
b87c060ec7 Merge changes from topic "ipsec-svc-cleanup" am: 9778c7884f am: ae61e0c6e8
am: 4e793fd0b5

Change-Id: Ib7eae5c9e223493281524e862979e16d25984dde
2017-10-04 20:53:04 +00:00
Nathan Harold
19ce70b089 Add equals() for IpSecAlgorithm and IpSecConfig
Add equality testing methods to support tests
for parceling and un-parceling IpSecConfig.

Bug: 38397094
Test: runtest -x IpSecConfigTest.java
Change-Id: I31e318334d39ed6e9daf5ec8f3be7dcec75e12ad
2017-10-03 19:45:58 -07:00
Hugo Benichi
124b3e7738 Merge "DO NOT MERGE Ignore DUN in describeImmutableDifferences" into oc-mr1-dev
am: 9d5f50a9f8

Change-Id: I0236132b8b497af5b1c26aa44e6494fe0510cb6d
2017-10-02 11:10:37 +00:00
Hugo Benichi
a8f395702d DO NOT MERGE Ignore DUN in describeImmutableDifferences
This patch changes describeImmutableDifferences in NetworkCapabilities
to ignore differences in NET_CAPABILITY_DUN, so that updateCapabilities
in ConnectivityService to not report wtf errors when a NetworkAgent
degrades its NetworkCapabilities object by removing NET_CAPABILITY_DUN.

Bug: 65257223
Test: runtest frameworks-net
Change-Id: I115ed1b366da01a3f8c3c6e97e0db8ce995fd377
2017-10-02 15:03:57 +09:00
Erik Kline
853999f25a Merge "Change BlockingSocketReader to use MessageQueue fd handling" am: 48c7d27f64 am: b9b0886335
am: a59b4d1568

Change-Id: I3f3f1aa7e57ea6311e91f88724a2ac3c3a6ee9c6
2017-09-29 17:16:37 +00:00
Erik Kline
f840e07f82 Change BlockingSocketReader to use MessageQueue fd handling
Convert the simplistic blocking read in a separate thread model to
the MessageQueue OnFileDescriptorEventListener model, albeit still
on a separate thread.

Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - basic IpManager functions still work,
      including ConnectivityPacketTracker
Bug: 62476366
Bug: 67013397
Change-Id: I1f4a6707eba402338947fe3f5392a26660f05714
2017-09-28 18:22:40 +09:00
Hugo Benichi
5e1d504ad8 Merge changes I4719b4dc,I0308cdf4,I38db1bb7 am: a3c28cc567 am: 3fce811dcb
am: b025492a6b

Change-Id: I5385a3747e039a42e86034f7632edd0f855b2eb1
2017-09-14 18:11:06 +00:00
Hugo Benichi
25c7f49ff3 IpManagerTest: fix flaky test
Reset the callback mock for every onLinkPropertiesChange expected when
pushing address updates on the BaseNetworkObserver.

Bug: 32561414
Bug: 62918393
Test: runtest frameworks-net, IpManagerTest passes 200 times in a row
Change-Id: I4719b4dc86044438243887634191c2d21686b80f
2017-09-13 18:39:50 +09:00
Hugo Benichi
2a94ac555e Fix flaky NsdManagerTest
Bad synchronization between the mock handler and the test assertions
were causing testDiscoverService() to sometime fails (1/50 ~ 1/100 repro
rate).

Bug: 32561414
Bug: 62918393
Test: runtest frameworks-net, NsdManager#testDiscoverService now passes
      1000 times without errors.
Change-Id: I0308cdf48fc6bdc2fc9b4e8f7d5241a1cf2ea443
2017-09-13 18:38:53 +09:00
Erik Kline
fc105bb6d8 Support NAT keepalives
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - turned on debugging and walked around watching IpReachabilityMonitor
      force neighbors into NUD_PROBE state without error
    - observed NAT callbacks happening without any reported errors
    - watched:
        adb shell cat /proc/net/nf_conntrack | egrep '192[.]168[.]43[.]' | sort -n -k5
      for correct timeout updates

Bug: 29337859
Bug: 32163131

Merged-In: I82ac60e5ad79ec64a13df6ec56b5b51b223f8dde
Merged-In: I09bc685e821ec5e871576a54c4290edea4c5160b
Merged-In: I4d180369a8f64ee494b016656988252d98a09ba4
Change-Id: Icb23da64cfaa3a19f7bc75fba426a52b0994fb0f
(cherry picked from commit 7a65bc62fb)
2017-09-08 10:54:20 +09:00
Erik Kline
a0991bdc14 Merge "Support NAT keepalives" into oc-mr1-dev
am: 4fae111ca2

Change-Id: I82ac60e5ad79ec64a13df6ec56b5b51b223f8dde
2017-09-07 16:48:57 +00:00
Erik Kline
7a65bc62fb Support NAT keepalives
Test: as follows
    - built
    - flashed
    - booted
    - "runtest frameworks-net" passes
    - turned on debugging and walked around watching IpReachabilityMonitor
      force neighbors into NUD_PROBE state without error
    - observed NAT callbacks happening without any reported errors
    - watched:
        adb shell cat /proc/net/nf_conntrack | egrep '192[.]168[.]43[.]' | sort -n -k5
      for correct timeout updates

Bug: 29337859
Bug: 32163131

Change-Id: Icb23da64cfaa3a19f7bc75fba426a52b0994fb0f
2017-09-07 18:53:52 +09:00
Hugo Benichi
84b253b0c5 Merge "Network Service Discovery test: properly release resources" am: c9d24d203d am: 80e0daa870
am: f467db29f9

Change-Id: Id9be284a16112f999d752751a7972fd735573cda
2017-09-04 12:42:56 +00:00