]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_rpf.c
Merge pull request #5430 from taruta811/build-docker-centos
[mirror_frr.git] / pimd / pim_rpf.c
index afe3886aa5b98e32f7d2bdb41352f89eeadf20cc..d383ef5249454a2dda68c47449fc43fdb4f9c409 100644 (file)
@@ -42,7 +42,7 @@ static struct in_addr pim_rpf_find_rpf_addr(struct pim_upstream *up);
 void pim_rpf_set_refresh_time(struct pim_instance *pim)
 {
        pim->last_route_change_time = pim_time_monotonic_usec();
-       if (PIM_DEBUG_TRACE)
+       if (PIM_DEBUG_PIM_TRACE)
                zlog_debug("%s: vrf(%s) New last route change time: %" PRId64,
                           __PRETTY_FUNCTION__, pim->vrf->name,
                           pim->last_route_change_time);
@@ -69,7 +69,7 @@ bool pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
 
        if ((nexthop->last_lookup.s_addr == addr.s_addr)
            && (nexthop->last_lookup_time > pim->last_route_change_time)) {
-               if (PIM_DEBUG_TRACE) {
+               if (PIM_DEBUG_PIM_NHT) {
                        char addr_str[INET_ADDRSTRLEN];
                        pim_inet4_dump("<addr?>", addr, addr_str,
                                       sizeof(addr_str));
@@ -85,7 +85,7 @@ bool pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
                pim->nexthop_lookups_avoided++;
                return true;
        } else {
-               if (PIM_DEBUG_TRACE) {
+               if (PIM_DEBUG_PIM_NHT) {
                        char addr_str[INET_ADDRSTRLEN];
                        pim_inet4_dump("<addr?>", addr, addr_str,
                                       sizeof(addr_str));
@@ -195,8 +195,7 @@ static int nexthop_mismatch(const struct pim_nexthop *nh1,
 }
 
 enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,
-                                  struct pim_upstream *up, struct pim_rpf *old,
-                                  uint8_t is_new)
+                                  struct pim_upstream *up, struct pim_rpf *old)
 {
        struct pim_rpf *rpf = &up->rpf;
        struct pim_rpf saved;
@@ -216,14 +215,6 @@ enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,
        saved.source_nexthop = rpf->source_nexthop;
        saved.rpf_addr = rpf->rpf_addr;
 
-       if (is_new && PIM_DEBUG_ZEBRA) {
-               char source_str[INET_ADDRSTRLEN];
-               pim_inet4_dump("<source?>", up->upstream_addr, source_str,
-                              sizeof(source_str));
-               zlog_debug("%s: NHT Register upstream %s addr %s with Zebra.",
-                          __PRETTY_FUNCTION__, up->sg_str, source_str);
-       }
-       /* Register addr with Zebra NHT */
        nht_p.family = AF_INET;
        nht_p.prefixlen = IPV4_MAX_BITLEN;
        nht_p.u.prefix4.s_addr = up->upstream_addr.s_addr;
@@ -237,8 +228,8 @@ enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,
 
        if ((up->sg.src.s_addr == INADDR_ANY && I_am_RP(pim, up->sg.grp)) ||
            PIM_UPSTREAM_FLAG_TEST_FHR(up->flags))
-               neigh_needed = FALSE;
-       pim_find_or_track_nexthop(pim, &nht_p, up, NULL, NULL);
+               neigh_needed = false;
+       pim_find_or_track_nexthop(pim, &nht_p, up, NULL, false, NULL);
        if (!pim_ecmp_nexthop_lookup(pim, &rpf->source_nexthop, &src, &grp,
                                     neigh_needed))
                return PIM_RPF_FAILURE;
@@ -316,11 +307,11 @@ void pim_upstream_rpf_clear(struct pim_instance *pim,
                            struct pim_upstream *up)
 {
        if (up->rpf.source_nexthop.interface) {
-               if (up->channel_oil) {
-                       up->channel_oil->oil.mfcc_parent = MAXVIFS;
-                       pim_mroute_del(up->channel_oil, __PRETTY_FUNCTION__);
+               if (up->channel_oil)
+                       pim_channel_oil_change_iif(pim, up->channel_oil,
+                                                  MAXVIFS,
+                                                  __PRETTY_FUNCTION__);
 
-               }
                pim_upstream_switch(pim, up, PIM_UPSTREAM_NOTJOINED);
                up->rpf.source_nexthop.interface = NULL;
                up->rpf.source_nexthop.mrib_nexthop_addr.u.prefix4.s_addr =
@@ -426,9 +417,9 @@ int pim_rpf_is_same(struct pim_rpf *rpf1, struct pim_rpf *rpf2)
        return 0;
 }
 
-unsigned int pim_rpf_hash_key(void *arg)
+unsigned int pim_rpf_hash_key(const void *arg)
 {
-       struct pim_nexthop_cache *r = (struct pim_nexthop_cache *)arg;
+       const struct pim_nexthop_cache *r = arg;
 
        return jhash_1word(r->rpf.rpf_addr.u.prefix4.s_addr, 0);
 }