From: Nathan Bahr Date: Fri, 25 Oct 2024 19:10:17 +0000 (+0000) Subject: pimd: Update nexthops when lookup mode changes X-Git-Tag: base_10.3~151^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=9ce7f9b8e873fc287126af1bf07450f433685ce1;p=mirror%2Ffrr.git pimd: Update nexthops when lookup mode changes Link up the RPF lookup mode changing to a force update to RP's and upstreams registered for nexthop lookup cache updates. Signed-off-by: Nathan Bahr --- diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c index 596c949b0d..5b418f2597 100644 --- a/pimd/pim_nb_config.c +++ b/pimd/pim_nb_config.c @@ -1867,7 +1867,12 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mc old_mode = pim->rpf_mode; pim->rpf_mode = yang_dnode_get_enum(args->dnode, NULL); - /* TODO: Signal to redo lookups? */ + if (pim->rpf_mode != old_mode && + /* MCAST_MIX_MRIB_FIRST is the default if not configured */ + (old_mode != MCAST_NO_CONFIG && pim->rpf_mode != MCAST_MIX_MRIB_FIRST)) { + pim_nht_mode_changed(pim); + } + break; } diff --git a/pimd/pim_nht.h b/pimd/pim_nht.h index 0d185aad03..144139f406 100644 --- a/pimd/pim_nht.h +++ b/pimd/pim_nht.h @@ -117,6 +117,9 @@ int pim_nht_lookup_ecmp_if_vif_index(struct pim_instance *pim, pim_addr src, str /* Tracked nexthop update from zebra */ void pim_nexthop_update(struct vrf *vrf, struct prefix *match, struct zapi_route *nhr); +/* RPF lookup mode changed via configuration */ +void pim_nht_mode_changed(struct pim_instance *pim); + /* NHT init and finish funcitons */ void pim_nht_init(struct pim_instance *pim); void pim_nht_terminate(struct pim_instance *pim);