Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_unix/sys/src/cmd/ip/snoopy/dat.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Field Field;
2
typedef struct Filter Filter;
3
typedef struct Msg Msg;
4
typedef struct Mux Mux;
5
typedef struct Proto Proto;
6
 
7
#define NetS(x) ((((uchar*)x)[0]<<8) | ((uchar*)x)[1])
8
#define Net3(x) ((((uchar*)x)[0]<<16) | (((uchar*)x)[1]<<8) | ((uchar*)x)[2])
9
#define NetL(x) ((((uchar*)x)[0]<<24) | (((uchar*)x)[1]<<16) | (((uchar*)x)[2]<<8) | ((uchar*)x)[3])
10
 
11
/*
12
 *  one per protocol module
13
 */
14
struct Proto
15
{
16
	char*	name;
17
	void	(*compile)(Filter*);
18
	int	(*filter)(Filter*, Msg*);
19
	int	(*seprint)(Msg*);
20
	Mux*	mux;
21
	char*	valfmt;
22
	Field*	field;
23
	int	(*framer)(int, uchar*, int);
24
};
25
extern Proto *protos[];
26
 
27
/*
28
 *  one per protocol module, pointed to by Proto.mux
29
 */
30
struct Mux
31
{
32
	char*	name;
33
	ulong	val;
34
	Proto*	pr;
35
};
36
 
37
/*
38
 *  a field defining a comparison filter
39
 */
40
struct Field
41
{
42
	char*	name;
43
	int	ftype;
44
	int	subop;
45
	char*	help;
46
};
47
 
48
/*
49
 *  the status of the current message walk
50
 */
51
struct Msg
52
{
53
	uchar	*ps;	/* packet ptr */
54
	uchar	*pe;	/* packet end */
55
 
56
	char	*p;	/* buffer start */
57
	char	*e;	/* buffer end */
58
 
59
	int	needroot;	/* pr is root, need to see in expression */
60
	Proto	*pr;	/* current/next protocol */	
61
};
62
 
63
enum
64
{
65
	Fnum,		/* just a number */
66
	Fether,		/* ethernet address */
67
	Fv4ip,		/* v4 ip address */
68
	Fv6ip,		/* v6 ip address */
69
	Fba,		/* byte array */
70
};
71
 
72
/*
73
 *  a node in the filter tree
74
 */
75
struct Filter {
76
	int	op;	/* token type */
77
	char	*s;	/* string */
78
	Filter	*l;
79
	Filter	*r;
80
 
81
	Proto	*pr;	/* next protocol;
82
 
83
	/* protocol specific */
84
	int	subop;
85
	ulong	param;
86
	union {
87
		ulong	ulv;
88
		vlong	vlv;
89
		uchar	a[32];
90
	};
91
};
92
 
93
extern void	yyinit(char*);
94
extern int	yyparse(void);
95
extern Filter*	newfilter(void);
96
extern void	compile_cmp(char*, Filter*, Field*);
97
extern void	demux(Mux*, ulong, ulong, Msg*, Proto*);
98
extern int	defaultframer(int, uchar*, int);
99
 
100
extern int Mflag;
101
extern int Nflag;
102
extern int dflag;
103
extern int Cflag;
104
 
105
typedef Filter *Filterptr;
106
#define YYSTYPE Filterptr
107
extern Filter *filter;