]> git.puffer.fish Git - mirror/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)
committerPaul Jakma <paul@quagga.net>
Sun, 8 Jan 2012 11:31:50 +0000 (11:31 +0000)
* 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 dc448f9fa278c05ab97c1fb40572d1f25083e5ae..e9c78b3f0cb42e58f63323a237cea649e07d0008 100644 (file)
@@ -1190,7 +1190,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",
@@ -1211,7 +1221,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",