diff options
Diffstat (limited to 'pimd/pim_mroute.c')
| -rw-r--r-- | pimd/pim_mroute.c | 18 |
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); |
