#include <vnet/ipfix-export/flow_report.h>
#include <vnet/ipfix-export/flow_report_classify.h>
#include <vnet/api_errno.h>
+#include <vnet/classify/vnet_classify.h>
/* Common prefix of tcp and udp headers
* containing only source and destination port fields */
t = pool_elt_at_index (vcm->tables, table->classify_table_index);
- while (clib_atomic_test_and_set (t->writer_lock))
- ;
+ clib_spinlock_lock (&t->writer_lock);
for (i = 0; i < t->nbuckets; i++)
{
u32 copy_len = sizeof (ip4_header_t) +
sizeof (udp_header_t) + sizeof (ipfix_message_header_t);
- clib_memcpy (b0->data, fr->rewrite, copy_len);
+ clib_memcpy_fast (b0->data, fr->rewrite, copy_len);
b0->current_data = 0;
b0->current_length = copy_len;
b0->flags |= VLIB_BUFFER_TOTAL_LENGTH_VALID;
#define _(field,mask,item,length) \
if (clib_bitmap_get (fr->fields_to_send, field_index)) \
{ \
- clib_memcpy (b0->data + next_offset, &field, \
+ clib_memcpy_fast (b0->data + next_offset, &field, \
length); \
next_offset += length; \
} \
/* Add packetTotalCount manually */
{
u64 packets = clib_host_to_net_u64 (v->hits);
- clib_memcpy (b0->data + next_offset, &packets,
- sizeof (packets));
+ clib_memcpy_fast (b0->data + next_offset, &packets,
+ sizeof (packets));
next_offset += sizeof (packets);
}
records_this_buffer++;
bi0 = ~0;
}
- clib_atomic_release (t->writer_lock);
+ clib_spinlock_unlock (&t->writer_lock);
return f;
}
if (fcm->src_port == 0)
clib_error_return (0, "call 'set ipfix classify stream' first");
- memset (&args, 0, sizeof (args));
+ clib_memset (&args, 0, sizeof (args));
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{