import firewalld-0.8.2-6.el8
This commit is contained in:
parent
af587a4f77
commit
2a5ace2bd9
@ -0,0 +1,29 @@
|
|||||||
|
From 2a1a55209a95c5463e07cc3eb048d128ab7593ed Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Mon, 10 Aug 2020 09:29:05 -0400
|
||||||
|
Subject: [PATCH 48/62] test(regression/rhbz1541077): use FWD_OFFLINE_CHECK
|
||||||
|
macro
|
||||||
|
|
||||||
|
Fixes: 6e279ef6517a ("test(regression/rhbz1541077): correctly use macros")
|
||||||
|
Fixes: dddba7b9c276 ("fix(cli): add ipset type hash:mac is incompatible with the family parameter")
|
||||||
|
(cherry picked from commit fae16b550ed8b384ee24691e6442b7cbd6b776aa)
|
||||||
|
(cherry picked from commit 3efe0f30d4499763aacc573dc634b52ceb11a017)
|
||||||
|
---
|
||||||
|
src/tests/regression/rhbz1541077.at | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/regression/rhbz1541077.at b/src/tests/regression/rhbz1541077.at
|
||||||
|
index 692ca8ecc892..73ad4b49cb3d 100644
|
||||||
|
--- a/src/tests/regression/rhbz1541077.at
|
||||||
|
+++ b/src/tests/regression/rhbz1541077.at
|
||||||
|
@@ -4,6 +4,6 @@ AT_KEYWORDS(ipset rhbz1541077)
|
||||||
|
FWD_CHECK([--permanent --new-ipset hashmacv6 --type hash:mac --family inet6], 2, [ignore], [ignore])
|
||||||
|
FWD_CHECK([--new-ipset hashmacv6 --type hash:mac --family inet6], 2, [ignore], [ignore])
|
||||||
|
|
||||||
|
-AT_CHECK([firewall-offline-cmd --new-ipset hashmacv6 --type hash:mac --family inet6], 2, [ignore], [ignore])
|
||||||
|
+FWD_OFFLINE_CHECK([--new-ipset hashmacv6 --type hash:mac --family inet6], 2, [ignore], [ignore])
|
||||||
|
|
||||||
|
FWD_END_TEST
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 5326d7a86d6e7413dee343b795a352d8b4e6ab0d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Mon, 10 Aug 2020 09:33:22 -0400
|
||||||
|
Subject: [PATCH 49/62] test(regression/rhbz1855140.at): avoid IPv6 tests if
|
||||||
|
IPv6 not available
|
||||||
|
|
||||||
|
Fixes: 87ec14dddd74 ("test(rich): icmptypes with one family")
|
||||||
|
(cherry picked from commit a47819d346fbd0f4d4d382a6a795c76c7f443a3b)
|
||||||
|
(cherry picked from commit 1b4fea7277c26026ecbe09f79928c794489424b9)
|
||||||
|
---
|
||||||
|
src/tests/regression/rhbz1855140.at | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/tests/regression/rhbz1855140.at b/src/tests/regression/rhbz1855140.at
|
||||||
|
index 8059e29fe71a..cea943e0bf24 100644
|
||||||
|
--- a/src/tests/regression/rhbz1855140.at
|
||||||
|
+++ b/src/tests/regression/rhbz1855140.at
|
||||||
|
@@ -2,7 +2,9 @@ FWD_START_TEST([rich rule icmptypes with one family])
|
||||||
|
AT_KEYWORDS(rich icmp rhbz1855140)
|
||||||
|
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="echo-request" accept'], 0, ignore)
|
||||||
|
+IF_HOST_SUPPORTS_IPV6_RULES([
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="neighbour-advertisement" accept'], 0, ignore)
|
||||||
|
+])
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="timestamp-request" accept'], 0, ignore)
|
||||||
|
FWD_RELOAD
|
||||||
|
NFT_LIST_RULES([inet], [filter_IN_public_allow], 0, [dnl
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
From 4d099f4c0866801e40e362090e6986c693386e2c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,50 @@
|
|||||||
|
From 0b69b4e464f02ea6fec50522b587a93092040b4d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Thu, 27 Aug 2020 15:59:13 -0400
|
||||||
|
Subject: [PATCH 51/62] fix(rich): clamp the IP families to those actually
|
||||||
|
enabled
|
||||||
|
|
||||||
|
One scenario is if IPv6 is not available, but we specify an icmp-type
|
||||||
|
that is ipv6 only, then we'll still attempt to call the IPv6 backend. We
|
||||||
|
should not do that.
|
||||||
|
|
||||||
|
(cherry picked from commit 4fcb27bdcf8be30d91d490ba2c0286af1cf299de)
|
||||||
|
(cherry picked from commit b8b0aeaaf853546f6990e8f635d7ea79233bbc79)
|
||||||
|
---
|
||||||
|
src/firewall/core/fw_zone.py | 5 ++++-
|
||||||
|
src/tests/regression/rhbz1855140.at | 2 --
|
||||||
|
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/fw_zone.py b/src/firewall/core/fw_zone.py
|
||||||
|
index 9d8bcf620251..bd026222dce5 100644
|
||||||
|
--- a/src/firewall/core/fw_zone.py
|
||||||
|
+++ b/src/firewall/core/fw_zone.py
|
||||||
|
@@ -1542,7 +1542,10 @@ class FirewallZone(object):
|
||||||
|
ipvs = [ source_ipv ]
|
||||||
|
|
||||||
|
if not ipvs:
|
||||||
|
- ipvs = [ipv for ipv in ["ipv4", "ipv6"] if self._fw.is_ipv_enabled(ipv)]
|
||||||
|
+ ipvs = ["ipv4", "ipv6"]
|
||||||
|
+
|
||||||
|
+ # clamp ipvs to those that are actually enabled.
|
||||||
|
+ ipvs = [ipv for ipv in ipvs if self._fw.is_ipv_enabled(ipv)]
|
||||||
|
|
||||||
|
# add an element to object to allow backends to know what ipvs this applies to
|
||||||
|
rule.ipvs = ipvs
|
||||||
|
diff --git a/src/tests/regression/rhbz1855140.at b/src/tests/regression/rhbz1855140.at
|
||||||
|
index cea943e0bf24..8059e29fe71a 100644
|
||||||
|
--- a/src/tests/regression/rhbz1855140.at
|
||||||
|
+++ b/src/tests/regression/rhbz1855140.at
|
||||||
|
@@ -2,9 +2,7 @@ FWD_START_TEST([rich rule icmptypes with one family])
|
||||||
|
AT_KEYWORDS(rich icmp rhbz1855140)
|
||||||
|
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="echo-request" accept'], 0, ignore)
|
||||||
|
-IF_HOST_SUPPORTS_IPV6_RULES([
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="neighbour-advertisement" accept'], 0, ignore)
|
||||||
|
-])
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="timestamp-request" accept'], 0, ignore)
|
||||||
|
FWD_RELOAD
|
||||||
|
NFT_LIST_RULES([inet], [filter_IN_public_allow], 0, [dnl
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
From 5c18dbc41a2f59364fb495ef164dcc3c9147e408 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Fri, 28 Aug 2020 11:44:33 -0400
|
||||||
|
Subject: [PATCH 52/62] fix(rich icmptype): verify rule and icmptype families
|
||||||
|
don't conflict
|
||||||
|
|
||||||
|
Fixes: rhbz 1855140
|
||||||
|
(cherry picked from commit 11aac7755d9c8e338f72b5350329255937efd8e8)
|
||||||
|
(cherry picked from commit b49a88095b05bcf1bce36e989d7003948f1ee6f7)
|
||||||
|
---
|
||||||
|
src/firewall/core/fw_zone.py | 6 ++++++
|
||||||
|
src/firewall/core/io/zone.py | 17 ++++++++++++++++-
|
||||||
|
2 files changed, 22 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/fw_zone.py b/src/firewall/core/fw_zone.py
|
||||||
|
index bd026222dce5..129306b6f969 100644
|
||||||
|
--- a/src/firewall/core/fw_zone.py
|
||||||
|
+++ b/src/firewall/core/fw_zone.py
|
||||||
|
@@ -1703,6 +1703,12 @@ class FirewallZone(object):
|
||||||
|
type(rule.element) == Rich_IcmpType:
|
||||||
|
ict = self._fw.config.get_icmptype(rule.element.name)
|
||||||
|
|
||||||
|
+ if rule.family and ict.destination and \
|
||||||
|
+ rule.family not in ict.destination:
|
||||||
|
+ raise FirewallError(errors.INVALID_ICMPTYPE,
|
||||||
|
+ "rich rule family '%s' conflicts with icmp type '%s'" % \
|
||||||
|
+ (rule.family, rule.element.name))
|
||||||
|
+
|
||||||
|
if type(rule.element) == Rich_IcmpBlock and \
|
||||||
|
rule.action and type(rule.action) == Rich_Accept:
|
||||||
|
# icmp block might have reject or drop action, but not accept
|
||||||
|
diff --git a/src/firewall/core/io/zone.py b/src/firewall/core/io/zone.py
|
||||||
|
index 68b2a7c9567c..529b92c25b62 100644
|
||||||
|
--- a/src/firewall/core/io/zone.py
|
||||||
|
+++ b/src/firewall/core/io/zone.py
|
||||||
|
@@ -232,7 +232,22 @@ class Zone(IO_Object):
|
||||||
|
raise FirewallError(errors.INVALID_ADDR, source)
|
||||||
|
elif item == "rules_str":
|
||||||
|
for rule in config:
|
||||||
|
- rich.Rich_Rule(rule_str=rule)
|
||||||
|
+ obj_rich = rich.Rich_Rule(rule_str=rule)
|
||||||
|
+ if self.fw_config and obj_rich.element and (isinstance(obj_rich.element, rich.Rich_IcmpBlock) or
|
||||||
|
+ isinstance(obj_rich.element, rich.Rich_IcmpType)):
|
||||||
|
+ existing_icmptypes = self.fw_config.get_icmptypes()
|
||||||
|
+ if obj_rich.element.name not in existing_icmptypes:
|
||||||
|
+ raise FirewallError(errors.INVALID_ICMPTYPE,
|
||||||
|
+ "'%s' not among existing icmp types" % \
|
||||||
|
+ obj_rich.element.name)
|
||||||
|
+
|
||||||
|
+ elif obj_rich.family:
|
||||||
|
+ ict = self.fw_config.get_icmptype(obj_rich.element.name)
|
||||||
|
+ if ict.destination and obj_rich.family not in ict.destination:
|
||||||
|
+ raise FirewallError(errors.INVALID_ICMPTYPE,
|
||||||
|
+ "rich rule family '%s' conflicts with icmp type '%s'" % \
|
||||||
|
+ (obj_rich.family, obj_rich.element.name))
|
||||||
|
+
|
||||||
|
|
||||||
|
def check_name(self, name):
|
||||||
|
super(Zone, self).check_name(name)
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
48
SOURCES/0053-fix-nftables-packet-marks-with-masks.patch
Normal file
48
SOURCES/0053-fix-nftables-packet-marks-with-masks.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From 08cb6f0c7abca95fa898020bb9f3ba3f4bfbf148 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Fri, 28 Aug 2020 13:15:34 -0400
|
||||||
|
Subject: [PATCH 53/62] fix(nftables): packet marks with masks
|
||||||
|
|
||||||
|
(cherry picked from commit e296b926ae5dc4cbc277b6dd755d045e73ed4411)
|
||||||
|
(cherry picked from commit 371efe757f2bde20b4301a78ed3c48ec1d31bf5e)
|
||||||
|
---
|
||||||
|
src/firewall/core/fw_zone.py | 2 ++
|
||||||
|
src/firewall/core/nftables.py | 9 +++++++--
|
||||||
|
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/fw_zone.py b/src/firewall/core/fw_zone.py
|
||||||
|
index 129306b6f969..6eaed4232405 100644
|
||||||
|
--- a/src/firewall/core/fw_zone.py
|
||||||
|
+++ b/src/firewall/core/fw_zone.py
|
||||||
|
@@ -1719,6 +1719,8 @@ class FirewallZone(object):
|
||||||
|
if enable:
|
||||||
|
transaction.add_chain(zone, table, "INPUT")
|
||||||
|
transaction.add_chain(zone, table, "FORWARD_IN")
|
||||||
|
+ if enable and type(rule.action) == Rich_Mark:
|
||||||
|
+ transaction.add_chain(zone, "mangle", "PREROUTING")
|
||||||
|
|
||||||
|
rules = backend.build_zone_icmp_block_rules(enable, zone, ict, rule)
|
||||||
|
transaction.add_rules(backend, rules)
|
||||||
|
diff --git a/src/firewall/core/nftables.py b/src/firewall/core/nftables.py
|
||||||
|
index 0198200b2372..76668a60468f 100644
|
||||||
|
--- a/src/firewall/core/nftables.py
|
||||||
|
+++ b/src/firewall/core/nftables.py
|
||||||
|
@@ -1043,8 +1043,13 @@ class nftables(object):
|
||||||
|
zone=zone)
|
||||||
|
table = "mangle"
|
||||||
|
chain = "%s_%s_%s" % (table, target, chain_suffix)
|
||||||
|
- rule_action = {"mangle": {"key": {"meta": {"key": "mark"}},
|
||||||
|
- "value": rich_rule.action.set}}
|
||||||
|
+ value = rich_rule.action.set.split("/")
|
||||||
|
+ if len(value) > 1:
|
||||||
|
+ rule_action = {"mangle": {"key": {"meta": {"key": "mark"}},
|
||||||
|
+ "value": {"^": [{"&": [{"meta": {"key": "mark"}}, value[1]]}, value[0]]}}}
|
||||||
|
+ else:
|
||||||
|
+ rule_action = {"mangle": {"key": {"meta": {"key": "mark"}},
|
||||||
|
+ "value": value[0]}}
|
||||||
|
else:
|
||||||
|
raise FirewallError(INVALID_RULE,
|
||||||
|
"Unknown action %s" % type(rich_rule.action))
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
27
SOURCES/0054-fix-nftables-icmp-types-with-code-0.patch
Normal file
27
SOURCES/0054-fix-nftables-icmp-types-with-code-0.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
From 603ca9c2dd16f212a8b2fb43a9e9599fe3dd3abf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Fri, 28 Aug 2020 14:22:18 -0400
|
||||||
|
Subject: [PATCH 54/62] fix(nftables): icmp types with code == 0
|
||||||
|
|
||||||
|
(cherry picked from commit 098e35168d6a15516cc76189a70df8db56bd1b13)
|
||||||
|
(cherry picked from commit 8dcfaa607329cd4c2bdaa3b101371a30a04ef858)
|
||||||
|
---
|
||||||
|
src/firewall/core/nftables.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/nftables.py b/src/firewall/core/nftables.py
|
||||||
|
index 76668a60468f..daa7ace085a2 100644
|
||||||
|
--- a/src/firewall/core/nftables.py
|
||||||
|
+++ b/src/firewall/core/nftables.py
|
||||||
|
@@ -82,7 +82,7 @@ def _icmp_types_fragments(protocol, type, code=None):
|
||||||
|
fragments = [{"match": {"left": {"payload": {"protocol": protocol, "field": "type"}},
|
||||||
|
"op": "==",
|
||||||
|
"right": type}}]
|
||||||
|
- if code:
|
||||||
|
+ if code is not None:
|
||||||
|
fragments.append({"match": {"left": {"payload": {"protocol": protocol, "field": "code"}},
|
||||||
|
"op": "==",
|
||||||
|
"right": code}})
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
From d4f35b11f2edb1cf680ed2081a14b599ef3f3b63 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Mon, 31 Aug 2020 15:38:34 -0400
|
||||||
|
Subject: [PATCH 55/62] fix(ipXtables): rich: avoid duplicate rules for
|
||||||
|
icmp-type w/ mark action
|
||||||
|
|
||||||
|
This is a stable only fix. It does not occur on master.
|
||||||
|
|
||||||
|
(cherry picked from commit 9b7ba2fcedace408aae498fea1c973a988370808)
|
||||||
|
---
|
||||||
|
src/firewall/core/ipXtables.py | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/ipXtables.py b/src/firewall/core/ipXtables.py
|
||||||
|
index b1d6c202fda7..c4535f2e5818 100644
|
||||||
|
--- a/src/firewall/core/ipXtables.py
|
||||||
|
+++ b/src/firewall/core/ipXtables.py
|
||||||
|
@@ -1240,8 +1240,13 @@ class ip4tables(object):
|
||||||
|
proto = [ "-p", "ipv6-icmp" ]
|
||||||
|
match = [ "-m", "icmp6", "--icmpv6-type", ict.name ]
|
||||||
|
|
||||||
|
+ if rich_rule and rich_rule.action and isinstance(rich_rule.action, Rich_Mark):
|
||||||
|
+ chains = ["PREROUTING"]
|
||||||
|
+ else:
|
||||||
|
+ chains = ["INPUT", "FORWARD_IN"]
|
||||||
|
+
|
||||||
|
rules = []
|
||||||
|
- for chain in ["INPUT", "FORWARD_IN"]:
|
||||||
|
+ for chain in chains:
|
||||||
|
target = DEFAULT_ZONE_TARGET.format(chain=SHORTCUTS[chain],
|
||||||
|
zone=zone)
|
||||||
|
if self._fw.zone.query_icmp_block_inversion(zone):
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,66 @@
|
|||||||
|
From 08cc79942e820d9ce86c5c0bd0249ec4335955ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Fri, 28 Aug 2020 10:48:35 -0400
|
||||||
|
Subject: [PATCH 56/62] test(regression/rhbz1855140): add negative tests
|
||||||
|
|
||||||
|
(cherry picked from commit b50032185422f5538a8a6211cfa43cfaa2d67ec4)
|
||||||
|
(cherry picked from commit 264375df35124b5920b9d3e690944aaad1e4790c)
|
||||||
|
---
|
||||||
|
src/tests/regression/rhbz1855140.at | 23 ++++++++++++++++++++++-
|
||||||
|
1 file changed, 22 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/regression/rhbz1855140.at b/src/tests/regression/rhbz1855140.at
|
||||||
|
index 8059e29fe71a..fbb33a419c56 100644
|
||||||
|
--- a/src/tests/regression/rhbz1855140.at
|
||||||
|
+++ b/src/tests/regression/rhbz1855140.at
|
||||||
|
@@ -4,7 +4,15 @@ AT_KEYWORDS(rich icmp rhbz1855140)
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="echo-request" accept'], 0, ignore)
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="neighbour-advertisement" accept'], 0, ignore)
|
||||||
|
FWD_CHECK([--permanent --zone public --add-rich-rule='rule icmp-type name="timestamp-request" accept'], 0, ignore)
|
||||||
|
+FWD_CHECK([--permanent --zone public --add-rich-rule 'rule icmp-type name=bad-header mark set=0x86/0x86'], 0, ignore)
|
||||||
|
FWD_RELOAD
|
||||||
|
+NFT_LIST_RULES([inet], [mangle_PRE_public_allow], 0, [dnl
|
||||||
|
+ table inet firewalld {
|
||||||
|
+ chain mangle_PRE_public_allow {
|
||||||
|
+ icmpv6 type parameter-problem icmpv6 code no-route mark set mark & 0x00000086 ^ 0x00000086
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+])
|
||||||
|
NFT_LIST_RULES([inet], [filter_IN_public_allow], 0, [dnl
|
||||||
|
table inet firewalld {
|
||||||
|
chain filter_IN_public_allow {
|
||||||
|
@@ -18,12 +26,17 @@ NFT_LIST_RULES([inet], [filter_IN_public_allow], 0, [dnl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
+IPTABLES_LIST_RULES([mangle], [PRE_public_allow], 0, [dnl
|
||||||
|
+])
|
||||||
|
IPTABLES_LIST_RULES([filter], [IN_public_allow], 0, [dnl
|
||||||
|
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW,UNTRACKED
|
||||||
|
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9090 ctstate NEW,UNTRACKED
|
||||||
|
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8
|
||||||
|
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 13
|
||||||
|
])
|
||||||
|
+IP6TABLES_LIST_RULES([mangle], [PRE_public_allow], 0, [dnl
|
||||||
|
+ MARK icmpv6 ::/0 ::/0 ipv6-icmptype 4 code 0 MARK or 0x86
|
||||||
|
+])
|
||||||
|
IP6TABLES_LIST_RULES([filter], [IN_public_allow], 0, [dnl
|
||||||
|
ACCEPT tcp ::/0 ::/0 tcp dpt:22 ctstate NEW,UNTRACKED
|
||||||
|
ACCEPT udp ::/0 fe80::/64 udp dpt:546 ctstate NEW,UNTRACKED
|
||||||
|
@@ -32,4 +45,12 @@ IP6TABLES_LIST_RULES([filter], [IN_public_allow], 0, [dnl
|
||||||
|
ACCEPT icmpv6 ::/0 ::/0 ipv6-icmptype 136
|
||||||
|
])
|
||||||
|
|
||||||
|
-FWD_END_TEST
|
||||||
|
+dnl verify bad icmptypes are rejected
|
||||||
|
+FWD_CHECK([--permanent --add-rich-rule 'rule icmp-type name=bogus mark set=0x86/0x86'], 107, [ignore], [ignore])
|
||||||
|
+FWD_CHECK([ --add-rich-rule 'rule icmp-type name=bogus mark set=0x86/0x86'], 107, [ignore], [ignore])
|
||||||
|
+FWD_CHECK([--permanent --add-rich-rule 'rule family=ipv6 icmp-type name=timestamp-request drop'], 107, [ignore], [ignore])
|
||||||
|
+IF_HOST_SUPPORTS_IPV6_RULES([
|
||||||
|
+FWD_CHECK([ --add-rich-rule 'rule family=ipv6 icmp-type name=timestamp-request drop'], 107, [ignore], [ignore])
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+FWD_END_TEST([-e '/ERROR: INVALID_ICMPTYPE:/d'])
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
80
SOURCES/0057-fix-policy-cache-rule_str-for-rich-rules.patch
Normal file
80
SOURCES/0057-fix-policy-cache-rule_str-for-rich-rules.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
From 0f94133731fa497b04744fa4a37cfa5fd5e45fab Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Wed, 26 Aug 2020 11:38:36 -0400
|
||||||
|
Subject: [PATCH 57/62] fix(policy): cache rule_str for rich rules
|
||||||
|
|
||||||
|
There are various areas that we use list comprehensions to convert
|
||||||
|
Rich_Rule to rule_str. This isn't cheap. Let's just cache the rule_str
|
||||||
|
and avoid the cost.
|
||||||
|
|
||||||
|
Fixes: rhbz 1871298
|
||||||
|
(cherry picked from commit 5402724221a3dddc9c139663d28ababed4057cc6)
|
||||||
|
(cherry picked from commit 763b07972fd80e7b2f28b29efe812b92f6dff1d1)
|
||||||
|
---
|
||||||
|
src/firewall/core/io/zone.py | 17 ++++++++---------
|
||||||
|
1 file changed, 8 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/io/zone.py b/src/firewall/core/io/zone.py
|
||||||
|
index 529b92c25b62..ec81762be100 100644
|
||||||
|
--- a/src/firewall/core/io/zone.py
|
||||||
|
+++ b/src/firewall/core/io/zone.py
|
||||||
|
@@ -120,6 +120,7 @@ class Zone(IO_Object):
|
||||||
|
self.sources = [ ]
|
||||||
|
self.fw_config = None # to be able to check services and a icmp_blocks
|
||||||
|
self.rules = [ ]
|
||||||
|
+ self.rules_str = [ ]
|
||||||
|
self.icmp_block_inversion = False
|
||||||
|
self.combined = False
|
||||||
|
self.applied = False
|
||||||
|
@@ -141,6 +142,7 @@ class Zone(IO_Object):
|
||||||
|
del self.sources[:]
|
||||||
|
self.fw_config = None # to be able to check services and a icmp_blocks
|
||||||
|
del self.rules[:]
|
||||||
|
+ del self.rules_str[:]
|
||||||
|
self.icmp_block_inversion = False
|
||||||
|
self.combined = False
|
||||||
|
self.applied = False
|
||||||
|
@@ -163,17 +165,13 @@ class Zone(IO_Object):
|
||||||
|
self.interfaces = [u2b_if_py2(i) for i in self.interfaces]
|
||||||
|
self.sources = [u2b_if_py2(s) for s in self.sources]
|
||||||
|
self.rules = [u2b_if_py2(s) for s in self.rules]
|
||||||
|
-
|
||||||
|
- def __getattr__(self, name):
|
||||||
|
- if name == "rules_str":
|
||||||
|
- rules_str = [str(rule) for rule in self.rules]
|
||||||
|
- return rules_str
|
||||||
|
- else:
|
||||||
|
- return getattr(super(Zone, self), name)
|
||||||
|
+ self.rules_str = [u2b_if_py2(s) for s in self.rules_str]
|
||||||
|
|
||||||
|
def __setattr__(self, name, value):
|
||||||
|
if name == "rules_str":
|
||||||
|
self.rules = [rich.Rich_Rule(rule_str=s) for s in value]
|
||||||
|
+ # must convert back to string to get the canonical string.
|
||||||
|
+ super(Zone, self).__setattr__(name, [str(s) for s in self.rules])
|
||||||
|
else:
|
||||||
|
super(Zone, self).__setattr__(name, value)
|
||||||
|
|
||||||
|
@@ -307,6 +305,7 @@ class Zone(IO_Object):
|
||||||
|
self.source_ports.append(port)
|
||||||
|
for rule in zone.rules:
|
||||||
|
self.rules.append(rule)
|
||||||
|
+ self.rules_str.append(str(rule))
|
||||||
|
if zone.icmp_block_inversion:
|
||||||
|
self.icmp_block_inversion = True
|
||||||
|
|
||||||
|
@@ -687,9 +686,9 @@ class zone_ContentHandler(IO_Object_ContentHandler):
|
||||||
|
except Exception as e:
|
||||||
|
log.warning("%s: %s", e, str(self._rule))
|
||||||
|
else:
|
||||||
|
- if str(self._rule) not in \
|
||||||
|
- [ str(x) for x in self.item.rules ]:
|
||||||
|
+ if str(self._rule) not in self.item.rules_str:
|
||||||
|
self.item.rules.append(self._rule)
|
||||||
|
+ self.item.rules_str.append(str(self._rule))
|
||||||
|
else:
|
||||||
|
log.warning("Rule '%s' already set, ignoring.",
|
||||||
|
str(self._rule))
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
55
SOURCES/0058-test-zone-rich-rule-parsing-bottleneck.patch
Normal file
55
SOURCES/0058-test-zone-rich-rule-parsing-bottleneck.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From ed42b8048e97040802da727f77cad4a1bb5ff42b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Wed, 26 Aug 2020 14:28:45 -0400
|
||||||
|
Subject: [PATCH 58/62] test(zone): rich rule parsing bottleneck
|
||||||
|
|
||||||
|
Coverage for rhbz 1871298.
|
||||||
|
Verify we can parse a large amount of rich rules in a reasonable time.
|
||||||
|
|
||||||
|
This test took 3m before the fix and now takes 18s after the fix.
|
||||||
|
Considering it "failed" after 45s should give us plenty of headroom.
|
||||||
|
|
||||||
|
(cherry picked from commit ece30971412eedb9032b0d87233ca21ef9154830)
|
||||||
|
(cherry picked from commit b21f071851ffec6d3a382b6e60eb88dcda7df467)
|
||||||
|
---
|
||||||
|
src/tests/regression/regression.at | 1 +
|
||||||
|
src/tests/regression/rhbz1871298.at | 18 ++++++++++++++++++
|
||||||
|
2 files changed, 19 insertions(+)
|
||||||
|
create mode 100644 src/tests/regression/rhbz1871298.at
|
||||||
|
|
||||||
|
diff --git a/src/tests/regression/regression.at b/src/tests/regression/regression.at
|
||||||
|
index d7b4d56239d1..65540840f50e 100644
|
||||||
|
--- a/src/tests/regression/regression.at
|
||||||
|
+++ b/src/tests/regression/regression.at
|
||||||
|
@@ -34,3 +34,4 @@ m4_include([regression/rhbz1689429.at])
|
||||||
|
m4_include([regression/rhbz1483921.at])
|
||||||
|
m4_include([regression/rhbz1541077.at])
|
||||||
|
m4_include([regression/rhbz1855140.at])
|
||||||
|
+m4_include([regression/rhbz1871298.at])
|
||||||
|
diff --git a/src/tests/regression/rhbz1871298.at b/src/tests/regression/rhbz1871298.at
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..0689399d85ec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/tests/regression/rhbz1871298.at
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+FWD_START_TEST([rich rule parsing bottleneck])
|
||||||
|
+AT_KEYWORDS(rich offline rhbz1871298)
|
||||||
|
+
|
||||||
|
+AT_SKIP_IF([! NS_CMD([which timeout >/dev/null 2>&1])])
|
||||||
|
+
|
||||||
|
+NS_CHECK([mkdir -p ./zones])
|
||||||
|
+NS_CHECK([echo '<?xml version="1.0" encoding="utf-8"?>' > ./zones/foobar.xml])
|
||||||
|
+NS_CHECK([echo "<zone>" >> ./zones/foobar.xml])
|
||||||
|
+NS_CHECK([echo "<short>foobar</short>" >> ./zones/foobar.xml])
|
||||||
|
+NS_CHECK([sh -c 'for I in $(seq 10000); do echo "<rule family=\"ipv4\"><port protocol=\"tcp\" port=\"$I\" /><accept/></rule>" >> ./zones/foobar.xml; done'])
|
||||||
|
+NS_CHECK([echo "</zone>" >> ./zones/foobar.xml])
|
||||||
|
+
|
||||||
|
+if test "x${FIREWALLD_DEFAULT_CONFIG}" != x ; then
|
||||||
|
+ FIREWALL_OFFLINE_CMD_ARGS+=" --default-config ${FIREWALLD_DEFAULT_CONFIG}"
|
||||||
|
+fi
|
||||||
|
+NS_CHECK([timeout 45 firewall-offline-cmd --system-config ./ $FIREWALL_OFFLINE_CMD_ARGS --check-config], 0, [ignore])
|
||||||
|
+
|
||||||
|
+FWD_END_TEST
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,158 @@
|
|||||||
|
From 244d1bfe190f2cc32c10d0fecaf81536761ecc09 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Tue, 1 Sep 2020 13:16:23 -0400
|
||||||
|
Subject: [PATCH 59/62] fix(icmptype): nftables: runtimeToPermanent if
|
||||||
|
ip6tables not available
|
||||||
|
|
||||||
|
We were not filling the runtime ipv6 icmptypes list if the active
|
||||||
|
backend was nftables and ip6tables wasn't available. This caused "ipv6"
|
||||||
|
to be dropped from the supported ipvs/destinations for the icmptype.
|
||||||
|
This also caused runtimeToPermanent to fail because the runtime
|
||||||
|
icmptypes definition dropped "ipv6" causing runtimeToPermanent to copy
|
||||||
|
the runtime icmptype to permanent because they were different... this
|
||||||
|
caused sanity checks on the permanent configuration to fail.
|
||||||
|
|
||||||
|
(cherry picked from commit c92d43dcdf5622e82e28454652acd6a981b015f9)
|
||||||
|
(cherry picked from commit 6f23f727be818f356625e39682fb226a81925647)
|
||||||
|
---
|
||||||
|
src/firewall/core/fw.py | 24 ++++++++++++++----------
|
||||||
|
src/firewall/core/fw_icmptype.py | 8 ++++----
|
||||||
|
src/firewall/core/ipXtables.py | 2 +-
|
||||||
|
src/firewall/core/nftables.py | 6 +++---
|
||||||
|
src/firewall/server/firewalld.py | 4 ++--
|
||||||
|
5 files changed, 24 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/fw.py b/src/firewall/core/fw.py
|
||||||
|
index c767f416f3d2..1df916efb10f 100644
|
||||||
|
--- a/src/firewall/core/fw.py
|
||||||
|
+++ b/src/firewall/core/fw.py
|
||||||
|
@@ -76,10 +76,10 @@ class Firewall(object):
|
||||||
|
else:
|
||||||
|
self.ip4tables_backend = ipXtables.ip4tables(self)
|
||||||
|
self.ip4tables_enabled = True
|
||||||
|
- self.ip4tables_supported_icmp_types = [ ]
|
||||||
|
+ self.ipv4_supported_icmp_types = [ ]
|
||||||
|
self.ip6tables_backend = ipXtables.ip6tables(self)
|
||||||
|
self.ip6tables_enabled = True
|
||||||
|
- self.ip6tables_supported_icmp_types = [ ]
|
||||||
|
+ self.ipv6_supported_icmp_types = [ ]
|
||||||
|
self.ebtables_backend = ebtables.ebtables()
|
||||||
|
self.ebtables_enabled = True
|
||||||
|
self.ipset_backend = ipset.ipset()
|
||||||
|
@@ -172,11 +172,13 @@ class Firewall(object):
|
||||||
|
log.warning("iptables-restore and iptables are missing, "
|
||||||
|
"disabling IPv4 firewall.")
|
||||||
|
self.ip4tables_enabled = False
|
||||||
|
- if self.ip4tables_enabled:
|
||||||
|
- self.ip4tables_supported_icmp_types = \
|
||||||
|
- self.ip4tables_backend.supported_icmp_types()
|
||||||
|
+ if self.nftables_enabled:
|
||||||
|
+ self.ipv4_supported_icmp_types = self.nftables_backend.supported_icmp_types("ipv4")
|
||||||
|
else:
|
||||||
|
- self.ip4tables_supported_icmp_types = [ ]
|
||||||
|
+ if self.ip4tables_enabled:
|
||||||
|
+ self.ipv4_supported_icmp_types = self.ip4tables_backend.supported_icmp_types()
|
||||||
|
+ else:
|
||||||
|
+ self.ipv4_supported_icmp_types = [ ]
|
||||||
|
self.ip6tables_backend.fill_exists()
|
||||||
|
if not self.ip6tables_backend.restore_command_exists:
|
||||||
|
if self.ip6tables_backend.command_exists:
|
||||||
|
@@ -186,11 +188,13 @@ class Firewall(object):
|
||||||
|
log.warning("ip6tables-restore and ip6tables are missing, "
|
||||||
|
"disabling IPv6 firewall.")
|
||||||
|
self.ip6tables_enabled = False
|
||||||
|
- if self.ip6tables_enabled:
|
||||||
|
- self.ip6tables_supported_icmp_types = \
|
||||||
|
- self.ip6tables_backend.supported_icmp_types()
|
||||||
|
+ if self.nftables_enabled:
|
||||||
|
+ self.ipv6_supported_icmp_types = self.nftables_backend.supported_icmp_types("ipv6")
|
||||||
|
else:
|
||||||
|
- self.ip6tables_supported_icmp_types = [ ]
|
||||||
|
+ if self.ip6tables_enabled:
|
||||||
|
+ self.ipv6_supported_icmp_types = self.ip6tables_backend.supported_icmp_types()
|
||||||
|
+ else:
|
||||||
|
+ self.ipv6_supported_icmp_types = [ ]
|
||||||
|
self.ebtables_backend.fill_exists()
|
||||||
|
if not self.ebtables_backend.restore_command_exists:
|
||||||
|
if self.ebtables_backend.command_exists:
|
||||||
|
diff --git a/src/firewall/core/fw_icmptype.py b/src/firewall/core/fw_icmptype.py
|
||||||
|
index afe9f91d6bf6..a565bb6d8733 100644
|
||||||
|
--- a/src/firewall/core/fw_icmptype.py
|
||||||
|
+++ b/src/firewall/core/fw_icmptype.py
|
||||||
|
@@ -57,13 +57,13 @@ class FirewallIcmpType(object):
|
||||||
|
ipvs = orig_ipvs[:]
|
||||||
|
for ipv in orig_ipvs:
|
||||||
|
if ipv == "ipv4":
|
||||||
|
- if not self._fw.ip4tables_enabled:
|
||||||
|
+ if not self._fw.ip4tables_enabled and not self._fw.nftables_enabled:
|
||||||
|
continue
|
||||||
|
- supported_icmps = self._fw.ip4tables_supported_icmp_types
|
||||||
|
+ supported_icmps = self._fw.ipv4_supported_icmp_types
|
||||||
|
elif ipv == "ipv6":
|
||||||
|
- if not self._fw.ip6tables_enabled:
|
||||||
|
+ if not self._fw.ip6tables_enabled and not self._fw.nftables_enabled:
|
||||||
|
continue
|
||||||
|
- supported_icmps = self._fw.ip6tables_supported_icmp_types
|
||||||
|
+ supported_icmps = self._fw.ipv6_supported_icmp_types
|
||||||
|
else:
|
||||||
|
supported_icmps = [ ]
|
||||||
|
if obj.name.lower() not in supported_icmps:
|
||||||
|
diff --git a/src/firewall/core/ipXtables.py b/src/firewall/core/ipXtables.py
|
||||||
|
index c4535f2e5818..450e427c08b5 100644
|
||||||
|
--- a/src/firewall/core/ipXtables.py
|
||||||
|
+++ b/src/firewall/core/ipXtables.py
|
||||||
|
@@ -612,7 +612,7 @@ class ip4tables(object):
|
||||||
|
rules.append(["-t", table, "-P", chain, _policy])
|
||||||
|
return rules
|
||||||
|
|
||||||
|
- def supported_icmp_types(self):
|
||||||
|
+ def supported_icmp_types(self, ipv=None):
|
||||||
|
"""Return ICMP types that are supported by the iptables/ip6tables command and kernel"""
|
||||||
|
ret = [ ]
|
||||||
|
output = ""
|
||||||
|
diff --git a/src/firewall/core/nftables.py b/src/firewall/core/nftables.py
|
||||||
|
index daa7ace085a2..0a73c2c2669d 100644
|
||||||
|
--- a/src/firewall/core/nftables.py
|
||||||
|
+++ b/src/firewall/core/nftables.py
|
||||||
|
@@ -480,13 +480,13 @@ class nftables(object):
|
||||||
|
|
||||||
|
return rules
|
||||||
|
|
||||||
|
- def supported_icmp_types(self):
|
||||||
|
+ def supported_icmp_types(self, ipv=None):
|
||||||
|
# nftables supports any icmp_type via arbitrary type/code matching.
|
||||||
|
# We just need a translation for it in ICMP_TYPES_FRAGMENTS.
|
||||||
|
supported = set()
|
||||||
|
|
||||||
|
- for ipv in ICMP_TYPES_FRAGMENTS.keys():
|
||||||
|
- supported.update(ICMP_TYPES_FRAGMENTS[ipv].keys())
|
||||||
|
+ for _ipv in [ipv] if ipv else ICMP_TYPES_FRAGMENTS.keys():
|
||||||
|
+ supported.update(ICMP_TYPES_FRAGMENTS[_ipv].keys())
|
||||||
|
|
||||||
|
return list(supported)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/server/firewalld.py b/src/firewall/server/firewalld.py
|
||||||
|
index 10b085d48660..949f577053cc 100644
|
||||||
|
--- a/src/firewall/server/firewalld.py
|
||||||
|
+++ b/src/firewall/server/firewalld.py
|
||||||
|
@@ -162,7 +162,7 @@ class FirewallD(slip.dbus.service.Object):
|
||||||
|
return dbus.Boolean(self.fw.ip4tables_enabled)
|
||||||
|
|
||||||
|
elif prop == "IPv4ICMPTypes":
|
||||||
|
- return dbus.Array(self.fw.ip4tables_supported_icmp_types, "s")
|
||||||
|
+ return dbus.Array(self.fw.ipv4_supported_icmp_types, "s")
|
||||||
|
|
||||||
|
elif prop == "IPv6":
|
||||||
|
return dbus.Boolean(self.fw.ip6tables_enabled)
|
||||||
|
@@ -171,7 +171,7 @@ class FirewallD(slip.dbus.service.Object):
|
||||||
|
return dbus.Boolean(self.fw.ipv6_rpfilter_enabled)
|
||||||
|
|
||||||
|
elif prop == "IPv6ICMPTypes":
|
||||||
|
- return dbus.Array(self.fw.ip6tables_supported_icmp_types, "s")
|
||||||
|
+ return dbus.Array(self.fw.ipv6_supported_icmp_types, "s")
|
||||||
|
|
||||||
|
elif prop == "BRIDGE":
|
||||||
|
return dbus.Boolean(self.fw.ebtables_enabled)
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From 8a520d8343ab1567f0f3df39e4fc45dbaf9c6f77 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Thu, 24 Sep 2020 15:24:41 -0400
|
||||||
|
Subject: [PATCH 60/62] docs(firewall-cmd): clarify lockdown whitelist command
|
||||||
|
paths
|
||||||
|
|
||||||
|
Reported-by: D. Hugh Redelmeier <hugh@mimosa.com>
|
||||||
|
(cherry picked from commit a7b12b8eb87dd3bd2bb342cf5d74bf089cf3b9a6)
|
||||||
|
(cherry picked from commit 7e9b1a02cc7aa12f9c499b2acad584dbabf9a518)
|
||||||
|
---
|
||||||
|
doc/xml/firewall-cmd.xml.in | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/doc/xml/firewall-cmd.xml.in b/doc/xml/firewall-cmd.xml.in
|
||||||
|
index 8bc389acae6c..702c549ab9d9 100644
|
||||||
|
--- a/doc/xml/firewall-cmd.xml.in
|
||||||
|
+++ b/doc/xml/firewall-cmd.xml.in
|
||||||
|
@@ -2104,7 +2104,7 @@ For interfaces that are not under control of NetworkManager, firewalld tries to
|
||||||
|
If a command entry on the whitelist ends with an asterisk '*', then all command lines starting with the command will match. If the '*' is not there the absolute command inclusive arguments must match.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
- Commands for user root and others is not always the same. Example: As root <command>/bin/firewall-cmd</command> is used, as a normal user <command>/usr/bin/firewall-cmd</command> is be used on Fedora.
|
||||||
|
+ Command paths for users are not always the same and depends on the users PATH. Some distributions symlink <command>/bin</command> to <command>/usr/bin</command> in which case it depends on the order they appear in the PATH environment variable.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The context is the security (SELinux) context of a running application or service. To get the context of a running application use <command>ps -e --context</command>.
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
39
SOURCES/0061-docs-dbus-fix-invalid-method-names.patch
Normal file
39
SOURCES/0061-docs-dbus-fix-invalid-method-names.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From b82e2cf588916624c5f45c10e7c929f24ff84e9a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Donald Yandt <10255876+TorontoMedia@users.noreply.github.com>
|
||||||
|
Date: Sun, 27 Sep 2020 20:19:35 -0400
|
||||||
|
Subject: [PATCH 61/62] docs(dbus): fix invalid method names
|
||||||
|
|
||||||
|
Replace invalid method names for both 'queryEntry' and 'queryIPSet'.
|
||||||
|
|
||||||
|
Fixes: #693
|
||||||
|
(cherry picked from commit 6fc82d2d34b436a1f1921b36930169c965f3ff4b)
|
||||||
|
(cherry picked from commit 24fb2b2424107cd88e331b8f8edae0dc1671c504)
|
||||||
|
---
|
||||||
|
doc/xml/firewalld.dbus.xml | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/doc/xml/firewalld.dbus.xml b/doc/xml/firewalld.dbus.xml
|
||||||
|
index 1625b9d50576..3bf4f53b108d 100644
|
||||||
|
--- a/doc/xml/firewalld.dbus.xml
|
||||||
|
+++ b/doc/xml/firewalld.dbus.xml
|
||||||
|
@@ -579,7 +579,7 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry id="FirewallD1.ipset.Methods.queryEntry">
|
||||||
|
- <term><methodname>queryService</methodname>(s: ipset, s: entry) → b</term>
|
||||||
|
+ <term><methodname>queryEntry</methodname>(s: ipset, s: entry) → b</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Return whether <replaceable>entry</replaceable> has been added to <replaceable>ipset</replaceable>.
|
||||||
|
@@ -591,7 +591,7 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry id="FirewallD1.ipset.Methods.queryIPSet">
|
||||||
|
- <term><methodname>queryService</methodname>(s: ipset) → b</term>
|
||||||
|
+ <term><methodname>queryIPSet</methodname>(s: ipset) → b</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Return whether <replaceable>ipset</replaceable> is defined in runtime configuration.
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
From cd158a2880734c5da329e9a5c9c075ba5bceced6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: diegoe <diegoe@gnome.org>
|
||||||
|
Date: Wed, 21 Oct 2020 21:19:52 -0500
|
||||||
|
Subject: [PATCH 62/62] docs(firewall-cmd): small description grammar fix
|
||||||
|
|
||||||
|
(cherry picked from commit 9ae97bb2b65fbafa0ed5c0bfd9ebd5945bc6bea9)
|
||||||
|
(cherry picked from commit 9b4664fca4d3551dbb758a53b212a5aab043ccd9)
|
||||||
|
---
|
||||||
|
doc/xml/firewall-cmd.xml.in | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/doc/xml/firewall-cmd.xml.in b/doc/xml/firewall-cmd.xml.in
|
||||||
|
index 702c549ab9d9..1789f513d8ee 100644
|
||||||
|
--- a/doc/xml/firewall-cmd.xml.in
|
||||||
|
+++ b/doc/xml/firewall-cmd.xml.in
|
||||||
|
@@ -56,7 +56,7 @@
|
||||||
|
<title>Description</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
- firewall-cmd is the command line client of the firewalld daemon. It provides interface to manage runtime and permanent configuration.
|
||||||
|
+ firewall-cmd is the command line client of the firewalld daemon. It provides an interface to manage the runtime and permanent configurations.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,107 @@
|
|||||||
|
From dbce20e28a898c394274109904d471d84cfa7fea Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vrinda Punj <vpunj@redhat.com>
|
||||||
|
Date: Fri, 13 Nov 2020 10:40:51 -0500
|
||||||
|
Subject: [PATCH 65/66] fix(rich): non-printable characters removed from rich
|
||||||
|
rules
|
||||||
|
|
||||||
|
Fixes: rhbz 1596304
|
||||||
|
Fixes: #480
|
||||||
|
|
||||||
|
(cherry picked from commit ac5960856991a00ddf7a558e31fd3248c8279a1f)
|
||||||
|
(cherry picked from commit a55416ea5f79f1a7cb1a97b6ee39524a542a8663)
|
||||||
|
---
|
||||||
|
src/firewall/core/rich.py | 2 ++
|
||||||
|
src/firewall/functions.py | 9 ++++++++-
|
||||||
|
src/tests/regression/regression.at | 1 +
|
||||||
|
src/tests/regression/rhbz1596304.at | 23 +++++++++++++++++++++++
|
||||||
|
4 files changed, 34 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 src/tests/regression/rhbz1596304.at
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/rich.py b/src/firewall/core/rich.py
|
||||||
|
index 86c0c998a478..03bc194c2b28 100644
|
||||||
|
--- a/src/firewall/core/rich.py
|
||||||
|
+++ b/src/firewall/core/rich.py
|
||||||
|
@@ -307,6 +307,8 @@ class Rich_Rule(object):
|
||||||
|
if not rule_str:
|
||||||
|
raise FirewallError(errors.INVALID_RULE, 'empty rule')
|
||||||
|
|
||||||
|
+ rule_str = functions.stripNonPrintableCharacters(rule_str)
|
||||||
|
+
|
||||||
|
self.priority = 0
|
||||||
|
self.family = None
|
||||||
|
self.source = None
|
||||||
|
diff --git a/src/firewall/functions.py b/src/firewall/functions.py
|
||||||
|
index 6af220619f17..d20b702e047e 100644
|
||||||
|
--- a/src/firewall/functions.py
|
||||||
|
+++ b/src/firewall/functions.py
|
||||||
|
@@ -27,7 +27,7 @@ __all__ = [ "PY2", "getPortID", "getPortRange", "portStr", "getServiceName",
|
||||||
|
"check_single_address", "check_mac", "uniqify", "ppid_of_pid",
|
||||||
|
"max_zone_name_len", "checkUser", "checkUid", "checkCommand",
|
||||||
|
"checkContext", "joinArgs", "splitArgs",
|
||||||
|
- "b2u", "u2b", "u2b_if_py2" ]
|
||||||
|
+ "b2u", "u2b", "u2b_if_py2", "stripNonPrintableCharacters"]
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import os
|
||||||
|
@@ -42,6 +42,10 @@ from firewall.config import FIREWALLD_TEMPDIR, FIREWALLD_PIDFILE
|
||||||
|
|
||||||
|
PY2 = sys.version < '3'
|
||||||
|
|
||||||
|
+NOPRINT_TRANS_TABLE = {
|
||||||
|
+ i: None for i in range(0, sys.maxunicode + 1) if not chr(i).isprintable()
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
def getPortID(port):
|
||||||
|
""" Check and Get port id from port string or port id using socket.getservbyname
|
||||||
|
|
||||||
|
@@ -226,6 +230,9 @@ def checkIPnMask(ip):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
+def stripNonPrintableCharacters(rule_str):
|
||||||
|
+ return rule_str.translate(NOPRINT_TRANS_TABLE)
|
||||||
|
+
|
||||||
|
def checkIP6nMask(ip):
|
||||||
|
if "/" in ip:
|
||||||
|
addr = ip[:ip.index("/")]
|
||||||
|
diff --git a/src/tests/regression/regression.at b/src/tests/regression/regression.at
|
||||||
|
index 65540840f50e..c1e8620ee700 100644
|
||||||
|
--- a/src/tests/regression/regression.at
|
||||||
|
+++ b/src/tests/regression/regression.at
|
||||||
|
@@ -35,3 +35,4 @@ m4_include([regression/rhbz1483921.at])
|
||||||
|
m4_include([regression/rhbz1541077.at])
|
||||||
|
m4_include([regression/rhbz1855140.at])
|
||||||
|
m4_include([regression/rhbz1871298.at])
|
||||||
|
+m4_include([regression/rhbz1596304.at])
|
||||||
|
diff --git a/src/tests/regression/rhbz1596304.at b/src/tests/regression/rhbz1596304.at
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..98a33934e271
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/tests/regression/rhbz1596304.at
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+FWD_START_TEST([rich rules strip non-printable characters])
|
||||||
|
+AT_KEYWORDS(rich rhbz1596304)
|
||||||
|
+
|
||||||
|
+dnl source address contains a tab character
|
||||||
|
+FWD_CHECK([--permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="104.243.250.0/22 " port port=80 protocol=tcp accept'],0,ignore)
|
||||||
|
+FWD_RELOAD
|
||||||
|
+FWD_CHECK([--list-all | TRIM_WHITESPACE], 0, [m4_strip([dnl
|
||||||
|
+ public
|
||||||
|
+ target: default
|
||||||
|
+ icmp-block-inversion: no
|
||||||
|
+ interfaces:
|
||||||
|
+ sources:
|
||||||
|
+ services: cockpit dhcpv6-client ssh
|
||||||
|
+ ports:
|
||||||
|
+ protocols:
|
||||||
|
+ masquerade: no
|
||||||
|
+ forward-ports:
|
||||||
|
+ source-ports:
|
||||||
|
+ icmp-blocks:
|
||||||
|
+ rich rules:
|
||||||
|
+ rule family="ipv4" source address="104.243.250.0/22" port port="80" protocol="tcp" accept
|
||||||
|
+ ])])
|
||||||
|
+FWD_END_TEST
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
From ff6e65737413d54b6f6964f72827a92fdbecc182 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <eric@garver.life>
|
||||||
|
Date: Fri, 8 Jan 2021 13:38:15 -0500
|
||||||
|
Subject: [PATCH 68/68] fix(rich): limit table to strip non-printables to C0
|
||||||
|
and C1
|
||||||
|
|
||||||
|
Generating the table was taking an unreasonable amount of memory.
|
||||||
|
Stripping C0 and C1 should cover most scenarios while limiting memory
|
||||||
|
usage.
|
||||||
|
|
||||||
|
Fixes: ac5960856991 ("fix(rich): non-printable characters removed from rich rules")
|
||||||
|
(cherry picked from commit 015704b44f81d535a868fe28368f977cefd28638)
|
||||||
|
(cherry picked from commit 629a53ef027146f8e4e486c40c8bde04cda830d3)
|
||||||
|
---
|
||||||
|
src/firewall/functions.py | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/firewall/functions.py b/src/firewall/functions.py
|
||||||
|
index d20b702e047e..1ea9f4309234 100644
|
||||||
|
--- a/src/firewall/functions.py
|
||||||
|
+++ b/src/firewall/functions.py
|
||||||
|
@@ -43,7 +43,12 @@ from firewall.config import FIREWALLD_TEMPDIR, FIREWALLD_PIDFILE
|
||||||
|
PY2 = sys.version < '3'
|
||||||
|
|
||||||
|
NOPRINT_TRANS_TABLE = {
|
||||||
|
- i: None for i in range(0, sys.maxunicode + 1) if not chr(i).isprintable()
|
||||||
|
+ # Limit to C0 and C1 code points. Building entries for all unicode code
|
||||||
|
+ # points requires too much memory.
|
||||||
|
+ # C0 = [0, 31]
|
||||||
|
+ # C1 = [127, 159]
|
||||||
|
+ #
|
||||||
|
+ i: None for i in range(0, 160) if not (i > 31 and i < 127)
|
||||||
|
}
|
||||||
|
|
||||||
|
def getPortID(port):
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
93
SOURCES/0067-fix-zone-add-source-with-mac-address.patch
Normal file
93
SOURCES/0067-fix-zone-add-source-with-mac-address.patch
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
From 2871abfceceba37c6ba38aa0ef25e23a059294ec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vrinda Punj <vpunj@redhat.com>
|
||||||
|
Date: Wed, 18 Nov 2020 13:14:44 -0500
|
||||||
|
Subject: [PATCH 67/68] fix(zone): add source with mac address
|
||||||
|
|
||||||
|
nftables supports matching the destination MAC, but iptables does not.
|
||||||
|
As such, lift the restriction from nftables. For iptables, gracefully
|
||||||
|
ignore the scenarios in which we attempt to match destination MAC.
|
||||||
|
|
||||||
|
Fixes: #703
|
||||||
|
Fixes: df4aefcbe7b7 ("improvement(ipXtables): add utility function match sources")
|
||||||
|
Fixes: 1582c5dd736a ("feat: nftables: convert to libnftables JSON interface")
|
||||||
|
|
||||||
|
Co-authored-by: Eric Garver <eric@garver.life>
|
||||||
|
(cherry picked from commit 20151fbb5c5104e3d4dbc4ea938b9a68bdbcf225)
|
||||||
|
(cherry picked from commit 79bb113a2a108ce1c69dc7bc7af60297b8ec2ad0)
|
||||||
|
---
|
||||||
|
src/firewall/core/ipXtables.py | 4 ++++
|
||||||
|
src/firewall/core/nftables.py | 2 --
|
||||||
|
src/tests/regression/gh703.at | 23 +++++++++++++++++++++++
|
||||||
|
src/tests/regression/regression.at | 1 +
|
||||||
|
4 files changed, 28 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 src/tests/regression/gh703.at
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/ipXtables.py b/src/firewall/core/ipXtables.py
|
||||||
|
index 450e427c08b5..b28146edd060 100644
|
||||||
|
--- a/src/firewall/core/ipXtables.py
|
||||||
|
+++ b/src/firewall/core/ipXtables.py
|
||||||
|
@@ -814,6 +814,10 @@ class ip4tables(object):
|
||||||
|
else:
|
||||||
|
zone_dispatch_chain = "%s_ZONES" % (chain)
|
||||||
|
|
||||||
|
+ # iptables can not match destination MAC
|
||||||
|
+ if check_mac(address) and chain in ["POSTROUTING", "FORWARD_OUT", "OUTPUT"]:
|
||||||
|
+ return []
|
||||||
|
+
|
||||||
|
target = DEFAULT_ZONE_TARGET.format(chain=SHORTCUTS[chain], zone=zone)
|
||||||
|
action = "-g"
|
||||||
|
|
||||||
|
diff --git a/src/firewall/core/nftables.py b/src/firewall/core/nftables.py
|
||||||
|
index 0a73c2c2669d..a0a899dd3eef 100644
|
||||||
|
--- a/src/firewall/core/nftables.py
|
||||||
|
+++ b/src/firewall/core/nftables.py
|
||||||
|
@@ -1067,8 +1067,6 @@ class nftables(object):
|
||||||
|
return self._set_match_fragment(address[len("ipset:"):], True if "daddr" == addr_field else False, invert)
|
||||||
|
else:
|
||||||
|
if check_mac(address):
|
||||||
|
- if addr_field == "daddr":
|
||||||
|
- raise FirewallError(INVALID_RULE, "%s._rule_addr_fragment()", (self.__class__))
|
||||||
|
family = "ether"
|
||||||
|
elif check_single_address("ipv4", address):
|
||||||
|
family = "ip"
|
||||||
|
diff --git a/src/tests/regression/gh703.at b/src/tests/regression/gh703.at
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..af724a7713a7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/tests/regression/gh703.at
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+FWD_START_TEST([add source with mac address])
|
||||||
|
+AT_KEYWORDS(gh703)
|
||||||
|
+
|
||||||
|
+FWD_CHECK([--zone=home --add-source=34:7e:5c:3a:4c:32], 0, [ignore])
|
||||||
|
+
|
||||||
|
+NFT_LIST_RULES([ip], [nat_POSTROUTING_ZONES_SOURCE], 0, [dnl
|
||||||
|
+ table ip firewalld {
|
||||||
|
+ chain nat_POSTROUTING_ZONES_SOURCE {
|
||||||
|
+ ether daddr 34:7e:5c:3a:4c:32 goto nat_POST_home
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+])
|
||||||
|
+NFT_LIST_RULES([ip6], [nat_POSTROUTING_ZONES_SOURCE], 0, [dnl
|
||||||
|
+ table ip6 firewalld {
|
||||||
|
+ chain nat_POSTROUTING_ZONES_SOURCE {
|
||||||
|
+ ether daddr 34:7e:5c:3a:4c:32 goto nat_POST_home
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+dnl NOTE: iptables does _not_ support matching mac destination.
|
||||||
|
+
|
||||||
|
+FWD_END_TEST
|
||||||
|
diff --git a/src/tests/regression/regression.at b/src/tests/regression/regression.at
|
||||||
|
index c1e8620ee700..7597a458076c 100644
|
||||||
|
--- a/src/tests/regression/regression.at
|
||||||
|
+++ b/src/tests/regression/regression.at
|
||||||
|
@@ -36,3 +36,4 @@ m4_include([regression/rhbz1541077.at])
|
||||||
|
m4_include([regression/rhbz1855140.at])
|
||||||
|
m4_include([regression/rhbz1871298.at])
|
||||||
|
m4_include([regression/rhbz1596304.at])
|
||||||
|
+m4_include([regression/gh703.at])
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
52
SOURCES/v0.9.0-0063-feat-service-add-collectd-service.patch
Normal file
52
SOURCES/v0.9.0-0063-feat-service-add-collectd-service.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
From 4aa1e421dae3ece1de075ef538f709d6388f8811 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vrinda Punj <vpunj@redhat.com>
|
||||||
|
Date: Wed, 10 Jun 2020 16:14:43 -0400
|
||||||
|
Subject: [PATCH 63/64] feat(service): add collectd service Fixes: rhbz 1837368
|
||||||
|
|
||||||
|
(cherry picked from commit 8b974e75d9100b17568a55c4962dfe09d34f03dc)
|
||||||
|
---
|
||||||
|
config/Makefile.am | 1 +
|
||||||
|
config/services/collectd.xml | 6 ++++++
|
||||||
|
po/POTFILES.in | 1 +
|
||||||
|
3 files changed, 8 insertions(+)
|
||||||
|
create mode 100644 config/services/collectd.xml
|
||||||
|
|
||||||
|
diff --git a/config/Makefile.am b/config/Makefile.am
|
||||||
|
index 702592e6a685..5f44678841f3 100644
|
||||||
|
--- a/config/Makefile.am
|
||||||
|
+++ b/config/Makefile.am
|
||||||
|
@@ -134,6 +134,7 @@ CONFIG_FILES = \
|
||||||
|
services/ceph.xml \
|
||||||
|
services/cfengine.xml \
|
||||||
|
services/cockpit.xml \
|
||||||
|
+ services/collectd.xml \
|
||||||
|
services/condor-collector.xml \
|
||||||
|
services/ctdb.xml \
|
||||||
|
services/dhcpv6-client.xml \
|
||||||
|
diff --git a/config/services/collectd.xml b/config/services/collectd.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..fb2483e0e716
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/config/services/collectd.xml
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
+<service>
|
||||||
|
+ <short>Collectd</short>
|
||||||
|
+ <description>Collectd is a monitoring system that allows metrics to be sent over the network. This rule allows incoming collectd traffic from remote boxes.</description>
|
||||||
|
+ <port protocol="udp" port="25826"/>
|
||||||
|
+</service>
|
||||||
|
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||||
|
index 918f6f0986ae..92323b03fc17 100644
|
||||||
|
--- a/po/POTFILES.in
|
||||||
|
+++ b/po/POTFILES.in
|
||||||
|
@@ -67,6 +67,7 @@ config/services/ceph.xml
|
||||||
|
config/services/cfengine.xml
|
||||||
|
config/services/cockpit.xml
|
||||||
|
config/services/condor-collector.xml
|
||||||
|
+config/services/collectd.xml
|
||||||
|
config/services/ctdb.xml
|
||||||
|
config/services/dhcpv6-client.xml
|
||||||
|
config/services/dhcpv6.xml
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
From 7edc99c9aca9c1416a05c117ab65598dc3095c35 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kenneth D'souza <kdsouza@redhat.com>
|
||||||
|
Date: Tue, 16 Jun 2020 01:14:52 +0530
|
||||||
|
Subject: [PATCH 64/64] feat(service): Add rpc-rquotad.service
|
||||||
|
|
||||||
|
Signed-off-by: Kenneth D'souza <kdsouza@redhat.com>
|
||||||
|
(cherry picked from commit 35e58d6fca6fbf44c34629dc058f3f1f727e7783)
|
||||||
|
---
|
||||||
|
config/Makefile.am | 1 +
|
||||||
|
config/services/rquotad.xml | 7 +++++++
|
||||||
|
po/POTFILES.in | 1 +
|
||||||
|
3 files changed, 9 insertions(+)
|
||||||
|
create mode 100644 config/services/rquotad.xml
|
||||||
|
|
||||||
|
diff --git a/config/Makefile.am b/config/Makefile.am
|
||||||
|
index 5f44678841f3..178c2358b117 100644
|
||||||
|
--- a/config/Makefile.am
|
||||||
|
+++ b/config/Makefile.am
|
||||||
|
@@ -233,6 +233,7 @@ CONFIG_FILES = \
|
||||||
|
services/redis.xml \
|
||||||
|
services/RH-Satellite-6.xml \
|
||||||
|
services/rpc-bind.xml \
|
||||||
|
+ services/rquotad.xml \
|
||||||
|
services/rsh.xml \
|
||||||
|
services/rsyncd.xml \
|
||||||
|
services/rtsp.xml \
|
||||||
|
diff --git a/config/services/rquotad.xml b/config/services/rquotad.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..adcd233ebd4d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/config/services/rquotad.xml
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
+<service>
|
||||||
|
+ <short>rquotad</short>
|
||||||
|
+ <description>Remote Quota Server Daemon</description>
|
||||||
|
+ <port protocol="tcp" port="875"/>
|
||||||
|
+ <port protocol="udp" port="875"/>
|
||||||
|
+</service>
|
||||||
|
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||||
|
index 92323b03fc17..8552b8eca4ab 100644
|
||||||
|
--- a/po/POTFILES.in
|
||||||
|
+++ b/po/POTFILES.in
|
||||||
|
@@ -166,6 +166,7 @@ config/services/redis-sentinel.xml
|
||||||
|
config/services/redis.xml
|
||||||
|
config/services/RH-Satellite-6.xml
|
||||||
|
config/services/rpc-bind.xml
|
||||||
|
+config/services/rquotad.xml
|
||||||
|
config/services/rsh.xml
|
||||||
|
config/services/rsyncd.xml
|
||||||
|
config/services/rtsp.xml
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
55
SOURCES/v1.0.0-0068-feat-service-add-galera-service.patch
Normal file
55
SOURCES/v1.0.0-0068-feat-service-add-galera-service.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From 8d0823923302da39bb1f28e55b907db29b03f664 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vrinda Punj <vpunj@redhat.com>
|
||||||
|
Date: Tue, 1 Dec 2020 11:58:19 -0500
|
||||||
|
Subject: [PATCH 66/66] feat(service): add galera service Fixes: rhbz1696260
|
||||||
|
|
||||||
|
(cherry picked from commit 11632147677464cb7121d17526ead242e68be041)
|
||||||
|
---
|
||||||
|
config/Makefile.am | 1 +
|
||||||
|
config/services/galera.xml | 9 +++++++++
|
||||||
|
po/POTFILES.in | 1 +
|
||||||
|
3 files changed, 11 insertions(+)
|
||||||
|
create mode 100644 config/services/galera.xml
|
||||||
|
|
||||||
|
diff --git a/config/Makefile.am b/config/Makefile.am
|
||||||
|
index 178c2358b117..4b849bd54e32 100644
|
||||||
|
--- a/config/Makefile.am
|
||||||
|
+++ b/config/Makefile.am
|
||||||
|
@@ -156,6 +156,7 @@ CONFIG_FILES = \
|
||||||
|
services/freeipa-replication.xml \
|
||||||
|
services/freeipa-trust.xml \
|
||||||
|
services/ftp.xml \
|
||||||
|
+ services/galera.xml \
|
||||||
|
services/ganglia-client.xml \
|
||||||
|
services/ganglia-master.xml \
|
||||||
|
services/git.xml \
|
||||||
|
diff --git a/config/services/galera.xml b/config/services/galera.xml
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..2305713fbcab
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/config/services/galera.xml
|
||||||
|
@@ -0,0 +1,9 @@
|
||||||
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
+<service>
|
||||||
|
+ <short>Galera</short>
|
||||||
|
+ <description>MariaDB-Galera Database Server</description>
|
||||||
|
+ <port protocol="tcp" port="3306"/>
|
||||||
|
+ <port protocol="tcp" port="4567"/>
|
||||||
|
+ <port protocol="tcp" port="4568"/>
|
||||||
|
+ <port protocol="tcp" port="4444"/>
|
||||||
|
+</service>
|
||||||
|
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||||
|
index 8552b8eca4ab..27003c5ce1ef 100644
|
||||||
|
--- a/po/POTFILES.in
|
||||||
|
+++ b/po/POTFILES.in
|
||||||
|
@@ -88,6 +88,7 @@ config/services/freeipa-ldap.xml
|
||||||
|
config/services/freeipa-replication.xml
|
||||||
|
config/services/freeipa-trust.xml
|
||||||
|
config/services/ftp.xml
|
||||||
|
+config/services/galera.xml
|
||||||
|
config/services/ganglia-client.xml
|
||||||
|
config/services/ganglia-master.xml
|
||||||
|
config/services/git.xml
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: A firewall daemon with D-Bus interface providing a dynamic firewall
|
Summary: A firewall daemon with D-Bus interface providing a dynamic firewall
|
||||||
Name: firewalld
|
Name: firewalld
|
||||||
Version: 0.8.2
|
Version: 0.8.2
|
||||||
Release: 2%{?dist}
|
Release: 6%{?dist}
|
||||||
URL: http://www.firewalld.org
|
URL: http://www.firewalld.org
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Source0: https://github.com/firewalld/firewalld/releases/download/v%{version}/firewalld-%{version}.tar.gz
|
Source0: https://github.com/firewalld/firewalld/releases/download/v%{version}/firewalld-%{version}.tar.gz
|
||||||
@ -52,6 +52,27 @@ Patch44: 0044-test-regression-rhbz1483921-correctly-use-macros.patch
|
|||||||
Patch45: 0045-test-regression-rhbz1541077-correctly-use-macros.patch
|
Patch45: 0045-test-regression-rhbz1541077-correctly-use-macros.patch
|
||||||
Patch46: 0046-fix-rich-use-correct-error-code-for-invalid-priority.patch
|
Patch46: 0046-fix-rich-use-correct-error-code-for-invalid-priority.patch
|
||||||
Patch47: 0047-test-dbus-zone-add-nm-shared-to-expected-output-if-i.patch
|
Patch47: 0047-test-dbus-zone-add-nm-shared-to-expected-output-if-i.patch
|
||||||
|
Patch48: 0048-test-regression-rhbz1541077-use-FWD_OFFLINE_CHECK-ma.patch
|
||||||
|
Patch49: 0049-test-regression-rhbz1855140.at-avoid-IPv6-tests-if-I.patch
|
||||||
|
Patch50: 0050-fix-icmptype-when-applying-rules-get-ict-from-perm-c.patch
|
||||||
|
Patch51: 0051-fix-rich-clamp-the-IP-families-to-those-actually-ena.patch
|
||||||
|
Patch52: 0052-fix-rich-icmptype-verify-rule-and-icmptype-families-.patch
|
||||||
|
Patch53: 0053-fix-nftables-packet-marks-with-masks.patch
|
||||||
|
Patch54: 0054-fix-nftables-icmp-types-with-code-0.patch
|
||||||
|
Patch55: 0055-fix-ipXtables-rich-avoid-duplicate-rules-for-icmp-ty.patch
|
||||||
|
Patch56: 0056-test-regression-rhbz1855140-add-negative-tests.patch
|
||||||
|
Patch57: 0057-fix-policy-cache-rule_str-for-rich-rules.patch
|
||||||
|
Patch58: 0058-test-zone-rich-rule-parsing-bottleneck.patch
|
||||||
|
Patch59: 0059-fix-icmptype-nftables-runtimeToPermanent-if-ip6table.patch
|
||||||
|
Patch60: 0060-docs-firewall-cmd-clarify-lockdown-whitelist-command.patch
|
||||||
|
Patch61: 0061-docs-dbus-fix-invalid-method-names.patch
|
||||||
|
Patch62: 0062-docs-firewall-cmd-small-description-grammar-fix.patch
|
||||||
|
Patch63: v0.9.0-0063-feat-service-add-collectd-service.patch
|
||||||
|
Patch64: v0.9.0-0064-feat-service-Add-rpc-rquotad.service.patch
|
||||||
|
Patch65: 0065-fix-rich-non-printable-characters-removed-from-rich-.patch
|
||||||
|
Patch66: 0066-fix-rich-limit-table-to-strip-non-printables-to-C0-a.patch
|
||||||
|
Patch67: 0067-fix-zone-add-source-with-mac-address.patch
|
||||||
|
Patch68: v1.0.0-0068-feat-service-add-galera-service.patch
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
@ -250,6 +271,24 @@ desktop-file-install --delete-original \
|
|||||||
%{_mandir}/man1/firewall-config*.1*
|
%{_mandir}/man1/firewall-config*.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 29 2021 Eric Garver <egarver@redhat.com> - 0.8.2-6
|
||||||
|
- feat(service): add galera service
|
||||||
|
|
||||||
|
* Fri Jan 29 2021 Eric Garver <egarver@redhat.com> - 0.8.2-5
|
||||||
|
- fix(zone): add source with mac address
|
||||||
|
|
||||||
|
* Fri Jan 29 2021 Eric Garver <egarver@redhat.com> - 0.8.2-4
|
||||||
|
- fix(rich): non-printable characters removed from rich
|
||||||
|
|
||||||
|
* Mon Oct 26 2020 Eric Garver <egarver@redhat.com> - 0.8.2-3
|
||||||
|
- fix(nftables): packet marks with masks
|
||||||
|
- fix(nftables): icmp types with code == 0
|
||||||
|
- fix(rich icmptype): verify rule and icmptype families
|
||||||
|
- fix(zone): cache rule_str for rich rules
|
||||||
|
- improvement(service): IPsec: Update description and add TCP port 4500
|
||||||
|
- feat(service): add collectd service
|
||||||
|
- feat(service): Add rpc-rquotad.service
|
||||||
|
|
||||||
* Tue Aug 04 2020 Eric Garver <egarver@redhat.com> - 0.8.2-2
|
* Tue Aug 04 2020 Eric Garver <egarver@redhat.com> - 0.8.2-2
|
||||||
- fix(cli): add ipset type hash:mac is incompatible with the family parameter
|
- fix(cli): add ipset type hash:mac is incompatible with the family parameter
|
||||||
- fix(cli): add --zone is an invalid option with --direct
|
- fix(cli): add --zone is an invalid option with --direct
|
||||||
|
Loading…
Reference in New Issue
Block a user