summaryrefslogtreecommitdiffstats
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2019-11-15 20:12:41 +0100
committerAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2019-11-15 21:00:29 +0100
commit70c86421c9a2c74e2326b9e930c7a32addc8cd88 (patch)
tree6ad824a12a05b283a5ce1dff7cbda2890a43af5c /pimd/pim_upstream.c
parentpimd: set mfcc_parent at the time of MFCC programming (diff)
downloadfrr-70c86421c9a2c74e2326b9e930c7a32addc8cd88.tar.xz
frr-70c86421c9a2c74e2326b9e930c7a32addc8cd88.zip
pimd: update (S,G,rpt)'s IIF when the parent (*,G)'s IIF changes
If a source is being forwarded along the RPT it uses the parent (*,G)'s IIF. When the parent's IIF changes all the children need to be updated Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index ee9fece51..316209c55 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -78,8 +78,13 @@ static void pim_upstream_remove_children(struct pim_instance *pim,
child = pim_upstream_del(pim, child,
__PRETTY_FUNCTION__);
}
- if (child)
+ if (child) {
child->parent = NULL;
+ if (PIM_UPSTREAM_FLAG_TEST_USE_RPT(child->flags))
+ pim_upstream_mroute_iif_update(
+ child->channel_oil,
+ __func__);
+ }
}
list_delete(&up->sources);
}
@@ -109,6 +114,10 @@ static void pim_upstream_find_new_children(struct pim_instance *pim,
&& (child != up)) {
child->parent = up;
listnode_add_sort(up->sources, child);
+ if (PIM_UPSTREAM_FLAG_TEST_USE_RPT(child->flags))
+ pim_upstream_mroute_iif_update(
+ child->channel_oil,
+ __func__);
}
}
}