FD.io VPP
v18.01.2-1-g9b554f3
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
/* The structure representing the single entry with hash representation */
22
typedef
struct
{
23
/* these two entries refer to the original ACL# and rule# within that ACL */
24
u32
acl_index
;
25
u32
ace_index
;
26
27
u32
mask_type_index
;
28
u8
src_portrange_not_powerof2
;
29
u8
dst_portrange_not_powerof2
;
30
31
fa_5tuple_t
match
;
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
/* The mask types present in this ACL */
40
uword
*
mask_type_index_bitmap
;
41
/* hash ACL applied on these interfaces */
42
u32
*
inbound_sw_if_index_list
;
43
u32
*
outbound_sw_if_index_list
;
44
hash_ace_info_t
*
rules
;
45
}
hash_acl_info_t
;
46
47
typedef
struct
{
48
/* original non-compiled ACL */
49
u32
acl_index
;
50
u32
ace_index
;
51
/* the index of the hash_ace_info_t */
52
u32
hash_ace_info_index
;
53
/*
54
* in case of the same key having multiple entries,
55
* this holds the index of the next entry.
56
*/
57
u32
next_applied_entry_index
;
58
/*
59
* previous entry in the list of the chained ones,
60
* if ~0 then this is entry in the hash.
61
*/
62
u32
prev_applied_entry_index
;
63
/*
64
* chain tail, if this is the first entry
65
*/
66
u32
tail_applied_entry_index
;
67
/*
68
* number of hits on this entry
69
*/
70
u64
hitcount
;
71
/*
72
* Action of this applied ACE
73
*/
74
u8
action
;
75
}
applied_hash_ace_entry_t
;
76
77
typedef
struct
{
78
/*
79
* A logical OR of all the applied_ace_hash_entry_t=>
80
* hash_ace_info_t=>mask_type_index bits set
81
*/
82
uword
*
mask_type_index_bitmap
;
83
/* applied ACLs so we can track them independently from main ACL module */
84
u32
*
applied_acls
;
85
}
applied_hash_acl_info_t
;
86
87
88
typedef
union
{
89
u64
as_u64
;
90
struct
{
91
u32
applied_entry_index
;
92
u16
reserved_u16
;
93
u8
reserved_u8
;
94
/* means there is some other entry in front intersecting with this one */
95
u8
shadowed:1;
96
u8
need_portrange_check:1;
97
u8
reserved_flags:6;
98
};
99
}
hash_acl_lookup_value_t
;
100
101
#define CT_ASSERT_EQUAL(name, x,y) typedef int assert_ ## name ## _compile_time_assertion_failed[((x) == (y))-1]
102
103
CT_ASSERT_EQUAL
(hash_acl_lookup_value_t_is_u64,
sizeof
(
hash_acl_lookup_value_t
),
sizeof
(
u64
));
104
105
#undef CT_ASSERT_EQUAL
106
107
#endif
hash_ace_info_t::acl_index
u32 acl_index
Definition:
hash_lookup_types.h:24
hash_acl_lookup_value_t::reserved_u8
u8 reserved_u8
Definition:
hash_lookup_types.h:93
applied_hash_acl_info_t::applied_acls
u32 * applied_acls
Definition:
hash_lookup_types.h:84
applied_hash_ace_entry_t::acl_index
u32 acl_index
Definition:
hash_lookup_types.h:49
applied_hash_ace_entry_t::action
u8 action
Definition:
hash_lookup_types.h:74
applied_hash_ace_entry_t::hash_ace_info_index
u32 hash_ace_info_index
Definition:
hash_lookup_types.h:52
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:91
applied_hash_ace_entry_t
Definition:
hash_lookup_types.h:47
hash_acl_lookup_value_t::reserved_u16
u16 reserved_u16
Definition:
hash_lookup_types.h:92
applied_hash_ace_entry_t::next_applied_entry_index
u32 next_applied_entry_index
Definition:
hash_lookup_types.h:57
u64
unsigned long u64
Definition:
types.h:89
hash_acl_info_t::inbound_sw_if_index_list
u32 * inbound_sw_if_index_list
Definition:
hash_lookup_types.h:42
hash_ace_info_t
Definition:
hash_lookup_types.h:22
hash_acl_info_t::mask_type_index_bitmap
uword * mask_type_index_bitmap
Definition:
hash_lookup_types.h:40
hash_ace_info_t::ace_index
u32 ace_index
Definition:
hash_lookup_types.h:25
hash_ace_info_t::dst_portrange_not_powerof2
u8 dst_portrange_not_powerof2
Definition:
hash_lookup_types.h:29
hash_acl_lookup_value_t::as_u64
u64 as_u64
Definition:
hash_lookup_types.h:89
hash_acl_info_t
Definition:
hash_lookup_types.h:38
applied_hash_ace_entry_t::hitcount
u64 hitcount
Definition:
hash_lookup_types.h:70
hash_acl_info_t::rules
hash_ace_info_t * rules
Definition:
hash_lookup_types.h:44
applied_hash_acl_info_t::mask_type_index_bitmap
uword * mask_type_index_bitmap
Definition:
hash_lookup_types.h:82
hash_acl_info_t::outbound_sw_if_index_list
u32 * outbound_sw_if_index_list
Definition:
hash_lookup_types.h:43
hash_acl_lookup_value_t
Definition:
hash_lookup_types.h:88
u32
unsigned int u32
Definition:
types.h:88
applied_hash_acl_info_t
Definition:
hash_lookup_types.h:77
uword
u64 uword
Definition:
types.h:112
applied_hash_ace_entry_t::prev_applied_entry_index
u32 prev_applied_entry_index
Definition:
hash_lookup_types.h:62
u16
unsigned short u16
Definition:
types.h:57
u8
unsigned char u8
Definition:
types.h:56
CT_ASSERT_EQUAL
#define CT_ASSERT_EQUAL(name, x, y)
Definition:
hash_lookup_types.h:101
hash_ace_info_t::mask_type_index
u32 mask_type_index
Definition:
hash_lookup_types.h:27
applied_hash_ace_entry_t::tail_applied_entry_index
u32 tail_applied_entry_index
Definition:
hash_lookup_types.h:66
hash_ace_info_t::match
fa_5tuple_t match
Definition:
hash_lookup_types.h:31
hash_ace_info_t::src_portrange_not_powerof2
u8 src_portrange_not_powerof2
Definition:
hash_lookup_types.h:28
applied_hash_ace_entry_t::ace_index
u32 ace_index
Definition:
hash_lookup_types.h:50
fa_5tuple_t
Definition:
fa_node.h:46
src
plugins
acl
hash_lookup_types.h
Generated on Wed Sep 5 2018 06:01:56 for FD.io VPP by
1.8.11