diff options
Diffstat (limited to 'server/NetworkController.cpp')
-rw-r--r-- | server/NetworkController.cpp | 26 |
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); } |