diff options
Diffstat (limited to 'libcutils/qtaguid.cpp')
-rw-r--r-- | libcutils/qtaguid.cpp | 31 |
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); +} |