Module Name: src
Committed By: ozaki-r
Date: Wed Mar 1 08:54:12 UTC 2017
Modified Files:
src/sys/netinet6: in6_var.h ip6_input.c ip6_mroute.c ip6_output.c
mld6.c
Log Message:
Provide in6_multi_group
Use it when checking if we belong to the group, instead of in6_lookup_multi.
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/sys/netinet6/in6_var.h
cvs rdiff -u -r1.175 -r1.176 src/sys/netinet6/ip6_input.c
cvs rdiff -u -r1.118 -r1.119 src/sys/netinet6/ip6_mroute.c
cvs rdiff -u -r1.186 -r1.187 src/sys/netinet6/ip6_output.c
cvs rdiff -u -r1.83 -r1.84 src/sys/netinet6/mld6.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/in6_var.h
diff -u src/sys/netinet6/in6_var.h:1.93 src/sys/netinet6/in6_var.h:1.94
--- src/sys/netinet6/in6_var.h:1.93 Thu Feb 23 07:57:10 2017
+++ src/sys/netinet6/in6_var.h Wed Mar 1 08:54:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_var.h,v 1.93 2017/02/23 07:57:10 ozaki-r Exp $ */
+/* $NetBSD: in6_var.h,v 1.94 2017/03/01 08:54:12 ozaki-r Exp $ */
/* $KAME: in6_var.h,v 1.81 2002/06/08 11:16:51 itojun Exp $ */
/*
@@ -683,6 +683,7 @@ void in6_init(void);
struct in6_multi *
in6_lookup_multi(const struct in6_addr *, const struct ifnet *);
+bool in6_multi_group(const struct in6_addr *, const struct ifnet *);
void in6_purge_multi(struct ifnet *);
struct in6_multi *in6_addmulti(struct in6_addr *, struct ifnet *,
int *, int);
Index: src/sys/netinet6/ip6_input.c
diff -u src/sys/netinet6/ip6_input.c:1.175 src/sys/netinet6/ip6_input.c:1.176
--- src/sys/netinet6/ip6_input.c:1.175 Wed Feb 22 07:46:00 2017
+++ src/sys/netinet6/ip6_input.c Wed Mar 1 08:54:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_input.c,v 1.175 2017/02/22 07:46:00 ozaki-r Exp $ */
+/* $NetBSD: ip6_input.c,v 1.176 2017/03/01 08:54:12 ozaki-r Exp $ */
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.175 2017/02/22 07:46:00 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.176 2017/03/01 08:54:12 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_gateway.h"
@@ -458,15 +458,15 @@ ip6_input(struct mbuf *m, struct ifnet *
* Multicast check
*/
if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
- struct in6_multi *in6m = 0;
+ bool ingroup;
in6_ifstat_inc(rcvif, ifs6_in_mcast);
/*
* See if we belong to the destination multicast group on the
* arrival interface.
*/
- in6m = in6_lookup_multi(&ip6->ip6_dst, rcvif);
- if (in6m)
+ ingroup = in6_multi_group(&ip6->ip6_dst, rcvif);
+ if (ingroup)
ours = 1;
else if (!ip6_mrouter) {
uint64_t *ip6s = IP6_STAT_GETREF();
Index: src/sys/netinet6/ip6_mroute.c
diff -u src/sys/netinet6/ip6_mroute.c:1.118 src/sys/netinet6/ip6_mroute.c:1.119
--- src/sys/netinet6/ip6_mroute.c:1.118 Wed Feb 22 07:46:00 2017
+++ src/sys/netinet6/ip6_mroute.c Wed Mar 1 08:54:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_mroute.c,v 1.118 2017/02/22 07:46:00 ozaki-r Exp $ */
+/* $NetBSD: ip6_mroute.c,v 1.119 2017/03/01 08:54:12 ozaki-r Exp $ */
/* $KAME: ip6_mroute.c,v 1.49 2001/07/25 09:21:18 jinmei Exp $ */
/*
@@ -117,7 +117,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_mroute.c,v 1.118 2017/02/22 07:46:00 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_mroute.c,v 1.119 2017/03/01 08:54:12 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -1551,7 +1551,7 @@ phyint_send(struct ip6_hdr *ip6, struct
int error __mrt6debugused = 0;
int s;
static struct route ro;
- struct in6_multi *in6m;
+ bool ingroup;
struct sockaddr_in6 dst6;
u_long linkmtu;
@@ -1608,8 +1608,8 @@ phyint_send(struct ip6_hdr *ip6, struct
*/
sockaddr_in6_init(&dst6, &ip6->ip6_dst, 0, 0, 0);
- in6m = in6_lookup_multi(&ip6->ip6_dst, ifp);
- if (in6m != NULL) {
+ ingroup = in6_multi_group(&ip6->ip6_dst, ifp);
+ if (ingroup) {
ip6_mloopback(ifp, m,
satocsin6(rtcache_getdst(&ro)));
}
Index: src/sys/netinet6/ip6_output.c
diff -u src/sys/netinet6/ip6_output.c:1.186 src/sys/netinet6/ip6_output.c:1.187
--- src/sys/netinet6/ip6_output.c:1.186 Wed Feb 22 07:46:00 2017
+++ src/sys/netinet6/ip6_output.c Wed Mar 1 08:54:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_output.c,v 1.186 2017/02/22 07:46:00 ozaki-r Exp $ */
+/* $NetBSD: ip6_output.c,v 1.187 2017/03/01 08:54:12 ozaki-r Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.186 2017/02/22 07:46:00 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.187 2017/03/01 08:54:12 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -636,7 +636,7 @@ ip6_output(
if (!IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst))
m->m_flags &= ~(M_BCAST | M_MCAST); /* just in case */
else {
- struct in6_multi *in6m;
+ bool ingroup;
m->m_flags = (m->m_flags & ~M_BCAST) | M_MCAST;
@@ -652,9 +652,8 @@ ip6_output(
goto bad;
}
- in6m = in6_lookup_multi(&ip6->ip6_dst, ifp);
- if (in6m != NULL &&
- (im6o == NULL || im6o->im6o_multicast_loop)) {
+ ingroup = in6_multi_group(&ip6->ip6_dst, ifp);
+ if (ingroup && (im6o == NULL || im6o->im6o_multicast_loop)) {
/*
* If we belong to the destination multicast group
* on the outgoing interface, and the caller did not
Index: src/sys/netinet6/mld6.c
diff -u src/sys/netinet6/mld6.c:1.83 src/sys/netinet6/mld6.c:1.84
--- src/sys/netinet6/mld6.c:1.83 Thu Feb 23 07:57:10 2017
+++ src/sys/netinet6/mld6.c Wed Mar 1 08:54:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mld6.c,v 1.83 2017/02/23 07:57:10 ozaki-r Exp $ */
+/* $NetBSD: mld6.c,v 1.84 2017/03/01 08:54:12 ozaki-r Exp $ */
/* $KAME: mld6.c,v 1.25 2001/01/16 14:14:18 itojun Exp $ */
/*
@@ -102,7 +102,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.83 2017/02/23 07:57:10 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.84 2017/03/01 08:54:12 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -780,6 +780,16 @@ in6_lookup_multi(const struct in6_addr *
return in6m;
}
+bool
+in6_multi_group(const struct in6_addr *addr, const struct ifnet *ifp)
+{
+ bool ingroup;
+
+ ingroup = in6_lookup_multi(addr, ifp) != NULL;
+
+ return ingroup;
+}
+
/*
* Purge in6_multi records associated to the interface.
*/