struct loc_ctx* ctx;
int refcount;
+ int family;
struct in6_addr first_address;
struct in6_addr last_address;
unsigned int prefix;
n->first_address = make_first_address(address, &bitmask);
n->last_address = make_last_address(&n->first_address, &bitmask);
+ // Set family
+ if (IN6_IS_ADDR_V4MAPPED(&n->first_address))
+ n->family = AF_INET;
+ else
+ n->family = AF_INET6;
+
DEBUG(n->ctx, "Network allocated at %p\n", n);
*network = n;
return 0;
unsigned int prefix = network->prefix;
- int family = loc_network_address_family(network);
- switch (family) {
+ switch (network->family) {
case AF_INET6:
r = format_ipv6_address(&network->first_address, string, length);
break;
}
LOC_EXPORT int loc_network_address_family(struct loc_network* network) {
- if (IN6_IS_ADDR_V4MAPPED(&network->first_address))
- return AF_INET;
-
- return AF_INET6;
+ return network->family;
}
static char* loc_network_format_address(struct loc_network* network, const struct in6_addr* address) {
int r = 0;
- switch (loc_network_address_family(network)) {
+ switch (network->family) {
case AF_INET6:
r = format_ipv6_address(address, string, length);
break;