#include <fcntl.h>
#include <inttypes.h>
#include <netinet/in.h>
+#include <sys/socket.h>
#include <net/if.h>
#include <stdlib.h>
#include <string.h>
flow_t key;
/* Statistics. */
- struct timeval used; /* Last used time, in milliseconds. */
+ struct timespec used; /* Last used time. */
long long int packet_count; /* Number of packets matched. */
long long int byte_count; /* Number of bytes matched. */
uint8_t ip_tos; /* IP TOS value. */
memset(&netdev_options, 0, sizeof netdev_options);
netdev_options.name = devname;
netdev_options.ethertype = NETDEV_ETH_TYPE_ANY;
- netdev_options.may_create = true;
if (internal) {
netdev_options.type = "tap";
- } else {
- netdev_options.may_open = true;
}
error = netdev_open(&netdev_options, &netdev);
odp_flow->stats.n_packets = flow->packet_count;
odp_flow->stats.n_bytes = flow->byte_count;
odp_flow->stats.used_sec = flow->used.tv_sec;
- odp_flow->stats.used_nsec = flow->used.tv_usec * 1000;
+ odp_flow->stats.used_nsec = flow->used.tv_nsec;
odp_flow->stats.tcp_flags = TCP_FLAGS(flow->tcp_ctl);
odp_flow->stats.ip_tos = flow->ip_tos;
odp_flow->stats.error = 0;
clear_stats(struct dp_netdev_flow *flow)
{
flow->used.tv_sec = 0;
- flow->used.tv_usec = 0;
+ flow->used.tv_nsec = 0;
flow->packet_count = 0;
flow->byte_count = 0;
flow->ip_tos = 0;
dp_netdev_flow_used(struct dp_netdev_flow *flow, const flow_t *key,
const struct ofpbuf *packet)
{
- time_timeval(&flow->used);
+ time_timespec(&flow->used);
flow->packet_count++;
flow->byte_count += packet->size;
if (key->dl_type == htons(ETH_TYPE_IP)) {