mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 13:38:43 +02:00
libnm/trivial: move code
This commit is contained in:
parent
8aead609b3
commit
5ea2fc776c
1 changed files with 77 additions and 77 deletions
|
|
@ -3013,6 +3013,57 @@ nm_utils_hwaddr_len (int type)
|
||||||
g_return_val_if_reached (0);
|
g_return_val_if_reached (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static guint8 *
|
||||||
|
hwaddr_aton (const char *asc, guint8 *buffer, gsize buffer_length, gsize *out_len)
|
||||||
|
{
|
||||||
|
const char *in = asc;
|
||||||
|
guint8 *out = buffer;
|
||||||
|
guint8 delimiter = '\0';
|
||||||
|
|
||||||
|
nm_assert (asc);
|
||||||
|
nm_assert (buffer);
|
||||||
|
nm_assert (buffer_length);
|
||||||
|
nm_assert (out_len);
|
||||||
|
|
||||||
|
while (TRUE) {
|
||||||
|
const guint8 d1 = in[0];
|
||||||
|
guint8 d2;
|
||||||
|
|
||||||
|
if (!g_ascii_isxdigit (d1))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
#define HEXVAL(c) ((c) <= '9' ? (c) - '0' : ((c) & 0x4F) - ('A' - 10))
|
||||||
|
|
||||||
|
/* If there's no leading zero (ie "aa:b:cc") then fake it */
|
||||||
|
d2 = in[1];
|
||||||
|
if (d2 && g_ascii_isxdigit (d2)) {
|
||||||
|
*out++ = (HEXVAL (d1) << 4) + HEXVAL (d2);
|
||||||
|
d2 = in[2];
|
||||||
|
in += 3;
|
||||||
|
} else {
|
||||||
|
/* Fake leading zero */
|
||||||
|
*out++ = HEXVAL (d1);
|
||||||
|
in += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!d2)
|
||||||
|
break;
|
||||||
|
if (--buffer_length == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (d2 != delimiter) {
|
||||||
|
if ( delimiter == '\0'
|
||||||
|
&& (d2 == ':' || d2 == '-'))
|
||||||
|
delimiter = d2;
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*out_len = out - buffer;
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_utils_hexstr2bin:
|
* nm_utils_hexstr2bin:
|
||||||
* @hex: a string of hexadecimal characters with optional ':' separators
|
* @hex: a string of hexadecimal characters with optional ':' separators
|
||||||
|
|
@ -3069,57 +3120,6 @@ nm_utils_hexstr2bin (const char *hex)
|
||||||
return g_bytes_new (c, x);
|
return g_bytes_new (c, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint8 *
|
|
||||||
hwaddr_aton (const char *asc, guint8 *buffer, gsize buffer_length, gsize *out_len)
|
|
||||||
{
|
|
||||||
const char *in = asc;
|
|
||||||
guint8 *out = buffer;
|
|
||||||
guint8 delimiter = '\0';
|
|
||||||
|
|
||||||
nm_assert (asc);
|
|
||||||
nm_assert (buffer);
|
|
||||||
nm_assert (buffer_length);
|
|
||||||
nm_assert (out_len);
|
|
||||||
|
|
||||||
while (TRUE) {
|
|
||||||
const guint8 d1 = in[0];
|
|
||||||
guint8 d2;
|
|
||||||
|
|
||||||
if (!g_ascii_isxdigit (d1))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
#define HEXVAL(c) ((c) <= '9' ? (c) - '0' : ((c) & 0x4F) - ('A' - 10))
|
|
||||||
|
|
||||||
/* If there's no leading zero (ie "aa:b:cc") then fake it */
|
|
||||||
d2 = in[1];
|
|
||||||
if (d2 && g_ascii_isxdigit (d2)) {
|
|
||||||
*out++ = (HEXVAL (d1) << 4) + HEXVAL (d2);
|
|
||||||
d2 = in[2];
|
|
||||||
in += 3;
|
|
||||||
} else {
|
|
||||||
/* Fake leading zero */
|
|
||||||
*out++ = HEXVAL (d1);
|
|
||||||
in += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!d2)
|
|
||||||
break;
|
|
||||||
if (--buffer_length == 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (d2 != delimiter) {
|
|
||||||
if ( delimiter == '\0'
|
|
||||||
&& (d2 == ':' || d2 == '-'))
|
|
||||||
delimiter = d2;
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*out_len = out - buffer;
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_utils_hwaddr_atoba:
|
* nm_utils_hwaddr_atoba:
|
||||||
* @asc: the ASCII representation of a hardware address
|
* @asc: the ASCII representation of a hardware address
|
||||||
|
|
@ -3212,6 +3212,32 @@ nm_utils_hwaddr_aton (const char *asc, gpointer buffer, gsize length)
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_bin2str_buf (gconstpointer addr, gsize length, gboolean upper_case, char *out)
|
||||||
|
{
|
||||||
|
const guint8 *in = addr;
|
||||||
|
const char *LOOKUP = upper_case ? "0123456789ABCDEF" : "0123456789abcdef";
|
||||||
|
|
||||||
|
nm_assert (addr);
|
||||||
|
nm_assert (out);
|
||||||
|
nm_assert (length > 0);
|
||||||
|
|
||||||
|
/* @out must contain at least @length*3 bytes */
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
const guint8 v = *in++;
|
||||||
|
|
||||||
|
*out++ = LOOKUP[v >> 4];
|
||||||
|
*out++ = LOOKUP[v & 0x0F];
|
||||||
|
length--;
|
||||||
|
if (!length)
|
||||||
|
break;
|
||||||
|
*out++ = ':';
|
||||||
|
}
|
||||||
|
|
||||||
|
*out = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_utils_bin2hexstr:
|
* nm_utils_bin2hexstr:
|
||||||
* @src: (type guint8) (array length=len): an array of bytes
|
* @src: (type guint8) (array length=len): an array of bytes
|
||||||
|
|
@ -3257,32 +3283,6 @@ nm_utils_bin2hexstr (gconstpointer src, gsize len, int final_len)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_bin2str_buf (gconstpointer addr, gsize length, gboolean upper_case, char *out)
|
|
||||||
{
|
|
||||||
const guint8 *in = addr;
|
|
||||||
const char *LOOKUP = upper_case ? "0123456789ABCDEF" : "0123456789abcdef";
|
|
||||||
|
|
||||||
nm_assert (addr);
|
|
||||||
nm_assert (out);
|
|
||||||
nm_assert (length > 0);
|
|
||||||
|
|
||||||
/* @out must contain at least @length*3 bytes */
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
const guint8 v = *in++;
|
|
||||||
|
|
||||||
*out++ = LOOKUP[v >> 4];
|
|
||||||
*out++ = LOOKUP[v & 0x0F];
|
|
||||||
length--;
|
|
||||||
if (!length)
|
|
||||||
break;
|
|
||||||
*out++ = ':';
|
|
||||||
}
|
|
||||||
|
|
||||||
*out = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_bin2str (gconstpointer addr, gsize length, gboolean upper_case)
|
_bin2str (gconstpointer addr, gsize length, gboolean upper_case)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue