]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Pass in vrf to rib_match_ipv4_multicast
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Sep 2016 19:34:25 +0000 (15:34 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Sep 2016 19:34:25 +0000 (15:34 -0400)
Pass around the vrf_id to rib_match_ipv4_multicast
so that proper lookup can be maintained.  Not really
needed yet, but future fixing now.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/rib.h
zebra/zebra_rib.c
zebra/zebra_vty.c
zebra/zserv.c

index 500d96cbe40cd62a9755497c065c618d3506458b..9867323e6e28604e4405f5d8cde4c1816abce3c7 100644 (file)
@@ -354,7 +354,7 @@ extern int rib_delete (afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,
 
 extern struct rib *rib_match (afi_t afi, safi_t safi, vrf_id_t, union g_addr *,
                              struct route_node **rn_out);
-extern struct rib *rib_match_ipv4_multicast (struct in_addr addr,
+extern struct rib *rib_match_ipv4_multicast (vrf_id_t vrf_id, struct in_addr addr,
                                             struct route_node **rn_out);
 
 extern struct rib *rib_lookup_ipv4 (struct prefix_ipv4 *, vrf_id_t);
index 1378d008cab5adef84e29734d177af52e89ca93a..45df9ac7dc06fdb26e7b11150be29854dd25ac07 100644 (file)
@@ -824,7 +824,7 @@ rib_match (afi_t afi, safi_t safi, vrf_id_t vrf_id,
 }
 
 struct rib *
-rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
+rib_match_ipv4_multicast (vrf_id_t vrf_id, struct in_addr addr, struct route_node **rn_out)
 {
   struct rib *rib = NULL, *mrib = NULL, *urib = NULL;
   struct route_node *m_rn = NULL, *u_rn = NULL;
@@ -833,18 +833,18 @@ rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
   switch (ipv4_multicast_mode)
     {
     case MCAST_MRIB_ONLY:
-      return rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, rn_out);
+      return rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, rn_out);
     case MCAST_URIB_ONLY:
-      return rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, rn_out);
+      return rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, rn_out);
     case MCAST_NO_CONFIG:
     case MCAST_MIX_MRIB_FIRST:
-      rib = mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
+      rib = mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
       if (!mrib)
-       rib = urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
+       rib = urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
       break;
     case MCAST_MIX_DISTANCE:
-      mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
-      urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
+      mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
+      urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
       if (mrib && urib)
        rib = urib->distance < mrib->distance ? urib : mrib;
       else if (mrib)
@@ -853,8 +853,8 @@ rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
        rib = urib;
       break;
     case MCAST_MIX_PFXLEN:
-      mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
-      urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
+      mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
+      urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
       if (mrib && urib)
        rib = u_rn->p.prefixlen > m_rn->p.prefixlen ? urib : mrib;
       else if (mrib)
index 72d0ced658b6a8bf7f461e69591f4f3d1a1250a8..bf1d0a49c64ec1a9ca1a582e502dc68941400567 100644 (file)
@@ -311,7 +311,7 @@ DEFUN (show_ip_rpf_addr,
       return CMD_WARNING;
     }
 
-  rib = rib_match_ipv4_multicast (addr, &rn);
+  rib = rib_match_ipv4_multicast (VRF_DEFAULT, addr, &rn);
 
   if (rib)
     vty_show_ip_route_detail (vty, rn, 1);
index aad0b15a8869c6d5254bb7153f2972d8ff9d6954..61f3393ed9680edec5c7f13bff0dd29682bc2e48 100644 (file)
@@ -1346,7 +1346,7 @@ zread_ipv4_nexthop_lookup_mrib (struct zserv *client, u_short length, struct zeb
   struct rib *rib;
 
   addr.s_addr = stream_get_ipv4 (client->ibuf);
-  rib = rib_match_ipv4_multicast (addr, NULL);
+  rib = rib_match_ipv4_multicast (zvrf->vrf_id, addr, NULL);
   return zsend_ipv4_nexthop_lookup_mrib (client, addr, rib, zvrf);
 }