| From: |
| YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> |
| To: |
| davem@redhat.com, kuznet@ms2.inr.ac.ru, jgarzik@pobox.com |
| Subject: |
| [PATCH] IPV6: ARCnet IPv6 support (2/2) |
| Date: |
| Fri, 16 May 2003 04:14:16 +0900 (JST) |
| Cc: |
| linux-net@vger.kernel.org, usagi@linux-ipv6.org |
Hi,
IPv6 over ARCnet (RFC2497) support, IPv6 part.
Patch is against 2.5.69 and depends on the part 1, driver part.
I believe that this change is not harmful at all. However,
honestly speaking, since I don't have ARCnet hardware, I've never tested...
NOTE: I did not change MTU size while RFC says default MTU is 9072.
Index: include/net/if_inet6.h
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/include/net/if_inet6.h,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 if_inet6.h
--- include/net/if_inet6.h 6 May 2003 12:44:09 -0000 1.1.1.5
+++ include/net/if_inet6.h 15 May 2003 18:41:24 -0000
@@ -264,5 +264,10 @@
buf[5]=0x00;
}
}
+
+static inline void ipv6_arcnet_mc_map(const struct in6_addr *addr, char *buf)
+{
+ buf[0] = 0x00;
+}
#endif
#endif
Index: net/ipv6/addrconf.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/addrconf.c,v
retrieving revision 1.1.1.13
diff -u -r1.1.1.13 addrconf.c
--- net/ipv6/addrconf.c 10 May 2003 15:49:16 -0000 1.1.1.13
+++ net/ipv6/addrconf.c 15 May 2003 18:41:27 -0000
@@ -32,6 +32,7 @@
* support.
* Yuji SEKIYA @USAGI : Don't assign a same IPv6
* address on a same interface.
+ * YOSHIFUJI Hideaki @USAGI : ARCnet support
*/
#include <linux/config.h>
@@ -44,6 +45,7 @@
#include <linux/in6.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
+#include <linux/if_arcnet.h>
#include <linux/route.h>
#include <linux/inetdevice.h>
#include <linux/init.h>
@@ -1061,6 +1063,13 @@
eui[4] = 0xFE;
eui[0] ^= 2;
return 0;
+ case ARPHRD_ARCNET:
+ /* XXX: inherit EUI-64 fro mother interface -- yoshfuji */
+ if (dev->addr_len != ARCNET_ALEN)
+ return -1;
+ memset(eui, 0, 7);
+ eui[7] = *(u8*)dev->dev_addr;
+ return 0;
}
return -1;
}
@@ -1732,7 +1741,8 @@
if ((dev->type != ARPHRD_ETHER) &&
(dev->type != ARPHRD_FDDI) &&
- (dev->type != ARPHRD_IEEE802_TR)) {
+ (dev->type != ARPHRD_IEEE802_TR) &&
+ (dev->type != ARPHRD_ARCNET)) {
/* Alas, we support only Ethernet autoconfiguration. */
return;
}
@@ -2715,6 +2725,7 @@
case ARPHRD_ETHER:
case ARPHRD_FDDI:
case ARPHRD_IEEE802_TR:
+ case ARPHRD_ARCNET:
addrconf_dev_config(dev);
break;
default:;
Index: net/ipv6/ndisc.c
===================================================================
RCS file: /cvsroot/usagi/usagi-backport/linux25/net/ipv6/ndisc.c,v
retrieving revision 1.1.1.12
diff -u -r1.1.1.12 ndisc.c
--- net/ipv6/ndisc.c 10 May 2003 15:49:16 -0000 1.1.1.12
+++ net/ipv6/ndisc.c 15 May 2003 18:41:27 -0000
@@ -232,6 +232,9 @@
case ARPHRD_IEEE802_TR:
ipv6_tr_mc_map(addr,buf);
return 0;
+ case ARPHRD_ARCNET:
+ ipv6_arcnet_mc_map(addr, buf);
+ return 0;
default:
if (dir) {
memcpy(buf, dev->broadcast, dev->addr_len);
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html