summaryrefslogtreecommitdiff
path: root/libcutils/qtaguid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcutils/qtaguid.cpp')
-rw-r--r--libcutils/qtaguid.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/libcutils/qtaguid.cpp b/libcutils/qtaguid.cpp
index a987b855d..2fe877c4e 100644
--- a/libcutils/qtaguid.cpp
+++ b/libcutils/qtaguid.cpp
@@ -34,6 +34,8 @@ class netdHandler {
public:
int (*netdTagSocket)(int, uint32_t, uid_t);
int (*netdUntagSocket)(int);
+ int (*netdSetCounterSet)(uint32_t, uid_t);
+ int (*netdDeleteTagData)(uint32_t, uid_t);
};
int stubTagSocket(int, uint32_t, uid_t) {
@@ -44,8 +46,16 @@ int stubUntagSocket(int) {
return -EREMOTEIO;
}
+int stubSetCounterSet(uint32_t, uid_t) {
+ return -EREMOTEIO;
+}
+
+int stubDeleteTagData(uint32_t, uid_t) {
+ return -EREMOTEIO;
+}
+
netdHandler initHandler(void) {
- netdHandler handler = {stubTagSocket, stubUntagSocket};
+ netdHandler handler = {stubTagSocket, stubUntagSocket, stubSetCounterSet, stubDeleteTagData};
void* netdClientHandle = dlopen("libnetd_client.so", RTLD_NOW);
if (!netdClientHandle) {
@@ -63,6 +73,15 @@ netdHandler initHandler(void) {
ALOGE("load netdUntagSocket handler failed: %s", dlerror());
}
+ handler.netdSetCounterSet = (int (*)(uint32_t, uid_t))dlsym(netdClientHandle, "setCounterSet");
+ if (!handler.netdSetCounterSet) {
+ ALOGE("load netdSetCounterSet handler failed: %s", dlerror());
+ }
+
+ handler.netdDeleteTagData = (int (*)(uint32_t, uid_t))dlsym(netdClientHandle, "deleteTagData");
+ if (!handler.netdDeleteTagData) {
+ ALOGE("load netdDeleteTagData handler failed: %s", dlerror());
+ }
return handler;
}
@@ -95,3 +114,13 @@ int qtaguid_untagSocket(int sockfd) {
ALOGV("Untagging socket %d", sockfd);
return getHandler().netdUntagSocket(sockfd);
}
+
+int qtaguid_setCounterSet(int counterSetNum, uid_t uid) {
+ ALOGV("Setting counters to set %d for uid %d", counterSetNum, uid);
+ return getHandler().netdSetCounterSet(counterSetNum, uid);
+}
+
+int qtaguid_deleteTagData(int tag, uid_t uid) {
+ ALOGV("Deleting tag data with tag %u for uid %d", tag, uid);
+ return getHandler().netdDeleteTagData(tag, uid);
+}