From: Donald Sharp Date: Thu, 14 Sep 2017 14:28:04 +0000 (-0400) Subject: pimd: Add new 'debug pim nht rp' command X-Git-Tag: frr-4.0-dev~307^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=3d225d48f0c9c79516d3c9b2c5d6edb412c8517b;p=mirror%2Ffrr.git pimd: Add new 'debug pim nht rp' command All the rp debugs were a mish-mash of TRACE or ZEBRA, but the reality they were all focused on handling NHT issues associated with the RP's. So let's create a new debug 'debug pim nht rp' if you are having issues with RP's. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 4a9c53cf29..ab62127100 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -6959,6 +6959,31 @@ DEFUN (no_debug_pim_nht, return CMD_SUCCESS; } +DEFUN (debug_pim_nht_rp, + debug_pim_nht_rp_cmd, + "debug pim nht rp", + DEBUG_STR + DEBUG_PIM_STR + "Nexthop Tracking\n" + "RP Nexthop Tracking\n") +{ + PIM_DO_DEBUG_PIM_NHT_RP; + return CMD_SUCCESS; +} + +DEFUN (no_debug_pim_nht_rp, + no_debug_pim_nht_rp_cmd, + "no debug pim nht rp", + NO_STR + DEBUG_STR + DEBUG_PIM_STR + "Nexthop Tracking\n" + "RP Nexthop Tracking\n") +{ + PIM_DONT_DEBUG_PIM_NHT_RP; + return CMD_SUCCESS; +} + DEFUN (debug_pim_events, debug_pim_events_cmd, "debug pim events", @@ -8628,6 +8653,8 @@ void pim_cmd_init(void) install_element(ENABLE_NODE, &no_debug_pim_cmd); install_element(ENABLE_NODE, &debug_pim_nht_cmd); install_element(ENABLE_NODE, &no_debug_pim_nht_cmd); + install_element(ENABLE_NODE, &debug_pim_nht_rp_cmd); + install_element(ENABLE_NODE, &no_debug_pim_nht_rp_cmd); install_element(ENABLE_NODE, &debug_pim_events_cmd); install_element(ENABLE_NODE, &no_debug_pim_events_cmd); install_element(ENABLE_NODE, &debug_pim_packets_cmd); @@ -8672,6 +8699,8 @@ void pim_cmd_init(void) install_element(CONFIG_NODE, &no_debug_pim_cmd); install_element(CONFIG_NODE, &debug_pim_nht_cmd); install_element(CONFIG_NODE, &no_debug_pim_nht_cmd); + install_element(CONFIG_NODE, &debug_pim_nht_rp_cmd); + install_element(CONFIG_NODE, &no_debug_pim_nht_rp_cmd); install_element(CONFIG_NODE, &debug_pim_events_cmd); install_element(CONFIG_NODE, &no_debug_pim_events_cmd); install_element(CONFIG_NODE, &debug_pim_packets_cmd); diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index e2c411a307..851a861a95 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -397,7 +397,7 @@ int pim_rp_new(struct pim_instance *pim, const char *rp, nht_p.prefixlen = IPV4_MAX_BITLEN; nht_p.u.prefix4 = rp_all->rp.rpf_addr.u.prefix4; // RP address - if (PIM_DEBUG_PIM_TRACE) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; char buf1[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); @@ -467,7 +467,7 @@ int pim_rp_new(struct pim_instance *pim, const char *rp, nht_p.family = AF_INET; nht_p.prefixlen = IPV4_MAX_BITLEN; nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4; - if (PIM_DEBUG_PIM_TRACE) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; char buf1[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); @@ -534,7 +534,7 @@ int pim_rp_del(struct pim_instance *pim, const char *rp, nht_p.family = AF_INET; nht_p.prefixlen = IPV4_MAX_BITLEN; nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4; - if (PIM_DEBUG_PIM_TRACE) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); zlog_debug("%s: Deregister RP addr %s with Zebra ", @@ -579,7 +579,7 @@ void pim_rp_setup(struct pim_instance *pim) &rp_info->rp.source_nexthop, &nht_p, &rp_info->group, 1); else { - if (PIM_DEBUG_ZEBRA) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); zlog_debug( @@ -589,7 +589,7 @@ void pim_rp_setup(struct pim_instance *pim) if (!pim_nexthop_lookup( pim, &rp_info->rp.source_nexthop, rp_info->rp.rpf_addr.u.prefix4, 1)) - if (PIM_DEBUG_PIM_TRACE) + if (PIM_DEBUG_PIM_NHT_RP) zlog_debug( "Unable to lookup nexthop for rp specified"); } @@ -624,7 +624,7 @@ void pim_rp_check_on_if_add(struct pim_interface *pim_ifp) if (pim_rp_check_interface_addrs(rp_info, pim_ifp)) { i_am_rp_changed = true; rp_info->i_am_rp = 1; - if (PIM_DEBUG_ZEBRA) { + if (PIM_DEBUG_PIM_NHT_RP) { char rp[PREFIX_STRLEN]; pim_addr_dump("", &rp_info->rp.rpf_addr, rp, sizeof(rp)); @@ -660,7 +660,7 @@ void pim_i_am_rp_re_evaluate(struct pim_instance *pim) if (old_i_am_rp != rp_info->i_am_rp) { i_am_rp_changed = true; - if (PIM_DEBUG_ZEBRA) { + if (PIM_DEBUG_PIM_NHT_RP) { char rp[PREFIX_STRLEN]; pim_addr_dump("", &rp_info->rp.rpf_addr, rp, sizeof(rp)); @@ -728,7 +728,7 @@ struct pim_rpf *pim_rp_g(struct pim_instance *pim, struct in_addr group) nht_p.family = AF_INET; nht_p.prefixlen = IPV4_MAX_BITLEN; nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4; - if (PIM_DEBUG_PIM_TRACE) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; char buf1[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); @@ -743,7 +743,7 @@ struct pim_rpf *pim_rp_g(struct pim_instance *pim, struct in_addr group) &rp_info->rp.source_nexthop, &nht_p, &rp_info->group, 1); else { - if (PIM_DEBUG_ZEBRA) { + if (PIM_DEBUG_PIM_NHT_RP) { char buf[PREFIX2STR_BUFFER]; char buf1[PREFIX2STR_BUFFER]; prefix2str(&nht_p, buf, sizeof(buf)); @@ -786,7 +786,7 @@ int pim_rp_set_upstream_addr(struct pim_instance *pim, struct in_addr *up, if ((pim_rpf_addr_is_inaddr_none(&rp_info->rp)) && (source.s_addr == INADDR_ANY)) { - if (PIM_DEBUG_PIM_TRACE) + if (PIM_DEBUG_PIM_NHT_RP) zlog_debug("%s: Received a (*,G) with no RP configured", __PRETTY_FUNCTION__); return 0; @@ -998,7 +998,7 @@ void pim_resolve_rp_nh(struct pim_instance *pim) continue; nh_node->gate.ipv4 = nbr->source_addr; - if (PIM_DEBUG_TRACE) { + if (PIM_DEBUG_PIM_NHT_RP) { char str[PREFIX_STRLEN]; char str1[INET_ADDRSTRLEN]; pim_inet4_dump("", nbr->source_addr, diff --git a/pimd/pimd.h b/pimd/pimd.h index c4431651ed..cd00a2df46 100644 --- a/pimd/pimd.h +++ b/pimd/pimd.h @@ -111,6 +111,8 @@ #define PIM_MASK_MSDP_INTERNAL (1 << 21) #define PIM_MASK_PIM_NHT (1 << 22) #define PIM_MASK_PIM_NHT_DETAIL (1 << 23) +#define PIM_MASK_PIM_NHT_RP (1 << 24) +/* Remember 32 bits!!! */ /* PIM error codes */ #define PIM_SUCCESS 0 @@ -185,6 +187,7 @@ extern int32_t qpim_register_probe_time; #define PIM_DEBUG_MSDP_INTERNAL (qpim_debugs & PIM_MASK_MSDP_INTERNAL) #define PIM_DEBUG_PIM_NHT (qpim_debugs & PIM_MASK_PIM_NHT) #define PIM_DEBUG_PIM_NHT_DETAIL (qpim_debugs & PIM_MASK_PIM_NHT_DETAIL) +#define PIM_DEBUG_PIM_NHT_RP (qpim_debugs & PIM_MASK_PIM_NHT_RP) #define PIM_DEBUG_EVENTS (qpim_debugs & (PIM_MASK_PIM_EVENTS | PIM_MASK_IGMP_EVENTS | PIM_MASK_MSDP_EVENTS)) #define PIM_DEBUG_PACKETS (qpim_debugs & (PIM_MASK_PIM_PACKETS | PIM_MASK_IGMP_PACKETS | PIM_MASK_MSDP_PACKETS)) @@ -212,6 +215,7 @@ extern int32_t qpim_register_probe_time; #define PIM_DO_DEBUG_MSDP_PACKETS (qpim_debugs |= PIM_MASK_MSDP_PACKETS) #define PIM_DO_DEBUG_MSDP_INTERNAL (qpim_debugs |= PIM_MASK_MSDP_INTERNAL) #define PIM_DO_DEBUG_PIM_NHT (qpim_debugs |= PIM_MASK_PIM_NHT) +#define PIM_DO_DEBUG_PIM_NHT_RP (qpim_debugs |= PIM_MASK_PIM_NHT_RP) #define PIM_DONT_DEBUG_PIM_EVENTS (qpim_debugs &= ~PIM_MASK_PIM_EVENTS) #define PIM_DONT_DEBUG_PIM_PACKETS (qpim_debugs &= ~PIM_MASK_PIM_PACKETS) @@ -235,6 +239,7 @@ extern int32_t qpim_register_probe_time; #define PIM_DONT_DEBUG_MSDP_PACKETS (qpim_debugs &= ~PIM_MASK_MSDP_PACKETS) #define PIM_DONT_DEBUG_MSDP_INTERNAL (qpim_debugs &= ~PIM_MASK_MSDP_INTERNAL) #define PIM_DONT_DEBUG_PIM_NHT (qpim_debugs &= ~PIM_MASK_PIM_NHT) +#define PIM_DONT_DEBUG_PIM_NHT_RP (qpim_debugs &= ~PIM_MASK_PIM_NHT_RP) void pim_init(void); void pim_terminate(void);