summaryrefslogtreecommitdiffstats
path: root/sys/netinet/in_rmx.c
diff options
context:
space:
mode:
authorhsu <hsu@FreeBSD.org>2002-12-24 03:03:39 +0000
committerhsu <hsu@FreeBSD.org>2002-12-24 03:03:39 +0000
commit32436a25c0510e4371c6f02353b447c09ba9db0d (patch)
tree5e53dfd4f16f3a5c2080f2ce73aed007b1be63a1 /sys/netinet/in_rmx.c
parent018c02046059a2588bdd154c9136e4467aafa156 (diff)
downloadFreeBSD-src-32436a25c0510e4371c6f02353b447c09ba9db0d.zip
FreeBSD-src-32436a25c0510e4371c6f02353b447c09ba9db0d.tar.gz
SMP locking for radix nodes.
Diffstat (limited to 'sys/netinet/in_rmx.c')
-rw-r--r--sys/netinet/in_rmx.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/netinet/in_rmx.c b/sys/netinet/in_rmx.c
index 08052fb..a495959 100644
--- a/sys/netinet/in_rmx.c
+++ b/sys/netinet/in_rmx.c
@@ -291,7 +291,9 @@ in_rtqtimo(void *rock)
arg.nextstop = time_second + rtq_timeout;
arg.draining = arg.updating = 0;
s = splnet();
+ RADIX_NODE_HEAD_LOCK(rnh);
rnh->rnh_walktree(rnh, in_rtqkill, &arg);
+ RADIX_NODE_HEAD_UNLOCK(rnh);
splx(s);
/*
@@ -318,7 +320,9 @@ in_rtqtimo(void *rock)
arg.found = arg.killed = 0;
arg.updating = 1;
s = splnet();
+ RADIX_NODE_HEAD_LOCK(rnh);
rnh->rnh_walktree(rnh, in_rtqkill, &arg);
+ RADIX_NODE_HEAD_UNLOCK(rnh);
splx(s);
}
@@ -339,7 +343,9 @@ in_rtqdrain(void)
arg.draining = 1;
arg.updating = 0;
s = splnet();
+ RADIX_NODE_HEAD_LOCK(rnh);
rnh->rnh_walktree(rnh, in_rtqkill, &arg);
+ RADIX_NODE_HEAD_UNLOCK(rnh);
splx(s);
}
@@ -420,7 +426,9 @@ in_ifadown(struct ifaddr *ifa, int delete)
arg.rnh = rnh = rt_tables[AF_INET];
arg.ifa = ifa;
arg.del = delete;
+ RADIX_NODE_HEAD_LOCK(rnh);
rnh->rnh_walktree(rnh, in_ifadownkill, &arg);
+ RADIX_NODE_HEAD_UNLOCK(rnh);
ifa->ifa_flags &= ~IFA_ROUTE;
return 0;
}
OpenPOWER on IntegriCloud