extensions: libipt_MASQUERADE: Add translation to nft
PATCH v2 1/1 extensions: libipt_MASQUERADE: Add translation to nft
Add translation for masquerade to nftables.
Examples:
$ sudo iptables-translate -t nat -A POSTROUTING -j MASQUERADE nft add rule ip nat POSTROUTING counter masquerade
$ sudo iptables-translate -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports 10 nft add rule ip nat POSTROUTING ip protocol tcp counter masquerade to :10
$ sudo iptables-translate -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports 10-20 --random nft add rule ip nat POSTROUTING ip protocol tcp counter masquerade to :10-20 random
Signed-off-by Shivani Bhardwaj <[email protected]>
---
Changes in v2:
Add code for masquerade port range selection
extensions/libipt_MASQUERADE.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
extensions/libipt_MASQUERADE.c +24 -0
@@ -134,6 +134,29 @@ MASQUERADE_save(const void *ip, const struct xt_entry_target *target)printf (" --random" ); } +static int +MASQUERADE_xlate (const struct xt_entry_target *target, +struct xt_xlate *xl,int numeric) +{ +const struct nf_nat_ipv4_multi_range_compat *mr = + (const void *)target->data; +const struct nf_nat_ipv4_range *r = &mr->range[0 ]; + +xt_xlate_add (xl,"masquerade" ); + +if (r->flags &NF_NAT_RANGE_PROTO_SPECIFIED ) { +xt_xlate_add (xl," to :%hu" ,ntohs (r->min.tcp.port)); +if (r->max.tcp.port != r->min.tcp.port) +xt_xlate_add (xl,"-%hu" ,ntohs (r->max.tcp.port)); + } + +xt_xlate_add (xl," " ); +if (r->flags &NF_NAT_RANGE_PROTO_RANDOM ) +xt_xlate_add (xl,"random " ); + +return 1 ; +} +static struct xtables_target masquerade_tg_reg = { .name ="MASQUERADE" , .version =XTABLES_VERSION ,
@@ -146,6 +169,7 @@ static struct xtables_target masquerade_tg_reg = { .print = MASQUERADE_print, .save = MASQUERADE_save, .x6_options = MASQUERADE_opts, + .xlate = MASQUERADE_xlate, };void _init (void )
Signature · 1 line
1.9.1
Quoted 4 lines · Shivani Bhardwaj
Add translation for masquerade to nftables.
Examples:
Quoted 8 lines
$ sudo iptables-translate -t nat -A POSTROUTING -j MASQUERADE nft add rule ip nat POSTROUTING counter masquerade$ sudo iptables-translate -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports 10 nft add rule ip nat POSTROUTING ip protocol tcp counter masquerade to :10$ sudo iptables-translate -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports 10-20 --random nft add rule ip nat POSTROUTING ip protocol tcp counter masquerade to :10-20 random
Applied, thanks Shivani.
Quoted 22 lines
Signed-off-by Shivani Bhardwaj <[email protected]>---
Changes in v2:
Add code for masquerade port range selectionextensions/libipt_MASQUERADE.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)extensions/libipt_MASQUERADE.c +5
-0@@ -134,6 +134,29 @@ MASQUERADE_save(const void *ip, const struct xt_entry_target *target)printf (" --random" ); } +static int +MASQUERADE_xlate (const struct xt_entry_target *target, +struct xt_xlate *xl,int numeric) +{ + const struct nf_nat_ipv4_multi_range_compat *mr =
extensions/libipt_MASQUERADE.c MASQUERADE_save(const void *ip, const struct xt_entry_target *target) · line 151
Quoted 10 lines
extensions/libipt_MASQUERADE.c +10
-0+ (const void *)target->data; +const struct nf_nat_ipv4_range *r = &mr->range[0 ]; + +xt_xlate_add (xl,"masquerade" ); + +if (r->flags &NF_NAT_RANGE_PROTO_SPECIFIED ) { +xt_xlate_add (xl," to :%hu" ,ntohs (r->min.tcp.port)); +if (r->max.tcp.port != r->min.tcp.port) +xt_xlate_add (xl,"-%hu" ,ntohs (r->max.tcp.port)); + }
^^^
I have fixed this minor glitch here.