ipfix-export: pass an exp to flow_report_add_del

Pass an ipfix_exporter to this function so that callers can choose which
exporter they are modifying.

Type: improvement
Signed-off-by: Paul Atkins <patkins@graphiant.com>
Change-Id: Ice0ed19a57baf15b1dc85cd27fe01913e36d7f4f
This commit is contained in:
Paul Atkins
2021-09-22 10:06:23 +01:00
committed by Neale Ranns
parent 9e827819a7
commit 40f9a7ac7e
10 changed files with 211 additions and 253 deletions

View File

@@ -202,10 +202,9 @@ flowprobe_template_l4_fields (ipfix_field_specifier_t * f)
* @returns u8 * vector containing the indicated IPFIX template packet
*/
static inline u8 *
flowprobe_template_rewrite_inline (flow_report_main_t * frm,
flow_report_t * fr,
ip4_address_t * collector_address,
ip4_address_t * src_address,
flowprobe_template_rewrite_inline (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address,
u16 collector_port,
flowprobe_variant_t which)
{
@@ -223,7 +222,6 @@ flowprobe_template_rewrite_inline (flow_report_main_t * frm,
flowprobe_main_t *fm = &flowprobe_main;
flowprobe_record_t flags = fr->opaque.as_uword;
bool collect_ip4 = false, collect_ip6 = false;
ipfix_exporter_t *exp = pool_elt_at_index (frm->exporters, 0);
stream = &exp->streams[fr->stream_index];
@@ -310,73 +308,62 @@ flowprobe_template_rewrite_inline (flow_report_main_t * frm,
}
static u8 *
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,
ipfix_report_element_t * elts,
u32 n_elts, u32 * stream_index)
flowprobe_template_rewrite_ip6 (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address, 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,
FLOW_VARIANT_IP6);
return flowprobe_template_rewrite_inline (
exp, fr, collector_address, src_address, collector_port, FLOW_VARIANT_IP6);
}
static u8 *
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,
ipfix_report_element_t * elts,
u32 n_elts, u32 * stream_index)
flowprobe_template_rewrite_ip4 (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address, 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,
FLOW_VARIANT_IP4);
return flowprobe_template_rewrite_inline (
exp, fr, collector_address, src_address, collector_port, FLOW_VARIANT_IP4);
}
static u8 *
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,
ipfix_report_element_t * elts,
u32 n_elts, u32 * stream_index)
flowprobe_template_rewrite_l2 (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address, 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,
FLOW_VARIANT_L2);
return flowprobe_template_rewrite_inline (
exp, fr, collector_address, src_address, collector_port, FLOW_VARIANT_L2);
}
static u8 *
flowprobe_template_rewrite_l2_ip4 (flow_report_main_t * frm,
flow_report_t * fr,
ip4_address_t * collector_address,
ip4_address_t * src_address,
flowprobe_template_rewrite_l2_ip4 (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address,
u16 collector_port,
ipfix_report_element_t * elts,
u32 n_elts, u32 * stream_index)
ipfix_report_element_t *elts, u32 n_elts,
u32 *stream_index)
{
return flowprobe_template_rewrite_inline
(frm, fr, collector_address, src_address, collector_port,
FLOW_VARIANT_L2_IP4);
return flowprobe_template_rewrite_inline (exp, fr, collector_address,
src_address, collector_port,
FLOW_VARIANT_L2_IP4);
}
static u8 *
flowprobe_template_rewrite_l2_ip6 (flow_report_main_t * frm,
flow_report_t * fr,
ip4_address_t * collector_address,
ip4_address_t * src_address,
flowprobe_template_rewrite_l2_ip6 (ipfix_exporter_t *exp, flow_report_t *fr,
ip4_address_t *collector_address,
ip4_address_t *src_address,
u16 collector_port,
ipfix_report_element_t * elts,
u32 n_elts, u32 * stream_index)
ipfix_report_element_t *elts, u32 n_elts,
u32 *stream_index)
{
return flowprobe_template_rewrite_inline
(frm, fr, collector_address, src_address, collector_port,
FLOW_VARIANT_L2_IP6);
return flowprobe_template_rewrite_inline (exp, fr, collector_address,
src_address, collector_port,
FLOW_VARIANT_L2_IP6);
}
/**
@@ -390,27 +377,27 @@ flowprobe_template_rewrite_l2_ip6 (flow_report_main_t * frm,
* will be sent.
*/
vlib_frame_t *
flowprobe_data_callback_ip4 (flow_report_main_t * frm,
flow_report_t * fr,
vlib_frame_t * f, u32 * to_next, u32 node_index)
flowprobe_data_callback_ip4 (flow_report_main_t *frm, ipfix_exporter_t *exp,
flow_report_t *fr, vlib_frame_t *f, u32 *to_next,
u32 node_index)
{
flowprobe_flush_callback_ip4 ();
return f;
}
vlib_frame_t *
flowprobe_data_callback_ip6 (flow_report_main_t * frm,
flow_report_t * fr,
vlib_frame_t * f, u32 * to_next, u32 node_index)
flowprobe_data_callback_ip6 (flow_report_main_t *frm, ipfix_exporter_t *exp,
flow_report_t *fr, vlib_frame_t *f, u32 *to_next,
u32 node_index)
{
flowprobe_flush_callback_ip6 ();
return f;
}
vlib_frame_t *
flowprobe_data_callback_l2 (flow_report_main_t * frm,
flow_report_t * fr,
vlib_frame_t * f, u32 * to_next, u32 node_index)
flowprobe_data_callback_l2 (flow_report_main_t *frm, ipfix_exporter_t *exp,
flow_report_t *fr, vlib_frame_t *f, u32 *to_next,
u32 node_index)
{
flowprobe_flush_callback_l2 ();
return f;
@@ -423,7 +410,7 @@ flowprobe_template_add_del (u32 domain_id, u16 src_port,
vnet_flow_rewrite_callback_t * rewrite_callback,
bool is_add, u16 * template_id)
{
flow_report_main_t *frm = &flow_report_main;
ipfix_exporter_t *exp = &flow_report_main.exporters[0];
vnet_flow_report_add_del_args_t a = {
.rewrite_callback = rewrite_callback,
.flow_data_callback = flow_data_callback,
@@ -432,7 +419,7 @@ flowprobe_template_add_del (u32 domain_id, u16 src_port,
.src_port = src_port,
.opaque.as_uword = flags,
};
return vnet_flow_report_add_del (frm, &a, template_id);
return vnet_flow_report_add_del (exp, &a, template_id);
}
static void