ipv6: IPv6 over Firewire (RFC3146) support.
Subsystems (4)
PATCH 4/4 ipv6: IPv6 over Firewire (RFC3146) support.
Signed-off-by YOSHIFUJI Hideaki <[email protected]>
--- drivers/firewire/Kconfig | 6 ++-- drivers/firewire/net.c | 85 +++++++++++++++++++++++++++++++++++++++++----- net/ipv6/addrconf.c | 20 ++++++++++- 3 files changed, 98 insertions(+), 13 deletions(-)
drivers/firewire/Kconfig +3 -3
@@ -47,9 +47,9 @@ config FIREWIRE_NET tristate "IP networking over 1394" depends on FIREWIRE && INET help - This enables IPv4 over IEEE 1394, providing IP connectivity with - other implementations of RFC 2734 as found on several operating - systems. Multicast support is currently limited. + This enables IPv4/IPv6 over IEEE 1394, providing IP connectivity + with other implementations of RFC 2734/RFC3146 as found on + several operating systems. Multicast support is currently limited. To compile this driver as a module, say M here: The module will be called firewire-net.
drivers/firewire/net.c +76 -9
154 lines not on this page · raw message
net/ipv6/addrconf.c +19 -1
@@ -70,6 +70,7 @@#include <net/snmp.h> #include <net/af_ieee802154.h> +#include <net/firewire.h> #include <net/ipv6.h> #include <net/protocol.h> #include <net/ndisc.h>
@@ -1660,6 +1661,20 @@ static int addrconf_ifid_eui64(u8 *eui, struct net_device *dev)return 0 ; } +static int addrconf_ifid_ieee1394 (u8 *eui,struct net_device *dev) +{ +union fwnet_hwaddr *ha; + +if (dev->addr_len !=FWNET_ALEN ) +return -1 ; + + ha = (union fwnet_hwaddr *)dev->dev_addr; + +memcpy (eui, &ha->uc.uniq_id,sizeof (ha->uc.uniq_id)); + eui[0 ] ^=2 ; +return 0 ; +} +static int addrconf_ifid_arcnet (u8 *eui,struct net_device *dev) {/* XXX: inherit EUI-64 from other interface -- yoshfuji */
@@ -1724,6 +1739,8 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)return addrconf_ifid_gre (eui, dev);case ARPHRD_IEEE802154 :return addrconf_ifid_eui64 (eui, dev); +case ARPHRD_IEEE1394 : +return addrconf_ifid_ieee1394 (eui, dev); }return -1 ; }
@@ -2565,7 +2582,8 @@ static void addrconf_dev_config(struct net_device *dev) (dev->type != ARPHRD_FDDI) && (dev->type != ARPHRD_ARCNET) && (dev->type != ARPHRD_INFINIBAND) && - (dev->type != ARPHRD_IEEE802154)) { + (dev->type != ARPHRD_IEEE802154) && + (dev->type != ARPHRD_IEEE1394)) {/* Alas, we support only Ethernet autoconfiguration. */ return ; }
Signature · 1 line
1.7.9.5