}
else
{
- len = vty_out (vty, "%s",
- inet_ntop (AF_INET6, &attr->extra->mp_nexthop_global,
- buf, BUFSIZ));
- len = 16 - len;
- if (len < 1)
- vty_out (vty, "%s%*s", VTY_NEWLINE, 36, " ");
- else
- vty_out (vty, "%*s", len, " ");
+ if ((attr->extra->mp_nexthop_len == 32) || (binfo->peer->conf_if))
+ {
+ if (binfo->peer->conf_if)
+ {
+ len = vty_out (vty, "%s",
+ binfo->peer->conf_if);
+ len = 7 - len; /* len of IPv6 addr + max len of def ifname */
+
+ if (len < 1)
+ vty_out (vty, "%s%*s", VTY_NEWLINE, 45, " ");
+ else
+ vty_out (vty, "%*s", len, " ");
+ }
+ else
+ {
+ len = vty_out (vty, "%s",
+ inet_ntop (AF_INET6,
+ &attr->extra->mp_nexthop_local,
+ buf, BUFSIZ));
+ len = 16 - len;
+
+ if (len < 1)
+ vty_out (vty, "%s%*s", VTY_NEWLINE, 36, " ");
+ else
+ vty_out (vty, "%*s", len, " ");
+ }
+ }
+ else
+ {
+ len = vty_out (vty, "%s",
+ inet_ntop (AF_INET6,
+ &attr->extra->mp_nexthop_global,
+ buf, BUFSIZ));
+ len = 16 - len;
+
+ if (len < 1)
+ vty_out (vty, "%s%*s", VTY_NEWLINE, 36, " ");
+ else
+ vty_out (vty, "%*s", len, " ");
+ }
}
}
#endif /* HAVE_IPV6 */