From: Phil Sutter Date: Thu, 17 Nov 2022 15:39:40 +0000 (+0100) Subject: extensions: tcp: Translate TCP option match X-Git-Tag: v1.8.9~51 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b946dabf34a068adf3e35924578ffb06a249bb8;p=thirdparty%2Fiptables.git extensions: tcp: Translate TCP option match A simple task since 'tcp option' expression exists. Signed-off-by: Phil Sutter --- diff --git a/extensions/libxt_tcp.c b/extensions/libxt_tcp.c index 0b115cdd..043382d4 100644 --- a/extensions/libxt_tcp.c +++ b/extensions/libxt_tcp.c @@ -430,9 +430,12 @@ static int tcp_xlate(struct xt_xlate *xl, space = " "; } - /* XXX not yet implemented */ - if (tcpinfo->option || (tcpinfo->invflags & XT_TCP_INV_OPTION)) - return 0; + if (tcpinfo->option) { + xt_xlate_add(xl, "%stcp option %u %s", space, tcpinfo->option, + tcpinfo->invflags & XT_TCP_INV_OPTION ? + "missing" : "exists"); + space = " "; + } if (tcpinfo->flg_mask || (tcpinfo->invflags & XT_TCP_INV_FLAGS)) { xt_xlate_add(xl, "%stcp flags %s", space, diff --git a/extensions/libxt_tcp.txlate b/extensions/libxt_tcp.txlate index 921d4af0..a1f0e909 100644 --- a/extensions/libxt_tcp.txlate +++ b/extensions/libxt_tcp.txlate @@ -24,3 +24,9 @@ nft add rule ip filter INPUT ip frag-off & 0x1fff != 0 ip protocol tcp counter iptables-translate -A INPUT ! -f -p tcp --dport 22 nft add rule ip filter INPUT ip frag-off & 0x1fff 0 tcp dport 22 counter + +iptables-translate -A INPUT -p tcp --tcp-option 23 +nft add rule ip filter INPUT tcp option 23 exists counter + +iptables-translate -A INPUT -p tcp ! --tcp-option 23 +nft add rule ip filter INPUT tcp option 23 missing counter