|
|
|
@ -183,10 +183,10 @@ private: |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ((ip.isV6())&&(nconf.ndpEmulation())) { |
|
|
|
if ((ip.isV6())&&(nconf.ndpEmulation())) { |
|
|
|
const InetAddress sixpl(InetAddress::makeIpv66plane(nconf.networkId,nconf.issuedTo.toInt())); |
|
|
|
const InetAddress sixpl(InetAddress::makeIpv66plane(nconf.networkId,nconf.issuedTo.toInt())); |
|
|
|
for(int i=0;i<nconf.staticIpCount;++i) { |
|
|
|
for(unsigned int i=0;i<nconf.staticIpCount;++i) { |
|
|
|
if (nconf.staticIps[i].ipsEqual(sixpl)) { |
|
|
|
if (nconf.staticIps[i].ipsEqual(sixpl)) { |
|
|
|
bool prefixMatches = true; |
|
|
|
bool prefixMatches = true; |
|
|
|
for(int j=0;j<5;++j) { // check for match on /40
|
|
|
|
for(unsigned int j=0;j<5;++j) { // check for match on /40
|
|
|
|
if ((((const struct sockaddr_in6 *)&ip)->sin6_addr.s6_addr)[j] != (((const struct sockaddr_in6 *)&sixpl)->sin6_addr.s6_addr)[j]) { |
|
|
|
if ((((const struct sockaddr_in6 *)&ip)->sin6_addr.s6_addr)[j] != (((const struct sockaddr_in6 *)&sixpl)->sin6_addr.s6_addr)[j]) { |
|
|
|
prefixMatches = false; |
|
|
|
prefixMatches = false; |
|
|
|
break; |
|
|
|
break; |
|
|
|
@ -199,10 +199,10 @@ private: |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const InetAddress rfc4193(InetAddress::makeIpv6rfc4193(nconf.networkId,nconf.issuedTo.toInt())); |
|
|
|
const InetAddress rfc4193(InetAddress::makeIpv6rfc4193(nconf.networkId,nconf.issuedTo.toInt())); |
|
|
|
for(int i=0;i<nconf.staticIpCount;++i) { |
|
|
|
for(unsigned int i=0;i<nconf.staticIpCount;++i) { |
|
|
|
if (nconf.staticIps[i].ipsEqual(rfc4193)) { |
|
|
|
if (nconf.staticIps[i].ipsEqual(rfc4193)) { |
|
|
|
bool prefixMatches = true; |
|
|
|
bool prefixMatches = true; |
|
|
|
for(int j=0;j<11;++j) { // check for match on /88
|
|
|
|
for(unsigned int j=0;j<11;++j) { // check for match on /88
|
|
|
|
if ((((const struct sockaddr_in6 *)&ip)->sin6_addr.s6_addr)[j] != (((const struct sockaddr_in6 *)&rfc4193)->sin6_addr.s6_addr)[j]) { |
|
|
|
if ((((const struct sockaddr_in6 *)&ip)->sin6_addr.s6_addr)[j] != (((const struct sockaddr_in6 *)&rfc4193)->sin6_addr.s6_addr)[j]) { |
|
|
|
prefixMatches = false; |
|
|
|
prefixMatches = false; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|