FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
udp_ping_api.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 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
*------------------------------------------------------------------
17
* udp_ping_api.c - UDP Ping related APIs to create
18
* and maintain ping flows
19
*------------------------------------------------------------------
20
*/
21
22
#include <
vnet/vnet.h
>
23
#include <
vnet/ip/ip.h
>
24
#include <
ioam/udp-ping/udp_ping.h
>
25
26
#include <
vlibapi/api.h
>
27
#include <
vlibmemory/api.h
>
28
#include <
vnet/format_fns.h
>
29
#include <
vnet/ip/ip_types_api.h
>
30
31
/* define message IDs */
32
#include <ioam/udp-ping/udp_ping.api_enum.h>
33
#include <ioam/udp-ping/udp_ping.api_types.h>
34
35
#define REPLY_MSG_ID_BASE sm->msg_id_base
36
#include <
vlibapi/api_helper_macros.h
>
37
38
static
void
39
vl_api_udp_ping_add_del_t_handler
(
vl_api_udp_ping_add_del_t
* mp)
40
{
41
ip46_address_t
dst
,
src
;
42
int
rv
= 0;
43
udp_ping_main_t
*sm = &
udp_ping_main
;
44
vl_api_udp_ping_add_del_reply_t *rmp;
45
46
if
(clib_net_to_host_u32 (mp->
src_ip_address
.af) ==
ADDRESS_IP4
)
47
{
48
rv
= -1;
//Not supported
49
goto
ERROROUT;
50
}
51
ip_address_decode
(&mp->
src_ip_address
, &
src
);
52
ip_address_decode
(&mp->
dst_ip_address
, &
dst
);
53
54
ip46_udp_ping_set_flow
(
src
,
dst
,
55
ntohs
(mp->
start_src_port
),
56
ntohs
(mp->
end_src_port
),
57
ntohs
(mp->
start_dst_port
),
58
ntohs
(mp->
end_dst_port
),
59
ntohs
(mp->
interval
), mp->
fault_det
, mp->
dis
);
60
rv
= 0;
//FIXME
61
62
ERROROUT:
63
REPLY_MACRO
(VL_API_UDP_PING_ADD_DEL_REPLY);
64
}
65
66
static
void
67
vl_api_udp_ping_export_t_handler
(
vl_api_udp_ping_export_t
* mp)
68
{
69
udp_ping_main_t
*sm = &
udp_ping_main
;
70
int
rv
= 0;
71
vl_api_udp_ping_export_reply_t *rmp;
72
73
(void)
udp_ping_flow_create
(!mp->
enable
);
74
rv
= 0;
//FIXME
75
76
REPLY_MACRO
(VL_API_UDP_PING_EXPORT_REPLY);
77
}
78
79
#include <ioam/udp-ping/udp_ping.api.c>
80
static
clib_error_t
*
81
udp_ping_api_init
(
vlib_main_t
*
vm
)
82
{
83
udp_ping_main_t
*sm = &
udp_ping_main
;
84
85
/* Ask for a correctly-sized block of API message decode slots */
86
sm->
msg_id_base
=
setup_message_id_table
();
87
88
return
0;
89
}
90
91
VLIB_INIT_FUNCTION
(
udp_ping_api_init
);
92
93
/*
94
* fd.io coding-style-patch-verification: ON
95
*
96
* Local Variables:
97
* eval: (c-set-style "gnu")
98
* End:
99
*/
vl_api_udp_ping_add_del_t::dst_ip_address
vl_api_address_t dst_ip_address
Definition:
udp_ping.api:35
api.h
ntohs
#define ntohs(x)
Definition:
af_xdp.bpf.c:29
udp_ping_main_t::msg_id_base
u16 msg_id_base
API message ID base.
Definition:
udp_ping.h:120
udp_ping_flow_create
clib_error_t * udp_ping_flow_create(u8 del)
Definition:
udp_ping_export.c:228
vl_api_udp_ping_add_del_t
UDP-Probe Add/Delete request.
Definition:
udp_ping.api:31
vl_api_udp_ping_add_del_t::start_dst_port
u16 start_dst_port
Definition:
udp_ping.api:38
udp_ping_api_init
static clib_error_t * udp_ping_api_init(vlib_main_t *vm)
Definition:
udp_ping_api.c:81
vl_api_udp_ping_add_del_t::end_src_port
u16 end_src_port
Definition:
udp_ping.api:37
vm
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
Definition:
nat44_ei.c:3047
api.h
vl_api_udp_ping_export_t
Udp-probe export add/del request.
Definition:
udp_ping.api:51
vl_api_udp_ping_add_del_t::interval
u16 interval
Definition:
udp_ping.api:40
vl_api_udp_ping_add_del_t::end_dst_port
u16 end_dst_port
Definition:
udp_ping.api:39
ip_address_decode
ip46_type_t ip_address_decode(const vl_api_address_t *in, ip46_address_t *out)
Decode/Encode for struct/union types.
Definition:
ip_types_api.c:186
setup_message_id_table
static void setup_message_id_table(api_main_t *am)
Definition:
bfd_api.c:451
REPLY_MACRO
#define REPLY_MACRO(t)
Definition:
api_helper_macros.h:30
udp_ping_main
udp_ping_main_t udp_ping_main
Definition:
udp_ping_node.c:58
udp_ping_main_t
udp-ping main data-structure.
Definition:
udp_ping.h:105
vl_api_udp_ping_export_t::enable
bool enable
Definition:
udp_ping.api:54
src
vl_api_address_t src
Definition:
gre.api:54
vl_api_udp_ping_add_del_t_handler
static void vl_api_udp_ping_add_del_t_handler(vl_api_udp_ping_add_del_t *mp)
Definition:
udp_ping_api.c:39
format_fns.h
vl_api_udp_ping_export_t_handler
static void vl_api_udp_ping_export_t_handler(vl_api_udp_ping_export_t *mp)
Definition:
udp_ping_api.c:67
ip.h
VLIB_INIT_FUNCTION
#define VLIB_INIT_FUNCTION(x)
Definition:
init.h:172
dst
vl_api_ip4_address_t dst
Definition:
pnat.api:41
api_helper_macros.h
vlib_main_t
Definition:
main.h:102
clib_error_t
Definition:
clib_error.h:21
vlib_init_function_t
clib_error_t *() vlib_init_function_t(struct vlib_main_t *vm)
Definition:
init.h:51
vl_api_udp_ping_add_del_t::src_ip_address
vl_api_address_t src_ip_address
Definition:
udp_ping.api:34
rv
int __clib_unused rv
Definition:
application.c:491
udp_ping.h
ip46_udp_ping_set_flow
void ip46_udp_ping_set_flow(ip46_address_t src, ip46_address_t dst, u16 start_src_port, u16 end_src_port, u16 start_dst_port, u16 end_dst_port, u16 interval, u8 fault_det, u8 is_disable)
Definition:
udp_ping_node.c:132
vnet.h
ADDRESS_IP4
@ ADDRESS_IP4
Definition:
ip_types.api:22
vl_api_udp_ping_add_del_t::start_src_port
u16 start_src_port
Definition:
udp_ping.api:36
ip_types_api.h
vl_api_udp_ping_add_del_t::dis
u8 dis
Definition:
udp_ping.api:41
vl_api_udp_ping_add_del_t::fault_det
u8 fault_det
Definition:
udp_ping.api:42
src
plugins
ioam
udp-ping
udp_ping_api.c
Generated on Sat Jan 8 2022 10:04:00 for FD.io VPP by
1.8.17