summaryrefslogtreecommitdiff
path: root/pimd/pim_vxlan.c
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@nvidia.com>2021-11-04 19:00:35 -0700
committerAnuradha Karuppiah <anuradhak@nvidia.com>2021-11-09 10:31:46 -0800
commit6b74db7544b3570ea7e2a5c0608755702cdce394 (patch)
tree0c9514a31e1bcb4d9aaa930eb7f2c517e224f631 /pimd/pim_vxlan.c
parent34e5d7e884d658dd9c7f689d111dd33243a8571c (diff)
pimd: handle vxlan sg add/del for upstream entries that are in a reg-join state
pim-vxlan uses periodic null registers to bootstrap a new (VTEP, mcast-grp). These null registers were not being sent if the (S, G) was already present and in a register-join state. Ticket: #2848079 Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Diffstat (limited to 'pimd/pim_vxlan.c')
-rw-r--r--pimd/pim_vxlan.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/pimd/pim_vxlan.c b/pimd/pim_vxlan.c
index 5d5ea1bfe6..22b14eecf9 100644
--- a/pimd/pim_vxlan.c
+++ b/pimd/pim_vxlan.c
@@ -390,9 +390,23 @@ static void pim_vxlan_orig_mr_up_add(struct pim_vxlan_sg *vxlan_sg)
pim_upstream_keep_alive_timer_start(up, vxlan_sg->pim->keep_alive_time);
/* register the source with the RP */
- if (up->reg_state == PIM_REG_NOINFO) {
+ switch (up->reg_state) {
+
+ case PIM_REG_NOINFO:
pim_register_join(up);
pim_null_register_send(up);
+ break;
+
+ case PIM_REG_JOIN:
+ /* if the pim upstream entry is already in reg-join state
+ * send null_register right away and add to the register
+ * worklist
+ */
+ pim_null_register_send(up);
+ pim_vxlan_update_sg_reg_state(pim, up, true);
+ break;
+
+ default:;
}
/* update the inherited OIL */