diff options
author | Maria Matejka <mq@ucw.cz> | 2023-02-07 14:27:23 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-02-07 14:27:23 +0100 |
commit | a2fd889a3b95960311560a3796be5cdf92affcfc (patch) | |
tree | a2a1a2fbe6a957a37e0b6e2241d072555e07b95a /nest/proto.c | |
parent | f7c2a886c9fb73b2749d5e270f15b79c44e72a62 (diff) | |
parent | 0bb04d5390f21b0c96fc4894ba5d5510c541f0ef (diff) |
Merge commit '0bb04d5390f21b0c96fc4894ba5d5510c541f0ef' into HEAD
Diffstat (limited to 'nest/proto.c')
-rw-r--r-- | nest/proto.c | 11 |
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)) |