FD.io VPP  v18.01-8-g0eacf49
Vector Packet Processing
udp_ping.h
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 #ifndef PLUGINS_IOAM_PLUGIN_IOAM_UDP_PING_UDP_PING_H_
17 #define PLUGINS_IOAM_PLUGIN_IOAM_UDP_PING_UDP_PING_H_
18 
20 
21 #define MAX_PING_RETRIES 5
22 
23 #define EVENT_SIG_RECHECK 2
24 
25 /** @brief udp-ping session data.
26  @note cache aligned.
27 */
28 typedef struct
29 {
30  /** UDP ping packet */
32 
33  /** Ping packet rewrite string len. */
35 
36  /** Number of times ping response was dropped.
37  * If retry > MAX_PING_RETRIES then declare connectivity as down.
38  */
40 
41  u16 reserve[2];
42 
43  /** Analysed data. */
45 
46  /** This is used by ioam e2e for identifying flow and add seq number. */
48 
49  /** No of packets sent for this flow. */
52 
53 /** @brief udp-ping flow data.
54  @note cache aligned.
55 */
56 typedef struct
57 {
58  /** Time at which next udp-ping probe has to be sent out. */
60 
61  /** Interval for which ping packet to be sent. */
63 
64  u16 reserve[3];
65 
66  /** Defines start port of the src port range. */
68 
69  /** Defines end port of the src port range. */
71 
72  /** Defines start port of the dest port range. */
74 
75  /** Defines end port of the dest port range. */
77 
78  /** Ping statistics. */
80 
82 
83 /** @brief udp-ping data.
84 */
85 typedef struct
86 {
87  /** Local source IPv4/6 address to be used. */
88  ip46_address_t src;
89 
90  /** Remote destination IPv4/6 address to be used. */
91  ip46_address_t dst;
92 
93  /** Per flow data. */
95 
96  /** To enable fault detection/isolation in network. */
99 
100 /** @brief udp-ping main data-structure.
101 */
102 typedef struct
103 {
104  /** Vector od udp-ping data */
106 
107  /** Stores the time interval at which process node has to wake up. */
109 
110  /** Pointer to VLib main for the node - ipfix-collector. */
112 
113  /** Pointer to vnet main for convenience. */
115 
116  /** API message ID base */
119 
121 
122 void
123 ip46_udp_ping_set_flow (ip46_address_t src, ip46_address_t dst,
124  u16 start_src_port, u16 end_src_port,
125  u16 start_dst_port, u16 end_dst_port,
126  u16 interval, u8 fault_det, u8 is_disable);
127 
129 
130 #endif /* PLUGINS_IOAM_PLUGIN_IOAM_UDP_PING_UDP_PING_H_ */
131 
132 /*
133  * fd.io coding-style-patch-verification: ON
134  *
135  * Local Variables:
136  * eval: (c-set-style "gnu")
137  * End:
138  */
udp-ping main data-structure.
Definition: udp_ping.h:102
clib_error_t * udp_ping_flow_create(u8 del)
ioam_analyser_data_t analyse_data
Analysed data.
Definition: udp_ping.h:44
ip46_udp_ping_flow * ip46_flow
Vector od udp-ping data.
Definition: udp_ping.h:105
u16 start_dst_port
Defines start port of the dest port range.
Definition: udp_ping.h:73
u16 interval
Interval for which ping packet to be sent.
Definition: udp_ping.h:62
udp_ping_flow udp_data
Per flow data.
Definition: udp_ping.h:94
u16 end_src_port
Defines end port of the src port range.
Definition: udp_ping.h:70
u32 pak_sent
No of packets sent for this flow.
Definition: udp_ping.h:50
f64 next_send_time
Time at which next udp-ping probe has to be sent out.
Definition: udp_ping.h:59
vnet_main_t * vnet_main
Pointer to vnet main for convenience.
Definition: udp_ping.h:114
udp-ping data.
Definition: udp_ping.h:85
unsigned long u64
Definition: types.h:89
u16 start_src_port
Defines start port of the src port range.
Definition: udp_ping.h:67
u8 * ping_rewrite
UDP ping packet.
Definition: udp_ping.h:31
u16 msg_id_base
API message ID base.
Definition: udp_ping.h:117
udp_ping_main_t udp_ping_main
Definition: udp_ping_node.c:41
ip46_address_t dst
Remote destination IPv4/6 address to be used.
Definition: udp_ping.h:91
udp-ping flow data.
Definition: udp_ping.h:56
u32 flow_ctx
This is used by ioam e2e for identifying flow and add seq number.
Definition: udp_ping.h:47
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)
u16 end_dst_port
Defines end port of the dest port range.
Definition: udp_ping.h:76
unsigned int u32
Definition: types.h:88
vlib_main_t * vlib_main
Pointer to VLib main for the node - ipfix-collector.
Definition: udp_ping.h:111
u64 timer_interval
Stores the time interval at which process node has to wake up.
Definition: udp_ping.h:108
u8 fault_det
To enable fault detection/isolation in network.
Definition: udp_ping.h:97
udp-ping session data.
Definition: udp_ping.h:28
ip46_address_t src
Local source IPv4/6 address to be used.
Definition: udp_ping.h:88
u16 rewrite_len
Ping packet rewrite string len.
Definition: udp_ping.h:34
unsigned short u16
Definition: types.h:57
double f64
Definition: types.h:142
unsigned char u8
Definition: types.h:56
Analysed iOAM data.
Definition: ioam_analyse.h:97
u16 retry
Number of times ping response was dropped.
Definition: udp_ping.h:39
udp_ping_flow_data * stats
Ping statistics.
Definition: udp_ping.h:79