Merge "Add Data Saver utils in Firewall test helper class" into main

This commit is contained in:
Ken Chen 2023-11-02 02:35:44 +00:00 • committed by Gerrit Code Review
commit 90428539d6
2 changed files with 23 additions and 1 deletions

View file

@ -27,6 +27,9 @@ Firewall::Firewall() {
result = mUidOwnerMap.init(UID_OWNER_MAP_PATH);
EXPECT_RESULT_OK(result) << "init mUidOwnerMap failed";
result = mDataSaverEnabledMap.init(DATA_SAVER_ENABLED_MAP_PATH);
EXPECT_RESULT_OK(result) << "init mDataSaverEnabledMap failed";
}
Firewall* Firewall::getInstance() {
@ -116,3 +119,20 @@ Result<void> Firewall::removeUidInterfaceRules(const std::vector<int32_t>& uids)
}
return {};
}
Result<bool> Firewall::getDataSaverSetting() {
std::lock_guard guard(mMutex);
auto dataSaverSetting = mDataSaverEnabledMap.readValue(DATA_SAVER_ENABLED_KEY);
if (!dataSaverSetting.ok()) {
return Errorf("Cannot read the data saver setting: {}", dataSaverSetting.error().message());
}
return dataSaverSetting;
}
Result<void> Firewall::setDataSaver(bool enabled) {
std::lock_guard guard(mMutex);
auto res = mDataSaverEnabledMap.writeValue(DATA_SAVER_ENABLED_KEY, enabled, BPF_EXIST);
if (!res.ok()) return Errorf("Failed to set data saver: {}", res.error().message());
return {};
}

View file

@ -33,9 +33,11 @@ class Firewall {
Result<void> removeRule(uint32_t uid, UidOwnerMatchType match) EXCLUDES(mMutex);
Result<void> addUidInterfaceRules(const std::string& ifName, const std::vector<int32_t>& uids);
Result<void> removeUidInterfaceRules(const std::vector<int32_t>& uids);
Result<bool> getDataSaverSetting();
Result<void> setDataSaver(bool enabled);
private:
BpfMap<uint32_t, uint32_t> mConfigurationMap GUARDED_BY(mMutex);
BpfMap<uint32_t, UidOwnerValue> mUidOwnerMap GUARDED_BY(mMutex);
BpfMap<uint32_t, bool> mDataSaverEnabledMap GUARDED_BY(mMutex);
std::mutex mMutex;
};