]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: improve "show ip bgp scan detail"
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 9 Aug 2011 10:42:58 +0000 (14:42 +0400)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 9 Aug 2011 10:42:58 +0000 (14:42 +0400)
* bgp_nexthop.c (show_ip_bgp_scan_tables): access proper structure field
  in AF_INET6 case, handle ifindex NH type properly

bgpd/bgp_nexthop.c

index 95369045031687021de4f3152b54138f66903348..1a2923cc52b5145b871b7a0e069b26c0a3e77e63 100644 (file)
@@ -1187,7 +1187,17 @@ show_ip_bgp_scan_tables (struct vty *vty, const char detail)
                   inet_ntop (AF_INET, &rn->p.u.prefix4, buf, INET6_ADDRSTRLEN), bnc->metric, VTY_NEWLINE);
          if (detail)
            for (i = 0; i < bnc->nexthop_num; i++)
-             vty_out (vty, "  %s%s", inet_ntop (AF_INET, &bnc->nexthop[i].gate.ipv4, buf, INET6_ADDRSTRLEN), VTY_NEWLINE);
+             switch (bnc->nexthop[i].type)
+             {
+             case NEXTHOP_TYPE_IPV4:
+               vty_out (vty, "  gate %s%s", inet_ntop (AF_INET, &bnc->nexthop[i].gate.ipv4, buf, INET6_ADDRSTRLEN), VTY_NEWLINE);
+               break;
+             case NEXTHOP_TYPE_IFINDEX:
+               vty_out (vty, "  ifidx %u%s", bnc->nexthop[i].ifindex, VTY_NEWLINE);
+               break;
+             default:
+               vty_out (vty, "  invalid nexthop type %u%s", bnc->nexthop[i].type, VTY_NEWLINE);
+             }
        }
        else
          vty_out (vty, " %s invalid%s",
@@ -1208,7 +1218,17 @@ show_ip_bgp_scan_tables (struct vty *vty, const char detail)
                     bnc->metric, VTY_NEWLINE);
            if (detail)
              for (i = 0; i < bnc->nexthop_num; i++)
-               vty_out (vty, "  %s%s", inet_ntop (AF_INET6, &bnc->nexthop[i].gate.ipv4, buf, INET6_ADDRSTRLEN), VTY_NEWLINE);
+               switch (bnc->nexthop[i].type)
+               {
+               case NEXTHOP_TYPE_IPV6:
+                 vty_out (vty, "  gate %s%s", inet_ntop (AF_INET6, &bnc->nexthop[i].gate.ipv6, buf, INET6_ADDRSTRLEN), VTY_NEWLINE);
+                 break;
+               case NEXTHOP_TYPE_IFINDEX:
+                 vty_out (vty, "  ifidx %u%s", bnc->nexthop[i].ifindex, VTY_NEWLINE);
+                 break;
+               default:
+                 vty_out (vty, "  invalid nexthop type %u%s", bnc->nexthop[i].type, VTY_NEWLINE);
+               }
          }
          else
            vty_out (vty, " %s invalid%s",