summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nest/proto.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/nest/proto.c b/nest/proto.c
index 6aa8399..cb9b844 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -25,10 +25,9 @@ list inactive_proto_list;
void *
proto_new(struct protocol *pr, unsigned size)
{
- struct proto *p = mp_alloc(cfg_mem, size);
+ struct proto *p = cfg_allocz(size);
debug("proto_new(%s)\n", pr->name);
- bzero(p, sizeof(*p));
p->proto = pr;
p->name = pr->name;
p->debug = pr->debug;
@@ -71,6 +70,8 @@ static void
proto_start(struct proto *p)
{
rem_node(&p->n);
+ if (p->disabled)
+ return;
p->state = PRS_STARTING;
if (p->start)
p->start(p);
@@ -103,7 +104,9 @@ protos_dump_all(void)
WALK_LIST(p, proto_list)
{
debug(" protocol %s:\n", p->name);
- if (p->dump)
+ if (p->disabled)
+ debug("\tDISABLED\n");
+ else if (p->dump)
p->dump(p);
}
WALK_LIST(p, inactive_proto_list)