#include <rte_string_fns.h>
#include <rte_cycles.h>
#include <rte_kvargs.h>
+#include <rte_dev.h>
#include <net/if.h>
-#include "rte_eth_pcap.h"
+#include <pcap.h>
#define RTE_ETH_PCAP_SNAPSHOT_LEN 65535
#define RTE_ETH_PCAP_SNAPLEN 4096
return num_tx;
}
-#ifdef PCAP_CAN_SEND
/*
* Callback to handle sending packets through a real NIC.
*/
mbuf = bufs[i];
ret = pcap_sendpacket(tx_queue->pcap, (u_char*) mbuf->pkt.data,
mbuf->pkt.data_len);
- if(likely(!ret))
- num_tx++;
+ if (unlikely(ret != 0))
+ break;
+ num_tx++;
rte_pktmbuf_free(mbuf);
}
tx_queue->err_pkts += nb_pkts - num_tx;
return num_tx;
}
-#else
-static uint16_t
-eth_pcap_tx(__rte_unused void *queue,
- __rte_unused struct rte_mbuf **bufs,
- __rte_unused uint16_t nb_pkts)
-{
- RTE_LOG(ERR, PMD, "pcap library cannot send packets, please rebuild "
- "with a more up to date libpcap\n");
- return -1;
-}
-#endif
static int
eth_dev_start(struct rte_eth_dev *dev)
}
-int
-rte_pmd_pcap_init(const char *name, const char *params)
+static int
+rte_pmd_pcap_devinit(const char *name, const char *params)
{
unsigned numa_node, using_dumpers = 0;
int ret;
}
+static struct rte_driver pmd_pcap_drv = {
+ .name = "eth_pcap",
+ .type = PMD_VDEV,
+ .init = rte_pmd_pcap_devinit,
+};
+
+PMD_REGISTER_DRIVER(pmd_pcap_drv);