]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Add new 'debug pim nht rp' command
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 14 Sep 2017 14:28:04 +0000 (10:28 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 14 Sep 2017 15:17:28 +0000 (11:17 -0400)
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 <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c
pimd/pim_rp.c
pimd/pimd.h

index 4a9c53cf2905d13920bc744062303774463d4ef1..ab6212710086f09373ee9a9aabd3e848d3245fbc 100644 (file)
@@ -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);
index e2c411a307bf09a3372cf0470199e32b602d2fa2..851a861a95e9e792602f0e1d89ef1c3178ffeb1e 100644 (file)
@@ -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?>", &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?>", &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("<nht_nbr?>", nbr->source_addr,
index c4431651ed046c0a87b063fd6b6212f595901de0..cd00a2df46b96a61f9a2babd4eb5cdab44340fb0 100644 (file)
 #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);