case WLAN_FC_STYPE_AUTH: 
case IEEE80211_STYPE_AUTH: 
static void handle_ap_item(local_info_t *local, struct sk_buff *skb,			   struct hostap_80211_rx_status *rx_stats){#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT	struct net_device *dev = local->dev;#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */	u16 fc, type, stype;	struct ieee80211_hdr *hdr;	/* FIX: should give skb->len to handler functions and check that the	 * buffer is long enough */	hdr = (struct ieee80211_hdr *) skb->data;	fc = le16_to_cpu(hdr->frame_ctl);	type = HOSTAP_FC_GET_TYPE(fc);	stype = HOSTAP_FC_GET_STYPE(fc);#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT	if (!local->hostapd && type == WLAN_FC_TYPE_DATA) {		PDEBUG(DEBUG_AP, "handle_ap_item - data frame\n");		if (!(fc & WLAN_FC_TODS) || (fc & WLAN_FC_FROMDS)) {			if (stype == WLAN_FC_STYPE_NULLFUNC) {				/* no ToDS nullfunc seems to be used to check				 * AP association; so send reject message to				 * speed up re-association */				ap_handle_dropped_data(local, hdr);				goto done;			}			PDEBUG(DEBUG_AP, "   not ToDS frame (fc=0x%04x)\n",			       fc);			goto done;		}		if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {			PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)="			       MACSTR " not own MAC\n",			       MAC2STR(hdr->addr1));			goto done;		}		if (local->ap->nullfunc_ack && stype == WLAN_FC_STYPE_NULLFUNC)			ap_handle_data_nullfunc(local, hdr);		else			ap_handle_dropped_data(local, hdr);		goto done;	}	if (type == WLAN_FC_TYPE_MGMT && stype == WLAN_FC_STYPE_BEACON) {		handle_beacon(local, skb, rx_stats);		goto done;	}#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */	if (type == WLAN_FC_TYPE_CTRL && stype == WLAN_FC_STYPE_PSPOLL) {		handle_pspoll(local, hdr, rx_stats);		goto done;	}	if (local->hostapd) {		PDEBUG(DEBUG_AP, "Unknown frame in AP queue: type=0x%02x "		       "subtype=0x%02x\n", type, stype);		goto done;	}#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT	if (type != WLAN_FC_TYPE_MGMT) {		PDEBUG(DEBUG_AP, "handle_ap_item - not a management frame?\n");		goto done;	}	if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {		PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=" MACSTR		       " not own MAC\n", MAC2STR(hdr->addr1));		goto done;	}	if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) {		PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=" MACSTR		       " not own MAC\n", MAC2STR(hdr->addr3));		goto done;	}	switch (stype) {	case WLAN_FC_STYPE_ASSOC_REQ:		handle_assoc(local, skb, rx_stats, 0);		break;	case WLAN_FC_STYPE_ASSOC_RESP:		PDEBUG(DEBUG_AP, "==> ASSOC RESP (ignored)\n");		break;	case WLAN_FC_STYPE_REASSOC_REQ:		handle_assoc(local, skb, rx_stats, 1);		break;	case WLAN_FC_STYPE_REASSOC_RESP:		PDEBUG(DEBUG_AP, "==> REASSOC RESP (ignored)\n");		break;	case WLAN_FC_STYPE_ATIM:		PDEBUG(DEBUG_AP, "==> ATIM (ignored)\n");		break;	case WLAN_FC_STYPE_DISASSOC:		handle_disassoc(local, skb, rx_stats);		break;	case WLAN_FC_STYPE_AUTH:		handle_authen(local, skb, rx_stats);		break;	case WLAN_FC_STYPE_DEAUTH:		handle_deauth(local, skb, rx_stats);		break;	default:		PDEBUG(DEBUG_AP, "Unknown mgmt frame subtype 0x%02x\n", stype);		break;	}#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ done:	dev_kfree_skb(skb);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4339d328631aa815fe2181b9164b3690ca2db4da/hostap_ap.c/clean/drivers/net/wireless/hostap/hostap_ap.c