X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fpcap%2Fpcap_osdep_linux.c;fp=drivers%2Fnet%2Fpcap%2Fpcap_osdep_linux.c;h=97033f57c5d9d1aae43d88d82c124e453ceaaff6;hb=436c089a528cbb834381eb908ec33bd0c9da6b92;hp=0000000000000000000000000000000000000000;hpb=1ee899977d701768f6437e2b178a06e46283f821;p=dpdk.git diff --git a/drivers/net/pcap/pcap_osdep_linux.c b/drivers/net/pcap/pcap_osdep_linux.c new file mode 100644 index 0000000000..97033f57c5 --- /dev/null +++ b/drivers/net/pcap/pcap_osdep_linux.c @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2016 Intel Corporation. + * Copyright(c) 2014 6WIND S.A. + * All rights reserved. + */ + +#include +#include +#include +#include + +#include +#include + +#include "pcap_osdep.h" + +int +osdep_iface_index_get(const char *name) +{ + return if_nametoindex(name); +} + +int +osdep_iface_mac_get(const char *if_name, struct rte_ether_addr *mac) +{ + struct ifreq ifr; + int if_fd = socket(AF_INET, SOCK_DGRAM, 0); + + if (if_fd == -1) + return -1; + + rte_strscpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name)); + if (ioctl(if_fd, SIOCGIFHWADDR, &ifr)) { + close(if_fd); + return -1; + } + + rte_memcpy(mac->addr_bytes, ifr.ifr_hwaddr.sa_data, RTE_ETHER_ADDR_LEN); + + close(if_fd); + return 0; +}