Commit Graph

1303 Commits

Author SHA1 Message Date
Jeff Davidson
7be8e9725f Expose network scoring APIs to /system apps.
Ideally, we'd only expose the methods that we intend unbundled apps to
call (e.g. not NetworkScoreManager#setActiveScorer, which should only
be called by Settings), but this isn't harmful in terms of permissions
as the APIs still check security appropriately.

Bug: 15833200
Change-Id: I2047515b41c8be0cf7cb51dd495fe72309c05f68
2014-07-16 17:24:46 -07:00
Alex Klyubin
b56f21270a No need to explicitly enable TLS-PSK cipher suites.
This CL adjusts the example code in android.net.PSKKeyManager Javadoc
to no longer explicitly enable TLS-PSK cipher suites. These are now
enabled automatically if SSLContext is initialized with a
PSKKeyManager.

Bug: 15073623
Change-Id: I7f7f713478171491347cdfb9651fd9a095dc60ee
2014-07-15 10:38:21 -07:00
Sreeram Ramachandran
06b6cdaed5 Remove unnecessary code and APIs.
This stuff has been replaced by setNetworkForUser() in NetdClient.

Change-Id: If525ee259b74314191d1913f7c2a3e828e05c38f
2014-07-11 18:16:04 -07:00
Paul Jensen
5d59e785e1 Readjust location of NETID_UNSET definition.
This is a tweak to my 8ec11bb change I a-little-too-hastily committed.

Change-Id: Ibeee9382109994c66227d1c42aac749e2a274ed7
2014-07-11 16:53:39 +00:00
Paul Jensen
bcc76d345c Define NETID_UNSET in ConnectivityManager.
This allows some cleanup and removal of dead code.

bug:15489928
Change-Id: Iaf0507bc2e8ec6dcc253f01f61c5b221d46581f9
2014-07-11 12:00:10 -04:00
Robert Greenwalt
94badcc8ce Missed an entry in the copy constructor.
bug:15755597
Change-Id: Iee17ca88404a6a50258d204a12cd0c04cd15e34e
2014-07-10 14:55:14 -07:00
Sreeram Ramachandran
a9294eb1c9 Allow a VPN to be declared bypassable.
A VPN declared bypassable allows apps to use the new multinetwork APIs to
send/receive traffic directly over the underlying network, whereas without it,
traffic from those apps would be forced to go via the VPN.

Apps still need the right permissions to access the underlying network. For
example, if the underlying network is "untrusted", only apps with
CHANGE_NETWORK_STATE (or such permission) can actually use it directly.

New API with stub implementation to be filled out later.

Bug: 15347374
Change-Id: I8794715e024e08380a43f7a090613c5897611c5b
2014-07-10 14:44:27 -07:00
Sreeram Ramachandran
633f0e875d Let VpnService specify a white/black list of apps that are allowed access.
New API with stub implementation to be filled out later.

Bug: 13651397
Change-Id: Ibabd6c22495ce58dc88142bb958c1ef12adcf78e
2014-07-10 21:33:58 +00:00
Sreeram Ramachandran
1384605a89 Update VpnService API documentation.
The goal of blocking an address family by default is to prevent unintended
security holes. For example, a VPN that only deals with IPv4 doesn't know or
care about IPv6 at all, so it doesn't do anything for IPv6. An app shouldn't be
able to get around (bypass) the VPN by using IPv6.

Therefore, it is not necessary to block an address family in removeAddress().
The VPN was clearly aware of the address family (since it had configured such an
address before), so if it wants to block that family, it should add a default
route for that family and explicitly drop/block/reject those packets.

Bug: 15972465
Bug: 15409819
Change-Id: I845426fa90dc2358d3e11bc601db0b4bd5d3b7ac
2014-07-10 20:59:51 +00:00
Robert Greenwalt
5f90bccd96 Add networkSpecifier string to NetworkCapabilties.
Allows transport specific network selectivity where multi-sim or sta+sta
is supported.

bug:1575597
Change-Id: I9c60fe7710e988c17d63236788b492a3ddd264a1
2014-07-10 20:58:20 +00:00
Paul Jensen
6bc2c2c34f Convert Vpn from NetworkStateTracker to NetworkAgent.
This eliminates the need for the ConnectivityService.VpnCallback class.
This requires shifting VPNs to the new "network" netd API.
VpnService.protect() is modified to no longer go through ConnectivityService.
NetworkCapabilities is extended to add a transport type for VPNs and a
capability requiring a non-VPN (so the default NetworkRequest isn't satisfied
by a VPN).

