summaryrefslogtreecommitdiff
path: root/pimd/pim_mroute.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2021-05-12 14:31:45 -0400
committerDonald Sharp <sharpd@nvidia.com>2021-05-12 14:36:59 -0400
commitd3cc1e45182196a0b9b7146bcbaef04f346d9721 (patch)
tree2841feca90eae72f58a1c0c3e23af860db3f3b46 /pimd/pim_mroute.c
parente5981db7e9eda027c189d3d528f7e02c05faf29a (diff)
pimd: Remove pim->vrf_id and use pim->vrf->vrf_id
VRF creation can happen from either cli or from knowledged about the vrf learned from zebra. In the case where we learn about the vrf from the cli, the vrf id is UNKNOWN. Upon actual creation of the vrf, lib/vrf.c touches up the vrf_id and calls pim_vrf_enable to turn it on properly. At this point in time we have a pim->vrf_id of UNKNOWN and the vrf->vrf_id of the right value. There is no point in duplicating this data. So just remove all pim->vrf_id and use the vrf->vrf_id instead since we keep a copy of the pim->vrf pointer. This will remove some crashes where we expect the pim->vrf_id to be usable and it's not. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'pimd/pim_mroute.c')
-rw-r--r--pimd/pim_mroute.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index afd38face3..ab6d8c17df 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -56,7 +56,7 @@ static int pim_mroute_set(struct pim_instance *pim, int enable)
/*
* We need to create the VRF table for the pim mroute_socket
*/
- if (pim->vrf_id != VRF_DEFAULT) {
+ if (pim->vrf->vrf_id != VRF_DEFAULT) {
frr_with_privs(&pimd_privs) {
data = pim->vrf->data.l.table_id;
@@ -609,7 +609,7 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf,
* the source
* of the IP packet.
*/
- ifp = if_lookup_by_index(ifindex, pim->vrf_id);
+ ifp = if_lookup_by_index(ifindex, pim->vrf->vrf_id);
if (!ifp || !ifp->info)
return 0;