From ace5db70e858b8c114580e8b4f65a3994ee3c4e7 Mon Sep 17 00:00:00 2001 From: Hauke Petersen <hauke.petersen@fu-berlin.de> Date: Thu, 22 Nov 2018 15:11:32 +0100 Subject: [PATCH] net/gnrc_netif: opt of _ipv6_get_iid() --- sys/net/gnrc/netif/gnrc_netif.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sys/net/gnrc/netif/gnrc_netif.c b/sys/net/gnrc/netif/gnrc_netif.c index f672ac4205..225663a850 100644 --- a/sys/net/gnrc/netif/gnrc_netif.c +++ b/sys/net/gnrc/netif/gnrc_netif.c @@ -826,6 +826,14 @@ int gnrc_netif_ipv6_get_iid(gnrc_netif_t *netif, eui64_t *eui64) { #if GNRC_NETIF_L2ADDR_MAXLEN > 0 if (netif->flags & GNRC_NETIF_FLAGS_HAS_L2ADDR) { + /* the device driver abstraction should be able to provide us with the + * IPV6_IID, so we try this first */ + int res = netif->dev->driver->get(netif->dev, NETOPT_IPV6_IID, + eui64, sizeof(eui64_t)); + if (res == sizeof(eui64_t)) { + return 0; + } + switch (netif->device_type) { #ifdef MODULE_NETDEV_ETH case NETDEV_TYPE_ETHERNET: @@ -887,7 +895,8 @@ int gnrc_netif_ipv6_get_iid(gnrc_netif_t *netif, eui64_t *eui64) break; } } -#endif +#endif /* GNRC_NETIF_L2ADDR_MAXLEN > 0 */ + return -ENOTSUP; } -- GitLab