Module Name: src
Committed By: roy
Date: Sat Oct 5 09:10:53 UTC 2024
Modified Files:
src/sys/netinet6: nd6_nbr.c
Log Message:
ND6: only ignore messages from the receving interface
Sync with ARP behaviour, reverts r1.163 slightly.
To generate a diff of this commit:
cvs rdiff -u -r1.183 -r1.184 src/sys/netinet6/nd6_nbr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/netinet6/nd6_nbr.c
diff -u src/sys/netinet6/nd6_nbr.c:1.183 src/sys/netinet6/nd6_nbr.c:1.184
--- src/sys/netinet6/nd6_nbr.c:1.183 Wed Mar 29 13:01:44 2023
+++ src/sys/netinet6/nd6_nbr.c Sat Oct 5 09:10:53 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6_nbr.c,v 1.183 2023/03/29 13:01:44 kardel Exp $ */
+/* $NetBSD: nd6_nbr.c,v 1.184 2024/10/05 09:10:53 roy Exp $ */
/* $KAME: nd6_nbr.c,v 1.61 2001/02/10 16:06:14 jinmei Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.183 2023/03/29 13:01:44 kardel Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.184 2024/10/05 09:10:53 roy Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -677,23 +677,21 @@ nd6_na_input(struct mbuf *m, int off, in
}
if (ndopts.nd_opts_tgt_lladdr != NULL) {
- struct ifnet *ifp_ll;
- struct psref psref_ll;
-
lladdr = (char *)(ndopts.nd_opts_tgt_lladdr + 1);
lladdrlen = ndopts.nd_opts_tgt_lladdr->nd_opt_len << 3;
+ }
- if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
+ if (lladdr != NULL) {
+ if (((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
- "(if %d, NA packet %d)\n", IN6_PRINT(ip6buf, &taddr6),
+ "(if %d, NA packet %d)\n",
+ IN6_PRINT(ip6buf, &taddr6),
ifp->if_addrlen, lladdrlen - 2);
goto bad;
}
- ifp_ll = if_get_bylla(lladdr, ifp->if_addrlen, &psref_ll);
- if (ifp_ll != NULL) {
+ if (!memcmp(lladdr, CLLADDR(ifp->if_sadl), ifp->if_addrlen)) {
/* it's from me, ignore it. */
- if_put(ifp_ll, &psref_ll);
goto freeit;
}
}