summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2021-12-04 06:36:03 -0500
committerGitHub <noreply@github.com>2021-12-04 06:36:03 -0500
commitc400ebde1c04fef51b7645508013ed611eab93a7 (patch)
tree2ff54220b5ba2e4f9c1f36b0a81076f1379b8183
parent9c8523e089e97d83a7487f6eee093b73f7b49bd9 (diff)
parent7f5faf7c765e9ddc0a9c9344be23b9134ddb45ca (diff)
Merge pull request #10017 from AnuradhaKaruppiah/evpn-pim-register
pimd: handle vxlan sg add/del for upstream entries that are in a reg-join state
-rw-r--r--pimd/pim_vxlan.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/pimd/pim_vxlan.c b/pimd/pim_vxlan.c
index 4c8a96a84e..edd41bc44d 100644
--- a/pimd/pim_vxlan.c
+++ b/pimd/pim_vxlan.c
@@ -390,9 +390,25 @@ 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;
+
+ case PIM_REG_JOIN_PENDING:
+ case PIM_REG_PRUNE:
+ break;
}
/* update the inherited OIL */