summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
diff options
context:
space:
mode:
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r--nest/rt-table.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index e4b27814..2b065032 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -3095,6 +3095,10 @@ rte_update_in(struct channel *c, const net_addr *n, rte *new, struct rte_src *sr
if (old->flags & (REF_STALE | REF_DISCARD | REF_MODIFY))
{
old->flags &= ~(REF_STALE | REF_DISCARD | REF_MODIFY);
+
+ if (c->proto->rte_update_in_notify)
+ c->proto->rte_update_in_notify(c, n, old, src);
+
return 1;
}
@@ -3121,6 +3125,9 @@ rte_update_in(struct channel *c, const net_addr *n, rte *new, struct rte_src *sr
if (!net->routes)
fib_delete(&tab->fib, net);
+ if (c->proto->rte_update_in_notify)
+ c->proto->rte_update_in_notify(c, n, NULL, src);
+
return 1;
}
@@ -3149,6 +3156,10 @@ rte_update_in(struct channel *c, const net_addr *n, rte *new, struct rte_src *sr
e->next = *pos;
*pos = e;
tab->rt_count++;
+
+ if (c->proto->rte_update_in_notify)
+ c->proto->rte_update_in_notify(c, n, e, src);
+
return 1;
drop_update: