summaryrefslogtreecommitdiff
path: root/nest/proto.c
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2023-02-07 14:27:23 +0100
committerMaria Matejka <mq@ucw.cz>2023-02-07 14:27:23 +0100
commita2fd889a3b95960311560a3796be5cdf92affcfc (patch)
treea2a1a2fbe6a957a37e0b6e2241d072555e07b95a /nest/proto.c
parentf7c2a886c9fb73b2749d5e270f15b79c44e72a62 (diff)
parent0bb04d5390f21b0c96fc4894ba5d5510c541f0ef (diff)
Merge commit '0bb04d5390f21b0c96fc4894ba5d5510c541f0ef' into HEAD
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))