at v2.6.24 43 lines 1.2 kB view raw
1/* 2 * Copyright 2007 Johannes Berg <johannes@sipsolutions.net> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 * mac80211 - events 9 */ 10 11#include <linux/netdevice.h> 12#include <net/iw_handler.h> 13#include "ieee80211_i.h" 14 15/* 16 * indicate a failed Michael MIC to userspace; the passed packet 17 * (in the variable hdr) must be long enough to extract the TKIP 18 * fields like TSC 19 */ 20void mac80211_ev_michael_mic_failure(struct net_device *dev, int keyidx, 21 struct ieee80211_hdr *hdr) 22{ 23 union iwreq_data wrqu; 24 char *buf = kmalloc(128, GFP_ATOMIC); 25 DECLARE_MAC_BUF(mac); 26 27 if (buf) { 28 /* TODO: needed parameters: count, key type, TSC */ 29 sprintf(buf, "MLME-MICHAELMICFAILURE.indication(" 30 "keyid=%d %scast addr=%s)", 31 keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni", 32 print_mac(mac, hdr->addr2)); 33 memset(&wrqu, 0, sizeof(wrqu)); 34 wrqu.data.length = strlen(buf); 35 wireless_send_event(dev, IWEVCUSTOM, &wrqu, buf); 36 kfree(buf); 37 } 38 39 /* 40 * TODO: re-add support for sending MIC failure indication 41 * with all info via nl80211 42 */ 43}