suricata
flow-var.h
Go to the documentation of this file.
1 /* Copyright (C) 2007-2013 Open Information Security Foundation
2  *
3  * You can copy, redistribute or modify this Program under the terms of
4  * the GNU General Public License version 2 as published by the Free
5  * Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * version 2 along with this program; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15  * 02110-1301, USA.
16  */
17 
18 /**
19  * \file
20  *
21  * \author Victor Julien <victor@inliniac.net>
22  * \author Pablo Rincon <pablo.rincon.crespo@gmail.com>
23  */
24 
25 #ifndef __FLOW_VAR_H__
26 #define __FLOW_VAR_H__
27 
28 #include "flow.h"
29 #include "util-var.h"
30 
31 /** Available data types for Flowvars */
32 
33 #define FLOWVAR_TYPE_STR 1
34 #define FLOWVAR_TYPE_INT 2
35 
36 /** Struct used to hold the string data type for flowvars */
37 typedef struct FlowVarTypeStr {
38  uint8_t *value;
39  uint16_t value_len;
41 
42 /** Struct used to hold the integer data type for flowvars */
43 typedef struct FlowVarTypeInt_ {
44  uint32_t value;
46 
47 /** Generic Flowvar Structure */
48 typedef struct FlowVar_ {
49  uint8_t type; /* type, DETECT_FLOWVAR in this case */
50  uint8_t datatype;
51  uint16_t keylen;
52  uint32_t idx; /* name idx */
53  GenericVar *next; /* right now just implement this as a list,
54  * in the long run we have think of something
55  * faster. */
56  union {
59  } data;
60  uint8_t *key;
61 } FlowVar;
62 
63 /** Flowvar Interface API */
64 
65 void FlowVarAddIdValue(Flow *, uint32_t id, uint8_t *value, uint16_t size);
66 void FlowVarAddKeyValue(Flow *f, uint8_t *key, uint16_t keysize, uint8_t *value, uint16_t size);
67 
68 void FlowVarAddIntNoLock(Flow *, uint32_t, uint32_t);
69 void FlowVarAddInt(Flow *, uint32_t, uint32_t);
70 FlowVar *FlowVarGet(Flow *, uint32_t);
71 FlowVar *FlowVarGetByKey(Flow *f, const uint8_t *key, uint16_t keylen);
72 void FlowVarFree(FlowVar *);
73 void FlowVarPrint(GenericVar *);
74 
75 #endif /* __FLOW_VAR_H__ */
76 
FlowVar_::data
union FlowVar_::@118 data
FlowVarAddInt
void FlowVarAddInt(Flow *, uint32_t, uint32_t)
Definition: flow-var.c:156
FlowVar_::keylen
uint16_t keylen
Definition: flow-var.h:51
FlowVarTypeStr::value_len
uint16_t value_len
Definition: flow-var.h:39
FlowVarFree
void FlowVarFree(FlowVar *)
Definition: flow-var.c:161
FlowVarAddIdValue
void FlowVarAddIdValue(Flow *, uint32_t id, uint8_t *value, uint16_t size)
Definition: flow-var.c:113
FlowVarTypeInt_
Definition: flow-var.h:43
Flow_
Flow data structure.
Definition: flow.h:340
FlowVar_::fv_str
FlowVarTypeStr fv_str
Definition: flow-var.h:57
util-var.h
FlowVar_::fv_int
FlowVarTypeInt fv_int
Definition: flow-var.h:58
FlowVarAddKeyValue
void FlowVarAddKeyValue(Flow *f, uint8_t *key, uint16_t keysize, uint8_t *value, uint16_t size)
Definition: flow-var.c:94
FlowVar_::idx
uint32_t idx
Definition: flow-var.h:52
FlowVar_::key
uint8_t * key
Definition: flow-var.h:60
FlowVar_::type
uint8_t type
Definition: flow-var.h:49
FlowVarAddIntNoLock
void FlowVarAddIntNoLock(Flow *, uint32_t, uint32_t)
Definition: flow-var.c:135
FlowVarTypeInt_::value
uint32_t value
Definition: flow-var.h:44
FlowVar
struct FlowVar_ FlowVar
FlowVarTypeStr::value
uint8_t * value
Definition: flow-var.h:38
GenericVar_
Definition: util-var.h:48
FlowVar_::next
GenericVar * next
Definition: flow-var.h:53
FlowVarGet
FlowVar * FlowVarGet(Flow *, uint32_t)
get the flowvar with index 'idx' from the flow
Definition: flow-var.c:78
FlowVarGetByKey
FlowVar * FlowVarGetByKey(Flow *f, const uint8_t *key, uint16_t keylen)
get the flowvar with index 'idx' from the flow
Definition: flow-var.c:54
FlowVarTypeStr
struct FlowVarTypeStr FlowVarTypeStr
FlowVarTypeInt
struct FlowVarTypeInt_ FlowVarTypeInt
flow.h
FlowVarPrint
void FlowVarPrint(GenericVar *)
Definition: flow-var.c:173
FlowVar_
Definition: flow-var.h:48
FlowVar_::datatype
uint8_t datatype
Definition: flow-var.h:50
FlowVarTypeStr
Definition: flow-var.h:37