ip: fix ip zero checksum verification
[vpp.git] / src / plugins / ioam / udp-ping / udp_ping_export.c
index ce64b60..3c632c8 100644 (file)
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-#include <vnet/flow/flow_report.h>
+#include <vnet/ipfix-export/flow_report.h>
 #include <ioam/analyse/ioam_summary_export.h>
 #include <vnet/api_errno.h>
 #include <ioam/udp-ping/udp_ping.h>
 static u8 *
 udp_ping_template_rewrite (flow_report_main_t * frm, flow_report_t * fr,
                           ip4_address_t * collector_address,
-                          ip4_address_t * src_address, u16 collector_port)
+                          ip4_address_t * src_address, u16 collector_port,
+                          ipfix_report_element_t * elts,
+                          u32 n_elts, u32 * stream_index)
 {
   return ioam_template_rewrite (frm, fr, collector_address,
-                               src_address, collector_port);
+                               src_address, collector_port, elts, n_elts,
+                               stream_index);
 }
 
 static vlib_frame_t *
@@ -149,7 +152,7 @@ udp_ping_send_flows (flow_report_main_t * frm, flow_report_t * fr,
                  if (udp->checksum == 0)
                    udp->checksum = 0xffff;
 
-                 ASSERT (ip->checksum == ip4_header_checksum (ip));
+                 ASSERT (ip4_header_checksum_is_valid (ip));
 
                  to_next[0] = bi0;
                  f->n_vectors++;
@@ -200,7 +203,7 @@ udp_ping_send_flows (flow_report_main_t * frm, flow_report_t * fr,
       if (udp->checksum == 0)
        udp->checksum = 0xffff;
 
-      ASSERT (ip->checksum == ip4_header_checksum (ip));
+      ASSERT (ip4_header_checksum_is_valid (ip));
 
       to_next[0] = bi0;
       f->n_vectors++;
@@ -226,15 +229,16 @@ udp_ping_flow_create (u8 del)
   int rv;
   u32 domain_id = 0;
   flow_report_main_t *frm = &flow_report_main;
+  u16 template_id;
 
-  memset (&args, 0, sizeof (args));
+  clib_memset (&args, 0, sizeof (args));
   args.rewrite_callback = udp_ping_template_rewrite;
   args.flow_data_callback = udp_ping_send_flows;
   del ? (args.is_add = 0) : (args.is_add = 1);
   args.domain_id = domain_id;
   args.src_port = UDP_DST_PORT_ipfix;
 
-  rv = vnet_flow_report_add_del (frm, &args);
+  rv = vnet_flow_report_add_del (frm, &args, &template_id);
 
   switch (rv)
     {
@@ -286,15 +290,16 @@ VLIB_CLI_COMMAND (set_udp_ping_export_command, static) = {
 clib_error_t *
 udp_ping_flow_report_init (vlib_main_t * vm)
 {
-  clib_error_t *error;
-
-  if ((error = vlib_call_init_function (vm, flow_report_init)))
-    return error;
-
   return 0;
 }
 
-VLIB_INIT_FUNCTION (udp_ping_flow_report_init);
+/* *INDENT-OFF* */
+VLIB_INIT_FUNCTION (udp_ping_flow_report_init) =
+{
+  .runs_after = VLIB_INITS ("flow_report_init"),
+};
+/* *INDENT-ON* */
+
 
 /*
  * fd.io coding-style-patch-verification: ON