diff options
Diffstat (limited to 'src/internal.h')
-rw-r--r-- | src/internal.h | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/src/internal.h b/src/internal.h deleted file mode 100644 index 9ebf7d7..0000000 --- a/src/internal.h +++ /dev/null @@ -1,248 +0,0 @@ -#ifndef INTERNAL_H -#define INTERNAL_H 1 - -#include "config.h" -#ifdef HAVE_VISIBILITY_HIDDEN -# define __visible __attribute__((visibility("default"))) -# define EXPORT_SYMBOL(x) typeof(x) (x) __visible -#else -# define EXPORT_SYMBOL -#endif - -#include "linux_list.h" - -#include <stdint.h> -#include <stdbool.h> -#include <libnftnl/common.h> -#include <linux/netfilter/nf_tables.h> - -#define xfree(ptr) free((void *)ptr); - -#define BASE_DEC 10 -#define BASE_HEX 16 - -#define NFT_SNPRINTF_BUFSIZ 4096 - -enum nft_type { - NFT_TYPE_U8, - NFT_TYPE_U16, - NFT_TYPE_U32, - NFT_TYPE_U64, - NFT_TYPE_S8, - NFT_TYPE_S16, - NFT_TYPE_S32, - NFT_TYPE_S64, -}; - -struct nft_parse_err { - int line; - int column; - int error; - const char *node_name; -}; - -enum nft_parse_input { - NFT_PARSE_BUFFER, - NFT_PARSE_FILE, -}; - -#ifdef XML_PARSING -#include <mxml.h> -#define NFT_XML_MAND 0 -#define NFT_XML_OPT (1 << 0) -mxml_node_t *nft_mxml_build_tree(const void *data, const char *treename, - struct nft_parse_err *err, enum nft_parse_input input); -struct nft_set_list; -struct nft_rule_expr *nft_mxml_expr_parse(mxml_node_t *node, - struct nft_parse_err *err, - struct nft_set_list *set_list); -int nft_mxml_reg_parse(mxml_node_t *tree, const char *reg_name, uint32_t *reg, - uint32_t mxmlflags, uint32_t flags, - struct nft_parse_err *err); -union nft_data_reg; -int nft_mxml_data_reg_parse(mxml_node_t *tree, const char *node_name, - union nft_data_reg *data_reg, uint16_t flags, - struct nft_parse_err *err); -int nft_mxml_num_parse(mxml_node_t *tree, const char *node_name, - uint32_t mxml_flags, int base, void *number, - enum nft_type type, uint16_t flags, - struct nft_parse_err *err); -const char *nft_mxml_str_parse(mxml_node_t *tree, const char *node_name, - uint32_t mxml_flags, uint16_t flags, - struct nft_parse_err *err); -int nft_mxml_family_parse(mxml_node_t *tree, const char *node_name, - uint32_t mxml_flags, uint16_t flags, - struct nft_parse_err *err); - -struct nft_set_elem; -int nft_mxml_set_elem_parse(mxml_node_t *node, struct nft_set_elem *e, - struct nft_parse_err *err); -struct nft_table; -int nft_mxml_table_parse(mxml_node_t *tree, struct nft_table *t, - struct nft_parse_err *err); -struct nft_chain; -int nft_mxml_chain_parse(mxml_node_t *tree, struct nft_chain *c, - struct nft_parse_err *err); -struct nft_rule; -int nft_mxml_rule_parse(mxml_node_t *tree, struct nft_rule *r, - struct nft_parse_err *err, - struct nft_set_list *set_list); -struct nft_set; -int nft_mxml_set_parse(mxml_node_t *tree, struct nft_set *s, - struct nft_parse_err *err); -#endif - -struct nft_set_list; -struct nft_rule_expr; -int nft_set_lookup_id(struct nft_rule_expr *e, struct nft_set_list *set_list, - uint32_t *set_id); - -#ifdef JSON_PARSING -#include <jansson.h> - -int nft_jansson_parse_val(json_t *root, const char *node_name, int type, - void *out, struct nft_parse_err *err); -const char *nft_jansson_parse_str(json_t *root, const char *node_name, - struct nft_parse_err *err); -bool nft_jansson_node_exist(json_t *root, const char *node_name); -json_t *nft_jansson_create_root(const void *json, json_error_t *error, - struct nft_parse_err *err, enum nft_parse_input input); -json_t *nft_jansson_get_node(json_t *root, const char *node_name, - struct nft_parse_err *err); -void nft_jansson_free_root(json_t *root); -int nft_jansson_parse_family(json_t *root, void *out, struct nft_parse_err *err); -int nft_jansson_str2num(json_t *root, const char *node_name, int base, void *out, - enum nft_type type, struct nft_parse_err *err); -int nft_jansson_parse_reg(json_t *root, const char *node_name, int type, - void *out, struct nft_parse_err *err); -struct nft_rule_expr *nft_jansson_expr_parse(json_t *root, - struct nft_parse_err *err, - struct nft_set_list *set_list); -union nft_data_reg; -int nft_jansson_data_reg_parse(json_t *root, const char *node_name, - union nft_data_reg *data_reg, - struct nft_parse_err *err); -struct nft_set_elem; -int nft_jansson_set_elem_parse(struct nft_set_elem *e, json_t *root, - struct nft_parse_err *err); -struct nft_table; -int nft_jansson_parse_table(struct nft_table *t, json_t *tree, - struct nft_parse_err *err); -struct nft_chain; -int nft_jansson_parse_chain(struct nft_chain *c, json_t *tree, - struct nft_parse_err *err); -struct nft_rule; -struct nft_set_list; -int nft_jansson_parse_rule(struct nft_rule *r, json_t *tree, - struct nft_parse_err *err, - struct nft_set_list *set_list); -struct nft_set; -int nft_jansson_parse_set(struct nft_set *s, json_t *tree, - struct nft_parse_err *err); -int nft_jansson_parse_elem(struct nft_set *s, json_t *tree, - struct nft_parse_err *err); -#endif - -const char *nft_family2str(uint32_t family); -int nft_str2family(const char *family); -int nft_strtoi(const char *string, int base, void *number, enum nft_type type); -const char *nft_verdict2str(uint32_t verdict); -int nft_str2verdict(const char *verdict, int *verdict_num); -int nft_get_value(enum nft_type type, void *val, void *out); -enum nft_cmd_type nft_flag2cmd(uint32_t flags); -const char *nft_cmd2tag(enum nft_cmd_type cmd); -uint32_t nft_str2cmd(const char *cmd); - -#include <stdio.h> -int nft_fprintf(FILE *fp, void *obj, uint32_t cmd, uint32_t type, - uint32_t flags, int (*snprintf_cb)(char *buf, size_t bufsiz, - void *obj, uint32_t cmd, uint32_t type, uint32_t flags)); -int nft_cmd_header_snprintf(char *buf, size_t bufsize, uint32_t cmd, - uint32_t format, uint32_t flags); -int nft_cmd_header_fprintf(FILE *fp, uint32_t cmd, uint32_t format, - uint32_t flags); -int nft_cmd_footer_snprintf(char *buf, size_t bufsize, uint32_t cmd, - uint32_t format, uint32_t flags); -int nft_cmd_footer_fprintf(FILE *fp, uint32_t cmd, uint32_t format, - uint32_t flags); - -struct expr_ops; - -struct nft_rule_expr { - struct list_head head; - uint32_t flags; - struct expr_ops *ops; - uint8_t data[]; -}; - -struct nlattr; - -struct nft_set { - struct list_head head; - - uint32_t family; - uint32_t set_flags; - const char *table; - const char *name; - uint32_t key_type; - uint32_t key_len; - uint32_t data_type; - uint32_t data_len; - uint32_t id; - enum nft_set_policies policy; - struct { - uint32_t size; - } desc; - struct list_head element_list; - - uint32_t flags; -}; - -#include "expr/data_reg.h" - -struct nft_set_elem { - struct list_head head; - uint32_t set_elem_flags; - union nft_data_reg key; - union nft_data_reg data; - uint32_t flags; -}; - -#define SNPRINTF_BUFFER_SIZE(ret, size, len, offset) \ - if (ret < 0) \ - return ret; \ - offset += ret; \ - if (ret > len) \ - ret = len; \ - size += ret; \ - len -= ret; - -#define div_round_up(n, d) (((n) + (d) - 1) / (d)) - -#define __init __attribute__((constructor)) - -void __nft_assert_fail(uint16_t attr, const char *filename, int line); - -#define nft_assert(val, attr, expr) \ - ((!val || expr) \ - ? (void)0 \ - : __nft_assert_fail(attr, __FILE__, __LINE__)) - -#define nft_assert_validate(data, _validate_array, _attr, _data_len) \ -({ \ - if (!data) \ - __nft_assert_fail(attr, __FILE__, __LINE__); \ - if (_validate_array[_attr]) \ - nft_assert(data, attr, _validate_array[_attr] == _data_len); \ -}) - -#define __noreturn __attribute__((__noreturn__)) - -void __noreturn __abi_breakage(const char *file, int line, const char *reason); - -#include <string.h> - -#define abi_breakage() \ - __abi_breakage(__FILE__, __LINE__, strerror(errno)); - -#endif |