summaryrefslogtreecommitdiff
path: root/pimd/pim_mroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_mroute.c')
-rw-r--r--pimd/pim_mroute.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 7f657fae3a..c77f312c98 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -214,18 +214,20 @@ static int pim_mroute_msg_wholepkt(int fd, struct interface *ifp,
const struct ip *ip_hdr;
struct pim_upstream *up;
+ pim_ifp = ifp->info;
+
ip_hdr = (const struct ip *)buf;
memset(&sg, 0, sizeof(struct prefix_sg));
sg.src = ip_hdr->ip_src;
sg.grp = ip_hdr->ip_dst;
- up = pim_upstream_find(&sg);
+ up = pim_upstream_find(pim_ifp->pim, &sg);
if (!up) {
struct prefix_sg star = sg;
star.src.s_addr = INADDR_ANY;
- up = pim_upstream_find(&star);
+ up = pim_upstream_find(pim_ifp->pim, &star);
if (up && PIM_UPSTREAM_FLAG_TEST_SRC_IGMP(up->flags)) {
up = pim_upstream_add(&sg, ifp,
@@ -241,7 +243,7 @@ static int pim_mroute_msg_wholepkt(int fd, struct interface *ifp,
}
pim_upstream_keep_alive_timer_start(
up, qpim_keep_alive_time);
- pim_upstream_inherited_olist(up);
+ pim_upstream_inherited_olist(pim_ifp->pim, up);
pim_upstream_switch(up, PIM_UPSTREAM_JOINED);
if (PIM_DEBUG_MROUTE)
@@ -433,7 +435,7 @@ static int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp,
}
#endif
- up = pim_upstream_find(&sg);
+ up = pim_upstream_find(pim_ifp->pim, &sg);
if (up) {
struct pim_upstream *parent;
struct pim_nexthop source;
@@ -447,7 +449,7 @@ static int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp,
* tree, let's check and if so we can safely drop
* it.
*/
- parent = pim_upstream_find(&star_g);
+ parent = pim_upstream_find(pim_ifp->pim, &star_g);
if (parent && parent->rpf.source_nexthop.interface == ifp)
return 0;
@@ -469,7 +471,7 @@ static int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp,
if (!up->channel_oil)
up->channel_oil = pim_channel_oil_add(
&sg, pim_ifp->mroute_vif_index);
- pim_upstream_inherited_olist(up);
+ pim_upstream_inherited_olist(pim_ifp->pim, up);
if (!up->channel_oil->installed)
pim_mroute_add(up->channel_oil,
__PRETTY_FUNCTION__);
@@ -487,7 +489,7 @@ static int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp,
}
pim_upstream_keep_alive_timer_start(
up, qpim_keep_alive_time);
- pim_upstream_inherited_olist(up);
+ pim_upstream_inherited_olist(pim_ifp->pim, up);
pim_mroute_msg_wholepkt(fd, ifp, buf);
}
return 0;
@@ -512,7 +514,7 @@ static int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp,
up->channel_oil = oil;
up->channel_oil->cc.pktcnt++;
pim_register_join(up);
- pim_upstream_inherited_olist(up);
+ pim_upstream_inherited_olist(pim_ifp->pim, up);
// Send the packet to the RP
pim_mroute_msg_wholepkt(fd, ifp, buf);