Commit Graph

55 Commits

Author SHA1 Message Date
Chad Brubaker
bf6ff2c025 Support multiple Vpn ManageDialogs
Move away from storing the configs in the Intent to prevent issues with
PendingIntents and multiple configs.

The Dialog now queries ConnectivityService for the configuration to
display in the management dialog.

Change-Id: I0e0ef52db840152914d117a24f776d8106e836ff
2013-07-16 18:59:12 -07:00
Chad Brubaker
c2865195b6 Restricted profiles use Owner's VPN
Restricted profiles cannot start their own VPN and will use the Owner's
VPN if one is running.

Change-Id: I1fc153742047f9149acb414c4c9d35305e97d8d0
2013-07-15 12:13:47 -07:00
Chad Brubaker
4ca19e8377 Add per user VPN support
VPNs are now per user instead of global. A VPN set by user A routes only
user A's traffic and no other user can access it.

Change-Id: Ia66463637b6bd088b05768076a1db897fe95c46c
2013-07-12 20:51:03 -07:00
Lorenzo Colitti
41fb98c868 Make legacy VPN work over stacked interfaces.
On stacked interfaces like 464xlat, Legacy VPN can't find the
default gateway because it uses getRoutes, which only returns
routes for the base link and not for the stacked links. It also
assumes that the interface that the default route points to is
the interface for the base link (e.g., rmnet0) instead of the
interface the route actually points to (e.g., clat4).

Fix this by calling getAllRoutes to find the default IPv4 route,
and get the interface name from the route we find instead of
assuming it's the base interface.

Bug: 9597516
Change-Id: Ia6ce0b6258a421cd22f60dedca7e94176b32176b
2013-07-11 18:15:48 +09:00
Elliott Hughes
a920f25fe5 resolved conflicts for merge of fca0f92e to stage-aosp-master
Change-Id: I4791f0ffa324a313b8390fbde6d8f82f716ecf74
2013-06-28 16:41:19 -07:00
Elliott Hughes
d396a448b2 Switch frameworks/base over from @hidden Charsets to public StandardCharsets.
Bug: 3484927
Change-Id: I5d136d2ee629588538602766a182ae14ce5fc63c
2013-06-28 16:24:48 -07:00
Jeff Sharkey
57666934b4 Lockdown VPN handles its own connection teardown.
Recent changes started watching for CONNECTIVITY_ACTION broadcasts
to handle the case where a network is disconnected without the
interface going down.

However, when lockdown VPN is enabled, the broadcast contents are
augmented, and all connections appear disconnected until the VPN
comes online.  This caused a reset feedback loop to occur.

Since LockdownVpnTracker already handles networks being disconnected
separately from interfaces going down, this change disables handling
the broadcast when lockdown is enabled.

Bug: 8755148
Change-Id: I70a348aa97a4b22eaaf23aa5ed344de3e9a9ab0b
2013-05-01 09:40:50 -07:00
Robert Greenwalt
1b0ca9dace Listen for network disconnect.
VPN used to just watch the interface, but that is insufficient.  There
is no promise that the interface will go down when we're done with it.
Now that wifi stays on in scan-only mode despite user turning it off
it seems that the interface is left up, even in AP mode.

Now listening for ConnectivityService broadcast that the network we were on
has disconnected and tearing down the VPN then or when the interface
goes away.

bug:8550083
Change-Id: Icf414497bc55bead69de04e91f39f90ac2e6578a
2013-04-22 14:13:51 -07:00
Robert Greenwalt
5a6bdc46e2 Improve ConnectivityManager docs
Also fix some permission problems.
bug:5738328

Change-Id: Ib32c223f425b1fc03b8cce528456bcb50b540fdf
2013-02-22 10:39:20 -08:00
Kenny Root
b9594ce9eb KeyStore: stop using state()
Change-Id: I721974fd95f8d1ab06a3fd1bbb4c9b4d9d1d7752
2013-02-14 12:06:51 -08:00
Robert Greenwalt
53c04bdd35 Monitor the right interface re VPN
Must remember the outer interface - undoes a change from a
couple months ago that broke things.

