extensions: libxt_connmark: Add translation to nft
PATCH 1/1 extensions: libxt_connmark: Add translation to nft
Add translation for connmark to nftables.
Examples:
$ sudo iptables-translate -A INPUT -m connmark --mark 1 nft add rule ip filter INPUT ct mark 0x1 counter
$ sudo iptables-translate -A INPUT -m connmark --mark 10/10 -j ACCEPT nft add rule ip filter INPUT ct mark and 0xa == 0xa counter accept
$ sudo sudo iptables-translate -t mangle -A PREROUTING -p tcp --dport 40 -m connmark --mark 0x40 nft add rule ip mangle PREROUTING tcp dport 40 ct mark 0x40 counter
Signed-off-by Shivani Bhardwaj <[email protected]>
--- extensions/libxt_connmark.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-)
extensions/libxt_connmark.c +44 -1
@@ -89,7 +89,8 @@ connmark_print(const void *ip, const struct xt_entry_match *match, int numeric) }static void -connmark_mt_print (const void *ip,const struct xt_entry_match *match,int numeric) +connmark_mt_print (const void *ip,const struct xt_entry_match *match, +int numeric) {const struct xt_connmark_mtinfo1 *info = (const void *)match->data;
@@ -122,6 +123,46 @@ connmark_mt_save(const void *ip, const struct xt_entry_match *match)print_mark (info->mark, info->mask); } +static void +print_mark_xlate (unsigned int mark,unsigned int mask, +struct xt_buf *buf) +{ +if (mask !=0xffffffffU ) +xt_buf_add (buf," and 0x%x == 0x%x " , mark, mask); +else +xt_buf_add (buf," 0x%x " , mark); +} + +static int +connmark_xlate (const struct xt_entry_match *match, +struct xt_buf *buf,int numeric) +{ +const struct xt_connmark_info *info = (const void *)match->data; + +if (info->invert) +xt_buf_add (buf," !=" ); + +xt_buf_add (buf,"ct mark" ); +print_mark_xlate (info->mark, info->mask, buf); + +return 1 ; +} + +static int +connmark_mt_xlate (const struct xt_entry_match *match, +struct xt_buf *buf,int numeric) +{ +const struct xt_connmark_mtinfo1 *info = (const void *)match->data; + +if (info->invert) +xt_buf_add (buf," !=" ); + +xt_buf_add (buf,"ct mark" ); +print_mark_xlate (info->mark, info->mask, buf); + +return 1 ; +} +static struct xtables_match connmark_mt_reg[] = { { .family =NFPROTO_UNSPEC ,
@@ -135,6 +176,7 @@ static struct xtables_match connmark_mt_reg[] = { .save = connmark_save, .x6_parse = connmark_parse, .x6_options = connmark_mt_opts, + .xlate = connmark_xlate, }, { .version = XTABLES_VERSION,
@@ -148,6 +190,7 @@ static struct xtables_match connmark_mt_reg[] = { .save = connmark_mt_save, .x6_parse = connmark_mt_parse, .x6_options = connmark_mt_opts, + .xlate = connmark_mt_xlate, }, };
Signature · 1 line
1.9.1
Pablo Neira Ayuso
maintainerQuoted 4 lines · Shivani Bhardwaj
Add translation for connmark to nftables.
Examples:
Quoted 8 lines
$ sudo iptables-translate -A INPUT -m connmark --mark 1 nft add rule ip filter INPUT ct mark 0x1 counter$ sudo iptables-translate -A INPUT -m connmark --mark 10/10 -j ACCEPT nft add rule ip filter INPUT ct mark and 0xa == 0xa counter accept$ sudo sudo iptables-translate -t mangle -A PREROUTING -p tcp --dport 40 -m connmark --mark 0x40 nft add rule ip mangle PREROUTING tcp dport 40 ct mark 0x40 counter
Please, fix the -m connmark ! --mark 10/10 case.