summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-07-12 20:26:02 +0200
committerThomas Haller <thaller@redhat.com>2022-07-19 12:36:57 +0200
commit9c349982811311a50e41caedfcad41a9c0d34e50 (patch)
treec50bd49560f9670cd62f9697856ff806018d29ab
parent36e6ac54509596c3d259dd0619142a92b34bf9dc (diff)
downloadNetworkManager-9c349982811311a50e41caedfcad41a9c0d34e50.tar.gz
platform: use new platform API to get genl family id for nl802154/wpan
-rw-r--r--src/libnm-platform/nm-linux-platform.c9
-rw-r--r--src/libnm-platform/wpan/nm-wpan-utils.c27
-rw-r--r--src/libnm-platform/wpan/nm-wpan-utils.h3
3 files changed, 19 insertions, 20 deletions
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index 7dd831eca0..cd4c4f9a97 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -3303,10 +3303,11 @@ _new_from_nl_link(NMPlatform *platform,
TRUE);
break;
case NM_LINK_TYPE_WPAN:
- obj->_link.ext_data =
- (GObject *) nm_wpan_utils_new(ifi->ifi_index,
- NM_LINUX_PLATFORM_GET_PRIVATE(platform)->sk_genl_sync,
- TRUE);
+ obj->_link.ext_data = (GObject *) nm_wpan_utils_new(
+ NM_LINUX_PLATFORM_GET_PRIVATE(platform)->sk_genl_sync,
+ nm_platform_genl_get_family_id(platform, NMP_GENL_FAMILY_TYPE_NL802154),
+ ifi->ifi_index,
+ TRUE);
break;
default:
g_assert_not_reached();
diff --git a/src/libnm-platform/wpan/nm-wpan-utils.c b/src/libnm-platform/wpan/nm-wpan-utils.c
index d9bbd0f0fa..8fa0003f60 100644
--- a/src/libnm-platform/wpan/nm-wpan-utils.c
+++ b/src/libnm-platform/wpan/nm-wpan-utils.c
@@ -37,9 +37,9 @@
struct NMWpanUtils {
GObject parent;
- int ifindex;
struct nl_sock *nl_sock;
- int id;
+ int ifindex;
+ guint16 genl_family_id;
};
typedef struct {
@@ -75,12 +75,12 @@ error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err, void *arg)
}
static struct nl_msg *
-_nl802154_alloc_msg(int id, int ifindex, guint32 cmd, guint32 flags)
+_nl802154_alloc_msg(guint16 genl_family_id, int ifindex, guint32 cmd, guint32 flags)
{
nm_auto_nlmsg struct nl_msg *msg = NULL;
msg = nlmsg_alloc();
- genlmsg_put(msg, 0, 0, id, 0, flags, cmd, 0);
+ genlmsg_put(msg, 0, 0, genl_family_id, 0, flags, cmd, 0);
NLA_PUT_U32(msg, NL802154_ATTR_IFINDEX, ifindex);
return g_steal_pointer(&msg);
@@ -91,7 +91,7 @@ nla_put_failure:
static struct nl_msg *
nl802154_alloc_msg(NMWpanUtils *self, guint32 cmd, guint32 flags)
{
- return _nl802154_alloc_msg(self->id, self->ifindex, cmd, flags);
+ return _nl802154_alloc_msg(self->genl_family_id, self->ifindex, cmd, flags);
}
static int
@@ -264,7 +264,7 @@ nm_wpan_utils_class_init(NMWpanUtilsClass *klass)
{}
NMWpanUtils *
-nm_wpan_utils_new(int ifindex, struct nl_sock *genl, gboolean check_scan)
+nm_wpan_utils_new(struct nl_sock *genl, guint16 genl_family_id, int ifindex, gboolean check_scan)
{
NMWpanUtils *self;
@@ -273,16 +273,13 @@ nm_wpan_utils_new(int ifindex, struct nl_sock *genl, gboolean check_scan)
if (!genl)
return NULL;
- self = g_object_new(NM_TYPE_WPAN_UTILS, NULL);
- self->ifindex = ifindex;
- self->nl_sock = genl;
- self->id = genl_ctrl_resolve(genl, "nl802154");
-
- if (self->id < 0) {
- _LOGD(LOGD_PLATFORM, "genl_ctrl_resolve: failed to resolve \"nl802154\"");
- g_object_unref(self);
+ if (!genl_family_id)
return NULL;
- }
+
+ self = g_object_new(NM_TYPE_WPAN_UTILS, NULL);
+ self->ifindex = ifindex;
+ self->nl_sock = genl;
+ self->genl_family_id = genl_family_id;
return self;
}
diff --git a/src/libnm-platform/wpan/nm-wpan-utils.h b/src/libnm-platform/wpan/nm-wpan-utils.h
index 6130c41e56..885d7195a8 100644
--- a/src/libnm-platform/wpan/nm-wpan-utils.h
+++ b/src/libnm-platform/wpan/nm-wpan-utils.h
@@ -23,7 +23,8 @@ typedef struct NMWpanUtils NMWpanUtils;
GType nm_wpan_utils_get_type(void);
-NMWpanUtils *nm_wpan_utils_new(int ifindex, struct nl_sock *genl, gboolean check_scan);
+NMWpanUtils *
+nm_wpan_utils_new(struct nl_sock *genl, guint16 genl_family_id, int ifindex, gboolean check_scan);
guint16 nm_wpan_utils_get_pan_id(NMWpanUtils *self);
gboolean nm_wpan_utils_set_pan_id(NMWpanUtils *self, guint16 pan_id);