pcap: fix build when pcap_sendpacket is unavailable

Before libpcap 1.0.0, pcap_sendpacket was not available on linux targets (unless
backported).
When using such a library, we won't be able to send packet on the wire, yet we
can still dump packets into a pcap file.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
This commit is contained in:
David Marchand 2013-11-22 11:24:57 +01:00
parent fa2e9958db
commit 60191b8919
2 changed files with 18 additions and 0 deletions

View File

@ -213,6 +213,7 @@ eth_pcap_tx_dumper(void *queue,
return num_tx;
}
#ifdef PCAP_CAN_SEND
/*
* Callback to handle sending packets through a real NIC.
*/
@ -243,6 +244,17 @@ eth_pcap_tx(void *queue,
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)

View File

@ -39,6 +39,12 @@ extern "C" {
#endif
#include <pcap.h>
#ifdef pcap_sendpacket
#define PCAP_CAN_SEND
#else
#undef PCAP_CAN_SEND
#endif
#define RTE_ETH_PCAP_PARAM_NAME "eth_pcap"
int rte_eth_from_pcaps(pcap_t * const rx_queues[],