]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
listen to vendor events
authorJohannes Berg <johannes.berg@intel.com>
Fri, 24 Jan 2014 14:56:02 +0000 (15:56 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 24 Jan 2014 14:56:02 +0000 (15:56 +0100)
event.c

diff --git a/event.c b/event.c
index bfdb0fb69966218d49d7f4265c04e5e5c065d021..2d92249363c166c3a88d1cd2385ddc186729a7b9 100644 (file)
--- a/event.c
+++ b/event.c
@@ -531,6 +531,11 @@ static int print_event(struct nl_msg *msg, void *arg)
                       (unsigned long long)nla_get_u64(tb[NL80211_ATTR_COOKIE]),
                       tb[NL80211_ATTR_ACK] ? "acked" : "no ack");
                break;
+       case NL80211_CMD_VENDOR:
+               printf("vendor event %.6x:%d\n",
+                       nla_get_u32(tb[NL80211_ATTR_VENDOR_ID]),
+                       nla_get_u32(tb[NL80211_ATTR_VENDOR_SUBCMD]));
+               break;
        default:
                printf("unknown event %d\n", gnlh->cmd);
                break;
@@ -601,6 +606,13 @@ int __prepare_listen_events(struct nl80211_state *state)
                        return ret;
        }
 
+       mcid = nl_get_multicast_id(state->nl_sock, "nl80211", "vendor");
+       if (mcid >= 0) {
+               ret = nl_socket_add_membership(state->nl_sock, mcid);
+               if (ret)
+                       return ret;
+       }
+
        return 0;
 }