mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 23:30:28 +01:00
cloud-setup: add nmcs_utils_ipaddr_normalize*() helper
This commit is contained in:
parent
f0faf2e1a1
commit
30e1f73347
2 changed files with 73 additions and 0 deletions
|
|
@ -533,6 +533,59 @@ nmcs_utils_hwaddr_normalize(const char *hwaddr, gssize len)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
gboolean
|
||||
nmcs_utils_ipaddr_normalize_bin(int addr_family,
|
||||
const char *addr,
|
||||
gssize len,
|
||||
int * out_addr_family,
|
||||
gpointer out_addr_bin)
|
||||
{
|
||||
gs_free char *addr_clone = NULL;
|
||||
char * ad;
|
||||
gsize l;
|
||||
|
||||
nm_assert(len >= -1);
|
||||
|
||||
if (len < 0) {
|
||||
if (!addr)
|
||||
return FALSE;
|
||||
l = strlen(addr);
|
||||
} else {
|
||||
l = len;
|
||||
if (l > 0 && addr[l - 1] == '\0') {
|
||||
/* we accept one '\0' at the end of the string. */
|
||||
l--;
|
||||
}
|
||||
if (memchr(addr, '\0', l)) {
|
||||
/* but we don't accept other NUL characters in the middle. */
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (l == 0)
|
||||
return FALSE;
|
||||
|
||||
nm_assert(addr);
|
||||
ad = nm_strndup_a(300, addr, l, &addr_clone);
|
||||
|
||||
g_strstrip(ad);
|
||||
|
||||
return nm_utils_parse_inaddr_bin(addr_family, ad, out_addr_family, out_addr_bin);
|
||||
}
|
||||
|
||||
char *
|
||||
nmcs_utils_ipaddr_normalize(int addr_family, const char *addr, gssize len)
|
||||
{
|
||||
NMIPAddr ipaddr;
|
||||
|
||||
if (!nmcs_utils_ipaddr_normalize_bin(addr_family, addr, len, &addr_family, &ipaddr))
|
||||
return NULL;
|
||||
|
||||
return nm_utils_inet_ntop_dup(addr_family, &ipaddr);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const char *
|
||||
nmcs_utils_parse_memmem(GBytes *mem, const char *needle)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -90,6 +90,26 @@ nmcs_utils_hwaddr_normalize_gbytes(GBytes *hwaddr)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
gboolean nmcs_utils_ipaddr_normalize_bin(int addr_family,
|
||||
const char *addr,
|
||||
gssize len,
|
||||
int * out_addr_family,
|
||||
gpointer out_addr_bin);
|
||||
|
||||
char *nmcs_utils_ipaddr_normalize(int addr_family, const char *addr, gssize len);
|
||||
|
||||
static inline char *
|
||||
nmcs_utils_ipaddr_normalize_gbytes(int addr_family, GBytes *addr)
|
||||
{
|
||||
const char *str;
|
||||
gsize len;
|
||||
|
||||
str = g_bytes_get_data(addr, &len);
|
||||
return nmcs_utils_ipaddr_normalize(addr_family, str, len);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const char *nmcs_utils_parse_memmem(GBytes *mem, const char *needle);
|
||||
|
||||
const char *nmcs_utils_parse_get_full_line(GBytes *mem, const char *needle);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue