Based on a patch for iw by Johannes Berg <[email protected]> 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 <[email protected]> Signed-off-by: Thomas Graf <[email protected]> --- 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 _______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
