1 87a52e04 2005-12-26 devnull typedef struct Field Field;
2 87a52e04 2005-12-26 devnull typedef struct Filter Filter;
3 87a52e04 2005-12-26 devnull typedef struct Msg Msg;
4 87a52e04 2005-12-26 devnull typedef struct Mux Mux;
5 87a52e04 2005-12-26 devnull typedef struct Proto Proto;
7 87a52e04 2005-12-26 devnull #define NetS(x) ((((uchar*)x)[0]<<8) | ((uchar*)x)[1])
8 87a52e04 2005-12-26 devnull #define Net3(x) ((((uchar*)x)[0]<<16) | (((uchar*)x)[1]<<8) | ((uchar*)x)[2])
9 17b19538 2008-07-24 rsc #define NetL(x) (((ulong)((((uchar*)x)[0]<<24) | (((uchar*)x)[1]<<16) | (((uchar*)x)[2]<<8) | ((uchar*)x)[3]))&0xFFFFFFFFU)
11 17b19538 2008-07-24 rsc #define LittleS(x) ((((uchar*)x)[1]<<8) | ((uchar*)x)[0])
12 17b19538 2008-07-24 rsc #define LittleL(x) (((ulong)((((uchar*)x)[3]<<24) | (((uchar*)x)[2]<<16) | (((uchar*)x)[1]<<8) | ((uchar*)x)[0]))&0xFFFFFFFFU)
15 87a52e04 2005-12-26 devnull * one per protocol module
17 87a52e04 2005-12-26 devnull struct Proto
19 87a52e04 2005-12-26 devnull char* name;
20 87a52e04 2005-12-26 devnull void (*compile)(Filter*);
21 87a52e04 2005-12-26 devnull int (*filter)(Filter*, Msg*);
22 87a52e04 2005-12-26 devnull int (*seprint)(Msg*);
23 87a52e04 2005-12-26 devnull Mux* mux;
24 a38a1836 2006-02-14 devnull char* valfmt;
25 87a52e04 2005-12-26 devnull Field* field;
26 87a52e04 2005-12-26 devnull int (*framer)(int, uchar*, int);
28 87a52e04 2005-12-26 devnull extern Proto *protos[];
31 87a52e04 2005-12-26 devnull * one per protocol module, pointed to by Proto.mux
33 87a52e04 2005-12-26 devnull struct Mux
35 87a52e04 2005-12-26 devnull char* name;
36 87a52e04 2005-12-26 devnull ulong val;
37 87a52e04 2005-12-26 devnull Proto* pr;
41 87a52e04 2005-12-26 devnull * a field defining a comparison filter
43 87a52e04 2005-12-26 devnull struct Field
45 87a52e04 2005-12-26 devnull char* name;
46 87a52e04 2005-12-26 devnull int ftype;
47 87a52e04 2005-12-26 devnull int subop;
48 87a52e04 2005-12-26 devnull char* help;
52 87a52e04 2005-12-26 devnull * the status of the current message walk
54 87a52e04 2005-12-26 devnull struct Msg
56 87a52e04 2005-12-26 devnull uchar *ps; /* packet ptr */
57 87a52e04 2005-12-26 devnull uchar *pe; /* packet end */
59 87a52e04 2005-12-26 devnull char *p; /* buffer start */
60 87a52e04 2005-12-26 devnull char *e; /* buffer end */
62 87a52e04 2005-12-26 devnull int needroot; /* pr is root, need to see in expression */
63 fa325e9b 2020-01-10 cross Proto *pr; /* current/next protocol */
68 87a52e04 2005-12-26 devnull Fnum, /* just a number */
69 87a52e04 2005-12-26 devnull Fether, /* ethernet address */
70 87a52e04 2005-12-26 devnull Fv4ip, /* v4 ip address */
71 87a52e04 2005-12-26 devnull Fv6ip, /* v6 ip address */
72 87a52e04 2005-12-26 devnull Fba, /* byte array */
76 87a52e04 2005-12-26 devnull * a node in the filter tree
78 87a52e04 2005-12-26 devnull struct Filter {
79 87a52e04 2005-12-26 devnull int op; /* token type */
80 87a52e04 2005-12-26 devnull char *s; /* string */
81 87a52e04 2005-12-26 devnull Filter *l;
82 87a52e04 2005-12-26 devnull Filter *r;
84 87a52e04 2005-12-26 devnull Proto *pr; /* next protocol;
86 87a52e04 2005-12-26 devnull /* protocol specific */
87 87a52e04 2005-12-26 devnull int subop;
88 87a52e04 2005-12-26 devnull ulong param;
90 87a52e04 2005-12-26 devnull ulong ulv;
91 87a52e04 2005-12-26 devnull vlong vlv;
92 87a52e04 2005-12-26 devnull uchar a[32];
96 87a52e04 2005-12-26 devnull extern void yyinit(char*);
97 87a52e04 2005-12-26 devnull extern int yyparse(void);
98 87a52e04 2005-12-26 devnull extern Filter* newfilter(void);
99 87a52e04 2005-12-26 devnull extern void compile_cmp(char*, Filter*, Field*);
100 87a52e04 2005-12-26 devnull extern void demux(Mux*, ulong, ulong, Msg*, Proto*);
101 87a52e04 2005-12-26 devnull extern int defaultframer(int, uchar*, int);
102 87a52e04 2005-12-26 devnull extern int opendevice(char*, int);
104 87a52e04 2005-12-26 devnull extern int Nflag;
105 87a52e04 2005-12-26 devnull extern int dflag;
106 87a52e04 2005-12-26 devnull extern int Cflag;
108 87a52e04 2005-12-26 devnull typedef Filter *Filterptr;
109 87a52e04 2005-12-26 devnull #define YYSTYPE Filterptr
110 87a52e04 2005-12-26 devnull extern Filter *filter;