Commit Graph

1469 Commits

Author SHA1 Message Date
Erik Kline
2625befbb1 Final removal of CONNECTIVITY_ACTION_IMMEDIATE.
Since the demise of the connectivity change delay,
CONNECTIVITY_ACTION_IMMEDIATE has been sent out back to back with
CONNECTIVITY_ACTION.

Interested parties should watch for CONNECTIVITY_ACTION.

Bug: 20013379
Change-Id: I072dddf95adb3bbd17fa1f7159d4ea848ade8f19
2015-04-22 08:56:43 +09:00
Paul Jensen
25a217c0fb Add captive portal API.
This API allows apps other than the system's CaptivePortalLogin
to handle signing in to captive portals.

bug:19416463
Change-Id: I27fce5856b635233e6ff66396d50ccabedd76cf5
2015-04-16 16:53:10 +00:00
fenglu
2bbd2b6830 LCE service implementation - connectivity side
Change-Id: If11bd99c44c7dc8d2aa2bc05a10e04421739baa6
2015-04-15 23:13:52 -07:00
Erik Kline
104b0f1353 multinetwork API: native implementation
Bug: 19537384
Change-Id: I04f4a7de2b1e583989b67a853df6ab50289c2185
2015-04-15 15:52:31 +09:00
Paul Jensen
3541e9f469 Deprecate connectivity APIs relying on integer network types.
Recommend ConnectivityManager.getAllNetworks() and various state
inspection functions as a way forward.

Bug:19608294
Change-Id: Ibd53629995897047fc532ffa56f079dfba10a7c7
2015-04-14 17:51:27 +00:00
Paul Jensen
bfd17b75a6 Add ConnectivityManager.reportNetworkConnectivity() API
This new API allows reporting networks that are perceived to provide Internet
connectivity and networks that are not.  This allows the framework to avoid
needlessly reevaluating networks where the apps perception matches the
framework's perception.  This was not possible with the prior API,
reportBadNetwork.

Bug: 16214361
Change-Id: Id4409bd7538854bd837231fb50e693c10a62b4f2
2015-04-13 18:48:54 +00:00
Paul Jensen
31a94f48bf Add ConnectivityManager.getActiveNetwork().
Rework NetID allocation in ConnectivityService so registerNetworkAgent() can
return the allocated NetID.

Bug: 19416463
Change-Id: I68e395552cf27422c80b4dfae5db5d56a0d68f5d
2015-04-10 14:03:13 +00:00
Paul Jensen
e75b9e3555 Non-functional code cleanup of ConnectivityService.
1. Remove ConnectivityService.findConnectionTypeForIface() as this can be done
   just as easily with supported APIs now.
2. Avoid making copies of Network objects as this precludes reuse of Network
   internals (e.g. socket factory, connection pool).

Change-Id: I52f92e35d769d8350471f485e408169608630082
2015-04-08 07:46:49 -04:00
Lorenzo Colitti
582b868c44 Unhide Network.openConnection(URL, Proxy).
Spun off from
https://partner-android-review.googlesource.com/#/c/205463/ for
ease of review.

Bug: 19416463
Change-Id: Ia37a53a350d55b5514b949242368dfe396f6b9a0
2015-04-07 13:13:20 +09:00
Paul Jensen
0d719cab11 Fix typos in ConnectivityManager documentation.
Spun off from
https://partner-android-review.googlesource.com/#/c/205463/ for
ease of review.

Bug: 19416463
Change-Id: I2f88ac415177ecd96c9191df5e390830869f52e1
2015-04-07 13:13:13 +09:00
Paul Jensen
ad8234213d Deprecate EXTRA_PROXY_INFO and unhide ConnectivityManager.getDefaultProxy().
1. Unhide ConnectivityManager.getDefaultProxy() and update it to
   take into account process-bound-Networks.
2. Deprecate EXTRA_PROXY_INFO and instead encourage querying via
   getDefaultProxy().

Bug: 17905627
Bug: 17420465
Bug: 18144582

Change-Id: I45358ee82fe705d048022c8238b2452f52c37b88
2015-04-03 07:25:55 -04:00
Paul Jensen
72db88e46f Deprecate static ConnectivityManager.get/setProcessDefaultNetwork() functions.
These functions risk hitting an unchecked Exception due to ConnectivityManager
not being instantiated yet.  Also, change Network.openConnection() to throw a
checked Exception rather than an unchecked Exception when ConnectivityManager
is not yet instantiated.

