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