summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/wifi.h
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-03-09 17:28:41 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-03-09 17:28:41 +0100
commit26792d8db58b64b31c0b74d0711a479690615de7 (patch)
treefd22fed214e80aeeb9f2b0f91aa678f2d4d936bb /sys/src/9/pc/wifi.h
parent420efd93d728c937f88beeeb6ff80e4182dfe172 (diff)
wifi: add experimental wpa / tkip encryption support
Diffstat (limited to 'sys/src/9/pc/wifi.h')
-rw-r--r--sys/src/9/pc/wifi.h44
1 files changed, 31 insertions, 13 deletions
diff --git a/sys/src/9/pc/wifi.h b/sys/src/9/pc/wifi.h
index 1b04933b6..6099f95dc 100644
--- a/sys/src/9/pc/wifi.h
+++ b/sys/src/9/pc/wifi.h
@@ -1,26 +1,35 @@
+typedef struct Wkey Wkey;
typedef struct Wnode Wnode;
typedef struct Wifi Wifi;
-
typedef struct Wifipkt Wifipkt;
-struct Wifipkt
-{
- uchar fc[2];
- uchar dur[2];
- uchar a1[Eaddrlen];
- uchar a2[Eaddrlen];
- uchar a3[Eaddrlen];
- uchar seq[2];
+enum {
+ Essidlen = 32,
};
+/* cipher */
enum {
- WIFIHDRSIZE = 2+2+3*6+2,
+ TKIP = 1,
+};
+
+struct Wkey
+{
+ int cipher;
+ int len;
+ uchar key[32];
+ uvlong tsc;
};
struct Wnode
{
uchar bssid[Eaddrlen];
- char ssid[32+2];
+ char ssid[Essidlen+2];
+
+ int rsnelen;
+ uchar rsne[256];
+ Wkey txkey[1];
+ Wkey rxkey[5];
+
int ival;
int cap;
int aid;
@@ -37,15 +46,24 @@ struct Wifi
Ref txseq;
void (*transmit)(Wifi*, Wnode*, Block*);
- char essid[32+2];
+ char essid[Essidlen+2];
Wnode *bss;
Wnode node[32];
};
+struct Wifipkt
+{
+ uchar fc[2];
+ uchar dur[2];
+ uchar a1[Eaddrlen];
+ uchar a2[Eaddrlen];
+ uchar a3[Eaddrlen];
+ uchar seq[2];
+};
+
Wifi *wifiattach(Ether *ether, void (*transmit)(Wifi*, Wnode*, Block*));
void wifiiq(Wifi*, Block*);
long wifistat(Wifi*, void*, long, ulong);
long wifictl(Wifi*, void*, long);
-