From 013227cb6f13cbab2fbccbeb750199a051fd7a43 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Wed, 10 Jul 2013 18:34:57 +0200 Subject: examples: nft-{table,chain,rule}-xml-add: fix missing NLM_F_CREATE Thus, automodule loading was not working. While at it, apply not so relevant comestic cleanups and fix some inconsistencies between examples. * Fix copyright header, this is code heavily based on existing nft-*-add examples. * Remove unrequired extern struct nft_table definition. * Make sure we close file descriptor once we don't need it anymore. * Remove unrequired casting. * Remove comment that provides nothing interesting. I considered a patch to address each on those was too much burden. Signed-off-by: Pablo Neira Ayuso --- examples/nft-chain-xml-add.c | 12 +++++++----- examples/nft-rule-xml-add.c | 9 +++++++-- examples/nft-table-xml-add.c | 21 ++++++++------------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/examples/nft-chain-xml-add.c b/examples/nft-chain-xml-add.c index 80a513d..2e2fe11 100644 --- a/examples/nft-chain-xml-add.c +++ b/examples/nft-chain-xml-add.c @@ -1,10 +1,13 @@ /* - * 2013 by Arturo Borrero Gonzalez + * (C) 2013 by Pablo Neira Ayuso + * (C) 2013 by Arturo Borrero Gonzalez * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. + * + * This code has been sponsored by Sophos Astaro */ #include @@ -30,8 +33,7 @@ int main(int argc, char *argv[]) struct nlmsghdr *nlh; uint32_t portid, seq; struct nft_chain *c = NULL; - int ret; - int fd; + int ret, fd; uint16_t family; char xml[4096]; char reprint[4096]; @@ -70,11 +72,11 @@ int main(int argc, char *argv[]) printf("Parsed:\n%s\n", reprint); nft_chain_attr_unset(c, NFT_CHAIN_ATTR_HANDLE); - family = (uint16_t)nft_chain_attr_get_u32(c, NFT_CHAIN_ATTR_FAMILY); + family = nft_chain_attr_get_u32(c, NFT_CHAIN_ATTR_FAMILY); seq = time(NULL); nlh = nft_chain_nlmsg_build_hdr(buf, NFT_MSG_NEWCHAIN, family, - NLM_F_ACK, seq); + NLM_F_CREATE|NLM_F_ACK, seq); nft_chain_nlmsg_build_payload(nlh, c); nft_chain_free(c); diff --git a/examples/nft-rule-xml-add.c b/examples/nft-rule-xml-add.c index 7bd44ff..4de7a69 100644 --- a/examples/nft-rule-xml-add.c +++ b/examples/nft-rule-xml-add.c @@ -1,10 +1,13 @@ /* - * 2013 by Arturo Borrero Gonzalez + * (C) 2013 by Pablo Neira Ayuso + * (C) 2013 by Arturo Borrero Gonzalez * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. + * + * This code has been sponsored by Sophos Astaro */ #include @@ -52,6 +55,7 @@ int main(int argc, char *argv[]) close(fd); exit(EXIT_FAILURE); } + close(fd); r = nft_rule_alloc(); if (r == NULL) { @@ -72,7 +76,8 @@ int main(int argc, char *argv[]) seq = time(NULL); nlh = nft_rule_nlmsg_build_hdr(buf, NFT_MSG_NEWRULE, family, - NLM_F_APPEND|NLM_F_ACK, seq); + NLM_F_CREATE|NLM_F_APPEND|NLM_F_ACK, + seq); nft_rule_nlmsg_build_payload(nlh, r); nft_rule_free(r); diff --git a/examples/nft-table-xml-add.c b/examples/nft-table-xml-add.c index 41df5b4..6de0855 100644 --- a/examples/nft-table-xml-add.c +++ b/examples/nft-table-xml-add.c @@ -1,10 +1,13 @@ /* - * 2013 by Arturo Borrero Gonzalez + * (C) 2013 by Pablo Neira Ayuso + * (C) 2013 by Arturo Borrero Gonzalez * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. + * + * This code has been sponsored by Sophos Astaro */ #include @@ -21,8 +24,6 @@ #include #include -extern struct nft_table nft_table; - int main(int argc, char *argv[]) { struct mnl_socket *nl; @@ -30,8 +31,7 @@ int main(int argc, char *argv[]) struct nlmsghdr *nlh; uint32_t portid, seq; struct nft_table *t = NULL; - int ret; - int fd; + int ret, fd; uint16_t family; char xml[4096]; char reprint[4096]; @@ -52,33 +52,28 @@ int main(int argc, char *argv[]) close(fd); exit(EXIT_FAILURE); } + close(fd); t = nft_table_alloc(); if (t == NULL) { perror("OOM"); - close(fd); exit(EXIT_FAILURE); } - /* Parsing XML now */ if (nft_table_parse(t, NFT_TABLE_PARSE_XML, xml) < 0) { printf("E: Unable to parse XML file: %s\n", strerror(errno)); - close(fd); exit(EXIT_FAILURE); } - close(fd); - nft_table_snprintf(reprint, sizeof(reprint), t, NFT_TABLE_O_XML, 0); printf("Parsed:\n%s\n", reprint); - - family = (uint16_t)nft_table_attr_get_u32(t, NFT_TABLE_ATTR_FAMILY); + family = nft_table_attr_get_u32(t, NFT_TABLE_ATTR_FAMILY); seq = time(NULL); nlh = nft_table_nlmsg_build_hdr(buf, NFT_MSG_NEWTABLE, family, - NLM_F_ACK, seq); + NLM_F_CREATE|NLM_F_ACK, seq); nft_table_nlmsg_build_payload(nlh, t); nft_table_free(t); -- cgit v1.2.3