From d4dbc65c965cb4d94fb5967095e7aa1713ca57c6 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Wed, 25 Jul 2012 11:31:30 +0200 Subject: conntrack: more verbose debugging for BPF filter generation This patch adds more verbose output for the automatic BPF filter generation to sieve netlink messages that are receive via ctnetlink. This code is disabled by default, only useful for debugging so far. It shouldn't be hard to provide a function to explicitly print instead. Signed-off-by: Pablo Neira Ayuso --- src/conntrack/bsf.c | 100 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 86 insertions(+), 14 deletions(-) diff --git a/src/conntrack/bsf.c b/src/conntrack/bsf.c index dddeccb..846b6f9 100644 --- a/src/conntrack/bsf.c +++ b/src/conntrack/bsf.c @@ -25,20 +25,78 @@ #define NFCT_FILTER_ACCEPT ~0U #if 0 -static void show_filter(struct sock_filter *this, int size) +static char *code2str(u_int16_t code) +{ + switch(code) { + case BPF_LD|BPF_IMM: + return "BPF_LD|BPF_IMM"; + break; + case BPF_LDX|BPF_IMM: + return "BPF_LDX|BPF_IMM"; + break; + case BPF_LD|BPF_B|BPF_ABS: + return "BPF_LD|BPF_B|BPF_ABS"; + break; + case BPF_JMP|BPF_JEQ|BPF_K: + return "BPF_JMP|BPF_JEQ|BPF_K"; + break; + case BPF_ALU|BPF_AND|BPF_K: + return "BPF_ALU|BPF_AND|BPF_K"; + break; + case BPF_JMP|BPF_JA: + return "BPF_JMP|BPF_JA"; + break; + case BPF_RET|BPF_K: + return "BPF_RET|BPF_K"; + break; + case BPF_ALU|BPF_ADD|BPF_K: + return "BPF_ALU|BPF_ADD|BPF_K"; + break; + case BPF_MISC|BPF_TAX: + return "BPF_MISC|BPF_TAX"; + break; + case BPF_LD|BPF_B|BPF_IND: + return "BPF_LD|BPF_B|BPF_IND"; + break; + case BPF_LD|BPF_H|BPF_IND: + return "BPF_LD|BPF_H|BPF_IND"; + break; + case BPF_LD|BPF_W|BPF_IND: + return "BPF_LD|BPF_W|BPF_IND"; + break; + } + return NULL; +} + +static void show_filter(struct sock_filter *this, int from, int to, char *str) { int i; - for(i=0; i