summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Obser <florian@cvs.openbsd.org>2014-08-26 21:44:30 +0000
committerFlorian Obser <florian@cvs.openbsd.org>2014-08-26 21:44:30 +0000
commit603248a58e2fd9646b3828232c8d78a2030e727b (patch)
tree455f7c07aa1fd63644349cac92ed73b671936fce
parenta079e27ec8f3b1c3c0d07835c7ab49a954bfea72 (diff)
Do not hand-roll all routers link local address.
pointed out & OK bluhm@
-rw-r--r--sys/netinet6/in6.c4
-rw-r--r--sys/netinet6/in6.h3
-rw-r--r--sys/netinet6/nd6_rtr.c8
3 files changed, 8 insertions, 7 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 1a9dc206158..6174d47b06c 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in6.c,v 1.139 2014/08/25 14:00:34 florian Exp $ */
+/* $OpenBSD: in6.c,v 1.140 2014/08/26 21:44:29 florian Exp $ */
/* $KAME: in6.c,v 1.372 2004/06/14 08:14:21 itojun Exp $ */
/*
@@ -112,6 +112,8 @@ const struct in6_addr in6addr_intfacelocal_allnodes =
IN6ADDR_INTFACELOCAL_ALLNODES_INIT;
const struct in6_addr in6addr_linklocal_allnodes =
IN6ADDR_LINKLOCAL_ALLNODES_INIT;
+const struct in6_addr in6addr_linklocal_allrouters =
+ IN6ADDR_LINKLOCAL_ALLROUTERS_INIT;
const struct in6_addr in6mask0 = IN6MASK0;
const struct in6_addr in6mask32 = IN6MASK32;
diff --git a/sys/netinet6/in6.h b/sys/netinet6/in6.h
index 17619e850c3..f3862bff591 100644
--- a/sys/netinet6/in6.h
+++ b/sys/netinet6/in6.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: in6.h,v 1.73 2014/07/11 16:39:06 henning Exp $ */
+/* $OpenBSD: in6.h,v 1.74 2014/08/26 21:44:29 florian Exp $ */
/* $KAME: in6.h,v 1.83 2001/03/29 02:55:07 jinmei Exp $ */
/*
@@ -134,6 +134,7 @@ extern const struct in6_addr in6mask32;
extern const struct in6_addr in6mask64;
extern const struct in6_addr in6mask96;
extern const struct in6_addr in6mask128;
+extern const struct in6_addr in6addr_linklocal_allrouters;
#endif /* _KERNEL */
/* Both kernel and libc define these for use */
diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c
index a50dbf7c080..1373bc720af 100644
--- a/sys/netinet6/nd6_rtr.c
+++ b/sys/netinet6/nd6_rtr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nd6_rtr.c,v 1.84 2014/08/25 14:00:34 florian Exp $ */
+/* $OpenBSD: nd6_rtr.c,v 1.85 2014/08/26 21:44:29 florian Exp $ */
/* $KAME: nd6_rtr.c,v 1.97 2001/02/07 11:09:13 itojun Exp $ */
/*
@@ -221,10 +221,8 @@ nd6_rs_output(struct ifnet* ifp, struct in6_ifaddr *ia6)
/* ip6->ip6_plen will be set later */
ip6->ip6_nxt = IPPROTO_ICMPV6;
ip6->ip6_hlim = 255;
- bzero(&ip6->ip6_dst, sizeof(struct in6_addr));
-
- ip6->ip6_dst.s6_addr16[0] = htons(0xff02);
- ip6->ip6_dst.s6_addr8[15] = 0x02;
+
+ ip6->ip6_dst = in6addr_linklocal_allrouters;
ip6->ip6_src = ia6->ia_addr.sin6_addr;