]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_neighbor.c
Merge pull request #5430 from taruta811/build-docker-centos
[mirror_frr.git] / pimd / pim_neighbor.c
index e73422331f7c56918ce0a493abbd3fc2101f2354..3f2aaf2bbed0ee210d8a94a8eca1859fdc5ef8ca 100644 (file)
@@ -25,6 +25,7 @@
 #include "if.h"
 #include "vty.h"
 #include "plist.h"
+#include "lib_errors.h"
 
 #include "pimd.h"
 #include "pim_neighbor.h"
@@ -254,8 +255,8 @@ void pim_neighbor_timer_reset(struct pim_neighbor *neigh, uint16_t holdtime)
                           neigh->interface->name);
        }
 
-       thread_add_timer(master, on_neighbor_timer, neigh, neigh->holdtime,
-                        &neigh->t_expire_timer);
+       thread_add_timer(router->master, on_neighbor_timer, neigh,
+                        neigh->holdtime, &neigh->t_expire_timer);
 }
 
 static int on_neighbor_jp_timer(struct thread *t)
@@ -276,8 +277,8 @@ static int on_neighbor_jp_timer(struct thread *t)
        rpf.rpf_addr.u.prefix4 = neigh->source_addr;
        pim_joinprune_send(&rpf, neigh->upstream_jp_agg);
 
-       thread_add_timer(master, on_neighbor_jp_timer, neigh, qpim_t_periodic,
-                        &neigh->jp_timer);
+       thread_add_timer(router->master, on_neighbor_jp_timer, neigh,
+                        router->t_periodic, &neigh->jp_timer);
 
        return 0;
 }
@@ -285,8 +286,8 @@ static int on_neighbor_jp_timer(struct thread *t)
 static void pim_neighbor_start_jp_timer(struct pim_neighbor *neigh)
 {
        THREAD_TIMER_OFF(neigh->jp_timer);
-       thread_add_timer(master, on_neighbor_jp_timer, neigh, qpim_t_periodic,
-                        &neigh->jp_timer);
+       thread_add_timer(router->master, on_neighbor_jp_timer, neigh,
+                        router->t_periodic, &neigh->jp_timer);
 }
 
 static struct pim_neighbor *
@@ -396,7 +397,7 @@ static void delete_prefix_list(struct pim_neighbor *neigh)
                }
 #endif
 
-               list_delete_and_null(&neigh->prefix_list);
+               list_delete(&neigh->prefix_list);
        }
 }
 
@@ -406,7 +407,7 @@ void pim_neighbor_free(struct pim_neighbor *neigh)
 
        delete_prefix_list(neigh);
 
-       list_delete_and_null(&neigh->upstream_jp_agg);
+       list_delete(&neigh->upstream_jp_agg);
        THREAD_OFF(neigh->jp_timer);
 
        if (neigh->bfd_info)
@@ -423,10 +424,11 @@ struct pim_neighbor *pim_neighbor_find_by_secondary(struct interface *ifp,
        struct pim_neighbor *neigh;
        struct prefix *p;
 
-       pim_ifp = ifp->info;
-       if (!pim_ifp)
+       if (!ifp || !ifp->info)
                return NULL;
 
+       pim_ifp = ifp->info;
+
        for (ALL_LIST_ELEMENTS_RO(pim_ifp->pim_neighbor_list, node, neigh)) {
                for (ALL_LIST_ELEMENTS_RO(neigh->prefix_list, pnode, p)) {
                        if (prefix_same(p, src))
@@ -539,7 +541,7 @@ pim_neighbor_add(struct interface *ifp, struct in_addr source_addr,
           Upon PIM neighbor UP, iterate all RPs and update
           nexthop cache with this neighbor.
         */
-       pim_resolve_rp_nh(pim_ifp->pim);
+       pim_resolve_rp_nh(pim_ifp->pim, neigh);
 
        pim_rp_setup(pim_ifp->pim);
 
@@ -765,7 +767,7 @@ static void delete_from_neigh_addr(struct interface *ifp,
                                                other_neigh_str, ifp->name);
 
                                        listnode_delete(neigh->prefix_list, p);
-                                       prefix_free(p);
+                                       prefix_free(&p);
                                }
                        }
 
@@ -799,7 +801,8 @@ void pim_neighbor_update(struct pim_neighbor *neigh,
 
        if (neigh->prefix_list == addr_list) {
                if (addr_list) {
-                       zlog_err(
+                       flog_err(
+                               EC_LIB_DEVELOPMENT,
                                "%s: internal error: trying to replace same prefix list=%p",
                                __PRETTY_FUNCTION__, (void *)addr_list);
                }