FD.io VPP
v18.07.1-19-g511ce25
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Data Structures
Source
Files
Symbols
hash_lookup_types.h
Go to the documentation of this file.
1
/*
2
*------------------------------------------------------------------
3
* Copyright (c) 2017 Cisco and/or its affiliates.
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at:
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*------------------------------------------------------------------
16
*/
17
18
#ifndef _ACL_HASH_LOOKUP_TYPES_H_
19
#define _ACL_HASH_LOOKUP_TYPES_H_
20
21
#include "
types.h
"
22
23
/* The structure representing the single entry with hash representation */
24
typedef
struct
{
25
fa_5tuple_t
match
;
26
/* these two entries refer to the original ACL# and rule# within that ACL */
27
u32
acl_index
;
28
u32
ace_index
;
29
30
u32
base_mask_type_index
;
31
32
u8
action
;
33
}
hash_ace_info_t
;
34
35
/*
36
* The structure holding the information necessary for the hash-based ACL operation
37
*/
38
typedef
struct
{
39
/* hash ACL applied on these lookup contexts */
40
u32
*
lc_index_list
;
41
hash_ace_info_t
*
rules
;
42
/* a boolean flag set when the hash acl info is initialized */
43
int
hash_acl_exists
;
44
}
hash_acl_info_t
;
45
46
47
typedef
struct
{
48
acl_rule_t
rule
;
49
u32
acl_index
;
50
u32
ace_index
;
51
u32
acl_position
;
52
u32
applied_entry_index
;
53
}
collision_match_rule_t
;
54
55
typedef
struct
{
56
/* original non-compiled ACL */
57
u32
acl_index
;
58
u32
ace_index
;
59
/* the index of the hash_ace_info_t */
60
u32
hash_ace_info_index
;
61
/* applied mask type index */
62
u32
mask_type_index
;
63
/*
64
* in case of the same key having multiple entries,
65
* this holds the index of the next entry.
66
*/
67
u32
next_applied_entry_index
;
68
/*
69
* previous entry in the list of the chained ones,
70
* if ~0 then this is entry in the hash.
71
*/
72
u32
prev_applied_entry_index
;
73
/*
74
* chain tail, if this is the first entry
75
*/
76
u32
tail_applied_entry_index
;
77
/*
78
* Collision rule vector for matching - set only on head entry
79
*/
80
collision_match_rule_t
*
colliding_rules
;
81
/*
82
* number of hits on this entry
83
*/
84
u64
hitcount
;
85
/*
86
* acl position in vector of ACLs within lookup context
87
*/
88
u32
acl_position
;
89
/*
90
* Action of this applied ACE
91
*/
92
u8
action
;
93
}
applied_hash_ace_entry_t
;
94
95
typedef
struct
{
96
97
/* applied ACLs so we can track them independently from main ACL module */
98
u32
*
applied_acls
;
99
}
applied_hash_acl_info_t
;
100
101
102
typedef
union
{
103
u64
as_u64
;
104
struct
{
105
u32
applied_entry_index
;
106
u16
reserved_u16
;
107
u8
reserved_u8
;
108
u8
reserved_flags:8;
109
};
110
}
hash_acl_lookup_value_t
;
111
112
113
typedef
struct
{
114
u32
mask_type_index
;
115
/* first rule # for this mask */
116
u32
first_rule_index
;
117
/* Debug Information */
118
u32
num_entries
;
119
u32
max_collisions
;
120
}
hash_applied_mask_info_t
;
121
122
123
#define CT_ASSERT_EQUAL(name, x,y) typedef int assert_ ## name ## _compile_time_assertion_failed[((x) == (y))-1]
124
125
CT_ASSERT_EQUAL
(hash_acl_lookup_value_t_is_u64,
sizeof
(
hash_acl_lookup_value_t
),
sizeof
(
u64
));
126
127
#undef CT_ASSERT_EQUAL
128
129
#endif
hash_ace_info_t::acl_index
u32 acl_index
Definition:
hash_lookup_types.h:27
hash_acl_lookup_value_t::reserved_u8
u8 reserved_u8
Definition:
hash_lookup_types.h:107
applied_hash_acl_info_t::applied_acls
u32 * applied_acls
Definition:
hash_lookup_types.h:98
applied_hash_ace_entry_t::acl_index
u32 acl_index
Definition:
hash_lookup_types.h:57
collision_match_rule_t::rule
acl_rule_t rule
Definition:
hash_lookup_types.h:48
u64
unsigned long u64
Definition:
types.h:89
hash_acl_info_t::hash_acl_exists
int hash_acl_exists
Definition:
hash_lookup_types.h:43
applied_hash_ace_entry_t::action
u8 action
Definition:
hash_lookup_types.h:92
applied_hash_ace_entry_t::hash_ace_info_index
u32 hash_ace_info_index
Definition:
hash_lookup_types.h:60
hash_ace_info_t::action
u8 action
Definition:
hash_lookup_types.h:32
hash_acl_lookup_value_t::applied_entry_index
u32 applied_entry_index
Definition:
hash_lookup_types.h:105
applied_hash_ace_entry_t
Definition:
hash_lookup_types.h:55
collision_match_rule_t::acl_index
u32 acl_index
Definition:
hash_lookup_types.h:49
u8
unsigned char u8
Definition:
types.h:56
collision_match_rule_t
Definition:
hash_lookup_types.h:47
hash_acl_lookup_value_t::reserved_u16
u16 reserved_u16
Definition:
hash_lookup_types.h:106
applied_hash_ace_entry_t::acl_position
u32 acl_position
Definition:
hash_lookup_types.h:88
applied_hash_ace_entry_t::next_applied_entry_index
u32 next_applied_entry_index
Definition:
hash_lookup_types.h:67
hash_applied_mask_info_t
Definition:
hash_lookup_types.h:113
hash_ace_info_t::base_mask_type_index
u32 base_mask_type_index
Definition:
hash_lookup_types.h:30
u32
unsigned int u32
Definition:
types.h:88
hash_ace_info_t
Definition:
hash_lookup_types.h:24
hash_applied_mask_info_t::num_entries
u32 num_entries
Definition:
hash_lookup_types.h:118
applied_hash_ace_entry_t::colliding_rules
collision_match_rule_t * colliding_rules
Definition:
hash_lookup_types.h:80
hash_ace_info_t::ace_index
u32 ace_index
Definition:
hash_lookup_types.h:28
applied_hash_ace_entry_t::mask_type_index
u32 mask_type_index
Definition:
hash_lookup_types.h:62
collision_match_rule_t::applied_entry_index
u32 applied_entry_index
Definition:
hash_lookup_types.h:52
hash_acl_lookup_value_t::as_u64
u64 as_u64
Definition:
hash_lookup_types.h:103
u16
unsigned short u16
Definition:
types.h:57
hash_acl_info_t
Definition:
hash_lookup_types.h:38
applied_hash_ace_entry_t::hitcount
u64 hitcount
Definition:
hash_lookup_types.h:84
hash_acl_info_t::rules
hash_ace_info_t * rules
Definition:
hash_lookup_types.h:41
acl_rule_t
Definition:
types.h:21
hash_acl_lookup_value_t
Definition:
hash_lookup_types.h:102
collision_match_rule_t::acl_position
u32 acl_position
Definition:
hash_lookup_types.h:51
hash_applied_mask_info_t::max_collisions
u32 max_collisions
Definition:
hash_lookup_types.h:119
applied_hash_acl_info_t
Definition:
hash_lookup_types.h:95
types.h
applied_hash_ace_entry_t::prev_applied_entry_index
u32 prev_applied_entry_index
Definition:
hash_lookup_types.h:72
collision_match_rule_t::ace_index
u32 ace_index
Definition:
hash_lookup_types.h:50
CT_ASSERT_EQUAL
#define CT_ASSERT_EQUAL(name, x, y)
Definition:
hash_lookup_types.h:123
hash_applied_mask_info_t::mask_type_index
u32 mask_type_index
Definition:
hash_lookup_types.h:114
applied_hash_ace_entry_t::tail_applied_entry_index
u32 tail_applied_entry_index
Definition:
hash_lookup_types.h:76
hash_ace_info_t::match
fa_5tuple_t match
Definition:
hash_lookup_types.h:25
hash_applied_mask_info_t::first_rule_index
u32 first_rule_index
Definition:
hash_lookup_types.h:116
applied_hash_ace_entry_t::ace_index
u32 ace_index
Definition:
hash_lookup_types.h:58
hash_acl_info_t::lc_index_list
u32 * lc_index_list
Definition:
hash_lookup_types.h:40
fa_5tuple_t
Definition:
fa_node.h:58
src
plugins
acl
hash_lookup_types.h
Generated on Fri May 24 2019 10:25:09 for FD.io VPP by
1.8.11