]> git.puffer.fish Git - mirror/frr.git/commitdiff
staticd: Fix bfd for static route in VRF 13838/head
authorDmitrii Turlupov <turlupov@zts.ru>
Fri, 23 Jun 2023 15:48:59 +0000 (18:48 +0300)
committerDmitrii Turlupov <turlupov@zts.ru>
Fri, 23 Jun 2023 16:02:44 +0000 (19:02 +0300)
vrf BELLA
 ip route 1.1.1.1/32 192.168.1.1 bfd profile test
exit-vrf

Before patch:
# do show bfd peers
BFD Peers:
peer 192.168.1.1 vrf default

After patch:
# do show bfd peers
BFD Peers:
peer 192.168.1.1 vrf BELLA

Signed-off-by: Dmitrii Turlupov <turlupov@zts.ru>
staticd/static_bfd.c

index 78d8c058072cd63dcc38d569fe78e0c96ad9a8e7..507c64e6a4c9f7da50ac27e78003785304b40754 100644 (file)
@@ -88,6 +88,7 @@ void static_next_hop_bfd_monitor_enable(struct static_nexthop *sn,
        bool mhop;
        int family;
        struct ipaddr source;
+       struct vrf *vrf = NULL;
 
        use_interface = false;
        use_source = yang_dnode_exists(dnode, "./source");
@@ -95,7 +96,7 @@ void static_next_hop_bfd_monitor_enable(struct static_nexthop *sn,
        onlink = yang_dnode_exists(dnode, "../onlink") &&
                 yang_dnode_get_bool(dnode, "../onlink");
        mhop = yang_dnode_get_bool(dnode, "./multi-hop");
-
+       vrf = vrf_lookup_by_name(yang_dnode_get_string(dnode, "../vrf"));
 
        family = static_next_hop_type_to_family(sn);
        if (family == AF_UNSPEC)
@@ -133,6 +134,8 @@ void static_next_hop_bfd_monitor_enable(struct static_nexthop *sn,
        bfd_sess_set_profile(sn->bsp, use_profile ? yang_dnode_get_string(
                                                            dnode, "./profile")
                                                  : NULL);
+       if (vrf && vrf->vrf_id != VRF_UNKNOWN)
+               bfd_sess_set_vrf(sn->bsp, vrf->vrf_id);
 
        bfd_sess_set_hop_count(sn->bsp, (onlink || mhop == false) ? 1 : 254);