|
Packit |
c5a612 |
#ifndef NFTABLES_JSON_H
|
|
Packit |
c5a612 |
#define NFTABLES_JSON_H
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#include <errno.h>
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct chain;
|
|
Packit |
c5a612 |
struct cmd;
|
|
Packit |
c5a612 |
struct expr;
|
|
Packit |
c5a612 |
struct netlink_ctx;
|
|
Packit |
c5a612 |
struct nlmsghdr;
|
|
Packit |
c5a612 |
struct rule;
|
|
Packit |
c5a612 |
struct set;
|
|
Packit |
c5a612 |
struct obj;
|
|
Packit |
c5a612 |
struct stmt;
|
|
Packit |
c5a612 |
struct symbol_table;
|
|
Packit |
c5a612 |
struct table;
|
|
Packit |
c5a612 |
struct netlink_mon_handler;
|
|
Packit |
c5a612 |
struct nft_ctx;
|
|
Packit |
c5a612 |
struct location;
|
|
Packit |
c5a612 |
struct output_ctx;
|
|
Packit |
c5a612 |
struct list_head;
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#ifdef HAVE_LIBJANSSON
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#define JSON_SCHEMA_VERSION 1
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#include <jansson.h>
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
json_t *binop_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *relational_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *range_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *meta_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *payload_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *ct_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *concat_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *set_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *set_ref_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *set_elem_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *prefix_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *list_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *unary_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *mapping_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *map_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *exthdr_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *verdict_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *rt_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *numgen_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *hash_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *fib_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *constant_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *socket_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *osf_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *xfrm_expr_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
json_t *integer_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *string_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *boolean_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *inet_protocol_type_json(const struct expr *expr,
|
|
Packit |
c5a612 |
struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *inet_service_type_json(const struct expr *expr,
|
|
Packit |
c5a612 |
struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *mark_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *devgroup_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *ct_label_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *time_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *uid_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *gid_type_json(const struct expr *expr, struct output_ctx *octx);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
json_t *expr_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *payload_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *exthdr_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *quota_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *ct_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *limit_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *fwd_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *notrack_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *dup_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *meta_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *nat_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *reject_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *counter_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *set_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *log_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *objref_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *meter_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *queue_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *verdict_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *connlimit_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *tproxy_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
json_t *synproxy_stmt_json(const struct stmt *stmt, struct output_ctx *octx);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
int do_command_list_json(struct netlink_ctx *ctx, struct cmd *cmd);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
int nft_parse_json_buffer(struct nft_ctx *nft, const char *buf,
|
|
Packit |
c5a612 |
struct list_head *msgs, struct list_head *cmds);
|
|
Packit |
c5a612 |
int nft_parse_json_filename(struct nft_ctx *nft, const char *filename,
|
|
Packit |
c5a612 |
struct list_head *msgs, struct list_head *cmds);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
void monitor_print_table_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct table *t);
|
|
Packit |
c5a612 |
void monitor_print_chain_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct chain *c);
|
|
Packit |
c5a612 |
void monitor_print_set_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct set *s);
|
|
Packit |
c5a612 |
void monitor_print_element_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct set *s);
|
|
Packit |
c5a612 |
void monitor_print_obj_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct obj *o);
|
|
Packit |
c5a612 |
void monitor_print_rule_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct rule *r);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
int json_events_cb(const struct nlmsghdr *nlh,
|
|
Packit |
c5a612 |
struct netlink_mon_handler *monh);
|
|
Packit |
c5a612 |
void json_print_echo(struct nft_ctx *ctx);
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#else /* ! HAVE_LIBJANSSON */
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
typedef void json_t;
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#define JSON_PRINT_STUB(name, arg1_t, arg2_t) \
|
|
Packit |
c5a612 |
static inline json_t *name##_json(arg1_t arg1, arg2_t arg2) { return NULL; }
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#define EXPR_PRINT_STUB(name) \
|
|
Packit |
c5a612 |
JSON_PRINT_STUB(name, const struct expr *, struct output_ctx *)
|
|
Packit |
c5a612 |
#define STMT_PRINT_STUB(name) \
|
|
Packit |
c5a612 |
JSON_PRINT_STUB(name##_stmt, const struct stmt *, struct output_ctx *)
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(binop_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(relational_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(range_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(meta_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(payload_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(ct_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(concat_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(set_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(set_ref_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(set_elem_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(prefix_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(list_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(unary_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(mapping_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(map_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(exthdr_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(verdict_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(rt_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(numgen_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(hash_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(fib_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(constant_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(socket_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(osf_expr)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(xfrm_expr)
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(integer_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(string_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(boolean_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(inet_protocol_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(inet_service_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(mark_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(devgroup_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(ct_label_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(time_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(uid_type)
|
|
Packit |
c5a612 |
EXPR_PRINT_STUB(gid_type)
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(expr)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(payload)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(exthdr)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(quota)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(ct)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(limit)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(fwd)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(notrack)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(dup)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(meta)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(nat)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(reject)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(counter)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(set)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(log)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(objref)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(meter)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(queue)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(verdict)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(connlimit)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(tproxy)
|
|
Packit |
c5a612 |
STMT_PRINT_STUB(synproxy)
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#undef STMT_PRINT_STUB
|
|
Packit |
c5a612 |
#undef EXPR_PRINT_STUB
|
|
Packit |
c5a612 |
#undef JSON_PRINT_STUB
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline int do_command_list_json(struct netlink_ctx *ctx, struct cmd *cmd)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
return -1;
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline int
|
|
Packit |
c5a612 |
nft_parse_json_buffer(struct nft_ctx *nft, const char *buf,
|
|
Packit |
c5a612 |
struct list_head *msgs, struct list_head *cmds)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
return -EINVAL;
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline int
|
|
Packit |
c5a612 |
nft_parse_json_filename(struct nft_ctx *nft, const char *filename,
|
|
Packit |
c5a612 |
struct list_head *msgs, struct list_head *cmds)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
return -EINVAL;
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_table_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct table *t)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_chain_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct chain *c)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_set_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct set *s)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_element_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct set *s)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_obj_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct obj *o)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void monitor_print_rule_json(struct netlink_mon_handler *monh,
|
|
Packit |
c5a612 |
const char *cmd, struct rule *r)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline int json_events_cb(const struct nlmsghdr *nlh,
|
|
Packit |
c5a612 |
struct netlink_mon_handler *monh)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
return -1;
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
static inline void json_print_echo(struct nft_ctx *ctx)
|
|
Packit |
c5a612 |
{
|
|
Packit |
c5a612 |
/* empty */
|
|
Packit |
c5a612 |
}
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#endif /* HAVE_LIBJANSSON */
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#endif /* NFTABLES_JSON_H */
|