bug:7336302
Change-Id: Ia4f60862c60f3078853e151980e09cbf22a57222
2012-10-12 17:02:45 -07:00
Dianne Hackborn
50cdf7c306 Fix issue #7214090: Need to be able to post notifications to all users
Also fix a bunch of system services that should be doing this.  And
while doing that, found I needed to fix PendingIntent to evaluate
USER_CURRENT at the point of sending, not creation.

Note that this may end up with us having some notification shown to
non-primary users that lead to settings UI that should only be for
the primary user (such as the vpn notification).  I'm not sure what
to do about this, maybe we need a different UI to come up there or
something, but showing the actual notification for those users at
least seems less broken than not telling them at all.

Change-Id: Iffc51e2d7c847e3d05064d292ab93937646a1ab7
2012-09-24 10:55:46 -07:00
Jeff Sharkey
69ddab4575 Always-on VPN.
Adds support for always-on VPN profiles, also called "lockdown." When
enabled, LockdownVpnTracker manages the netd firewall to prevent
unencrypted traffic from leaving the device. It creates narrow rules
to only allow traffic to the selected VPN server. When an egress
network becomes available, LockdownVpnTracker will try bringing up
the VPN connection, and will reconnect if disconnected.

ConnectivityService augments any NetworkInfo based on the lockdown
VPN status to help apps wait until the VPN is connected.

This feature requires that VPN profiles use an IP address for both
VPN server and DNS. It also blocks non-default APN access when
enabled. Waits for USER_PRESENT after boot to check KeyStore status.

Bug: 5756357
Change-Id: If615f206b1634000d78a8350a17e88bfcac8e0d0
2012-08-27 12:35:05 -07:00
Jeff Sharkey
82f8521d38 Migrate legacy VPN arguments to system_server.
Generate the racoon and mtpd daemon arguments in system_server,
instead of accepting them from Settings.

Bug: 5756357
Change-Id: I42c1a644f6add477fe4222342640d7db15982cb8
2012-08-24 11:29:58 -07:00
Jeff Sharkey
899223b97c Begin moving VPN to NetworkStateTracker pattern.
Created base tracker that handles common bookkeeping, and move VPN
to become a tracker.  VPN status is now reflected in NetworkInfo, and
is mapped to LegacyVpnInfo.

Legacy VPN now "babysits" any init services it starts, watching for
when they stop unexpectedly.

Bug: 5756357
Change-Id: Iba7ec79da69469f6bd9a970cc39cf6b885b4c9c4
2012-08-23 16:41:06 -07:00
Jeff Sharkey
088f29f55e Cleaner controls between Vpn and init services.
Change-Id: I35edf054f4a1190f7fb7b4c48ee832e899c9528b
2012-08-06 14:48:49 -07:00
Jeff Sharkey
065b299df4 Make LocalSocket Closeable.
Enables usage of IoUtils.closeQuietly().

Change-Id: I91126297c1f235ae9da09f82d8f4f22db46558eb
2012-08-05 14:21:07 -07:00
Haoyu Bai
db3c8678e5 Network data activity change intent for network interfaces.
The activity notification is received from netd, an intent
DATA_ACTIVITY_CHANGE is then raised for other part of the system to
consume.

Change-Id: Idfcc4763c51c5b314c57f546c12557082f06bebf
2012-07-17 17:13:03 -07:00
Chia-chi Yeh
dadc857d9d VPN: move VpnDialogs away from system uid.
Bug: 6632536
Change-Id: Iece647c077caf5298ccfe7d7aba5f0911a4ed0d1
2012-06-08 13:05:58 -07:00
Chia-chi Yeh
5d134343ca am 1e9e7f76: am ff321d49: Merge "VPN: silence VPN notifications." into ics-mr1
* commit '1e9e7f76d5e6187befaf96eece258c27fd08bdc5':
  VPN: silence VPN notifications.
2012-01-12 14:30:44 -08:00
Chia-chi Yeh
50fe709995 VPN: silence VPN notifications.
Bug: 5852859
Change-Id: I269d8de298a1fd69a8d777150ae97927537a5424
2012-01-11 14:26:24 -08:00
Chia-chi Yeh
c1bac3a6e2 VPN: fix a CloseGuard warning.
Change-Id: Ic237a33038be9a170c1f9128332a8743c57971ed
2011-12-27 13:14:51 -08:00
Chia-chi Yeh
c187273292 VPN: delete the "abort" file before starting VPN daemons.
Bug: 5714296
Change-Id: Idba41b9f3907747a84387ea4f3e930b3a185a06e
2011-12-08 16:51:41 -08:00
Chia-chi Yeh
5317f034ba VPN: stop daemons by closing the control sockets.
As init now uses SIGKILL to stop daemons, performing graceful shutdown
becomes impossible. Here we implement our own solution by asking daemons
to monitor the control socket and terminate when it is closed.

