9
0
Fork 0

lib/in46_addr: Add 'struct in46_prefix' to represent addr + prefix

Change-Id: I797d105117e81951732bcfc2cc26a8d00fd69443
This commit is contained in:
Harald Welte 2017-08-12 12:55:48 +02:00
parent b62983d3c3
commit 7fc8694b97
2 changed files with 13 additions and 0 deletions

View File

@ -79,6 +79,13 @@ const char *in46a_ntoa(const struct in46_addr *in46)
return addrstr_buf;
}
const char *in46p_ntoa(const struct in46_prefix *in46p)
{
static char addrstr_buf[256];
snprintf(addrstr_buf, sizeof(addrstr_buf), "%s/%u", in46a_ntoa(&in46p->addr), in46p->prefixlen);
return addrstr_buf;
}
/*! Determine if two in46_addr are equal or not
* \returns 1 in case they are equal; 0 otherwise */
int in46a_equal(const struct in46_addr *a, const struct in46_addr *b)

View File

@ -14,10 +14,16 @@ struct in46_addr {
};
};
struct in46_prefix {
struct in46_addr addr;
uint8_t prefixlen;
};
extern int in46a_to_af(const struct in46_addr *in);
extern int in46a_to_sas(struct sockaddr_storage *out, const struct in46_addr *in);
extern const char *in46a_ntop(const struct in46_addr *in, char *dst, socklen_t dst_size);
extern const char *in46a_ntoa(const struct in46_addr *in46);
extern const char *in46p_ntoa(const struct in46_prefix *in46p);
extern int in46a_equal(const struct in46_addr *a, const struct in46_addr *b);
extern int in46a_prefix_equal(const struct in46_addr *a, const struct in46_addr *b);
extern int in46a_within_mask(const struct in46_addr *addr, const struct in46_addr *net, size_t prefixlen);