Add extern to *_main global variable declarations in header files.
[vpp.git] / src / vnet / ip / ping.h
index 8f41f45..3f7488f 100644 (file)
@@ -32,6 +32,7 @@ typedef enum
   SEND_PING_ALLOC_FAIL,
   SEND_PING_NO_INTERFACE,
   SEND_PING_NO_TABLE,
+  SEND_PING_NO_SRC_ADDRESS,
 } send_ip46_ping_result_t;
 
 /*
@@ -42,6 +43,7 @@ typedef struct ping_run_t
   u16 icmp_id;
   u16 curr_seq;
   uword cli_process_id;
+  uword cli_thread_index;
 } ping_run_t;
 
 typedef struct ping_main_t
@@ -54,31 +56,36 @@ typedef struct ping_main_t
   ping_run_t *ping_run_by_icmp_id;
 } ping_main_t;
 
-ping_main_t ping_main;
+extern ping_main_t ping_main;
 
 #define PING_DEFAULT_DATA_LEN 60
 #define PING_DEFAULT_INTERVAL 1.0
 
-#define PING_MAXIMUM_DATA_SIZE 2000
+#define PING_MAXIMUM_DATA_SIZE (VLIB_BUFFER_DATA_SIZE - sizeof(ip6_header_t) - sizeof(icmp46_header_t) - offsetof(icmp46_echo_request_t, data))
 
-typedef CLIB_PACKED (struct
-                    {
-                    u16 id;
-                    u16 seq; f64 time_sent; u8 data[PING_MAXIMUM_DATA_SIZE];
-                    }) icmp46_echo_request_t;
+/* *INDENT-OFF* */
 
+typedef CLIB_PACKED (struct {
+  u16 id;
+  u16 seq;
+  f64 time_sent;
+  u8 data[0];
+}) icmp46_echo_request_t;
+
+
+typedef CLIB_PACKED (struct {
+  ip6_header_t ip6;
+  icmp46_header_t icmp;
+  icmp46_echo_request_t icmp_echo;
+}) icmp6_echo_request_header_t;
 
-typedef CLIB_PACKED (struct
-                    {
-                    ip6_header_t ip6;
-                    icmp46_header_t icmp; icmp46_echo_request_t icmp_echo;
-                    }) icmp6_echo_request_header_t;
+typedef CLIB_PACKED (struct {
+  ip4_header_t ip4;
+  icmp46_header_t icmp;
+  icmp46_echo_request_t icmp_echo;
+}) icmp4_echo_request_header_t;
 
-typedef CLIB_PACKED (struct
-                    {
-                    ip4_header_t ip4;
-                    icmp46_header_t icmp; icmp46_echo_request_t icmp_echo;
-                    }) icmp4_echo_request_header_t;
+/* *INDENT-ON* */
 
 
 typedef struct