diff options
| author | Rafael Zalamena <rzalamena@users.noreply.github.com> | 2024-12-16 09:57:31 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-16 09:57:31 -0300 |
| commit | 3bebb7be9204a51f194317438aa883f1b10c8646 (patch) | |
| tree | 6e4e508a35f6d03491661b25b645008d8ae7dd5a /zebra/zebra_rib.c | |
| parent | 30467f8f2b3a671973aa4b0aa2bcc1e3a208cc56 (diff) | |
| parent | 06c3436a12226d1f7e18e549f562ba9ecde4b394 (diff) | |
Merge pull request #17252 from nabahr/mcast-mode
Fix PIMD RPF lookup mode and nexthop tracking
Diffstat (limited to 'zebra/zebra_rib.c')
| -rw-r--r-- | zebra/zebra_rib.c | 61 |
1 files changed, 1 insertions, 60 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index e64a620f00..51458e4e84 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -503,7 +503,7 @@ struct route_entry *rib_match(afi_t afi, safi_t safi, vrf_id_t vrf_id, /* Lookup table. */ table = zebra_vrf_table(afi, safi, vrf_id); if (!table) - return 0; + return NULL; memset(&p, 0, sizeof(p)); p.family = afi; @@ -552,65 +552,6 @@ struct route_entry *rib_match(afi_t afi, safi_t safi, vrf_id_t vrf_id, return NULL; } -struct route_entry *rib_match_multicast(afi_t afi, vrf_id_t vrf_id, - union g_addr *gaddr, - struct route_node **rn_out) -{ - struct route_entry *re = NULL, *mre = NULL, *ure = NULL; - struct route_node *m_rn = NULL, *u_rn = NULL; - - switch (zrouter.ipv4_multicast_mode) { - case MCAST_MRIB_ONLY: - return rib_match(afi, SAFI_MULTICAST, vrf_id, gaddr, rn_out); - case MCAST_URIB_ONLY: - return rib_match(afi, SAFI_UNICAST, vrf_id, gaddr, rn_out); - case MCAST_NO_CONFIG: - case MCAST_MIX_MRIB_FIRST: - re = mre = rib_match(afi, SAFI_MULTICAST, vrf_id, gaddr, &m_rn); - if (!mre) - re = ure = rib_match(afi, SAFI_UNICAST, vrf_id, gaddr, - &u_rn); - break; - case MCAST_MIX_DISTANCE: - mre = rib_match(afi, SAFI_MULTICAST, vrf_id, gaddr, &m_rn); - ure = rib_match(afi, SAFI_UNICAST, vrf_id, gaddr, &u_rn); - if (mre && ure) - re = ure->distance < mre->distance ? ure : mre; - else if (mre) - re = mre; - else if (ure) - re = ure; - break; - case MCAST_MIX_PFXLEN: - mre = rib_match(afi, SAFI_MULTICAST, vrf_id, gaddr, &m_rn); - ure = rib_match(afi, SAFI_UNICAST, vrf_id, gaddr, &u_rn); - if (mre && ure) - re = u_rn->p.prefixlen > m_rn->p.prefixlen ? ure : mre; - else if (mre) - re = mre; - else if (ure) - re = ure; - break; - } - - if (rn_out) - *rn_out = (re == mre) ? m_rn : u_rn; - - if (IS_ZEBRA_DEBUG_RIB) { - char buf[BUFSIZ]; - inet_ntop(afi == AFI_IP ? AF_INET : AF_INET6, gaddr, buf, - BUFSIZ); - - zlog_debug("%s: %s: %pRN vrf: %s(%u) found %s, using %s", - __func__, buf, (re == mre) ? m_rn : u_rn, - vrf_id_to_name(vrf_id), vrf_id, - mre ? (ure ? "MRIB+URIB" : "MRIB") - : ure ? "URIB" : "nothing", - re == ure ? "URIB" : re == mre ? "MRIB" : "none"); - } - return re; -} - /* * Is this RIB labeled-unicast? It must be of type BGP and all paths * (nexthops) must have a label. |
