mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-04 20:18:54 +00:00
pimd: Allow further refinement of pim join order
When a 'show ip pim join' is issued and we have (S,G,rpt) being sent back up to us. We need to order correctly for this situation. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
8711a53dbc
commit
340bce7d35
@ -76,17 +76,34 @@ static void *if_list_clean(struct pim_interface *pim_ifp)
|
||||
static int
|
||||
pim_ifchannel_compare (struct pim_ifchannel *ch1, struct pim_ifchannel *ch2)
|
||||
{
|
||||
if (ntohl(ch1->sg.grp.s_addr) < ntohl(ch2->sg.grp.s_addr))
|
||||
return -1;
|
||||
struct pim_interface *pim_ifp1;
|
||||
struct pim_interface *pim_ifp2;
|
||||
|
||||
if (ntohl(ch1->sg.grp.s_addr) > ntohl(ch2->sg.grp.s_addr))
|
||||
return 1;
|
||||
if (ntohl(ch1->sg.grp.s_addr) < ntohl(ch2->sg.grp.s_addr))
|
||||
return -1;
|
||||
|
||||
if (ntohl(ch1->sg.src.s_addr) < ntohl(ch2->sg.src.s_addr))
|
||||
return -1;
|
||||
if (ntohl(ch1->sg.grp.s_addr) > ntohl(ch2->sg.grp.s_addr))
|
||||
return 1;
|
||||
|
||||
if (ntohl(ch1->sg.src.s_addr) > ntohl(ch2->sg.src.s_addr))
|
||||
return 1;
|
||||
if (ntohl(ch1->sg.src.s_addr) < ntohl(ch2->sg.src.s_addr))
|
||||
return -1;
|
||||
|
||||
if (ntohl(ch1->sg.src.s_addr) > ntohl(ch2->sg.src.s_addr))
|
||||
return 1;
|
||||
|
||||
pim_ifp1 = ch1->interface->info;
|
||||
pim_ifp2 = ch2->interface->info;
|
||||
if (ntohl(pim_ifp1->primary_address.s_addr) < ntohl(pim_ifp2->primary_address.s_addr))
|
||||
return -1;
|
||||
|
||||
if (ntohl(pim_ifp1->primary_address.s_addr) > ntohl(pim_ifp2->primary_address.s_addr))
|
||||
return 1;
|
||||
|
||||
if (pim_ifp1->mroute_vif_index < pim_ifp2->mroute_vif_index)
|
||||
return -1;
|
||||
|
||||
if (pim_ifp1->mroute_vif_index > pim_ifp2->mroute_vif_index)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user