summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1998-10-19 19:45:29 +0200
committerMartin Mares <mj@ucw.cz>1998-10-19 19:45:29 +0200
commitf184ea6f7e1233403d06fa4615cb9f27f9d9a839 (patch)
tree93d6ba41c218048364e417c012967b6fb696125f
parent16a8ba30a97d82f8e43385d1a9b116fdb16746a8 (diff)
downloadbird-f184ea6f7e1233403d06fa4615cb9f27f9d9a839.tar
bird-f184ea6f7e1233403d06fa4615cb9f27f9d9a839.zip
Proto struct now contain (down | starting | up) state.
-rw-r--r--nest/proto.c2
-rw-r--r--nest/protocol.h5
2 files changed, 7 insertions, 0 deletions
diff --git a/nest/proto.c b/nest/proto.c
index f142a77..0760130 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -71,10 +71,12 @@ static void
proto_start(struct proto *p)
{
rem_node(&p->n);
+ p->state = PRS_STARTING;
if (p->start)
p->start(p);
if_feed_baby(p);
rt_feed_baby(p);
+ p->state = PRS_UP;
add_tail(&proto_list, &p->n);
}
diff --git a/nest/protocol.h b/nest/protocol.h
index 9a0ea98..f138d86 100644
--- a/nest/protocol.h
+++ b/nest/protocol.h
@@ -59,6 +59,7 @@ struct proto {
unsigned debug; /* Debugging flags */
pool *pool; /* Local objects */
unsigned preference; /* Default route preference */
+ unsigned state; /* PRS_... */
void (*if_notify)(struct proto *, unsigned flags, struct iface *new, struct iface *old);
void (*rt_notify)(struct proto *, struct network *net, struct rte *new, struct rte *old);
@@ -80,6 +81,10 @@ struct proto {
/* Hic sunt protocol-specific data */
};
+#define PRS_DOWN 0 /* Inactive */
+#define PRS_STARTING 1
+#define PRS_UP 2
+
void *proto_new(struct protocol *, unsigned size);
extern list proto_list, inactive_proto_list;