]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: set chain->hookstr from delinearization
authorPablo Neira Ayuso <pablo@netfilter.org>
Fri, 3 Jul 2015 21:09:03 +0000 (23:09 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 6 Jul 2015 16:47:32 +0000 (18:47 +0200)
Set human readable hookname chain->hookstr field from delinearize.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/rule.h
src/netlink.c
src/rule.c

index 5d4459932775e3c45da46439b061315f28e586d0..8ec7f9102414abf614ed879ec7642c1a10c20c4d 100644 (file)
@@ -138,6 +138,7 @@ extern struct chain *chain_lookup(const struct table *table,
                                  const struct handle *h);
 
 extern const char *family2str(unsigned int family);
+extern const char *hooknum2str(unsigned int family, unsigned int hooknum);
 extern void chain_print_plain(const struct chain *chain);
 
 /**
index 429eed403327e683808f566867435d4a9b4dc779..d11d82f8d0fb1f1603dd42b2ede185248d1af229 100644 (file)
@@ -691,6 +691,8 @@ static struct chain *netlink_delinearize_chain(struct netlink_ctx *ctx,
            nft_chain_attr_is_set(nlc, NFT_CHAIN_ATTR_POLICY)) {
                chain->hooknum       =
                        nft_chain_attr_get_u32(nlc, NFT_CHAIN_ATTR_HOOKNUM);
+               chain->hookstr       =
+                       hooknum2str(chain->handle.family, chain->hooknum);
                chain->priority      =
                        nft_chain_attr_get_s32(nlc, NFT_CHAIN_ATTR_PRIO);
                chain->type          =
index 39b4d9a8fc9db547f2e43eef86ce3576ef00452b..993f9704b6e4c4df6122009fb76a807d0321c09a 100644 (file)
@@ -408,7 +408,7 @@ const char *family2str(unsigned int family)
        return "unknown";
 }
 
-static const char *hooknum2str(unsigned int family, unsigned int hooknum)
+const char *hooknum2str(unsigned int family, unsigned int hooknum)
 {
        switch (family) {
        case NFPROTO_IPV4:
@@ -466,8 +466,7 @@ static void chain_print(const struct chain *chain)
        printf("\tchain %s {\n", chain->handle.chain);
        if (chain->flags & CHAIN_F_BASECHAIN) {
                printf("\t\ttype %s hook %s priority %d; policy %s;\n",
-                      chain->type,
-                      hooknum2str(chain->handle.family, chain->hooknum),
+                      chain->type, chain->hookstr,
                       chain->priority, chain_policy2str(chain->policy));
        }
        list_for_each_entry(rule, &chain->rules, list) {
@@ -488,8 +487,7 @@ void chain_print_plain(const struct chain *chain)
 
        if (chain->flags & CHAIN_F_BASECHAIN) {
                printf(" { type %s hook %s priority %d; policy %s; }",
-                      chain->type,
-                      hooknum2str(chain->handle.family, chain->hooknum),
+                      chain->type, chain->hookstr,
                       chain->priority, chain_policy2str(chain->policy));
        }