blob: 9e722f431689f4d2ef38a3e2ec70cccdb54549c3 [file] [log] [blame]
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef NETD_INCLUDE_NETD_CLIENT_H
18#define NETD_INCLUDE_NETD_CLIENT_H
19
20#include <stdbool.h>
21#include <sys/cdefs.h>
Sreeram Ramachandrana69d9472014-07-11 16:27:02 -070022#include <sys/types.h>
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -070023
24__BEGIN_DECLS
25
Sreeram Ramachandran3a069e62014-06-22 11:02:57 -070026// All functions below that return an int return 0 on success or a negative errno value on failure.
Sreeram Ramachandran31f42102014-06-20 11:51:48 -070027
Sreeram Ramachandran4d4c8b72014-06-20 11:59:40 -070028int getNetworkForSocket(unsigned* netId, int socketFd);
Sreeram Ramachandran31f42102014-06-20 11:51:48 -070029int setNetworkForSocket(unsigned netId, int socketFd);
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -070030
31unsigned getNetworkForProcess(void);
Luke Huang185098d2019-05-20 16:17:12 +080032
Sreeram Ramachandran31f42102014-06-20 11:51:48 -070033int setNetworkForProcess(unsigned netId);
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -070034
Sreeram Ramachandran31f42102014-06-20 11:51:48 -070035int setNetworkForResolv(unsigned netId);
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -070036
Sreeram Ramachandran31f42102014-06-20 11:51:48 -070037int protectFromVpn(int socketFd);
Sreeram Ramachandrand794e582014-06-19 10:03:07 -070038
Sreeram Ramachandrana69d9472014-07-11 16:27:02 -070039int setNetworkForUser(uid_t uid, int socketFd);
40
Paul Jensend1df5972015-05-06 07:29:56 -040041int queryUserAccess(uid_t uid, unsigned netId);
42
Luke Huangc94b9c22020-06-16 19:14:05 +080043void setAllowNetworkingForProcess(bool allowNetworking);
44
Chenbo Feng9944ba82017-10-10 17:33:20 -070045int tagSocket(int socketFd, uint32_t tag, uid_t uid);
46
47int untagSocket(int socketFd);
48
Luke Huang952d0942018-12-26 16:53:03 +080049int resNetworkQuery(unsigned netId, const char* dname, int ns_class, int ns_type, uint32_t flags);
Luke Huangc68f1b92018-11-21 20:13:38 +080050
Luke Huange48fbcb2018-12-17 16:37:33 +080051int resNetworkResult(int query_fd, int* rcode, uint8_t* answer, size_t anslen);
Luke Huangc68f1b92018-11-21 20:13:38 +080052
Luke Huang110c54e2018-12-20 14:39:58 +080053int resNetworkSend(unsigned netId, const uint8_t* msg, size_t msglen, uint32_t flags);
Luke Huangc68f1b92018-11-21 20:13:38 +080054
55void resNetworkCancel(int nsend_fd);
Luke Huang185098d2019-05-20 16:17:12 +080056
Luke Huang63df9482019-05-25 18:24:03 +080057int getNetworkForDns(unsigned* dnsNetId);
Sreeram Ramachandranefbe05d2014-05-21 11:41:39 -070058__END_DECLS
59
60#endif // NETD_INCLUDE_NETD_CLIENT_H