summaryrefslogtreecommitdiffstats
path: root/include/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/parser.h')
-rw-r--r--include/parser.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/parser.h b/include/parser.h
new file mode 100644
index 00000000..2a4c73b4
--- /dev/null
+++ b/include/parser.h
@@ -0,0 +1,36 @@
+#ifndef _PARSER_H
+#define _PARSER_H
+
+#include <list.h>
+
+#define MAX_INCLUDE_DEPTH 16
+#define TABSIZE 8
+
+#define YYLTYPE struct location
+#define YYLTYPE_IS_TRIVIAL 0
+#define YYENABLE_NLS 0
+
+struct parser_state {
+ struct input_descriptor *indesc;
+ struct input_descriptor indescs[MAX_INCLUDE_DEPTH];
+ unsigned int indesc_idx;
+
+ struct list_head *msgs;
+ struct list_head cmds;
+};
+
+extern void parser_init(struct parser_state *state, struct list_head *msgs);
+extern int nft_parse(void *, struct parser_state *state);
+
+extern void *scanner_init(struct parser_state *state);
+extern void scanner_destroy(struct parser_state *state);
+
+extern int scanner_read_file(void *scanner, const char *filename,
+ const struct location *loc);
+extern int scanner_include_file(void *scanner, const char *filename,
+ const struct location *loc);
+extern void scanner_push_buffer(void *scanner,
+ const struct input_descriptor *indesc,
+ const char *buffer);
+
+#endif /* _PARSER_H */