X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fflowprobe%2Fflowprobe.c;h=c130b9089341eb1d6dd42826e3966302942bf35f;hb=5a2e278;hp=8975f89cddf6e62d700b5d73da01ba9b7a777543;hpb=5c749734b14c2d3be8689b0c5b72ae8d1ddec099;p=vpp.git diff --git a/src/plugins/flowprobe/flowprobe.c b/src/plugins/flowprobe/flowprobe.c index 8975f89cddf..c130b908934 100644 --- a/src/plugins/flowprobe/flowprobe.c +++ b/src/plugins/flowprobe/flowprobe.c @@ -30,7 +30,6 @@ #include #include -#include /* define message IDs */ #include @@ -164,7 +163,7 @@ flowprobe_template_l2_fields (ipfix_field_specifier_t * f) static inline ipfix_field_specifier_t * flowprobe_template_common_fields (ipfix_field_specifier_t * f) { -#define flowprobe_template_common_field_count() 3 +#define flowprobe_template_common_field_count() 5 /* ingressInterface, TLV type 10, u32 */ f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , ingressInterface, 4); @@ -180,13 +179,23 @@ flowprobe_template_common_fields (ipfix_field_specifier_t * f) packetDeltaCount, 8); f++; + /* flowStartNanoseconds, TLV type 156, u64 */ + f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , + flowStartNanoseconds, 8); + f++; + + /* flowEndNanoseconds, TLV type 157, u64 */ + f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , + flowEndNanoseconds, 8); + f++; + return f; } static inline ipfix_field_specifier_t * flowprobe_template_l4_fields (ipfix_field_specifier_t * f) { -#define flowprobe_template_l4_field_count() 2 +#define flowprobe_template_l4_field_count() 3 /* sourceTransportPort, TLV type 7, u16 */ f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , sourceTransportPort, 2); @@ -195,6 +204,11 @@ flowprobe_template_l4_fields (ipfix_field_specifier_t * f) f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , destinationTransportPort, 2); f++; + /* tcpControlBits, TLV type 6, u16 */ + f->e_id_length = ipfix_e_id_length (0 /* enterprise */ , + tcpControlBits, 2); + f++; + return f; } @@ -319,7 +333,9 @@ flowprobe_template_rewrite_ip6 (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, - u16 collector_port) + u16 collector_port, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index) { return flowprobe_template_rewrite_inline (frm, fr, collector_address, src_address, collector_port, @@ -331,7 +347,9 @@ flowprobe_template_rewrite_ip4 (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, - u16 collector_port) + u16 collector_port, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index) { return flowprobe_template_rewrite_inline (frm, fr, collector_address, src_address, collector_port, @@ -343,7 +361,9 @@ flowprobe_template_rewrite_l2 (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, - u16 collector_port) + u16 collector_port, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index) { return flowprobe_template_rewrite_inline (frm, fr, collector_address, src_address, collector_port, @@ -355,7 +375,9 @@ flowprobe_template_rewrite_l2_ip4 (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, - u16 collector_port) + u16 collector_port, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index) { return flowprobe_template_rewrite_inline (frm, fr, collector_address, src_address, collector_port, @@ -367,7 +389,9 @@ flowprobe_template_rewrite_l2_ip6 (flow_report_main_t * frm, flow_report_t * fr, ip4_address_t * collector_address, ip4_address_t * src_address, - u16 collector_port) + u16 collector_port, + ipfix_report_element_t * elts, + u32 n_elts, u32 * stream_index) { return flowprobe_template_rewrite_inline (frm, fr, collector_address, src_address, collector_port, @@ -1089,9 +1113,9 @@ flowprobe_init (vlib_main_t * vm) fm->vlib_time_0 = vlib_time_now (vm); fm->nanosecond_time_0 = unix_time_now_nsec (); - memset (fm->template_reports, 0, sizeof (fm->template_reports)); - memset (fm->template_size, 0, sizeof (fm->template_size)); - memset (fm->template_per_flow, 0, sizeof (fm->template_per_flow)); + clib_memset (fm->template_reports, 0, sizeof (fm->template_reports)); + clib_memset (fm->template_size, 0, sizeof (fm->template_size)); + clib_memset (fm->template_per_flow, 0, sizeof (fm->template_per_flow)); /* Decide how many worker threads we have */ num_threads = 1 /* main thread */ + tm->n_threads;