mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-04 23:28:08 +02:00
shared: add _nm_utils_ip4_*() utils functions
(cherry picked from commit e9c0b1851b88cef8a0e74d9e8701e0ef548e092a)
This commit is contained in:
parent
802ecd2e54
commit
7319fdd74a
2 changed files with 43 additions and 0 deletions
|
|
@ -24,6 +24,7 @@
|
|||
#include "nm-shared-utils.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
|
@ -110,6 +111,43 @@ nm_utils_strbuf_append (char **buf, gsize *len, const char *format, ...)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* _nm_utils_ip4_prefix_to_netmask:
|
||||
* @prefix: a CIDR prefix
|
||||
*
|
||||
* Returns: the netmask represented by the prefix, in network byte order
|
||||
**/
|
||||
guint32
|
||||
_nm_utils_ip4_prefix_to_netmask (guint32 prefix)
|
||||
{
|
||||
return prefix < 32 ? ~htonl(0xFFFFFFFF >> prefix) : 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
/**
|
||||
* _nm_utils_ip4_get_default_prefix:
|
||||
* @ip: an IPv4 address (in network byte order)
|
||||
*
|
||||
* When the Internet was originally set up, various ranges of IP addresses were
|
||||
* segmented into three network classes: A, B, and C. This function will return
|
||||
* a prefix that is associated with the IP address specified defining where it
|
||||
* falls in the predefined classes.
|
||||
*
|
||||
* Returns: the default class prefix for the given IP
|
||||
**/
|
||||
/* The function is originally from ipcalc.c of Red Hat's initscripts. */
|
||||
guint32
|
||||
_nm_utils_ip4_get_default_prefix (guint32 ip)
|
||||
{
|
||||
if (((ntohl (ip) & 0xFF000000) >> 24) <= 127)
|
||||
return 8; /* Class A - 255.0.0.0 */
|
||||
else if (((ntohl (ip) & 0xFF000000) >> 24) <= 191)
|
||||
return 16; /* Class B - 255.255.0.0 */
|
||||
|
||||
return 24; /* Class C - 255.255.255.0 */
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* _nm_utils_ascii_str_to_int64:
|
||||
*
|
||||
* A wrapper for g_ascii_strtoll, that checks whether the whole string
|
||||
|
|
|
|||
|
|
@ -143,6 +143,11 @@ char **_nm_utils_strv_cleanup (char **strv,
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
guint32 _nm_utils_ip4_prefix_to_netmask (guint32 prefix);
|
||||
guint32 _nm_utils_ip4_get_default_prefix (guint32 ip);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
gint64 _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 max, gint64 fallback);
|
||||
|
||||
gint _nm_utils_ascii_str_to_bool (const char *str,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue