summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_cmd.c5
-rw-r--r--pimd/pim_upstream.c14
2 files changed, 14 insertions, 5 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 60893c8c10..53bae4d5fd 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -2909,7 +2909,7 @@ static void show_mroute(struct vty *vty, u_char uj)
struct interface *ifp_in;
found_oif = 0;
first = 1;
- if (!c_oil->installed)
+ if (!c_oil->installed && !uj)
continue;
pim_inet4_dump("<group?>", c_oil->oil.mfcc_mcastgrp, grp_str, sizeof(grp_str));
@@ -2941,6 +2941,9 @@ static void show_mroute(struct vty *vty, u_char uj)
/* Find the inbound interface nested under the source, create it if it doesn't exist */
json_object_object_get_ex(json_source, in_ifname, &json_ifp_in);
+ json_object_int_add(json_source, "installed", c_oil->installed);
+ json_object_int_add(json_source, "refCount", c_oil->oil_ref_count);
+ json_object_int_add(json_source, "oilSize", c_oil->oil_size);
if (!json_ifp_in) {
json_ifp_in = json_object_new_object();
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 2b76cb9172..14508ad184 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -519,12 +519,14 @@ pim_upstream_compare (void *arg1, void *arg2)
return 0;
}
-static struct pim_upstream *pim_upstream_new(struct prefix_sg *sg,
- struct interface *incoming,
- int flags)
+static struct pim_upstream *
+pim_upstream_new (struct prefix_sg *sg,
+ struct interface *incoming,
+ int flags)
{
- struct pim_upstream *up;
enum pim_rpf_result rpf_result;
+ struct pim_interface *pim_ifp;
+ struct pim_upstream *up;
up = XCALLOC(MTYPE_PIM_UPSTREAM, sizeof(*up));
if (!up) {
@@ -602,6 +604,10 @@ static struct pim_upstream *pim_upstream_new(struct prefix_sg *sg,
return NULL;
}
+ pim_ifp = up->rpf.source_nexthop.interface->info;
+ if (pim_ifp)
+ up->channel_oil = pim_channel_oil_add(&up->sg, pim_ifp->mroute_vif_index);
+
listnode_add_sort(pim_upstream_list, up);
if (PIM_DEBUG_TRACE)