FD.io VPP
v17.04.2-2-ga8f93f8
Vector Packet Processing
Main Page
Related Pages
Data Structures
Source
Files
Symbols
ping.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 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
#ifndef included_vnet_ping_h
16
#define included_vnet_ping_h
17
18
19
#include <
vnet/ip/ip.h
>
20
21
#include <
vnet/ip/lookup.h
>
22
23
typedef
enum
24
{
25
PING_RESPONSE_IP6
= 42,
26
PING_RESPONSE_IP4
,
27
}
ping_response_type_t
;
28
29
typedef
enum
30
{
31
SEND_PING_OK
= 0,
32
SEND_PING_ALLOC_FAIL
,
33
SEND_PING_NO_INTERFACE
,
34
SEND_PING_NO_TABLE
,
35
SEND_PING_NO_SRC_ADDRESS
,
36
}
send_ip46_ping_result_t
;
37
38
/*
39
* Currently running ping command.
40
*/
41
typedef
struct
ping_run_t
42
{
43
u16
icmp_id
;
44
u16
curr_seq
;
45
uword
cli_process_id
;
46
}
ping_run_t
;
47
48
typedef
struct
ping_main_t
49
{
50
ip6_main_t
*
ip6_main
;
51
ip4_main_t
*
ip4_main
;
52
ping_run_t
*
ping_runs
;
53
/* hash table to find back the CLI process for a reply */
54
// uword *cli_proc_by_icmp_id;
55
ping_run_t
*
ping_run_by_icmp_id
;
56
}
ping_main_t
;
57
58
ping_main_t
ping_main
;
59
60
#define PING_DEFAULT_DATA_LEN 60
61
#define PING_DEFAULT_INTERVAL 1.0
62
63
#define PING_MAXIMUM_DATA_SIZE (VLIB_BUFFER_DATA_SIZE - sizeof(ip6_header_t) - sizeof(icmp46_header_t) - offsetof(icmp46_echo_request_t, data))
64
65
/* *INDENT-OFF* */
66
67
typedef
CLIB_PACKED
(
struct
{
68
u16
id;
69
u16
seq;
70
f64
time_sent;
71
u8
data[0];
72
}) icmp46_echo_request_t;
73
74
75
typedef
CLIB_PACKED
(
struct
{
76
ip6_header_t
ip6;
77
icmp46_header_t icmp;
78
icmp46_echo_request_t icmp_echo;
79
}) icmp6_echo_request_header_t;
80
81
typedef
CLIB_PACKED
(
struct
{
82
ip4_header_t
ip4;
83
icmp46_header_t icmp;
84
icmp46_echo_request_t icmp_echo;
85
}) icmp4_echo_request_header_t;
86
87
/* *INDENT-ON* */
88
89
90
typedef
struct
91
{
92
u16
id
;
93
u16
seq
;
94
u8
bound
;
95
}
icmp_echo_trace_t
;
96
97
98
99
100
typedef
enum
101
{
102
ICMP6_ECHO_REPLY_NEXT_DROP
,
103
ICMP6_ECHO_REPLY_NEXT_PUNT
,
104
ICMP6_ECHO_REPLY_N_NEXT
,
105
}
icmp6_echo_reply_next_t
;
106
107
typedef
enum
108
{
109
ICMP4_ECHO_REPLY_NEXT_DROP
,
110
ICMP4_ECHO_REPLY_NEXT_PUNT
,
111
ICMP4_ECHO_REPLY_N_NEXT
,
112
}
icmp4_echo_reply_next_t
;
113
114
#endif
/* included_vnet_ping_h */
ping_main_t
Definition:
ping.h:48
lookup.h
Definitions for all things IP (v4|v6) unicast and multicast lookup related.
CLIB_PACKED
typedef CLIB_PACKED(struct{u16 id;u16 seq;f64 time_sent;u8 data[0];}) icmp46_echo_request_t
ICMP4_ECHO_REPLY_N_NEXT
Definition:
ping.h:111
ping_main_t::ip4_main
ip4_main_t * ip4_main
Definition:
ping.h:51
ip.h
ping_run_t
Definition:
ping.h:41
send_ip46_ping_result_t
send_ip46_ping_result_t
Definition:
ping.h:29
ping_main_t::ping_runs
ping_run_t * ping_runs
Definition:
ping.h:52
ICMP4_ECHO_REPLY_NEXT_DROP
Definition:
ping.h:109
SEND_PING_OK
Definition:
ping.h:31
ping_main_t
struct ping_main_t ping_main_t
SEND_PING_NO_TABLE
Definition:
ping.h:34
ICMP4_ECHO_REPLY_NEXT_PUNT
Definition:
ping.h:110
ping_run_t
struct ping_run_t ping_run_t
icmp4_echo_reply_next_t
icmp4_echo_reply_next_t
Definition:
ping.h:107
ping_run_t::curr_seq
u16 curr_seq
Definition:
ping.h:44
SEND_PING_NO_INTERFACE
Definition:
ping.h:33
ip6_main_t
Definition:
ip6.h:144
ping_main_t::ip6_main
ip6_main_t * ip6_main
Definition:
ping.h:50
PING_RESPONSE_IP6
Definition:
ping.h:25
icmp_echo_trace_t::bound
u8 bound
Definition:
ping.h:94
icmp_echo_trace_t::seq
u16 seq
Definition:
ping.h:93
ping_run_t::cli_process_id
uword cli_process_id
Definition:
ping.h:45
PING_RESPONSE_IP4
Definition:
ping.h:26
ICMP6_ECHO_REPLY_NEXT_DROP
Definition:
ping.h:102
ip6_header_t
Definition:
ip6_packet.h:325
ip4_main_t
IPv4 main type.
Definition:
ip4.h:107
icmp_echo_trace_t::id
u16 id
Definition:
ping.h:92
uword
u64 uword
Definition:
types.h:112
u16
unsigned short u16
Definition:
types.h:57
f64
double f64
Definition:
types.h:142
u8
unsigned char u8
Definition:
types.h:56
icmp_echo_trace_t
Definition:
ping.h:90
ICMP6_ECHO_REPLY_N_NEXT
Definition:
ping.h:104
ping_response_type_t
ping_response_type_t
Definition:
ping.h:23
ping_main
ping_main_t ping_main
Definition:
ping.h:58
ping_run_t::icmp_id
u16 icmp_id
Definition:
ping.h:43
ping_main_t::ping_run_by_icmp_id
ping_run_t * ping_run_by_icmp_id
Definition:
ping.h:55
ICMP6_ECHO_REPLY_NEXT_PUNT
Definition:
ping.h:103
icmp6_echo_reply_next_t
icmp6_echo_reply_next_t
Definition:
ping.h:100
SEND_PING_NO_SRC_ADDRESS
Definition:
ping.h:35
SEND_PING_ALLOC_FAIL
Definition:
ping.h:32
ip4_header_t
Definition:
ip4_packet.h:125
src
vnet
ip
ping.h
Generated on Sat Jul 1 2017 12:02:12 for FD.io VPP by
1.8.11