summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>2009-12-14 20:12:51 +0000
committerluigi <luigi@FreeBSD.org>2009-12-14 20:12:51 +0000
commit003a092f8a52d96e983d96137cddf46e616ebf20 (patch)
tree8b0395f84d6ce444ea5d395521539c469902c2c0
parentc84f3aa93d03a352f0d114140b37990fd329b78a (diff)
downloadFreeBSD-src-003a092f8a52d96e983d96137cddf46e616ebf20.zip
FreeBSD-src-003a092f8a52d96e983d96137cddf46e616ebf20.tar.gz
Move the scan for max_keylen into route.c::route_init(),
and make max_keylen an argument for rn_init(). This removes an unnecessary dependency on domain.h from radix.c MFC after: 7 days
-rw-r--r--sys/net/radix.c26
-rw-r--r--sys/net/radix.h2
-rw-r--r--sys/net/route.c9
3 files changed, 11 insertions, 26 deletions
diff --git a/sys/net/radix.c b/sys/net/radix.c
index 531dafb..f092aa1 100644
--- a/sys/net/radix.c
+++ b/sys/net/radix.c
@@ -40,7 +40,6 @@
#include <sys/rwlock.h>
#include <sys/systm.h>
#include <sys/malloc.h>
-#include <sys/domain.h>
#include <sys/syslog.h>
#include <net/radix.h>
#include "opt_mpath.h"
@@ -1163,16 +1162,11 @@ rn_inithead(head, off)
}
void
-rn_init()
+rn_init(int maxk)
{
char *cp, *cplim;
-#ifdef _KERNEL
- struct domain *dom;
- for (dom = domains; dom; dom = dom->dom_next)
- if (dom->dom_maxrtkey > max_keylen)
- max_keylen = dom->dom_maxrtkey;
-#endif
+ max_keylen = maxk;
if (max_keylen == 0) {
log(LOG_ERR,
"rn_init: radix functions require max_keylen be set\n");
@@ -1189,19 +1183,3 @@ rn_init()
if (rn_inithead((void **)(void *)&mask_rnhead, 0) == 0)
panic("rn_init 2");
}
-
-#ifndef _KERNEL
-/*
- * A simple function to make the code usable from userland.
- * A proper fix (maybe later) would be to change rn_init() so that it
- * takes maxkeylen as an argument, and move the scan of
- * domains into net/route.c::route_init().
- */
-void rn_init2(int maxk);
-void
-rn_init2(int maxk)
-{
- max_keylen = maxk;
- rn_init();
-}
-#endif /* !_KERNEL */
diff --git a/sys/net/radix.h b/sys/net/radix.h
index e84072f..aa341b6 100644
--- a/sys/net/radix.h
+++ b/sys/net/radix.h
@@ -160,7 +160,7 @@ struct radix_node_head {
#define RADIX_NODE_HEAD_WLOCK_ASSERT(rnh) rw_assert(&(rnh)->rnh_lock, RA_WLOCKED)
#endif /* _KERNEL */
-void rn_init(void);
+void rn_init(int);
int rn_inithead(void **, int);
int rn_refines(void *, void *);
struct radix_node
diff --git a/sys/net/route.c b/sys/net/route.c
index 2087538..027772b 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -171,13 +171,20 @@ rt_tables_get_rnh(int table, int fam)
static void
route_init(void)
{
+ struct domain *dom;
+ int max_keylen = 0;
/* whack the tunable ints into line. */
if (rt_numfibs > RT_MAXFIBS)
rt_numfibs = RT_MAXFIBS;
if (rt_numfibs == 0)
rt_numfibs = 1;
- rn_init(); /* initialize all zeroes, all ones, mask table */
+
+ for (dom = domains; dom; dom = dom->dom_next)
+ if (dom->dom_maxrtkey > max_keylen)
+ max_keylen = dom->dom_maxrtkey;
+
+ rn_init(max_keylen); /* init all zeroes, all ones, mask table */
}
SYSINIT(route_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, route_init, 0);
OpenPOWER on IntegriCloud