shared: move addr-family helpers to "nm-std-aux.h"

Handling address families is something we do all over the place.
Move some simple helper code to "nm-std-aux.h".
This commit is contained in:
Thomas Haller 2020-07-22 11:38:14 +02:00
parent 97770bc7a8
commit 56a0aa06ac
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
3 changed files with 55 additions and 36 deletions

View file

@ -68,42 +68,6 @@ G_STATIC_ASSERT (sizeof (int) == sizeof (gint32));
/*****************************************************************************/
static inline char
nm_utils_addr_family_to_char (int addr_family)
{
switch (addr_family) {
case AF_UNSPEC: return 'X';
case AF_INET: return '4';
case AF_INET6: return '6';
}
g_return_val_if_reached ('?');
}
static inline gsize
nm_utils_addr_family_to_size (int addr_family)
{
switch (addr_family) {
case AF_INET: return sizeof (in_addr_t);
case AF_INET6: return sizeof (struct in6_addr);
}
g_return_val_if_reached (0);
}
static inline int
nm_utils_addr_family_from_size (gsize len)
{
switch (len) {
case sizeof (in_addr_t): return AF_INET;
case sizeof (struct in6_addr): return AF_INET6;
}
return AF_UNSPEC;
}
#define nm_assert_addr_family(addr_family) \
nm_assert (NM_IN_SET ((addr_family), AF_INET, AF_INET6))
/*****************************************************************************/
typedef struct {
union {
guint8 addr_ptr[1];

View file

@ -17,6 +17,16 @@
/*****************************************************************************/
G_STATIC_ASSERT (NM_AF_UNSPEC == AF_UNSPEC);
G_STATIC_ASSERT (NM_AF_INET == AF_INET);
G_STATIC_ASSERT (NM_AF_INET6 == AF_INET6);
G_STATIC_ASSERT (NM_AF_INET_SIZE == sizeof (in_addr_t));
G_STATIC_ASSERT (NM_AF_INET_SIZE == sizeof (struct in_addr));
G_STATIC_ASSERT (NM_AF_INET6_SIZE == sizeof (struct in6_addr));
/*****************************************************************************/
static void
test_gpid (void)
{

View file

@ -622,4 +622,49 @@ nm_steal_fd (int *p_fd)
return -1;
}
/*****************************************************************************/
#define NM_AF_UNSPEC 0 /* AF_UNSPEC */
#define NM_AF_INET 2 /* AF_INET */
#define NM_AF_INET6 10 /* AF_INET6 */
#define NM_AF_INET_SIZE 4 /* sizeof (in_addr_t) */
#define NM_AF_INET6_SIZE 16 /* sizeof (stuct in6_addr) */
static inline char
nm_utils_addr_family_to_char (int addr_family)
{
switch (addr_family) {
case NM_AF_UNSPEC: return 'X';
case NM_AF_INET: return '4';
case NM_AF_INET6: return '6';
}
nm_assert_not_reached ();
return '?';
}
static inline size_t
nm_utils_addr_family_to_size (int addr_family)
{
switch (addr_family) {
case NM_AF_INET: return NM_AF_INET_SIZE;
case NM_AF_INET6: return NM_AF_INET6_SIZE;
}
nm_assert_not_reached ();
return 0;
}
static inline int
nm_utils_addr_family_from_size (size_t len)
{
switch (len) {
case NM_AF_INET_SIZE: return NM_AF_INET;
case NM_AF_INET6_SIZE: return NM_AF_INET6;
}
return NM_AF_UNSPEC;
}
#define nm_assert_addr_family(addr_family) \
nm_assert (NM_IN_SET ((addr_family), NM_AF_INET, NM_AF_INET6))
#endif /* __NM_STD_AUX_H__ */