lib: address type-punned pointers in prefix_same()

IPV4_ADDR_SAME() wasn't passed the right union member, this could cause
a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before
the error could be created by macro upgrade.
diff --git a/lib/prefix.c b/lib/prefix.c
index 580ba31..1b1c662 100644
--- a/lib/prefix.c
+++ b/lib/prefix.c
@@ -2411,11 +2411,11 @@
   if (p1->family == p2->family && p1->prefixlen == p2->prefixlen)
     {
       if (p1->family == AF_INET)
-	if (IPV4_ADDR_SAME (&p1->u.prefix, &p2->u.prefix))
+	if (IPV4_ADDR_SAME (&p1->u.prefix4.s_addr, &p2->u.prefix4.s_addr))
 	  return 1;
 #ifdef HAVE_IPV6
       if (p1->family == AF_INET6 )
-	if (IPV6_ADDR_SAME (&p1->u.prefix, &p2->u.prefix))
+	if (IPV6_ADDR_SAME (&p1->u.prefix6.s6_addr, &p2->u.prefix6.s6_addr))
 	  return 1;
 #endif /* HAVE_IPV6 */
     }