diff options
Diffstat (limited to 'isisd/isis_circuit.c')
| -rw-r--r-- | isisd/isis_circuit.c | 14 |
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; |
