Lines Matching refs:wh

92 void fill_basic(struct ieee80211_frame *wh, struct params *p)  in fill_basic()  argument
96 wh->i_dur[0] = 0x69; in fill_basic()
97 wh->i_dur[1] = 0x00; in fill_basic()
99 memcpy(wh->i_addr2, p->mac, 6); in fill_basic()
101 seq = (short*)wh->i_seq; in fill_basic()
119 int fill_beacon(struct params *p, struct ieee80211_frame *wh) in fill_beacon() argument
124 ptr = (char*) (wh+1); in fill_beacon()
150 return ptr - ((char*) wh); in fill_beacon()
156 struct ieee80211_frame *wh; in send_beacon() local
160 wh = (struct ieee80211_frame*) buf; in send_beacon()
163 fill_basic(wh, p); in send_beacon()
164 memset(wh->i_addr1, 0xff, 6); in send_beacon()
165 memcpy(wh->i_addr3, p->mac, 6); in send_beacon()
167 wh->i_fc[0] |= IEEE80211_FC0_TYPE_MGT; in send_beacon()
168 wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_BEACON; in send_beacon()
170 len = fill_beacon(p, wh); in send_beacon()
173 ptr = (char*)wh + len; in send_beacon()
180 send_frame(p, wh, len); in send_beacon()
190 struct ieee80211_frame *wh; in send_pres() local
193 wh = (struct ieee80211_frame*) buf; in send_pres()
196 fill_basic(wh, p); in send_pres()
197 memcpy(wh->i_addr1, mac, 6); in send_pres()
198 memcpy(wh->i_addr3, p->mac, 6); in send_pres()
200 wh->i_fc[0] |= IEEE80211_FC0_TYPE_MGT; in send_pres()
201 wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_PROBE_RESP; in send_pres()
203 len = fill_beacon(p, wh); in send_pres()
206 send_frame(p, wh, len); in send_pres()
209 void read_preq(struct params *p, struct ieee80211_frame *wh, int len) in read_preq() argument
215 ptr = (unsigned char*) (wh+1); in read_preq()
228 mac2str(macs, wh->i_addr2); in read_preq()
232 send_pres(p, wh->i_addr2); in read_preq()
238 struct ieee80211_frame *wh; in send_auth() local
242 wh = (struct ieee80211_frame*) buf; in send_auth()
245 fill_basic(wh, p); in send_auth()
246 memcpy(wh->i_addr1, mac, 6); in send_auth()
247 memcpy(wh->i_addr3, p->mac, 6); in send_auth()
249 wh->i_fc[0] |= IEEE80211_FC0_TYPE_MGT; in send_auth()
250 wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_AUTH; in send_auth()
252 ptr = (unsigned short*) (wh+1); in send_auth()
257 len = ((char*)ptr) - ((char*) wh); in send_auth()
259 send_frame(p, wh, len); in send_auth()
262 void read_auth(struct params *p, struct ieee80211_frame *wh, int len) in read_auth() argument
267 if (memcmp(wh->i_addr1, p->mac, 6) != 0) in read_auth()
270 ptr = (unsigned short*) (wh+1); in read_auth()
277 mac2str(mac, wh->i_addr2); in read_auth()
279 send_auth(p, wh->i_addr2); in read_auth()
288 struct ieee80211_frame *wh; in send_assoc() local
292 wh = (struct ieee80211_frame*) buf; in send_assoc()
295 fill_basic(wh, p); in send_assoc()
296 memcpy(wh->i_addr1, mac, 6); in send_assoc()
297 memcpy(wh->i_addr3, p->mac, 6); in send_assoc()
299 wh->i_fc[0] |= IEEE80211_FC0_TYPE_MGT; in send_assoc()
300 wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_ASSOC_RESP; in send_assoc()
302 ptr = (char*) (wh+1); in send_assoc()
316 len = ptr - ((char*) wh); in send_assoc()
318 send_frame(p, wh, len); in send_assoc()
321 void read_assoc(struct params *p, struct ieee80211_frame *wh, int len) in read_assoc() argument
327 if (memcmp(wh->i_addr1, p->mac, 6) != 0) in read_assoc()
330 ptr = (unsigned char*) (wh+1); in read_assoc()
345 mac2str(macs, wh->i_addr2); in read_assoc()
349 send_assoc(p, wh->i_addr2); in read_assoc()
352 void read_mgt(struct params *p, struct ieee80211_frame *wh, int len) in read_mgt() argument
354 switch (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) { in read_mgt()
356 read_preq(p, wh, len); in read_mgt()
363 read_auth(p, wh, len); in read_mgt()
367 read_assoc(p, wh, len); in read_mgt()
375 printf("wtf %d\n", (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) >> in read_mgt()
385 struct ieee80211_frame *wh; in send_cts() local
388 wh = (struct ieee80211_frame*) buf; in send_cts()
389 wh->i_fc[0] |= IEEE80211_FC0_TYPE_CTL; in send_cts()
390 wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_CTS; in send_cts()
391 wh->i_dur[0] = 0x69; in send_cts()
392 wh->i_dur[1] = 0x00; in send_cts()
393 memcpy(wh->i_addr1, mac, 6); in send_cts()
395 send_frame(p, wh, 10); in send_cts()
398 void read_rts(struct params *p, struct ieee80211_frame *wh, int len) in read_rts() argument
400 if (memcmp(wh->i_addr1, p->mac, 6) != 0) in read_rts()
403 send_cts(p, wh->i_addr2); in read_rts()
406 void read_ack(struct params *p, struct ieee80211_frame *wh, int len) in read_ack() argument
408 if (memcmp(wh->i_addr1, p->mac, 6) == 0) in read_ack()
412 void read_ctl(struct params *p, struct ieee80211_frame *wh, int len) in read_ctl() argument
414 switch (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) { in read_ctl()
416 read_rts(p, wh, len); in read_ctl()
420 read_ack(p, wh, len); in read_ctl()
427 printf("wtf %d\n", (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) >> in read_ctl()
437 int broadcast(struct ieee80211_frame *wh) in broadcast() argument
441 if (memcmp(wh->i_addr1, "\xff\xff\xff\xff\xff\xff", 6) == 0) in broadcast()
447 void enque(struct params *p, struct ieee80211_frame *wh, int len) in enque() argument
449 if (broadcast(wh)) in enque()
454 memcpy(p->packet, wh, len); in enque()
458 wh = (struct ieee80211_frame*) p->packet; in enque()
459 wh->i_fc[1] |= IEEE80211_FC1_RETRY; in enque()
465 void relay_data(struct params *p, struct ieee80211_frame *wh, int len) in relay_data() argument
472 memcpy(fc, wh->i_fc, 2); in relay_data()
473 memcpy(seq, wh->i_seq, 2); in relay_data()
476 wh->i_fc[1] &= ~(IEEE80211_FC1_DIR_TODS | IEEE80211_FC1_RETRY); in relay_data()
477 wh->i_fc[1] |= IEEE80211_FC1_DIR_FROMDS; in relay_data()
478 memcpy(wh->i_addr1, wh->i_addr3, sizeof(wh->i_addr1)); in relay_data()
479 memcpy(wh->i_addr3, wh->i_addr2, sizeof(wh->i_addr3)); in relay_data()
480 memcpy(wh->i_addr2, p->mac, sizeof(wh->i_addr2)); in relay_data()
481 ps = (unsigned short*)wh->i_seq; in relay_data()
484 send_frame(p, wh, len); in relay_data()
485 enque(p, wh, len); in relay_data()
488 memcpy(wh->i_fc, fc, sizeof(fc)); in relay_data()
489 memcpy(wh->i_addr2, wh->i_addr3, sizeof(wh->i_addr2)); in relay_data()
490 memcpy(wh->i_addr3, wh->i_addr1, sizeof(wh->i_addr2)); in relay_data()
491 memcpy(wh->i_addr1, p->mac, sizeof(wh->i_addr1)); in relay_data()
492 memcpy(wh->i_seq, seq, sizeof(seq)); in relay_data()
495 void read_real_data(struct params *p, struct ieee80211_frame *wh, int len) in read_real_data() argument
499 char *ptr = (char*) (wh+1); in read_real_data()
502 if (memcmp(wh->i_addr1, p->mac, 6) != 0) in read_real_data()
506 if (memcmp(wh->i_addr3, p->mac, 6) != 0) in read_real_data()
507 relay_data(p, wh, len); in read_real_data()
509 memcpy(dst, wh->i_addr3, 6); in read_real_data()
512 if (wh->i_fc[1] & IEEE80211_FC1_WEP) { in read_real_data()
518 if (wep_decrypt(wh, len, p->wep_key, p->wep_len) == -1){ in read_real_data()
530 memcpy(ptr, wh->i_addr2, 6); in read_real_data()
534 len -= sizeof(*wh); in read_real_data()
548 void read_data(struct params *p, struct ieee80211_frame *wh, int len) in read_data() argument
550 switch (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) { in read_data()
552 read_real_data(p, wh, len); in read_data()
559 printf("wtf %d\n", (wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) >> in read_data()
595 int duplicate(struct params *p, struct ieee80211_frame *wh, int rc) in duplicate() argument
600 if (!frame_type(wh, IEEE80211_FC0_TYPE_DATA, in duplicate()
604 s = seqno(wh); in duplicate()
606 c = client_find(p, wh->i_addr2); in duplicate()
613 memcpy(c->mac, wh->i_addr2, 6); in duplicate()
619 if (wh->i_fc[1] & IEEE80211_FC1_RETRY) { in duplicate()
642 void ack(struct params *p, struct ieee80211_frame *wh) in ack() argument
644 if (memcmp(wh->i_addr1, p->mac, 6) != 0) in ack()
647 if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_CTL) in ack()
650 send_ack(p->tx, wh->i_addr2); in ack()
657 struct ieee80211_frame *wh; in read_wifi() local
663 wh = get_wifi(buf, &rc); in read_wifi()
664 if (!wh) in read_wifi()
668 if (memcmp(wh->i_addr2, p->mac, 6) == 0) { in read_wifi()
670 if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) != in read_wifi()
676 ack(p, wh); in read_wifi()
679 if (duplicate(p, wh, rc)) { in read_wifi()
686 switch (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) { in read_wifi()
688 read_mgt(p, wh, rc); in read_wifi()
692 read_ctl(p, wh, rc); in read_wifi()
696 read_data(p, wh, rc); in read_wifi()
713 struct ieee80211_frame *wh; in read_tap() local
731 wh = (struct ieee80211_frame*) buf; in read_tap()
734 fill_basic(wh, p); in read_tap()
735 memcpy(wh->i_addr3, src, sizeof(wh->i_addr3)); in read_tap()
736 memcpy(wh->i_addr1, dst, sizeof(wh->i_addr1)); in read_tap()
737 wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; in read_tap()
738 wh->i_fc[1] |= IEEE80211_FC1_DIR_FROMDS; in read_tap()
740 wh->i_fc[1] |= IEEE80211_FC1_WEP; in read_tap()
743 ptr = (char*) (wh+1); in read_tap()
758 ptr = (char*) (wh+1); in read_tap()
763 wep_encrypt(wh, rd, p->wep_key, p->wep_len); in read_tap()
767 send_frame(p, wh, rd); in read_tap()