]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Handling dummy upstream in "show ip pim upstream"
authorSarita Patra <saritap@vmware.com>
Fri, 22 Feb 2019 09:47:58 +0000 (01:47 -0800)
committerSarita Patra <saritap@vmware.com>
Sun, 24 Feb 2019 17:38:03 +0000 (09:38 -0800)
When FRR receives IGMP/PIM (*, G) join and RP is not configured or
not reachable, then we are creating a dummy upstream with incoming
interface as NULL.
Added some null checks for the incoming interface, while displaying
the pim upstream information in the cli command "show ip pim upstream".

Signed-off-by: Sarita Patra <saritap@vmware.com>
pimd/pim_cmd.c

index 193eddf68a72849be314fed02db13f229306e4df..2d4c237d0fc7f01fc43663539f3f002e4852d73b 100644 (file)
@@ -2370,9 +2370,10 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
                                         up->t_join_timer);
 
                /*
-                * If we have a J/P timer for the neighbor display that
+                * If the upstream is not dummy and it has a J/P timer for the
+                * neighbor display that
                 */
-               if (!up->t_join_timer) {
+               if (!up->t_join_timer && up->rpf.source_nexthop.interface) {
                        struct pim_neighbor *nbr;
 
                        nbr = pim_neighbor_find(
@@ -2412,8 +2413,10 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
                        json_row = json_object_new_object();
                        json_object_pim_upstream_add(json_row, up);
                        json_object_string_add(
-                               json_row, "inboundInterface",
-                               up->rpf.source_nexthop.interface->name);
+                           json_row, "inboundInterface",
+                           up->rpf.source_nexthop.interface
+                               ? up->rpf.source_nexthop.interface->name
+                               : "Unknown");
 
                        /*
                         * The RPF address we use is slightly different
@@ -2463,8 +2466,10 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty,
                } else {
                        vty_out(vty,
                                "%-10s%-15s %-15s %-11s %-8s %-9s %-9s %-9s %6d\n",
-                               up->rpf.source_nexthop.interface->name, src_str,
-                               grp_str, state_str, uptime, join_timer,
+                               up->rpf.source_nexthop.interface
+                                   ? up->rpf.source_nexthop.interface->name
+                                   : "Unknown",
+                               src_str, grp_str, state_str, uptime, join_timer,
                                rs_timer, ka_timer, up->ref_count);
                }
        }