X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fflowprobe%2Fflowprobe.h;h=92c3f9063a3efcd9e40e207ea4e44807f393c477;hb=a9855ef839ab99d7e66b9dd8d706b14cc8cd77dd;hp=196c92a7f3592a7bbf648f60c360fc49a0ee02b3;hpb=5c749734b14c2d3be8689b0c5b72ae8d1ddec099;p=vpp.git diff --git a/src/plugins/flowprobe/flowprobe.h b/src/plugins/flowprobe/flowprobe.h index 196c92a7f35..92c3f9063a3 100644 --- a/src/plugins/flowprobe/flowprobe.h +++ b/src/plugins/flowprobe/flowprobe.h @@ -23,8 +23,8 @@ #include #include -#include -#include +#include +#include #include /* 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; /**