Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
VPP-166 Documentation changes for ip4_forward.c
[vpp.git]
/
vnet
/
vnet
/
flow
/
flow_report_sample.c
diff --git
a/vnet/vnet/flow/flow_report_sample.c
b/vnet/vnet/flow/flow_report_sample.c
index
122bd9d
..
69f0491
100644
(file)
--- a/
vnet/vnet/flow/flow_report_sample.c
+++ b/
vnet/vnet/flow/flow_report_sample.c
@@
-25,7
+25,8
@@
flow_report_sample_main_t flow_report_sample_main;
static u8 * template_rewrite (flow_report_main_t * frm,
flow_report_t * fr,
ip4_address_t * collector_address,
static u8 * template_rewrite (flow_report_main_t * frm,
flow_report_t * fr,
ip4_address_t * collector_address,
- ip4_address_t * src_address)
+ ip4_address_t * src_address,
+ u16 collector_port)
{
vnet_classify_table_t * tblp;
vnet_classify_main_t * vcm = &vnet_classify_main;
{
vnet_classify_table_t * tblp;
vnet_classify_main_t * vcm = &vnet_classify_main;
@@
-91,8
+92,8
@@
static u8 * template_rewrite (flow_report_main_t * frm,
ip->protocol = IP_PROTOCOL_UDP;
ip->src_address.as_u32 = src_address->as_u32;
ip->dst_address.as_u32 = collector_address->as_u32;
ip->protocol = IP_PROTOCOL_UDP;
ip->src_address.as_u32 = src_address->as_u32;
ip->dst_address.as_u32 = collector_address->as_u32;
- udp->src_port = clib_host_to_net_u16 (
4739 /* $$FIXME */
);
- udp->dst_port = clib_host_to_net_u16 (
UDP_DST_PORT_ipfix
);
+ udp->src_port = clib_host_to_net_u16 (
fr->src_port
);
+ udp->dst_port = clib_host_to_net_u16 (
collector_port
);
udp->length = clib_host_to_net_u16 (vec_len(rewrite) - sizeof (*ip));
/* FIXUP: message header export_time */
udp->length = clib_host_to_net_u16 (vec_len(rewrite) - sizeof (*ip));
/* FIXUP: message header export_time */
@@
-150,6
+151,7
@@
static vlib_frame_t * send_flows (flow_report_main_t * frm,
vnet_classify_entry_t * v, * save_v;
vlib_buffer_t *b0 = 0;
u32 next_offset = 0;
vnet_classify_entry_t * v, * save_v;
vlib_buffer_t *b0 = 0;
u32 next_offset = 0;
+ u32 record_offset = 0;
u32 bi0 = ~0;
int i, j, k;
ip4_ipfix_template_packet_t * tp;
u32 bi0 = ~0;
int i, j, k;
ip4_ipfix_template_packet_t * tp;
@@
-218,6
+220,7
@@
static vlib_frame_t * send_flows (flow_report_main_t * frm,
h->sequence_number = clib_host_to_net_u32 (h->sequence_number);
next_offset = (u32) (((u8 *)(s+1)) - (u8 *)tp);
h->sequence_number = clib_host_to_net_u32 (h->sequence_number);
next_offset = (u32) (((u8 *)(s+1)) - (u8 *)tp);
+ record_offset = next_offset;
records_this_buffer = 0;
}
records_this_buffer = 0;
}
@@
-246,7
+249,11
@@
static vlib_frame_t * send_flows (flow_report_main_t * frm,
records_this_buffer++;
fr->sequence_number++;
records_this_buffer++;
fr->sequence_number++;
- if (next_offset > 1450)
+ /* Next record will have the same size as this record */
+ u32 next_record_size = next_offset - record_offset;
+ record_offset = next_offset;
+
+ if (next_offset + next_record_size > frm->path_mtu)
{
s->set_id_length = ipfix_set_id_length (256 /* template ID*/,
next_offset -
{
s->set_id_length = ipfix_set_id_length (256 /* template ID*/,
next_offset -
@@
-346,6
+353,7
@@
flow_sample_command_fn (vlib_main_t * vm,
int rv;
int is_add = 1;
u32 domain_id = 0;
int rv;
int is_add = 1;
u32 domain_id = 0;
+ u32 src_port = UDP_DST_PORT_ipfix;
domain_id = 0;
fsm->classify_table_index = ~0;
domain_id = 0;
fsm->classify_table_index = ~0;
@@
-356,6
+364,8
@@
flow_sample_command_fn (vlib_main_t * vm,
;
else if (unformat (input, "domain %d", &domain_id))
;
;
else if (unformat (input, "domain %d", &domain_id))
;
+ else if (unformat (input, "src-port %d", &src_port))
+ ;
else if (unformat (input, "del"))
is_add = 0;
else
else if (unformat (input, "del"))
is_add = 0;
else
@@
-371,6
+381,7
@@
flow_sample_command_fn (vlib_main_t * vm,
args.flow_data_callback = send_flows;
args.is_add = is_add;
args.domain_id = domain_id;
args.flow_data_callback = send_flows;
args.is_add = is_add;
args.domain_id = domain_id;
+ args.src_port = (u16)src_port;
rv = vnet_flow_report_add_del (frm, &args);
rv = vnet_flow_report_add_del (frm, &args);