Prohibit address families by default unless a VPN explicitly allows them.

Bug: 15972465
Change-Id: I3278d94536fefacc86390c1ba4231680f7be8589
This commit is contained in:
Sreeram Ramachandran 2014-07-27 00:37:35 -07:00
commit 0bb9c07eba

View file

@ -106,6 +106,20 @@ public abstract class NetworkAgent extends Handler {
*/
public static final int EVENT_UID_RANGES_REMOVED = BASE + 6;
/**
* Sent by the NetworkAgent to ConnectivityService to block all routes for a certain address
* family (AF_INET or AF_INET6) on this Network. For VPNs only.
* obj = Integer representing the family (AF_INET or AF_INET6)
*/
public static final int EVENT_BLOCK_ADDRESS_FAMILY = BASE + 7;
/**
* Sent by the NetworkAgent to ConnectivityService to unblock routes for a certain address
* family (AF_INET or AF_INET6) on this Network. For VPNs only.
* obj = Integer representing the family (AF_INET or AF_INET6)
*/
public static final int EVENT_UNBLOCK_ADDRESS_FAMILY = BASE + 8;
public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score) {
this(looper, context, logTag, ni, nc, lp, score, null);
@ -228,6 +242,21 @@ public abstract class NetworkAgent extends Handler {
queueOrSendMessage(EVENT_UID_RANGES_REMOVED, ranges);
}
/**
* Called by the VPN code when it wants to block an address family from being routed, typically
* because the VPN network doesn't support that family.
*/
public void blockAddressFamily(int family) {
queueOrSendMessage(EVENT_BLOCK_ADDRESS_FAMILY, family);
}
/**
* Called by the VPN code when it wants to unblock an address family from being routed.
*/
public void unblockAddressFamily(int family) {
queueOrSendMessage(EVENT_UNBLOCK_ADDRESS_FAMILY, family);
}
/**
* Called when ConnectivityService has indicated they no longer want this network.
* The parent factory should (previously) have received indication of the change