Blame SOURCES/0020-fix-ipset-nftables-use-interval-flag-for-ip-types.patch

e9ad3f
From 12b83f9c9381e60496a63082343512e62b03de5f Mon Sep 17 00:00:00 2001
e9ad3f
From: Eric Garver <eric@garver.life>
e9ad3f
Date: Mon, 22 Feb 2021 15:11:21 -0500
e9ad3f
Subject: [PATCH 20/22] fix(ipset): nftables: use interval flag for "ip" types
e9ad3f
e9ad3f
This is to be compatible with ipset. ipset allows adding to a non-mask
e9ad3f
type, e.g. "ip", by using a mask. ipset translates this into many
e9ad3f
entries. Support it in nftables simply by using intervals.
e9ad3f
e9ad3f
(cherry picked from commit faaf3ac649a347f0bccae800fd0e4daeebbd1539)
e9ad3f
(cherry picked from commit c9d1c88e91c84561af0dbfb5999f722a3b6bb397)
e9ad3f
---
e9ad3f
 src/firewall/core/nftables.py       | 2 +-
e9ad3f
 src/tests/cli/firewall-cmd.at       | 1 +
e9ad3f
 src/tests/regression/gh330.at       | 6 ++++++
e9ad3f
 src/tests/regression/rhbz1734765.at | 2 ++
e9ad3f
 4 files changed, 10 insertions(+), 1 deletion(-)
e9ad3f
e9ad3f
diff --git a/src/firewall/core/nftables.py b/src/firewall/core/nftables.py
e9ad3f
index ff077aded340..e6907421e111 100644
e9ad3f
--- a/src/firewall/core/nftables.py
e9ad3f
+++ b/src/firewall/core/nftables.py
e9ad3f
@@ -1767,7 +1767,7 @@ class nftables(object):
e9ad3f
 
e9ad3f
         # Some types need the interval flag
e9ad3f
         for t in type.split(":")[1].split(","):
e9ad3f
-            if t in ["net", "port"]:
e9ad3f
+            if t in ["ip", "net", "port"]:
e9ad3f
                 set_dict["flags"] = ["interval"]
e9ad3f
                 break
e9ad3f
 
e9ad3f
diff --git a/src/tests/cli/firewall-cmd.at b/src/tests/cli/firewall-cmd.at
e9ad3f
index 67af8a19c072..450737776a9f 100644
e9ad3f
--- a/src/tests/cli/firewall-cmd.at
e9ad3f
+++ b/src/tests/cli/firewall-cmd.at
e9ad3f
@@ -974,6 +974,7 @@ FWD_START_TEST([ipset])
e9ad3f
         table inet firewalld {
e9ad3f
             set foobar {
e9ad3f
                 type ipv4_addr . mark
e9ad3f
+                flags interval
e9ad3f
                 elements = { 10.10.10.10 . 0x00000100,
e9ad3f
                              20.20.20.20 . 0x00000200 }
e9ad3f
             }
e9ad3f
diff --git a/src/tests/regression/gh330.at b/src/tests/regression/gh330.at
e9ad3f
index fd8d2f8d2dd8..0564501aa18d 100644
e9ad3f
--- a/src/tests/regression/gh330.at
e9ad3f
+++ b/src/tests/regression/gh330.at
e9ad3f
@@ -17,6 +17,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
@@ -43,6 +44,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4, 10.10.10.10 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
@@ -60,6 +62,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4, 10.10.10.10 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
@@ -80,6 +83,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4, 4.3.2.1,
e9ad3f
                          10.10.10.10 }
e9ad3f
         }
e9ad3f
@@ -104,6 +108,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4, 4.3.2.1,
e9ad3f
                          6.6.6.6, 10.10.10.10 }
e9ad3f
         }
e9ad3f
@@ -129,6 +134,7 @@ NFT_LIST_SET([foobar], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set foobar {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 1.2.3.4 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
diff --git a/src/tests/regression/rhbz1734765.at b/src/tests/regression/rhbz1734765.at
e9ad3f
index b9f6aa5d49a1..b5023a058a55 100644
e9ad3f
--- a/src/tests/regression/rhbz1734765.at
e9ad3f
+++ b/src/tests/regression/rhbz1734765.at
e9ad3f
@@ -47,6 +47,7 @@ NFT_LIST_SET([ipsetv4], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set ipsetv4 {
e9ad3f
             type ipv4_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { 192.0.2.12 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
@@ -55,6 +56,7 @@ NFT_LIST_SET([ipsetv6], 0, [dnl
e9ad3f
     table inet firewalld {
e9ad3f
         set ipsetv6 {
e9ad3f
             type ipv6_addr
e9ad3f
+            flags interval
e9ad3f
             elements = { ::2 }
e9ad3f
         }
e9ad3f
     }
e9ad3f
-- 
e9ad3f
2.27.0
e9ad3f