summaryrefslogtreecommitdiffstats
path: root/ldpd/lde.h
diff options
context:
space:
mode:
authorRenato Westphal <renatowestphal@gmail.com>2016-09-28 17:25:17 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-09-28 22:05:39 +0200
commit134970a2a183d5021a1de42e8eede2fc3aa32e56 (patch)
treeb5c1edc17d6b49d0d0ebab59776454a1354c48d3 /ldpd/lde.h
parentldpd: make route flags a 32bit field (diff)
downloadfrr-134970a2a183d5021a1de42e8eede2fc3aa32e56.tar.xz
frr-134970a2a183d5021a1de42e8eede2fc3aa32e56.zip
ldpd: fix processing of redistributed routes
Commit 5048fe changed the way zebra behave when a route is updated. Now, whenever a route is changed, zebra advertises its new version without withdrawing the old one. This patch adapts ldpd to understand this new behavior. After processing a ZEBRA_REDISTRIBUTE_IPV[46]_ADD message, we need to check for nexthops that were removed and, for each of them (if any), withdraw the associated labels from zebra. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'ldpd/lde.h')
-rw-r--r--ldpd/lde.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/ldpd/lde.h b/ldpd/lde.h
index 0fce5565a..cf8f2129a 100644
--- a/ldpd/lde.h
+++ b/ldpd/lde.h
@@ -102,7 +102,9 @@ struct fec_nh {
union ldpd_addr nexthop;
uint32_t remote_label;
uint8_t priority;
+ uint8_t flags;
};
+#define F_FEC_NH_NEW 0x01
struct fec_node {
struct fec fec;
@@ -167,6 +169,7 @@ void lde_kernel_insert(struct fec *, int, union ldpd_addr *,
uint8_t, int, void *);
void lde_kernel_remove(struct fec *, int, union ldpd_addr *,
uint8_t);
+void lde_kernel_reevaluate(struct fec *);
void lde_check_mapping(struct map *, struct lde_nbr *);
void lde_check_request(struct map *, struct lde_nbr *);
void lde_check_release(struct map *, struct lde_nbr *);