Module Name:    src
Committed By:   dyoung
Date:           Wed Oct 19 01:53:08 UTC 2011

Modified Files:
        src/sys/netinet6: in6.c ip6_mroute.c mld6.c

Log Message:
Use if_addr_init() and if_mcast_op() instead of ifp->if_ioctl().


To generate a diff of this commit:
cvs rdiff -u -r1.157 -r1.158 src/sys/netinet6/in6.c
cvs rdiff -u -r1.101 -r1.102 src/sys/netinet6/ip6_mroute.c
cvs rdiff -u -r1.53 -r1.54 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.c
diff -u src/sys/netinet6/in6.c:1.157 src/sys/netinet6/in6.c:1.158
--- src/sys/netinet6/in6.c:1.157	Sun Feb  6 19:12:55 2011
+++ src/sys/netinet6/in6.c	Wed Oct 19 01:53:07 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6.c,v 1.157 2011/02/06 19:12:55 dyoung Exp $	*/
+/*	$NetBSD: in6.c,v 1.158 2011/10/19 01:53:07 dyoung Exp $	*/
 /*	$KAME: in6.c,v 1.198 2001/07/18 09:12:38 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.157 2011/02/06 19:12:55 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.158 2011/10/19 01:53:07 dyoung Exp $");
 
 #include "opt_inet.h"
 #include "opt_pfil_hooks.h"
@@ -1753,8 +1753,8 @@ in6_ifinit(struct ifnet *ifp, struct in6
 
 	ia->ia_addr = *sin6;
 
-	if (ifacount <= 1 && 
-	    (error = (*ifp->if_ioctl)(ifp, SIOCINITIFADDR, ia)) != 0) {
+	if (ifacount <= 1 &&
+	    (error = if_addr_init(ifp, &ia->ia_ifa, true)) != 0) {
 		splx(s);
 		return error;
 	}

Index: src/sys/netinet6/ip6_mroute.c
diff -u src/sys/netinet6/ip6_mroute.c:1.101 src/sys/netinet6/ip6_mroute.c:1.102
--- src/sys/netinet6/ip6_mroute.c:1.101	Wed Aug 31 18:31:03 2011
+++ src/sys/netinet6/ip6_mroute.c	Wed Oct 19 01:53:07 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip6_mroute.c,v 1.101 2011/08/31 18:31:03 plunky Exp $	*/
+/*	$NetBSD: ip6_mroute.c,v 1.102 2011/10/19 01:53:07 dyoung 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.101 2011/08/31 18:31:03 plunky Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_mroute.c,v 1.102 2011/10/19 01:53:07 dyoung Exp $");
 
 #include "opt_inet.h"
 #include "opt_mrouting.h"
@@ -512,7 +512,7 @@ ip6_mrouter_done(void)
 	mifi_t mifi;
 	int i;
 	struct ifnet *ifp;
-	struct in6_ifreq ifr;
+	struct sockaddr_in6 sin6;
 	struct mf6c *rt;
 	struct rtdetq *rte;
 	int s;
@@ -538,10 +538,11 @@ ip6_mrouter_done(void)
 		for (mifi = 0; mifi < nummifs; mifi++) {
 			if (mif6table[mifi].m6_ifp &&
 			    !(mif6table[mifi].m6_flags & MIFF_REGISTER)) {
-				ifr.ifr_addr.sin6_family = AF_INET6;
-				ifr.ifr_addr.sin6_addr= in6addr_any;
+				sin6.sin6_family = AF_INET6;
+				sin6.sin6_addr = in6addr_any;
 				ifp = mif6table[mifi].m6_ifp;
-				(*ifp->if_ioctl)(ifp, SIOCDELMULTI, &ifr);
+				if_mcast_op(ifp, SIOCDELMULTI,
+				    sin6tocsa(&sin6));
 			}
 		}
 	}
@@ -643,7 +644,7 @@ add_m6if(struct mif6ctl *mifcp)
 {
 	struct mif6 *mifp;
 	struct ifnet *ifp;
-	struct in6_ifreq ifr;
+	struct sockaddr_in6 sin6;
 	int error, s;
 #ifdef notyet
 	struct tbf *m_tbf = tbftable + mifcp->mif6c_mifi;
@@ -686,9 +687,9 @@ add_m6if(struct mif6ctl *mifcp)
 		 * Enable promiscuous reception of all IPv6 multicasts
 		 * from the interface.
 		 */
-		ifr.ifr_addr.sin6_family = AF_INET6;
-		ifr.ifr_addr.sin6_addr = in6addr_any;
-		error = (*ifp->if_ioctl)(ifp, SIOCADDMULTI, &ifr);
+		sin6.sin6_family = AF_INET6;
+		sin6.sin6_addr = in6addr_any;
+		error = if_mcast_op(ifp, SIOCADDMULTI, sin6tosa(&sin6));
 		splx(s);
 		if (error)
 			return error;
@@ -731,7 +732,7 @@ del_m6if(mifi_t *mifip)
 	struct mif6 *mifp = mif6table + *mifip;
 	mifi_t mifi;
 	struct ifnet *ifp;
-	struct in6_ifreq ifr;
+	struct sockaddr_in6 sin6;
 	int s;
 
 	if (*mifip >= nummifs)
@@ -748,9 +749,9 @@ del_m6if(mifi_t *mifip)
 		 */
 		ifp = mifp->m6_ifp;
 
-		ifr.ifr_addr.sin6_family = AF_INET6;
-		ifr.ifr_addr.sin6_addr = in6addr_any;
-		(*ifp->if_ioctl)(ifp, SIOCDELMULTI, &ifr);
+		sin6.sin6_family = AF_INET6;
+		sin6.sin6_addr = in6addr_any;
+		if_mcast_op(ifp, SIOCDELMULTI, sin6tosa(&sin6));
 	} else {
 		if (reg_mif_num != (mifi_t)-1) {
 			if_detach(&multicast_register_if6);

Index: src/sys/netinet6/mld6.c
diff -u src/sys/netinet6/mld6.c:1.53 src/sys/netinet6/mld6.c:1.54
--- src/sys/netinet6/mld6.c:1.53	Wed Aug 31 18:31:03 2011
+++ src/sys/netinet6/mld6.c	Wed Oct 19 01:53:07 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mld6.c,v 1.53 2011/08/31 18:31:03 plunky Exp $	*/
+/*	$NetBSD: mld6.c,v 1.54 2011/10/19 01:53:07 dyoung 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.53 2011/08/31 18:31:03 plunky Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.54 2011/10/19 01:53:07 dyoung Exp $");
 
 #include "opt_inet.h"
 
@@ -616,7 +616,7 @@ in6_addmulti(struct in6_addr *maddr6, st
 	int *errorp, int timer)
 {
 	struct	in6_ifaddr *ia;
-	struct	in6_ifreq ifr;
+	struct	sockaddr_in6 sin6;
 	struct	in6_multi *in6m;
 	int	s = splsoftnet();
 
@@ -663,8 +663,8 @@ in6_addmulti(struct in6_addr *maddr6, st
 		 * Ask the network driver to update its multicast reception
 		 * filter appropriately for the new address.
 		 */
-		sockaddr_in6_init(&ifr.ifr_addr, maddr6, 0, 0, 0);
-		*errorp = (*ifp->if_ioctl)(ifp, SIOCADDMULTI, &ifr);
+		sockaddr_in6_init(&sin6, maddr6, 0, 0, 0);
+		*errorp = if_mcast_op(ifp, SIOCADDMULTI, sin6tosa(&sin6));
 		if (*errorp) {
 			LIST_REMOVE(in6m, in6m_entry);
 			free(in6m, M_IPMADDR);
@@ -700,7 +700,7 @@ in6_addmulti(struct in6_addr *maddr6, st
 void
 in6_delmulti(struct in6_multi *in6m)
 {
-	struct	in6_ifreq ifr;
+	struct	sockaddr_in6 sin6;
 	struct	in6_ifaddr *ia;
 	int	s = splsoftnet();
 
@@ -738,8 +738,8 @@ in6_delmulti(struct in6_multi *in6m)
 		 * Notify the network driver to update its multicast
 		 * reception filter.
 		 */
-		sockaddr_in6_init(&ifr.ifr_addr, &in6m->in6m_addr, 0, 0, 0);
-		(*in6m->in6m_ifp->if_ioctl)(in6m->in6m_ifp, SIOCDELMULTI, &ifr);
+		sockaddr_in6_init(&sin6, &in6m->in6m_addr, 0, 0, 0);
+		if_mcast_op(in6m->in6m_ifp, SIOCDELMULTI, sin6tosa(&sin6));
 		callout_destroy(&in6m->in6m_timer_ch);
 		free(in6m, M_IPMADDR);
 	}

Reply via email to