{
struct isis_area *area;
struct flex_algo *fa;
- bool advertise;
+ bool advertise, update_te;
+ struct isis_circuit *circuit;
+ struct listnode *node;
uint32_t algorithm;
uint32_t priority = FLEX_ALGO_PRIO_DEFAULT;
struct isis_flex_algo_alloc_arg arg;
area = nb_running_get_entry(args->dnode, NULL, true);
arg.algorithm = algorithm;
arg.area = area;
+ update_te = list_isempty(area->flex_algos->flex_algos);
fa = flex_algo_alloc(area->flex_algos, algorithm, &arg);
fa->priority = priority;
fa->advertise_definition = advertise;
admin_group_allow_explicit_zero(
&fa->admin_group_include_all);
}
+ if (update_te) {
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node,
+ circuit))
+ isis_link_params_update_asla(circuit,
+ circuit->interface);
+ }
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
XFREE(MTYPE_ISIS_MPLS_TE, area->mta);
}
-static void isis_link_params_update_asla(struct isis_circuit *circuit,
- struct interface *ifp)
+void isis_link_params_update_asla(struct isis_circuit *circuit,
+ struct interface *ifp)
{
struct isis_asla_subtlvs *asla;
struct listnode *node, *nnode;
void isis_mpls_te_create(struct isis_area *area);
void isis_mpls_te_disable(struct isis_area *area);
void isis_mpls_te_term(struct isis_area *area);
+void isis_link_params_update_asla(struct isis_circuit *circuit,
+ struct interface *ifp);
void isis_link_params_update(struct isis_circuit *, struct interface *);
int isis_mpls_te_update(struct interface *);
void isis_te_lsp_event(struct isis_lsp *lsp, enum lsp_event event);