Openwrt/openwrt/package/wiviz/src/structs.h
Felix Fietkau b3337c54a2 add Wi-viz
SVN-Revision: 1785
2005-08-29 11:30:35 +00:00

170 lines
3.3 KiB
C

/*
This file is part of Wi-viz (http://wiviz.natetrue.com).
Wi-viz is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License v2 as published by
the Free Software Foundation.
Wi-viz is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wi-viz; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//Structure definitions for wireless packets
#define MAX_HOSTS 257
#ifdef DEFINE_TYPES
typedef unsigned short u_short;
typedef unsigned char u_char;
typedef unsigned int u_int;
#endif
typedef enum {
mgt_assocRequest = 0,
mgt_assocResponse = 1,
mgt_reassocRequest = 2,
mgt_reassocResponse = 3,
mgt_probeRequest = 4,
mgt_probeResponse = 5,
mgt_beacon = 8,
mgt_disassoc = 10,
mgt_auth = 11,
mgt_deauth = 12
} wifi_frametype;
typedef struct ieee802_11_hdr {
u_char frame_control;
u_char flags;
#define IEEE80211_TO_DS 0x01
#define IEEE80211_FROM_DS 0x02
#define IEEE80211_MORE_FRAG 0x04
#define IEEE80211_RETRY 0x08
#define IEEE80211_PWR_MGT 0x10
#define IEEE80211_MORE_DATA 0x20
#define IEEE80211_WEP_FLAG 0x40
#define IEEE80211_ORDER_FLAG 0x80
u_short duration;
u_char addr1[6];
u_char addr2[6];
u_char addr3[6];
u_short frag_and_seq;
} ieee802_11_hdr;
typedef struct {
u_char timestamp[8];
u_short bcn_interval;
u_short caps;
#define MGT_CAPS_AP 0x1
#define MGT_CAPS_IBSS 0x2
#define MGT_CAPS_WEP 0x10
} ieee_802_11_mgt_frame;
typedef struct {
u_char tag;
u_char length;
} ieee_802_11_tag;
typedef enum {
tagSSID = 0,
tagRates = 1,
tagChannel = 3,
tagVendorSpecific = 0xDD
} i81tag;
typedef struct prism_hdr {
u_int msg_code;
u_int msg_length;
char cap_device[16];
//char dids[0];
} prism_hdr;
typedef struct prism_did {
u_short did;
u_short status1;
u_short status2;
u_short length;
//int value[0];
} prism_did;
typedef enum prism_did_num {
pdn_host_time = 0x1041,
pdn_mac_time = 0x2041,
pdn_rssi = 0x4041,
pdn_sq = 0x5041,
pdn_datarate = 0x8041,
pdn_framelen = 0xa041
} prism_did_num;
//Structure definitions for data collection
typedef enum {
typeUnknown,
typeAP,
typeSta,
typeAdhocHub
} host_type;
typedef enum {
ssUnknown,
ssUnassociated,
ssAssociated
} sta_state;
typedef enum {
aetUnknown,
aetUnencrypted,
aetEncUnknown,
aetEncWEP,
aetEncWPA
} ap_enc_type;
typedef struct {
u_char bssid[6];
char * ssid[32];
u_char ssidlen;
u_char channel;
u_short flags;
ap_enc_type encryption;
} ap_info;
typedef struct {
sta_state state;
u_char connectedBSSID[6];
} sta_info;
typedef struct {
u_char occupied;
u_char mac[6];
host_type type;
time_t lastSeen;
int RSSI;
ap_info * apInfo;
sta_info * staInfo;
} wiviz_host;
//Primary config struct
typedef struct {
wiviz_host hosts[MAX_HOSTS];
int numHosts;
int readFromWl;
time_t lastKeepAlive;
int channelHopping;
int channelDwellTime;
int channelHopSeq[14];
int channelHopSeqLen;
int curChannel;
int channelHopperPID;
} wiviz_cfg;