summaryrefslogtreecommitdiffstats
path: root/sys/net/rtsock.c
diff options
context:
space:
mode:
authorhsu <hsu@FreeBSD.org>2002-12-22 05:35:03 +0000
committerhsu <hsu@FreeBSD.org>2002-12-22 05:35:03 +0000
commit82e1e3bab0d3abe1018a0b56559c154485f2f676 (patch)
treed0f9ee7e6f9d8014e6f8f94ab6965e85c268792e /sys/net/rtsock.c
parent2afef11c570b7b725c3145fc710f8dcd8d7ed4e0 (diff)
downloadFreeBSD-src-82e1e3bab0d3abe1018a0b56559c154485f2f676.zip
FreeBSD-src-82e1e3bab0d3abe1018a0b56559c154485f2f676.tar.gz
SMP locking for ifnet list.
Diffstat (limited to 'sys/net/rtsock.c')
-rw-r--r--sys/net/rtsock.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index d8ec489..40f2ee1 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -414,11 +414,12 @@ route_output(m, so)
/* new gateway could require new ifaddr, ifp;
flags may also be different; ifp may be specified
by ll sockaddr when protocol address is ambiguous */
-#define equal(a1, a2) (bcmp((caddr_t)(a1), (caddr_t)(a2), (a1)->sa_len) == 0)
+/* compare two sockaddr structures */
+#define sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0)
if ((rt->rt_flags & RTF_GATEWAY && gate != NULL) ||
ifpaddr != NULL ||
(ifaaddr != NULL &&
- !equal(ifaaddr, rt->rt_ifa->ifa_addr))) {
+ !sa_equal(ifaaddr, rt->rt_ifa->ifa_addr))) {
if ((error = rt_getifa(&info)) != 0)
senderr(error);
}
@@ -946,6 +947,7 @@ sysctl_iflist(af, w)
int len, error = 0;
bzero((caddr_t)&info, sizeof(info));
+ /* IFNET_RLOCK(); */ /* could sleep XXX */
TAILQ_FOREACH(ifp, &ifnet, if_link) {
if (w->w_arg && w->w_arg != ifp->if_index)
continue;
@@ -991,6 +993,7 @@ sysctl_iflist(af, w)
ifaaddr = netmask = brdaddr = 0;
}
done:
+ /* IFNET_RUNLOCK(); */ /* XXX */
return (error);
}
OpenPOWER on IntegriCloud