diff options
-rw-r--r-- | nest/proto.c | 2 | ||||
-rw-r--r-- | nest/protocol.h | 5 |
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; |