Skip to content

Conversation

@chiragshah6
Copy link
Member

@chiragshah6 chiragshah6 commented Jun 12, 2025

The duplicate nexthop is not displayed with proper alignment.

mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1 <<<<<<<<

With fix:

mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
        via 20.1.1.2, swp1s0 (vrf default), weight 1

mlx-4700-44# show nexthop-group rib 530
ID: 530 (zebra)
     RefCnt: 17
     Uptime: 02:02:52
     VRF: default
     Valid, Installed
     Interface Index: 38
           via 20.1.1.2, swp1s0 (vrf default), weight 1
     Dependents: (576) (579) (580) (582)

show nexthop-group rib 580 json

  "580":{
    "type":"zebra",
    "refCount":1,
    "uptime":"02:01:33",
    "vrf":"default",
    "nhGrpUptimeEstablishedEpoch":1749708524,
    "valid":true,
    "installed":true,
    "depends":[
      530,
      564,
      579
    ],
    "nexthops":[
      {
        "flags":5,
        "ip":"20.1.1.9",
        "afi":"ipv4",
        "vrf":"default",
        "active":true,
        "recursive":true,
        "weight":1
      },
      {
        "flags":3,
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "resolver":true,
        "active":true,
        "weight":1
      },
      {
        "flags":19,
        "duplicate":true, <<<<
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "active":true,
        "weight":1
      }
    ]
  }

Signed-off-by: Chirag Shah <[email protected]

The duplicate nexthop is not displayed with
proper alignment.

mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1 <<<<<<<<

Ticket: #4496048

With fix:
mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
        via 20.1.1.2, swp1s0 (vrf default), weight 1

mlx-4700-44# show nexthop-group rib 530
ID: 530 (zebra)
     RefCnt: 17
     Uptime: 02:02:52
     VRF: default
     Valid, Installed
     Interface Index: 38
           via 20.1.1.2, swp1s0 (vrf default), weight 1
     Dependents: (576) (579) (580) (582)

show nexthop-group rib 580 json

  "580":{
    "type":"zebra",
    "refCount":1,
    "uptime":"02:01:33",
    "vrf":"default",
    "nhGrpUptimeEstablishedEpoch":1749708524,
    "valid":true,
    "installed":true,
    "depends":[
      530,
      564,
      579
    ],
    "nexthops":[
      {
        "flags":5,
        "ip":"20.1.1.9",
        "afi":"ipv4",
        "vrf":"default",
        "active":true,
        "recursive":true,
        "weight":1
      },
      {
        "flags":3,
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "resolver":true,
        "active":true,
        "weight":1
      },
      {
        "flags":19,
        "duplicate":true, <<<<
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "active":true,
        "weight":1
      }
    ]
  }

Signed-off-by: Chirag Shah <[email protected]>
@donaldsharp
Copy link
Member

what's the output of show ip route 30.1.2.9?

@chiragshah6
Copy link
Member Author

what's the output of show ip route 30.1.2.9?

mlx-4700-44# show ip route 30.1.2.9
Routing entry for 30.1.2.0/24
  Known via "bgp", distance 20, metric 0, best
  Last update 03:11:55 ago
  * 30.1.1.2, via br_default.60, weight 1
  * 30.1.1.6, via vlan70, weight 1
  * 30.1.1.10, via bond1, weight 1
  
  mlx-4700-44# show ip route 20.1.1.9
Routing entry for 20.1.1.8/30
  Known via "ospf", distance 110, metric 8, best
  Last update 03:12:09 ago
  * 20.1.1.2, via swp1s0, weight 1

VRF default table 10004:
F>  0.0.0.0/0 [200/0] via 20.1.1.9 (recursive), weight 1, 03:12:19
  *                     via 20.1.1.2, swp1s0, weight 1, 03:12:19
                      via 30.1.2.9 (recursive), weight 1, 03:12:19
  *                     via 30.1.1.2, br_default.60, weight 1, 03:12:19
  *                     via 30.1.1.6, vlan70, weight 1, 03:12:19
  *                     via 30.1.1.10, bond1, weight 1, 03:12:19
                      via 20.1.1.2, swp1s0, weight 1, 03:12:19

mlx-4700-44# show nexthop-group rib 657
ID: 657 (zebra)
     RefCnt: 1
     Uptime: 03:10:37
     VRF: default
     Valid, Installed
     Depends: (609) (643) (656)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
        via 20.1.1.2, swp1s0 (vrf default), weight 1

