From 3ea1ba632b3cdb5005a9339fd5e74d5f93631a48 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 18 Jan 2000 11:01:03 +0000 Subject: [PATCH] Killed protocol->priority. Protocol startup should be clean and hack-free now. It seems everything still works (except for disable/enable/restart which hangs sometimes, but it's another story). --- TODO | 3 +-- nest/proto.c | 21 ++------------------- nest/protocol.h | 1 - nest/rt-dev.c | 1 - sysdep/unix/krt.c | 2 -- 5 files changed, 3 insertions(+), 25 deletions(-) diff --git a/TODO b/TODO index ff549a56..2b752ac3 100644 --- a/TODO +++ b/TODO @@ -27,10 +27,9 @@ Core - config: when parsing prefix, check zero bits - config: useless rules when protocols disabled - config: better datetime format +- config: long disable/enable/restart sequences hang - krt: rescan interfaces when route addition fails? -- krt: does PERSIST mode have any sense if kernel syncer is shut down as last? -- krt: check behaviour wrt. reconfiguration of routing tables - tagging of external routes? diff --git a/nest/proto.c b/nest/proto.c index 81f3bd77..da758665 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -49,17 +49,7 @@ static void proto_rethink_goal(struct proto *p); static void proto_enqueue(list *l, struct proto *p) { - int pri = p->proto->priority; - - if (!pri) - add_tail(l, &p->n); - else - { - struct proto *q = HEAD(*l); - while (q->n.next && q->proto->priority >= pri) - q = (struct proto *) q->n.next; - insert_node(&p->n, q->n.prev); - } + add_tail(l, &p->n); p->last_state_change = now; } @@ -324,7 +314,7 @@ protos_dump_all(void) WALK_LIST(p, active_proto_list) { - debug(" protocol %s (pri=%d): state %s/%s\n", p->name, p->proto->priority, + debug(" protocol %s state %s/%s\n", p->name, p_states[p->proto_state], c_states[p->core_state]); if (p->in_filter) debug("\tInput filter: %s\n", filter_name(p->in_filter)); @@ -424,13 +414,6 @@ proto_notify_state(struct proto *p, unsigned ps) ASSERT(ops == PS_DOWN || ops == PS_START); ASSERT(cs == FS_HUNGRY); DBG("%s: Scheduling meal\n", p->name); - if (p->proto->priority) /* FIXME: Terrible hack to get synchronous device/kernel startup! */ - { - p->proto_state = ps; - p->core_state = FS_FEEDING; - proto_feed(p); - return; - } cs = FS_FEEDING; p->attn->hook = proto_feed; ev_schedule(p->attn); diff --git a/nest/protocol.h b/nest/protocol.h index 5564cdb8..f1afb532 100644 --- a/nest/protocol.h +++ b/nest/protocol.h @@ -35,7 +35,6 @@ struct protocol { char *name; char *template; /* Template for automatic generation of names */ unsigned debug; /* Default debugging flags */ - int priority; /* Protocol priority (usually 0) */ int name_counter; /* Counter for automatic name generation */ void (*preconfig)(struct protocol *, struct config *); /* Just before configuring */ diff --git a/nest/rt-dev.c b/nest/rt-dev.c index 89b22502..b9253ccb 100644 --- a/nest/rt-dev.c +++ b/nest/rt-dev.c @@ -89,7 +89,6 @@ dev_reconfigure(struct proto *p, struct proto_config *new) struct protocol proto_device = { name: "Direct", template: "direct%d", - priority: 90, init: dev_init, reconfigure: dev_reconfigure }; diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c index 110ded08..55986f0e 100644 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@ -161,7 +161,6 @@ kif_reconfigure(struct proto *p, struct proto_config *new) struct protocol proto_unix_iface = { name: "Device", template: "device%d", - priority: 100, preconfig: kif_preconfig, init: kif_init, start: kif_start, @@ -801,7 +800,6 @@ krt_reconfigure(struct proto *p, struct proto_config *new) struct protocol proto_unix_kernel = { name: "Kernel", template: "kernel%d", - priority: 80, preconfig: krt_preconfig, postconfig: krt_postconfig, init: krt_init,