summaryrefslogtreecommitdiff
path: root/isisd/isis_circuit.c
diff options
context:
space:
mode:
Diffstat (limited to 'isisd/isis_circuit.c')
-rw-r--r--isisd/isis_circuit.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index a91bbd0b95..1b0447226d 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -335,8 +335,16 @@ void isis_circuit_add_addr(struct isis_circuit *circuit,
if (IN6_IS_ADDR_LINKLOCAL(&ipv6->prefix))
listnode_add(circuit->ipv6_link, ipv6);
- else
+ else {
listnode_add(circuit->ipv6_non_link, ipv6);
+ /* Update Local IPv6 address param. if MPLS TE is on */
+ if (circuit->ext && circuit->area
+ && IS_MPLS_TE(circuit->area->mta)) {
+ IPV6_ADDR_COPY(&circuit->ext->local_addr6,
+ &ipv6->prefix);
+ SET_SUBTLV(circuit->ext, EXT_LOCAL_ADDR6);
+ }
+ }
if (circuit->area)
lsp_regenerate_schedule(circuit->area, circuit->is_type,
0);
@@ -1061,7 +1069,7 @@ static int isis_interface_config_write(struct vty *vty)
FOR_ALL_INTERFACES (vrf, ifp) {
/* IF name */
- vty_frame(vty, "interface %s\n", ifp->name);
+ if_vty_config_start(vty, ifp);
write++;
/* IF desc */
if (ifp->desc) {
@@ -1269,7 +1277,7 @@ static int isis_interface_config_write(struct vty *vty)
write += hook_call(isis_circuit_config_write,
circuit, vty);
} while (0);
- vty_endframe(vty, "exit\n!\n");
+ if_vty_config_end(vty);
}
return write;