Blame SOURCES/0016-extensions-sctp-Fix-nftables-translation.patch

3a00e5
From c9c2e55eb6cebdb8d17cf0c8267a1eb3e8fb6e07 Mon Sep 17 00:00:00 2001
3a00e5
From: Phil Sutter <phil@nwl.cc>
3a00e5
Date: Tue, 4 May 2021 16:03:24 +0200
3a00e5
Subject: [PATCH] extensions: sctp: Fix nftables translation
3a00e5
3a00e5
If both sport and dport was present, incorrect nft syntax was generated.
3a00e5
3a00e5
Fixes: defc7bd2bac89 ("extensions: libxt_sctp: Add translation to nft")
3a00e5
Signed-off-by: Phil Sutter <phil@nwl.cc>
3a00e5
(cherry picked from commit a61282ec6a1697bfb40f19d13a28a74559050167)
3a00e5
---
3a00e5
 extensions/libxt_sctp.c      | 10 ++++------
3a00e5
 extensions/libxt_sctp.txlate | 10 +++++-----
3a00e5
 2 files changed, 9 insertions(+), 11 deletions(-)
3a00e5
3a00e5
diff --git a/extensions/libxt_sctp.c b/extensions/libxt_sctp.c
3a00e5
index 59b34684cc7f7..5ec1ca618405e 100644
3a00e5
--- a/extensions/libxt_sctp.c
3a00e5
+++ b/extensions/libxt_sctp.c
3a00e5
@@ -495,15 +495,13 @@ static int sctp_xlate(struct xt_xlate *xl,
3a00e5
 	if (!einfo->flags)
3a00e5
 		return 0;
3a00e5
 
3a00e5
-	xt_xlate_add(xl, "sctp ");
3a00e5
-
3a00e5
 	if (einfo->flags & XT_SCTP_SRC_PORTS) {
3a00e5
 		if (einfo->spts[0] != einfo->spts[1])
3a00e5
-			xt_xlate_add(xl, "sport%s %u-%u",
3a00e5
+			xt_xlate_add(xl, "sctp sport%s %u-%u",
3a00e5
 				     einfo->invflags & XT_SCTP_SRC_PORTS ? " !=" : "",
3a00e5
 				     einfo->spts[0], einfo->spts[1]);
3a00e5
 		else
3a00e5
-			xt_xlate_add(xl, "sport%s %u",
3a00e5
+			xt_xlate_add(xl, "sctp sport%s %u",
3a00e5
 				     einfo->invflags & XT_SCTP_SRC_PORTS ? " !=" : "",
3a00e5
 				     einfo->spts[0]);
3a00e5
 		space = " ";
3a00e5
@@ -511,11 +509,11 @@ static int sctp_xlate(struct xt_xlate *xl,
3a00e5
 
3a00e5
 	if (einfo->flags & XT_SCTP_DEST_PORTS) {
3a00e5
 		if (einfo->dpts[0] != einfo->dpts[1])
3a00e5
-			xt_xlate_add(xl, "%sdport%s %u-%u", space,
3a00e5
+			xt_xlate_add(xl, "%ssctp dport%s %u-%u", space,
3a00e5
 				     einfo->invflags & XT_SCTP_DEST_PORTS ? " !=" : "",
3a00e5
 				     einfo->dpts[0], einfo->dpts[1]);
3a00e5
 		else
3a00e5
-			xt_xlate_add(xl, "%sdport%s %u", space,
3a00e5
+			xt_xlate_add(xl, "%ssctp dport%s %u", space,
3a00e5
 				     einfo->invflags & XT_SCTP_DEST_PORTS ? " !=" : "",
3a00e5
 				     einfo->dpts[0]);
3a00e5
 	}
3a00e5
diff --git a/extensions/libxt_sctp.txlate b/extensions/libxt_sctp.txlate
3a00e5
index 72f4641ab021c..0d6c59e183675 100644
3a00e5
--- a/extensions/libxt_sctp.txlate
3a00e5
+++ b/extensions/libxt_sctp.txlate
3a00e5
@@ -23,16 +23,16 @@ iptables-translate -A INPUT -p sctp ! --dport 50:56 -j ACCEPT
3a00e5
 nft add rule ip filter INPUT sctp dport != 50-56 counter accept
3a00e5
 
3a00e5
 iptables-translate -A INPUT -p sctp --dport 80 --sport 50 -j ACCEPT
3a00e5
-nft add rule ip filter INPUT sctp sport 50 dport 80 counter accept
3a00e5
+nft add rule ip filter INPUT sctp sport 50 sctp dport 80 counter accept
3a00e5
 
3a00e5
 iptables-translate -A INPUT -p sctp --dport 80:100 --sport 50 -j ACCEPT
3a00e5
-nft add rule ip filter INPUT sctp sport 50 dport 80-100 counter accept
3a00e5
+nft add rule ip filter INPUT sctp sport 50 sctp dport 80-100 counter accept
3a00e5
 
3a00e5
 iptables-translate -A INPUT -p sctp --dport 80 --sport 50:55 -j ACCEPT
3a00e5
-nft add rule ip filter INPUT sctp sport 50-55 dport 80 counter accept
3a00e5
+nft add rule ip filter INPUT sctp sport 50-55 sctp dport 80 counter accept
3a00e5
 
3a00e5
 iptables-translate -A INPUT -p sctp ! --dport 80:100 --sport 50 -j ACCEPT
3a00e5
-nft add rule ip filter INPUT sctp sport 50 dport != 80-100 counter accept
3a00e5
+nft add rule ip filter INPUT sctp sport 50 sctp dport != 80-100 counter accept
3a00e5
 
3a00e5
 iptables-translate -A INPUT -p sctp --dport 80 ! --sport 50:55 -j ACCEPT
3a00e5
-nft add rule ip filter INPUT sctp sport != 50-55 dport 80 counter accept
3a00e5
+nft add rule ip filter INPUT sctp sport != 50-55 sctp dport 80 counter accept
3a00e5
-- 
3a00e5
2.31.1
3a00e5