Add a client API to protect a socket from VPNs.
The server side hasn't been implemented yet (see FwmarkServer.cpp).
A UID can only be in a single VPN at any time, so there's no need
to specify a netId or vpnId.
Change-Id: Ie9c4590a9900e1ebf28418c4b9c4760cc0a5501a
diff --git a/client/NetdClient.cpp b/client/NetdClient.cpp
index 25e809c..ba6dadd 100644
--- a/client/NetdClient.cpp
+++ b/client/NetdClient.cpp
@@ -180,3 +180,12 @@
extern "C" bool setNetworkForResolv(unsigned netId) {
return setNetworkForTarget(netId, &netIdForResolv);
}
+
+extern "C" bool protectFromVpn(int socketFd) {
+ if (socketFd < 0) {
+ errno = EBADF;
+ return false;
+ }
+ FwmarkCommand command = {FwmarkCommand::PROTECT_FROM_VPN, 0};
+ return FwmarkClient().send(&command, sizeof(command), socketFd);
+}