mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-03 00:51:52 +00:00
pimd: Modify pim_upstream_new behavior
Modify pim_usptream_new to auto create the pim channel oil. Why? Because there exists situations where we have upstream state and we are attempting to set the inherited_olist on it and we have not created the channel oil yet. When that happens we end up with mroutes that are being meanies. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
ee1a071806
commit
07335c8d08
@ -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();
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user