changeset 1835:3190339ecb13 draft

If we have one interface enabled for IPv6 RS, we stupidly process RAs for all interfaces we control. This patch fixes this and updates the man page to reflect this better.
author Roy Marples <roy@marples.name>
date Tue, 05 Feb 2013 10:18:31 +0000
parents 56d1e1a01918
children 89b54f6cf803
files dhcpcd.conf.5.in ipv6rs.c
diffstat 2 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/dhcpcd.conf.5.in	Mon Jan 28 09:54:03 2013 +0000
+++ b/dhcpcd.conf.5.in	Tue Feb 05 10:18:31 2013 +0000
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2006-2012 Roy Marples
+.\" Copyright (c) 2006-2013 Roy Marples
 .\" All rights reserved
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd October 11, 2012
+.Dd February 5, 2013
 .Dt DHCPCD.CONF 5 SMM
 .Os
 .Sh NAME
@@ -200,7 +200,7 @@
 .%T "RFC 3927"
 .Re
 .It Ic noipv6rs
-Disable solicition of IPv6 Router Advertisements.
+Disable solicitation and receipt of IPv6 Router Advertisements.
 .It Ic nolink
 Don't receive link messages about carrier status.
 You should only set this for buggy interface drivers.
--- a/ipv6rs.c	Mon Jan 28 09:54:03 2013 +0000
+++ b/ipv6rs.c	Tue Feb 05 10:18:31 2013 +0000
@@ -462,6 +462,13 @@
 		syslog(LOG_ERR, "RA for unexpected interface from %s", sfrom);
 		return;
 	}
+	if (!(ifp->options->options & DHCPCD_IPV6RS)) {
+#ifdef DEBUG_RS
+		syslog(LOG_DEBUG, "%s: unexpected RA from %s",
+		    ifp->name, sfrom);
+#endif
+		return;
+	}
 	TAILQ_FOREACH(rap, &ipv6_routers, next) {
 		if (ifp == rap->iface &&
 		    memcmp(rap->from.s6_addr, from.sin6_addr.s6_addr,