bug:19416463
Change-Id: Ie1e2b3238aec0343d267c76b64927073f2f05f85
2015-04-02 14:03:43 +00:00
Erik Kline
34c6e6b853 Add DhcpStateMachine PollingState.
This state leaves dhcpcd running and polls for results, with
exponential backoff to once every 32 seconds.

Bug: 19422416
Change-Id: I87f481969629ba104491f25ea36de1efc4ad105a
2015-04-01 17:13:39 +09:00
Paul Jensen
39350847ff Merge "Make NetworkCapabilities.NOT_VPN javadoc visible." into m-wireless-dev 2015-03-20 11:27:18 +00:00
Paul Jensen
43564472ee Remove dead code, mostly DataStateTracker.
(cherry picked from AOSP commit 7fad4eb4b5)

Change-Id: I18c44cd08dfb51e02a96d0b726e9af1db21e3058
2015-03-18 12:29:13 -04:00
Paul Jensen
76b610a9a1 Make NetworkCapabilities.NOT_VPN javadoc visible.
Also adjust wording to be more suitable for NetworkRequests and NetworkAgents.

Change-Id: I1cc93cb20779cf02d6ffa0fa11ad2916c199b365
2015-03-18 09:33:07 -04:00
Lorenzo Colitti
4ff9f0fd9f Add a protectFromVpn method that takes a FileDescriptor
Bug: 19704592
Change-Id: I9aeb29c2f6cf55fa010bc606c99b21a797ac5a19
2015-03-17 19:46:12 +09:00
Lorenzo Colitti
c77f04f9bc Merge changes from topic 'dhcpclient' into m-wireless-dev
* changes:
  DHCP: Minor cleanups to the packet code.
  DHCP: Move the packet code to frameworks/base/services.
  DHCP: Add a native method for making a DHCP socket.
  DHCP: Add a superclass for DhcpStateMachine.
2015-03-16 12:12:42 +00:00
Lorenzo Colitti
30d4ec6201 Merge "Add two utility methods for IPv4 netmasks." into m-wireless-dev 2015-03-16 12:11:37 +00:00
Lorenzo Colitti
c95a87f30d DHCP: Move the packet code to frameworks/base/services.
There's no need for it to be in frameworks/base/core, since it
will only be used by services.

Bug: 19704592
Change-Id: I2f5277eca848b7000ca46db575e8602eacb5c8bd
2015-03-16 20:08:46 +09:00
Lorenzo Colitti
566e0cb692 DHCP: Add a native method for making a DHCP socket.
Bug: 19704592
Change-Id: Iadd60d39c93aaabd2917e76791101a7d313b34be
2015-03-16 20:08:45 +09:00
Lorenzo Colitti
5671eedda0 DHCP: Add a superclass for DhcpStateMachine.
This can be used to switch between different DHCP client
implementations. The caller can declare objects of type
BaseDhcpStateMachine, and call its methods, without needing to
care what implementation is in use.

Bug: 19704592
Change-Id: Icefad9b0d0f83b349681388b1fa16b5e2e37c042
2015-03-16 20:03:09 +09:00
Lorenzo Colitti
475085b987 Add two utility methods for IPv4 netmasks.
1. Add a validating method to convert a netmask to a prefix length.
2. Add a function to get the implicit netmask of an IPv4 address.
3. Add a unit test.

Bug: 19704592
Change-Id: Icb9f58d3903ea01df9e3720383c9bd5db6dd8f26
2015-03-16 16:07:36 +09:00
Paul Jensen
b335d20628 Fix javadoc braces for ConnectivityManager.EXTRA_NETWORK.
Change-Id: I5ad30a34f96e9e99a557b5bae9a30bfc08c89620
2015-03-13 14:06:12 -04:00
Erik Kline
3c3ce17c5a Refactor NetworkUtils interaction with DHCP.
Separate out starting DHCP (DISCOVER) and RENEW operations from fetching
the results.  Add NetworkUtils.getDhcpResults(), to enable quick checks
of any available DhcpResults without extraneous interaction with the
DHCP daemon.

Bug: 19422416
Change-Id: I58808e529dda8429737e749f5caef56d923c0809
2015-03-02 12:35:35 +09:00
Yashdev Singh
bece926b51 Telephony: Implementation for IWLAN.
Introduce new RAT as IWLAN.
- Allow registration polling in airplane mode.
- Allow non-default PDP activation for iwlan RAT.

Implementation of iwlan and wwan coexistence.
- A new callback event for unsol oem hook response to indicate
  if cellular and iwlan RAT co-exists.
- If co-existence is possible then allow default PDP activation
  along with other PDPs.

