149 Commits

Author SHA1 Message Date
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
Lorenzo Colitti
d2ef1e50c4 Stop clat if it's no longer in use.
Normally, clatd is stopped when a connection disconnects.
However, if the connection's LinkProperties change, or if the
disconnect somehow gets lost (e.g., because of bug 8486114),
then we need to stop it (and possibly restart it).

Bug: 8276725
Change-Id: Ib8ad0d653ed8d0cd70b7414bcaa8fdaef8ba5fcc
2013-03-28 14:45:36 +09:00
Lorenzo Colitti
13c9fdefde Framework changes for 464xlat.
1. Add a Nat464Xlat service that ConnectivityService can use
   to start and stop clat. When clat is started, the service
   waits for the clat interface to come up and then calls
   ConnectivityService to add the appropriate routes.
2. Make ConnectivityService start clat when an IPv6-only mobile
   interface is connected. We only support clat on mobile for
   now.
3. Make tethering use the interface that has the IPv4 default
   route insted of using the base interface of the
   LinkProperties. This allows us to tether to a stacked
   interface, which is needed for tethering with 464xlat.

Bug: 8276725
Change-Id: I24480af69ee280f504399062638af0836a56268e
2013-03-15 14:41:55 +09: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
Robert Greenwalt
3cab6b0f1d Properly cancel Tether notification.
When we add a second type of tethering we unify the notifications
into a single generic type.  This is done by canceling the first
and replacing it, but this flow was improperly canceling, so
you could end up with orphaned tethering icons.

bug:7283605
Change-Id: I1d136f51592b4326d48578cf67b69122e45d4984
2012-10-04 16:44:26 -07:00
Jeff Brown
bf6f6f9de7 Update references to migrated global settings.
Fixed one setting that was migrated but not marked deprecated.

Removed a hidden setting that is no longer used by the new
power manager service.

Bug: 7231172
Change-Id: I332f020f876a18d519a1a20598a172f1c98036f7
2012-09-25 15:27:51 -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
Dianne Hackborn
5ac72a2959 Improve multi-user broadcasts.
You can now use ALL and CURRENT when sending broadcasts, to specify
where the broadcast goes.

Sticky broadcasts are now correctly separated per user, and registered
receivers are filtered based on the requested target user.

New Context APIs for more kinds of sending broadcasts as users.

Updating a bunch of system code that sends broadcasts to explicitly
specify which user the broadcast goes to.

Made a single version of the code for interpreting the requested
target user ID that all entries to activity manager (start activity,
send broadcast, start service) use.

Change-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c
2012-08-30 14:33:22 -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
Wink Saville
5362f17ff5 Merge commit '1b003ef0' into mit
* commit '1b003ef0':
  Create telephony-common and mms-common

Change-Id: Ie8876541dbe7f4c933cf7d69910dd204538bc975
2012-07-11 18:15:50 -07:00
Wink Saville
a639b311e9 Create telephony-common and mms-common
These have been created to reduce the size and complexity
of frameworks/base.

mms-common was created by moving all of
  frameworks/base/core/java/com/google/android/mms
to:
   frameworks/opt/mms

telephony-common was created by moving some of
   frameworks/base/telephony
to:
   frameworks/opt/telephony

Change-Id: If6cb3c6ff952767fc10210f923dc0e4b343cd4ad
2012-07-11 16:02:08 -07:00
Robert Greenwalt
adfb0d0cf1 Make tethering ignore bad inputs
Tethering was re-evaluating everything on any connectivity change.
This was causing problems when mobile data was not available as each
re-eval was again requesting a connection which would fail and loop.
Ignore FAILED states to break this cycle in a minimal change.

bug:6668233
Change-Id: Ia1dfc6abff1fe464e9501b50185cdb8d0fbb7ff6
2012-06-14 16:03:44 -07:00
Chia-chi Yeh
7c727e50f1 am a2becffc: am d667aebf: Merge "VPN: move VpnDialogs away from system uid." into jb-dev
* commit 'a2becffcf2a19889b90256a8479e276081ce6108':
  VPN: move VpnDialogs away from system uid.
2012-06-12 12:59:59 -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
Robert Greenwalt
68ea9b08ef Add logging for Tethering.
Hard to repro bug doesn't have enough info in the logs to understand.

bug:6469121
Change-Id: I31734f4e891e9b23197f2d5adb931e3891393cdd
2012-05-11 13:57:32 -07:00
Robert Greenwalt
c9dac1185d Don't forget to turn off mobile_dun
When we find a higher priority match for tethering traffic we should turn off
whatever we were trying before.

bug:6083611
Change-Id: I06ee41336df107353bf1a979150345e461574a48
2012-02-29 14:02:55 -08: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
Robert Greenwalt
32350c7ab2 Merge "Filter our v6 address from tethering dns." 2012-01-05 11:39:26 -08:00
Chia-chi Yeh
c1bac3a6e2 VPN: fix a CloseGuard warning.
Change-Id: Ic237a33038be9a170c1f9128332a8743c57971ed
2011-12-27 13:14:51 -08:00
Robert Greenwalt
4f74d552d5 Filter our v6 address from tethering dns.
Don't support IPv6 yet, and the tools crash when they see one, so
filter them out.

