aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic
diff options
context:
space:
mode:
authorNicolas Morey-Chaisemartin <nmorey@kalray.eu>2015-07-15 18:18:17 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-07-16 13:47:52 +0300
commite7d5bbb5cdbc461e960155932ba452755bd099d0 (patch)
tree67a38d4384594464f2a0ddbab3da84ffec164566 /platform/linux-generic
parent8a2e099ba657db3f6ba84c1695be9f94a4649004 (diff)
linux-generic: packet_loop: add method to get mac address
Signed-off-by: Nicolas Morey-Chaisemartin <nmorey@kalray.eu> Reviewed-by: Stuart Haslam <stuart.haslam@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic')
-rw-r--r--platform/linux-generic/include/odp_packet_io_internal.h1
-rw-r--r--platform/linux-generic/odp_packet_io.c8
-rw-r--r--platform/linux-generic/pktio/loop.c8
3 files changed, 12 insertions, 5 deletions
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index e5fc265de..496a27396 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -94,6 +94,7 @@ int loopback_recv_pkt(pktio_entry_t *pktio_entry, odp_packet_t pkts[],
int loopback_send_pkt(pktio_entry_t *pktio_entry, odp_packet_t pkt_tbl[],
unsigned len);
int loopback_mtu_get(pktio_entry_t *pktio_entry);
+int loopback_mac_addr_get(pktio_entry_t *pktio_entry, void *mac_addr);
#ifdef __cplusplus
}
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index fc5775222..b7ebeb869 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -25,9 +25,6 @@
#include <ifaddrs.h>
#include <errno.h>
-/* MAC address for the "loop" interface */
-static const char pktio_loop_mac[] = {0x02, 0xe9, 0x34, 0x80, 0x73, 0x01};
-
static pktio_table_t *pktio_tbl;
/* pktio pointer entries ( for inlines) */
@@ -828,6 +825,7 @@ int odp_pktio_promisc_mode(odp_pktio_t id)
int odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, int addr_size)
{
pktio_entry_t *entry;
+ int ret = ETH_ALEN;
if (addr_size < ETH_ALEN) {
/* Output buffer too small */
@@ -859,7 +857,7 @@ int odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, int addr_size)
ETH_ALEN);
break;
case ODP_PKTIO_TYPE_LOOPBACK:
- memcpy(mac_addr, pktio_loop_mac, ETH_ALEN);
+ ret = loopback_mac_addr_get(entry, mac_addr);
break;
default:
ODP_ABORT("Wrong socket type %d\n", entry->s.type);
@@ -867,5 +865,5 @@ int odp_pktio_mac_addr(odp_pktio_t id, void *mac_addr, int addr_size)
unlock_entry(entry);
- return ETH_ALEN;
+ return ret;
}
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index 3cbc4b1b4..b0403e8f8 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -21,6 +21,8 @@
/* MTU to be reported for the "loop" interface */
#define PKTIO_LOOP_MTU 1500
+/* MAC address for the "loop" interface */
+static const char pktio_loop_mac[] = {0x02, 0xe9, 0x34, 0x80, 0x73, 0x01};
int loopback_init(pktio_entry_t *pktio_entry, odp_pktio_t id)
{
@@ -74,3 +76,9 @@ int loopback_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
{
return PKTIO_LOOP_MTU;
}
+
+int loopback_mac_addr_get(pktio_entry_t *pktio_entry ODP_UNUSED, void *mac_addr)
+{
+ memcpy(mac_addr, pktio_loop_mac, ETH_ALEN);
+ return ETH_ALEN;
+}