Module Name: src
Committed By: rmind
Date: Tue Sep 9 20:16:12 UTC 2014
Modified Files:
src/sys/net: if.c if.h route.c
src/sys/netatalk: at_control.c
src/sys/netinet: in.c
src/sys/netinet6: in6.c in6_ifattach.c mld6.c nd6_nbr.c
Log Message:
Eliminate IFAREF() and IFAFREE() macros in favour of functions.
To generate a diff of this commit:
cvs rdiff -u -r1.290 -r1.291 src/sys/net/if.c
cvs rdiff -u -r1.174 -r1.175 src/sys/net/if.h
cvs rdiff -u -r1.132 -r1.133 src/sys/net/route.c
cvs rdiff -u -r1.35 -r1.36 src/sys/netatalk/at_control.c
cvs rdiff -u -r1.147 -r1.148 src/sys/netinet/in.c
cvs rdiff -u -r1.175 -r1.176 src/sys/netinet6/in6.c
cvs rdiff -u -r1.92 -r1.93 src/sys/netinet6/in6_ifattach.c
cvs rdiff -u -r1.59 -r1.60 src/sys/netinet6/mld6.c
cvs rdiff -u -r1.100 -r1.101 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/net/if.c
diff -u src/sys/net/if.c:1.290 src/sys/net/if.c:1.291
--- src/sys/net/if.c:1.290 Sat Aug 9 05:33:01 2014
+++ src/sys/net/if.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: if.c,v 1.290 2014/08/09 05:33:01 rtr Exp $ */
+/* $NetBSD: if.c,v 1.291 2014/09/09 20:16:12 rmind Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.290 2014/08/09 05:33:01 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.291 2014/09/09 20:16:12 rmind Exp $");
#include "opt_inet.h"
@@ -362,7 +362,7 @@ if_set_sadl(struct ifnet *ifp, const voi
(void)sockaddr_dl_setaddr(sdl, sdl->sdl_len, lla, ifp->if_addrlen);
if (factory) {
ifp->if_hwdl = ifp->if_dl;
- IFAREF(ifp->if_hwdl);
+ ifaref(ifp->if_hwdl);
}
/* TBD routing socket */
}
@@ -402,9 +402,9 @@ if_sadl_setrefs(struct ifnet *ifp, struc
{
const struct sockaddr_dl *sdl;
ifnet_addrs[ifp->if_index] = ifa;
- IFAREF(ifa);
+ ifaref(ifa);
ifp->if_dl = ifa;
- IFAREF(ifa);
+ ifaref(ifa);
sdl = satosdl(ifa->ifa_addr);
ifp->if_sadl = sdl;
}
@@ -447,9 +447,9 @@ if_deactivate_sadl(struct ifnet *ifp)
ifp->if_sadl = NULL;
ifnet_addrs[ifp->if_index] = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
ifp->if_dl = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
}
void
@@ -494,7 +494,7 @@ if_free_sadl(struct ifnet *ifp)
ifa_remove(ifp, ifa);
if_deactivate_sadl(ifp);
if (ifp->if_hwdl == ifa) {
- IFAFREE(ifa);
+ ifafree(ifa);
ifp->if_hwdl = NULL;
}
splx(s);
@@ -1101,11 +1101,28 @@ if_clone_list(struct if_clonereq *ifcr)
}
void
+ifaref(struct ifaddr *ifa)
+{
+ ifa->ifa_refcnt++;
+}
+
+void
+ifafree(struct ifaddr *ifa)
+{
+ KASSERT(ifa != NULL);
+ KASSERT(ifa->ifa_refcnt > 0);
+
+ if (--ifa->ifa_refcnt == 0) {
+ free(ifa, M_IFADDR);
+ }
+}
+
+void
ifa_insert(struct ifnet *ifp, struct ifaddr *ifa)
{
ifa->ifa_ifp = ifp;
TAILQ_INSERT_TAIL(&ifp->if_addrlist, ifa, ifa_list);
- IFAREF(ifa);
+ ifaref(ifa);
}
void
@@ -1113,7 +1130,7 @@ ifa_remove(struct ifnet *ifp, struct ifa
{
KASSERT(ifa->ifa_ifp == ifp);
TAILQ_REMOVE(&ifp->if_addrlist, ifa, ifa_list);
- IFAFREE(ifa);
+ ifafree(ifa);
}
static inline int
Index: src/sys/net/if.h
diff -u src/sys/net/if.h:1.174 src/sys/net/if.h:1.175
--- src/sys/net/if.h:1.174 Thu Jul 31 06:35:47 2014
+++ src/sys/net/if.h Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: if.h,v 1.174 2014/07/31 06:35:47 ozaki-r Exp $ */
+/* $NetBSD: if.h,v 1.175 2014/09/09 20:16:12 rmind Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -718,44 +718,6 @@ struct if_addrprefreq {
#endif /* _NETBSD_SOURCE */
#ifdef _KERNEL
-#ifdef IFAREF_DEBUG
-#define IFAREF(ifa) \
-do { \
- printf("IFAREF: %s:%d %p -> %d\n", __FILE__, __LINE__, \
- (ifa), ++(ifa)->ifa_refcnt); \
-} while (/*CONSTCOND*/ 0)
-
-#define IFAFREE(ifa) \
-do { \
- if ((ifa)->ifa_refcnt <= 0) \
- panic("%s:%d: %p ifa_refcnt <= 0", __FILE__, \
- __LINE__, (ifa)); \
- printf("IFAFREE: %s:%d %p -> %d\n", __FILE__, __LINE__, \
- (ifa), --(ifa)->ifa_refcnt); \
- if ((ifa)->ifa_refcnt == 0) \
- ifafree(ifa); \
-} while (/*CONSTCOND*/ 0)
-#else
-#define IFAREF(ifa) (ifa)->ifa_refcnt++
-
-#ifdef DIAGNOSTIC
-#define IFAFREE(ifa) \
-do { \
- if ((ifa)->ifa_refcnt <= 0) \
- panic("%s:%d: %p ifa_refcnt <= 0", __FILE__, \
- __LINE__, (ifa)); \
- if (--(ifa)->ifa_refcnt == 0) \
- ifafree(ifa); \
-} while (/*CONSTCOND*/ 0)
-#else
-#define IFAFREE(ifa) \
-do { \
- if (--(ifa)->ifa_refcnt == 0) \
- ifafree(ifa); \
-} while (/*CONSTCOND*/ 0)
-#endif /* DIAGNOSTIC */
-#endif /* IFAREF_DEBUG */
-
#ifdef ALTQ
#define ALTQ_DECL(x) x
#define ALTQ_COMMA ,
@@ -922,6 +884,9 @@ int if_flags_set(struct ifnet *, const s
void ifa_insert(struct ifnet *, struct ifaddr *);
void ifa_remove(struct ifnet *, struct ifaddr *);
+void ifaref(struct ifaddr *);
+void ifafree(struct ifaddr *);
+
struct ifaddr *ifa_ifwithaddr(const struct sockaddr *);
struct ifaddr *ifa_ifwithaf(int);
struct ifaddr *ifa_ifwithdstaddr(const struct sockaddr *);
Index: src/sys/net/route.c
diff -u src/sys/net/route.c:1.132 src/sys/net/route.c:1.133
--- src/sys/net/route.c:1.132 Fri Jun 6 01:27:32 2014
+++ src/sys/net/route.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: route.c,v 1.132 2014/06/06 01:27:32 rmind Exp $ */
+/* $NetBSD: route.c,v 1.133 2014/09/09 20:16:12 rmind Exp $ */
/*-
* Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -93,7 +93,7 @@
#include "opt_route.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.132 2014/06/06 01:27:32 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.133 2014/09/09 20:16:12 rmind Exp $");
#include <sys/param.h>
#include <sys/kmem.h>
@@ -236,15 +236,15 @@ rt_replace_ifa(struct rtentry *rt, struc
}
}
- IFAREF(ifa);
- IFAFREE(rt->rt_ifa);
+ ifaref(ifa);
+ ifafree(rt->rt_ifa);
rt_set_ifa1(rt, ifa);
}
static void
rt_set_ifa(struct rtentry *rt, struct ifaddr *ifa)
{
- IFAREF(ifa);
+ ifaref(ifa);
rt_set_ifa1(rt, ifa);
}
@@ -386,29 +386,13 @@ rtfree(struct rtentry *rt)
rt_timer_remove_all(rt, 0);
ifa = rt->rt_ifa;
rt->rt_ifa = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
rt->rt_ifp = NULL;
rt_destroy(rt);
pool_put(&rtentry_pool, rt);
}
}
-void
-ifafree(struct ifaddr *ifa)
-{
-
-#ifdef DIAGNOSTIC
- if (ifa == NULL)
- panic("ifafree: null ifa");
- if (ifa->ifa_refcnt != 0)
- panic("ifafree: ifa_refcnt != 0 (%d)", ifa->ifa_refcnt);
-#endif
-#ifdef IFAREF_DEBUG
- printf("ifafree: freeing ifaddr %p\n", ifa);
-#endif
- free(ifa, M_IFADDR);
-}
-
/*
* Force a routing table entry to the specified
* destination to go through the given gateway.
@@ -797,7 +781,7 @@ rtrequest1(int req, struct rt_addrinfo *
}
RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
if (rc != 0) {
- IFAFREE(ifa);
+ ifafree(ifa);
if ((rt->rt_flags & RTF_CLONED) != 0 && rt->rt_parent)
rtfree(rt->rt_parent);
if (rt->rt_gwroute)
Index: src/sys/netatalk/at_control.c
diff -u src/sys/netatalk/at_control.c:1.35 src/sys/netatalk/at_control.c:1.36
--- src/sys/netatalk/at_control.c:1.35 Tue Jul 1 05:49:18 2014
+++ src/sys/netatalk/at_control.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: at_control.c,v 1.35 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: at_control.c,v 1.36 2014/09/09 20:16:12 rmind Exp $ */
/*
* Copyright (c) 1990,1994 Regents of The University of Michigan.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at_control.c,v 1.35 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at_control.c,v 1.36 2014/09/09 20:16:12 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -193,7 +193,7 @@ at_control(u_long cmd, void *data, struc
} else {
TAILQ_INSERT_TAIL(&at_ifaddr, aa, aa_list);
}
- IFAREF(&aa->aa_ifa);
+ ifaref(&aa->aa_ifa);
/*
* Find the end of the interface's addresses
@@ -336,7 +336,7 @@ at_purgeaddr(struct ifaddr *ifa)
*/
ifa_remove(ifp, &aa->aa_ifa);
TAILQ_REMOVE(&at_ifaddr, aa, aa_list);
- IFAFREE(&aa->aa_ifa);
+ ifafree(&aa->aa_ifa);
}
void
Index: src/sys/netinet/in.c
diff -u src/sys/netinet/in.c:1.147 src/sys/netinet/in.c:1.148
--- src/sys/netinet/in.c:1.147 Tue Jul 1 05:49:18 2014
+++ src/sys/netinet/in.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: in.c,v 1.147 2014/07/01 05:49:18 rtr Exp $ */
+/* $NetBSD: in.c,v 1.148 2014/09/09 20:16:12 rmind 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.147 2014/07/01 05:49:18 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.148 2014/09/09 20:16:12 rmind Exp $");
#include "opt_inet.h"
#include "opt_inet_conf.h"
@@ -416,7 +416,7 @@ in_control(struct socket *so, u_long cmd
if (ia == NULL)
return (ENOBUFS);
TAILQ_INSERT_TAIL(&in_ifaddrhead, ia, ia_list);
- IFAREF(&ia->ia_ifa);
+ ifaref(&ia->ia_ifa);
ifa_insert(ifp, &ia->ia_ifa);
ia->ia_ifa.ifa_addr = sintosa(&ia->ia_addr);
ia->ia_ifa.ifa_dstaddr = sintosa(&ia->ia_dstaddr);
@@ -606,7 +606,7 @@ in_purgeaddr(struct ifaddr *ifa)
TAILQ_REMOVE(&in_ifaddrhead, ia, ia_list);
if (ia->ia_allhosts != NULL)
in_delmulti(ia->ia_allhosts);
- IFAFREE(&ia->ia_ifa);
+ ifafree(&ia->ia_ifa);
in_setmaxmtu();
}
Index: src/sys/netinet6/in6.c
diff -u src/sys/netinet6/in6.c:1.175 src/sys/netinet6/in6.c:1.176
--- src/sys/netinet6/in6.c:1.175 Fri Sep 5 06:08:15 2014
+++ src/sys/netinet6/in6.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: in6.c,v 1.175 2014/09/05 06:08:15 matt Exp $ */
+/* $NetBSD: in6.c,v 1.176 2014/09/09 20:16:12 rmind 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.175 2014/09/05 06:08:15 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.176 2014/09/09 20:16:12 rmind Exp $");
#include "opt_inet.h"
#include "opt_compat_netbsd.h"
@@ -999,7 +999,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
} else
in6_ifaddr = ia;
/* gain a refcnt for the link from in6_ifaddr */
- IFAREF(&ia->ia_ifa);
+ ifaref(&ia->ia_ifa);
ifa_insert(ifp, &ia->ia_ifa);
}
@@ -1469,7 +1469,7 @@ in6_unlink_ifa(struct in6_ifaddr *ia, st
* release another refcnt for the link from in6_ifaddr.
* Note that we should decrement the refcnt at least once for all *BSD.
*/
- IFAFREE(&oia->ia_ifa);
+ ifafree(&oia->ia_ifa);
splx(s);
}
Index: src/sys/netinet6/in6_ifattach.c
diff -u src/sys/netinet6/in6_ifattach.c:1.92 src/sys/netinet6/in6_ifattach.c:1.93
--- src/sys/netinet6/in6_ifattach.c:1.92 Fri Sep 5 06:08:15 2014
+++ src/sys/netinet6/in6_ifattach.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_ifattach.c,v 1.92 2014/09/05 06:08:15 matt Exp $ */
+/* $NetBSD: in6_ifattach.c,v 1.93 2014/09/09 20:16:12 rmind Exp $ */
/* $KAME: in6_ifattach.c,v 1.124 2001/07/18 08:32:51 jinmei Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_ifattach.c,v 1.92 2014/09/05 06:08:15 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_ifattach.c,v 1.93 2014/09/09 20:16:12 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -906,7 +906,7 @@ in6_ifdetach(struct ifnet *ifp)
}
}
- IFAFREE(&oia->ia_ifa);
+ ifafree(&oia->ia_ifa);
}
/* cleanup multicast address kludge table, if there is any */
Index: src/sys/netinet6/mld6.c
diff -u src/sys/netinet6/mld6.c:1.59 src/sys/netinet6/mld6.c:1.60
--- src/sys/netinet6/mld6.c:1.59 Sat Jul 26 22:21:16 2014
+++ src/sys/netinet6/mld6.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: mld6.c,v 1.59 2014/07/26 22:21:16 joerg Exp $ */
+/* $NetBSD: mld6.c,v 1.60 2014/09/09 20:16:12 rmind 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.59 2014/07/26 22:21:16 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.60 2014/09/09 20:16:12 rmind Exp $");
#include "opt_inet.h"
@@ -657,7 +657,7 @@ in6_addmulti(struct in6_addr *maddr6, st
return (NULL);
}
in6m->in6m_ia = ia;
- IFAREF(&ia->ia_ifa); /* gain a reference */
+ ifaref(&ia->ia_ifa); /* gain a reference */
LIST_INSERT_HEAD(&ia->ia6_multiaddrs, in6m, in6m_entry);
/*
@@ -669,7 +669,7 @@ in6_addmulti(struct in6_addr *maddr6, st
if (*errorp) {
LIST_REMOVE(in6m, in6m_entry);
free(in6m, M_IPMADDR);
- IFAFREE(&ia->ia_ifa);
+ ifafree(&ia->ia_ifa);
splx(s);
return (NULL);
}
@@ -719,7 +719,7 @@ in6_delmulti(struct in6_multi *in6m)
*/
LIST_REMOVE(in6m, in6m_entry);
if (in6m->in6m_ia != NULL) {
- IFAFREE(&in6m->in6m_ia->ia_ifa); /* release reference */
+ ifafree(&in6m->in6m_ia->ia_ifa); /* release reference */
in6m->in6m_ia = NULL;
}
@@ -798,8 +798,8 @@ in6_savemkludge(struct in6_ifaddr *oia)
KASSERT(ia != oia);
while ((in6m = LIST_FIRST(&oia->ia6_multiaddrs)) != NULL) {
LIST_REMOVE(in6m, in6m_entry);
- IFAREF(&ia->ia_ifa);
- IFAFREE(&in6m->in6m_ia->ia_ifa);
+ ifaref(&ia->ia_ifa);
+ ifafree(&in6m->in6m_ia->ia_ifa);
in6m->in6m_ia = ia;
LIST_INSERT_HEAD(&ia->ia6_multiaddrs, in6m, in6m_entry);
}
@@ -815,7 +815,7 @@ in6_savemkludge(struct in6_ifaddr *oia)
while ((in6m = LIST_FIRST(&oia->ia6_multiaddrs)) != NULL) {
LIST_REMOVE(in6m, in6m_entry);
- IFAFREE(&in6m->in6m_ia->ia_ifa); /* release reference */
+ ifafree(&in6m->in6m_ia->ia_ifa); /* release reference */
in6m->in6m_ia = NULL;
LIST_INSERT_HEAD(&mk->mk_head, in6m, in6m_entry);
}
@@ -842,7 +842,7 @@ in6_restoremkludge(struct in6_ifaddr *ia
while ((in6m = LIST_FIRST(&mk->mk_head)) != NULL) {
LIST_REMOVE(in6m, in6m_entry);
in6m->in6m_ia = ia;
- IFAREF(&ia->ia_ifa);
+ ifaref(&ia->ia_ifa);
LIST_INSERT_HEAD(&ia->ia6_multiaddrs, in6m, in6m_entry);
}
}
Index: src/sys/netinet6/nd6_nbr.c
diff -u src/sys/netinet6/nd6_nbr.c:1.100 src/sys/netinet6/nd6_nbr.c:1.101
--- src/sys/netinet6/nd6_nbr.c:1.100 Tue Jul 1 07:51:29 2014
+++ src/sys/netinet6/nd6_nbr.c Tue Sep 9 20:16:12 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6_nbr.c,v 1.100 2014/07/01 07:51:29 ozaki-r Exp $ */
+/* $NetBSD: nd6_nbr.c,v 1.101 2014/09/09 20:16:12 rmind 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.100 2014/07/01 07:51:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.101 2014/09/09 20:16:12 rmind Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@@ -1162,7 +1162,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
* (re)initialization.
*/
dp->dad_ifa = ifa;
- IFAREF(ifa); /* just for safety */
+ ifaref(ifa); /* just for safety */
dp->dad_count = ip6_dad_count;
dp->dad_ns_icount = dp->dad_na_icount = 0;
dp->dad_ns_ocount = dp->dad_ns_tcount = 0;
@@ -1195,7 +1195,7 @@ nd6_dad_stop(struct ifaddr *ifa)
TAILQ_REMOVE(&dadq, dp, dad_list);
free(dp, M_IP6NDP);
dp = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
}
static void
@@ -1240,7 +1240,7 @@ nd6_dad_timer(struct ifaddr *ifa)
TAILQ_REMOVE(&dadq, dp, dad_list);
free(dp, M_IP6NDP);
dp = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
goto done;
}
@@ -1294,7 +1294,7 @@ nd6_dad_timer(struct ifaddr *ifa)
TAILQ_REMOVE(&dadq, dp, dad_list);
free(dp, M_IP6NDP);
dp = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
}
}
@@ -1373,7 +1373,7 @@ nd6_dad_duplicated(struct ifaddr *ifa)
TAILQ_REMOVE(&dadq, dp, dad_list);
free(dp, M_IP6NDP);
dp = NULL;
- IFAFREE(ifa);
+ ifafree(ifa);
}
static void