platform: add inet6_token parameter to NMPlatformLink
This commit is contained in:
@@ -974,6 +974,28 @@ init_link (NMPlatform *platform, NMPlatformLink *info, struct rtnl_link *rtnllin
|
||||
}
|
||||
#endif
|
||||
|
||||
#if HAVE_LIBNL_INET6_TOKEN
|
||||
if ((rtnl_link_inet6_get_token (rtnllink, &nladdr)) == 0) {
|
||||
if ( nl_addr_get_family (nladdr) == AF_INET6
|
||||
&& nl_addr_get_len (nladdr) == sizeof (struct in6_addr)) {
|
||||
struct in6_addr *addr;
|
||||
NMUtilsIPv6IfaceId *iid = &info->inet6_token.iid;
|
||||
|
||||
addr = nl_addr_get_binary_addr (nladdr);
|
||||
iid->id_u8[7] = addr->s6_addr[15];
|
||||
iid->id_u8[6] = addr->s6_addr[14];
|
||||
iid->id_u8[5] = addr->s6_addr[13];
|
||||
iid->id_u8[4] = addr->s6_addr[12];
|
||||
iid->id_u8[3] = addr->s6_addr[11];
|
||||
iid->id_u8[2] = addr->s6_addr[10];
|
||||
iid->id_u8[1] = addr->s6_addr[9];
|
||||
iid->id_u8[0] = addr->s6_addr[8];
|
||||
info->inet6_token.is_valid = TRUE;
|
||||
}
|
||||
nl_addr_put (nladdr);
|
||||
}
|
||||
#endif
|
||||
|
||||
udev_device = g_hash_table_lookup (priv->udev_devices, GINT_TO_POINTER (info->ifindex));
|
||||
if (udev_device) {
|
||||
info->driver = nmp_utils_udev_get_driver (udev_device);
|
||||
|
@@ -2796,11 +2796,14 @@ nm_platform_link_cmp (const NMPlatformLink *a, const NMPlatformLink *b)
|
||||
_CMP_FIELD (a, b, arptype);
|
||||
_CMP_FIELD (a, b, addr.len);
|
||||
_CMP_FIELD (a, b, inet6_addr_gen_mode_inv);
|
||||
_CMP_FIELD (a, b, inet6_token.is_valid);
|
||||
_CMP_FIELD_STR_INTERNED (a, b, kind);
|
||||
_CMP_FIELD_STR0 (a, b, udi);
|
||||
_CMP_FIELD_STR_INTERNED (a, b, driver);
|
||||
if (a->addr.len)
|
||||
_CMP_FIELD_MEMCMP_LEN (a, b, addr.data, a->addr.len);
|
||||
if (a->inet6_token.is_valid)
|
||||
_CMP_FIELD_MEMCMP (a, b, inet6_token.iid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <nm-dbus-interface.h>
|
||||
#include "nm-types.h"
|
||||
#include "NetworkManagerUtils.h"
|
||||
|
||||
#define NM_TYPE_PLATFORM (nm_platform_get_type ())
|
||||
#define NM_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_PLATFORM, NMPlatform))
|
||||
@@ -110,6 +111,12 @@ struct _NMPlatformLink {
|
||||
guint8 len;
|
||||
} addr;
|
||||
|
||||
/* rtnl_link_inet6_get_token() */
|
||||
struct {
|
||||
NMUtilsIPv6IfaceId iid;
|
||||
guint8 is_valid;
|
||||
} inet6_token;
|
||||
|
||||
/* The bitwise inverse of rtnl_link_inet6_get_addr_gen_mode(). It is inverse
|
||||
* to have a default of 0 -- meaning: unspecified. That way, a struct
|
||||
* initialized with memset(0) has and unset value.*/
|
||||
|
Reference in New Issue
Block a user