]> git.puffer.fish Git - mirror/frr.git/commitdiff
Merge pull request #9596 from LabNConsulting/ziemba/printfrr-nexthop
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 16 Sep 2021 00:23:30 +0000 (20:23 -0400)
committerGitHub <noreply@github.com>
Thu, 16 Sep 2021 00:23:30 +0000 (20:23 -0400)
printfrr %pNHcg, %pNHci

1  2 
lib/nexthop.c

diff --cc lib/nexthop.c
index 757138b5b46cb2269d06aeeed685b5bb9c0d6b19,fc33a990c0d61e2e92bfeaec713390064793a6bf..2e09cb4bcc3c0be18b1e4862f396ae42ac5d86f8
@@@ -1024,8 -1034,59 +1030,56 @@@ static ssize_t printfrr_nh(struct fbuf 
                case NEXTHOP_TYPE_BLACKHOLE:
                        ret += bputs(buf, "blackhole");
                        break;
 -              default:
 -                      ret += bputs(buf, "unknown");
 -                      break;
                }
                return ret;
+       case 'c':
+               ea->fmt++;
+               if (*ea->fmt == 'g') {
+                       ea->fmt++;
+                       if (!nexthop)
+                               return bputs(buf, "(null)");
+                       switch (nexthop->type) {
+                       case NEXTHOP_TYPE_IPV4:
+                       case NEXTHOP_TYPE_IPV4_IFINDEX:
+                               ret += bprintfrr(buf, "%pI4",
+                                                &nexthop->gate.ipv4);
+                               break;
+                       case NEXTHOP_TYPE_IPV6:
+                       case NEXTHOP_TYPE_IPV6_IFINDEX:
+                               ret += bprintfrr(buf, "%pI6",
+                                                &nexthop->gate.ipv6);
+                               break;
+                       case NEXTHOP_TYPE_IFINDEX:
+                       case NEXTHOP_TYPE_BLACKHOLE:
+                               break;
+                       }
+               } else if (*ea->fmt == 'i') {
+                       ea->fmt++;
+                       if (!nexthop)
+                               return bputs(buf, "(null)");
+                       switch (nexthop->type) {
+                       case NEXTHOP_TYPE_IFINDEX:
+                               ret += bprintfrr(
+                                       buf, "%s",
+                                       ifindex2ifname(nexthop->ifindex,
+                                                      nexthop->vrf_id));
+                               break;
+                       case NEXTHOP_TYPE_IPV4:
+                       case NEXTHOP_TYPE_IPV4_IFINDEX:
+                       case NEXTHOP_TYPE_IPV6:
+                       case NEXTHOP_TYPE_IPV6_IFINDEX:
+                               if (nexthop->ifindex)
+                                       ret += bprintfrr(
+                                               buf, "%s",
+                                               ifindex2ifname(
+                                                       nexthop->ifindex,
+                                                       nexthop->vrf_id));
+                               break;
+                       case NEXTHOP_TYPE_BLACKHOLE:
+                               break;
+                       }
+               }
+               return ret;
        }
        return -1;
  }