]> git.puffer.fish Git - mirror/frr.git/commitdiff
staticd: Add SRv6 encap behavior in show running-config
authorCarmine Scarpitta <cscarpit@cisco.com>
Thu, 20 Feb 2025 10:44:41 +0000 (11:44 +0100)
committerCarmine Scarpitta <cscarpit@cisco.com>
Wed, 30 Apr 2025 16:54:43 +0000 (16:54 +0000)
This commit extends the output of `show running-config` to display the
configured SRv6 encapsulation behavior.

```
router# show running-config
[...]
ip route 192.0.2.2/32 sr0 segments fcbb:bbbb:1:2:3:4:5:6/fcbb:bbbb:7:8:fe00:: encap-behavior H_Encaps
ip route 192.0.2.3/32 sr0 segments fcbb:bbbb:1:2:3:4:5:6/fcbb:bbbb:7:8:fe00:: encap-behavior H_Encaps_Red
ipv6 route 2001:db8:1:1::2/128 sr0 segments fcbb:bbbb:1:2:3:4:5:6/fcbb:bbbb:7:8:fe00:: encap-behavior H_Encaps
ipv6 route 2001:db8:1:1::3/128 sr0 segments fcbb:bbbb:1:2:3:4:5:6/fcbb:bbbb:7:8:fe00:: encap-behavior H_Encaps_Red
[...]
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
staticd/static_vty.c

index 3640fdc580e9c041bfe0cde3f45bdde26bae06a1..d8b2452c32108afe492e1ec03274774581ed5217 100644 (file)
@@ -1518,6 +1518,8 @@ static void nexthop_cli_show(struct vty *vty, const struct lyd_node *route,
        uint8_t distance;
        struct mpls_label_iter iter;
        struct srv6_seg_iter seg_iter;
+       enum srv6_headend_behavior srv6_encap_behavior = SRV6_HEADEND_BEHAVIOR_H_ENCAPS;
+       const char *srv6_encap_behavior_str;
        const char *nexthop_vrf;
        uint32_t table_id;
        struct prefix src_prefix;
@@ -1600,6 +1602,19 @@ static void nexthop_cli_show(struct vty *vty, const struct lyd_node *route,
        yang_dnode_iterate(srv6_seg_iter_cb, &seg_iter, nexthop,
                           "./srv6-segs-stack/entry");
 
+       if (yang_dnode_exists(nexthop, "./srv6-segs-stack/encap-behavior")) {
+               srv6_encap_behavior_str = yang_dnode_get_string(nexthop,
+                                                               "./srv6-segs-stack/encap-behavior");
+               if (strmatch(srv6_encap_behavior_str, "ietf-srv6-types:H.Encaps"))
+                       srv6_encap_behavior = SRV6_HEADEND_BEHAVIOR_H_ENCAPS;
+               else if (strmatch(srv6_encap_behavior_str, "ietf-srv6-types:H.Encaps.Red"))
+                       srv6_encap_behavior = SRV6_HEADEND_BEHAVIOR_H_ENCAPS_RED;
+
+               if (srv6_encap_behavior != SRV6_HEADEND_BEHAVIOR_H_ENCAPS || show_defaults)
+                       vty_out(vty, " encap-behavior %s",
+                               srv6_headend_behavior2str(srv6_encap_behavior));
+       }
+
        nexthop_vrf = yang_dnode_get_string(nexthop, "vrf");
        if (strcmp(vrf, nexthop_vrf))
                vty_out(vty, " nexthop-vrf %s", nexthop_vrf);