From patchwork Thu May 10 13:25:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: alex.bluesman.smirnov@gmail.com X-Patchwork-Id: 158291 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E11B1B6FA0 for ; Thu, 10 May 2012 23:26:26 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758593Ab2EJN0Z (ORCPT ); Thu, 10 May 2012 09:26:25 -0400 Received: from mail-bk0-f46.google.com ([209.85.214.46]:50611 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758509Ab2EJN0X (ORCPT ); Thu, 10 May 2012 09:26:23 -0400 Received: by bkcji2 with SMTP id ji2so1283698bkc.19 for ; Thu, 10 May 2012 06:26:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=g4mkUocJKqsH+84moLg0RS0GKGkBnaeeCRrLPhuaqz4=; b=dGDVUgaaCJgbcHBdSF2Sr0fG/MjOZstd4pfZxlWHQJ5I2n7rynyvn78UodHb5scdxm OCJl4QPviq8VtoMM23tf/dMocFtivd9+cPEgpFmN5hD3xZ4Upy0hXDU4gqrEhD5wgcS1 tl9H1fW2RBHG+qUkfCDTZbd3CX86O1hS6pIdtUi4T1ESGY7OkMmcrL3KrcBiGPZBC/Tl U9/X94W0mA5JlkZEMTZlcbkFK4omuHJJVyplF6wNyP7bXOIKuBwNXi6lBUOvP/cCjSlw kooRaUsq7hMLrcqA4vFFYNviOfp/zuhpANySpv0Q6c0IeVFXK4eNSnax2Ls7kwL7evFy 1lrg== Received: by 10.204.151.130 with SMTP id c2mr2319377bkw.125.1336656382487; Thu, 10 May 2012 06:26:22 -0700 (PDT) Received: from localhost.localdomain ([91.213.169.4]) by mx.google.com with ESMTPS id n17sm12032520bkw.5.2012.05.10.06.26.21 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 10 May 2012 06:26:21 -0700 (PDT) From: Alexander Smirnov To: davem@davemloft.net Cc: netdev@vger.kernel.org, Alexander Smirnov Subject: [PATCH net-next] 6lowpan: IPv6 link local address Date: Thu, 10 May 2012 17:25:52 +0400 Message-Id: <1336656352-19518-1-git-send-email-alex.bluesman.smirnov@gmail.com> X-Mailer: git-send-email 1.7.2.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org According to the RFC4944 (Transmission of IPv6 Packets over IEEE 802.15.4 Networks), chapter 7: The IPv6 link-local address [RFC4291] for an IEEE 802.15.4 interface is formed by appending the Interface Identifier, as defined above, to the prefix FE80::/64. 10 bits 54 bits 64 bits +----------+-----------------------+----------------------------+ |1111111010| (zeros) | Interface Identifier | +----------+-----------------------+----------------------------+ This patch adds IPv6 address generation support for the 6lowpan interfaces. Signed-off-by: Alexander Smirnov --- net/ipv6/addrconf.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index e3b3421..8b7f100 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -66,6 +66,7 @@ #include #include +#include #include #include #include @@ -1514,6 +1515,14 @@ static int addrconf_ifid_eui48(u8 *eui, struct net_device *dev) return 0; } +static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev) +{ + if (dev->addr_len != IEEE802154_ADDR_LEN) + return -1; + memcpy(eui, dev->dev_addr, 8); + return 0; +} + static int addrconf_ifid_arcnet(u8 *eui, struct net_device *dev) { /* XXX: inherit EUI-64 from other interface -- yoshfuji */ @@ -1577,6 +1586,8 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) return addrconf_ifid_sit(eui, dev); case ARPHRD_IPGRE: return addrconf_ifid_gre(eui, dev); + case ARPHRD_IEEE802154: + return addrconf_ifid_eui64(eui, dev); } return -1; } @@ -2438,7 +2449,8 @@ static void addrconf_dev_config(struct net_device *dev) (dev->type != ARPHRD_FDDI) && (dev->type != ARPHRD_IEEE802_TR) && (dev->type != ARPHRD_ARCNET) && - (dev->type != ARPHRD_INFINIBAND)) { + (dev->type != ARPHRD_INFINIBAND) && + (dev->type != ARPHRD_IEEE802154)) { /* Alas, we support only Ethernet autoconfiguration. */ return; }