Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Jul 2010 21:25:47 -0400
From:      jhell <jhell@dataix.net>
To:        Earl Lapus <earl.lapus@gmail.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: patch review for kern/146534
Message-ID:  <4C32861B.4060203@dataix.net>
In-Reply-To: <AANLkTiku9mnq5lTxxLk8-WDR14s5AFPInZbZmapwHU4L@mail.gmail.com>
References:  <AANLkTinjn3k5bQ00rxeZb2EVqTsu4XL3_Qz_tA3-RE3p@mail.gmail.com> <AANLkTiku9mnq5lTxxLk8-WDR14s5AFPInZbZmapwHU4L@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/04/2010 04:00, Earl Lapus wrote:
> Hi,
> 
> I just want to follow-up on this PR. Basically a working icmp6
> functionality that exists in 7.x and below broke in 8.x and CURRENT. I
> believe it's too late to have it fixed in 8.1. Maybe someone on the
> list that really knows the icmp6 code can have a look and verify if it
> is indeed a bug. If it is, hopefully it can be fixed on the next
> releases.
> 
> Cheers!
> Earl
> 
> 

I have reviewed this, edited the patch and determined this does fix the
problem.  The patch is attached and is also here: http://bit.ly/clqhxt


Regards,

- -- 

 +-+-+-+-+-+
 |j|h|e|l|l|
 +-+-+-+-+-+
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.15 (FreeBSD)

iQEcBAEBAgAGBQJMMoYaAAoJEJBXh4mJ2FR+dN0H/jGb6K6NiWJuRDjfg+hUBebm
AXfUvhrIyD0SKriaCVM9+ZymkfrgDBzRGWKZ61I7K3ZH/shhbII0NoS+VxFa9sqN
ZuWu/2zDbuyY36+OjRWMreNuXns3/LEm6VxHlo8JbGBAtk0d1BPM3MqrV5JPP0W1
pqy0db3NOqqNMADsK7GYdAfI65cgx+05XuhmKZ86fCsfnd7EkPcFVIGZrJxoT8HB
P7VhtfsxsEwakTMhbcgXltQggWKhGtMKzjscAe5n6ncd5Aq22JjKdPZHTcin8mLi
htqynqfmTcs88D0nG0/m6344HXPFOe16vCRJmJGBvR0wBbICEycBZZtsqgmbqiU=
=huMJ
-----END PGP SIGNATURE-----

[-- Attachment #2 --]
Index: sys/netinet6/icmp6.c
===================================================================
--- sys/netinet6/icmp6.c	(revision 209700)
+++ sys/netinet6/icmp6.c	(working copy)
@@ -2162,8 +2162,21 @@
 	}
 
 	if ((srcp != NULL) && 
-	    (in6_addrscope(srcp) != in6_addrscope(&ip6->ip6_src)))
-		srcp = NULL;
+		(in6_addrscope(srcp) != in6_addrscope(&ip6->ip6_src))) {
+			struct sockaddr_in6 sin6;
+ 
+		bzero(&sin6, sizeof(sin6));
+		sin6.sin6_family = AF_INET6;
+		sin6.sin6_len = sizeof(sin6);
+		sin6.sin6_addr = origdst;
+
+		ia = (struct in6_ifaddr *)
+			ifa_ifwithaddr((struct sockaddr *)&sin6);
+
+		if (ia && (ia->ia6_flags & IN6_IFF_ANYCAST))
+			srcp = NULL;
+	}
+
 
 	if (srcp == NULL) {
 		int e;

[-- Attachment #3 --]
L2
	WT~eNWswA648F-5-wxɓP-A`06B2ֵsVb[eG[DC/y3}}×ςSJjygܐ)S
/`<kPJVsR-j-r5=:ҎgٖFC73@''b"oxmL"z!CRں,Tؐu&AcG#Mb{Z[}lזvhO(y"

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C32861B.4060203>