mlx-4700-44# show nexthop-group rib 609
ID: 609 (zebra)
     RefCnt: 17
     Uptime: 03:10:45
     VRF: default
     Valid, Installed
     Interface Index: 38
           via 20.1.1.2, swp1s0 (vrf default), weight 1
     Dependents: (653) (656) (657) (659)
mlx-4700-44# show nexthop-group rib 643
ID: 643 (zebra)
     RefCnt: 2
     Uptime: 03:11:00
     VRF: default
     Valid
     Depends: (605)
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
     Dependents: (657)
mlx-4700-44# show nexthop-group rib 656
ID: 656 (zebra)
     RefCnt: 3
     Uptime: 03:10:54
     VRF: default
     Valid
     Depends: (609)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
     Dependents: (657)

Copy link
Member

@riw777 riw777 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good

@donaldsharp
Copy link
Member

LGTM

@riw777 riw777 merged commit c521245 into FRRouting:master Jun 17, 2025
18 checks passed
raja-rajasekar pushed a commit to raja-rajasekar/frr that referenced this pull request Jul 21, 2025
zebra: fix nexthop rib out for duplicate nhg
### **User description**
The duplicate nexthop is not dispalyed with
proper alignment.

```
mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1 <<<<<<<<
```

Ticket: #4496048

With fix:
```
mlx-4700-44# show nexthop-group rib 580
ID: 580 (zebra)
     RefCnt: 1
     Uptime: 01:39:06
     VRF: default
     Valid, Installed
     Depends: (530) (564) (579)
        via 20.1.1.9 (vrf default) (recursive), weight 1
           via 20.1.1.2, swp1s0 (vrf default), weight 1
        via 30.1.2.9 (vrf default) (recursive), weight 1
           via 30.1.1.2, br_default.60 (vrf default), weight 1
           via 30.1.1.6, vlan70 (vrf default), weight 1
           via 30.1.1.10, bond1 (vrf default), weight 1
        via 20.1.1.2, swp1s0 (vrf default), weight 1

mlx-4700-44# show nexthop-group rib 530
ID: 530 (zebra)
     RefCnt: 17
     Uptime: 02:02:52
     VRF: default
     Valid, Installed
     Interface Index: 38
           via 20.1.1.2, swp1s0 (vrf default), weight 1
     Dependents: (576) (579) (580) (582)

show nexthop-group rib 580 json

  "580":{
    "type":"zebra",
    "refCount":1,
    "uptime":"02:01:33",
    "vrf":"default",
    "nhGrpUptimeEstablishedEpoch":1749708524,
    "valid":true,
    "installed":true,
    "depends":[
      530,
      564,
      579
    ],
    "nexthops":[
      {
        "flags":5,
        "ip":"20.1.1.9",
        "afi":"ipv4",
        "vrf":"default",
        "active":true,
        "recursive":true,
        "weight":1
      },
      {
        "flags":3,
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "resolver":true,
        "active":true,
        "weight":1
      },
      {
        "flags":19,
        "duplicate":true, <<<<
        "fib":true,
        "ip":"20.1.1.2",
        "afi":"ipv4",
        "interfaceIndex":38,
        "interfaceName":"swp1s0",
        "vrf":"default",
        "active":true,
        "weight":1
      }
    ]
  }
```

Upstream PR FRRouting#19015


Signed-off-by: Chirag Shah <[email protected]>


___

### **PR Type**
Bug fix


___

### **Description**
- Fix alignment of duplicate nexthops in CLI output


___



### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>zebra_vty.c</strong><dd><code>Fix CLI display alignment for duplicate nexthops</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

zebra/zebra_vty.c

<li>Added check for NEXTHOP_FLAG_DUPLICATE when determining indentation<br> <li> Applied consistent indentation logic for both regular and backup <br>nexthops<br> <li> Fixed alignment issue where duplicate nexthops were incorrectly <br>indented


</details>


  </td>
  <td><a href="https://gitlab-master.nvidia.com/nbu-sws/CL/FRR/frr/-/blob/chirag/clfrrdev4/zebra/zebra_vty.c?ref_type=heads">+8/-8</a>&nbsp; &nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

___

<details><summary>Need help?</summary>- Type <code>/help how to ...</code> in the comments thread for any questions about PR-Agent usage.<br>- Check out the <a href='https://qodo-merge-docs.qodo.ai/usage-guide/'>documentation</a> for more information.</details>

 #

See merge request nbu-sws/CL/FRR/frr!1160
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants