X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipfix-export%2Fflow_report.h;h=a26232d59191925336bd17e91c72acd0c82d88dd;hb=6d4bb42540768a94abd70d37da6716341a515c40;hp=b45ce06a880b55d3a6e8589fcc24ab86b2b81ed1;hpb=a9855ef839ab99d7e66b9dd8d706b14cc8cd77dd;p=vpp.git diff --git a/src/vnet/ipfix-export/flow_report.h b/src/vnet/ipfix-export/flow_report.h index b45ce06a880..a26232d5919 100644 --- a/src/vnet/ipfix-export/flow_report.h +++ b/src/vnet/ipfix-export/flow_report.h @@ -31,6 +31,13 @@ #include +/* ipfix field definitions for a particular report */ +typedef struct +{ + u32 info_element; + u32 size; +} ipfix_report_element_t; + /* Used to build the rewrite */ typedef struct { @@ -42,16 +49,25 @@ typedef struct struct flow_report_main; struct flow_report; -typedef u8 *(vnet_flow_rewrite_callback_t) (struct flow_report_main *, - struct flow_report *, - ip4_address_t *, - ip4_address_t *, u16); - typedef vlib_frame_t *(vnet_flow_data_callback_t) (struct flow_report_main *, struct flow_report *, vlib_frame_t *, u32 *, u32); +typedef u8 *(vnet_flow_rewrite_callback_t) (struct flow_report_main *, + struct flow_report *, + ip4_address_t *, + ip4_address_t *, u16, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index); + +u8 *vnet_flow_rewrite_generic_callback (struct flow_report_main *, + struct flow_report *, + ip4_address_t *, + ip4_address_t *, u16, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index); + typedef union { void *as_ptr; @@ -82,8 +98,11 @@ typedef struct flow_report /* Opaque data */ opaque_t opaque; - /* build-the-rewrite callback */ + /* build-the-template-packet rewrite callback */ vnet_flow_rewrite_callback_t *rewrite_callback; + ipfix_report_element_t *report_elements; + u32 n_report_elements; + u32 *stream_indexp; /* Send-flow-data callback */ vnet_flow_data_callback_t *flow_data_callback; @@ -128,10 +147,13 @@ typedef struct { vnet_flow_data_callback_t *flow_data_callback; vnet_flow_rewrite_callback_t *rewrite_callback; + ipfix_report_element_t *report_elements; + u32 n_report_elements; opaque_t opaque; int is_add; u32 domain_id; u16 src_port; + u32 *stream_indexp; } vnet_flow_report_add_del_args_t; int vnet_flow_report_add_del (flow_report_main_t * frm,