Flow: Rename IPFIX exporter.
[vpp.git] / src / plugins / flowprobe / flowprobe.h
index 196c92a..92c3f90 100644 (file)
@@ -23,8 +23,8 @@
 
 #include <vppinfra/hash.h>
 #include <vppinfra/error.h>
-#include <vnet/flow/flow_report.h>
-#include <vnet/flow/flow_report_classify.h>
+#include <vnet/ipfix-export/flow_report.h>
+#include <vnet/ipfix-export/flow_report_classify.h>
 #include <vppinfra/tw_timer_2t_1w_2048sl.h>
 
 /* Default timers in seconds */
@@ -72,38 +72,45 @@ typedef struct
   u16 *next_record_offset_per_worker;
 } flowprobe_protocol_context_t;
 
-#define FLOWPROBE_KEY_IN_U32 22
 /* *INDENT-OFF* */
-typedef CLIB_PACKED (union
-{
-  struct {
-    u32 rx_sw_if_index;
-    u32 tx_sw_if_index;
-    u8 src_mac[6];
-    u8 dst_mac[6];
-    u16 ethertype;
-    ip46_address_t src_address;
-    ip46_address_t dst_address;
-    u8 protocol;
-    u16 src_port;
-    u16 dst_port;
-    flowprobe_variant_t which;
-  };
-  u32 as_u32[FLOWPROBE_KEY_IN_U32];
-}) flowprobe_key_t;
+typedef struct __attribute__ ((aligned (8))) {
+  u32 rx_sw_if_index;
+  u32 tx_sw_if_index;
+  u8 src_mac[6];
+  u8 dst_mac[6];
+  u16 ethertype;
+  ip46_address_t src_address;
+  ip46_address_t dst_address;
+  u8 protocol;
+  u16 src_port;
+  u16 dst_port;
+  flowprobe_variant_t which;
+} flowprobe_key_t;
 /* *INDENT-ON* */
 
-STATIC_ASSERT (sizeof (flowprobe_key_t) == FLOWPROBE_KEY_IN_U32 *
-              sizeof (u32), "flowprobe_key_t padding is wrong");
+typedef struct
+{
+  u32 sec;
+  u32 nsec;
+} timestamp_nsec_t;
 
 typedef struct
 {
   flowprobe_key_t key;
   u64 packetcount;
   u64 octetcount;
+  timestamp_nsec_t flow_start;
+  timestamp_nsec_t flow_end;
   f64 last_updated;
   f64 last_exported;
   u32 passive_timer_handle;
+  union
+  {
+    struct
+    {
+      u16 flags;
+    } tcp;
+  } prot;
 } flowprobe_entry_t;
 
 /**