|
Adam Tkac |
b246b7 |
diff -up bind-9.5.0b3/lib/isc/netaddr.c.any bind-9.5.0b3/lib/isc/netaddr.c
|
|
Adam Tkac |
b246b7 |
--- bind-9.5.0b3/lib/isc/netaddr.c.any 2008-05-05 22:01:29.000000000 +0200
|
|
Adam Tkac |
b246b7 |
+++ bind-9.5.0b3/lib/isc/netaddr.c 2008-05-05 22:24:52.000000000 +0200
|
|
Adam Tkac |
b246b7 |
@@ -69,10 +69,11 @@ isc_boolean_t
|
|
Adam Tkac |
b246b7 |
isc_netaddr_eqprefix(const isc_netaddr_t *a, const isc_netaddr_t *b,
|
|
Adam Tkac |
b246b7 |
unsigned int prefixlen)
|
|
Adam Tkac |
b246b7 |
{
|
|
Adam Tkac |
b246b7 |
- const unsigned char *pa, *pb;
|
|
Adam Tkac |
b246b7 |
+ const unsigned char *pa, *pb, *pany;
|
|
Adam Tkac |
b246b7 |
unsigned int ipabytes; /* Length of whole IP address in bytes */
|
|
Adam Tkac |
b246b7 |
unsigned int nbytes; /* Number of significant whole bytes */
|
|
Adam Tkac |
b246b7 |
unsigned int nbits; /* Number of significant leftover bits */
|
|
Adam Tkac |
b246b7 |
+ isc_netaddr_t any; /* represents 0.0.0.0 or ::0 */
|
|
Adam Tkac |
b246b7 |
|
|
Adam Tkac |
b246b7 |
REQUIRE(a != NULL && b != NULL);
|
|
Adam Tkac |
b246b7 |
|
|
Adam Tkac |
b246b7 |
@@ -86,11 +87,15 @@ isc_netaddr_eqprefix(const isc_netaddr_t
|
|
Adam Tkac |
b246b7 |
case AF_INET:
|
|
Adam Tkac |
b246b7 |
pa = (const unsigned char *) &a->type.in;
|
|
Adam Tkac |
b246b7 |
pb = (const unsigned char *) &b->type.in;
|
|
Adam Tkac |
b246b7 |
+ isc_netaddr_any(&any;;
|
|
Adam Tkac |
b246b7 |
+ pany = (const unsigned char *) &any.type.in;
|
|
Adam Tkac |
b246b7 |
ipabytes = 4;
|
|
Adam Tkac |
b246b7 |
break;
|
|
Adam Tkac |
b246b7 |
case AF_INET6:
|
|
Adam Tkac |
b246b7 |
pa = (const unsigned char *) &a->type.in6;
|
|
Adam Tkac |
b246b7 |
pb = (const unsigned char *) &b->type.in6;
|
|
Adam Tkac |
b246b7 |
+ isc_netaddr_any6(&any;;
|
|
Adam Tkac |
b246b7 |
+ pany = (const unsigned char *) &any.type.in6;
|
|
Adam Tkac |
b246b7 |
ipabytes = 16;
|
|
Adam Tkac |
b246b7 |
break;
|
|
Adam Tkac |
b246b7 |
default:
|
|
Adam Tkac |
b246b7 |
@@ -99,6 +104,10 @@ isc_netaddr_eqprefix(const isc_netaddr_t
|
|
Adam Tkac |
b246b7 |
return (ISC_FALSE);
|
|
Adam Tkac |
b246b7 |
}
|
|
Adam Tkac |
b246b7 |
|
|
Adam Tkac |
b246b7 |
+ if (memcmp(pa, pany, ipabytes) == 0 ||
|
|
Adam Tkac |
b246b7 |
+ memcmp(pb, pany, ipabytes) == 0)
|
|
Adam Tkac |
b246b7 |
+ return (ISC_TRUE);
|
|
Adam Tkac |
b246b7 |
+
|
|
Adam Tkac |
b246b7 |
/*
|
|
Adam Tkac |
b246b7 |
* Don't crash if we get a pattern like 10.0.0.1/9999999.
|
|
Adam Tkac |
b246b7 |
*/
|