diff options
author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-11-15 20:12:41 +0100 |
---|---|---|
committer | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-11-15 21:00:29 +0100 |
commit | 70c86421c9a2c74e2326b9e930c7a32addc8cd88 (patch) | |
tree | 6ad824a12a05b283a5ce1dff7cbda2890a43af5c /pimd/pim_upstream.c | |
parent | pimd: set mfcc_parent at the time of MFCC programming (diff) | |
download | frr-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.c | 11 |
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__); } } } |