summaryrefslogtreecommitdiff
path: root/usr.sbin/bgpd/rde_rib.c
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2009-06-03 20:18:00 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2009-06-03 20:18:00 +0000
commit2c12ceb51f0559dc43be19c78ec2096cdde262cf (patch)
tree4704ef9f2730326a8cb3a3ca999be43b021cdaa3 /usr.sbin/bgpd/rde_rib.c
parent4b3c52aa7b4bb2974dbb7149a6198da8d06e802a (diff)
Better way to allocate new RIBs.
Diffstat (limited to 'usr.sbin/bgpd/rde_rib.c')
-rw-r--r--usr.sbin/bgpd/rde_rib.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/usr.sbin/bgpd/rde_rib.c b/usr.sbin/bgpd/rde_rib.c
index 1f1b0a952d6..b637d2949dc 100644
--- a/usr.sbin/bgpd/rde_rib.c
+++ b/usr.sbin/bgpd/rde_rib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde_rib.c,v 1.109 2009/06/03 19:54:53 claudio Exp $ */
+/* $OpenBSD: rde_rib.c,v 1.110 2009/06/03 20:17:59 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Claudio Jeker <claudio@openbsd.org>
@@ -52,27 +52,15 @@ RB_GENERATE(rib_tree, rib_entry, rib_e, rib_compare);
void
rib_init(void)
{
- if ((ribs = calloc(1, sizeof(struct rib))) == NULL)
- fatal("rib_init");
- rib_new("DEFAULT");
-
- /* XXX we need to create Adj-RIB-In by hand */
- bzero(&ribs[0], sizeof(struct rib));
- RB_INIT(&ribs[0].rib);
- ribs[0].state = RIB_ACTIVE;
- ribs[0].id = 0;
- strlcpy(ribs[0].name, "Adj-RIB-In", sizeof("Adj-RIB-In"));
- ribs[0].flags = F_RIB_NOEVALUATE;
+ rib_new(1, "DEFAULT", 0);
+ rib_new(0, "Adj-RIB-In", F_RIB_NOEVALUATE);
}
u_int16_t
-rib_new(char *name)
+rib_new(u_int16_t id, char *name, u_int16_t flags)
{
struct rib *xribs;
size_t newsize;
- u_int16_t id;
-
- id = rib_name2id(name);
if (id >= rib_size) {
newsize = sizeof(struct rib) * (id + 1);
@@ -89,6 +77,7 @@ rib_new(char *name)
RB_INIT(&ribs[id].rib);
ribs[id].state = RIB_ACTIVE;
ribs[id].id = id;
+ ribs[id].flags = flags;
return (id);
}