grp.u.prefix4 = grp_addr;
memset(&nexthop, 0, sizeof(nexthop));
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL, &pnc))
pim_ecmp_nexthop_search(&pnc, &nexthop, &nht_p, &grp, 0);
else
pim_ecmp_nexthop_lookup(&nexthop, vif_source, &nht_p, &grp, 0);
* 1 -> Success
* 0 -> Failure
*/
-int pim_find_or_track_nexthop(struct prefix *addr, struct pim_upstream *up,
- struct rp_info *rp,
+int pim_find_or_track_nexthop(struct pim_instance *pim, struct prefix *addr,
+ struct pim_upstream *up, struct rp_info *rp,
struct pim_nexthop_cache *out_pnc)
{
struct pim_nexthop_cache *pnc = NULL;
rpf.rpf_addr.prefixlen = addr->prefixlen;
rpf.rpf_addr.u.prefix4 = addr->u.prefix4;
- pnc = pim_nexthop_cache_find(pimg, &rpf);
+ pnc = pim_nexthop_cache_find(pim, &rpf);
if (!pnc) {
- pnc = pim_nexthop_cache_add(pimg, &rpf);
+ pnc = pim_nexthop_cache_add(pim, &rpf);
if (pnc)
pim_sendmsg_zebra_rnh(zclient, pnc,
ZEBRA_NEXTHOP_REGISTER);
struct pim_neighbor *nbr = NULL;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (!pim_find_or_track_nexthop(nht_p, NULL, NULL, &pnc))
+ if (!pim_find_or_track_nexthop(pimg, nht_p, NULL, NULL, &pnc))
return;
for (nh_node = pnc.nexthop; nh_node; nh_node = nh_node->next) {
int pim_parse_nexthop_update(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id);
-int pim_find_or_track_nexthop(struct prefix *addr, struct pim_upstream *up,
- struct rp_info *rp,
+int pim_find_or_track_nexthop(struct pim_instance *pim, struct prefix *addr,
+ struct pim_upstream *up, struct rp_info *rp,
struct pim_nexthop_cache *out_pnc);
void pim_delete_tracked_nexthop(struct pim_instance *pim, struct prefix *addr,
struct pim_upstream *up, struct rp_info *rp);
__PRETTY_FUNCTION__, buf, buf1);
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_all,
- &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL,
+ rp_all, &pnc)) {
if (!pim_ecmp_nexthop_search(
&pnc, &rp_all->rp.source_nexthop,
&nht_p, &rp_all->group, 1))
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info, &pnc)) {
if (!pim_ecmp_nexthop_search(&pnc, &rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1))
return PIM_RP_NO_PATH;
nht_p.prefixlen = IPV4_MAX_BITLEN;
nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
pim_ecmp_nexthop_search(&pnc,
&rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1);
__PRETTY_FUNCTION__, buf, buf1);
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
pim_ecmp_nexthop_search(&pnc,
&rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1);
nht_p.prefixlen = IPV4_MAX_BITLEN;
nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (!pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (!pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
continue;
for (nh_node = pnc.nexthop; nh_node; nh_node = nh_node->next) {
grp.prefixlen = IPV4_MAX_BITLEN;
grp.u.prefix4 = up->sg.grp;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, up, NULL, &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, up, NULL, &pnc)) {
if (pnc.nexthop_num) {
if (!pim_ecmp_nexthop_search(
&pnc, &up->rpf.source_nexthop, &src, &grp,
grp.prefixlen = IPV4_MAX_BITLEN;
grp.u.prefix4 = sg.grp;
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &out_pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL,
+ &out_pnc)) {
if (out_pnc.nexthop_num) {
up = pim_upstream_find(&sg);
memset(&nexthop, 0, sizeof(nexthop));
grp.u.prefix4 = up->sg.grp;
memset(&out_pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &out_pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL,
+ &out_pnc)) {
if (out_pnc.nexthop_num) {
src.family = AF_INET;
src.prefixlen = IPV4_MAX_BITLEN;