]> git.puffer.fish Git - mirror/frr.git/commit
pimd: ensure that the oif is removed from all the mroutes pre-vifi deletion
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>
Tue, 7 May 2019 19:02:43 +0000 (12:02 -0700)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 22 Jun 2019 18:02:14 +0000 (14:02 -0400)
commit356580224728ed0e626f937c923a2a3300816521
tree8095328316a6d6638c0fbcb647788cd8e5f540b2
parenta12bb225a6681b7e7eb0aac105cbc8b745675131
pimd: ensure that the oif is removed from all the mroutes pre-vifi deletion

When a link goes down the vifi was being deleted but the OIF stayed
in the OIL with a stale vifi -
oroot@act-7726-03:~# net show pim state
Codes: J -> Pim Join, I -> IGMP Report, S -> Source, * -> Inherited from (*,G), V -> VxLAN
Installed Source           Group            IIF               OIL
1         *                239.1.1.111      swp1s1            pimreg(I    ), ipmr-lo( J   )
1         6.0.0.28         239.1.1.111      lo                pimreg( J   ), ipmr-lo(    *), swp1s1( J   )
root@act-7726-03:~# ip link set swp1s1 down
root@act-7726-03:~# net show pim state
Codes: J -> Pim Join, I -> IGMP Report, S -> Source, * -> Inherited from (*,G), V -> VxLAN
Installed Source           Group            IIF               OIL
1         *                239.1.1.111      swp1s0            pimreg(I    ), ipmr-lo( J   )
1         6.0.0.28         239.1.1.111      lo                ipmr-lo(    *), swp1s0( J   ), <oif?>( J   ) >>>>>>>>
root@act-7726-03:~#

The problem was as a part ifchannel_delete the join state of the channel
was checked to avoid incorrect OIF deletion this was preventing the OIF
from being flushed. Fix is to flip the channel join-state to NOINFO before
deleting it.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_ifchannel.c