[PATCH] nl80211: Use genl_ctrl_resolve()



Based on a patch for iw by Johannes Berg <johannes berg intel com>

This simplifies the code quite a bit since we don't need
an nl_cache or nl_family anymore.

genl_ctrl_resolve() is available in libnl1.1, libnl2 and libnl3.

Cc: Johannes Berg <johannes berg intel com>
Signed-off-by: Thomas Graf <tgraf redhat com>
---
 src/nm-netlink-compat.h  |   12 ------------
 src/wifi-utils-nl80211.c |   17 ++++-------------
 2 files changed, 4 insertions(+), 25 deletions(-)

diff --git a/src/nm-netlink-compat.h b/src/nm-netlink-compat.h
index 478bc8b..af21fb9 100644
--- a/src/nm-netlink-compat.h
+++ b/src/nm-netlink-compat.h
@@ -172,18 +172,6 @@ __nl_cache_include (struct nl_cache *cache, struct nl_object *obj, change_func_t
 }
 #define nl_cache_include __nl_cache_include
 
-#include <netlink/genl/ctrl.h>
-
-static inline int __genl_ctrl_alloc_cache(struct nl_sock *h, struct nl_cache **cache)
-{
-	struct nl_cache *tmp = genl_ctrl_alloc_cache(h);
-	if (!tmp)
-		return -ENOMEM;
-	*cache = tmp;
-	return 0;
-}
-#define genl_ctrl_alloc_cache __genl_ctrl_alloc_cache
-
 #define NLE_SUCCESS             0
 #define NLE_FAILURE             1
 #define NLE_INTR                2
diff --git a/src/wifi-utils-nl80211.c b/src/wifi-utils-nl80211.c
index 614abd3..48c7656 100644
--- a/src/wifi-utils-nl80211.c
+++ b/src/wifi-utils-nl80211.c
@@ -45,8 +45,7 @@
 typedef struct {
 	WifiData parent;
 	struct nl_sock *nl_sock;
-	struct nl_cache *nl_cache;
-	struct genl_family *nl_family;
+	int id;
 	struct nl_cb *nl_cb;
 	guint32 *freqs;
 	int num_freqs;
@@ -81,8 +80,7 @@ static struct nl_msg *nl80211_alloc_msg (WifiDataNl80211 *nl80211,
 	if (!msg)
 		return NULL;
 
-	genlmsg_put (msg, 0, 0, genl_family_get_id (nl80211->nl_family), 0,
-		     flags, cmd, 0);
+	genlmsg_put (msg, 0, 0, nl80211->id, 0, flags, cmd, 0);
 
 	NLA_PUT_U32 (msg, NL80211_ATTR_IFINDEX, nl80211->parent.ifindex);
 
@@ -137,10 +135,6 @@ wifi_nl80211_deinit (WifiData *parent)
 {
 	WifiDataNl80211 *nl80211 = (WifiDataNl80211 *) parent;
 
-	if (nl80211->nl_family)
-		genl_family_put (nl80211->nl_family);
-	if (nl80211->nl_cache)
-		nl_cache_free (nl80211->nl_cache);
 	if (nl80211->nl_sock)
 		nl_socket_free (nl80211->nl_sock);
 	if (nl80211->nl_cb)
@@ -672,11 +666,8 @@ wifi_nl80211_init (const char *iface, int ifindex)
 	if (genl_connect (nl80211->nl_sock))
 		goto error;
 
-	if (genl_ctrl_alloc_cache (nl80211->nl_sock, &nl80211->nl_cache))
-		goto error;
-
-	nl80211->nl_family = genl_ctrl_search_by_name (nl80211->nl_cache, "nl80211");
-	if (nl80211->nl_family == NULL)
+	nl80211->id = genl_ctrl_resolve (nl80211->nl_sock, "nl80211");
+	if (nl80211->id < 0)
 		goto error;
 
 	nl80211->nl_cb = nl_cb_alloc (NL_CB_DEFAULT);
-- 
1.7.7



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]