diff options
| author | Anuradha Karuppiah <anuradhak@nvidia.com> | 2021-11-04 19:00:35 -0700 | 
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2021-11-09 10:31:46 -0800 | 
| commit | 6b74db7544b3570ea7e2a5c0608755702cdce394 (patch) | |
| tree | 0c9514a31e1bcb4d9aaa930eb7f2c517e224f631 /pimd/pim_vxlan.c | |
| parent | 34e5d7e884d658dd9c7f689d111dd33243a8571c (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.c | 16 | 
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 */  | 
