diff options
author | Thomas Haller <thaller@redhat.com> | 2019-04-10 13:08:23 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-04-10 15:43:23 +0200 |
commit | 98b2e9df61e142047e78047339bcb5328697962c (patch) | |
tree | f3b30d65db3b4c85a4bdad761bd4e609e11f0b63 | |
parent | 2cd4426ea0dd02fad50770b02772a4609d98b5fe (diff) | |
download | NetworkManager-98b2e9df61e142047e78047339bcb5328697962c.tar.gz |
platform: add nmp_rules_manager_track_from_platform()
Track all the rules that are currenlty in platform.
-rw-r--r-- | src/platform/nmp-rules-manager.c | 34 | ||||
-rw-r--r-- | src/platform/nmp-rules-manager.h | 6 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/platform/nmp-rules-manager.c b/src/platform/nmp-rules-manager.c index 2ea159a0fb..33218b982c 100644 --- a/src/platform/nmp-rules-manager.c +++ b/src/platform/nmp-rules-manager.c @@ -546,6 +546,40 @@ nmp_rules_manager_sync (NMPRulesManager *self, } } +void +nmp_rules_manager_track_from_platform (NMPRulesManager *self, + NMPlatform *platform, + int addr_family, + gint32 tracking_priority, + gconstpointer user_tag) +{ + NMPLookup lookup; + const NMDedupMultiHeadEntry *head_entry; + NMDedupMultiIter iter; + const NMPObject *o; + + g_return_if_fail (NMP_IS_RULES_MANAGER (self)); + + if (!platform) + platform = self->platform; + else + g_return_if_fail (NM_IS_PLATFORM (platform)); + + nm_assert (NM_IN_SET (addr_family, AF_UNSPEC, AF_INET, AF_INET6)); + + nmp_lookup_init_obj_type (&lookup, NMP_OBJECT_TYPE_ROUTING_RULE); + head_entry = nm_platform_lookup (platform, &lookup); + nmp_cache_iter_for_each (&iter, head_entry, &o) { + const NMPlatformRoutingRule *rr = NMP_OBJECT_CAST_ROUTING_RULE (o); + + if ( addr_family != AF_UNSPEC + && rr->addr_family != addr_family) + continue; + + nmp_rules_manager_track (self, rr, tracking_priority, user_tag); + } +} + /*****************************************************************************/ void diff --git a/src/platform/nmp-rules-manager.h b/src/platform/nmp-rules-manager.h index 57dc267fb8..310c7971f2 100644 --- a/src/platform/nmp-rules-manager.h +++ b/src/platform/nmp-rules-manager.h @@ -42,6 +42,12 @@ void nmp_rules_manager_track_default (NMPRulesManager *self, gint32 track_priority, gconstpointer user_tag); +void nmp_rules_manager_track_from_platform (NMPRulesManager *self, + NMPlatform *platform, + int addr_family, + gint32 tracking_priority, + gconstpointer user_tag); + void nmp_rules_manager_untrack (NMPRulesManager *self, const NMPlatformRoutingRule *routing_rule, gconstpointer user_tag); |