summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSebastian Holmin <sebastian.holmin@mullvad.net>2025-07-02 13:52:15 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2025-07-04 15:31:41 +0200
commit1bdd1be3a3c07a5c4fc49489597de0f582085fed (patch)
tree8ac72010caaeb9f09225eb0bb175ede5444cba78
parent5fe3aa99935b49e83d0a7ad13ac13d8f2c47d38d (diff)
downloadmullvadvpn-1bdd1be3a3c07a5c4fc49489597de0f582085fed.tar.xz
mullvadvpn-1bdd1be3a3c07a5c4fc49489597de0f582085fed.zip
Add GetRemovePersistentFunctor
-rw-r--r--windows/winfw/src/winfw/objectpurger.cpp16
-rw-r--r--windows/winfw/src/winfw/objectpurger.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/windows/winfw/src/winfw/objectpurger.cpp b/windows/winfw/src/winfw/objectpurger.cpp
index dce36c99c8..52adaac187 100644
--- a/windows/winfw/src/winfw/objectpurger.cpp
+++ b/windows/winfw/src/winfw/objectpurger.cpp
@@ -71,6 +71,22 @@ ObjectPurger::RemovalFunctor ObjectPurger::GetRemoveNonPersistentFunctor()
}
//static
+ObjectPurger::RemovalFunctor ObjectPurger::GetRemovePersistentFunctor()
+{
+ return [](wfp::FilterEngine &engine)
+ {
+ const auto registry = MullvadGuids::DetailedRegistry(MullvadGuids::IdentityQualifier::IncludePersistent);
+
+ // Resolve correct overload.
+ void(*deleter)(wfp::FilterEngine &, const GUID &) = wfp::ObjectDeleter::DeleteFilter;
+
+ RemoveRange(engine, deleter, registry.equal_range(WfpObjectType::Filter));
+ RemoveRange(engine, wfp::ObjectDeleter::DeleteSublayer, registry.equal_range(WfpObjectType::Sublayer));
+ RemoveRange(engine, wfp::ObjectDeleter::DeleteProvider, registry.equal_range(WfpObjectType::Provider));
+ };
+}
+
+//static
bool ObjectPurger::Execute(RemovalFunctor f)
{
auto engine = wfp::FilterEngine::StandardSession();
diff --git a/windows/winfw/src/winfw/objectpurger.h b/windows/winfw/src/winfw/objectpurger.h
index 7728aac694..9d3ca0146e 100644
--- a/windows/winfw/src/winfw/objectpurger.h
+++ b/windows/winfw/src/winfw/objectpurger.h
@@ -16,6 +16,7 @@ public:
static RemovalFunctor GetRemoveFiltersFunctor();
static RemovalFunctor GetRemoveAllFunctor();
static RemovalFunctor GetRemoveNonPersistentFunctor();
+ static RemovalFunctor GetRemovePersistentFunctor();
static bool Execute(RemovalFunctor f);
};