diff options
author | Liping Zhang <liping.zhang@spreadtrum.com> | 2016-08-21 22:34:55 +0800 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-08-22 11:44:33 +0200 |
commit | 55f4d72776ab9a07fdc2ee07ccaada33df98c1a0 (patch) | |
tree | 5751ec401b9c376165845eb2f17d4c92f6c874a6 /extensions/libxt_CLASSIFY.c | |
parent | bd1f88bf85100554d35e74273d907db1fdcd250f (diff) |
extensions: libxt_CLASSIFY: Add translation to nft
For examples:
# iptables-translate -A OUTPUT -j CLASSIFY --set-class 0:0
nft add rule ip filter OUTPUT counter meta priority set none
# iptables-translate -A OUTPUT -j CLASSIFY --set-class ffff:ffff
nft add rule ip filter OUTPUT counter meta priority set root
# iptables-translate -A OUTPUT -j CLASSIFY --set-class 1:234
nft add rule ip filter OUTPUT counter meta priority set 1:234
Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'extensions/libxt_CLASSIFY.c')
-rw-r--r-- | extensions/libxt_CLASSIFY.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/extensions/libxt_CLASSIFY.c b/extensions/libxt_CLASSIFY.c index cd016d8f..ba88f758 100644 --- a/extensions/libxt_CLASSIFY.c +++ b/extensions/libxt_CLASSIFY.c @@ -80,6 +80,31 @@ arpCLASSIFY_print(const void *ip, const struct xt_entry_target *target, CLASSIFY_save(ip, target); } +static int CLASSIFY_xlate(struct xt_xlate *xl, + const struct xt_xlate_tg_params *params) +{ + const struct xt_classify_target_info *clinfo = + (const struct xt_classify_target_info *)params->target->data; + __u32 handle = clinfo->priority; + + xt_xlate_add(xl, "meta priority set "); + + switch (handle) { + case TC_H_ROOT: + xt_xlate_add(xl, "root"); + break; + case TC_H_UNSPEC: + xt_xlate_add(xl, "none"); + break; + default: + xt_xlate_add(xl, "%0x:%0x", TC_H_MAJ(handle) >> 16, + TC_H_MIN(handle)); + break; + } + + return 1; +} + static struct xtables_target classify_target[] = { { .family = NFPROTO_UNSPEC, @@ -92,6 +117,7 @@ static struct xtables_target classify_target[] = { .save = CLASSIFY_save, .x6_parse = CLASSIFY_parse, .x6_options = CLASSIFY_opts, + .xlate = CLASSIFY_xlate, }, { .family = NFPROTO_ARP, @@ -103,6 +129,7 @@ static struct xtables_target classify_target[] = { .print = arpCLASSIFY_print, .x6_parse = CLASSIFY_parse, .x6_options = CLASSIFY_opts, + .xlate = CLASSIFY_xlate, }, }; |