"Source/RP address\n"
"Multicast Group address\n")
{
- struct pim_nexthop_cache *pnc = NULL;
struct prefix nht_p;
int result = 0;
struct in_addr src_addr, grp_addr;
char grp_str[PREFIX_STRLEN];
int idx = 2;
struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
- struct pim_rpf rpf;
if (!vrf)
return CMD_WARNING;
grp.u.prefix4 = grp_addr;
memset(&nexthop, 0, sizeof(nexthop));
- memset(&rpf, 0, sizeof(struct pim_rpf));
- rpf.rpf_addr.family = AF_INET;
- rpf.rpf_addr.prefixlen = IPV4_MAX_BITLEN;
- rpf.rpf_addr.u.prefix4 = vif_source;
-
- pnc = pim_nexthop_cache_find(vrf->info, &rpf);
- if (pnc)
- result = pim_ecmp_nexthop_search(vrf->info, pnc, &nexthop,
- &nht_p, &grp, 0);
- else
- result = pim_ecmp_nexthop_lookup(vrf->info, &nexthop, &nht_p,
- &grp, 0);
+ result = pim_ecmp_nexthop_lookup(vrf->info, &nexthop, &nht_p, &grp, 0);
if (!result) {
vty_out(vty,
return CMD_SUCCESS;
}
-DEFUN (debug_static,
- debug_static_cmd,
- "debug static",
+DEFUN (debug_pim_static,
+ debug_pim_static_cmd,
+ "debug pim static",
DEBUG_STR
+ DEBUG_PIM_STR
DEBUG_STATIC_STR)
{
PIM_DO_DEBUG_STATIC;
return CMD_SUCCESS;
}
-DEFUN (no_debug_static,
- no_debug_static_cmd,
- "no debug static",
+DEFUN (no_debug_pim_static,
+ no_debug_pim_static_cmd,
+ "no debug pim static",
NO_STR
DEBUG_STR
+ DEBUG_PIM_STR
DEBUG_STATIC_STR)
{
PIM_DONT_DEBUG_STATIC;
install_element(ENABLE_NODE, &debug_mroute_detail_cmd);
install_element(ENABLE_NODE, &no_debug_mroute_cmd);
install_element(ENABLE_NODE, &no_debug_mroute_detail_cmd);
- install_element(ENABLE_NODE, &debug_static_cmd);
- install_element(ENABLE_NODE, &no_debug_static_cmd);
+ install_element(ENABLE_NODE, &debug_pim_static_cmd);
+ install_element(ENABLE_NODE, &no_debug_pim_static_cmd);
install_element(ENABLE_NODE, &debug_pim_cmd);
install_element(ENABLE_NODE, &no_debug_pim_cmd);
install_element(ENABLE_NODE, &debug_pim_nht_cmd);
install_element(CONFIG_NODE, &debug_mroute_detail_cmd);
install_element(CONFIG_NODE, &no_debug_mroute_cmd);
install_element(CONFIG_NODE, &no_debug_mroute_detail_cmd);
- install_element(CONFIG_NODE, &debug_static_cmd);
- install_element(CONFIG_NODE, &no_debug_static_cmd);
+ install_element(CONFIG_NODE, &debug_pim_static_cmd);
+ install_element(CONFIG_NODE, &no_debug_pim_static_cmd);
install_element(CONFIG_NODE, &debug_pim_cmd);
install_element(CONFIG_NODE, &no_debug_pim_cmd);
install_element(CONFIG_NODE, &debug_pim_nht_cmd);
}
// AND JoinDesired(S,G) == TRUE
- // FIXME
+ if (!pim_upstream_evaluate_join_desired(up->channel_oil->pim, up)) {
+ if (PIM_DEBUG_TRACE)
+ zlog_debug("%s: %s Join is not Desired",
+ __PRETTY_FUNCTION__, up->sg_str);
+ return;
+ }
// DirectlyConnected(S) == TRUE
if (pim_if_connected_to_source(up->rpf.source_nexthop.interface,
if (!starup
|| up->rpf.source_nexthop
.interface != starup->rpf.source_nexthop.interface) {
+ struct pim_upstream *starup = up->parent;
+
if (PIM_DEBUG_TRACE)
zlog_debug(
"%s: %s RPF_interface(S) != RPF_interface(RP(G))",
__PRETTY_FUNCTION__, up->sg_str);
up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE;
+
+ pim_jp_agg_single_upstream_send(&starup->rpf, starup, true);
return;
}