From: aland Date: Thu, 29 May 2008 10:33:02 +0000 (+0000) Subject: Prefix of /0 is special X-Git-Tag: release_2_0_5~27 X-Git-Url: http://www.project-moonshot.org/gitweb/?a=commitdiff_plain;h=6334a01578017be2289302a396bea899c8724466;p=freeradius.git Prefix of /0 is special --- diff --git a/src/main/client.c b/src/main/client.c index 3c96bd1..3efcc36 100644 --- a/src/main/client.c +++ b/src/main/client.c @@ -147,7 +147,11 @@ static int client_sane(RADCLIENT *client) /* * Zero out the subnet bits. */ - if (client->prefix < 32) { + if (client->prefix == 0) { + memset(&client->ipaddr.ipaddr.ip4addr, 0, + sizeof(client->ipaddr.ipaddr.ip4addr)); + + } else if (client->prefix < 32) { uint32_t mask = ~0; mask <<= (32 - client->prefix); @@ -158,7 +162,11 @@ static int client_sane(RADCLIENT *client) case AF_INET6: if (client->prefix > 128) return 0; - if (client->prefix < 128) { + if (client->prefix == 0) { + memset(&client->ipaddr.ipaddr.ip6addr, 0, + sizeof(client->ipaddr.ipaddr.ip6addr)); + + } else if (client->prefix < 128) { int i; uint32_t mask, *addr;