From b3b0db918927c99aa73447a076a7464383e09c8d Mon Sep 17 00:00:00 2001 From: Evert Hessel Date: Sun, 6 Feb 2022 22:10:52 +0100 Subject: [PATCH] Use get_zone_config_dict when firewalld >= 0.9.0 so forward setting is passed correctly --- plugins/module_utils/firewalld.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/module_utils/firewalld.py b/plugins/module_utils/firewalld.py index c79a126..394f10e 100644 --- a/plugins/module_utils/firewalld.py +++ b/plugins/module_utils/firewalld.py @@ -126,9 +126,16 @@ class FirewallTransaction(object): def get_fw_zone_settings(self): if self.fw_offline: fw_zone = self.fw.config.get_zone(self.zone) - fw_settings = FirewallClientZoneSettings( - list(self.fw.config.get_zone_config(fw_zone)) - ) + + # If firewalld version is 0.9.0 or higher retrieve the configuration + # using the get_zone_config_dict call, otherwise the returned value + # for the 'forward' field is always zero. + if LooseVersion(FW_VERSION) >= LooseVersion("0.9.0"): + fw_settings = FirewallClientZoneSettings(self.fw.config.get_zone_config_dict(fw_zone)) + else: + fw_settings = FirewallClientZoneSettings( + list(self.fw.config.get_zone_config(fw_zone)) + ) else: fw_zone = self.fw.config().getZoneByName(self.zone) fw_settings = fw_zone.getSettings()