Change-Id: Icc6f8111ec3c86ec06e8facd5a5b60b4d5e08e78
2015-02-26 06:37:36 +00:00
Jeremy Joslin
fcde58f155 Update Javadoc for EXTRA_NETWORK.
Bug: 19352840
Change-Id: Ib668bee0fb2c6f5bcd01a7908ebd20b9ec8a40ef
2015-02-11 18:28:57 -08:00
Lorenzo Colitti
ae38596bcf Merge "Support connecting to networks with misconfigured subnet masks." into lmp-mr1-dev 2015-01-23 12:50:32 +00:00
Lorenzo Colitti
2dfb79a54a Support connecting to networks with misconfigured subnet masks.
In K and earlier, we would connect to a network where the gateway
was not covered by the subnet mask of the IP address. This is an
invalid configuration, but it used to work, and other OSes appear
to accept it too, so support it.

Bug: 19067207
Change-Id: I822e1d754b336691b675438eefa959a3d75fd07b
2015-01-23 21:10:34 +09:00
Lorenzo Colitti
78d51c2292 Merge "Use the proper IpPrefix and LinkAddress constructors in VPN code." into lmp-mr1-dev 2015-01-23 05:57:38 +00:00
Lorenzo Colitti
b205311456 Use the proper IpPrefix and LinkAddress constructors in VPN code.
This simplifies the code, and also makes it possible for
users to point multicast routes at the VPN. The LinkAddress
objects we were previously using to construct the RouteInfo do
not accept these, but IpPrefix objects do.

Bug: 18485968
Change-Id: Ie914a2eb359b78161810ee473df725059f944f4e
2015-01-23 14:30:22 +09:00
Robert Greenwalt
2ffe412b0e Rerun entitlementcheck on sim change.
Only run if entitlement is needed and tethering is running.

bug:18356505
Change-Id: Ifc50189bf573e4575f747975edcce093c4870356
2015-01-14 16:55:38 -08:00
Paul Jensen
9ffb53cb11 Clear process DNS NetID binding when expiring or releaseing legacy requests.
When requests made by ConnectivityManager.startUsingNetworkFeature() are
expired or are canceled via ConnectivityManager.stopUsingNetworkFeature(),
we must remember to clear the binding of DNS requests from the calling
process to the Network satisfying the request.

bug:18778725
Change-Id: I800c808ac6486000241b5d263aa79a1192a9fe9e
2015-01-06 09:43:04 -05:00
Robert Greenwalt
bde00a2b5c Merge "Add toString in NetworkFactory." into lmp-mr1-dev 2014-12-11 16:59:13 +00:00
Paul Jensen
2122e14cca Merge "Fix several HTTP proxy issues with multinetworking." into lmp-mr1-dev 2014-12-11 04:51:16 +00:00
Robert Greenwalt
6b746b5e14 Add toString in NetworkFactory.
Needed some additional logging to track down this bug
so add toString to capture the state.

bug:18569575
Change-Id: I4047b8f8797bac09bcff31e99d9cb117abb04df4
2014-12-10 19:04:50 -08:00
Paul Jensen
e0bef71662 Fix several HTTP proxy issues with multinetworking.
1. Send PROXY_CHANGE_ACTION broadcast when any network's proxy changes,
   not just the default network.
2. When a process is bound to a particular Network, update the proxy
   system properties to those for the bound Network, and keep them
   updated when PROXY_CHANGE_ACTION broadcasts are received.
3. Make Network.openConnection() use the proxy for the Network.

bug:17905627
bug:17420465
bug:18144582

