extensions: libxt_devgroup: Add translation to nft
PATCH 1/1 extensions: libxt_devgroup: Add translation to nft
Add translation of device group to nftables.
Examples:
$ sudo iptables-translate -A FORWARD -m devgroup --dst-group 0xc/0xc -j ACCEPT nft add rule ip filter FORWARD oifgroup and 0xc == 0xc counter accept
$ sudo iptables-translate -A FORWARD -m devgroup --src-group 20 -j ACCEPT nft add rule ip filter FORWARD iifgroup 0x14 counter accept
$ sudo iptables-translate -t mangle -A PREROUTING -p tcp --dport 46000 -m devgroup --src-group 23 -j ACCEPT nft add rule ip mangle PREROUTING tcp dport 46000 iifgroup 0x17 counter accept
--- extensions/libxt_devgroup.c | 62 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-)
extensions/libxt_devgroup.c +57 -5
@@ -37,6 +37,7 @@ static struct xtables_lmap *devgroups;static void devgroup_init (struct xt_entry_match *match) {const char file[] ="/etc/iproute2/group_map" ; + devgroups =xtables_lmap_init (file);if (devgroups ==NULL && errno !=ENOENT )fprintf (stderr,"Warning: %s: %s\n" , file,strerror (errno));
@@ -52,7 +53,7 @@ static void devgroup_parse_groupspec(const char *arg, unsigned int *group,if (ok && (*end =='/' || *end =='\0' )) {if (*end =='/' ) ok =xtables_strtoui (end +1 ,NULL , mask, -0 ,UINT32_MAX ); +0 ,UINT32_MAX );else *mask = ~0U ;if (!ok)
@@ -124,12 +125,12 @@ static void devgroup_show(const char *pfx, const struct xt_devgroup_info *info,if (info->flags &XT_DEVGROUP_INVERT_DST )printf (" !" );printf (" %sdst-group " , pfx); -print_devgroup (info->src_group, info->src_mask, numeric); +print_devgroup (info->dst_group, info->dst_mask, numeric); } }static void devgroup_print (const void *ip,const struct xt_entry_match *match, -int numeric) +int numeric) {const struct xt_devgroup_info *info = (const void *)match->data;
@@ -147,8 +148,58 @@ static void devgroup_check(struct xt_fcheck_call *cb) {if (cb->xflags ==0 )xtables_error (PARAMETER_PROBLEM , -"devgroup match: You must specify either " -"'--src-group' or '--dst-group'" ); +"devgroup match: You must specify either '--src-group' or '--dst-group'" ); +} + +static void +print_devgroup_xlate (unsigned int id,unsigned int mask, +struct xt_buf *buf,int numeric) +{ +const char *name =NULL ; + +if (mask !=0xffffffffU ) +xt_buf_add (buf,"and 0x%x == 0x%x " , id, mask); +else { +if (numeric ==0 ) + name =xtables_lmap_id2name (devgroups, id); +if (name) +xt_buf_add (buf,"%s " , name); +else +xt_buf_add (buf,"0x%x " , id); + } +} + +static void +devgroup_show_xlate (const char *pfx,const struct xt_devgroup_info *info, +struct xt_buf *buf,int numeric) +{ +if (info->flags &XT_DEVGROUP_MATCH_SRC ) { +if (info->flags &XT_DEVGROUP_INVERT_SRC ) +xt_buf_add (buf," !=" ); + +xt_buf_add (buf," %siifgroup " , pfx); +print_devgroup_xlate (info->src_group, info->src_mask, + buf, numeric); + } + +if (info->flags &XT_DEVGROUP_MATCH_DST ) { +if (info->flags &XT_DEVGROUP_INVERT_DST ) +xt_buf_add (buf," !=" ); + +xt_buf_add (buf," %soifgroup " , pfx); +print_devgroup_xlate (info->dst_group, info->dst_mask, + buf, numeric); + } +} + +static int devgroup_xlate (const struct xt_entry_match *match, +struct xt_buf *buf,int numeric) +{ +const struct xt_devgroup_info *info = (const void *)match->data; + +devgroup_show_xlate ("" , info, buf,0 ); + +return 1 ; }static struct xtables_match devgroup_mt_reg = {
@@ -164,6 +215,7 @@ static struct xtables_match devgroup_mt_reg = { .x6_parse = devgroup_parse, .x6_fcheck = devgroup_check, .x6_options = devgroup_opts, + .xlate = devgroup_xlate, };void _init (void )
Signature · 1 line
1.9.1
Pablo Neira Ayuso
maintainerQuoted 1 line · Shivani Bhardwaj
Add translation of device group to nftables.
git am /tmp/extensions-libxt_devgroup-Add-translation-to-nft.patch -s
Applying: extensions: libxt_devgroup: Add translation to nft
error: patch failed: extensions/libxt_devgroup.c:37
error: extensions/libxt_devgroup.c: patch does not apply Patch failed at 0001 extensions: libxt_devgroup: Add translation to nft The copy of the patch that failed is found in:
/home/pablo/devel/scm/git-netfilter/iptables/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort".
This one doesn't apply for some reason.
Quoted 14 lines · Pablo Neira Ayuso
Quoted 1 line · Shivani Bhardwaj
Add translation of device group to nftables.
git am
/tmp/extensions-libxt_devgroup-Add-translation-to-nft.patch-s
Applying: extensions:libxt_devgroup: Add translation to nft
error: patch failed:extensions/libxt_devgroup.c:37
error:extensions/libxt_devgroup.c: patch does not apply Patch failed at 0001 extensions:libxt_devgroup: Add translation to nft The copy of the patch that failed is found in:
/home/pablo/devel/scm/git-netfilter/iptables/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort".
Quoted 1 line
This one doesn't apply for some reason.
Should I be sending this one again then?
Pablo Neira Ayuso
maintainerQuoted 15 lines · Shivani Bhardwaj
Quoted 14 lines · Pablo Neira Ayuso
Quoted 1 line · Shivani Bhardwaj
Add translation of device group to nftables.
git am
/tmp/extensions-libxt_devgroup-Add-translation-to-nft.patch-s
Applying: extensions:libxt_devgroup: Add translation to nft
error: patch failed:extensions/libxt_devgroup.c:37
error:extensions/libxt_devgroup.c: patch does not apply Patch failed at 0001 extensions:libxt_devgroup: Add translation to nft The copy of the patch that failed is found in:
/home/pablo/devel/scm/git-netfilter/iptables/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort".
Quoted 3 lines
Quoted 1 line
This one doesn't apply for some reason.
Should I be sending this one again then?
Of course. If you can't see a patch here:
http://git.netfilter.org/iptables/log/?h=xlate3
Then it needs to be submitted again.