1efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran/*
2efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * Copyright (C) 2014 The Android Open Source Project
3efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran *
4efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * Licensed under the Apache License, Version 2.0 (the "License");
5efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * you may not use this file except in compliance with the License.
6efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * You may obtain a copy of the License at
7efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran *
8efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran *      http://www.apache.org/licenses/LICENSE-2.0
9efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran *
10efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * Unless required by applicable law or agreed to in writing, software
11efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * distributed under the License is distributed on an "AS IS" BASIS,
12efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * See the License for the specific language governing permissions and
14efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran * limitations under the License.
15efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran */
16efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
17efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran#ifndef NETD_INCLUDE_NETD_CLIENT_H
18efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran#define NETD_INCLUDE_NETD_CLIENT_H
19efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
20efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran#include <stdbool.h>
21efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran#include <sys/cdefs.h>
22a69d9472ac48d4e09f049fb740e60b7217e03861Sreeram Ramachandran#include <sys/types.h>
23efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
24efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran__BEGIN_DECLS
25efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
263a069e6a76752a0ee73c60f276ae362d1c01467fSreeram Ramachandran// All functions below that return an int return 0 on success or a negative errno value on failure.
2731f4210e6fc5c9b749468a2af0bac94992352010Sreeram Ramachandran
284d4c8b7e294d845103ecb10f968713717a3e6406Sreeram Ramachandranint getNetworkForSocket(unsigned* netId, int socketFd);
2931f4210e6fc5c9b749468a2af0bac94992352010Sreeram Ramachandranint setNetworkForSocket(unsigned netId, int socketFd);
30efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
31efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandranunsigned getNetworkForProcess(void);
3231f4210e6fc5c9b749468a2af0bac94992352010Sreeram Ramachandranint setNetworkForProcess(unsigned netId);
33efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
3431f4210e6fc5c9b749468a2af0bac94992352010Sreeram Ramachandranint setNetworkForResolv(unsigned netId);
35efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
3631f4210e6fc5c9b749468a2af0bac94992352010Sreeram Ramachandranint protectFromVpn(int socketFd);
37d794e580dbe1a8b4192850b0e117654401514af8Sreeram Ramachandran
38a69d9472ac48d4e09f049fb740e60b7217e03861Sreeram Ramachandranint setNetworkForUser(uid_t uid, int socketFd);
39a69d9472ac48d4e09f049fb740e60b7217e03861Sreeram Ramachandran
40d1df597001aadd5d83c9a3d1fe8bbde2bc9256caPaul Jensenint queryUserAccess(uid_t uid, unsigned netId);
41d1df597001aadd5d83c9a3d1fe8bbde2bc9256caPaul Jensen
42efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran__END_DECLS
43efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran
44efbe05d203f2f1cc3c24ddc111be159a1ff1f292Sreeram Ramachandran#endif  // NETD_INCLUDE_NETD_CLIENT_H
45