ng_netdev_eth: add NETCONF_OPT_IPV6_IID handler
This commit is contained in:
parent
aa46e9c14c
commit
bdb1b6036d
@ -29,6 +29,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "byteorder.h"
|
#include "byteorder.h"
|
||||||
|
#include "net/eui64.h"
|
||||||
#include "net/ng_ethernet.h"
|
#include "net/ng_ethernet.h"
|
||||||
#include "net/ng_ethertype.h"
|
#include "net/ng_ethertype.h"
|
||||||
#include "net/ng_netdev.h"
|
#include "net/ng_netdev.h"
|
||||||
@ -198,6 +199,21 @@ static inline int _get_addr_len(uint16_t *value, size_t max_len)
|
|||||||
return sizeof(uint16_t);
|
return sizeof(uint16_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int _get_iid(ng_netdev_eth_t *netdev, eui64_t *value, size_t max_len)
|
||||||
|
{
|
||||||
|
if (max_len < sizeof(eui64_t)) {
|
||||||
|
/* value buffer not big enough */
|
||||||
|
return -EOVERFLOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
dev_eth_t *dev = netdev->ethdev;
|
||||||
|
uint8_t addr[NG_ETHERNET_ADDR_LEN];
|
||||||
|
dev->driver->get_mac_addr(dev, addr);
|
||||||
|
ng_ethernet_get_iid(value, addr);
|
||||||
|
|
||||||
|
return sizeof(eui64_t);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int _get_max_pkt_sz(uint16_t *value, size_t max_len)
|
static inline int _get_max_pkt_sz(uint16_t *value, size_t max_len)
|
||||||
{
|
{
|
||||||
if (max_len != sizeof(uint16_t)) {
|
if (max_len != sizeof(uint16_t)) {
|
||||||
@ -244,6 +260,10 @@ static int _get(ng_netdev_t *dev, ng_netconf_opt_t opt, void *value,
|
|||||||
DEBUG("address length\n");
|
DEBUG("address length\n");
|
||||||
return _get_addr_len(value, max_len);
|
return _get_addr_len(value, max_len);
|
||||||
|
|
||||||
|
case NETCONF_OPT_IPV6_IID:
|
||||||
|
DEBUG("IPv6 IID\n");
|
||||||
|
return _get_iid((ng_netdev_eth_t *)dev, value, max_len);
|
||||||
|
|
||||||
case NETCONF_OPT_MAX_PACKET_SIZE:
|
case NETCONF_OPT_MAX_PACKET_SIZE:
|
||||||
DEBUG("maximum packet size\n");
|
DEBUG("maximum packet size\n");
|
||||||
return _get_max_pkt_sz(value, max_len);
|
return _get_max_pkt_sz(value, max_len);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user