Repository :
http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
---------------------------------------------------------------
commit 01274862ef7f5d376f526a0b90b077f4f0eea119
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Nov 26 13:33:33 2014 +0100
Change internal DBus method calling semantics
- use the interface version and subinterface when
looking up the method handler
- prepare the Backend class for handling the direct
interface methods
- make the backend instance accessible via the
backend() method to the firewalld instance
- reroute the handling to the backend in dbus_method_handle
- update the DBus method definitions
---------------------------------------------------------------
src/Daemon/DBus.cpp | 23 +++++-
src/Daemon/DBus.hpp | 3 +-
src/Daemon/DBus/completeReload.cpp | 2 +-
src/Daemon/DBus/direct/addChain.cpp | 2 +-
src/Daemon/DBus/direct/addRule.cpp | 2 +-
src/Daemon/DBus/direct/getAllChains.cpp | 2 +-
src/Daemon/DBus/direct/getAllRules.cpp | 2 +-
src/Daemon/DBus/direct/getChains.cpp | 2 +-
src/Daemon/DBus/direct/getRules.cpp | 2 +-
src/Daemon/DBus/direct/methods.decl | 24 +++---
src/Daemon/DBus/direct/passthrough.cpp | 2 +-
src/Daemon/DBus/direct/queryChain.cpp | 2 +-
src/Daemon/DBus/direct/queryRule.cpp | 2 +-
src/Daemon/DBus/direct/removeChain.cpp | 2 +-
src/Daemon/DBus/direct/removeRule.cpp | 2 +-
src/Daemon/DBus/direct/removeRules.cpp | 2 +-
src/Daemon/DBus/disablePanicMode.cpp | 2 +-
src/Daemon/DBus/enablePanicMode.cpp | 2 +-
src/Daemon/DBus/getDefaultZone.cpp | 2 +-
src/Daemon/DBus/getIcmpTypeSettings.cpp | 2 +-
src/Daemon/DBus/getServiceSettings.cpp | 2 +-
src/Daemon/DBus/getZoneSettings.cpp | 2 +-
src/Daemon/DBus/listIcmpTypes.cpp | 2 +-
src/Daemon/DBus/listServices.cpp | 2 +-
src/Daemon/DBus/methods.decl | 24 +++---
src/Daemon/DBus/queryPanicMode.cpp | 2 +-
src/Daemon/DBus/reload.cpp | 2 +-
src/Daemon/DBus/setDefaultZone.cpp | 2 +-
src/Daemon/DBus/zone/addForwardPort.cpp | 2 +-
src/Daemon/DBus/zone/addIcmpBlock.cpp | 2 +-
src/Daemon/DBus/zone/addInterface.cpp | 2 +-
src/Daemon/DBus/zone/addMasquerade.cpp | 2 +-
src/Daemon/DBus/zone/addPort.cpp | 2 +-
src/Daemon/DBus/zone/addRichRule.cpp | 2 +-
src/Daemon/DBus/zone/addService.cpp | 2 +-
src/Daemon/DBus/zone/addSource.cpp | 2 +-
src/Daemon/DBus/zone/changeZone.cpp | 2 +-
src/Daemon/DBus/zone/changeZoneOfInterface.cpp | 2 +-
src/Daemon/DBus/zone/changeZoneOfSource.cpp | 2 +-
src/Daemon/DBus/zone/getActiveZones.cpp | 2 +-
src/Daemon/DBus/zone/getForwardPorts.cpp | 2 +-
src/Daemon/DBus/zone/getIcmpBlocks.cpp | 2 +-
src/Daemon/DBus/zone/getInterfaces.cpp | 2 +-
src/Daemon/DBus/zone/getPorts.cpp | 2 +-
src/Daemon/DBus/zone/getRichRules.cpp | 2 +-
src/Daemon/DBus/zone/getServices.cpp | 2 +-
src/Daemon/DBus/zone/getSources.cpp | 2 +-
src/Daemon/DBus/zone/getZoneOfInterface.cpp | 2 +-
src/Daemon/DBus/zone/getZoneOfSource.cpp | 2 +-
src/Daemon/DBus/zone/getZones.cpp | 2 +-
src/Daemon/DBus/zone/isImmutable.cpp | 2 +-
src/Daemon/DBus/zone/methods.decl | 98 ++++++++++++------------
src/Daemon/DBus/zone/queryForwardPort.cpp | 2 +-
src/Daemon/DBus/zone/queryIcmpBlock.cpp | 2 +-
src/Daemon/DBus/zone/queryInterface.cpp | 2 +-
src/Daemon/DBus/zone/queryMasquerade.cpp | 2 +-
src/Daemon/DBus/zone/queryPort.cpp | 2 +-
src/Daemon/DBus/zone/queryRichRule.cpp | 2 +-
src/Daemon/DBus/zone/queryService.cpp | 2 +-
src/Daemon/DBus/zone/querySource.cpp | 2 +-
src/Daemon/DBus/zone/removeForwardPort.cpp | 2 +-
src/Daemon/DBus/zone/removeIcmpBlock.cpp | 2 +-
src/Daemon/DBus/zone/removeInterface.cpp | 2 +-
src/Daemon/DBus/zone/removeMasquerade.cpp | 2 +-
src/Daemon/DBus/zone/removePort.cpp | 2 +-
src/Daemon/DBus/zone/removeRichRule.cpp | 2 +-
src/Daemon/DBus/zone/removeService.cpp | 2 +-
src/Daemon/DBus/zone/removeSource.cpp | 2 +-
src/Daemon/Firewall/Backend.cpp | 15 ++++-
src/Daemon/Firewall/Backend.hpp | 8 ++-
src/Daemon/Firewall/Firewall.cpp | 9 ++
src/Daemon/Firewall/Firewall.hpp | 2 +
src/Daemon/Firewall/Zone.cpp | 18 ++++-
src/Daemon/FirewallD.cpp | 74 ++++++++++++------
src/Daemon/FirewallD.hpp | 28 ++++++-
75 files changed, 282 insertions(+), 170 deletions(-)
diff --git a/src/Daemon/DBus.cpp b/src/Daemon/DBus.cpp
index 12ef16c..59996a2 100644
--- a/src/Daemon/DBus.cpp
+++ b/src/Daemon/DBus.cpp
@@ -150,8 +150,24 @@ namespace firewalld
Glib::VariantContainerBase g_dbus_result_container;
DBusResultBuilder dbus_result(g_dbus_result_container);
- // Signal method call
- method_called(method_name, dbus_parameters, dbus_result);
+ if (!Glib::str_has_prefix(interface_name, DBUS_INTERFACE_DOMAIN_COMMON)) {
+ invocation->return_dbus_error(DBUS_ERROR_DOMAIN ".UNKNOWN_INTERFACE",
+ "BUG: the requested interaface \""
+ + interface_name
+ + "\" is unknown to FirewallD");
+ }
+
+ const UString interface_internal =
interface_name.substr(strlen(DBUS_INTERFACE_DOMAIN_COMMON));
+ const UString method_name_internal = interface_internal + "." +
method_name;
+
+ LOG(DEBUG) << "Calling DBus method handler for " +
method_name_internal;
+
+ /*
+ * Signal method call. The method call is signaled using an internal
+ * form of the method name which is of the form:
+ * <version>.[<interface>.]<method_name>
+ */
+ method_called(method_name_internal, dbus_parameters, dbus_result);
if (unlikely(dbus_result.isError())) {
const DBusError& error = dbus_result.getError();
@@ -169,6 +185,9 @@ namespace firewalld
dbus_result.finish();
invocation->return_value(g_dbus_result_container);
} catch(...) {
+ invocation->return_dbus_error(DBUS_ERROR_DOMAIN ".INTERNAL_ERROR",
+ "BUG: an unhandled exception was caught "
+ "when processing DBus result");
}
}
}
diff --git a/src/Daemon/DBus.hpp b/src/Daemon/DBus.hpp
index 5e023ef..ae10f6a 100644
--- a/src/Daemon/DBus.hpp
+++ b/src/Daemon/DBus.hpp
@@ -34,7 +34,8 @@
#define __STRINGIFY_X(x) #x
#define __STRINGIFY(x) __STRINGIFY_X(x)
-#define DBUS_INTERFACE "org.fedoraproject.FirewallD"
__STRINGIFY(DBUS_INTERFACE_VERSION)
+#define DBUS_INTERFACE_DOMAIN_COMMON "org.fedoraproject.FirewallD"
+#define DBUS_INTERFACE DBUS_INTERFACE_DOMAIN_COMMON __STRINGIFY(DBUS_INTERFACE_VERSION)
#define DBUS_INTERFACE_ZONE DBUS_INTERFACE ".zone"
#define DBUS_INTERFACE_DIRECT DBUS_INTERFACE ".direct"
#define DBUS_INTERFACE_POLICIES DBUS_INTERFACE ".policies"
diff --git a/src/Daemon/DBus/completeReload.cpp b/src/Daemon/DBus/completeReload.cpp
index 6a719cf..5e92a33 100644
--- a/src/Daemon/DBus/completeReload.cpp
+++ b/src/Daemon/DBus/completeReload.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(completeReload)
+ FIREWALLD_DBUS_METHOD(1,,completeReload)
{
// TODO: Make sure kernel modules are reloaded
// Shutdown DBus and stop the Glib main loop
diff --git a/src/Daemon/DBus/direct/addChain.cpp b/src/Daemon/DBus/direct/addChain.cpp
index b320306..05de14e 100644
--- a/src/Daemon/DBus/direct/addChain.cpp
+++ b/src/Daemon/DBus/direct/addChain.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addChain)
+ FIREWALLD_DBUS_METHOD(1,direct,addChain)
{
LOG(TRACE) << "addChain";
UString ipv;
diff --git a/src/Daemon/DBus/direct/addRule.cpp b/src/Daemon/DBus/direct/addRule.cpp
index 6255a12..551956d 100644
--- a/src/Daemon/DBus/direct/addRule.cpp
+++ b/src/Daemon/DBus/direct/addRule.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addRule)
+ FIREWALLD_DBUS_METHOD(1,direct,addRule)
{
LOG(TRACE) << "addRule";
UString ipv;
diff --git a/src/Daemon/DBus/direct/getAllChains.cpp
b/src/Daemon/DBus/direct/getAllChains.cpp
index 2e9ff44..927ddf6 100644
--- a/src/Daemon/DBus/direct/getAllChains.cpp
+++ b/src/Daemon/DBus/direct/getAllChains.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getAllChains)
+ FIREWALLD_DBUS_METHOD(1,direct,getAllChains)
{
StringVector ipv_vector = { "ipv4", "ipv6" };
int i = 0;
diff --git a/src/Daemon/DBus/direct/getAllRules.cpp
b/src/Daemon/DBus/direct/getAllRules.cpp
index 554aa58..092b8be 100644
--- a/src/Daemon/DBus/direct/getAllRules.cpp
+++ b/src/Daemon/DBus/direct/getAllRules.cpp
@@ -23,7 +23,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getAllRules)
+ FIREWALLD_DBUS_METHOD(1,direct,getAllRules)
{
StringVector ipv_vector = { "ipv4", "ipv6" };
int i = 0;
diff --git a/src/Daemon/DBus/direct/getChains.cpp b/src/Daemon/DBus/direct/getChains.cpp
index 4d1c269..7805797 100644
--- a/src/Daemon/DBus/direct/getChains.cpp
+++ b/src/Daemon/DBus/direct/getChains.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getChains)
+ FIREWALLD_DBUS_METHOD(1,direct,getChains)
{
LOG(TRACE) << "getChains";
UString ipv;
diff --git a/src/Daemon/DBus/direct/getRules.cpp b/src/Daemon/DBus/direct/getRules.cpp
index 7f3d8c2..c1b19b3 100644
--- a/src/Daemon/DBus/direct/getRules.cpp
+++ b/src/Daemon/DBus/direct/getRules.cpp
@@ -23,7 +23,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getRules)
+ FIREWALLD_DBUS_METHOD(1,direct,getRules)
{
UString ipv;
UString table;
diff --git a/src/Daemon/DBus/direct/methods.decl b/src/Daemon/DBus/direct/methods.decl
index 292938f..4e1013a 100644
--- a/src/Daemon/DBus/direct/methods.decl
+++ b/src/Daemon/DBus/direct/methods.decl
@@ -1,14 +1,14 @@
-FIREWALLD_DBUS_METHOD(passthrough);
+FIREWALLD_DBUS_METHOD(1,direct,passthrough);
-FIREWALLD_DBUS_METHOD(addChain);
-FIREWALLD_DBUS_METHOD(getChains);
-FIREWALLD_DBUS_METHOD(getAllChains);
-FIREWALLD_DBUS_METHOD(queryChain);
-FIREWALLD_DBUS_METHOD(removeChain);
+FIREWALLD_DBUS_METHOD(1,direct,addChain);
+FIREWALLD_DBUS_METHOD(1,direct,getChains);
+FIREWALLD_DBUS_METHOD(1,direct,getAllChains);
+FIREWALLD_DBUS_METHOD(1,direct,queryChain);
+FIREWALLD_DBUS_METHOD(1,direct,removeChain);
-FIREWALLD_DBUS_METHOD(addRule);
-FIREWALLD_DBUS_METHOD(getRules);
-FIREWALLD_DBUS_METHOD(getAllRules);
-FIREWALLD_DBUS_METHOD(queryRule);
-FIREWALLD_DBUS_METHOD(removeRule);
-FIREWALLD_DBUS_METHOD(removeRules);
+FIREWALLD_DBUS_METHOD(1,direct,addRule);
+FIREWALLD_DBUS_METHOD(1,direct,getRules);
+FIREWALLD_DBUS_METHOD(1,direct,getAllRules);
+FIREWALLD_DBUS_METHOD(1,direct,queryRule);
+FIREWALLD_DBUS_METHOD(1,direct,removeRule);
+FIREWALLD_DBUS_METHOD(1,direct,removeRules);
diff --git a/src/Daemon/DBus/direct/passthrough.cpp
b/src/Daemon/DBus/direct/passthrough.cpp
index 8582c6d..4f93c57 100644
--- a/src/Daemon/DBus/direct/passthrough.cpp
+++ b/src/Daemon/DBus/direct/passthrough.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(passthrough)
+ FIREWALLD_DBUS_METHOD(1,direct,passthrough)
{
LOG(TRACE) << "passthrough";
UString ipv;
diff --git a/src/Daemon/DBus/direct/queryChain.cpp
b/src/Daemon/DBus/direct/queryChain.cpp
index 8d3fbd6..eba4c6d 100644
--- a/src/Daemon/DBus/direct/queryChain.cpp
+++ b/src/Daemon/DBus/direct/queryChain.cpp
@@ -23,7 +23,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryChain)
+ FIREWALLD_DBUS_METHOD(1,direct,queryChain)
{
UString ipv;
UString table;
diff --git a/src/Daemon/DBus/direct/queryRule.cpp b/src/Daemon/DBus/direct/queryRule.cpp
index 5b96019..dd4ab43 100644
--- a/src/Daemon/DBus/direct/queryRule.cpp
+++ b/src/Daemon/DBus/direct/queryRule.cpp
@@ -23,7 +23,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryRule)
+ FIREWALLD_DBUS_METHOD(1,direct,queryRule)
{
UString ipv;
UString table;
diff --git a/src/Daemon/DBus/direct/removeChain.cpp
b/src/Daemon/DBus/direct/removeChain.cpp
index be5d76b..b9a5fa6 100644
--- a/src/Daemon/DBus/direct/removeChain.cpp
+++ b/src/Daemon/DBus/direct/removeChain.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeChain)
+ FIREWALLD_DBUS_METHOD(1,direct,removeChain)
{
LOG(TRACE) << "removeChain";
UString ipv;
diff --git a/src/Daemon/DBus/direct/removeRule.cpp
b/src/Daemon/DBus/direct/removeRule.cpp
index 3630da7..7933b00 100644
--- a/src/Daemon/DBus/direct/removeRule.cpp
+++ b/src/Daemon/DBus/direct/removeRule.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeRule)
+ FIREWALLD_DBUS_METHOD(1,direct,removeRule)
{
LOG(TRACE) << "removeRule";
UString ipv;
diff --git a/src/Daemon/DBus/direct/removeRules.cpp
b/src/Daemon/DBus/direct/removeRules.cpp
index 882e0ae..a480e9a 100644
--- a/src/Daemon/DBus/direct/removeRules.cpp
+++ b/src/Daemon/DBus/direct/removeRules.cpp
@@ -44,7 +44,7 @@ namespace firewalld
dbus.broadcastSignal("RuleRemoved", DBUS_INTERFACE_DIRECT,
signal_parameters);
}
- FIREWALLD_DBUS_METHOD(removeRules)
+ FIREWALLD_DBUS_METHOD(1,direct,removeRules)
{
UString ipv;
UString table;
diff --git a/src/Daemon/DBus/disablePanicMode.cpp b/src/Daemon/DBus/disablePanicMode.cpp
index fbe90fb..d001ae8 100644
--- a/src/Daemon/DBus/disablePanicMode.cpp
+++ b/src/Daemon/DBus/disablePanicMode.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(disablePanicMode)
+ FIREWALLD_DBUS_METHOD(1,,disablePanicMode)
{
result.setTypeSignature("()");
diff --git a/src/Daemon/DBus/enablePanicMode.cpp b/src/Daemon/DBus/enablePanicMode.cpp
index a7e37df..e8e5a2e 100644
--- a/src/Daemon/DBus/enablePanicMode.cpp
+++ b/src/Daemon/DBus/enablePanicMode.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(enablePanicMode)
+ FIREWALLD_DBUS_METHOD(1,,enablePanicMode)
{
result.setTypeSignature("()");
diff --git a/src/Daemon/DBus/getDefaultZone.cpp b/src/Daemon/DBus/getDefaultZone.cpp
index 3ab2483..d35f9e3 100644
--- a/src/Daemon/DBus/getDefaultZone.cpp
+++ b/src/Daemon/DBus/getDefaultZone.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getDefaultZone)
+ FIREWALLD_DBUS_METHOD(1,,getDefaultZone)
{
result.setTypeSignature("(s)");
result = _fw.getDefaultZoneName();
diff --git a/src/Daemon/DBus/getIcmpTypeSettings.cpp
b/src/Daemon/DBus/getIcmpTypeSettings.cpp
index 492c438..d7d5269 100644
--- a/src/Daemon/DBus/getIcmpTypeSettings.cpp
+++ b/src/Daemon/DBus/getIcmpTypeSettings.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getIcmpTypeSettings)
+ FIREWALLD_DBUS_METHOD(1,,getIcmpTypeSettings)
{
result.setTypeSignature("((sssas))");
diff --git a/src/Daemon/DBus/getServiceSettings.cpp
b/src/Daemon/DBus/getServiceSettings.cpp
index 5e209b5..70df337 100644
--- a/src/Daemon/DBus/getServiceSettings.cpp
+++ b/src/Daemon/DBus/getServiceSettings.cpp
@@ -23,7 +23,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getServiceSettings)
+ FIREWALLD_DBUS_METHOD(1,,getServiceSettings)
{
result.setTypeSignature("((sssa(ss)asa{ss}))");
diff --git a/src/Daemon/DBus/getZoneSettings.cpp b/src/Daemon/DBus/getZoneSettings.cpp
index f976bb2..fa23b9e 100644
--- a/src/Daemon/DBus/getZoneSettings.cpp
+++ b/src/Daemon/DBus/getZoneSettings.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getZoneSettings)
+ FIREWALLD_DBUS_METHOD(1,,getZoneSettings)
{
result.setTypeSignature("((sssbsasa(ss)asba(ssss)asasas))");
diff --git a/src/Daemon/DBus/listIcmpTypes.cpp b/src/Daemon/DBus/listIcmpTypes.cpp
index 45a1c07..b505870 100644
--- a/src/Daemon/DBus/listIcmpTypes.cpp
+++ b/src/Daemon/DBus/listIcmpTypes.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(listIcmpTypes)
+ FIREWALLD_DBUS_METHOD(1,,listIcmpTypes)
{
result.setTypeSignature("(as)");
UStringVector icmptypes;
diff --git a/src/Daemon/DBus/listServices.cpp b/src/Daemon/DBus/listServices.cpp
index eeebc41..fb5f14e 100644
--- a/src/Daemon/DBus/listServices.cpp
+++ b/src/Daemon/DBus/listServices.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(listServices)
+ FIREWALLD_DBUS_METHOD(1,,listServices)
{
result.setTypeSignature("(as)");
UStringVector service_names;
diff --git a/src/Daemon/DBus/methods.decl b/src/Daemon/DBus/methods.decl
index 8a82557..aacbb5c 100644
--- a/src/Daemon/DBus/methods.decl
+++ b/src/Daemon/DBus/methods.decl
@@ -1,12 +1,12 @@
-FIREWALLD_DBUS_METHOD(reload);
-FIREWALLD_DBUS_METHOD(completeReload);
-FIREWALLD_DBUS_METHOD(disablePanicMode);
-FIREWALLD_DBUS_METHOD(enablePanicMode);
-FIREWALLD_DBUS_METHOD(getDefaultZone);
-FIREWALLD_DBUS_METHOD(listIcmpTypes);
-FIREWALLD_DBUS_METHOD(listServices);
-FIREWALLD_DBUS_METHOD(queryPanicMode);
-FIREWALLD_DBUS_METHOD(setDefaultZone);
-FIREWALLD_DBUS_METHOD(getIcmpTypeSettings);
-FIREWALLD_DBUS_METHOD(getServiceSettings);
-FIREWALLD_DBUS_METHOD(getZoneSettings);
+FIREWALLD_DBUS_METHOD(1,,reload);
+FIREWALLD_DBUS_METHOD(1,,completeReload);
+FIREWALLD_DBUS_METHOD(1,,disablePanicMode);
+FIREWALLD_DBUS_METHOD(1,,enablePanicMode);
+FIREWALLD_DBUS_METHOD(1,,getDefaultZone);
+FIREWALLD_DBUS_METHOD(1,,listIcmpTypes);
+FIREWALLD_DBUS_METHOD(1,,listServices);
+FIREWALLD_DBUS_METHOD(1,,queryPanicMode);
+FIREWALLD_DBUS_METHOD(1,,setDefaultZone);
+FIREWALLD_DBUS_METHOD(1,,getIcmpTypeSettings);
+FIREWALLD_DBUS_METHOD(1,,getServiceSettings);
+FIREWALLD_DBUS_METHOD(1,,getZoneSettings);
diff --git a/src/Daemon/DBus/queryPanicMode.cpp b/src/Daemon/DBus/queryPanicMode.cpp
index 0e5abdb..a4b632a 100644
--- a/src/Daemon/DBus/queryPanicMode.cpp
+++ b/src/Daemon/DBus/queryPanicMode.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryPanicMode)
+ FIREWALLD_DBUS_METHOD(1,,queryPanicMode)
{
result.setTypeSignature("(b)");
result = panicMode();
diff --git a/src/Daemon/DBus/reload.cpp b/src/Daemon/DBus/reload.cpp
index eb2d080..2450335 100644
--- a/src/Daemon/DBus/reload.cpp
+++ b/src/Daemon/DBus/reload.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(reload)
+ FIREWALLD_DBUS_METHOD(1,,reload)
{
// Shutdown DBus and stop the Glib main loop
// This will result in terminating the .run() method
diff --git a/src/Daemon/DBus/setDefaultZone.cpp b/src/Daemon/DBus/setDefaultZone.cpp
index 663f32a..bd885a4 100644
--- a/src/Daemon/DBus/setDefaultZone.cpp
+++ b/src/Daemon/DBus/setDefaultZone.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(setDefaultZone)
+ FIREWALLD_DBUS_METHOD(1,,setDefaultZone)
{
result.setTypeSignature("()");
diff --git a/src/Daemon/DBus/zone/addForwardPort.cpp
b/src/Daemon/DBus/zone/addForwardPort.cpp
index 1c89bd2..bd1e185 100644
--- a/src/Daemon/DBus/zone/addForwardPort.cpp
+++ b/src/Daemon/DBus/zone/addForwardPort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addForwardPort)
+ FIREWALLD_DBUS_METHOD(1,zone,addForwardPort)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addIcmpBlock.cpp
b/src/Daemon/DBus/zone/addIcmpBlock.cpp
index 60bdb2c..0b68205 100644
--- a/src/Daemon/DBus/zone/addIcmpBlock.cpp
+++ b/src/Daemon/DBus/zone/addIcmpBlock.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addIcmpBlock)
+ FIREWALLD_DBUS_METHOD(1,zone,addIcmpBlock)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addInterface.cpp
b/src/Daemon/DBus/zone/addInterface.cpp
index 8db80db..577f7fe 100644
--- a/src/Daemon/DBus/zone/addInterface.cpp
+++ b/src/Daemon/DBus/zone/addInterface.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addInterface)
+ FIREWALLD_DBUS_METHOD(1,zone,addInterface)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addMasquerade.cpp
b/src/Daemon/DBus/zone/addMasquerade.cpp
index 05aa590..316abbf 100644
--- a/src/Daemon/DBus/zone/addMasquerade.cpp
+++ b/src/Daemon/DBus/zone/addMasquerade.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addMasquerade)
+ FIREWALLD_DBUS_METHOD(1,zone,addMasquerade)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addPort.cpp b/src/Daemon/DBus/zone/addPort.cpp
index fe89bca..e515a9d 100644
--- a/src/Daemon/DBus/zone/addPort.cpp
+++ b/src/Daemon/DBus/zone/addPort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addPort)
+ FIREWALLD_DBUS_METHOD(1,zone,addPort)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addRichRule.cpp b/src/Daemon/DBus/zone/addRichRule.cpp
index 22f075a..87a5704 100644
--- a/src/Daemon/DBus/zone/addRichRule.cpp
+++ b/src/Daemon/DBus/zone/addRichRule.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addRichRule)
+ FIREWALLD_DBUS_METHOD(1,zone,addRichRule)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addService.cpp b/src/Daemon/DBus/zone/addService.cpp
index 3dd3651..034f61d 100644
--- a/src/Daemon/DBus/zone/addService.cpp
+++ b/src/Daemon/DBus/zone/addService.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addService)
+ FIREWALLD_DBUS_METHOD(1,zone,addService)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/addSource.cpp b/src/Daemon/DBus/zone/addSource.cpp
index b425398..47a7cda 100644
--- a/src/Daemon/DBus/zone/addSource.cpp
+++ b/src/Daemon/DBus/zone/addSource.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addSource)
+ FIREWALLD_DBUS_METHOD(1,zone,addSource)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/changeZone.cpp b/src/Daemon/DBus/zone/changeZone.cpp
index 8d182ed..f9905a3 100644
--- a/src/Daemon/DBus/zone/changeZone.cpp
+++ b/src/Daemon/DBus/zone/changeZone.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(changeZone)
+ FIREWALLD_DBUS_METHOD(1,zone,changeZone)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/changeZoneOfInterface.cpp
b/src/Daemon/DBus/zone/changeZoneOfInterface.cpp
index b02efc1..993ce72 100644
--- a/src/Daemon/DBus/zone/changeZoneOfInterface.cpp
+++ b/src/Daemon/DBus/zone/changeZoneOfInterface.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(changeZoneOfInterface)
+ FIREWALLD_DBUS_METHOD(1,zone,changeZoneOfInterface)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/changeZoneOfSource.cpp
b/src/Daemon/DBus/zone/changeZoneOfSource.cpp
index 60cc238..39de0e1 100644
--- a/src/Daemon/DBus/zone/changeZoneOfSource.cpp
+++ b/src/Daemon/DBus/zone/changeZoneOfSource.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(changeZoneOfSource)
+ FIREWALLD_DBUS_METHOD(1,zone,changeZoneOfSource)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/getActiveZones.cpp
b/src/Daemon/DBus/zone/getActiveZones.cpp
index 1a06aa6..2a9f355 100644
--- a/src/Daemon/DBus/zone/getActiveZones.cpp
+++ b/src/Daemon/DBus/zone/getActiveZones.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getActiveZones)
+ FIREWALLD_DBUS_METHOD(1,zone,getActiveZones)
{
//
// (a{sa{sas}})
diff --git a/src/Daemon/DBus/zone/getForwardPorts.cpp
b/src/Daemon/DBus/zone/getForwardPorts.cpp
index e6b516e..e9587b9 100644
--- a/src/Daemon/DBus/zone/getForwardPorts.cpp
+++ b/src/Daemon/DBus/zone/getForwardPorts.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getForwardPorts)
+ FIREWALLD_DBUS_METHOD(1,zone,getForwardPorts)
{
result.setTypeSignature("(aas)");
diff --git a/src/Daemon/DBus/zone/getIcmpBlocks.cpp
b/src/Daemon/DBus/zone/getIcmpBlocks.cpp
index 3da5df1..95b49d5 100644
--- a/src/Daemon/DBus/zone/getIcmpBlocks.cpp
+++ b/src/Daemon/DBus/zone/getIcmpBlocks.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getIcmpBlocks)
+ FIREWALLD_DBUS_METHOD(1,zone,getIcmpBlocks)
{
result.setTypeSignature("(as)");
diff --git a/src/Daemon/DBus/zone/getInterfaces.cpp
b/src/Daemon/DBus/zone/getInterfaces.cpp
index 850552e..c8eac2b 100644
--- a/src/Daemon/DBus/zone/getInterfaces.cpp
+++ b/src/Daemon/DBus/zone/getInterfaces.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getInterfaces)
+ FIREWALLD_DBUS_METHOD(1,zone,getInterfaces)
{
result.setTypeSignature("(as)");
diff --git a/src/Daemon/DBus/zone/getPorts.cpp b/src/Daemon/DBus/zone/getPorts.cpp
index 5a331f8..a9094f7 100644
--- a/src/Daemon/DBus/zone/getPorts.cpp
+++ b/src/Daemon/DBus/zone/getPorts.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getPorts)
+ FIREWALLD_DBUS_METHOD(1,zone,getPorts)
{
result.setTypeSignature("(aas)");
diff --git a/src/Daemon/DBus/zone/getRichRules.cpp
b/src/Daemon/DBus/zone/getRichRules.cpp
index 2e639b3..45cdf36 100644
--- a/src/Daemon/DBus/zone/getRichRules.cpp
+++ b/src/Daemon/DBus/zone/getRichRules.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getRichRules)
+ FIREWALLD_DBUS_METHOD(1,zone,getRichRules)
{
result.setTypeSignature("(as)");
diff --git a/src/Daemon/DBus/zone/getServices.cpp b/src/Daemon/DBus/zone/getServices.cpp
index 248305a..60fd66d 100644
--- a/src/Daemon/DBus/zone/getServices.cpp
+++ b/src/Daemon/DBus/zone/getServices.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getServices)
+ FIREWALLD_DBUS_METHOD(1,zone,getServices)
{
result.setTypeSignature("(as)");
diff --git a/src/Daemon/DBus/zone/getSources.cpp b/src/Daemon/DBus/zone/getSources.cpp
index c0596f4..4f206a7 100644
--- a/src/Daemon/DBus/zone/getSources.cpp
+++ b/src/Daemon/DBus/zone/getSources.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getSources)
+ FIREWALLD_DBUS_METHOD(1,zone,getSources)
{
result.setTypeSignature("(as)");
diff --git a/src/Daemon/DBus/zone/getZoneOfInterface.cpp
b/src/Daemon/DBus/zone/getZoneOfInterface.cpp
index 6e0b052..5a4daae 100644
--- a/src/Daemon/DBus/zone/getZoneOfInterface.cpp
+++ b/src/Daemon/DBus/zone/getZoneOfInterface.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getZoneOfInterface)
+ FIREWALLD_DBUS_METHOD(1,zone,getZoneOfInterface)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/getZoneOfSource.cpp
b/src/Daemon/DBus/zone/getZoneOfSource.cpp
index 5245ebf..56a2a7a 100644
--- a/src/Daemon/DBus/zone/getZoneOfSource.cpp
+++ b/src/Daemon/DBus/zone/getZoneOfSource.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getZoneOfSource)
+ FIREWALLD_DBUS_METHOD(1,zone,getZoneOfSource)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/getZones.cpp b/src/Daemon/DBus/zone/getZones.cpp
index dd23319..b335759 100644
--- a/src/Daemon/DBus/zone/getZones.cpp
+++ b/src/Daemon/DBus/zone/getZones.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getZones)
+ FIREWALLD_DBUS_METHOD(1,zone,getZones)
{
result.setTypeSignature("(as)");
UStringVector zone_names;
diff --git a/src/Daemon/DBus/zone/isImmutable.cpp b/src/Daemon/DBus/zone/isImmutable.cpp
index ed4f900..9137ba4 100644
--- a/src/Daemon/DBus/zone/isImmutable.cpp
+++ b/src/Daemon/DBus/zone/isImmutable.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(isImmutable)
+ FIREWALLD_DBUS_METHOD(1,zone,isImmutable)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/methods.decl b/src/Daemon/DBus/zone/methods.decl
index 230aa0a..3ab6c7c 100644
--- a/src/Daemon/DBus/zone/methods.decl
+++ b/src/Daemon/DBus/zone/methods.decl
@@ -1,49 +1,49 @@
-FIREWALLD_DBUS_METHOD(getActiveZones);
-FIREWALLD_DBUS_METHOD(getZones);
-
-FIREWALLD_DBUS_METHOD(addSource);
-FIREWALLD_DBUS_METHOD(removeSource);
-FIREWALLD_DBUS_METHOD(querySource);
-FIREWALLD_DBUS_METHOD(getSources);
-FIREWALLD_DBUS_METHOD(changeZoneOfSource);
-FIREWALLD_DBUS_METHOD(getZoneOfSource);
-
-FIREWALLD_DBUS_METHOD(addInterface);
-FIREWALLD_DBUS_METHOD(removeInterface);
-FIREWALLD_DBUS_METHOD(queryInterface);
-
-FIREWALLD_DBUS_METHOD(getInterfaces);
-FIREWALLD_DBUS_METHOD(getZoneOfInterface);
-FIREWALLD_DBUS_METHOD(changeZoneOfInterface);
-
-FIREWALLD_DBUS_METHOD(addService);
-FIREWALLD_DBUS_METHOD(removeService);
-FIREWALLD_DBUS_METHOD(queryService);
-FIREWALLD_DBUS_METHOD(getServices);
-
-FIREWALLD_DBUS_METHOD(addPort);
-FIREWALLD_DBUS_METHOD(removePort);
-FIREWALLD_DBUS_METHOD(queryPort);
-FIREWALLD_DBUS_METHOD(getPorts);
-
-FIREWALLD_DBUS_METHOD(addMasquerade);
-FIREWALLD_DBUS_METHOD(queryMasquerade);
-FIREWALLD_DBUS_METHOD(removeMasquerade);
-
-FIREWALLD_DBUS_METHOD(changeZone);
-FIREWALLD_DBUS_METHOD(isImmutable);
-
-FIREWALLD_DBUS_METHOD(addIcmpBlock);
-FIREWALLD_DBUS_METHOD(queryIcmpBlock);
-FIREWALLD_DBUS_METHOD(removeIcmpBlock);
-FIREWALLD_DBUS_METHOD(getIcmpBlocks);
-
-FIREWALLD_DBUS_METHOD(addForwardPort);
-FIREWALLD_DBUS_METHOD(removeForwardPort);
-FIREWALLD_DBUS_METHOD(queryForwardPort);
-FIREWALLD_DBUS_METHOD(getForwardPorts);
-
-FIREWALLD_DBUS_METHOD(addRichRule);
-FIREWALLD_DBUS_METHOD(removeRichRule);
-FIREWALLD_DBUS_METHOD(queryRichRule);
-FIREWALLD_DBUS_METHOD(getRichRules);
+FIREWALLD_DBUS_METHOD(1,zone,getActiveZones);
+FIREWALLD_DBUS_METHOD(1,zone,getZones);
+
+FIREWALLD_DBUS_METHOD(1,zone,addSource);
+FIREWALLD_DBUS_METHOD(1,zone,removeSource);
+FIREWALLD_DBUS_METHOD(1,zone,querySource);
+FIREWALLD_DBUS_METHOD(1,zone,getSources);
+FIREWALLD_DBUS_METHOD(1,zone,changeZoneOfSource);
+FIREWALLD_DBUS_METHOD(1,zone,getZoneOfSource);
+
+FIREWALLD_DBUS_METHOD(1,zone,addInterface);
+FIREWALLD_DBUS_METHOD(1,zone,removeInterface);
+FIREWALLD_DBUS_METHOD(1,zone,queryInterface);
+
+FIREWALLD_DBUS_METHOD(1,zone,getInterfaces);
+FIREWALLD_DBUS_METHOD(1,zone,getZoneOfInterface);
+FIREWALLD_DBUS_METHOD(1,zone,changeZoneOfInterface);
+
+FIREWALLD_DBUS_METHOD(1,zone,addService);
+FIREWALLD_DBUS_METHOD(1,zone,removeService);
+FIREWALLD_DBUS_METHOD(1,zone,queryService);
+FIREWALLD_DBUS_METHOD(1,zone,getServices);
+
+FIREWALLD_DBUS_METHOD(1,zone,addPort);
+FIREWALLD_DBUS_METHOD(1,zone,removePort);
+FIREWALLD_DBUS_METHOD(1,zone,queryPort);
+FIREWALLD_DBUS_METHOD(1,zone,getPorts);
+
+FIREWALLD_DBUS_METHOD(1,zone,addMasquerade);
+FIREWALLD_DBUS_METHOD(1,zone,queryMasquerade);
+FIREWALLD_DBUS_METHOD(1,zone,removeMasquerade);
+
+FIREWALLD_DBUS_METHOD(1,zone,changeZone);
+FIREWALLD_DBUS_METHOD(1,zone,isImmutable);
+
+FIREWALLD_DBUS_METHOD(1,zone,addIcmpBlock);
+FIREWALLD_DBUS_METHOD(1,zone,queryIcmpBlock);
+FIREWALLD_DBUS_METHOD(1,zone,removeIcmpBlock);
+FIREWALLD_DBUS_METHOD(1,zone,getIcmpBlocks);
+
+FIREWALLD_DBUS_METHOD(1,zone,addForwardPort);
+FIREWALLD_DBUS_METHOD(1,zone,removeForwardPort);
+FIREWALLD_DBUS_METHOD(1,zone,queryForwardPort);
+FIREWALLD_DBUS_METHOD(1,zone,getForwardPorts);
+
+FIREWALLD_DBUS_METHOD(1,zone,addRichRule);
+FIREWALLD_DBUS_METHOD(1,zone,removeRichRule);
+FIREWALLD_DBUS_METHOD(1,zone,queryRichRule);
+FIREWALLD_DBUS_METHOD(1,zone,getRichRules);
diff --git a/src/Daemon/DBus/zone/queryForwardPort.cpp
b/src/Daemon/DBus/zone/queryForwardPort.cpp
index 6c777f6..1cb4a9f 100644
--- a/src/Daemon/DBus/zone/queryForwardPort.cpp
+++ b/src/Daemon/DBus/zone/queryForwardPort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryForwardPort)
+ FIREWALLD_DBUS_METHOD(1,zone,queryForwardPort)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryIcmpBlock.cpp
b/src/Daemon/DBus/zone/queryIcmpBlock.cpp
index 549ad82..2566db5 100644
--- a/src/Daemon/DBus/zone/queryIcmpBlock.cpp
+++ b/src/Daemon/DBus/zone/queryIcmpBlock.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryIcmpBlock)
+ FIREWALLD_DBUS_METHOD(1,zone,queryIcmpBlock)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryInterface.cpp
b/src/Daemon/DBus/zone/queryInterface.cpp
index 9361199..424615e 100644
--- a/src/Daemon/DBus/zone/queryInterface.cpp
+++ b/src/Daemon/DBus/zone/queryInterface.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryInterface)
+ FIREWALLD_DBUS_METHOD(1,zone,queryInterface)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryMasquerade.cpp
b/src/Daemon/DBus/zone/queryMasquerade.cpp
index 8b95f86..95ee40d 100644
--- a/src/Daemon/DBus/zone/queryMasquerade.cpp
+++ b/src/Daemon/DBus/zone/queryMasquerade.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryMasquerade)
+ FIREWALLD_DBUS_METHOD(1,zone,queryMasquerade)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryPort.cpp b/src/Daemon/DBus/zone/queryPort.cpp
index 982ccf4..61b2d76 100644
--- a/src/Daemon/DBus/zone/queryPort.cpp
+++ b/src/Daemon/DBus/zone/queryPort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryPort)
+ FIREWALLD_DBUS_METHOD(1,zone,queryPort)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryRichRule.cpp
b/src/Daemon/DBus/zone/queryRichRule.cpp
index 58d3b04..c1798f6 100644
--- a/src/Daemon/DBus/zone/queryRichRule.cpp
+++ b/src/Daemon/DBus/zone/queryRichRule.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryRichRule)
+ FIREWALLD_DBUS_METHOD(1,zone,queryRichRule)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/queryService.cpp
b/src/Daemon/DBus/zone/queryService.cpp
index d097aae..edc2e40 100644
--- a/src/Daemon/DBus/zone/queryService.cpp
+++ b/src/Daemon/DBus/zone/queryService.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryService)
+ FIREWALLD_DBUS_METHOD(1,zone,queryService)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/querySource.cpp b/src/Daemon/DBus/zone/querySource.cpp
index 533e876..17e1782 100644
--- a/src/Daemon/DBus/zone/querySource.cpp
+++ b/src/Daemon/DBus/zone/querySource.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(querySource)
+ FIREWALLD_DBUS_METHOD(1,zone,querySource)
{
result.setTypeSignature("(b)");
diff --git a/src/Daemon/DBus/zone/removeForwardPort.cpp
b/src/Daemon/DBus/zone/removeForwardPort.cpp
index a36382a..eb8a684 100644
--- a/src/Daemon/DBus/zone/removeForwardPort.cpp
+++ b/src/Daemon/DBus/zone/removeForwardPort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeForwardPort)
+ FIREWALLD_DBUS_METHOD(1,zone,removeForwardPort)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeIcmpBlock.cpp
b/src/Daemon/DBus/zone/removeIcmpBlock.cpp
index 64b3833..cdaf380 100644
--- a/src/Daemon/DBus/zone/removeIcmpBlock.cpp
+++ b/src/Daemon/DBus/zone/removeIcmpBlock.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeIcmpBlock)
+ FIREWALLD_DBUS_METHOD(1,zone,removeIcmpBlock)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeInterface.cpp
b/src/Daemon/DBus/zone/removeInterface.cpp
index 062f342..eb7d7a9 100644
--- a/src/Daemon/DBus/zone/removeInterface.cpp
+++ b/src/Daemon/DBus/zone/removeInterface.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeInterface)
+ FIREWALLD_DBUS_METHOD(1,zone,removeInterface)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeMasquerade.cpp
b/src/Daemon/DBus/zone/removeMasquerade.cpp
index 02ce720..f35a515 100644
--- a/src/Daemon/DBus/zone/removeMasquerade.cpp
+++ b/src/Daemon/DBus/zone/removeMasquerade.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeMasquerade)
+ FIREWALLD_DBUS_METHOD(1,zone,removeMasquerade)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removePort.cpp b/src/Daemon/DBus/zone/removePort.cpp
index 5ae9d18..f629ef6 100644
--- a/src/Daemon/DBus/zone/removePort.cpp
+++ b/src/Daemon/DBus/zone/removePort.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removePort)
+ FIREWALLD_DBUS_METHOD(1,zone,removePort)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeRichRule.cpp
b/src/Daemon/DBus/zone/removeRichRule.cpp
index cdfc119..161d24e 100644
--- a/src/Daemon/DBus/zone/removeRichRule.cpp
+++ b/src/Daemon/DBus/zone/removeRichRule.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeRichRule)
+ FIREWALLD_DBUS_METHOD(1,zone,removeRichRule)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeService.cpp
b/src/Daemon/DBus/zone/removeService.cpp
index 227c2a7..f2a0d70 100644
--- a/src/Daemon/DBus/zone/removeService.cpp
+++ b/src/Daemon/DBus/zone/removeService.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeService)
+ FIREWALLD_DBUS_METHOD(1,zone,removeService)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/DBus/zone/removeSource.cpp
b/src/Daemon/DBus/zone/removeSource.cpp
index c2abbcf..ce1841e 100644
--- a/src/Daemon/DBus/zone/removeSource.cpp
+++ b/src/Daemon/DBus/zone/removeSource.cpp
@@ -22,7 +22,7 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(removeSource)
+ FIREWALLD_DBUS_METHOD(1,zone,removeSource)
{
result.setTypeSignature("(s)");
diff --git a/src/Daemon/Firewall/Backend.cpp b/src/Daemon/Firewall/Backend.cpp
index 0ece111..3d78dbb 100644
--- a/src/Daemon/Firewall/Backend.cpp
+++ b/src/Daemon/Firewall/Backend.cpp
@@ -25,9 +25,10 @@
namespace firewalld
{
- Backend::Backend(const UString& identifier)
+ Backend::Backend(const UString& identifier, const UString& dbus_interface)
{
_identifier = identifier;
+ _dbus_interface = dbus_interface;
_transaction_counter = 0;
}
@@ -40,6 +41,11 @@ namespace firewalld
return _identifier;
}
+ const UString& Backend::directDBusInterface() const
+ {
+ return _dbus_interface;
+ }
+
Pointer<Transaction> Backend::createTransaction()
{
std::lock_guard<std::mutex> backend_lock(_backend_mutex);
@@ -96,4 +102,11 @@ namespace firewalld
return _transactions.size();
}
+ void Backend::handleDBusMethod(const UString& name,
+ const DBusParameters& parameters,
+ DBusResultBuilder& result)
+ {
+ LOG(FATAL) << "BUG: virtual backend method handleDBusMethod not
implemented";
+ }
+
} /* namespace firewalld */
diff --git a/src/Daemon/Firewall/Backend.hpp b/src/Daemon/Firewall/Backend.hpp
index d227733..edd5d59 100644
--- a/src/Daemon/Firewall/Backend.hpp
+++ b/src/Daemon/Firewall/Backend.hpp
@@ -21,6 +21,7 @@
#include "Common/Types.hpp"
#include "Daemon/Firewall/Transaction.hpp"
+#include "Daemon/DBus.hpp"
#include <cstddef>
#include <mutex>
@@ -30,22 +31,27 @@ namespace firewalld
class Backend
{
public:
- Backend(const UString& identifier);
+ Backend(const UString& identifier, const UString& dbus_interface =
UString(""));
virtual ~Backend();
const UString& identifier() const;
+ const UString& directDBusInterface() const;
Pointer<Transaction> createTransaction();
void commitTransaction(Pointer<Transaction> transaction);
void removeTransaction(const String& identifier);
size_t countTransactions() const;
+ virtual void handleDBusMethod(const UString& name,
+ const DBusParameters& parameters,
+ DBusResultBuilder& result);
protected:
virtual void processOperation(const UStringVector& op, bool undo = false) = 0;
void removeTransactionUnlocked(const String& identifier);
private:
UString _identifier;
+ UString _dbus_interface;
PointerVector<Transaction> _transactions;
mutable std::mutex _backend_mutex;
uint64_t _transaction_counter;
diff --git a/src/Daemon/Firewall/Firewall.cpp b/src/Daemon/Firewall/Firewall.cpp
index 8083064..e8ff653 100644
--- a/src/Daemon/Firewall/Firewall.cpp
+++ b/src/Daemon/Firewall/Firewall.cpp
@@ -270,6 +270,15 @@ namespace firewalld
return _backend->countTransactions();
}
+ Backend& Firewall::backend()
+ {
+ if (_backend == nullptr) {
+ LOG(FATAL) << "BUG: Firewall backend not set!";
+ }
+
+ return *_backend;
+ }
+
void Firewall::processOperation(const UStringVector& op, bool undo)
{
// TODO
diff --git a/src/Daemon/Firewall/Firewall.hpp b/src/Daemon/Firewall/Firewall.hpp
index cdf6a7a..23c81bf 100644
--- a/src/Daemon/Firewall/Firewall.hpp
+++ b/src/Daemon/Firewall/Firewall.hpp
@@ -99,6 +99,8 @@ namespace firewalld
void removeTransaction(const String& identifier);
size_t countTransactions() const;
+ Backend& backend();
+
protected:
void processOperation(const UStringVector& op, bool undo = false);
diff --git a/src/Daemon/Firewall/Zone.cpp b/src/Daemon/Firewall/Zone.cpp
index c3fb97a..2b61bb2 100644
--- a/src/Daemon/Firewall/Zone.cpp
+++ b/src/Daemon/Firewall/Zone.cpp
@@ -89,12 +89,26 @@ namespace firewalld
UStringVector Zone::getAllInterfaceIdentifiers() const
{
- return UStringVector();
+ UStringVector interface_identifiers;
+
+ for(auto const& map_entry : _interface_map) {
+ Pointer<const Interface> interface = map_entry.second;
+ interface_identifiers.push_back(interface->identifier());
+ }
+
+ return std::move(interface_identifiers);
}
UStringVector Zone::getAllSourceIdentifiers() const
{
- return UStringVector();
+ UStringVector source_identifiers;
+
+ for(auto const& map_entry : _source_map) {
+ Pointer<const Source> source = map_entry.second;
+ source_identifiers.push_back(source->identifier());
+ }
+
+ return std::move(source_identifiers);
}
void Zone::addSource(Pointer<Source> source)
diff --git a/src/Daemon/FirewallD.cpp b/src/Daemon/FirewallD.cpp
index 25c600f..90afe66 100644
--- a/src/Daemon/FirewallD.cpp
+++ b/src/Daemon/FirewallD.cpp
@@ -71,7 +71,15 @@ namespace firewalld
// a statement that inserts an entry into the DBus method table.
//
#undef FIREWALLD_DBUS_METHOD
-#define FIREWALLD_DBUS_METHOD(name) _dbus_method_table[#name] =
&FirewallD::dbus_##name
+#define FIREWALLD_DBUS_METHOD_REGISTER0(key,sym) \
+ _dbus_method_table[key] = &FirewallD::dbus_##sym
+
+#define FIREWALLD_DBUS_METHOD_REGISTER(key,sym) \
+ FIREWALLD_DBUS_METHOD_REGISTER0(key,sym)
+
+#define FIREWALLD_DBUS_METHOD(v, i, n) \
+
FIREWALLD_DBUS_METHOD_REGISTER(FirewallD::dbusMethodKey(v,#i"",#n),FIREWALLD_DBUS_METHOD_SYM(v,i,n))
+
#include "DBus/methods.decl"
#include "DBus/direct/methods.decl"
#include "DBus/policies/methods.decl"
@@ -305,33 +313,40 @@ namespace firewalld
LOG(TRACE) << "DBus method call: method=" << name;
try {
- //
- // Lookup the method implementation in the DBus method table
- // and call it.
- //
- // Method implementations are registered in the constructor.
- //
- // XXX: So far all methods from all interfaces are stored together.
- // This could be a problem in case there are methods with the
- // same name but in different interfaces.
- // To fix this we have to either create separate tables and do
- // another lookup or use a composite key interface+name.
- //
- const DBusMethodPointer method = _dbus_method_table.at(name);
-
- // Make sure no other DBus method will be executed during execution
- // of this one.
- std::lock_guard<std::mutex> dbus_method_lock(_dbus_method_mutex);
-
- //
- // This will call the method implementation on our instance of the
- // FirewallD class
- //
- (*this.*method)(parameters, result);
- } catch(const std::out_of_range& ex) {
+ /*
+ * First check whether the method call should be handled by
+ * the firewall backend. The directDBusInterface() method
+ * returns the interface name owned by the backend. The `name'
+ * argument contains the name of the called method including
+ * the interface name, i.e.: "foo.bar.interface.method_name".
+ */
+ if (Glib::str_has_prefix(name, _fw.backend().directDBusInterface() +
".")) {
+ _fw.backend().handleDBusMethod(name, parameters, result);
+ } else {
+ /*
+ * Lookup the method implementation in the DBus method table
+ * and call it.
+ *
+ * Method implementations are registered in the constructor.
+ */
+ const DBusMethodPointer method = _dbus_method_table.at(name);
+ /*
+ * Make sure no other DBus method will be executed during execution
+ * of this one.
+ */
+ std::lock_guard<std::mutex> dbus_method_lock(_dbus_method_mutex);
+ /*
+ * This will call the method implementation on our instance of the
+ * FirewallD class
+ */
+ (*this.*method)(parameters, result);
+ }
+ }
+ catch(const std::out_of_range& ex) {
LOG(WARNING) << "Requested DBus method not found in the method table:
" << name;
result = DBusError("NotImplemented", "The " + name + "
method is currently not implented");
}
+
return;
}
@@ -348,4 +363,13 @@ namespace firewalld
return false;
}
+ const UString FirewallD::dbusMethodKey(int version, const UString& interface, const
UString& name)
+ {
+ if (interface != "") {
+ return numberToString(version) + "." + interface + "." + name;
+ } else {
+ return numberToString(version) + "." + name;
+ }
+ }
+
} /* namespace firewalld */
diff --git a/src/Daemon/FirewallD.hpp b/src/Daemon/FirewallD.hpp
index e4d0e16..fbec33a 100644
--- a/src/Daemon/FirewallD.hpp
+++ b/src/Daemon/FirewallD.hpp
@@ -173,13 +173,30 @@ namespace firewalld
DBusResultBuilder& result);
bool dbus_property_set(const UString& name,
const DBusParameters& value);
+ /**
+ * Construct a method table key of a method given a
+ * triple (version, inteface, name). This function is used
+ * when initializing the method table in the constructor.
+ * The resulting keys should resemble the last part of the
+ * interface + name string. The method handling code will
+ * remove the common part
+ */
+ static const UString dbusMethodKey(int version, const UString& interface, const
UString& name);
//
// Create a decralation for each DBus method defined
// in the methods.decl files. See a longer comment in
// firewalld.cpp in FirewallD::FirewallD() implementation.
//
-#define FIREWALLD_DBUS_METHOD(name) void dbus_##name(const DBusParameters&,
DBusResultBuilder&)
+#define FIREWALLD_DBUS_METHOD_SYM(v, i, n) i##_##n##v
+
+#define __FIREWALLD_DBUS_METHOD_DECL0(n) \
+ void dbus_##n(const DBusParameters&, DBusResultBuilder&)
+#define __FIREWALLD_DBUS_METHOD_DECL(n) \
+ __FIREWALLD_DBUS_METHOD_DECL0(n)
+#define FIREWALLD_DBUS_METHOD(v,i,n) \
+ __FIREWALLD_DBUS_METHOD_DECL(FIREWALLD_DBUS_METHOD_SYM(v,i,n))
+
#include "DBus/methods.decl"
#include "DBus/direct/methods.decl"
#include "DBus/policies/methods.decl"
@@ -214,6 +231,13 @@ namespace firewalld
* in the actual sources of the DBus methods implementations in
* the firewalld_dbus/ subdirectory (see the various *.cpp files)
*/
-#define FIREWALLD_DBUS_METHOD(name) void FirewallD::dbus_##name(const DBusParameters&
parameters, DBusResultBuilder& result)
+#define FIREWALLD_DBUS_METHOD_DEFINE0(n) \
+ void FirewallD::dbus_##n(const DBusParameters& parameters, DBusResultBuilder&
result)
+
+#define FIREWALLD_DBUS_METHOD_DEFINE(n) \
+ FIREWALLD_DBUS_METHOD_DEFINE0(n)
+
+#define FIREWALLD_DBUS_METHOD(v, i, n) \
+ FIREWALLD_DBUS_METHOD_DEFINE(FIREWALLD_DBUS_METHOD_SYM(v,i,n))
#endif /* _FIREWALLD_H_ */