summary refs log tree commit diff
path: root/src/nm-netns.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2019-04-21 21:09:51 +0200
committerMichael Biebl <biebl@debian.org>2019-04-21 21:09:51 +0200
commit85563b7fc7ec2cd21e38debb9b28db342e2e8e7c (patch)
treecce7b0b02d28fae2df9fdf2c1804cacd1500f2d7 /src/nm-netns.c
parent9a6dcbf895f9da01768e64b73cec88c16157d91e (diff)
New upstream version 1.18.0 upstream/1.18.0
Diffstat (limited to 'src/nm-netns.c')
-rw-r--r--src/nm-netns.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/nm-netns.c b/src/nm-netns.c
index 5952a490..650578af 100644
--- a/src/nm-netns.c
+++ b/src/nm-netns.c
@@ -22,12 +22,13 @@
 
 #include "nm-netns.h"
 
-#include "nm-utils/nm-dedup-multi.h"
+#include "nm-glib-aux/nm-dedup-multi.h"
 
+#include "NetworkManagerUtils.h"
+#include "nm-core-internal.h"
 #include "platform/nm-platform.h"
 #include "platform/nmp-netns.h"
-#include "nm-core-internal.h"
-#include "NetworkManagerUtils.h"
+#include "platform/nmp-rules-manager.h"
 
 /*****************************************************************************/
 
@@ -38,6 +39,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE (
 typedef struct {
 	NMPlatform *platform;
 	NMPNetns *platform_netns;
+	NMPRulesManager *rules_manager;
 } NMNetnsPrivate;
 
 struct _NMNetns {
@@ -71,6 +73,12 @@ nm_netns_get_platform (NMNetns *self)
 	return NM_NETNS_GET_PRIVATE (self)->platform;
 }
 
+NMPRulesManager *
+nm_netns_get_rules_manager (NMNetns *self)
+{
+	return NM_NETNS_GET_PRIVATE (self)->rules_manager;
+}
+
 NMDedupMultiIndex *
 nm_netns_get_multi_idx (NMNetns *self)
 {
@@ -118,6 +126,20 @@ constructed (GObject *object)
 
 	priv->platform_netns = nm_platform_netns_get (priv->platform);
 
+	priv->rules_manager = nmp_rules_manager_new (priv->platform);
+
+	/* Weakly track the default rules and rules that were added
+	 * outside of NetworkManager. */
+	nmp_rules_manager_track_default (priv->rules_manager,
+	                                 AF_UNSPEC,
+	                                 0,
+	                                 nm_netns_parent_class /* static dummy user-tag */);
+	nmp_rules_manager_track_from_platform (priv->rules_manager,
+	                                       NULL,
+	                                       AF_UNSPEC,
+	                                       0,
+	                                       nm_netns_parent_class /* static dummy user-tag */);
+
 	G_OBJECT_CLASS (nm_netns_parent_class)->constructed (object);
 }
 
@@ -137,6 +159,8 @@ dispose (GObject *object)
 
 	g_clear_object (&priv->platform);
 
+	nm_clear_pointer (&priv->rules_manager, nmp_rules_manager_unref);
+
 	G_OBJECT_CLASS (nm_netns_parent_class)->dispose (object);
 }