#include <sys/socket.h>
#include <sys/un.h>
#include <sys/mman.h>
+#include <sys/time.h>
#include <errno.h>
#include <sys/epoll.h>
{
uint32_t n_recv, n_left;
uint32_t head, next, mask = qp->queue_size - 1;
+ struct timeval tv;
if (max_recv == 0)
return 0;
n_left = n_recv = max_recv;
}
+ gettimeofday (&tv, NULL);
while (n_left--)
{
uint32_t desc_index = qp->enq_ring[next & mask];
daq_vpp_desc_t *d = qp->descs + desc_index;
VPPDescData *dd = qp->desc_data + desc_index;
+ dd->pkthdr.ts.tv_sec = tv.tv_sec;
+ dd->pkthdr.ts.tv_usec = tv.tv_usec;
dd->pkthdr.pktlen = d->length;
dd->pkthdr.address_space_id = d->address_space_id;
dd->msg.data = vc->bpools[d->buffer_pool].base + d->offset;
u8 snort_dir = mp->snort_dir;
int rv = VNET_API_ERROR_NO_SUCH_ENTRY;
- instance = snort_get_instance_by_index (instance_index);
- if (instance)
- rv = snort_interface_enable_disable (
- vm, (char *) instance->name, sw_if_index, 1 /* is_enable */, snort_dir);
+ if (sw_if_index == INDEX_INVALID)
+ rv = VNET_API_ERROR_NO_MATCHING_INTERFACE;
+ else
+ {
+ instance = snort_get_instance_by_index (instance_index);
+ if (instance)
+ rv = snort_interface_enable_disable (vm, (char *) instance->name,
+ sw_if_index, 1 /* is_enable */,
+ snort_dir);
+ }
REPLY_MACRO (VL_API_SNORT_INTERFACE_ATTACH_REPLY);
}
vlib_main_t *vm = vlib_get_main ();
vl_api_snort_interface_detach_reply_t *rmp;
u32 sw_if_index = clib_net_to_host_u32 (mp->sw_if_index);
- int rv;
+ int rv = VNET_API_ERROR_NO_MATCHING_INTERFACE;
- rv = snort_interface_enable_disable (vm, NULL, sw_if_index,
- 0 /* is_enable */, 0);
+ if (sw_if_index != INDEX_INVALID)
+ rv = snort_interface_enable_disable (vm, NULL, sw_if_index,
+ 0 /* is_enable */, SNORT_INOUT);
REPLY_MACRO (VL_API_SNORT_INTERFACE_DETACH_REPLY);
}