From: Carmine Scarpitta Date: Thu, 20 Feb 2025 10:44:41 +0000 (+0100) Subject: staticd: Add SRv6 encap behavior in show running-config X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=5323ad0d1fec3f7b0751e325cd4d34ebf8a9f56c;p=mirror%2Ffrr.git staticd: Add SRv6 encap behavior in show running-config 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 --- diff --git a/staticd/static_vty.c b/staticd/static_vty.c index 3640fdc580..d8b2452c32 100644 --- a/staticd/static_vty.c +++ b/staticd/static_vty.c @@ -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);