bug:15409918
Change-Id: Ic4498f1961582208add6f375ad16ce376ee9eb95
2014-07-10 20:39:33 +00:00
Robert Greenwalt
7237965c0d Merge "Refactor wifi p2p's startDhcpServer function" 2014-07-10 18:27:37 +00:00
Robert Greenwalt
9c7e2c2cb4 Refactor wifi p2p's startDhcpServer function
Add getTetheredDhcpRanges() interface and call it before calling
mNwService.startTethering to update dhcp ranges.  This will allow
p2p apps to run well concurently with other tethering apps.

Manual import of AOSP change 81546 by jianzheng.zhou@freescale.com

Change-Id: Iebc62f95bdcedde80e2c1d3e9580d3f625c3b50b
2014-07-10 18:56:12 +00:00
Sreeram Ramachandran
d7e71641f6 Block address families by default in VpnService.
If a VpnService only configures IPv4 addresses, routes and DNS servers, block
IPv6 by default, and vice versa. Also add an API to unblock a family without
needing to add an address, route or DNS server.

New API with stub implementation to be filled out later.

Bug: 15972465
Change-Id: I70d4d5c30ee71802610f6e16f100db6cbccef42c
2014-07-10 17:54:03 +00:00
Sreeram Ramachandran
81c295e1c8 Allow VPNs to dynamically add/remove IP addresses on their tun interface.
New API with stub implementation to be filled out later.

Bug: 15409819
Change-Id: Ic0d2d459953eac86832905115a0d413b9b0b2660
2014-07-10 17:53:18 +00:00
Robert Greenwalt
d706933527 Merge "Add Network inspection API." 2014-07-09 21:39:59 +00:00
Robert Greenwalt
73b6cbae0c Add Network inspection API.
Adds getNetworksNetworkInfo.
Adds getAllNetworks.

Cleans up some synchronization issues.

Change-Id: I82c7a4b554e3c6c1adfe6027cc54b028ed6dbac9
2014-07-10 10:48:23 -07:00
Robert Greenwalt
16e12abbef Add Trust to NetworkCapabilities.
Indicates the user has indicated implicit trust of a network.  This
generally means it's a sim-selected carrier, a plugged in ethernet,
a paired BT device or a wifi they've asked to connect to.  Untrusted
networks are probably limited to unknown wifi AP.

Change-Id: I89490bdaa3c2d63d33f876c72d8b088dc155fa3d
2014-07-08 23:55:18 +00:00
Joe LaPenna
4bb015d90a CW on Master: Disable CaptivePortalTracker, EthernetService
BUG: 15143878

Change-Id: I6c534a28c1fcd475982ae70e7f3af69f3a219e24
2014-07-08 22:52:02 +00:00
Robert Greenwalt
9eb38a6ffa Merge "Remove dead code." 2014-07-06 02:28:07 +00:00
Robert Greenwalt
8283f8802d Remove dead code.
Also adds a TYPE_VPN so the VPN can be strongly typed.

Change-Id: Ibf39450c480f16ce5ab4c25b47965691b844fb92
2014-07-07 17:09:01 -07:00
Robert Greenwalt
620a5466ce Merge "Remove unused api." 2014-07-02 18:55:10 +00:00
Nick Kralevich
118f04bd9a Fix "Clone" override
The function should be named "clone", not "Clone".

Also add @Override so that this error can be detected at
compile time.

Change-Id: I976723978a5e3eafbfbc599bac95b8646d18d5ca
2014-07-07 15:26:28 +00:00
Robert Greenwalt
17c3e0fbfc Remove unused api.
bug:15595155
Change-Id: Ifd79365bd45f20f531782244f471a4cfc32a4135
2014-07-02 13:50:33 -07:00
Brian Carlstrom
e2dd396cef Remove
Change-Id: Ia2fa4ebae090838c2bf7bc96edc38a85fe3059dd
2014-07-07 11:30:16 -07:00
Glenn Kasten
30d5195fc1 Fix build
Change-Id: I7d0787e4a1f778008c979c4174ef445a950c4250
2014-07-07 07:12:29 -07:00
Paul Jensen
e76e4323cc Add captive portal sign-in actions.
Change-Id: I70a6c2efc4f3fa48d5b65e8d630682fe74abfe2c
2014-07-02 16:47:48 +00:00
Paul Jensen
7221cc3bf3 Make sure callback handler is in place before callbacks handled.
When making Network requests in ConnectivityManager, make sure we install the
callback prior to a response from ConnectivityService arriving causing us to
search for the callback and inadvertently not find it.

bug:15928097
Change-Id: Ie5feb9cc8f5effc19870f54dba07218b2e11d82a
2014-07-02 13:50:53 +00:00
Jeff Davidson
b096bdceaf Add a SCORER_CHANGED broadcast.
Sent whenever the active network scorer is changed.

Bug: 16007033
Change-Id: Ib71e89e2cc98fa424db7e489445ec03edefb6880
2014-07-01 15:43:02 -07:00
Dianne Hackborn
be7c50e0a1 Add network access blocking when in battery save mode.
The network policy manager now monitors battery save mode and,
when in battery save, uses its facility to block access to metered
networks to block access to all networks.  That is, it tells the
network management service that all networks have an (infinite)
quota, and puts various app uids to be restricted under quota
interfaces as appropriate.

This new network blocking needs a new facility to be able to white
list apps, such as GmsCore.  To do this, I refactored the package
manager's permission configuration stuff into a separate SystemConfig
class that can be used by others, and it now has a new tag to
specify package names that should be white-listed for power save
mode.  These are retrieved by the network policy manager and used
to build a whitelist of uids.

The new general config files can now go in system/etc/config,
though currently everything still remains in the permissions dir.

Still left to be done is changing the semantics of what uids are
allowed in this mode, to include all perceptable uids.  (So that we
can still do things like background music playback.)  This will be
done in a follow-on CL.

Change-Id: I9bb7029f61dae62e6236da5ca60765439f8d76d2
2014-07-01 09:22:57 -07:00
Ram
3e0e3bc617 MS: Adding Support for Emergency APN in Telephony Framework
(base/telephony)

Replacement for https://partner-android-review.googlesource.com/#/c/171175/

Change-Id: I16fc37f5c00ed79f2370bc46554fc7a24c52c4cb
Conflicts:
	core/java/android/net/ConnectivityManager.java
2014-07-01 02:00:51 +00:00
Jeff Davidson
b6646a8987 Allow network scorers to provide an opt-in activity.
A candidate scorer may have an activity registered to listen for the
ACTION_CUSTOM_ENABLE intent action. If so, when the user attempts to
select this scorer as the active one, this custom activity will be
launched and will be responsible for requesting that the framework
activate the scorer. This is to enable more complex opt-in flows prior
to becoming the active scorer.

Scorers which do not specify this activity will default to using the
framework switcher (currently ActiveNetworkScorerDialog, though this
may change).

Note that all switches must still go through the framework switcher;
the opt-in activity simply allows scorers to first show another screen
and perform the framework switch on their own terms.

Bug: 15775314
Change-Id: I3847e5d3161a8fcc9622abc03218795697c32778
2014-06-30 14:06:40 -07:00
Paul Jensen
d5d80801d2 Merge "Use return values from JNI functions binding sockets and processes to networks." 2014-06-24 08:05:46 +00:00
Paul Jensen
32a58f00d3 Use return values from JNI functions binding sockets and processes to networks.
bug:15757549
Change-Id: If23b14febc923b9a0348f0cf9029fd4bf6e8d725
2014-06-26 16:33:58 +00:00
Jeff Davidson
a3b9ca5ade Merge "Use/expose the receiver's label as the scorer name." 2014-06-26 08:19:24 +00:00
Jeff Davidson
c741553644 Use/expose the receiver's label as the scorer name.
Allows scorer apps to set a custom name for the scoring functionality,
even if the app has other non-scoring responsibilities, in which case
the application's label would be too generic.

Bug: 15775300
Change-Id: I61a7d1966742d463508e6801b7845ced8392db84
2014-06-24 09:24:19 -07:00
Lorenzo Colitti
309a75dbc3 Modify DNS server update methods.
1. Make addDnsServer not add duplicate servers and return a
   boolean value incating whether it changed anything. This is
   consistent with what we do for LinkAddresses and routes.
2. Add a setDnsServers method that sets all the DNS servers to
   the specified collection. This is consistent with what we do
   for LinkAddress.

Bug: 9180552
Change-Id: I5baed09253261b66ea42ae2ea82398118e3ab0ac
2014-06-26 17:04:38 +09:00
Lorenzo Colitti
76ea6c68d3 Teach LinkProperties whether it's provisioned or not.
In IPv4, a link is provisioned when DHCP succeeds. In IPv6, a
there is no such signal, because addresses and DNS servers can
be notified by the kernel at different times.

Add an isProvisioned method that returns true if we believe that
enough information has configured to use a network. For IPv6,
this requires an IP address, default route, and DNS server. For
IPv4, this requires only an IPv4 address, because we support
static configuration that doesn't have a default route or DNS
server.