Change-Id: I07a28807173a81b7f95e70f4193e974317acf88a
2011-08-22 13:09:49 -07:00
Chia-chi Yeh
0c074e6843 VPN: reset legacy VPN when resetting IPv4 addresses.
Currently legacy VPN only works on IPv4, and it should always
turn down when the addresses are changed. It assumed that the
interface will be brought down and up, so the event can be
detected via interfaceStatusChanged(). However, the assumption
was incorrect and the event is actually driver-dependent. To
fix this issue, ConnectivityService now tells VPN that the
interface is down when resetting IPv4 addresses.

Change-Id: I76d15e56552d86635c5b274ca980be5da905a6fb
2011-08-16 10:08:33 -07:00
Chia-chi Yeh
199ed6ef89 VPN: introduce VpnService as the base class for user space VPN.
Change-Id: I4793a6eb51b33f669fc6d39e1a16cf5eb9e3d851
2011-08-08 11:15:41 -07:00
Chia-chi Yeh
fcc1b41b66 VPN: move away from the VPN permission.
VpnBuilder will be replaced by VpnService in the next change.

Change-Id: I2dea67a1616b74d17b372f7b214d207f1617198e
2011-08-03 15:52:12 -07:00
Dianne Hackborn
6311d0a079 Clear the bitmap from the canvas in a lot of places.
Change-Id: I6b2071ac7b348c473b9bdd1b972d095aebbb4fb3
2011-08-02 16:37:58 -07:00
Chia-chi Yeh
7ef8611b5f VPN: increase timeout period to 60 seconds for legacy VPN.
Some VPN needs more time than others in order to create the secure tunnel.
For example, L2TP/IPSec PSK on average needs 15 seconds on WiFi. On mobile
connection, variation gets larger, and it sometimes needs more than 30
seconds. This change increases timeout period from 30 to 60 seconds.

Change-Id: I6006fd254a7bc91c22f63d2f3f20ea79ee9b05e2
2011-07-22 15:46:52 -07:00
JP Abgrall
b6055fe747 Merge "NetworkManagementService: receive bandwidth controller events" 2011-07-21 18:44:52 -07:00
Chia-chi Yeh
aa1727fe0c VPN: tear down VPN when the dependent interface is down.
Change-Id: I1eaf8e39ee7aed1f4ecbd4c36c2a81a68ad2f9d1
2011-07-14 19:01:40 -07:00
JP Abgrall
12b933d0d9 NetworkManagementService: receive bandwidth controller events
This is a 1st pass at receiving events that indicate
some quota has been reached e.g. warning quota, data collection quota,
 cutoff quota,...

It needs:
  - new kernel with quota2 logging support
  - new net:bandwidthcontroller that supports
    . quota2,
    . setting alerts.
  - new NetlinkEvent/NetlinkManager/NetlinkHandler to process
     NETLINK NFLOG messages.

Change-Id: Ibfbb13512c5350cdee0e544ec14caa6f59812409
2011-07-14 18:09:22 -07:00
Chia-chi Yeh
5779c9c2d9 VPN: close the socket in protectVpn() to avoid leaking descriptors.
Change-Id: Idda0c2ea1770abc490566e894711bcb08f60b354
2011-07-14 16:19:19 -07:00
Chia-chi Yeh
97a61565ea VPN: Hook up the new control protocol and network state.
1. No more End-Of-Arguments.
2. Daemons close the control socket after they are initialized.
3. No more system properties.
4. ip-up-vpn now creates state to pass the configuration.
5. JNI methods are split again for legacy VPN.

