FD.io VPP
v21.01.1
Vector Packet Processing
tap.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 _VNET_DEVICES_VIRTIO_TAP_H_
19
#define _VNET_DEVICES_VIRTIO_TAP_H_
20
21
#ifndef MIN
22
#define MIN(x,y) (((x)<(y))?(x):(y))
23
#endif
24
25
#define foreach_tapv2_flags \
26
_ (GSO, 0) \
27
_ (CSUM_OFFLOAD, 1) \
28
_ (PERSIST, 2) \
29
_ (ATTACH, 3) \
30
_ (TUN, 4) \
31
_ (GRO_COALESCE, 5) \
32
_ (PACKED, 6) \
33
_ (IN_ORDER, 7)
34
35
typedef
enum
36
{
37
#define _(a, b) TAP_FLAG_##a = (1 << b),
38
foreach_tapv2_flags
39
#undef _
40
}
tap_flag_t
;
41
42
typedef
struct
43
{
44
u32
id
;
45
u8
mac_addr_set
;
46
mac_address_t
mac_addr
;
47
u8
num_rx_queues
;
48
u16
rx_ring_sz
;
49
u16
tx_ring_sz
;
50
u32
tap_flags
;
51
u8
*
host_namespace
;
52
u8
*
host_if_name
;
53
mac_address_t
host_mac_addr
;
54
u8
*
host_bridge
;
55
ip4_address_t
host_ip4_addr
;
56
u8
host_ip4_prefix_len
;
57
ip4_address_t
host_ip4_gw
;
58
u8
host_ip4_gw_set
;
59
ip6_address_t
host_ip6_addr
;
60
u8
host_ip6_prefix_len
;
61
ip6_address_t
host_ip6_gw
;
62
u8
host_ip6_gw_set
;
63
u8
host_mtu_set
;
64
u32
host_mtu_size
;
65
/* return */
66
u32
sw_if_index
;
67
int
rv
;
68
clib_error_t
*
error
;
69
}
tap_create_if_args_t
;
70
71
/** TAP interface details struct */
72
typedef
struct
73
{
74
u32
id
;
75
u32
sw_if_index
;
76
u32
tap_flags
;
77
u8
dev_name[64];
78
u16
tx_ring_sz
;
79
u16
rx_ring_sz
;
80
mac_address_t
host_mac_addr
;
81
u8
host_if_name[64];
82
u8
host_namespace[64];
83
u8
host_bridge[64];
84
ip4_address_t
host_ip4_addr
;
85
u8
host_ip4_prefix_len
;
86
ip6_address_t
host_ip6_addr
;
87
u8
host_ip6_prefix_len
;
88
u32
host_mtu_size
;
89
}
tap_interface_details_t
;
90
91
typedef
struct
92
{
93
/* logging */
94
vlib_log_class_t
log_default
;
95
96
/* bit-map of in-use IDs */
97
uword
*
tap_ids
;
98
99
/* host mtu size, configurable through startup.conf */
100
int
host_mtu_size
;
101
}
tap_main_t
;
102
103
void
tap_create_if
(
vlib_main_t
*
vm
,
tap_create_if_args_t
* args);
104
int
tap_delete_if
(
vlib_main_t
*
vm
,
u32
sw_if_index
);
105
int
tap_gso_enable_disable
(
vlib_main_t
*
vm
,
u32
sw_if_index
,
106
int
enable_disable,
int
packet_coalesce);
107
int
108
tap_csum_offload_enable_disable
(
vlib_main_t
*
vm
,
u32
sw_if_index
,
109
int
enable_disable);
110
int
tap_dump_ifs
(
tap_interface_details_t
** out_tapids);
111
int
tap_set_carrier
(
u32
hw_if_index,
u32
carrier_up);
112
int
tap_set_speed
(
u32
hw_if_index,
u32
speed);
113
114
#endif
/* _VNET_DEVICES_VIRTIO_TAP_H_ */
115
116
/*
117
* fd.io coding-style-patch-verification: ON
118
*
119
* Local Variables:
120
* eval: (c-set-style "gnu")
121
* End:
122
*/
tap_set_speed
int tap_set_speed(u32 hw_if_index, u32 speed)
Definition:
tap.c:1055
tap_interface_details_t::tap_flags
u32 tap_flags
Definition:
tap.h:76
tap_main_t::tap_ids
uword * tap_ids
Definition:
tap.h:97
tap_main_t::host_mtu_size
int host_mtu_size
Definition:
tap.h:100
tap_main_t::log_default
vlib_log_class_t log_default
Definition:
tap.h:94
tap_create_if_args_t::host_ip4_addr
ip4_address_t host_ip4_addr
Definition:
tap.h:55
tap_create_if_args_t::tap_flags
u32 tap_flags
Definition:
tap.h:50
tap_set_carrier
int tap_set_carrier(u32 hw_if_index, u32 carrier_up)
Definition:
tap.c:1007
tap_interface_details_t::host_ip6_prefix_len
u8 host_ip6_prefix_len
Definition:
tap.h:87
tap_create_if_args_t::rx_ring_sz
u16 rx_ring_sz
Definition:
tap.h:48
tap_create_if_args_t::host_ip6_prefix_len
u8 host_ip6_prefix_len
Definition:
tap.h:60
vm
vlib_main_t * vm
Definition:
in2out_ed.c:1580
tap_create_if_args_t::host_ip4_gw_set
u8 host_ip4_gw_set
Definition:
tap.h:58
u8
unsigned char u8
Definition:
types.h:56
vlib_log_class_t
u32 vlib_log_class_t
Definition:
vlib.h:51
tap_create_if
void tap_create_if(vlib_main_t *vm, tap_create_if_args_t *args)
Definition:
tap.c:137
tap_interface_details_t::host_ip4_prefix_len
u8 host_ip4_prefix_len
Definition:
tap.h:85
tap_csum_offload_enable_disable
int tap_csum_offload_enable_disable(vlib_main_t *vm, u32 sw_if_index, int enable_disable)
Definition:
tap.c:822
tap_delete_if
int tap_delete_if(vlib_main_t *vm, u32 sw_if_index)
Definition:
tap.c:787
u32
unsigned int u32
Definition:
types.h:88
tap_create_if_args_t::sw_if_index
u32 sw_if_index
Definition:
tap.h:66
ip4_address_t
Definition:
ip4_packet.h:50
tap_create_if_args_t::num_rx_queues
u8 num_rx_queues
Definition:
tap.h:47
tap_dump_ifs
int tap_dump_ifs(tap_interface_details_t **out_tapids)
Definition:
tap.c:938
tap_create_if_args_t::tx_ring_sz
u16 tx_ring_sz
Definition:
tap.h:49
tap_interface_details_t::host_mac_addr
mac_address_t host_mac_addr
Definition:
tap.h:80
u16
unsigned short u16
Definition:
types.h:57
tap_create_if_args_t::rv
int rv
Definition:
tap.h:67
tap_create_if_args_t::mac_addr_set
u8 mac_addr_set
Definition:
tap.h:45
tap_interface_details_t::host_mtu_size
u32 host_mtu_size
Definition:
tap.h:88
tap_create_if_args_t::host_ip4_gw
ip4_address_t host_ip4_gw
Definition:
tap.h:57
tap_create_if_args_t::host_ip6_addr
ip6_address_t host_ip6_addr
Definition:
tap.h:59
tap_create_if_args_t::host_ip4_prefix_len
u8 host_ip4_prefix_len
Definition:
tap.h:56
mac_address_t_
Definition:
mac_address.h:21
tap_interface_details_t::host_ip4_addr
ip4_address_t host_ip4_addr
Definition:
tap.h:84
tap_flag_t
tap_flag_t
Definition:
tap.h:35
tap_gso_enable_disable
int tap_gso_enable_disable(vlib_main_t *vm, u32 sw_if_index, int enable_disable, int packet_coalesce)
Definition:
tap.c:881
tap_create_if_args_t::host_mtu_size
u32 host_mtu_size
Definition:
tap.h:64
tap_create_if_args_t::host_bridge
u8 * host_bridge
Definition:
tap.h:54
tap_create_if_args_t::host_ip6_gw
ip6_address_t host_ip6_gw
Definition:
tap.h:61
tap_create_if_args_t::host_if_name
u8 * host_if_name
Definition:
tap.h:52
tap_interface_details_t::id
u32 id
Definition:
tap.h:74
tap_create_if_args_t::host_ip6_gw_set
u8 host_ip6_gw_set
Definition:
tap.h:62
clib_error_t
Definition:
clib_error.h:21
vlib_main_t
Definition:
main.h:119
uword
u64 uword
Definition:
types.h:112
tap_main_t
Definition:
tap.h:91
tap_create_if_args_t::host_mac_addr
mac_address_t host_mac_addr
Definition:
tap.h:53
foreach_tapv2_flags
#define foreach_tapv2_flags
Definition:
tap.h:25
tap_create_if_args_t::mac_addr
mac_address_t mac_addr
Definition:
tap.h:46
tap_create_if_args_t::host_mtu_set
u8 host_mtu_set
Definition:
tap.h:63
tap_create_if_args_t::error
clib_error_t * error
Definition:
tap.h:68
tap_interface_details_t::host_ip6_addr
ip6_address_t host_ip6_addr
Definition:
tap.h:86
tap_interface_details_t
TAP interface details struct.
Definition:
tap.h:72
tap_interface_details_t::tx_ring_sz
u16 tx_ring_sz
Definition:
tap.h:78
tap_interface_details_t::rx_ring_sz
u16 rx_ring_sz
Definition:
tap.h:79
tap_create_if_args_t::host_namespace
u8 * host_namespace
Definition:
tap.h:51
tap_create_if_args_t::id
u32 id
Definition:
tap.h:44
tap_interface_details_t::sw_if_index
u32 sw_if_index
Definition:
tap.h:75
tap_create_if_args_t
Definition:
tap.h:42
sw_if_index
vl_api_interface_index_t sw_if_index
Definition:
wireguard.api:34
src
vnet
devices
tap
tap.h
Generated on Wed Jul 14 2021 16:05:10 for FD.io VPP by
1.8.13