Hi, On 05/03/2016 08:16 PM, Stefan Schmidt wrote: > Hello. > > On 20/04/16 10:19, Alexander Aring wrote: >> This patch adds the autoconfiguration if a valid 802.15.4 short address >> is available for 802.15.4 6LoWPAN interfaces. >> >> Cc: David S. Miller<davem@xxxxxxxxxxxxx> >> Cc: Alexey Kuznetsov<kuznet@xxxxxxxxxxxxx> >> Cc: James Morris<jmorris@xxxxxxxxx> >> Cc: Hideaki YOSHIFUJI<yoshfuji@xxxxxxxxxxxxxx> >> Cc: Patrick McHardy<kaber@xxxxxxxxx> >> Signed-off-by: Alexander Aring<aar@xxxxxxxxxxxxxx> >> --- >> include/net/addrconf.h | 3 +++ >> net/6lowpan/core.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ >> net/ipv6/addrconf.c | 5 +++-- >> 3 files changed, 52 insertions(+), 2 deletions(-) >> >> diff --git a/include/net/addrconf.h b/include/net/addrconf.h >> index 730d856..b1774eb 100644 >> --- a/include/net/addrconf.h >> +++ b/include/net/addrconf.h >> @@ -94,6 +94,9 @@ int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2, >> void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr); >> void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr); >> +void addrconf_add_linklocal(struct inet6_dev *idev, >> + const struct in6_addr *addr, u32 flags); >> + >> static inline int addrconf_ifid_eui48(u8 *eui, struct net_device *dev) >> { >> if (dev->addr_len != ETH_ALEN) >> diff --git a/net/6lowpan/core.c b/net/6lowpan/core.c >> index 7a240b3..fbae31e 100644 >> --- a/net/6lowpan/core.c >> +++ b/net/6lowpan/core.c >> @@ -14,6 +14,7 @@ >> #include <linux/module.h> >> #include <net/6lowpan.h> >> +#include <net/addrconf.h> >> #include "6lowpan_i.h" >> @@ -72,16 +73,61 @@ void lowpan_unregister_netdev(struct net_device *dev) >> } >> EXPORT_SYMBOL(lowpan_unregister_netdev); >> +static int addrconf_ifid_802154_6lowpan(u8 *eui, struct net_device *dev) >> +{ >> + struct wpan_dev *wpan_dev = lowpan_802154_dev(dev)->wdev->ieee802154_ptr; >> + >> + /* Set short_addr autoconfiguration if short_addr is present only */ >> + if (!ieee802154_is_valid_src_short_addr(wpan_dev->short_addr)) >> + return -1; > > -EINVAL instead of -1? > The ipv6 implementation do that for the "dev->addr" slaac the same here. I think the reason is because here, if this fails for any reason then this is simple not an error, we just don't add a link-local for short addr slaac here and don't abort completely the CHANGE/UP of interface. IPv6 also use "-1" return value only if parsing fails, I would to see that also for iphc stuff where we mixed a lot of "-EIO" and "-EINVAL", anyway nobody will really care about that return value. It just means: 0 parsing successful and -1 parsing failed. - Alex -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html