bug:5763980
Change-Id: Ie9a4445a3c72df3f7ab4320c507ebc8e8cd440ff
2011-12-20 14:47:22 -08:00
Robert Greenwalt
cc579b89fc Merge "Use the carrier-given dns addrs for tethering." 2011-12-12 14:02:02 -08:00
Chia-chi Yeh
2339fe3f8f am fa71962f: am 46a4e81d: Merge "VPN: delete the "abort" file before starting VPN daemons." into ics-mr1
* commit 'fa71962fe4595f484071ac0deb23f68d44932d83':
  VPN: delete the "abort" file before starting VPN daemons.
2011-12-12 13:15:34 -08:00
Robert Greenwalt
bb4fd0b444 Use the carrier-given dns addrs for tethering.
This fixes a complaint from carriers (that we used 8.8.8.8), but also
fixes the case where there is only room for one live radio
connection: the secondary connection (tethering) doesn't have a
default route to prevent on-device traffic from slipping out on the
tethering connection, but tethered dns is proxied through dnsmasq, so
it is appearing as on-device traffic and is unroutable.  By switching
to the carrier-indicated dns servers we can use the host-routes
already set for those and kill two bugs with one fix.

bug:5525764
bug:3045311
Change-Id: Ib1ccea81e0c0ed2d1462dc9721c2647124a790da
2011-12-09 17:12:03 -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
Jeff Sharkey
ddba10622d Clean up InterfaceConfiguration flags.
Offer modifier methods for interface flags instead of mutating
directly, and remove square brackets.

Change-Id: I4cce719dccedfb3f0e8448c111e65b93c0008cbb
2011-11-29 18:37:04 -08:00
Robert Greenwalt
fd1be2bc1e Tone down Tethering logs.
bug:5601582
Change-Id: I66c0a5a06a2c13a7cf93ea264d156b37df23745f
2011-11-11 14:09:45 -08:00
Robert Greenwalt
b445362bd6 Make upstream tether list threadsafe
Outsiders asking for this list may cause the list to change on another thread.
Fixing general synchronization issues.

bug:5531630
Change-Id: I7a3ee0bba3db40f45bcb0159491942fa4cf38c37
2011-11-07 14:44:48 -08:00
Robert Greenwalt
3b28e9a3da Start using IP tool for advanced routing.
bug:5495862
bug:5396842
Change-Id: I5e31b352b14a4dc746cacce4d61cf8d9ad7382a0
2011-11-04 09:52:04 -07:00
Robert Greenwalt
731026c2df Ignore errors when untethering
Sometimes the interface is removed before we can untether leading to
errors when cleanup up various rules (iptables).  Do as much as we can
and then let a re-tether result in error if needed.

bug:5536516
Change-Id: Ib1d064ecc8e9022566f9b0e4678b33144906971c
2011-11-02 13:53:28 -07:00
Robert Greenwalt
49348e77b6 Fix Tethering settings.
Two issues.  A mcc/mnc-driven overlay means that the config at boot may not be
the config we wish to use - the sim card is read later which may switch the
config.  Changed to read the configuration each time rather than once at boot.
Second, the secure-setting override was always trumping the resource config
as we weren't discriminating between a not-set default and a real setting.
This meant the config could never make DUN-required.

bug:5495862
Change-Id: Icd4e90ac1d32bbb704c0ff9cc69e954fb0a0b58c
2011-10-21 17:01:39 -07:00
Jeff Sharkey
367d15ab1a Watch network subtype, tethering teardown, empty.
Watch for changes to telephony network subtype, and update iface
mapping to persist stats under correct type.  Update network stats
before removing tethering NAT rules.

Skip recording that would create empty historical buckets.  Query UID
stats before iface stats to always skew positive when counters are
actively rolling forward.

Bug: 5360042, 5359860, 5335674, 5334448
Change-Id: I8aa37b568e8ffb70647218aa1aff5195d3e44d5a
2011-09-22 16:19:06 -07:00
Wink Saville
c9acde9aa6 Reduce connectivity logging
Change-Id: I5d45b8fbcd01e42df7f2b1cf02fb5b226128abb8
2011-09-21 11:05:43 -07:00
Jeff Sharkey
cdd02c5d76 Collect and persist tethering stats.
Use new "gettetherstats" netd command to retrieve statistics for
active tethering connections.  Keep tethering poll events separate
from UID poll, even though they end up same historical structures.

Bug: 5244846
Change-Id: Ia0c5165f6712c12b51586f86c331a2aad4ad6afb
2011-09-16 16:05:51 -07: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
Robert Greenwalt
98c79e53c0 Stop sending tethering broadcasts during boot.
Well, actually they do go out, but they won't try to start anybody now
until after boot.

bug:5088272
Change-Id: Iaaf7a1e4b300e0afc3901ecfd225a77084bd0954
2011-07-28 11:51:11 -07:00
Mike Lockwood
485861c409 Fix USB tethering again
The kernel sends an interface down event for usb0 when RNDIS is enabled.
Ignore this and only remove USB interfaces when we receive the
interface removed event.

Change-Id: I1458f259b96c9fab4d3a69a5692e630123fad136
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-07-27 13:54:29 -04:00
Irfan Sheriff
e30c1307fb Merge "Handle hostapd and tether interface changes" 2011-07-23 22:30:36 -07:00