FD.io VPP
v21.01.1
Vector Packet Processing
adl.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016,2020 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
#ifndef __vnet_adl_h__
17
#define __vnet_adl_h__
18
19
#include <
vlib/vlib.h
>
20
#include <
vnet/vnet.h
>
21
22
#include <
vppinfra/error.h
>
23
#include <
vppinfra/hash.h
>
24
#include <
vnet/vnet.h
>
25
#include <
vnet/ip/ip.h
>
26
#include <
vnet/l2/l2_input.h
>
27
#include <
vnet/ethernet/ethernet.h
>
28
#include <
vnet/ip/ip4_packet.h
>
29
#include <
vnet/ip/ip6_packet.h
>
30
31
typedef
enum
{
32
VNET_ADL_IP4
,
33
VNET_ADL_IP6
,
34
VNET_ADL_DEFAULT
,
35
VNET_N_ADLS
,
36
}
vnet_adl_t
;
37
38
typedef
enum
{
39
/* First check src address against allowlist */
40
IP4_RX_ADL_ALLOWLIST
,
41
IP6_RX_ADL_ALLOWLIST
,
42
DEFAULT_RX_ADL_ALLOWLIST
,
43
44
/* Pkts not otherwise dropped go to xxx-input */
45
IP4_RX_ADL_INPUT
,
46
IP6_RX_ADL_INPUT
,
47
DEFAULT_RX_ADL_INPUT
,
48
49
/* Going, going, gone... */
50
RX_ADL_DROP
,
51
52
ADL_RX_N_FEATURES
,
53
}
adl_feature_type_t
;
54
55
typedef
struct
{
56
vnet_config_main_t
config_main
;
57
u32
*
config_index_by_sw_if_index
;
58
}
adl_config_main_t
;
59
60
typedef
struct
{
61
u32
fib_index
;
62
}
adl_config_data_t
;
63
64
typedef
struct
{
65
adl_config_main_t
adl_config_mains[
VNET_N_ADLS
];
66
67
u16
msg_id_base
;
68
69
/* convenience */
70
vlib_main_t
*
vlib_main
;
71
vnet_main_t
*
vnet_main
;
72
}
adl_main_t
;
73
74
extern
adl_main_t
adl_main
;
75
76
extern
vlib_node_registration_t
adl_input_node
;
77
78
int
adl_interface_enable_disable
(
u32
sw_if_index
,
int
enable_disable);
79
80
typedef
struct
{
81
u32
sw_if_index
;
82
u8
ip4
;
83
u8
ip6
;
84
u8
default_adl
;
85
u32
fib_id
;
86
}
adl_allowlist_enable_disable_args_t
;
87
88
int
adl_allowlist_enable_disable
(
adl_allowlist_enable_disable_args_t
*
a
);
89
90
/* Plugin private opaque union type */
91
typedef
struct
{
92
/* MUST be in sync with .../src/vnet/buffer.h */
93
u32
sw_if_index
[
VLIB_N_RX_TX
];
94
i16
l2_hdr_offset
;
95
i16
l3_hdr_offset
;
96
i16
l4_hdr_offset
;
97
u8
feature_arc_index
;
98
u8
dont_waste_me
;
99
/* end of must be in sync with .../src/vnet/buffer.h */
100
union
101
{
102
/* COP - configurable junk filter(s) */
103
struct
104
{
105
/* Current configuration index. */
106
u32
current_config_index
;
107
} adl;
108
};
109
}
adl_buffer_opaque_t
;
110
111
#define adl_buffer(b) ((adl_buffer_opaque_t *) (b)->opaque)
112
113
#endif
/* __vnet_adl_h__ */
IP4_RX_ADL_INPUT
Definition:
adl.h:45
a
a
Definition:
bitmap.h:544
IP4_RX_ADL_ALLOWLIST
Definition:
adl.h:40
DEFAULT_RX_ADL_INPUT
Definition:
adl.h:47
adl_allowlist_enable_disable_args_t::ip4
u8 ip4
Definition:
adl.h:82
ip6_packet.h
adl_allowlist_enable_disable_args_t::default_adl
u8 default_adl
Definition:
adl.h:84
adl_buffer_opaque_t::l3_hdr_offset
i16 l3_hdr_offset
Definition:
adl.h:95
ip.h
adl_config_main_t
Definition:
adl.h:55
u8
unsigned char u8
Definition:
types.h:56
adl_main_t
Definition:
adl.h:64
hash.h
adl_allowlist_enable_disable_args_t::sw_if_index
u32 sw_if_index
Definition:
adl.h:81
adl_buffer_opaque_t::l4_hdr_offset
i16 l4_hdr_offset
Definition:
adl.h:96
l2_input.h
adl_main_t::msg_id_base
u16 msg_id_base
Definition:
adl.h:67
adl_buffer_opaque_t::current_config_index
u32 current_config_index
Definition:
adl.h:106
u32
unsigned int u32
Definition:
types.h:88
adl_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
adl.h:70
VNET_ADL_DEFAULT
Definition:
adl.h:34
adl_buffer_opaque_t::l2_hdr_offset
i16 l2_hdr_offset
Definition:
adl.h:94
ethernet.h
vnet_config_main_t
Definition:
config.h:86
ip4_packet.h
VLIB_N_RX_TX
Definition:
defs.h:48
u16
unsigned short u16
Definition:
types.h:57
adl_main
adl_main_t adl_main
Definition:
adl.c:20
adl_config_main_t::config_main
vnet_config_main_t config_main
Definition:
adl.h:56
vnet.h
adl_allowlist_enable_disable
int adl_allowlist_enable_disable(adl_allowlist_enable_disable_args_t *a)
Definition:
adl.c:233
adl_config_data_t
Definition:
adl.h:60
adl_interface_enable_disable
int adl_interface_enable_disable(u32 sw_if_index, int enable_disable)
Definition:
adl.c:169
ADL_RX_N_FEATURES
Definition:
adl.h:52
adl_allowlist_enable_disable_args_t::ip6
u8 ip6
Definition:
adl.h:83
vlib.h
adl_config_data_t::fib_index
u32 fib_index
Definition:
adl.h:61
vnet_main_t
Definition:
vnet.h:60
adl_buffer_opaque_t::feature_arc_index
u8 feature_arc_index
Definition:
adl.h:97
adl_buffer_opaque_t
Definition:
adl.h:91
DEFAULT_RX_ADL_ALLOWLIST
Definition:
adl.h:42
adl_config_main_t::config_index_by_sw_if_index
u32 * config_index_by_sw_if_index
Definition:
adl.h:57
adl_input_node
vlib_node_registration_t adl_input_node
(constructor) VLIB_REGISTER_NODE (adl_input_node)
Definition:
node.c:258
adl_allowlist_enable_disable_args_t::fib_id
u32 fib_id
Definition:
adl.h:85
vlib_node_registration_t
struct _vlib_node_registration vlib_node_registration_t
adl_feature_type_t
adl_feature_type_t
Definition:
adl.h:38
vnet_adl_t
vnet_adl_t
Definition:
adl.h:31
IP6_RX_ADL_INPUT
Definition:
adl.h:46
vlib_main_t
Definition:
main.h:119
IP6_RX_ADL_ALLOWLIST
Definition:
adl.h:41
VNET_ADL_IP4
Definition:
adl.h:32
VNET_ADL_IP6
Definition:
adl.h:33
error.h
VNET_N_ADLS
Definition:
adl.h:35
adl_buffer_opaque_t::dont_waste_me
u8 dont_waste_me
Definition:
adl.h:98
adl_allowlist_enable_disable_args_t
Definition:
adl.h:80
adl_main_t::vnet_main
vnet_main_t * vnet_main
Definition:
adl.h:71
sw_if_index
vl_api_interface_index_t sw_if_index
Definition:
wireguard.api:34
i16
signed short i16
Definition:
types.h:46
RX_ADL_DROP
Definition:
adl.h:50
src
plugins
adl
adl.h
Generated on Wed Jul 14 2021 16:03:34 for FD.io VPP by
1.8.13