aboutsummaryrefslogtreecommitdiffstats
path: root/nest
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2021-03-08 20:45:22 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-03-09 18:37:52 +0100
commit211fe69c984c657095930d2831f46896197ec65b (patch)
tree423b24725a03857f14d444d89a0b1a4c02fd27e1 /nest
parentd3782c72b9243f4609e61edf5f29e6adeaa41e9c (diff)
downloadbird-211fe69c984c657095930d2831f46896197ec65b.tar.gz
Nest: No automatic ROA reload on non-reloadable channels
Diffstat (limited to 'nest')
-rw-r--r--nest/proto.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/nest/proto.c b/nest/proto.c
index 6c935426..165125d8 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -62,6 +62,9 @@ static inline int proto_is_done(struct proto *p)
static inline int channel_is_active(struct channel *c)
{ return (c->channel_state == CS_START) || (c->channel_state == CS_UP); }
+static inline int channel_reloadable(struct channel *c)
+{ return c->proto->reload_routes && c->reloadable; }
+
static inline void
channel_log_state_change(struct channel *c)
{
@@ -389,6 +392,10 @@ channel_roa_subscribe_filter(struct channel *c, int dir)
if ((f == FILTER_ACCEPT) || (f == FILTER_REJECT))
return;
+ /* No automatic reload for non-reloadable channels */
+ if (dir && !channel_reloadable(c))
+ valid = 0;
+
/* No automatic reload for BGP channels without in_table / out_table */
if (c->channel == &channel_bgp)
valid = dir ? !!c->in_table : !!c->out_table;
@@ -717,12 +724,6 @@ channel_request_feeding(struct channel *c)
channel_log_state_change(c);
}
-static inline int
-channel_reloadable(struct channel *c)
-{
- return c->proto->reload_routes && c->reloadable;
-}
-
static void
channel_request_reload(struct channel *c)
{