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;
/**