diff options
Diffstat (limited to 'client/NetdClient.cpp')
-rw-r--r-- | client/NetdClient.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/client/NetdClient.cpp b/client/NetdClient.cpp index 3157d3a9..392b0af6 100644 --- a/client/NetdClient.cpp +++ b/client/NetdClient.cpp @@ -65,7 +65,7 @@ int netdClientAccept4(int sockfd, sockaddr* addr, socklen_t* addrlen, int flags) } if (FwmarkClient::shouldSetFwmark(family)) { FwmarkCommand command = {FwmarkCommand::ON_ACCEPT, 0, 0}; - if (int error = FwmarkClient().send(&command, sizeof(command), acceptedSocket)) { + if (int error = FwmarkClient().send(&command, acceptedSocket)) { return closeFdAndSetErrno(acceptedSocket, error); } } @@ -75,7 +75,7 @@ int netdClientAccept4(int sockfd, sockaddr* addr, socklen_t* addrlen, int flags) int netdClientConnect(int sockfd, const sockaddr* addr, socklen_t addrlen) { if (sockfd >= 0 && addr && FwmarkClient::shouldSetFwmark(addr->sa_family)) { FwmarkCommand command = {FwmarkCommand::ON_CONNECT, 0, 0}; - if (int error = FwmarkClient().send(&command, sizeof(command), sockfd)) { + if (int error = FwmarkClient().send(&command, sockfd)) { errno = -error; return -1; } @@ -185,7 +185,7 @@ extern "C" int setNetworkForSocket(unsigned netId, int socketFd) { return -EBADF; } FwmarkCommand command = {FwmarkCommand::SELECT_NETWORK, netId, 0}; - return FwmarkClient().send(&command, sizeof(command), socketFd); + return FwmarkClient().send(&command, socketFd); } extern "C" int setNetworkForProcess(unsigned netId) { @@ -201,7 +201,7 @@ extern "C" int protectFromVpn(int socketFd) { return -EBADF; } FwmarkCommand command = {FwmarkCommand::PROTECT_FROM_VPN, 0, 0}; - return FwmarkClient().send(&command, sizeof(command), socketFd); + return FwmarkClient().send(&command, socketFd); } extern "C" int setNetworkForUser(uid_t uid, int socketFd) { @@ -209,5 +209,10 @@ extern "C" int setNetworkForUser(uid_t uid, int socketFd) { return -EBADF; } FwmarkCommand command = {FwmarkCommand::SELECT_FOR_USER, 0, uid}; - return FwmarkClient().send(&command, sizeof(command), socketFd); + return FwmarkClient().send(&command, socketFd); +} + +extern "C" int queryUserAccess(uid_t uid, unsigned netId) { + FwmarkCommand command = {FwmarkCommand::QUERY_USER_ACCESS, netId, uid}; + return FwmarkClient().send(&command, -1); } |