mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 14:30:09 +01:00
glib-aux: add nm_ip_addr_set_from_variant() helper
This commit is contained in:
parent
2675e18f13
commit
3b08e27f08
2 changed files with 26 additions and 0 deletions
|
|
@ -99,6 +99,29 @@ nm_ip_addr_set_from_untrusted(int addr_family,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_ip_addr_set_from_variant(int addr_family, gpointer dst, GVariant *variant, int *out_addr_family)
|
||||
{
|
||||
gconstpointer bytes;
|
||||
gsize len;
|
||||
|
||||
g_return_val_if_fail(dst, FALSE);
|
||||
g_return_val_if_fail(variant, FALSE);
|
||||
|
||||
/* This function always expects IP addressea a byte arrays ("ay"). Note that
|
||||
* several NetworkManager API uses "u" (32 bit unsigned intergers) for IPv4 addresses.
|
||||
* So this function won't work in those cases.
|
||||
*
|
||||
* Btw, using "u" for IPv4 address messes badly with the endianness (host
|
||||
* vs network byte order). Don't do that.
|
||||
*/
|
||||
g_return_val_if_fail(g_variant_is_of_type(variant, G_VARIANT_TYPE("ay")), FALSE);
|
||||
|
||||
bytes = g_variant_get_fixed_array(variant, &len, sizeof(guint8));
|
||||
|
||||
return nm_ip_addr_set_from_untrusted(addr_family, dst, bytes, len, out_addr_family);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
G_STATIC_ASSERT(ETH_ALEN == sizeof(struct ether_addr));
|
||||
|
|
|
|||
|
|
@ -315,6 +315,9 @@ gboolean nm_ip_addr_set_from_untrusted(int addr_family,
|
|||
gsize src_len,
|
||||
int * out_addr_family);
|
||||
|
||||
gboolean
|
||||
nm_ip_addr_set_from_variant(int addr_family, gpointer dst, GVariant *variant, int *out_addr_family);
|
||||
|
||||
static inline gboolean
|
||||
nm_ip4_addr_is_localhost(in_addr_t addr4)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue