Module Name: src
Committed By: ozaki-r
Date: Fri Jul 8 04:33:30 UTC 2016
Modified Files:
src/sys/net: if_stf.c
src/sys/netinet: if_arp.c igmp.c in.c in_pcb.c in_var.h ip_icmp.c
ip_output.c
src/sys/netinet6: in6_var.h mld6.c
Log Message:
Replace macros to get an IP address with proper inline functions
The inline functions are more friendly for applying psz/psref;
they consist of only simple interations.
To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/net/if_stf.c
cvs rdiff -u -r1.216 -r1.217 src/sys/netinet/if_arp.c
cvs rdiff -u -r1.60 -r1.61 src/sys/netinet/igmp.c
cvs rdiff -u -r1.172 -r1.173 src/sys/netinet/in.c
cvs rdiff -u -r1.165 -r1.166 src/sys/netinet/in_pcb.c
cvs rdiff -u -r1.77 -r1.78 src/sys/netinet/in_var.h
cvs rdiff -u -r1.149 -r1.150 src/sys/netinet/ip_icmp.c
cvs rdiff -u -r1.258 -r1.259 src/sys/netinet/ip_output.c
cvs rdiff -u -r1.82 -r1.83 src/sys/netinet6/in6_var.h
cvs rdiff -u -r1.71 -r1.72 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/net/if_stf.c
diff -u src/sys/net/if_stf.c:1.95 src/sys/net/if_stf.c:1.96
--- src/sys/net/if_stf.c:1.95 Thu Jul 7 09:32:02 2016
+++ src/sys/net/if_stf.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: if_stf.c,v 1.95 2016/07/07 09:32:02 ozaki-r Exp $ */
+/* $NetBSD: if_stf.c,v 1.96 2016/07/08 04:33:30 ozaki-r Exp $ */
/* $KAME: if_stf.c,v 1.62 2001/06/07 22:32:16 itojun Exp $ */
/*
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_stf.c,v 1.95 2016/07/07 09:32:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_stf.c,v 1.96 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -322,7 +322,7 @@ stf_getsrcifa6(struct ifnet *ifp)
continue;
memcpy(&in, GET_V4(&sin6->sin6_addr), sizeof(in));
- INADDR_TO_IA(in, ia4);
+ ia4 = in_get_ia(in);
if (ia4 == NULL)
continue;
Index: src/sys/netinet/if_arp.c
diff -u src/sys/netinet/if_arp.c:1.216 src/sys/netinet/if_arp.c:1.217
--- src/sys/netinet/if_arp.c:1.216 Wed Jul 6 06:30:08 2016
+++ src/sys/netinet/if_arp.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: if_arp.c,v 1.216 2016/07/06 06:30:08 ozaki-r Exp $ */
+/* $NetBSD: if_arp.c,v 1.217 2016/07/08 04:33:30 ozaki-r Exp $ */
/*-
* Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.216 2016/07/06 06:30:08 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.217 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_ddb.h"
@@ -555,9 +555,8 @@ arp_rtrequest(int req, struct rtentry *r
}
/* Announce a new entry if requested. */
if (rt->rt_flags & RTF_ANNOUNCE) {
- INADDR_TO_IA(satocsin(rt_getkey(rt))->sin_addr, ia);
- while (ia && ia->ia_ifp != ifp)
- NEXT_IA_WITH_SAME_ADDR(ia);
+ ia = in_get_ia_on_iface(
+ satocsin(rt_getkey(rt))->sin_addr, ifp);
if (ia == NULL ||
ia->ia4_flags & (IN_IFF_NOTREADY | IN_IFF_DETACHED))
;
@@ -603,10 +602,7 @@ arp_rtrequest(int req, struct rtentry *r
break;
}
- INADDR_TO_IA(satocsin(rt_getkey(rt))->sin_addr, ia);
- while (ia && ia->ia_ifp != ifp)
- NEXT_IA_WITH_SAME_ADDR(ia);
-
+ ia = in_get_ia_on_iface(satocsin(rt_getkey(rt))->sin_addr, ifp);
if (ia == NULL)
break;
@@ -1028,9 +1024,9 @@ in_arpinput(struct mbuf *m)
* or any address on the interface to use
* as a dummy address in the rest of this function
*/
-
- INADDR_TO_IA(itaddr, ia);
- while (ia != NULL) {
+ IN_ADDRHASH_READER_FOREACH(ia, itaddr.s_addr) {
+ if (!in_hosteq(ia->ia_addr.sin_addr, itaddr))
+ continue;
#if NCARP > 0
if (ia->ia_ifp->if_type == IFT_CARP &&
((ia->ia_ifp->if_flags & (IFF_UP|IFF_RUNNING)) ==
@@ -1057,8 +1053,6 @@ in_arpinput(struct mbuf *m)
rcvif->if_bridge == ia->ia_ifp->if_bridge)
bridge_ia = ia;
#endif /* NBRIDGE > 0 */
-
- NEXT_IA_WITH_SAME_ADDR(ia);
}
#if NBRIDGE > 0
@@ -1072,12 +1066,9 @@ in_arpinput(struct mbuf *m)
#endif
if (ia == NULL) {
- INADDR_TO_IA(isaddr, ia);
- while ((ia != NULL) && ia->ia_ifp != rcvif)
- NEXT_IA_WITH_SAME_ADDR(ia);
-
+ ia = in_get_ia_on_iface(isaddr, rcvif);
if (ia == NULL) {
- IFP_TO_IA(ifp, ia);
+ ia = in_get_ia_from_ifp(ifp);
if (ia == NULL) {
ARP_STATINC(ARP_STAT_RCVNOINT);
goto out;
Index: src/sys/netinet/igmp.c
diff -u src/sys/netinet/igmp.c:1.60 src/sys/netinet/igmp.c:1.61
--- src/sys/netinet/igmp.c:1.60 Tue Jun 28 02:02:56 2016
+++ src/sys/netinet/igmp.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: igmp.c,v 1.60 2016/06/28 02:02:56 ozaki-r Exp $ */
+/* $NetBSD: igmp.c,v 1.61 2016/07/08 04:33:30 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: igmp.c,v 1.60 2016/06/28 02:02:56 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: igmp.c,v 1.61 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_mrouting.h"
@@ -361,7 +361,7 @@ igmp_input(struct mbuf *m, ...)
* determine the arrival interface of an incoming packet.
*/
if ((ip->ip_src.s_addr & IN_CLASSA_NET) == 0) {
- IFP_TO_IA(ifp, ia); /* XXX */
+ ia = in_get_ia_from_ifp(ifp); /* XXX */
if (ia)
ip->ip_src.s_addr = ia->ia_subnet;
}
@@ -401,7 +401,7 @@ igmp_input(struct mbuf *m, ...)
* leave requires knowing that we are the only member of a
* group.
*/
- IFP_TO_IA(ifp, ia); /* XXX */
+ ia = in_get_ia_from_ifp(ifp); /* XXX */
if (ia && in_hosteq(ip->ip_src, ia->ia_addr.sin_addr))
break;
#endif
@@ -428,7 +428,7 @@ igmp_input(struct mbuf *m, ...)
*/
if ((ip->ip_src.s_addr & IN_CLASSA_NET) == 0) {
#ifndef MROUTING
- IFP_TO_IA(ifp, ia); /* XXX */
+ ia = in_get_ia_from_ifp(ifp); /* XXX */
#endif
if (ia)
ip->ip_src.s_addr = ia->ia_subnet;
Index: src/sys/netinet/in.c
diff -u src/sys/netinet/in.c:1.172 src/sys/netinet/in.c:1.173
--- src/sys/netinet/in.c:1.172 Thu Jul 7 09:32:02 2016
+++ src/sys/netinet/in.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: in.c,v 1.172 2016/07/07 09:32:02 ozaki-r Exp $ */
+/* $NetBSD: in.c,v 1.173 2016/07/08 04:33:30 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.172 2016/07/07 09:32:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.173 2016/07/08 04:33:30 ozaki-r Exp $");
#include "arp.h"
@@ -390,7 +390,7 @@ in_control(struct socket *so, u_long cmd
* Find address for this interface, if it exists.
*/
if (ifp != NULL)
- IFP_TO_IA(ifp, ia);
+ ia = in_get_ia_from_ifp(ifp);
hostIsNew = 1; /* moved here to appease gcc */
switch (cmd) {
@@ -1559,7 +1559,7 @@ in_selectsrc(struct sockaddr_in *sin, st
ifp = if_byindex(imo->imo_multicast_if_index);
if (ifp != NULL) {
- IFP_TO_IA(ifp, ia); /* XXX */
+ ia = in_get_ia_from_ifp(ifp); /* XXX */
} else
ia = NULL;
if (ia == NULL || ia->ia4_flags & IN_IFF_NOTREADY) {
Index: src/sys/netinet/in_pcb.c
diff -u src/sys/netinet/in_pcb.c:1.165 src/sys/netinet/in_pcb.c:1.166
--- src/sys/netinet/in_pcb.c:1.165 Wed Jul 6 08:42:34 2016
+++ src/sys/netinet/in_pcb.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: in_pcb.c,v 1.165 2016/07/06 08:42:34 ozaki-r Exp $ */
+/* $NetBSD: in_pcb.c,v 1.166 2016/07/08 04:33:30 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -93,7 +93,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.165 2016/07/06 08:42:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.166 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -283,7 +283,7 @@ in_pcbbind_addr(struct inpcb *inp, struc
} else if (!in_nullhost(sin->sin_addr)) {
struct in_ifaddr *ia = NULL;
- INADDR_TO_IA(sin->sin_addr, ia);
+ ia = in_get_ia(sin->sin_addr);
/* check for broadcast addresses */
if (ia == NULL)
ia = ifatoia(ifa_ifwithaddr(sintosa(sin)));
@@ -514,7 +514,7 @@ in_pcbconnect(void *v, struct sockaddr_i
xerror = EADDRNOTAVAIL;
return xerror;
}
- INADDR_TO_IA(ifaddr->sin_addr, ia);
+ ia = in_get_ia(ifaddr->sin_addr);
if (ia == NULL)
return (EADDRNOTAVAIL);
}
Index: src/sys/netinet/in_var.h
diff -u src/sys/netinet/in_var.h:1.77 src/sys/netinet/in_var.h:1.78
--- src/sys/netinet/in_var.h:1.77 Fri Jul 8 03:40:34 2016
+++ src/sys/netinet/in_var.h Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: in_var.h,v 1.77 2016/07/08 03:40:34 ozaki-r Exp $ */
+/* $NetBSD: in_var.h,v 1.78 2016/07/08 04:33:30 ozaki-r Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -222,64 +222,55 @@ extern struct pslist_head in_ifaddrhead_
extern const int inetctlerrmap[];
/*
- * Macro for finding whether an internet address (in_addr) belongs to one
+ * Find whether an internet address (in_addr) belongs to one
* of our interfaces (in_ifaddr). NULL if the address isn't ours.
*/
-#define INADDR_TO_IA(addr, ia) \
- /* struct in_addr addr; */ \
- /* struct in_ifaddr *ia; */ \
-{ \
- IN_ADDRHASH_READER_FOREACH(ia, addr.s_addr) { \
- if (in_hosteq(ia->ia_addr.sin_addr, (addr))) \
- break; \
- } \
-}
+static inline struct in_ifaddr *
+in_get_ia(struct in_addr addr)
+{
+ struct in_ifaddr *ia;
-/*
- * Macro for finding the next in_ifaddr structure with the same internet
- * address as ia. Call only with a valid ia pointer.
- * Will set ia to NULL if none found.
- */
+ IN_ADDRHASH_READER_FOREACH(ia, addr.s_addr) {
+ if (in_hosteq(ia->ia_addr.sin_addr, addr))
+ break;
+ }
-#define NEXT_IA_WITH_SAME_ADDR(ia) \
- /* struct in_ifaddr *ia; */ \
-{ \
- struct in_addr addr; \
- addr = ia->ia_addr.sin_addr; \
- do { \
- ia = IN_ADDRHASH_READER_NEXT(ia); \
- } while ((ia != NULL) && !in_hosteq(ia->ia_addr.sin_addr, addr)); \
+ return ia;
}
/*
- * Macro for finding the interface (ifnet structure) corresponding to one
- * of our IP addresses.
+ * Find whether an internet address (in_addr) belongs to a specified
+ * interface. NULL if the address isn't ours.
*/
-#define INADDR_TO_IFP(addr, ifp) \
- /* struct in_addr addr; */ \
- /* struct ifnet *ifp; */ \
-{ \
- struct in_ifaddr *ia; \
-\
- INADDR_TO_IA(addr, ia); \
- (ifp) = (ia == NULL) ? NULL : ia->ia_ifp; \
+static inline struct in_ifaddr *
+in_get_ia_on_iface(struct in_addr addr, struct ifnet *ifp)
+{
+ struct in_ifaddr *ia;
+
+ IN_ADDRHASH_READER_FOREACH(ia, addr.s_addr) {
+ if (in_hosteq(ia->ia_addr.sin_addr, addr) &&
+ ia->ia_ifp == ifp)
+ break;
+ }
+
+ return ia;
}
/*
- * Macro for finding an internet address structure (in_ifaddr) corresponding
+ * Find an internet address structure (in_ifaddr) corresponding
* to a given interface (ifnet structure).
*/
-#define IFP_TO_IA(ifp, ia) \
- /* struct ifnet *ifp; */ \
- /* struct in_ifaddr *ia; */ \
-{ \
- struct ifaddr *ifa; \
-\
- IFADDR_READER_FOREACH(ifa, ifp) { \
- if (ifa->ifa_addr->sa_family == AF_INET) \
- break; \
- } \
- (ia) = ifatoia(ifa); \
+static inline struct in_ifaddr *
+in_get_ia_from_ifp(struct ifnet *ifp)
+{
+ struct ifaddr *ifa;
+
+ IFADDR_READER_FOREACH(ifa, ifp) {
+ if (ifa->ifa_addr->sa_family == AF_INET)
+ break;
+ }
+
+ return ifatoia(ifa);
}
#include <netinet/in_selsrc.h>
Index: src/sys/netinet/ip_icmp.c
diff -u src/sys/netinet/ip_icmp.c:1.149 src/sys/netinet/ip_icmp.c:1.150
--- src/sys/netinet/ip_icmp.c:1.149 Thu Jul 7 09:32:02 2016
+++ src/sys/netinet/ip_icmp.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_icmp.c,v 1.149 2016/07/07 09:32:02 ozaki-r Exp $ */
+/* $NetBSD: ip_icmp.c,v 1.150 2016/07/08 04:33:30 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -94,7 +94,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_icmp.c,v 1.149 2016/07/07 09:32:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_icmp.c,v 1.150 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_ipsec.h"
@@ -712,7 +712,7 @@ icmp_reflect(struct mbuf *m)
*/
/* Look for packet addressed to us */
- INADDR_TO_IA(t, ia);
+ ia = in_get_ia(t);
if (ia && (ia->ia4_flags & IN_IFF_NOTREADY))
ia = NULL;
@@ -758,14 +758,9 @@ icmp_reflect(struct mbuf *m)
if (sin) {
t = sin->sin_addr;
sin = NULL;
- INADDR_TO_IA(t, ia);
- while (ia) {
- if (ia->ia_ifp == rcvif) {
- sin = &ia->ia_addr;
- break;
- }
- NEXT_IA_WITH_SAME_ADDR(ia);
- }
+ ia = in_get_ia_on_iface(t, rcvif);
+ if (ia != NULL)
+ sin = &ia->ia_addr;
}
}
Index: src/sys/netinet/ip_output.c
diff -u src/sys/netinet/ip_output.c:1.258 src/sys/netinet/ip_output.c:1.259
--- src/sys/netinet/ip_output.c:1.258 Tue Jun 21 03:28:27 2016
+++ src/sys/netinet/ip_output.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_output.c,v 1.258 2016/06/21 03:28:27 ozaki-r Exp $ */
+/* $NetBSD: ip_output.c,v 1.259 2016/07/08 04:33:30 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.258 2016/06/21 03:28:27 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.259 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -336,7 +336,7 @@ ip_output(struct mbuf *m0, struct mbuf *
goto bad;
}
mtu = ifp->if_mtu;
- IFP_TO_IA(ifp, ia);
+ ia = in_get_ia_from_ifp(ifp);
isbroadcast = 0;
} else {
if (rt == NULL)
@@ -404,7 +404,7 @@ ip_output(struct mbuf *m0, struct mbuf *
struct in_ifaddr *xia;
struct ifaddr *xifa;
- IFP_TO_IA(ifp, xia);
+ xia = in_get_ia_from_ifp(ifp);
if (!xia) {
error = EADDRNOTAVAIL;
goto bad;
@@ -583,7 +583,7 @@ sendit:
* search for the source address structure to
* maintain output statistics.
*/
- INADDR_TO_IA(ip->ip_src, ia);
+ ia = in_get_ia(ip->ip_src);
#endif
/* Maybe skip checksums on loopback interfaces. */
@@ -1734,7 +1734,7 @@ ip_getmoptions(struct ip_moptions *imo,
ifp = if_byindex(imo->imo_multicast_if_index);
if (ifp != NULL) {
- IFP_TO_IA(ifp, ia);
+ ia = in_get_ia_from_ifp(ifp);
}
addr = ia ? ia->ia_addr.sin_addr : zeroin_addr;
pserialize_read_exit(s);
Index: src/sys/netinet6/in6_var.h
diff -u src/sys/netinet6/in6_var.h:1.82 src/sys/netinet6/in6_var.h:1.83
--- src/sys/netinet6/in6_var.h:1.82 Fri Jul 8 03:40:34 2016
+++ src/sys/netinet6/in6_var.h Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_var.h,v 1.82 2016/07/08 03:40:34 ozaki-r Exp $ */
+/* $NetBSD: in6_var.h,v 1.83 2016/07/08 04:33:30 ozaki-r Exp $ */
/* $KAME: in6_var.h,v 1.81 2002/06/08 11:16:51 itojun Exp $ */
/*
@@ -562,7 +562,7 @@ extern callout_t in6_tmpaddrtimer_ch;
* to a given interface (ifnet structure).
*/
static inline struct in6_ifaddr *
-ifp_to_ia6(struct ifnet *ifp)
+in6_get_ia_from_ifp(struct ifnet *ifp)
{
struct ifaddr *ifa;
@@ -573,12 +573,6 @@ ifp_to_ia6(struct ifnet *ifp)
return (struct in6_ifaddr *)ifa;
}
-#define IFP_TO_IA6(__ifp, __ia) \
-do { \
- (__ia) = ifp_to_ia6((__ifp)); \
-} while (/*CONSTCOND*/0)
-
-
#endif /* _KERNEL */
/*
@@ -630,7 +624,7 @@ in6_lookup_multi(struct in6_addr *addr,
struct in6_multi *in6m;
struct in6_ifaddr *ia;
- if ((ia = ifp_to_ia6(ifp)) == NULL)
+ if ((ia = in6_get_ia_from_ifp(ifp)) == NULL)
return NULL;
LIST_FOREACH(in6m, &ia->ia6_multiaddrs, in6m_entry) {
if (IN6_ARE_ADDR_EQUAL(&in6m->in6m_addr, addr))
Index: src/sys/netinet6/mld6.c
diff -u src/sys/netinet6/mld6.c:1.71 src/sys/netinet6/mld6.c:1.72
--- src/sys/netinet6/mld6.c:1.71 Thu Jul 7 09:32:03 2016
+++ src/sys/netinet6/mld6.c Fri Jul 8 04:33:30 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: mld6.c,v 1.71 2016/07/07 09:32:03 ozaki-r Exp $ */
+/* $NetBSD: mld6.c,v 1.72 2016/07/08 04:33:30 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.71 2016/07/07 09:32:03 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.72 2016/07/08 04:33:30 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -428,7 +428,7 @@ mld_input(struct mbuf *m, int off)
*/
timer = ntohs(mldh->mld_maxdelay);
- IFP_TO_IA6(ifp, ia);
+ ia = in6_get_ia_from_ifp(ifp);
if (ia == NULL)
break;
@@ -664,7 +664,7 @@ in6_addmulti(struct in6_addr *maddr6, st
callout_init(&in6m->in6m_timer_ch, CALLOUT_MPSAFE);
callout_setfunc(&in6m->in6m_timer_ch, mld_timeo, in6m);
- IFP_TO_IA6(ifp, ia);
+ ia = in6_get_ia_from_ifp(ifp);
if (ia == NULL) {
callout_destroy(&in6m->in6m_timer_ch);
free(in6m, M_IPMADDR);
@@ -813,7 +813,7 @@ in6_savemkludge(struct in6_ifaddr *oia)
struct in6_ifaddr *ia;
struct in6_multi *in6m;
- IFP_TO_IA6(oia->ia_ifp, ia);
+ ia = in6_get_ia_from_ifp(oia->ia_ifp);
if (ia) { /* there is another address */
KASSERT(ia != oia);
while ((in6m = LIST_FIRST(&oia->ia6_multiaddrs)) != NULL) {