diff options
author | Thomas Haller <thaller@redhat.com> | 2021-05-04 16:10:54 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-05-05 14:45:51 +0200 |
commit | 25fc86dc16e4811930682433db0941abc634f31c (patch) | |
tree | 6854747df5ece96099e328ca390d01f2d96c0fe2 | |
parent | f9cea259952a0eef6999b34e5dc75e285a38c644 (diff) | |
download | NetworkManager-th/firewall2.tar.gz |
firewall: add NMFirewallManagerth/firewall2
This will abstract iptables, nft and firewalld.
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | src/core/meson.build | 1 | ||||
-rw-r--r-- | src/core/nm-firewall-manager.c | 90 | ||||
-rw-r--r-- | src/core/nm-firewall-manager.h | 24 |
4 files changed, 117 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 49a4db3ee2..96f38ce433 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2567,6 +2567,8 @@ src_core_libNetworkManager_la_SOURCES = \ src/core/nm-dhcp-config.h \ src/core/nm-dispatcher.c \ src/core/nm-dispatcher.h \ + src/core/nm-firewall-manager.c \ + src/core/nm-firewall-manager.h \ src/core/nm-firewalld-manager.c \ src/core/nm-firewalld-manager.h \ src/core/nm-proxy-config.c \ diff --git a/src/core/meson.build b/src/core/meson.build index 9758637235..0558f44897 100644 --- a/src/core/meson.build +++ b/src/core/meson.build @@ -162,6 +162,7 @@ libNetworkManager = static_library( 'nm-dcb.c', 'nm-dhcp-config.c', 'nm-dispatcher.c', + 'nm-firewall-manager.c', 'nm-firewalld-manager.c', 'nm-hostname-manager.c', 'nm-keep-alive.c', diff --git a/src/core/nm-firewall-manager.c b/src/core/nm-firewall-manager.c new file mode 100644 index 0000000000..c9f21dd92a --- /dev/null +++ b/src/core/nm-firewall-manager.c @@ -0,0 +1,90 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "src/core/nm-default-daemon.h" + +#include "nm-firewall-manager.h" + +#include "nm-core-utils.h" + +/*****************************************************************************/ + +typedef struct { + int i; +} NMFirewallManagerPrivate; + +struct _NMFirewallManager { + GObject parent; + NMFirewallManagerPrivate _priv; +}; + +struct _NMFirewallManagerClass { + GObjectClass parent; +}; + +G_DEFINE_TYPE(NMFirewallManager, nm_firewall_manager, G_TYPE_OBJECT); + +#define NM_FIREWALL_MANAGER_GET_PRIVATE(self) \ + _NM_GET_PRIVATE(self, NMFirewallManager, NM_IS_FIREWALL_MANAGER) + +/*****************************************************************************/ + +NM_DEFINE_SINGLETON_GETTER(NMFirewallManager, nm_firewall_manager_get, NM_TYPE_FIREWALL_MANAGER); + +/*****************************************************************************/ + +#define _NMLOG_DOMAIN LOGD_FIREWALL +#define _NMLOG_PREFIX_NAME "firewall" +#define _NMLOG(level, ...) \ + G_STMT_START \ + { \ + if (nm_logging_enabled((level), (_NMLOG_DOMAIN))) { \ + char _prefix_name[30]; \ + \ + _nm_log((level), \ + (_NMLOG_DOMAIN), \ + 0, \ + NULL, \ + NULL, \ + "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + (((self) != singleton_instance) ? ({ \ + g_snprintf(_prefix_name, \ + sizeof(_prefix_name), \ + "%s[" NM_HASH_OBFUSCATE_PTR_FMT "]", \ + ""_NMLOG_PREFIX_NAME, \ + NM_HASH_OBFUSCATE_PTR(self)); \ + _prefix_name; \ + }) \ + : _NMLOG_PREFIX_NAME) \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } \ + } \ + G_STMT_END + +/*****************************************************************************/ + +static void +nm_firewall_manager_init(NMFirewallManager *self) +{ + NMFirewallManagerPrivate *priv = NM_FIREWALL_MANAGER_GET_PRIVATE(self); + + (void) priv; //XXX +} + +static void +dispose(GObject *object) +{ + NMFirewallManager * self = NM_FIREWALL_MANAGER(object); + NMFirewallManagerPrivate *priv = NM_FIREWALL_MANAGER_GET_PRIVATE(self); + + (void) priv; //XXX + + G_OBJECT_CLASS(nm_firewall_manager_parent_class)->dispose(object); +} + +static void +nm_firewall_manager_class_init(NMFirewallManagerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + + object_class->dispose = dispose; +} diff --git a/src/core/nm-firewall-manager.h b/src/core/nm-firewall-manager.h new file mode 100644 index 0000000000..e98d0cc1ce --- /dev/null +++ b/src/core/nm-firewall-manager.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef __NM_FIREWALL_MANAGER_H__ +#define __NM_FIREWALL_MANAGER_H__ + +#define NM_TYPE_FIREWALL_MANAGER (nm_firewall_manager_get_type()) +#define NM_FIREWALL_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManager)) +#define NM_FIREWALL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) +#define NM_IS_FIREWALL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), NM_TYPE_FIREWALL_MANAGER)) +#define NM_IS_FIREWALL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_FIREWALL_MANAGER)) +#define NM_FIREWALL_MANAGER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) + +typedef struct _NMFirewallManager NMFirewallManager; +typedef struct _NMFirewallManagerClass NMFirewallManagerClass; + +GType nm_firewall_manager_get_type(void); + +NMFirewallManager *nm_firewall_manager_get(void); + +#endif /* __NM_FIREWALL_MANAGER_H__ */ |