Change-Id: I02fafdf01d425c965345ef712b2bd5fdee3a0cab
2011-07-14 15:07:42 -07:00
Chia-chi Yeh
2e46764a70 VPN: implement status report for legacy VPN.
Change-Id: I81c28dafd9588572df76cbc303b0d6a0f41f9bc6
2011-07-04 03:23:12 -07:00
Chia-chi Yeh
c2b8aa0b4c VPN: rename some variables.
Change-Id: I7f15b5ab30f591e26242fca27af25f578809534c
2011-07-03 18:00:47 -07:00
Chia-chi Yeh
100155a310 VPN: convert prepare() into a form which helps solve race conditions.
When someone tries to revoke packageA, it is possible that packageA is
already revoked by packageB. In this case packageB should not be revoked,
and the new prepare() can help solve this problem.

Change-Id: Iee056a191dd99467b8ad1b5379a17b02d404bad1
2011-07-03 17:03:27 -07:00
Chia-chi Yeh
34e7813e96 VPN: minor refinement.
Change-Id: I2b59cbe8554b6c6f8da48c465252489394f32653
2011-07-03 03:07:07 -07:00
Chia-chi Yeh
3281034c1c VPN: merge JNI methods.
Legacy VPN needs to change routes by itself.

Change-Id: I4cf6639f2b00225810f49704ae05797fc70921d9
2011-07-02 16:16:03 -07:00
Chia-chi Yeh
e9107901ae VPN: give legacy VPN a fake package name.
And add more comments.

Change-Id: I0cbc495fcb2c8dd105e16a841619b3b9bd227eae
2011-07-02 01:48:50 -07:00
Chia-chi Yeh
41d1685a22 VPN: integrate legacy VPN.
Change-Id: I00e77664354c05e0edfcd5fb2e3da2ca434ed521
2011-07-01 02:12:06 -07:00
Chia-chi Yeh
8909b10175 VPN: Use List<String> instead for dnsServers and searchDomains.
Change-Id: I5d72c182ad47f59121a04b68ec6c2d164e2d00a8
2011-07-01 01:14:19 -07:00
Chia-chi Yeh
1f7746b39b VPN: rename service(s) to daemon(s) to reduce confusion.
Change-Id: I9739e63c8e41e8b63d024dc4f17283c76bb4ff97
2011-07-01 00:29:06 -07:00
Chia-chi Yeh
383e052472 VPN: fix the build.
Change-Id: Ibeaa067cf95636e09746d16f402c78c99d7cb681
2011-07-01 00:13:25 -07:00
Chia-chi Yeh
a4b87b5e98 VPN: refactor a little bit for the upcoming integration of legacy VPN.
Change-Id: I0fe0dffe59d8d9c9a0fdd05e07b07aa6c8da0a80
2011-06-30 23:21:55 -07:00
Chia-chi Yeh
f4e3bf892e VPN: refactor few JNI methods for the usage of legacy VPN.
Now default routes are handled in JNI instead of VpnBuilder.

Change-Id: Ib026bba6793b64aae0f8356df3d2aaae489d08b4
2011-06-30 12:41:11 -07:00
Chia-chi Yeh
85a7ce02c8 VPN: add a method to handle requests of legacy VPNs.
The code is working but not complete yet.

Change-Id: Id8c8f137665373ad52c626b9d34e5a2cad028597
2011-06-29 16:05:58 -07:00
Mike J. Chen
f59c7d0f2a Hookup interface status to other clients
After unreverting the linkstate change patch, hook up notification handlers
that didn't exist when the first patch was created, like
EthernetDataTracker.java and Vpn.java.

For the observers that handle interfaceStatusChanged(), I made
interfaceLinkStatusChanged() call it so they both do the same thing.

Change-Id: I0077e5e5f48f3932ba98f5bf363243892f2de6cc
Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-24 15:02:30 -07:00
Chia-chi Yeh
3f3337a662 VPN: avoid leaking file descriptors.
Change-Id: If70f5af3529d79bddb9d72675cf6eb038ff3ff70
2011-06-17 16:34:32 -07:00
Chia-chi Yeh
7b0b834c3d VPN: move VpnDialogs related methods into VpnConfig.
This might not be the best place for the glue code, but it is
known that choosing VpnBuilder will introduce a dependency
cycle of VpnBuilder, ConnectivityService, and the Vpn class.

Change-Id: I3f03617d1fe1a0b8fb3705c23265676fff51a75c
2011-06-17 14:34:11 -07:00