summaryrefslogtreecommitdiff
path: root/server/NetworkController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/NetworkController.cpp')
-rw-r--r--server/NetworkController.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index 0d716adf..082eaf84 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -801,30 +801,36 @@ void NetworkController::dump(DumpWriter& dw) {
void NetworkController::clearAllowedUidsForAllNetworksLocked() {
for (const auto& [_, network] : mNetworks) {
- if (!network->isPhysical()) continue;
-
network->clearAllowedUids();
}
}
int NetworkController::setNetworkAllowlist(
- const std::vector<netd::aidl::NativeUidRangeConfig>& settings) {
+ const std::vector<netd::aidl::NativeUidRangeConfig>& rangeConfigs) {
const ScopedWLock lock(mRWLock);
- clearAllowedUidsForAllNetworksLocked();
- for (const auto& setting : settings) {
- Network* network = getNetworkLocked(setting.netId);
+ for (const auto& config : rangeConfigs) {
+ Network* network = getNetworkLocked(config.netId);
if (!network) return -ENONET;
- if (!network->isPhysical()) return -EINVAL;
}
- for (const auto& setting : settings) {
- Network* network = getNetworkLocked(setting.netId);
- network->setAllowedUids(UidRanges(setting.uidRanges));
+ clearAllowedUidsForAllNetworksLocked();
+ for (const auto& config : rangeConfigs) {
+ Network* network = getNetworkLocked(config.netId);
+ network->setAllowedUids(UidRanges(config.uidRanges));
}
return 0;
}
+bool NetworkController::isUidAllowed(unsigned netId, uid_t uid) const {
+ const ScopedRLock lock(mRWLock);
+ Network* network = getNetworkLocked(netId);
+ if (network && network->isUidAllowed(uid)) {
+ return true;
+ }
+ return false;
+}
+
bool NetworkController::isValidNetworkLocked(unsigned netId) const {
return getNetworkLocked(netId);
}