Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
dfvm.h
1 /*
2  * Wireshark - Network traffic analyzer
3  * By Gerald Combs <gerald@wireshark.org>
4  * Copyright 2001 Gerald Combs
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8 
9 #ifndef DFVM_H
10 #define DFVM_H
11 
12 #include <epan/proto.h>
13 #include "dfilter-int.h"
14 #include "syntax-tree.h"
15 #include "drange.h"
16 #include "dfunctions.h"
17 
18 typedef enum {
19  EMPTY,
20  FVALUE,
21  HFINFO,
22  INSN_NUMBER,
23  REGISTER,
24  INTEGER,
25  DRANGE,
26  FUNCTION_DEF
27 } dfvm_value_type_t;
28 
29 typedef struct {
30  dfvm_value_type_t type;
31 
32  union {
33  fvalue_t *fvalue;
34  guint32 numeric;
35  drange_t *drange;
36  header_field_info *hfinfo;
37  df_func_def_t *funcdef;
38  } value;
39 
40 } dfvm_value_t;
41 
42 
43 typedef enum {
44 
45  IF_TRUE_GOTO,
46  IF_FALSE_GOTO,
47  CHECK_EXISTS,
48  NOT,
49  RETURN,
50  READ_TREE,
51  PUT_FVALUE,
52  ANY_EQ,
53  ANY_NE,
54  ANY_GT,
55  ANY_GE,
56  ANY_LT,
57  ANY_LE,
58  ANY_BITWISE_AND,
59  ANY_CONTAINS,
60  ANY_MATCHES,
61  MK_RANGE,
62  CALL_FUNCTION,
63  ANY_IN_RANGE
64 
65 } dfvm_opcode_t;
66 
67 typedef struct {
68  int id;
69  dfvm_opcode_t op;
70  dfvm_value_t *arg1;
71  dfvm_value_t *arg2;
72  dfvm_value_t *arg3;
73  dfvm_value_t *arg4;
74 } dfvm_insn_t;
75 
77 dfvm_insn_new(dfvm_opcode_t op);
78 
79 void
80 dfvm_insn_free(dfvm_insn_t *insn);
81 
83 dfvm_value_new(dfvm_value_type_t type);
84 
85 void
86 dfvm_dump(FILE *f, dfilter_t *df);
87 
88 gboolean
89 dfvm_apply(dfilter_t *df, proto_tree *tree);
90 
91 void
92 dfvm_init_const(dfilter_t *df);
93 
94 #endif
Definition: proto.h:622
Definition: dfilter-int.h:19
Definition: ftypes.h:200
Definition: dfvm.h:67
Definition: proto.h:759
Definition: drange.h:41
Definition: dfvm.h:29
Definition: dfunctions.h:30