(cherry-pick of https://android-review.googlesource.com/#/c/115170)

Change-Id: Ia2819985e6108a8c121e74c683a5646becfd0a97
2014-12-10 15:22:12 -05:00
Erik Kline
33cd463bbb Merge "Re-remove CONNECTIVITY_CHANGE_DELAY and supporting functions." into lmp-mr1-dev 2014-12-10 07:29:47 +00:00
Elliott Hughes
0aac16bbf1 am b034de7e: am 12f100de: am e8f6cb06: Merge "Fix typo." into lmp-docs
* commit 'b034de7eefc82a951bbf36a65b304f9475e1b44c':
  Fix typo.
2014-12-09 21:34:06 +00:00
Elliott Hughes
b034de7eef am 12f100de: am e8f6cb06: Merge "Fix typo." into lmp-docs
* commit '12f100def9e34a554df07f47badc259028ac4c68':
  Fix typo.
2014-12-09 19:30:26 +00:00
Elliott Hughes
547b0acae1 Fix typo.
Bug: https://code.google.com/p/android/issues/detail?id=78422

(cherry picked from commit 0adcf15ad8)

Change-Id: I62746a0690e9845b20b23b91f2a50d85214e8aa1
2014-12-09 10:31:37 -08:00
Wink Saville
15b29ac7fa Merge "Add subId as parameter for get/setDataEnabled." into lmp-mr1-dev 2014-12-09 17:52:27 +00:00
Jeff Sharkey
6973634ce6 Direct notification of network interface changes.
Connectivity broadcasts recently changed and are no longer sent for
certain types of network changes.  For example, when stacked network
interfaces change for a mobile network.  To ensure that we pick up
all these details, directly wire the two services together.

Also remove some unused code for split network types.

Bug: 18666753
Change-Id: I0467bd5b330c0e0cb51af2306d821b41ad16337a
2014-12-08 14:50:14 -08:00
Jeff Sharkey
3256601f5e Offer to "merge" subscribers for data usage.
There are some cases where multiple subscriber identities (IMSI)
should be treated as "merged together" from a data usage
perspective.  This is done by extending the template used for
matching purposes to support multiple subscribers.

Then, when we query historical usage or set network policies, we
normalize the matching template to merge to any other identities
that should be included.  When normalizing, the "lowest" identity
is always used for equality and storage purposes, which allows
identities to come and go over time.

This change also fixes data usage recording for multi-SIM devices
by passing along the concrete subscriber identity for each network
interface.  Also correctly create default policies for multi-SIM
devices.  This change also drops setPolicyDataEnable() until it can
be wired up to the right underlying NetworkAgent.  (This means we
still bring up the network, and then rely on iptables rules to block
traffic when over the limit, instead of proactively disabling the
connection.)

Bug: 18012787
Change-Id: If6acf32009fdfea2b836f5aff8e2f3e5e0248b4a
2014-12-08 08:42:59 -08:00
Erik Kline
8f29dcfb53 Re-remove CONNECTIVITY_CHANGE_DELAY and supporting functions.
Since optimistic addresses are useable upon kernel notification
there is no need for this extra connectivity delay.

---

This functionality was originally submitted in ag/572619.  Owing
to issues with bind()ing to optimistic addresses (see b/18609055)
this was reverted in ag/598673.

This reverts the revert.  :-)

Bug: 17769720
Change-Id: Ibee490b2af72050693b6bd748193f51e312ca527
2014-12-08 16:25:20 +09:00
Wink Saville
36ffb0494d Add subId as parameter for get/setDataEnabled.
Bug: 18279333
Change-Id: I2496a2fd92b154e5e6981cbf6b5b5939cda59122
2014-12-05 11:10:30 -08:00
Erik Kline
e660e27603 Revert "Merge "Remove CONNECTIVITY_CHANGE_DELAY and friends." into lmp-mr1-dev"
This is the revert of ag/572619.

This reverts commit 9261d9d645, reversing
changes made to 32b61ab28f.

Bug: 18609055
Bug: 17769720
Change-Id: I122eba200f2071d4e5777ec34c1d04fb567345a8
2014-12-05 18:02:56 +00:00
Erik Kline
9261d9d645 Merge "Remove CONNECTIVITY_CHANGE_DELAY and friends." into lmp-mr1-dev 2014-12-04 03:14:02 +00:00
Sreeram Ramachandran
9e956e9b9a Fix docs per API review.
Bug: 18573918
Change-Id: I639fe2ce40cdef57d904b9ad1ebb28db7d057144
2014-12-03 10:53:35 -08:00
Lorenzo Colitti
403aa2684e Make StatusBar display all default networks.
The basic principle is: if an app's traffic could possibly go
over a network without the app using the multinetwork APIs (hence
"by default"), then the status bar should show that network's
connectivity.

In the normal case, app traffic only goes over the system's default
network connection, so that's the only network returned.

With a VPN in force, some app traffic may go into the VPN, and thus over
whatever underlying networks the VPN specifies, while other app traffic
may go over the system default network (e.g.: a split-tunnel VPN, or an
app disallowed by the VPN), so the set of networks returned includes the
VPN's underlying networks and the system default.

Specifically:

1. Add a NETWORK_CAPABILITY_VALIDATED bit to NetworkCapabilities.
2. Add a hidden API to retrieve the NetworkCapabilities of
   all default networks for a given macro-user.
3. Modify the status bar code that used getActiveNetworkInfo to
   determine which network was active, and make it consider all
   validated networks instead.
4. Because the set of active networks depends on which VPN app
   the user is running, make the status bar re-evaluate the
   networking situation when the active user changes.

Bug: 17460017
Change-Id: Ie4965f35fb5936b088e6060ee06e362c22297ab2
2014-12-02 10:27:05 -08:00