]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Make zlookup 'struct pim_instance' aware
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 21 May 2017 13:03:07 +0000 (09:03 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:36 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_nht.c
pimd/pim_rpf.c
pimd/pim_zlookup.c
pimd/pim_zlookup.h

index 1cc5e78da7cbd973dd9a3ba3680ae8a8a441ea0f..13f41458c5b05687298c07154d8ae545c90d13b4 100644 (file)
@@ -901,8 +901,8 @@ int pim_ecmp_nexthop_lookup(struct pim_instance *pim,
 
        memset(nexthop_tab, 0,
               sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
-       num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
-                                            PIM_NEXTHOP_LOOKUP_MAX);
+       num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
+                                            addr, PIM_NEXTHOP_LOOKUP_MAX);
        if (num_ifindex < 1) {
                char addr_str[INET_ADDRSTRLEN];
                pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
@@ -1030,8 +1030,8 @@ int pim_ecmp_fib_lookup_if_vif_index(struct pim_instance *pim,
 
        memset(nexthop_tab, 0,
               sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
-       num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
-                                            PIM_NEXTHOP_LOOKUP_MAX);
+       num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
+                                            addr, PIM_NEXTHOP_LOOKUP_MAX);
        if (num_ifindex < 1) {
                if (PIM_DEBUG_ZEBRA) {
                        char addr_str[INET_ADDRSTRLEN];
index c5b9f7524484b6b124fdc0ff4e7298c80904ab6f..1ee1e171060633568e9b95cddbf22b8f07aadd37 100644 (file)
@@ -92,8 +92,8 @@ int pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop *nexthop,
 
        memset(nexthop_tab, 0,
               sizeof(struct pim_zlookup_nexthop) * MULTIPATH_NUM);
-       num_ifindex = zclient_lookup_nexthop(nexthop_tab, MULTIPATH_NUM, addr,
-                                            PIM_NEXTHOP_LOOKUP_MAX);
+       num_ifindex = zclient_lookup_nexthop(pim, nexthop_tab, MULTIPATH_NUM,
+                                            addr, PIM_NEXTHOP_LOOKUP_MAX);
        if (num_ifindex < 1) {
                char addr_str[INET_ADDRSTRLEN];
                pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
index 26d0dffe73a320f5c038d644f1a8c38b39c6bf7a..5cfa1357a07734762900e5ca0f364920f8161c57 100644 (file)
@@ -135,7 +135,8 @@ void zclient_lookup_new(void)
                    __PRETTY_FUNCTION__);
 }
 
-static int zclient_read_nexthop(struct zclient *zlookup,
+static int zclient_read_nexthop(struct pim_instance *pim,
+                               struct zclient *zlookup,
                                struct pim_zlookup_nexthop nexthop_tab[],
                                const int tab_size, struct in_addr addr)
 {
@@ -256,17 +257,17 @@ static int zclient_read_nexthop(struct zclient *zlookup,
                         * If we are sending v6 secondary assume we receive v6
                         * secondary
                         */
-                       if (pimg->send_v6_secondary)
+                       if (pim->send_v6_secondary)
                                nbr = pim_neighbor_find_by_secondary(
                                        if_lookup_by_index(
                                                nexthop_tab[num_ifindex]
                                                        .ifindex,
-                                               pimg->vrf_id),
+                                               vrf_id),
                                        &p);
                        else
                                nbr = pim_neighbor_find_if(if_lookup_by_index(
                                        nexthop_tab[num_ifindex].ifindex,
-                                       pimg->vrf_id));
+                                       vrf_id));
                        if (nbr) {
                                nexthop_tab[num_ifindex].nexthop_addr.family =
                                        AF_INET;
@@ -294,7 +295,8 @@ static int zclient_read_nexthop(struct zclient *zlookup,
        return num_ifindex;
 }
 
-static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
+static int zclient_lookup_nexthop_once(struct pim_instance *pim,
+                                      struct pim_zlookup_nexthop nexthop_tab[],
                                       const int tab_size, struct in_addr addr)
 {
        struct stream *s;
@@ -316,7 +318,7 @@ static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
 
        s = zlookup->obuf;
        stream_reset(s);
-       zclient_create_header(s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, pimg->vrf_id);
+       zclient_create_header(s, ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB, pim->vrf_id);
        stream_put_in_addr(s, &addr);
        stream_putw_at(s, 0, stream_get_endp(s));
 
@@ -335,10 +337,11 @@ static int zclient_lookup_nexthop_once(struct pim_zlookup_nexthop nexthop_tab[],
                return -3;
        }
 
-       return zclient_read_nexthop(zlookup, nexthop_tab, tab_size, addr);
+       return zclient_read_nexthop(pim, zlookup, nexthop_tab, tab_size, addr);
 }
 
-int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
+int zclient_lookup_nexthop(struct pim_instance *pim,
+                          struct pim_zlookup_nexthop nexthop_tab[],
                           const int tab_size, struct in_addr addr,
                           int max_lookup)
 {
@@ -353,8 +356,8 @@ int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
                int first_ifindex;
                struct prefix nexthop_addr;
 
-               num_ifindex = zclient_lookup_nexthop_once(nexthop_tab, tab_size,
-                                                         addr);
+               num_ifindex = zclient_lookup_nexthop_once(pim, nexthop_tab,
+                                                         tab_size, addr);
                if (num_ifindex < 1) {
                        if (PIM_DEBUG_ZEBRA) {
                                char addr_str[INET_ADDRSTRLEN];
@@ -488,7 +491,7 @@ int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
                return -1;
 
        stream_reset(s);
-       zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS, pimg->vrf_id);
+       zclient_create_header(s, ZEBRA_IPMR_ROUTE_STATS, c_oil->pim->vrf_id);
        stream_put_in_addr(s, &c_oil->oil.mfcc_origin);
        stream_put_in_addr(s, &c_oil->oil.mfcc_mcastgrp);
        stream_putl(s, ifp->ifindex);
index d168464ce5610c373e18f6e627950a95acdfca59..f8a2d59f68ea125252fe4554b6814455dd08eea4 100644 (file)
@@ -36,7 +36,8 @@ struct pim_zlookup_nexthop {
 void zclient_lookup_new(void);
 void zclient_lookup_free(void);
 
-int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[],
+int zclient_lookup_nexthop(struct pim_instance *pim,
+                          struct pim_zlookup_nexthop nexthop_tab[],
                           const int tab_size, struct in_addr addr,
                           int max_lookup);