From 4d099f4c0866801e40e362090e6986c693386e2c Mon Sep 17 00:00:00 2001 From: Eric Garver Date: Thu, 27 Aug 2020 15:30:45 -0400 Subject: [PATCH 50/62] fix(icmptype): when applying rules get ict from perm config Otherwise we may get runtime errors because the running kernel doesn't support the ict. Use the permanent ict definition so we allow the case where ip6tables is missing or not available. Explicit usage of an ict not supported by the kernel will still fail to apply at runtime (iptables complains), but if ip6tables is missing we don't attempt to apply the ipv6 rules thus avoiding the issue. (cherry picked from commit fdc44800aef4ec166987d529ffaea51f13ff54c2) (cherry picked from commit 0016ec8e4aefb6cf2a8986a91530eae25a28ead7) --- src/firewall/core/fw_zone.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/firewall/core/fw_zone.py b/src/firewall/core/fw_zone.py index b9fe1f6aae97..9d8bcf620251 100644 --- a/src/firewall/core/fw_zone.py +++ b/src/firewall/core/fw_zone.py @@ -1526,7 +1526,7 @@ class FirewallZone(object): if rule.family: ipvs = [ rule.family ] elif rule.element and (isinstance(rule.element, Rich_IcmpBlock) or isinstance(rule.element, Rich_IcmpType)): - ict = self._fw.icmptype.get_icmptype(rule.element.name) + ict = self._fw.config.get_icmptype(rule.element.name) if ict.destination: ipvs = [ipv for ipv in ["ipv4", "ipv6"] if ipv in ict.destination] @@ -1698,7 +1698,7 @@ class FirewallZone(object): # ICMP BLOCK and ICMP TYPE elif type(rule.element) == Rich_IcmpBlock or \ type(rule.element) == Rich_IcmpType: - ict = self._fw.icmptype.get_icmptype(rule.element.name) + ict = self._fw.config.get_icmptype(rule.element.name) if type(rule.element) == Rich_IcmpBlock and \ rule.action and type(rule.action) == Rich_Accept: @@ -1862,7 +1862,7 @@ class FirewallZone(object): transaction.add_rules(backend, rules) def _icmp_block(self, enable, zone, icmp, transaction): - ict = self._fw.icmptype.get_icmptype(icmp) + ict = self._fw.config.get_icmptype(icmp) if enable: transaction.add_chain(zone, "filter", "INPUT") -- 2.28.0