Blame include/parser.h

Packit c5a612
#ifndef NFTABLES_PARSER_H
Packit c5a612
#define NFTABLES_PARSER_H
Packit c5a612
Packit c5a612
#include <list.h>
Packit c5a612
#include <rule.h> // FIXME
Packit c5a612
#include <nftables.h>
Packit c5a612
Packit c5a612
#define TABSIZE				8
Packit c5a612
Packit c5a612
#define YYLTYPE				struct location
Packit c5a612
#define YYLTYPE_IS_TRIVIAL		0
Packit c5a612
#define YYENABLE_NLS			0
Packit c5a612
Packit c5a612
#define SCOPE_NEST_MAX			3
Packit c5a612
Packit c5a612
struct parser_state {
Packit c5a612
	struct input_descriptor		*indesc;
Packit c5a612
	struct input_descriptor		*indescs[MAX_INCLUDE_DEPTH];
Packit c5a612
	unsigned int			indesc_idx;
Packit c5a612
	struct list_head		indesc_list;
Packit c5a612
Packit c5a612
	struct list_head		*msgs;
Packit c5a612
	unsigned int			nerrs;
Packit c5a612
Packit c5a612
	struct scope			*scopes[SCOPE_NEST_MAX];
Packit c5a612
	unsigned int			scope;
Packit c5a612
Packit c5a612
	struct list_head		*cmds;
Packit c5a612
};
Packit c5a612
Packit c5a612
struct mnl_socket;
Packit c5a612
Packit c5a612
extern void parser_init(struct nft_ctx *nft, struct parser_state *state,
Packit c5a612
			struct list_head *msgs, struct list_head *cmds,
Packit c5a612
			struct scope *top_scope);
Packit c5a612
extern int nft_parse(struct nft_ctx *ctx, void *, struct parser_state *state);
Packit c5a612
Packit c5a612
extern void *scanner_init(struct parser_state *state);
Packit c5a612
extern void scanner_destroy(struct nft_ctx *nft);
Packit c5a612
Packit c5a612
extern int scanner_read_file(struct nft_ctx *nft, const char *filename,
Packit c5a612
			     const struct location *loc);
Packit c5a612
extern int scanner_include_file(struct nft_ctx *ctx, void *scanner,
Packit c5a612
				const char *filename,
Packit c5a612
				const struct location *loc);
Packit c5a612
extern void scanner_push_buffer(void *scanner,
Packit c5a612
				const struct input_descriptor *indesc,
Packit c5a612
				const char *buffer);
Packit c5a612
Packit c5a612
#endif /* NFTABLES_PARSER_H */