summaryrefslogtreecommitdiff
path: root/nest/proto.c
diff options
context:
space:
mode:
Diffstat (limited to 'nest/proto.c')
-rw-r--r--nest/proto.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/nest/proto.c b/nest/proto.c
index bec30560..6e4b7d29 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -1134,6 +1134,8 @@ proto_configure_channel(struct proto *p, struct channel **pc, struct channel_con
static void
proto_cleanup(struct proto *p)
{
+ CALL(p->proto->cleanup, p);
+
rfree(p->pool);
p->pool = NULL;
@@ -1162,8 +1164,8 @@ proto_event(void *ptr)
if (p->do_stop)
{
- if (p->proto == &proto_unix_iface)
- if_flush_ifaces(p);
+ iface_unsubscribe(&p->iface_sub);
+ neigh_prune(p);
p->do_stop = 0;
}
@@ -2053,7 +2055,7 @@ proto_do_start(struct proto *p)
p->sources.class = &default_rte_owner_class;
if (!p->cf->late_if_feed)
- if_feed_baby(p);
+ iface_subscribe(&p->iface_sub);
}
static void
@@ -2066,7 +2068,7 @@ proto_do_up(struct proto *p)
proto_start_channels(p);
if (p->cf->late_if_feed)
- if_feed_baby(p);
+ iface_subscribe(&p->iface_sub);
}
static inline void
@@ -2098,7 +2100,6 @@ static void
proto_do_down(struct proto *p)
{
p->down_code = 0;
- neigh_prune();
/* Shutdown is finished in the protocol event */
if (proto_is_done(p))