core: add nm_utils_ipx_address_clear_host_address() util
This commit is contained in:
@@ -199,6 +199,27 @@ nm_ethernet_address_is_valid (gconstpointer addr, gssize len)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gconstpointer
|
||||||
|
nm_utils_ipx_address_clear_host_address (int family, gpointer dst, gconstpointer src, guint8 plen)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (src, NULL);
|
||||||
|
g_return_val_if_fail (dst, NULL);
|
||||||
|
|
||||||
|
switch (family) {
|
||||||
|
case AF_INET:
|
||||||
|
g_return_val_if_fail (plen <= 32, NULL);
|
||||||
|
*((guint32 *) dst) = nm_utils_ip4_address_clear_host_address (*((guint32 *) src), plen);
|
||||||
|
break;
|
||||||
|
case AF_INET6:
|
||||||
|
g_return_val_if_fail (plen <= 128, NULL);
|
||||||
|
nm_utils_ip6_address_clear_host_address (dst, src, plen);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
/* nm_utils_ip4_address_clear_host_address:
|
/* nm_utils_ip4_address_clear_host_address:
|
||||||
* @addr: source ip6 address
|
* @addr: source ip6 address
|
||||||
* @plen: prefix length of network
|
* @plen: prefix length of network
|
||||||
|
@@ -93,6 +93,7 @@ GETTER (void) \
|
|||||||
|
|
||||||
gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len);
|
gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len);
|
||||||
|
|
||||||
|
gconstpointer nm_utils_ipx_address_clear_host_address (int family, gpointer dst, gconstpointer src, guint8 plen);
|
||||||
in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
|
in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
|
||||||
const struct in6_addr *nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_addr *src, guint8 plen);
|
const struct in6_addr *nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_addr *src, guint8 plen);
|
||||||
gboolean nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen);
|
gboolean nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen);
|
||||||
|
@@ -308,23 +308,6 @@ _support_user_ipv6ll_detect (struct nlattr **tb)
|
|||||||
* Various utilities
|
* Various utilities
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
|
|
||||||
static void
|
|
||||||
clear_host_address (int family, const void *network, guint8 plen, void *dst)
|
|
||||||
{
|
|
||||||
g_return_if_fail (network);
|
|
||||||
|
|
||||||
switch (family) {
|
|
||||||
case AF_INET:
|
|
||||||
*((in_addr_t *) dst) = nm_utils_ip4_address_clear_host_address (*((in_addr_t *) network), plen);
|
|
||||||
break;
|
|
||||||
case AF_INET6:
|
|
||||||
nm_utils_ip6_address_clear_host_address ((struct in6_addr *) dst, (const struct in6_addr *) network, plen);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_vlan_qos_mapping_cmp_from (gconstpointer a, gconstpointer b, gpointer user_data)
|
_vlan_qos_mapping_cmp_from (gconstpointer a, gconstpointer b, gpointer user_data)
|
||||||
{
|
{
|
||||||
@@ -2285,7 +2268,7 @@ _nl_msg_new_route (int nlmsg_type,
|
|||||||
|
|
||||||
addr_len = family == AF_INET ? sizeof (in_addr_t) : sizeof (struct in6_addr);
|
addr_len = family == AF_INET ? sizeof (in_addr_t) : sizeof (struct in6_addr);
|
||||||
|
|
||||||
clear_host_address (family, network, plen, &network_clean);
|
nm_utils_ipx_address_clear_host_address (family, &network_clean, network, plen);
|
||||||
NLA_PUT (msg, RTA_DST, addr_len, &network_clean);
|
NLA_PUT (msg, RTA_DST, addr_len, &network_clean);
|
||||||
|
|
||||||
NLA_PUT_U32 (msg, RTA_PRIORITY, metric);
|
NLA_PUT_U32 (msg, RTA_PRIORITY, metric);
|
||||||
|
Reference in New Issue
Block a user