Message ID | 1383124271-15290-3-git-send-email-jukka.rissanen@linux.intel.com |
---|---|
State | Deferred, archived |
Delegated to: | David Miller |
Headers | show |
Hi Jukka, On Wed, Oct 30, 2013 at 11:11:11AM +0200, Jukka Rissanen wrote: > Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> > --- > net/ipv6/addrconf.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c > index d6ff126..60bf947 100644 > --- a/net/ipv6/addrconf.c > +++ b/net/ipv6/addrconf.c > @@ -1783,6 +1783,15 @@ static int addrconf_ifid_ip6tnl(u8 *eui, struct net_device *dev) > return 0; > } > > +static int addrconf_ifid_rawip(u8 *eui, struct net_device *dev) > +{ > + if (dev->addr_len != 8) > + return -1; > + memcpy(eui, dev->dev_addr, 8); > + eui[0] ^= 2; > + return 0; > +} > + I think we have already a function like this, look for: static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev) which is the same for ieee802154 6lowpan. Are there any issues why we can't use the same function here? - Alex -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Alexander, On 30.10.2013 11:31, Alexander Aring wrote: > Hi Jukka, > > On Wed, Oct 30, 2013 at 11:11:11AM +0200, Jukka Rissanen wrote: >> Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> >> --- >> net/ipv6/addrconf.c | 14 +++++++++++++- >> 1 file changed, 13 insertions(+), 1 deletion(-) >> >> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c >> index d6ff126..60bf947 100644 >> --- a/net/ipv6/addrconf.c >> +++ b/net/ipv6/addrconf.c >> @@ -1783,6 +1783,15 @@ static int addrconf_ifid_ip6tnl(u8 *eui, struct net_device *dev) >> return 0; >> } >> >> +static int addrconf_ifid_rawip(u8 *eui, struct net_device *dev) >> +{ >> + if (dev->addr_len != 8) >> + return -1; >> + memcpy(eui, dev->dev_addr, 8); >> + eui[0] ^= 2; >> + return 0; >> +} >> + > > I think we have already a function like this, look for: > > static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev) > > which is the same for ieee802154 6lowpan. Are there any issues why we > can't use the same function here? No issues there, I can certainly prepare a patch that uses the addrconf_ifid_eui64() instead.
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index d6ff126..60bf947 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1783,6 +1783,15 @@ static int addrconf_ifid_ip6tnl(u8 *eui, struct net_device *dev) return 0; } +static int addrconf_ifid_rawip(u8 *eui, struct net_device *dev) +{ + if (dev->addr_len != 8) + return -1; + memcpy(eui, dev->dev_addr, 8); + eui[0] ^= 2; + return 0; +} + static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) { switch (dev->type) { @@ -1803,6 +1812,8 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) return addrconf_ifid_ieee1394(eui, dev); case ARPHRD_TUNNEL6: return addrconf_ifid_ip6tnl(eui, dev); + case ARPHRD_RAWIP: + return addrconf_ifid_rawip(eui, dev); } return -1; } @@ -2681,7 +2692,8 @@ static void addrconf_dev_config(struct net_device *dev) (dev->type != ARPHRD_INFINIBAND) && (dev->type != ARPHRD_IEEE802154) && (dev->type != ARPHRD_IEEE1394) && - (dev->type != ARPHRD_TUNNEL6)) { + (dev->type != ARPHRD_TUNNEL6) && + (dev->type != ARPHRD_RAWIP)) { /* Alas, we support only Ethernet autoconfiguration. */ return; }
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com> --- net/ipv6/addrconf.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)