uint32_t pw_remote_status;
void *data; /* fec specific data */
+ uint8_t flags;
};
+#define F_FEC_NHS_CHANGED 0x01
#define CHUNK_SIZE 64
struct label_chunk {
fnh = fec_nh_find(fn, af, nexthop, ifindex, route_type, route_instance);
if (fnh == NULL) {
+ fn->flags |= F_FEC_NHS_CHANGED;
+
fnh = fec_nh_add(fn, af, nexthop, ifindex, route_type,
route_instance);
/*
} else
fnh->flags |= F_FEC_NH_NO_LDP;
} else {
+ fn->flags |= F_FEC_NHS_CHANGED;
lde_send_delete_klabel(fn, fnh);
fec_nh_del(fnh);
}
}
+ if (!(fn->flags & F_FEC_NHS_CHANGED))
+ /* return earlier if nothing has changed */
+ return;
+ fn->flags &= ~F_FEC_NHS_CHANGED;
+
if (LIST_EMPTY(&fn->nexthops)) {
RB_FOREACH(ln, nbr_tree, &lde_nbrs)
lde_send_labelwithdraw(ln, fn, NULL, NULL);