From: Donald Sharp Date: Sun, 21 May 2017 13:03:07 +0000 (-0400) Subject: pimd: Make zlookup 'struct pim_instance' aware X-Git-Tag: frr-4.0-dev~468^2~106 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=71edad0fd50889e08e78c7134ff5108b4190f42a;p=mirror%2Ffrr.git pimd: Make zlookup 'struct pim_instance' aware Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 1cc5e78da7..13f41458c5 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -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_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]; diff --git a/pimd/pim_rpf.c b/pimd/pim_rpf.c index c5b9f75244..1ee1e17106 100644 --- a/pimd/pim_rpf.c +++ b/pimd/pim_rpf.c @@ -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_str, sizeof(addr_str)); diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index 26d0dffe73..5cfa1357a0 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -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); diff --git a/pimd/pim_zlookup.h b/pimd/pim_zlookup.h index d168464ce5..f8a2d59f68 100644 --- a/pimd/pim_zlookup.h +++ b/pimd/pim_zlookup.h @@ -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);