if (is_private_address(start) == FALSE)
return;
- mask = ~(0xffffffff >> prefixlen);
+ if (prefixlen >= 32)
+ mask = 0xffffffff;
+ else
+ mask = ~(0xffffffff >> prefixlen);
+
start = start & mask;
end = start | ~mask;
if (!(it->start <= info->start || info->start <= it->end))
continue;
- if (it->pool->collision_cb != NULL)
+ if (it->pool != NULL && it->pool->collision_cb != NULL)
it->pool->collision_cb(it->pool, it->pool->user_data);
return;
info = lookup_info(index, start);
if (info == NULL) {
/* In theory this should never happen */
- connman_error("Inconsisten IP pool management (start not found)");
+ connman_error("Inconsistent IP pool management (start not found)");
return;
}