diff options
Diffstat (limited to 'pimd/pim_rp.c')
| -rw-r--r-- | pimd/pim_rp.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 1dd5dae303..cdc760e92d 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -281,7 +281,7 @@ pim_rp_check_interfaces (struct rp_info *rp_info) int pim_rp_new (const char *rp, const char *group_range, const char *plist) { - int result, ret = 0; + int result = 0; struct rp_info *rp_info; struct rp_info *rp_all; struct prefix group_all; @@ -400,12 +400,12 @@ pim_rp_new (const char *rp, const char *group_range, const char *plist) __PRETTY_FUNCTION__, buf, buf1); } memset (&pnc, 0, sizeof (struct pim_nexthop_cache)); - if ((ret = - pim_find_or_track_nexthop (&nht_p, NULL, rp_all, &pnc)) == 1) + if ((pim_find_or_track_nexthop (&nht_p, NULL, rp_all, &pnc)) == 1) { //Compute PIM RPF using Cached nexthop - pim_ecmp_nexthop_search (&pnc, &rp_all->rp.source_nexthop, - &nht_p, &rp_all->group, 1); + if ((pim_ecmp_nexthop_search (&pnc, &rp_all->rp.source_nexthop, + &nht_p, &rp_all->group, 1)) != 0) + return PIM_RP_NO_PATH; } else { @@ -471,11 +471,12 @@ pim_rp_new (const char *rp, const char *group_range, const char *plist) } memset (&pnc, 0, sizeof (struct pim_nexthop_cache)); - if ((ret = pim_find_or_track_nexthop (&nht_p, NULL, rp_info, &pnc)) == 1) + if ((pim_find_or_track_nexthop (&nht_p, NULL, rp_info, &pnc)) == 1) { //Compute PIM RPF using Cached nexthop - pim_ecmp_nexthop_search (&pnc, &rp_info->rp.source_nexthop, - &nht_p, &rp_info->group, 1); + if (pim_ecmp_nexthop_search (&pnc, &rp_info->rp.source_nexthop, + &nht_p, &rp_info->group, 1) != 0) + return PIM_RP_NO_PATH; } else { @@ -575,8 +576,9 @@ pim_rp_setup (void) if ((pim_find_or_track_nexthop (&nht_p, NULL, rp_info, &pnc)) == 1) { //Compute PIM RPF using Cached nexthop - pim_ecmp_nexthop_search (&pnc, &rp_info->rp.source_nexthop, - &nht_p, &rp_info->group, 1); + if ((pim_ecmp_nexthop_search (&pnc, &rp_info->rp.source_nexthop, + &nht_p, &rp_info->group, 1)) != 0) + ret++; } else { @@ -727,7 +729,6 @@ pim_rp_g (struct in_addr group) if (rp_info) { - int ret = 0; struct prefix nht_p; struct pim_nexthop_cache pnc; /* Register addr with Zebra NHT */ @@ -740,11 +741,11 @@ pim_rp_g (struct in_addr group) char buf1[PREFIX2STR_BUFFER]; prefix2str (&nht_p, buf, sizeof (buf)); prefix2str (&rp_info->group, buf1, sizeof (buf1)); - zlog_debug ("%s: NHT Register RP addr %s grp %s with Zebra ", + zlog_debug ("%s: NHT Register RP addr %s grp %s with Zebra", __PRETTY_FUNCTION__, buf, buf1); } memset (&pnc, 0, sizeof (struct pim_nexthop_cache)); - if ((ret = pim_find_or_track_nexthop (&nht_p, NULL, rp_info, &pnc)) == 1) + if ((pim_find_or_track_nexthop (&nht_p, NULL, rp_info, &pnc)) == 1) { //Compute PIM RPF using Cached nexthop pim_ecmp_nexthop_search (&pnc, &rp_info->rp.source_nexthop, @@ -758,7 +759,7 @@ pim_rp_g (struct in_addr group) char buf1[PREFIX2STR_BUFFER]; prefix2str (&nht_p, buf, sizeof (buf)); prefix2str (&g, buf1, sizeof (buf1)); - zlog_debug ("%s: NHT nexthop cache not found for RP %s grp %s", + zlog_debug ("%s: Nexthop cache not found for RP %s grp %s register with Zebra", __PRETTY_FUNCTION__, buf, buf1); } pim_rpf_set_refresh_time (); @@ -971,8 +972,7 @@ pim_resolve_rp_nh (void) { if (nh_node->gate.ipv4.s_addr == 0) { - nbr = - pim_neighbor_find_if (if_lookup_by_index + nbr = pim_neighbor_find_if (if_lookup_by_index (nh_node->ifindex, VRF_DEFAULT)); if (nbr) { @@ -981,14 +981,15 @@ pim_resolve_rp_nh (void) { char str[PREFIX_STRLEN]; char str1[INET_ADDRSTRLEN]; + struct interface *ifp1 = if_lookup_by_index(nh_node->ifindex, + VRF_DEFAULT); pim_inet4_dump ("<nht_nbr?>", nbr->source_addr, str1, sizeof (str1)); pim_addr_dump ("<nht_addr?>", &nht_p, str, sizeof (str)); - zlog_debug - ("%s: addr %s new nexthop addr %s ifindex %d ", + zlog_debug ("%s: addr %s new nexthop addr %s interface %s", __PRETTY_FUNCTION__, str, str1, - nh_node->ifindex); + ifp1->name); } } } |