To do this we use the existing hasIPv4Address method, rename the
all-but unused hasIPv6Address method to hasGlobalIPv6Address
(which is what we want anyway) and add new hasIPv[46]DefaultRoute
and hasIPv[46]DnsServer methods.

Bug: 9180552
Change-Id: Ib2f5ff8af920f7b6f1edf0e2afaaa0edce9bc72d
2014-06-26 03:23:31 +09:00
Lorenzo Colitti
64c43b1948 Minor changes to RouteInfo.
1. Realize that mDestination can never be null and update the
   code accordingly.
2. Simplify isDefaultRoute.
3. Provide two new hidden utility methods, isIPv4Default() and
   isIPv6Default(), that can be used by LinkProperties to
   to determine if the system has connectivity.
4. Update tests.

Bug: 9180552
Change-Id: I85028d50556c888261d250925962bdedfe08e0c6
2014-06-25 18:22:12 +00:00
Robert Greenwalt
2c7bf2cb46 Clean up and add some Network logging.
Dumps the netid for the Network and adds that to the NetworkAgentInfo.

Change-Id: Id9fbcc55ca55bf1a020f747f0c44902efb1b5f87
2014-06-23 17:40:12 -07:00
Robert Greenwalt
33b825cd1a Merge "Add logging to track down weird ConnectivityManager issue." 2014-06-23 21:44:43 +00:00
Robert Greenwalt
257ee5fa6f Add logging to track down weird ConnectivityManager issue.
bug:15771399
Change-Id: I0a7150286f94262414005298e6f038f278347a7c
2014-06-23 15:33:40 -07:00
Robert Greenwalt
19f01ebe90 Merge "Remove Obsolete enable/disableApn functions." 2014-06-17 21:43:29 +00:00
Robert Greenwalt
e356825e4a Remove Obsolete enable/disableApn functions.
ConnectivityService now uses NetworkAgents instead and apps should use
ConnectivityManager.

Change-Id: Ifc5c8f5be802183e70a5d92b224c819815de00e6
2014-06-17 14:10:39 -07:00
Alex Klyubin
fd445e0336 Merge "Add PSKKeyManager to enable the use of TLS-PSK." 2014-06-17 04:56:28 +00:00
Lorenzo Colitti
c18cbfdf8d Notify network observers of route changes.
Bug: 9180552
Change-Id: If8432bc74335676320b815784b21f404d3479c35
2014-06-17 11:18:54 +09:00
Lorenzo Colitti
c17a1b9ee4 Modify LinkProperties add/remove route functions.
This will allow us to dynamically track routes being added and
removed, similar to what we do for IP addresses.

1. Support removing routes. Since this is a new function, we
   don't need to jump through hoops to support callers passing
   in routes that have no interface, we just fail to match them.
2. Make the addRoute method return a boolean value indicating
   whether anything changed. This is consistent with what we do
   for addresses and is used to decide whether to update the
   rest of the system when an update comes in.

Bug: 9180552
Change-Id: I50648b5f81ec55c88501a7640e119cda2bb540f2
2014-06-17 11:18:53 +09:00
Lorenzo Colitti
8c6c2c3c92 IpPrefix improvements.
1. Allow IpPrefixes to be created from strings. In order to do
   this, factor out the code from LinkAddress which already does
   this to a small utility class in NetworkUtils.
2. Truncate prefixes on creation, fixing a TODO.
3. Add a toString method.
4. Write a unit test.

While I'm at it, make RouteInfoTest pass again, and convert it
to use IpPrefix instead of LinkAddress.

Change-Id: I5f68f8af8f4aedb25afaee00e05369f01e82a70b
2014-06-17 11:18:53 +09:00
Alex Klyubin
b0d1d91407 Add PSKKeyManager to enable the use of TLS-PSK.
TLS-PSK is supported by the underlying TLS/SSL stack (based on
Conscrypt). This CL simply exposes this support in the Android
framework.

TLS-PSK is a set of TLS/SSL cipher suites which rely on a symmetric
pre-shared key (PSK) to secure the TLS/SSL connection and mutually
authenticate its peers. These cipher suites may be a more natural fit
compared to conventional public key based cipher suites in some
scenarios where communication between peers is bootstrapped via a
separate step (for example, a pairing step) and requires both peers
to authenticate each other. In such scenarios a symmetric key (PSK)
can be exchanged during the bootstrapping step, removing the need to
generate and exchange public key pairs and X.509 certificates.

Bug: 15073623
Change-Id: Idf2a773db3021de3d2ad144c5cc63d2415eb8e91
2014-06-10 14:30:56 -07:00
Robert Greenwalt
65599da861 Merge "Fix build" 2014-06-12 05:34:42 +00:00