diff options
author | hsu <hsu@FreeBSD.org> | 2002-12-22 05:35:03 +0000 |
---|---|---|
committer | hsu <hsu@FreeBSD.org> | 2002-12-22 05:35:03 +0000 |
commit | 82e1e3bab0d3abe1018a0b56559c154485f2f676 (patch) | |
tree | d0f9ee7e6f9d8014e6f8f94ab6965e85c268792e /sys/net/rtsock.c | |
parent | 2afef11c570b7b725c3145fc710f8dcd8d7ed4e0 (diff) | |
download | FreeBSD-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.c | 7 |
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); } |