mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 00:56:19 +00:00
Merge pull request #3054 from donaldsharp/zebra_6.0
zebra: Send correct default vrf tableid for MROUTE stats
This commit is contained in:
commit
0248216c0f
@ -1752,6 +1752,7 @@ skip:
|
||||
|
||||
int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
|
||||
{
|
||||
uint32_t actual_table;
|
||||
int suc = 0;
|
||||
struct mcast_route_data *mr = (struct mcast_route_data *)in;
|
||||
struct {
|
||||
@ -1777,7 +1778,23 @@ int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
|
||||
addattr_l(&req.n, sizeof(req), RTA_OIF, &mroute->ifindex, 4);
|
||||
addattr_l(&req.n, sizeof(req), RTA_SRC, &mroute->sg.src.s_addr, 4);
|
||||
addattr_l(&req.n, sizeof(req), RTA_DST, &mroute->sg.grp.s_addr, 4);
|
||||
addattr_l(&req.n, sizeof(req), RTA_TABLE, &zvrf->table_id, 4);
|
||||
/*
|
||||
* What?
|
||||
*
|
||||
* So during the namespace cleanup we started storing
|
||||
* the zvrf table_id for the default table as RT_TABLE_MAIN
|
||||
* which is what the normal routing table for ip routing is.
|
||||
* This change caused this to break our lookups of sg data
|
||||
* because prior to this change the zvrf->table_id was 0
|
||||
* and when the pim multicast kernel code saw a 0,
|
||||
* it was auto-translated to RT_TABLE_DEFAULT. But since
|
||||
* we are now passing in RT_TABLE_MAIN there is no auto-translation
|
||||
* and the kernel goes screw you and the delicious cookies you
|
||||
* are trying to give me. So now we have this little hack.
|
||||
*/
|
||||
actual_table = (zvrf->table_id == RT_TABLE_MAIN) ? RT_TABLE_DEFAULT :
|
||||
zvrf->table_id;
|
||||
addattr_l(&req.n, sizeof(req), RTA_TABLE, &actual_table, 4);
|
||||
|
||||
suc = netlink_talk(netlink_route_change_read_multicast, &req.n,
|
||||
&zns->netlink_cmd, zns, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user