]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Fix broken rib_match
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Sep 2016 19:17:50 +0000 (15:17 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 14 Sep 2016 19:27:35 +0000 (15:27 -0400)
rib_match is broken because the prefix is being
treated as a char * pointer instead of the
correct data type.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit 8b5d6c95781b7c55faa957a2d3edf00c1ecb5c5a)

zebra/zebra_rib.c

index 3812101431fbfaa099ca2622d2cec8c1ec7f9c8b..1378d008cab5adef84e29734d177af52e89ca93a 100644 (file)
@@ -764,12 +764,16 @@ rib_match (afi_t afi, safi_t safi, vrf_id_t vrf_id,
 
   memset (&p, 0, sizeof (struct prefix));
   p.family = afi;
-  p.u.prefix = *(u_char *)addr;
-  p.prefixlen = IPV4_MAX_PREFIXLEN;
   if (afi == AFI_IP)
-    p.prefixlen = IPV4_MAX_PREFIXLEN;
+    {
+      p.u.prefix4 = addr->ipv4;
+      p.prefixlen = IPV4_MAX_PREFIXLEN;
+    }
   else
-    p.prefixlen = IPV6_MAX_PREFIXLEN;
+    {
+      p.u.prefix6 = addr->ipv6;
+      p.prefixlen = IPV6_MAX_PREFIXLEN;
+    }
 
   rn = route_node_match (table, (struct prefix *) &p);