[firewalld-recode] master: Zone interface cleanup (a02b75b)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit a02b75b97c81300881fade986930d3672b93d302
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:19:49 2014 +0200
Zone interface cleanup
- support empty zone name parameter
- corrected return values in many DBus zone methods
- implement Zone object flags using the FlagSet type
- use smart pointers instead of raw pointer for referencing
firewall objects
>---------------------------------------------------------------
Diff suppressed because of size. To see it, use:
git diff --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol ^a02b75b97c81300881fade986930d3672b93d302~1 a02b75b97c81300881fade986930d3672b93d302
9 years, 7 months
[firewalld-recode] master: Extended FirewallError implementation (d7c4433)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit d7c443380a6664632ecd8ebc42f1686380f9499d
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:15:56 2014 +0200
Extended FirewallError implementation
>---------------------------------------------------------------
src/Daemon/Exceptions.hpp | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/Daemon/Exceptions.hpp b/src/Daemon/Exceptions.hpp
index 8f93cdf..d0122c6 100644
--- a/src/Daemon/Exceptions.hpp
+++ b/src/Daemon/Exceptions.hpp
@@ -57,9 +57,18 @@ namespace firewalld
class FirewallError : public std::runtime_error
{
public:
- FirewallError()
- : std::runtime_error("Firewall error")
+ FirewallError(const UString& name, const UString& message = UString())
+ : std::runtime_error("Firewall error"),
+ _name(name),
+ _message(message)
{}
+
+ const UString& name() const { return _name; }
+ const UString& message() const { return _message; }
+
+ private:
+ const UString _name;
+ const UString _message;
};
} /* namespace firewalld */
9 years, 7 months
[firewalld-recode] master: Added UniquePointer type and PointerMapOp::findOne method (dc7cff8)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit dc7cff804d56b5fe19e29e4b4c572f051f8145f7
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:14:53 2014 +0200
Added UniquePointer type and PointerMapOp::findOne method
>---------------------------------------------------------------
src/Common/Types.hpp | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/src/Common/Types.hpp b/src/Common/Types.hpp
index e064804..999ea78 100644
--- a/src/Common/Types.hpp
+++ b/src/Common/Types.hpp
@@ -69,6 +69,26 @@ namespace firewalld
return std::make_shared<pointer_type>(std::forward<Args>(args)...);
}
+ template<typename pointer_type, typename... Args>
+ static inline UniquePointer<pointer_type> makeUniquePointer(Args&&... args)
+ {
+ return std::move(std::unique_ptr<pointer_type>(new pointer_type(std::forward<Args>(args)...)));
+ }
+
+ namespace PointerMapOp {
+ template<typename key_type, typename pointer_type>
+ Pointer<pointer_type> findOne(const PointerMap<key_type, pointer_type>& map,
+ const key_type& key)
+ {
+ auto it = map.find(key);
+ if (it == map.end()) {
+ return Pointer<pointer_type>(nullptr);
+ } else {
+ return it->second;
+ }
+ }
+ }
+
// Flag set
// based on https://stackoverflow.com/a/4226975
template <typename enum_type>
9 years, 7 months
[firewalld-recode] master: Added DBusError constructor from FirewallError (fbd6eab)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit fbd6eab696db6a1a6ff43c43f97479098157381f
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:12:03 2014 +0200
Added DBusError constructor from FirewallError
>---------------------------------------------------------------
src/Daemon/DBus.hpp | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/src/Daemon/DBus.hpp b/src/Daemon/DBus.hpp
index d38cb7e..dde5ec7 100644
--- a/src/Daemon/DBus.hpp
+++ b/src/Daemon/DBus.hpp
@@ -21,6 +21,7 @@
#include "Common/Types.hpp"
#include "Common/Logging.hpp"
+#include "Daemon/Exceptions.hpp"
#include <glibmm.h>
#include <giomm.h>
@@ -71,6 +72,12 @@ namespace firewalld
_message = error_message;
}
+ DBusError(const FirewallError& ex)
+ {
+ _name = ex.name();
+ _message = ex.message();
+ }
+
const UString& name() const
{
return _name;
9 years, 7 months
[firewalld-recode] master: Added FlagSet type (f7829c0)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit f7829c08f9d920017ed49f5cdf22dc0c6a6c5c5d
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Wed Sep 24 14:13:49 2014 +0200
Added FlagSet type
>---------------------------------------------------------------
src/Common/Types.hpp | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 109 insertions(+), 0 deletions(-)
diff --git a/src/Common/Types.hpp b/src/Common/Types.hpp
index b007503..e064804 100644
--- a/src/Common/Types.hpp
+++ b/src/Common/Types.hpp
@@ -69,6 +69,115 @@ namespace firewalld
return std::make_shared<pointer_type>(std::forward<Args>(args)...);
}
+ // Flag set
+ // based on https://stackoverflow.com/a/4226975
+ template <typename enum_type>
+ class FlagSet
+ {
+ public:
+ typedef decltype(enum_type()|enum_type()) store_type;
+
+ // Default constructor (all 0s)
+ FlagSet() : FlagSet(store_type(0))
+ {
+ }
+
+ // Initializer list constructor
+ FlagSet(const std::initializer_list<enum_type>& initList)
+ {
+ _flags = std::accumulate(initList.begin(), initList.end(), store_type(0),
+ [](enum_type x, enum_type y)
+ {
+ return x | y;
+ });
+ }
+
+ // Value constructor
+ explicit FlagSet(store_type value) : _flags(value)
+ {
+ }
+
+ // Explicit conversion operator
+ operator store_type() const
+ {
+ return _flags;
+ }
+
+ FlagSet& set()
+ {
+ _flags = ~store_type(0);
+ return *this;
+ }
+
+ FlagSet& set(enum_type flag, bool val = true)
+ {
+ _flags = (val ? (_flags | flag) : (_flags & ~flag));
+ return *this;
+ }
+
+ FlagSet& reset()
+ {
+ _flags = store_type(0);
+ return *this;
+ }
+
+ FlagSet& unset(enum_type flag)
+ {
+ _flags &= ~flag;
+ return *this;
+ }
+
+ FlagSet& flip()
+ {
+ _flags = ~_flags;
+ return *this;
+ }
+
+ FlagSet& flip(enum_type flag)
+ {
+ _flags ^= flag;
+ return *this;
+ }
+
+ size_t count() const
+ {
+ // http://www-graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKerni...
+
+ store_type bits = _flags;
+ size_t total = 0;
+ for (; bits != 0; ++total)
+ {
+ bits &= bits - 1; // clear the least significant bit set
+ }
+ return total;
+ }
+
+ constexpr size_t size() const
+ {
+ return sizeof(enum_type)*8;
+ }
+
+ bool test(enum_type flag) const
+ {
+ return (_flags & flag) > 0;
+ }
+
+ private:
+ store_type _flags;
+ };
+
+ template<typename enum_type>
+ FlagSet<enum_type> operator & (const FlagSet<enum_type>& lhs, const FlagSet<enum_type>& rhs)
+ {
+ return FlagSet<enum_type>(FlagSet<enum_type>::store_type(lhs) & FlagSet<enum_type>::store_type(rhs));
+ }
+
+ template<typename enum_type>
+ FlagSet<enum_type> operator | (const FlagSet<enum_type>& lhs, const FlagSet<enum_type>& rhs)
+ {
+ return FlagSet<enum_type>(FlagSet<enum_type>::store_type(lhs) | FlagSet<enum_type>::store_type(rhs));
+ }
+
} /* namespace firewalld */
#endif /* _FIREWALLD_TYPES_H_ */
9 years, 7 months
[firewalld-recode] master: Add missing definedICMPTypes() (592db0c)
by jpopelka@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit 592db0cb6df359cc1380f27ba8fca8da5cb2839a
Author: Jiri Popelka <jpopelka(a)redhat.com>
Date: Tue Sep 23 18:04:39 2014 +0200
Add missing definedICMPTypes()
>---------------------------------------------------------------
src/Daemon/FirewallD.hpp | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/Daemon/FirewallD.hpp b/src/Daemon/FirewallD.hpp
index 5833b11..f618d56 100644
--- a/src/Daemon/FirewallD.hpp
+++ b/src/Daemon/FirewallD.hpp
@@ -46,8 +46,9 @@ namespace firewalld
bool panicMode() const { return _panic_mode; }
void setPanicMode(bool panic_mode);
- const UStringKeyMap<Service*> definedServices() const { return _defined_services; }
- const UStringKeyMap<Zone*> definedZones() const { return _defined_zones; }
+ const UStringKeyMap<Service*>& definedServices() const { return _defined_services; }
+ const UStringKeyMap<Zone*>& definedZones() const { return _defined_zones; }
+ const UStringKeyMap<bool>& definedICMPTypes() const { return _defined_icmptypes; }
Service* lookupService(const UString& name) const;
Zone* lookupZone(const UString& name) const;
9 years, 7 months
[firewalld-recode] master: Added missing DBus core interface methods (d52b082)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit d52b0822239aa8aae5eb816d4da0f42e74e0e2b7
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Tue Sep 23 13:42:44 2014 +0200
Added missing DBus core interface methods
>---------------------------------------------------------------
.../{zone/isImmutable.cpp => completeReload.cpp} | 22 +++++------------
.../queryMasquerade.cpp => disablePanicMode.cpp} | 22 ++++++++----------
.../queryMasquerade.cpp => enablePanicMode.cpp} | 22 ++++++++----------
...{getDefaultZone.cpp => getIcmpTypeSettings.cpp} | 10 +++++--
.../{getDefaultZone.cpp => getServiceSettings.cpp} | 10 +++++--
.../{getDefaultZone.cpp => getZoneSettings.cpp} | 10 +++++--
.../{zone/getRichRules.cpp => listIcmpTypes.cpp} | 16 +++++--------
.../DBus/{zone/getZones.cpp => listServices.cpp} | 12 +++++-----
src/Daemon/DBus/methods.decl | 11 +++++++++
.../{getDefaultZone.cpp => queryPanicMode.cpp} | 7 +++--
.../{zone/addIcmpBlock.cpp => setDefaultZone.cpp} | 24 ++++++++-----------
11 files changed, 85 insertions(+), 81 deletions(-)
diff --git a/src/Daemon/DBus/zone/isImmutable.cpp b/src/Daemon/DBus/completeReload.cpp
similarity index 76%
copy from src/Daemon/DBus/zone/isImmutable.cpp
copy to src/Daemon/DBus/completeReload.cpp
index b231fd4..52de214 100644
--- a/src/Daemon/DBus/zone/isImmutable.cpp
+++ b/src/Daemon/DBus/completeReload.cpp
@@ -22,22 +22,14 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(isImmutable)
+ FIREWALLD_DBUS_METHOD(completeReload)
{
- result.setTypeSignature("(b)");
-
- UString zone_name;
-
- parameters.get(0, zone_name);
-
- try {
- Zone* zone = _fw.getZone(zone_name);
- result = zone->isImmutable();
- }
- catch(...) {
- result = false;
- }
-
+ result.setTypeSignature("()");
+ // Shutdown DBus and stop the Glib main loop
+ // This will result in terminating the .run() method
+ // in the main loop (main.cpp) and a complete reload
+ // of the FirewallD instance.
+ quit();
return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/zone/queryMasquerade.cpp b/src/Daemon/DBus/disablePanicMode.cpp
similarity index 74%
copy from src/Daemon/DBus/zone/queryMasquerade.cpp
copy to src/Daemon/DBus/disablePanicMode.cpp
index 8610fb3..fbe90fb 100644
--- a/src/Daemon/DBus/zone/queryMasquerade.cpp
+++ b/src/Daemon/DBus/disablePanicMode.cpp
@@ -22,20 +22,18 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryMasquerade)
+ FIREWALLD_DBUS_METHOD(disablePanicMode)
{
- result.setTypeSignature("(b)");
+ result.setTypeSignature("()");
- UString zone_name;
-
- parameters.get(0, zone_name);
-
- try {
- Zone* zone = _fw.getZone(zone_name);
- result = zone->queryMasquerade();
- }
- catch(...) {
- result = false;
+ if (panicMode()) {
+ try {
+ setPanicMode(false);
+ } catch(...) {
+ result = DBusError("COMMAND_FAILED", "Unable to disable panic mode");
+ }
+ } else {
+ result = DBusError("NOT_ENABLED", "Panic mode not enabled");
}
return;
diff --git a/src/Daemon/DBus/zone/queryMasquerade.cpp b/src/Daemon/DBus/enablePanicMode.cpp
similarity index 73%
copy from src/Daemon/DBus/zone/queryMasquerade.cpp
copy to src/Daemon/DBus/enablePanicMode.cpp
index 8610fb3..a7e37df 100644
--- a/src/Daemon/DBus/zone/queryMasquerade.cpp
+++ b/src/Daemon/DBus/enablePanicMode.cpp
@@ -22,20 +22,18 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(queryMasquerade)
+ FIREWALLD_DBUS_METHOD(enablePanicMode)
{
- result.setTypeSignature("(b)");
+ result.setTypeSignature("()");
- UString zone_name;
-
- parameters.get(0, zone_name);
-
- try {
- Zone* zone = _fw.getZone(zone_name);
- result = zone->queryMasquerade();
- }
- catch(...) {
- result = false;
+ if (!panicMode()) {
+ try {
+ setPanicMode(true);
+ } catch(...) {
+ result = DBusError("COMMAND_FAILED", "Failed to enable panic mode");
+ }
+ } else {
+ result = DBusError("ALREADY_ENABLED", "Panic mode already enabled");
}
return;
diff --git a/src/Daemon/DBus/getDefaultZone.cpp b/src/Daemon/DBus/getIcmpTypeSettings.cpp
similarity index 85%
copy from src/Daemon/DBus/getDefaultZone.cpp
copy to src/Daemon/DBus/getIcmpTypeSettings.cpp
index 3ab2483..b584d54 100644
--- a/src/Daemon/DBus/getDefaultZone.cpp
+++ b/src/Daemon/DBus/getIcmpTypeSettings.cpp
@@ -22,9 +22,13 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getDefaultZone)
+ FIREWALLD_DBUS_METHOD(getIcmpTypeSettings)
{
- result.setTypeSignature("(s)");
- result = _fw.getDefaultZoneName();
+ result.setTypeSignature("(sssas)");
+
+ UString icmptype;
+ parameters.get(0, icmptype);
+
+ return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/getDefaultZone.cpp b/src/Daemon/DBus/getServiceSettings.cpp
similarity index 84%
copy from src/Daemon/DBus/getDefaultZone.cpp
copy to src/Daemon/DBus/getServiceSettings.cpp
index 3ab2483..2c809a2 100644
--- a/src/Daemon/DBus/getDefaultZone.cpp
+++ b/src/Daemon/DBus/getServiceSettings.cpp
@@ -22,9 +22,13 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getDefaultZone)
+ FIREWALLD_DBUS_METHOD(getServiceSettings)
{
- result.setTypeSignature("(s)");
- result = _fw.getDefaultZoneName();
+ result.setTypeSignature("(sssa(ss)asa{ss})");
+
+ UString service;
+ parameters.get(0, service);
+
+ return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/getDefaultZone.cpp b/src/Daemon/DBus/getZoneSettings.cpp
similarity index 84%
copy from src/Daemon/DBus/getDefaultZone.cpp
copy to src/Daemon/DBus/getZoneSettings.cpp
index 3ab2483..ef616b0 100644
--- a/src/Daemon/DBus/getDefaultZone.cpp
+++ b/src/Daemon/DBus/getZoneSettings.cpp
@@ -22,9 +22,13 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getDefaultZone)
+ FIREWALLD_DBUS_METHOD(getZoneSettings)
{
- result.setTypeSignature("(s)");
- result = _fw.getDefaultZoneName();
+ result.setTypeSignature("(sssbsasa(ss)asba(ssss)asasas)");
+
+ UString zone;
+ parameters.get(0, zone);
+
+ return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/zone/getRichRules.cpp b/src/Daemon/DBus/listIcmpTypes.cpp
similarity index 80%
copy from src/Daemon/DBus/zone/getRichRules.cpp
copy to src/Daemon/DBus/listIcmpTypes.cpp
index 6752987..45a1c07 100644
--- a/src/Daemon/DBus/zone/getRichRules.cpp
+++ b/src/Daemon/DBus/listIcmpTypes.cpp
@@ -22,21 +22,17 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getRichRules)
+ FIREWALLD_DBUS_METHOD(listIcmpTypes)
{
result.setTypeSignature("(as)");
+ UStringVector icmptypes;
- UString zone_name;
-
- parameters.get(0, zone_name);
-
- try {
- result = UStringVector();
- }
- catch(...) {
- result = UStringVector();
+ for (auto const& map_entry : definedICMPTypes()) {
+ const UString& icmptype = map_entry.first;
+ icmptypes.push_back(icmptype);
}
+ result = icmptypes;
return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/zone/getZones.cpp b/src/Daemon/DBus/listServices.cpp
similarity index 79%
copy from src/Daemon/DBus/zone/getZones.cpp
copy to src/Daemon/DBus/listServices.cpp
index dd23319..eeebc41 100644
--- a/src/Daemon/DBus/zone/getZones.cpp
+++ b/src/Daemon/DBus/listServices.cpp
@@ -22,17 +22,17 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getZones)
+ FIREWALLD_DBUS_METHOD(listServices)
{
result.setTypeSignature("(as)");
- UStringVector zone_names;
+ UStringVector service_names;
- for (auto const& map_entry : definedZones()) {
- const UString& zone_name = map_entry.first;
- zone_names.push_back(zone_name);
+ for (auto const& map_entry : definedServices()) {
+ const UString& service_name = map_entry.first;
+ service_names.push_back(service_name);
}
- result = zone_names;
+ result = service_names;
return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/methods.decl b/src/Daemon/DBus/methods.decl
index b0f663f..0643775 100644
--- a/src/Daemon/DBus/methods.decl
+++ b/src/Daemon/DBus/methods.decl
@@ -1,2 +1,13 @@
+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(reload);
+FIREWALLD_DBUS_METHOD(getIcmpTypeSettings);
+FIREWALLD_DBUS_METHOD(getServiceSettings);
+FIREWALLD_DBUS_METHOD(getZoneSettings);
diff --git a/src/Daemon/DBus/getDefaultZone.cpp b/src/Daemon/DBus/queryPanicMode.cpp
similarity index 88%
copy from src/Daemon/DBus/getDefaultZone.cpp
copy to src/Daemon/DBus/queryPanicMode.cpp
index 3ab2483..0e5abdb 100644
--- a/src/Daemon/DBus/getDefaultZone.cpp
+++ b/src/Daemon/DBus/queryPanicMode.cpp
@@ -22,9 +22,10 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(getDefaultZone)
+ FIREWALLD_DBUS_METHOD(queryPanicMode)
{
- result.setTypeSignature("(s)");
- result = _fw.getDefaultZoneName();
+ result.setTypeSignature("(b)");
+ result = panicMode();
+ return;
}
} /* namespace firewalld */
diff --git a/src/Daemon/DBus/zone/addIcmpBlock.cpp b/src/Daemon/DBus/setDefaultZone.cpp
similarity index 72%
copy from src/Daemon/DBus/zone/addIcmpBlock.cpp
copy to src/Daemon/DBus/setDefaultZone.cpp
index 8e0a542..663f32a 100644
--- a/src/Daemon/DBus/zone/addIcmpBlock.cpp
+++ b/src/Daemon/DBus/setDefaultZone.cpp
@@ -22,25 +22,21 @@
namespace firewalld
{
- FIREWALLD_DBUS_METHOD(addIcmpBlock)
+ FIREWALLD_DBUS_METHOD(setDefaultZone)
{
- result.setTypeSignature("(s)");
+ result.setTypeSignature("()");
UString zone_name;
- UString icmp_type;
- int timeout;
-
parameters.get(0, zone_name);
- parameters.get(1, icmp_type);
- parameters.get(2, timeout);
- try {
- Zone* zone = _fw.getZone(zone_name);
- zone->addICMPBlock(icmp_type);
- result = UString("success");
- }
- catch(...) {
- result = UString("failure");
+ if (_fw.getDefaultZoneName() != zone_name) {
+ try {
+ _fw.setDefaultZoneName(zone_name);
+ } catch(...) {
+ result = DBusError("COMMAND_FAILED", "Unable to set the default zone");
+ }
+ } else {
+ result = DBusError("ZONE_ALREADY_SET", "Zone is already the default zone");
}
return;
9 years, 7 months
[firewalld-recode] master: Added smart pointer types (1990818)
by mildew@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit 19908186782f479bfa276151420fb1f54235e7c4
Author: Daniel Kopecek <dkopecek(a)redhat.com>
Date: Tue Sep 23 13:02:11 2014 +0200
Added smart pointer types
>---------------------------------------------------------------
src/Common/Types.hpp | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/src/Common/Types.hpp b/src/Common/Types.hpp
index b75cd59..b007503 100644
--- a/src/Common/Types.hpp
+++ b/src/Common/Types.hpp
@@ -24,6 +24,7 @@
#include <vector>
#include <list>
#include <map>
+#include <memory>
namespace firewalld
{
@@ -49,6 +50,25 @@ namespace firewalld
template<typename value_type>
using UStringKeyMap = std::map<UString, value_type>;
+ // Smart Pointers
+ template<typename pointer_type>
+ using Pointer = std::shared_ptr<pointer_type>;
+
+ template<typename pointer_type>
+ using UniquePointer = std::unique_ptr<pointer_type>;
+
+ template<typename pointer_type>
+ using PointerVector = std::vector<Pointer<pointer_type> >;
+
+ template<typename key_type, typename pointer_type>
+ using PointerMap = std::map<key_type, Pointer<pointer_type> >;
+
+ template<typename pointer_type, typename... Args>
+ static inline Pointer<pointer_type> makePointer(Args&&... args)
+ {
+ return std::make_shared<pointer_type>(std::forward<Args>(args)...);
+ }
+
} /* namespace firewalld */
#endif /* _FIREWALLD_TYPES_H_ */
9 years, 7 months
[firewalld-recode] master: Some getX methods can return reference. (e7cbfa8)
by jpopelka@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit e7cbfa8a303e1c9ddde961962d33115f47b27c3c
Author: Jiri Popelka <jpopelka(a)redhat.com>
Date: Tue Sep 23 12:38:28 2014 +0200
Some getX methods can return reference.
If the method does not have to generate new container
it can simply return a reference to inner container.
>---------------------------------------------------------------
src/Daemon/Firewall/Zone.cpp | 30 +++++++++++-------------------
src/Daemon/Firewall/Zone.hpp | 10 +++++-----
2 files changed, 16 insertions(+), 24 deletions(-)
diff --git a/src/Daemon/Firewall/Zone.cpp b/src/Daemon/Firewall/Zone.cpp
index ab176e5..31e4756 100644
--- a/src/Daemon/Firewall/Zone.cpp
+++ b/src/Daemon/Firewall/Zone.cpp
@@ -90,10 +90,9 @@ namespace firewalld
return (source_it != _source_map.end() ? source_it->second : nullptr);
}
- UStringKeyMap<Source*> Zone::getSources() const
+ const UStringKeyMap<Source*>& Zone::getSources() const
{
- UStringKeyMap<Source*> sources = _source_map;
- return sources;
+ return _source_map;
}
void Zone::addInterface(Interface* interface)
@@ -121,10 +120,9 @@ namespace firewalld
return (interface_it != _interface_map.end() ? interface_it->second : nullptr);
}
- UStringKeyMap<Interface*> Zone::getInterfaces() const
+ const UStringKeyMap<Interface*>& Zone::getInterfaces() const
{
- UStringKeyMap<Interface*> interfaces = _interface_map;
- return interfaces;
+ return _interface_map;
}
void Zone::addService(Service *service)
@@ -150,10 +148,9 @@ namespace firewalld
return (service_it != _service_map.end() ? service_it->second : nullptr);
}
- UStringKeyMap<Service*> Zone::getServices() const
+ const UStringKeyMap<Service*>& Zone::getServices() const
{
- UStringKeyMap<Service*> services = _service_map;
- return services;
+ return _service_map;
}
void Zone::addPort(Port* port)
@@ -224,19 +221,15 @@ namespace firewalld
return retval;
}
- std::map<Port::Range,Port*> Zone::getPorts(Port::Protocol protocol) const
+ const std::map<Port::Range,Port*>& Zone::getPorts(Port::Protocol protocol) const
{
- std::map<Port::Range,Port*> port_map;
switch(protocol) {
case Port::Protocol::TCP:
- port_map = _tcp_port_map;
- break;
+ return _tcp_port_map;
case Port::Protocol::UDP:
- port_map = _udp_port_map;
- break;
+ return _udp_port_map;
default:
throw std::runtime_error("Invalid protocol");
- return port_map;
}
}
@@ -299,10 +292,9 @@ namespace firewalld
return (port_forward_it != _port_forward_map.end());
}
- std::map<Port::Range,PortForward*> Zone::getForwardPorts() const
+ const std::map<Port::Range,PortForward*>& Zone::getForwardPorts() const
{
- std::map<Port::Range,PortForward*> port_fw_map = _port_forward_map;
- return port_fw_map;
+ return _port_forward_map;
}
void Zone::initFromXML(const String& filepath)
diff --git a/src/Daemon/Firewall/Zone.hpp b/src/Daemon/Firewall/Zone.hpp
index af255d2..94eb1eb 100644
--- a/src/Daemon/Firewall/Zone.hpp
+++ b/src/Daemon/Firewall/Zone.hpp
@@ -50,24 +50,24 @@ namespace firewalld
bool removeSource(Source *source);
bool querySource(Source *source) const;
Source *getSource(const UString& source_spec) const;
- UStringKeyMap<Source*> getSources() const;
+ const UStringKeyMap<Source*>& getSources() const;
void addInterface(Interface* interface);
bool removeInterface(Interface* interface);
bool queryInterface(Interface* interface) const;
Interface* getInterface(const UString& source_spec) const;
- UStringKeyMap<Interface*> getInterfaces() const;
+ const UStringKeyMap<Interface*>& getInterfaces() const;
void addService(Service *service);
bool removeService(Service *service);
bool queryService(Service *service) const;
Service *getService(const UString& service_identifier) const;
- UStringKeyMap<Service*> getServices() const;
+ const UStringKeyMap<Service*>& getServices() const;
void addPort(Port* port);
bool removePort(Port* port);
bool queryPort(Port* port) const;
- std::map<Port::Range,Port*> getPorts(Port::Protocol protocol) const;
+ const std::map<Port::Range,Port*>& getPorts(Port::Protocol protocol) const;
void setMasquerade(bool state);
bool queryMasquerade() const;
@@ -82,7 +82,7 @@ namespace firewalld
void addPortForward(PortForward* port_forward);
bool removePortForward(PortForward* port_forward);
bool queryPortForward(PortForward* port_forward) const;
- std::map<Port::Range,PortForward*> getForwardPorts() const;
+ const std::map<Port::Range,PortForward*>& getForwardPorts() const;
void initFromXML(const String& filepath);
9 years, 7 months
[firewalld-recode] master: Make all get/query methods const. (0d7a219)
by jpopelka@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/firewalld-recode.git
On branch : master
>---------------------------------------------------------------
commit 0d7a21988a10fcfdf543469770aa0559bc6ffae2
Author: Jiri Popelka <jpopelka(a)redhat.com>
Date: Tue Sep 23 11:57:05 2014 +0200
Make all get/query methods const.
>---------------------------------------------------------------
src/Daemon/Firewall/Firewall.cpp | 20 ++++++++++----------
src/Daemon/Firewall/Firewall.hpp | 22 +++++++++++-----------
src/Daemon/Firewall/Zone.cpp | 18 +++++++++---------
src/Daemon/Firewall/Zone.hpp | 18 +++++++++---------
4 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/src/Daemon/Firewall/Firewall.cpp b/src/Daemon/Firewall/Firewall.cpp
index 251a4e2..e36efdd 100644
--- a/src/Daemon/Firewall/Firewall.cpp
+++ b/src/Daemon/Firewall/Firewall.cpp
@@ -143,7 +143,7 @@ namespace firewalld
return (_zone_map.find(name) != _zone_map.end());
}
- Zone* Firewall::getZone(const UString& name)
+ Zone* Firewall::getZone(const UString& name) const
{
auto zone_it = _zone_map.find(name);
if (zone_it == _zone_map.end()) {
@@ -153,7 +153,7 @@ namespace firewalld
return zone_it->second;
}
- void Firewall::getAllZoneNames(UStringVector& names)
+ void Firewall::getAllZoneNames(UStringVector& names) const
{
for (auto const& map_entry : _zone_map) {
const Zone* zone = map_entry.second;
@@ -161,7 +161,7 @@ namespace firewalld
}
}
- void Firewall::getActiveZoneNames(UStringVector& names)
+ void Firewall::getActiveZoneNames(UStringVector& names) const
{
for (auto const& map_entry : _zone_map) {
const Zone* zone = map_entry.second;
@@ -171,7 +171,7 @@ namespace firewalld
}
}
- Source* Firewall::getSource(const UString& source_spec)
+ Source* Firewall::getSource(const UString& source_spec) const
{
for (auto& map_entry : _zone_map) {
Zone* zone = map_entry.second;
@@ -183,7 +183,7 @@ namespace firewalld
return nullptr;
}
- Interface* Firewall::getInterface(const UString& interface_identifier)
+ Interface* Firewall::getInterface(const UString& interface_identifier) const
{
for (auto& map_entry : _zone_map) {
Zone* zone = map_entry.second;
@@ -197,7 +197,7 @@ namespace firewalld
///////////////////////////
- const UString& Firewall::getDefaultZoneName()
+ const UString& Firewall::getDefaultZoneName() const
{
Glib::Threads::Mutex::Lock lock(_mutex);
return _default_zone;
@@ -210,7 +210,7 @@ namespace firewalld
return true;
}
- UStringVector Firewall::getAllZoneNames()
+ UStringVector Firewall::getAllZoneNames() const
{
Glib::Threads::Mutex::Lock lock(_mutex);
UStringVector keys;
@@ -227,7 +227,7 @@ namespace firewalld
return true;
}
- UStringVector Firewall::getActiveZoneNames()
+ UStringVector Firewall::getActiveZoneNames() const
{
Glib::Threads::Mutex::Lock lock(_mutex);
UStringVector active_zones;
@@ -235,12 +235,12 @@ namespace firewalld
return active_zones;
}
- UStringVector Firewall::getZoneInterfaces(const UString& zone_name)
+ UStringVector Firewall::getZoneInterfaces(const UString& zone_name) const
{
Glib::Threads::Mutex::Lock lock(_mutex);
}
- UStringVector Firewall::getZoneSources(const UString& zone_name)
+ UStringVector Firewall::getZoneSources(const UString& zone_name) const
{
Glib::Threads::Mutex::Lock lock(_mutex);
}
diff --git a/src/Daemon/Firewall/Firewall.hpp b/src/Daemon/Firewall/Firewall.hpp
index 4dddcdb..d0d2723 100644
--- a/src/Daemon/Firewall/Firewall.hpp
+++ b/src/Daemon/Firewall/Firewall.hpp
@@ -66,23 +66,23 @@ namespace firewalld
// Zone interface
//
bool zoneExists(const UString& name) const;
- Zone *getZone(const UString& name);
- void getAllZoneNames(UStringVector& names);
- void getActiveZoneNames(UStringVector& names);
+ Zone *getZone(const UString& name) const;
+ void getAllZoneNames(UStringVector& names) const;
+ void getActiveZoneNames(UStringVector& names) const;
- Source *getSource(const UString& source_spec);
+ Source *getSource(const UString& source_spec) const;
- Interface* getInterface(const UString& interface_identifier);
+ Interface* getInterface(const UString& interface_identifier) const;
/// REFACTORING ///
- const UString& getDefaultZoneName();
+ const UString& getDefaultZoneName() const;
bool setDefaultZoneName(const UString& name);
- UStringVector getAllZoneNames();
+ UStringVector getAllZoneNames() const;
bool addZoneName(const UString&);
- UStringVector getActiveZoneNames();
- UStringVector getZoneInterfaces(const UString& zone_name);
- UStringVector getZoneSources(const UString& zone_name);
+ UStringVector getActiveZoneNames() const;
+ UStringVector getZoneInterfaces(const UString& zone_name) const;
+ UStringVector getZoneSources(const UString& zone_name) const;
void addInterfaceToZone(const UString& zone_name, const UString& interface);
void addSourceToZone(const UString& zone_name, const UString& source);
@@ -90,7 +90,7 @@ namespace firewalld
UString getZoneOfSource(const UString& source) const;
private:
- Glib::Threads::Mutex _mutex;
+ mutable Glib::Threads::Mutex _mutex;
UString _default_zone;
UStringKeyMap<Zone*> _zone_map;
diff --git a/src/Daemon/Firewall/Zone.cpp b/src/Daemon/Firewall/Zone.cpp
index 39e38e4..ab176e5 100644
--- a/src/Daemon/Firewall/Zone.cpp
+++ b/src/Daemon/Firewall/Zone.cpp
@@ -77,13 +77,13 @@ namespace firewalld
return (_source_map.erase(source->identifier()) == 1);
}
- bool Zone::querySource(Source *source)
+ bool Zone::querySource(Source *source) const
{
auto const& source_it = _source_map.find(source->identifier());
return (source_it != _source_map.end());
}
- Source* Zone::getSource(const UString& source_spec)
+ Source* Zone::getSource(const UString& source_spec) const
{
Source* query_source = new Source(source_spec);
auto const& source_it = _source_map.find(query_source->identifier());
@@ -109,13 +109,13 @@ namespace firewalld
return (_interface_map.erase(interface->identifier()) == 1);
}
- bool Zone::queryInterface(Interface* interface)
+ bool Zone::queryInterface(Interface* interface) const
{
auto const& interface_it = _interface_map.find(interface->identifier());
return (interface_it != _interface_map.end());
}
- Interface* Zone::getInterface(const UString& interface_identifier)
+ Interface* Zone::getInterface(const UString& interface_identifier) const
{
auto const& interface_it = _interface_map.find(interface_identifier);
return (interface_it != _interface_map.end() ? interface_it->second : nullptr);
@@ -138,13 +138,13 @@ namespace firewalld
return (_service_map.erase(service->identifier()) == 1);
}
- bool Zone::queryService(Service *service)
+ bool Zone::queryService(Service *service) const
{
auto const& service_it = _service_map.find(service->identifier());
return (service_it != _service_map.end());
}
- Service* Zone::getService(const UString& service_identifier)
+ Service* Zone::getService(const UString& service_identifier) const
{
auto const& service_it = _service_map.find(service_identifier);
return (service_it != _service_map.end() ? service_it->second : nullptr);
@@ -194,7 +194,7 @@ namespace firewalld
return retval;
}
- bool Zone::queryPort(Port* port)
+ bool Zone::queryPort(Port* port) const
{
bool retval = false;
@@ -266,7 +266,7 @@ namespace firewalld
return (_icmp_block_map.erase(icmp_type) == 1);
}
- bool Zone::queryICMPBlock(const UString& icmp_type)
+ bool Zone::queryICMPBlock(const UString& icmp_type) const
{
auto const& icmp_block_it = _icmp_block_map.find(icmp_type);
return (icmp_block_it != _icmp_block_map.end());
@@ -292,7 +292,7 @@ namespace firewalld
return (_port_forward_map.erase(port_forward->sourcePort()->range()) == 1);
}
- bool Zone::queryPortForward(PortForward* port_forward)
+ bool Zone::queryPortForward(PortForward* port_forward) const
{
auto const& port_forward_it = \
_port_forward_map.find(port_forward->sourcePort()->range());
diff --git a/src/Daemon/Firewall/Zone.hpp b/src/Daemon/Firewall/Zone.hpp
index c541303..af255d2 100644
--- a/src/Daemon/Firewall/Zone.hpp
+++ b/src/Daemon/Firewall/Zone.hpp
@@ -48,25 +48,25 @@ namespace firewalld
void addSource(Source *source);
bool removeSource(Source *source);
- bool querySource(Source *source);
- Source *getSource(const UString& source_spec);
+ bool querySource(Source *source) const;
+ Source *getSource(const UString& source_spec) const;
UStringKeyMap<Source*> getSources() const;
void addInterface(Interface* interface);
bool removeInterface(Interface* interface);
- bool queryInterface(Interface* interface);
- Interface* getInterface(const UString& source_spec);
+ bool queryInterface(Interface* interface) const;
+ Interface* getInterface(const UString& source_spec) const;
UStringKeyMap<Interface*> getInterfaces() const;
void addService(Service *service);
bool removeService(Service *service);
- bool queryService(Service *service);
- Service *getService(const UString& service_identifier);
+ bool queryService(Service *service) const;
+ Service *getService(const UString& service_identifier) const;
UStringKeyMap<Service*> getServices() const;
void addPort(Port* port);
bool removePort(Port* port);
- bool queryPort(Port* port);
+ bool queryPort(Port* port) const;
std::map<Port::Range,Port*> getPorts(Port::Protocol protocol) const;
void setMasquerade(bool state);
@@ -76,12 +76,12 @@ namespace firewalld
void addICMPBlock(const UString& icmp_type);
bool removeICMPBlock(const UString& icmp_type);
- bool queryICMPBlock(const UString& icmp_type);
+ bool queryICMPBlock(const UString& icmp_type) const;
UStringVector getICMPBlocks() const;
void addPortForward(PortForward* port_forward);
bool removePortForward(PortForward* port_forward);
- bool queryPortForward(PortForward* port_forward);
+ bool queryPortForward(PortForward* port_forward) const;
std::map<Port::Range,PortForward*> getForwardPorts() const;
void initFromXML(const String& filepath);
9 years, 7 months