summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bpf_insns.h4
-rw-r--r--bpf_parser.y16
2 files changed, 11 insertions, 9 deletions
diff --git a/bpf_insns.h b/bpf_insns.h
index 193f0b7..47db2e3 100644
--- a/bpf_insns.h
+++ b/bpf_insns.h
@@ -1,6 +1,10 @@
#ifndef BPF_INSNS_H
#define BPF_INSNS_H
+#ifndef BPF_MAXINSNS
+# define BPF_MAXINSNS 4096
+#endif
+
#define BPF_CLASS(code) ((code) & 0x07)
#define BPF_LD 0x00
#define BPF_LDX 0x01
diff --git a/bpf_parser.y b/bpf_parser.y
index 19268ae..a101057 100644
--- a/bpf_parser.y
+++ b/bpf_parser.y
@@ -17,6 +17,7 @@
#include <stdint.h>
#include <errno.h>
#include <libgen.h>
+#include <linux/filter.h>
#include "bpf.h"
#include "str.h"
@@ -25,20 +26,17 @@
#include "built_in.h"
#include "die.h"
-#define MAX_INSTRUCTIONS 4096
-
int compile_filter(char *file, int verbose, int bypass, int format,
bool invoke_cpp);
static int curr_instr = 0;
-static struct sock_filter out[MAX_INSTRUCTIONS];
-
-static char *labels[MAX_INSTRUCTIONS];
+static struct sock_filter out[BPF_MAXINSNS];
-static char *labels_jt[MAX_INSTRUCTIONS];
-static char *labels_jf[MAX_INSTRUCTIONS];
-static char *labels_k[MAX_INSTRUCTIONS];
+static char *labels[BPF_MAXINSNS];
+static char *labels_jt[BPF_MAXINSNS];
+static char *labels_jf[BPF_MAXINSNS];
+static char *labels_k[BPF_MAXINSNS];
#define YYERROR_VERBOSE 0
#define YYDEBUG 0
@@ -54,7 +52,7 @@ extern char *yytext;
static inline void check_max_instr(void)
{
- if (curr_instr >= MAX_INSTRUCTIONS)
+ if (curr_instr >= BPF_MAXINSNS)
panic("Exceeded maximal number of instructions!\n");
}