From b6cac7486c697870469c80ff3542d8b01c6705a4 Mon Sep 17 00:00:00 2001 From: mark Date: Sat, 21 Aug 1999 16:51:49 +0000 Subject: [PATCH] Initial revision --- README | 0 doc/README | 0 man/README | 0 scripts/README | 0 src/README | 0 src/am930/README | 0 src/config.mk | 6 + src/include/README | 0 src/include/wlan/README | 0 src/include/wlan/p80211hdr.h | 220 +++ src/include/wlan/p80211ioctl.h | 61 + src/include/wlan/p80211mgmt.h | 522 +++++++ src/include/wlan/p80211msg.h | 321 +++++ src/include/wlan/p80211types.h | 613 ++++++++ src/include/wlan/version.h | 3 + src/include/wlan/wlan_compat.h | 487 +++++++ src/p80211/README | 0 src/prism2/README | 0 src/shared/README | 0 src/shared/p80211metamib.c | 2086 +++++++++++++++++++++++++++ src/shared/p80211metamsg.c | 2421 ++++++++++++++++++++++++++++++++ src/shared/p80211types.c | 405 ++++++ src/tstmeta/Makefile | 12 + src/tstmeta/README | 0 src/tstmeta/tstmeta | Bin 0 -> 40007 bytes src/tstmeta/tstmeta.c | 126 ++ src/wlanctl/Makefile | 23 + src/wlanctl/README | 0 src/wlanctl/main.c | 744 ++++++++++ src/wlanctl/prmib.c | 335 +++++ src/wlanctl/prmib.h | 29 + src/wlanctl/wlanctl | Bin 0 -> 22721 bytes src/wlanctl/wlanctl.h | 15 + src/wland/README | 0 34 files changed, 8429 insertions(+) create mode 100644 README create mode 100644 doc/README create mode 100644 man/README create mode 100644 scripts/README create mode 100644 src/README create mode 100644 src/am930/README create mode 100644 src/config.mk create mode 100644 src/include/README create mode 100644 src/include/wlan/README create mode 100644 src/include/wlan/p80211hdr.h create mode 100644 src/include/wlan/p80211ioctl.h create mode 100644 src/include/wlan/p80211mgmt.h create mode 100644 src/include/wlan/p80211msg.h create mode 100644 src/include/wlan/p80211types.h create mode 100644 src/include/wlan/version.h create mode 100644 src/include/wlan/wlan_compat.h create mode 100644 src/p80211/README create mode 100644 src/prism2/README create mode 100644 src/shared/README create mode 100644 src/shared/p80211metamib.c create mode 100644 src/shared/p80211metamsg.c create mode 100644 src/shared/p80211types.c create mode 100644 src/tstmeta/Makefile create mode 100644 src/tstmeta/README create mode 100755 src/tstmeta/tstmeta create mode 100644 src/tstmeta/tstmeta.c create mode 100644 src/wlanctl/Makefile create mode 100644 src/wlanctl/README create mode 100644 src/wlanctl/main.c create mode 100644 src/wlanctl/prmib.c create mode 100644 src/wlanctl/prmib.h create mode 100755 src/wlanctl/wlanctl create mode 100644 src/wlanctl/wlanctl.h create mode 100644 src/wland/README diff --git a/README b/README new file mode 100644 index 0000000..e69de29 diff --git a/doc/README b/doc/README new file mode 100644 index 0000000..e69de29 diff --git a/man/README b/man/README new file mode 100644 index 0000000..e69de29 diff --git a/scripts/README b/scripts/README new file mode 100644 index 0000000..e69de29 diff --git a/src/README b/src/README new file mode 100644 index 0000000..e69de29 diff --git a/src/am930/README b/src/am930/README new file mode 100644 index 0000000..e69de29 diff --git a/src/config.mk b/src/config.mk new file mode 100644 index 0000000..fe7835b --- /dev/null +++ b/src/config.mk @@ -0,0 +1,6 @@ +LINUX = /usr/src/linux +PCMCIA = /usr/src/pcmcia-cs-3.0.13 +MODULES_DIR=/lib/modules/2.2.5-15 +UTS_RELEASE=2.2.5 +INST_EXEDIR=/sbin +DESTDIR= diff --git a/src/include/README b/src/include/README new file mode 100644 index 0000000..e69de29 diff --git a/src/include/wlan/README b/src/include/wlan/README new file mode 100644 index 0000000..e69de29 diff --git a/src/include/wlan/p80211hdr.h b/src/include/wlan/p80211hdr.h new file mode 100644 index 0000000..23d561f --- /dev/null +++ b/src/include/wlan/p80211hdr.h @@ -0,0 +1,220 @@ +/* p80211hdr.h: Macros, types, and functions for handling 802.11 MAC headers +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* This file declares the constants and types used in the interface +* between a wlan driver and the user mode utilities. +* +* Note: Constant values are always in HOST byte order. To assign +* values to multi-byte fields they _must_ be converted to +* ieee byte order. To retrieve multi-byte values from incoming +* frames, they must be converted to host order. +* +* All functions declared here are implemented in p80211.c +* -------------------------------------------------------------------- +*/ + +#ifndef _P80211HDR_H +#define _P80211HDR_H + +#ifndef _WLAN_COMPAT_H +#include +#endif + + +/*=============================================================*/ +/*--- Constants -----------------------------------------------*/ +/*=============================================================*/ + +/*--- Sizes -----------------------------------------------*/ +#define WLAN_ADDR_LEN 6 +#define WLAN_CRC_LEN 4 +#define WLAN_BSSID_LEN 6 +#define WLAN_BSS_TS_LEN 8 +#define WLAN_HDR_A3_LEN 24 +#define WLAN_HDR_A4_LEN 30 +#define WLAN_SSID_MAXLEN 32 +#define WLAN_DATA_MAXLEN 2312 +#define WLAN_A3FR_MAXLEN (WLAN_HDR_A3_LEN + WLAN_DATA_MAXLEN + WLAN_CRC_LEN) +#define WLAN_BEACON_FR_MAXLEN (WLAN_HDR_A3_LEN + 334) +#define WLAN_ATIM_FR_MAXLEN (WLAN_HDR_A3_LEN + 0) +#define WLAN_DISASSOC_FR_MAXLEN (WLAN_HDR_A3_LEN + 2) +#define WLAN_ASSOCREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 48) +#define WLAN_ASSOCRESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 16) +#define WLAN_REASSOCREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 54) +#define WLAN_REASSOCRESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 16) +#define WLAN_PROBEREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 44) +#define WLAN_PROBERESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 78) +#define WLAN_AUTHEN_FR_MAXLEN (WLAN_HDR_A3_LEN + 261) +#define WLAN_DEATHEN_FR_MAXLEN (WLAN_HDR_A3_LEN + 2) +#define WLAN_WEP_NKEYS 4 +#define WLAN_WEP_KEYLEN 5 +#define WLAN_CHALLENGE_IE_LEN 130 +#define WLAN_CHALLENGE_LEN 128 +#define WLAN_WEP_IV_LEN 4 +#define WLAN_WEP_ICV_LEN 4 + +/*--- Frame Control Field -------------------------------------*/ +/* Frame Types */ +#define WLAN_FTYPE_MGMT 0x00 +#define WLAN_FTYPE_CTL 0x01 +#define WLAN_FTYPE_DATA 0x02 + +/* Frame subtypes */ +/* Management */ +#define WLAN_FSTYPE_ASSOCREQ 0x00 +#define WLAN_FSTYPE_ASSOCRESP 0x01 +#define WLAN_FSTYPE_REASSOCREQ 0x02 +#define WLAN_FSTYPE_REASSOCRESP 0x03 +#define WLAN_FSTYPE_PROBEREQ 0x04 +#define WLAN_FSTYPE_PROBERESP 0x05 +#define WLAN_FSTYPE_BEACON 0x08 +#define WLAN_FSTYPE_ATIM 0x09 +#define WLAN_FSTYPE_DISASSOC 0x0a +#define WLAN_FSTYPE_AUTHEN 0x0b +#define WLAN_FSTYPE_DEAUTHEN 0x0c + +/* Control */ +#define WLAN_FSTYPE_PSPOLL 0x0a +#define WLAN_FSTYPE_RTS 0x0b +#define WLAN_FSTYPE_CTS 0x0c +#define WLAN_FSTYPE_ACK 0x0d +#define WLAN_FSTYPE_CFEND 0x0e +#define WLAN_FSTYPE_CFENDCFACK 0x0f + +/* Data */ +#define WLAN_FSTYPE_DATAONLY 0x00 +#define WLAN_FSTYPE_DATA_CFACK 0x01 +#define WLAN_FSTYPE_DATA_CFPOLL 0x02 +#define WLAN_FSTYPE_DATA_CFACK_CFPOLL 0x03 +#define WLAN_FSTYPE_NULL 0x04 +#define WLAN_FSTYPE_CFACK 0x05 +#define WLAN_FSTYPE_CFPOLL 0x06 +#define WLAN_FSTYPE_CFACK_CFPOLL 0x07 + +/*--- FC Macros ----------------------------------------------*/ +/* Macros to get/set the bitfields of the Frame Control Field */ +/* GET_FC_??? - takes the host byte-order value of an FC */ +/* and retrieves the value of one of the */ +/* bitfields and moves that value so its lsb is */ +/* in bit 0. */ +/* SET_FC_??? - takes a host order value for one of the FC */ +/* bitfields and moves it to the proper bit */ +/* location for ORing into a host order FC. */ +/* To send the FC produced from SET_FC_???, */ +/* one must put the bytes in IEEE order. */ +/* e.g. */ +/* printf("the frame subtype is %x", */ +/* GET_FC_FTYPE( ieee2host( rx.fc ))) */ +/* */ +/* tx.fc = host2ieee( SET_FC_FTYPE(WLAN_FTYP_CTL) | */ +/* SET_FC_FSTYPE(WLAN_FSTYPE_RTS) ); */ +/*------------------------------------------------------------*/ + +#define WLAN_GET_FC_PVER(n) (((UINT16)(n)) & (BIT0 | BIT1)) +#define WLAN_GET_FC_FTYPE(n) ((((UINT16)(n)) & (BIT2 | BIT3)) >> 2) +#define WLAN_GET_FC_FSTYPE(n) ((((UINT16)(n)) & (BIT4|BIT5|BIT6|BIT7)) >> 4) +#define WLAN_GET_FC_TODS(n) ((((UINT16)(n)) & (BIT8)) >> 8) +#define WLAN_GET_FC_FROMDS(n) ((((UINT16)(n)) & (BIT9)) >> 9) +#define WLAN_GET_FC_MOREFRAG(n) ((((UINT16)(n)) & (BIT10)) >> 10) +#define WLAN_GET_FC_RETRY(n) ((((UINT16)(n)) & (BIT11)) >> 11) +#define WLAN_GET_FC_PWRMGT(n) ((((UINT16)(n)) & (BIT12)) >> 12) +#define WLAN_GET_FC_MOREDATA(n) ((((UINT16)(n)) & (BIT13)) >> 13) +#define WLAN_GET_FC_ISWEP(n) ((((UINT16)(n)) & (BIT14)) >> 14) +#define WLAN_GET_FC_ORDER(n) ((((UINT16)(n)) & (BIT15)) >> 15) + +#define WLAN_SET_FC_PVER(n) ((UINT16)(n)) +#define WLAN_SET_FC_FTYPE(n) (((UINT16)(n)) << 2) +#define WLAN_SET_FC_FSTYPE(n) (((UINT16)(n)) << 4) +#define WLAN_SET_FC_TODS(n) (((UINT16)(n)) << 8) +#define WLAN_SET_FC_FROMDS(n) (((UINT16)(n)) << 9) +#define WLAN_SET_FC_MOREFRAG(n) (((UINT16)(n)) << 10) +#define WLAN_SET_FC_RETRY(n) (((UINT16)(n)) << 11) +#define WLAN_SET_FC_PWRMGT(n) (((UINT16)(n)) << 12) +#define WLAN_SET_FC_MOREDATA(n) (((UINT16)(n)) << 13) +#define WLAN_SET_FC_ISWEP(n) (((UINT16)(n)) << 14) +#define WLAN_SET_FC_ORDER(n) (((UINT16)(n)) << 15) + +/*--- Duration Macros ----------------------------------------*/ +/* Macros to get/set the bitfields of the Duration Field */ +/* - the duration value is only valid when bit15 is zero */ +/* - the firmware handles these values, so I'm not going */ +/* these macros right now. */ +/*------------------------------------------------------------*/ + +/*--- Sequence Control Macros -------------------------------*/ +/* Macros to get/set the bitfields of the Sequence Control */ +/* Field. */ +/*------------------------------------------------------------*/ +#define WLAN_GET_SEQ_FRGNUM(n) (((UINT16)(n)) & (BIT0|BIT1|BIT2|BIT3)) +#define WLAN_GET_SEQ_SEQNUM(n) ((((UINT16)(n)) & (~(BIT0|BIT1|BIT2|BIT3))) >> 4) + +/*--- Data ptr macro -----------------------------------------*/ +/* Creates a UINT8* to the data portion of a frame */ +/* Assumes you're passing in a ptr to the beginning of the hdr*/ +/*------------------------------------------------------------*/ +#define WLAN_HDR_A3_DATAP(p) (((UINT8*)(p)) + WLAN_HDR_A3_LEN) +#define WLAN_HDR_A4_DATAP(p) (((UINT8*)(p)) + WLAN_HDR_A4_LEN) + +/*=============================================================*/ +/*--- Types and Structures ------------------------------------*/ +/*=============================================================*/ + +/* BSS Timestamp */ +typedef UINT8 wlan_bss_ts_t[WLAN_BSS_TS_LEN]; + +/* Generic 802.11 Header types */ +__WLAN_PRAGMA_PACK1__ +typedef struct p80211_hdr_a3 +{ + UINT16 fc __WLAN_ATTRIB_PACK__; + UINT16 dur __WLAN_ATTRIB_PACK__; + UINT8 a1[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT8 a2[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT8 a3[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT16 seq __WLAN_ATTRIB_PACK__; +} p80211_hdr_a3_t; +__WLAN_PRAGMA_PACKDFLT__ + +__WLAN_PRAGMA_PACK1__ +typedef struct p80211_hdr_a4 +{ + UINT16 fc __WLAN_ATTRIB_PACK__; + UINT16 dur __WLAN_ATTRIB_PACK__; + UINT8 a1[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT8 a2[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT8 a3[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; + UINT16 seq __WLAN_ATTRIB_PACK__; + UINT8 a4[WLAN_ADDR_LEN] __WLAN_ATTRIB_PACK__; +} p80211_hdr_a4_t; +__WLAN_PRAGMA_PACKDFLT__ + +typedef union p80211_hdr +{ + p80211_hdr_a3_t a3; + p80211_hdr_a4_t a4; +} p80211_hdr_t; + +/*=============================================================*/ +/*--- Functions -----------------------------------------------*/ +/*=============================================================*/ + +void p802addr_to_str( char *buf, UINT8 *addr); + +#endif /* _P80211HDR_H */ diff --git a/src/include/wlan/p80211ioctl.h b/src/include/wlan/p80211ioctl.h new file mode 100644 index 0000000..d78dc6e --- /dev/null +++ b/src/include/wlan/p80211ioctl.h @@ -0,0 +1,61 @@ +/* p80211ioctl.h: Declares constants and types for the p80211 ioctls +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* -------------------------------------------------------------------- +*/ + +#ifndef _P80211IOCTL_H +#define _P80211IOCTL_H + +/*====================================================================*/ +/*----- Constants ----------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* p80211 ioctl "request" codes. See argument 2 of ioctl(2). */ +/*--------------------------------------------------------------------*/ +#define P80211_IFTEST (SIOCDEVPRIVATE + 0) +#define P80211_IFREQ (SIOCDEVPRIVATE + 1) + +/*====================================================================*/ +/*----- Macros -------------------------------------------------------*/ + +/*====================================================================*/ +/*----- Types --------------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* A ptr to the following structure type is passed as the third */ +/* argument to the ioctl system call when issuing a request to the */ +/* p80211 module. */ +/*--------------------------------------------------------------------*/ +typedef struct p80211ioctl_req +{ + char name[16] __WLAN_ATTRIB_PACK__; + void *data __WLAN_ATTRIB_PACK__; + UINT16 result __WLAN_ATTRIB_PACK__; + UINT16 len __WLAN_ATTRIB_PACK__; +} p80211ioctl_req_t; + +/*====================================================================*/ +/*----- External Declarations ----------------------------------------*/ + +/*====================================================================*/ +/*----- Function Prototypes ------------------------------------------*/ + +#endif /* _P80211IOCTL_H */ diff --git a/src/include/wlan/p80211mgmt.h b/src/include/wlan/p80211mgmt.h new file mode 100644 index 0000000..ed730d6 --- /dev/null +++ b/src/include/wlan/p80211mgmt.h @@ -0,0 +1,522 @@ +/* p80211mgmt.h: Macros, types, and functions to handle 802.11 mgmt frames +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* This file declares the constants and types used in the interface +* between a wlan driver and the user mode utilities. +* +* Note: Constant values are always in HOST byte order. To assign +* values to multi-byte fields they _must_ be converted to +* ieee byte order. To retrieve multi-byte values from incoming +* frames, they must be converted to host order. +* +* Note: The len member of the frame structure does NOT!!! include +* the MAC CRC. Therefore, the len field on rx'd frames should +* have 4 subtracted from it. +* +* All functions declared here are implemented in p80211.c +* +* The types, macros, and functions defined here are primarily +* used for encoding and decoding management frames. They are +* designed to follow these patterns of use: +* +* DECODE: +* 1) a frame of length len is received into buffer b +* 2) using the hdr structure and macros, we determine the type +* 3) an appropriate mgmt frame structure, mf, is allocated and zeroed +* 4) mf.hdr = b +* mf.buf = b +* mf.len = len +* 5) call mgmt_decode( mf ) +* 6) the frame field pointers in mf are now set. Note that any +* multi-byte frame field values accessed using the frame field +* pointers are in ieee byte order and will have to be converted +* to host order. +* +* ENCODE: +* 1) Library client allocates buffer space for maximum length +* frame of the desired type +* 2) Library client allocates a mgmt frame structure, called mf, +* of the desired type +* 3) Set the following: +* mf.type = +* mf.buf = +* 4) call mgmt_encode( mf ) +* 5) all of the fixed field pointers and fixed length information element +* pointers in mf are now set to their respective locations in the +* allocated space (fortunately, all variable length information elements +* fall at the end of their respective frames). +* 5a) The length field is set to include the last of the fixed and fixed +* length fields. It may have to be updated for optional or variable +* length information elements. +* 6) Optional and variable length information elements are special cases +* and must be handled individually by the client code. +* -------------------------------------------------------------------- +*/ + +#ifndef _P80211MGMT_H +#define _P80211MGMT_H + +#ifndef _WLAN_COMPAT_H +#include +#endif + +#ifndef _P80211HDR_H +#include +#endif + + +/*=============================================================*/ +/*--- Constants & Macros --------------------------------------*/ +/*=============================================================*/ + +/*== Information Element IDs ====================*/ +#define WLAN_EID_SSID 0 +#define WLAN_EID_SUPP_RATES 1 +#define WLAN_EID_FH_PARMS 2 +#define WLAN_EID_DS_PARMS 3 +#define WLAN_EID_CF_PARMS 4 +#define WLAN_EID_TIM 5 +#define WLAN_EID_IBSS_PARMS 6 +/*-- values 7-15 reserved --*/ +#define WLAN_EID_CHALLENGE 16 +/*-- values 17-31 reserved for challenge text extension --*/ +/*-- values 32-255 reserved --*/ + +/*== Reason Codes ===============================*/ +#define WLAN_MGMT_REASON_RSVD 0 +#define WLAN_MGMT_REASON_UNSPEC 1 +#define WLAN_MGMT_REASON_PRIOR_AUTH_INVALID 2 +#define WLAN_MGMT_REASON_DEAUTH_LEAVING 3 +#define WLAN_MGMT_REASON_DISASSOC_INACTIVE 4 +#define WLAN_MGMT_REASON_DISASSOC_AP_BUSY 5 +#define WLAN_MGMT_REASON_CLASS2_NONAUTH 6 +#define WLAN_MGMT_REASON_CLASS3_NONASSOC 7 +#define WLAN_MGMT_REASON_DISASSOC_STA_HASLEFT 8 +#define WLAN_MGMT_REASON_CANT_ASSOC_NONAUTH 9 + +/*== Status Codes ===============================*/ +#define WLAN_MGMT_STATUS_SUCCESS 0 +#define WLAN_MGMT_STATUS_UNSPEC_FAILURE 1 +#define WLAN_MGMT_STATUS_CAPS_UNSUPPORTED 10 +#define WLAN_MGMT_STATUS_REASSOC_NO_ASSOC 11 +#define WLAN_MGMT_STATUS_ASSOC_DENIED_UNSPEC 12 +#define WLAN_MGMT_STATUS_UNSUPPORTED_AUTHALG 13 +#define WLAN_MGMT_STATUS_RX_AUTH_NOSEQ 14 +#define WLAN_MGMT_STATUS_CHALLENGE_FAIL 15 +#define WLAN_MGMT_STATUS_AUTH_TIMEOUT 16 +#define WLAN_MGMT_STATUS_ASSOC_DENIED_BUSY 17 +#define WLAN_MGMT_STATUS_ASSOC_DENIED_RATES 18 + +/*== Capability Field ===========================*/ +#define WLAN_GET_MGMT_CAP_INFO_ESS(n) ((n) & BIT0) +#define WLAN_GET_MGMT_CAP_INFO_IBSS(n) (((n) & BIT1) >> 1) +#define WLAN_GET_MGMT_CAP_INFO_CFPOLLABLE(n) (((n) & BIT2) >> 2) +#define WLAN_GET_MGMT_CAP_INFO_CFPOLLREQ(n) (((n) & BIT3) >> 3) +#define WLAN_GET_MGMT_CAP_INFO_PRIVACY(n) (((n) & BIT4) >> 4) + +#define WLAN_SET_MGMT_CAP_INFO_ESS(n) (n) +#define WLAN_SET_MGMT_CAP_INFO_IBSS(n) ((n) << 1) +#define WLAN_SET_MGMT_CAP_INFO_CFPOLLABLE(n) ((n) << 2) +#define WLAN_SET_MGMT_CAP_INFO_CFPOLLREQ(n) ((n) << 3) +#define WLAN_SET_MGMT_CAP_INFO_PRIVACY(n) ((n) << 4) + +/*== Auth Algorithm Field ===========================*/ +#define WLAN_AUTH_ALG_OPENSYSTEM 0 +#define WLAN_AUTH_ALG_SHAREDKEY 1 + +/*== Management Frame Field Offsets =============*/ +/* Note: Not all fields are listed because of variable lengths, */ +/* see the code in p80211.c to see how we search for fields */ +/* Note: These offsets are from the start of the frame data */ + +#define WLAN_BEACON_OFF_TS 0 +#define WLAN_BEACON_OFF_BCN_INT 8 +#define WLAN_BEACON_OFF_CAPINFO 10 +#define WLAN_BEACON_OFF_SSID 12 + +#define WLAN_DISASSOC_OFF_REASON 0 + +#define WLAN_ASSOCREQ_OFF_CAP_INFO 0 +#define WLAN_ASSOCREQ_OFF_LISTEN_INT 2 +#define WLAN_ASSOCREQ_OFF_SSID 4 + +#define WLAN_ASSOCRESP_OFF_CAP_INFO 0 +#define WLAN_ASSOCRESP_OFF_STATUS 2 +#define WLAN_ASSOCRESP_OFF_AID 4 +#define WLAN_ASSOCRESP_OFF_SUPP_RATES 6 + +#define WLAN_REASSOCREQ_OFF_CAP_INFO 0 +#define WLAN_REASSOCREQ_OFF_LISTEN_INT 2 +#define WLAN_REASSOCREQ_OFF_CURR_AP 4 +#define WLAN_REASSOCREQ_OFF_SSID 10 + +#define WLAN_REASSOCRESP_OFF_CAP_INFO 0 +#define WLAN_REASSOCRESP_OFF_STATUS 2 +#define WLAN_REASSOCRESP_OFF_AID 4 +#define WLAN_REASSOCRESP_OFF_SUPP_RATES 6 + +#define WLAN_PROBEREQ_OFF_SSID 0 + +#define WLAN_PROBERESP_OFF_TS 0 +#define WLAN_PROBERESP_OFF_BCN_INT 8 +#define WLAN_PROBERESP_OFF_CAP_INFO 10 +#define WLAN_PROBERESP_OFF_SSID 12 + +#define WLAN_AUTHEN_OFF_AUTH_ALG 0 +#define WLAN_AUTHEN_OFF_AUTH_SEQ 2 +#define WLAN_AUTHEN_OFF_STATUS 4 +#define WLAN_AUTHEN_OFF_CHALLENGE 6 + +#define WLAN_DEAUTHEN_OFF_REASON 0 + +/*=============================================================*/ +/*--- Types and Structures ------------------------------------*/ +/*=============================================================*/ + +/*== Information Element Types ====================*/ +/* prototype structure, all IEs start with these members */ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; +} wlan_ie_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- Service Set Identity (SSID) -----------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_ssid +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 ssid[1] __WLAN_ATTRIB_PACK__; /* may be zero, ptrs may overlap */ +} wlan_ie_ssid_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- Supported Rates -----------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_supp_rates +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 rates[1] __WLAN_ATTRIB_PACK__; /* had better be at LEAST one! */ +} wlan_ie_supp_rates_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- FH Parameter Set ----------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_fh_parms +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT16 dwell __WLAN_ATTRIB_PACK__; + UINT8 hopset __WLAN_ATTRIB_PACK__; + UINT8 hoppattern __WLAN_ATTRIB_PACK__; + UINT8 hopindex __WLAN_ATTRIB_PACK__; +} wlan_ie_fh_parms_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- DS Parameter Set ----------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_ds_parms +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 curr_ch __WLAN_ATTRIB_PACK__; +} wlan_ie_ds_parms_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- CF Parameter Set ----------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_cf_parms +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 cfp_cnt __WLAN_ATTRIB_PACK__; + UINT8 cfp_period __WLAN_ATTRIB_PACK__; + UINT16 cfp_maxdur __WLAN_ATTRIB_PACK__; + UINT16 cfp_durremaining __WLAN_ATTRIB_PACK__; +} wlan_ie_cf_parms_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- TIM ------------------------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_tim +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 dtim_cnt __WLAN_ATTRIB_PACK__; + UINT8 dtim_period __WLAN_ATTRIB_PACK__; + UINT8 bitmap_ctl __WLAN_ATTRIB_PACK__; + UINT8 virt_bm[1] __WLAN_ATTRIB_PACK__; +} wlan_ie_tim_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- IBSS Parameter Set ---------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_ibss_parms +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT16 atim_win __WLAN_ATTRIB_PACK__; +} wlan_ie_ibss_parms_t; +__WLAN_PRAGMA_PACKDFLT__ + +/*-- Challenge Text ------------------------------*/ +__WLAN_PRAGMA_PACK1__ +typedef struct wlan_ie_challenge +{ + UINT8 eid __WLAN_ATTRIB_PACK__; + UINT8 len __WLAN_ATTRIB_PACK__; + UINT8 challenge[1] __WLAN_ATTRIB_PACK__; +} wlan_ie_challenge_t; +__WLAN_PRAGMA_PACKDFLT__ + + +/*=================================================*/ +/*== Frame Types ==================================*/ +/* prototype structure, all mgmt frame types will start with these members */ +typedef struct wlan_fr_mgmt +{ + UINT16 type; + UINT16 len; /* DOES NOT include CRC !!!!*/ + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + /*-- info elements ----------*/ +} wlan_fr_mgmt_t; + +/*-- Beacon ---------------------------------------*/ +typedef struct wlan_fr_beacon +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT64 *ts; + UINT16 *bcn_int; + UINT16 *cap_info; + /*-- info elements ----------*/ + wlan_ie_ssid_t *ssid; + wlan_ie_supp_rates_t *supp_rates; + wlan_ie_fh_parms_t *fh_parms; + wlan_ie_ds_parms_t *ds_parms; + wlan_ie_cf_parms_t *cf_parms; + wlan_ie_ibss_parms_t *ibss_parms; + wlan_ie_tim_t *tim; + +} wlan_fr_beacon_t; + + +/*-- IBSS ATIM ------------------------------------*/ +typedef struct wlan_fr_ibssatim +{ + UINT16 type; + UINT16 len; + UINT8* buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + + /*-- fixed fields -----------*/ + /*-- info elements ----------*/ + + /* this frame type has a null body */ + +} wlan_fr_ibssatim_t; + +/*-- Disassociation -------------------------------*/ +typedef struct wlan_fr_disassoc +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *reason; + + /*-- info elements ----------*/ + +} wlan_fr_disassoc_t; + +/*-- Association Request --------------------------*/ +typedef struct wlan_fr_assocreq +{ + UINT16 type; + UINT16 len; + UINT8* buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *cap_info; + UINT16 *listen_int; + /*-- info elements ----------*/ + wlan_ie_ssid_t *ssid; + wlan_ie_supp_rates_t *supp_rates; + +} wlan_fr_assocreq_t; + +/*-- Association Response -------------------------*/ +typedef struct wlan_fr_assocresp +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *cap_info; + UINT16 *status; + UINT16 *aid; + /*-- info elements ----------*/ + wlan_ie_supp_rates_t *supp_rates; + +} wlan_fr_assocresp_t; + +/*-- Reassociation Request ------------------------*/ +typedef struct wlan_fr_reassocreq +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *cap_info; + UINT16 *listen_int; + UINT8 *curr_ap; + /*-- info elements ----------*/ + wlan_ie_ssid_t *ssid; + wlan_ie_supp_rates_t *supp_rates; + +} wlan_fr_reassocreq_t; + +/*-- Reassociation Response -----------------------*/ +typedef struct wlan_fr_reassocresp +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *cap_info; + UINT16 *status; + UINT16 *aid; + /*-- info elements ----------*/ + wlan_ie_supp_rates_t *supp_rates; + +} wlan_fr_reassocresp_t; + +/*-- Probe Request --------------------------------*/ +typedef struct wlan_fr_probereq +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + /*-- info elements ----------*/ + wlan_ie_ssid_t *ssid; + wlan_ie_supp_rates_t *supp_rates; + +} wlan_fr_probereq_t; + +/*-- Probe Response -------------------------------*/ +typedef struct wlan_fr_proberesp +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT64 *ts; + UINT16 *bcn_int; + UINT16 *cap_info; + /*-- info elements ----------*/ + wlan_ie_ssid_t *ssid; + wlan_ie_supp_rates_t *supp_rates; + wlan_ie_fh_parms_t *fh_parms; + wlan_ie_ds_parms_t *ds_parms; + wlan_ie_cf_parms_t *cf_parms; + wlan_ie_ibss_parms_t *ibss_parms; +} wlan_fr_proberesp_t; + +/*-- Authentication -------------------------------*/ +typedef struct wlan_fr_authen +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *auth_alg; + UINT16 *auth_seq; + UINT16 *status; + /*-- info elements ----------*/ + wlan_ie_challenge_t *challenge; + +} wlan_fr_authen_t; + +/*-- Deauthenication -----------------------------*/ +typedef struct wlan_fr_deauthen +{ + UINT16 type; + UINT16 len; + UINT8 *buf; + p80211_hdr_t *hdr; + void *priv; /* used for target specific data, skb in Linux */ + /*-- fixed fields -----------*/ + UINT16 *reason; + + /*-- info elements ----------*/ + +} wlan_fr_deauthen_t; + + +void wlan_mgmt_encode_beacon( wlan_fr_beacon_t *f ); +void wlan_mgmt_decode_beacon( wlan_fr_beacon_t *f ); +void wlan_mgmt_encode_disassoc( wlan_fr_disassoc_t *f ); +void wlan_mgmt_decode_disassoc( wlan_fr_disassoc_t *f ); +void wlan_mgmt_encode_assocreq( wlan_fr_assocreq_t *f ); +void wlan_mgmt_decode_assocreq( wlan_fr_assocreq_t *f ); +void wlan_mgmt_encode_assocresp( wlan_fr_assocresp_t *f ); +void wlan_mgmt_decode_assocresp( wlan_fr_assocresp_t *f ); +void wlan_mgmt_encode_reassocreq( wlan_fr_reassocreq_t *f ); +void wlan_mgmt_decode_reassocreq( wlan_fr_reassocreq_t *f ); +void wlan_mgmt_encode_reassocresp( wlan_fr_reassocresp_t *f ); +void wlan_mgmt_decode_reassocresp( wlan_fr_reassocresp_t *f ); +void wlan_mgmt_encode_probereq( wlan_fr_probereq_t *f ); +void wlan_mgmt_decode_probereq( wlan_fr_probereq_t *f ); +void wlan_mgmt_encode_proberesp( wlan_fr_proberesp_t *f ); +void wlan_mgmt_decode_proberesp( wlan_fr_proberesp_t *f ); +void wlan_mgmt_encode_authen( wlan_fr_authen_t *f ); +void wlan_mgmt_decode_authen( wlan_fr_authen_t *f ); +void wlan_mgmt_encode_deauthen( wlan_fr_deauthen_t *f ); +void wlan_mgmt_decode_deauthen( wlan_fr_deauthen_t *f ); + + +#endif /* _P80211MGMT_H */ diff --git a/src/include/wlan/p80211msg.h b/src/include/wlan/p80211msg.h new file mode 100644 index 0000000..ee97266 --- /dev/null +++ b/src/include/wlan/p80211msg.h @@ -0,0 +1,321 @@ +/* p80211msg.h: Macros, constants, types, and funcs for req and ind messages +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* Note: Constant values are always in HOST byte order. +* +* All functions and statics declared here are implemented in p80211msg.c +* -------------------------------------------------------------------- +*/ +#ifndef _P80211MSG_H +#define _P80211MSG_H + +#ifndef _WLAN_COMPAT_H +#include +#endif + +/*====================================================================*/ +/*----- Macros -------------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* The following macros are used to manipulate the 'offset' field in */ +/* the metadata. These are only used when the metadata is for */ +/* command arguments to determine if the data item is required, and */ +/* whether the metadata item is for a request command, confirm */ +/* command or both. Additionally, there's a macro to get the actual */ +/* offset value of the field. */ +/*--------------------------------------------------------------------*/ + +#define ISREQUIRED (0x80000000UL) +#define ISREQUEST (0x40000000UL) +#define ISCONFIRM (0x20000000UL) + +#define P80211ITEM_ISREQUIRED(offset) (((UINT32)(offset & ISREQUIRED)) \ + >> 31 ) +#define P80211ITEM_ISREQUEST(offset) (((UINT32)(offset & ISREQUEST)) \ + >> 30 ) +#define P80211ITEM_ISCONFIRM(offset) (((UINT32)(offset & ISCONFIRM)) \ + >> 29 ) + +#define P80211ITEM_GET_OFFSET(offset) ( ((UINT32)(offset)) & \ + (~(ISREQUIRED | ISREQUEST | \ + ISCONFIRM)) ) + +#define P80211ITEM_MKOFFSET(d, r, c, offset) ( (d|r|c) | ((UINT32)(offset)) ) + +/*====================================================================*/ +/*----- Constants ----------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* Request messages */ +/*--------------------------------------------------------------------*/ +#define P80211MSG_REQ_MIB_GET 1 /* 802.11 */ +#define P80211MSG_REQ_MIB_SET 2 /* 802.11 */ +#define P80211MSG_REQ_POWERMGMT 3 /* 802.11 */ +#define P80211MSG_REQ_SCAN 4 /* 802.11 */ +#define P80211MSG_REQ_JOIN 5 /* 802.11 */ +#define P80211MSG_REQ_AUTHENTICATE 6 /* 802.11 */ +#define P80211MSG_REQ_DEAUTHENTICATE 7 /* 802.11 */ +#define P80211MSG_REQ_ASSOCIATE 8 /* 802.11 */ +#define P80211MSG_REQ_REASSOCIATE 9 /* 802.11 */ +#define P80211MSG_REQ_DISASSOCIATE 10 /* 802.11 */ +#define P80211MSG_REQ_RESET 11 /* 802.11 */ +#define P80211MSG_REQ_START 12 /* 802.11 */ +/* 13-20 reserved */ + +/*--------------------------------------------------------------------*/ +/* Indication messages */ +/*--------------------------------------------------------------------*/ +#define P80211MSG_IND_AUTHENTICATE 21 /* 802.11 */ +#define P80211MSG_IND_DEAUTHENTICATE 22 /* 802.11 */ +#define P80211MSG_IND_ASSOCIATE 23 /* 802.11 */ +#define P80211MSG_IND_REASSOCIATE 24 /* 802.11 */ +#define P80211MSG_IND_DISASSOCIATE 25 /* 802.11 */ +/* 26-40 reserved */ + +/*--------------------------------------------------------------------*/ +/* Confirm messages */ +/*--------------------------------------------------------------------*/ +/* For now, these are embedded in the REQ messages. Just in case, 41-60 reserved */ + + +/*====================================================================*/ +/*----- Types --------------------------------------------------------*/ + +/*====================================================================*/ +/*----- Message Structure Types --------------------------------------*/ + +/* The following structures are definitions for request/confirm */ +/* messages followed by all the indication definitions. */ + +/*--------------------------------------------------------------------*/ +/* Request/Confirm structures */ +/*--------------------------------------------------------------------*/ +typedef struct p80211msg_req_mib_get +{ + UINT32 msgcode; + p80211item_uint32_t mibid; + p80211item_uint32_t resultcode; + p80211item_coll_t mibvalue; + p80211item_uint32_t uint32val; + p80211item_pstr255_t pstrval; +} p80211msg_req_mib_get_t; + + +typedef struct p80211msg_req_mib_set +{ + UINT32 msgcode; + p80211item_uint32_t mibid; + p80211item_uint32_t resultcode; + p80211item_coll_t mibvalue; + p80211item_uint32_t uint32val; + p80211item_pstr255_t pstrval; +} p80211msg_req_mib_set_t; + + +typedef struct p80211msg_req_powermgmt +{ + UINT32 msgcode; + p80211item_uint32_t mode; + p80211item_uint32_t wakeup; + p80211item_uint32_t rxdtims; + p80211item_uint32_t resultcode; +} p80211msg_req_powermgmt_t; + +#define MAX_BSSDESC 10 + +typedef struct p80211msg_req_scan +{ + UINT32 msgcode; + p80211item_uint32_t bsstype; + p80211item_pstr6_t bssid; + p80211item_pstr32_t ssid; + p80211item_uint32_t scantype; + p80211item_uint32_t probedelay; + p80211item_pstr14_t channellist; + p80211item_uint32_t minchanneltime; + p80211item_uint32_t maxchanneltime; + p80211item_uint32_t resultcode; + p80211item_bssdesc_t bssdesc[MAX_BSSDESC]; +} p80211msg_req_scan_t; + +typedef struct p80211msg_req_join +{ + UINT32 msgcode; + p80211item_pstr6_t bssid; + p80211item_uint32_t joinfailtimeout; + p80211item_uint32_t basicrate1; + p80211item_uint32_t basicrate2; + p80211item_uint32_t basicrate3; + p80211item_uint32_t basicrate4; + p80211item_uint32_t basicrate5; + p80211item_uint32_t basicrate6; + p80211item_uint32_t basicrate7; + p80211item_uint32_t basicrate8; + p80211item_uint32_t operationalrate1; + p80211item_uint32_t operationalrate2; + p80211item_uint32_t operationalrate3; + p80211item_uint32_t operationalrate4; + p80211item_uint32_t operationalrate5; + p80211item_uint32_t operationalrate6; + p80211item_uint32_t operationalrate7; + p80211item_uint32_t operationalrate8; + p80211item_uint32_t resultcode; +} p80211msg_req_join_t; + +typedef struct p80211msg_req_authenticate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t authtype; + p80211item_uint32_t authfailtimeout; + p80211item_uint32_t resultcode; +} p80211msg_req_authenticate_t; + +typedef struct p80211msg_req_deauthenticate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t reasoncode; + p80211item_uint32_t resultcode; +} p80211msg_req_deauthenticate_t; + +typedef struct p80211msg_req_associate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t assocfailtimeout; + p80211item_uint32_t cfpollable; + p80211item_uint32_t cfpollreq; + p80211item_uint32_t privacy; + p80211item_uint32_t listeninterval; + p80211item_uint32_t resultcode; +} p80211msg_req_associate_t; + +typedef struct p80211msg_req_reassociate +{ + UINT32 msgcode; + p80211item_pstr6_t newapaddr; + p80211item_uint32_t reassocfailtimeout; + p80211item_uint32_t cfpollable; + p80211item_uint32_t cfpollreq; + p80211item_uint32_t privacy; + p80211item_uint32_t listeninterval; + p80211item_uint32_t resultcode; +} p80211msg_req_reassociate_t; + +typedef struct p80211msg_req_disassociate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t reasoncode; + p80211item_uint32_t resultcode; +} p80211msg_req_disassociate_t; + +typedef struct p80211msg_req_reset +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t setdefaultmib; + p80211item_uint32_t resultcode; +} p80211msg_req_reset_t; + +typedef struct p80211msg_req_start +{ + UINT32 msgcode; + p80211item_pstr32_t ssid; + p80211item_uint32_t bsstype; + p80211item_uint32_t beaconperiod; + p80211item_uint32_t dtimperiod; + p80211item_uint32_t cfpperiod; + p80211item_uint32_t cfpmaxdur; + p80211item_uint32_t fhdwelltime; + p80211item_uint32_t fhhopset; + p80211item_uint32_t fhhoppattern; + p80211item_uint32_t dschannel; + p80211item_uint32_t ibssatimwin; + p80211item_uint32_t probedelay; + p80211item_uint32_t cfpollable; + p80211item_uint32_t cfpollreq; + p80211item_uint32_t basicrate1; + p80211item_uint32_t basicrate2; + p80211item_uint32_t basicrate3; + p80211item_uint32_t basicrate4; + p80211item_uint32_t basicrate5; + p80211item_uint32_t basicrate6; + p80211item_uint32_t basicrate7; + p80211item_uint32_t basicrate8; + p80211item_uint32_t operationalrate1; + p80211item_uint32_t operationalrate2; + p80211item_uint32_t operationalrate3; + p80211item_uint32_t operationalrate4; + p80211item_uint32_t operationalrate5; + p80211item_uint32_t operationalrate6; + p80211item_uint32_t operationalrate7; + p80211item_uint32_t operationalrate8; + p80211item_uint32_t resultcode; +} p80211msg_req_start_t; + +/*--------------------------------------------------------------------*/ +/* Indication structures */ +/*--------------------------------------------------------------------*/ + +typedef struct p80211msg_ind_authenticate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t authtype; +} p80211msg_ind_authenticate_t; + +typedef struct p80211msg_ind_deauthenticate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t reasoncode; +} p80211msg_ind_deauthenticate_t; + +typedef struct p80211msg_ind_associate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; +} p80211msg_ind_associate_t; + +typedef struct p80211msg_ind_reassociate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; +} p80211msg_ind_reassociate_t; + +typedef struct p80211msg_ind_disassociate +{ + UINT32 msgcode; + p80211item_pstr6_t peerstaaddr; + p80211item_uint32_t reasoncode; +} p80211msg_ind_disassociate_t; + +/*====================================================================*/ +/*----- External Declarations ----------------------------------------*/ + + +/*====================================================================*/ +/*----- Function Prototypes ------------------------------------------*/ + + +#endif /* _P80211MSG_H */ + diff --git a/src/include/wlan/p80211types.h b/src/include/wlan/p80211types.h new file mode 100644 index 0000000..3fd5a50 --- /dev/null +++ b/src/include/wlan/p80211types.h @@ -0,0 +1,613 @@ +/* p80211types.h: Macros, constants, types, and funcs for p80211 data types +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* This file declares some of the constants and types used in various +* parts of the linux-wlan system. +* +* Note: Constant values are always in HOST byte order. +* +* All functions and statics declared here are implemented in p80211types.c +* -------------------------------------------------------------------- +*/ + +#ifndef _P80211TYPES_H +#define _P80211TYPES_H + +#ifndef _WLAN_COMPAT_H +#include +#endif + +/*====================================================================*/ +/*----- Constants ----------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* p80211 data type codes, used for MIB items and message arguments. */ +/* the various metadata structures provide additional information */ +/* about these types. */ +/*--------------------------------------------------------------------*/ + +#define P80211_TYPE_OCTETSTR 1 /* pascal array of bytes */ +#define P80211_TYPE_DISPLAYSTR 2 /* pascal array of bytes containing ascii */ +#define P80211_TYPE_BOUNDEDINT 3 /* UINT32 w/ min and max values */ +#define P80211_TYPE_INT 4 /* UINT32 min and max limited by 32 bits */ +#define P80211_TYPE_ENUMINT 5 /* UINT32 holding a numeric code that can be mapped to a textual name */ +#define P80211_TYPE_COLLECTION 6 /* Data item containing other data items */ +#define P80211_TYPE_MIBITEM 7 /* Data item containing a MIB value, requires the MIB DID for conversion and validation */ + +/*--------------------------------------------------------------------*/ +/* p80211 DID field codes for represent access type and is_table */ +/* status. */ +/*--------------------------------------------------------------------*/ +#define P80211DID_ACCESS_READONLY 0 +#define P80211DID_ACCESS_READWRITE 1 +#define P80211DID_ISTABLE_FALSE 0 +#define P80211DID_ISTABLE_TRUE 1 + +/*--------------------------------------------------------------------*/ +/* p80211 enumeration constants. The value to text mappings for */ +/* these is in p80211types.c. These defines were generated from the */ +/* mappings. */ +/*--------------------------------------------------------------------*/ +#define P80211ENUM_truth_false 0 +#define P80211ENUM_truth_true 1 +#define P80211ENUM_powermgmt_active 1 +#define P80211ENUM_powermgmt_powersave 2 +#define P80211ENUM_bsstype_infrastructure 1 +#define P80211ENUM_bsstype_independent 2 +#define P80211ENUM_bsstype_any 3 +#define P80211ENUM_authalg_opensystem 1 +#define P80211ENUM_authalg_sharedkey 2 +#define P80211ENUM_phytype_fhss 1 +#define P80211ENUM_phytype_dsss 2 +#define P80211ENUM_phytype_irbaseband 3 +#define P80211ENUM_temptype_commercial 1 +#define P80211ENUM_temptype_industrial 2 +#define P80211ENUM_regdomain_fcc 16 +#define P80211ENUM_regdomain_doc 32 +#define P80211ENUM_regdomain_etsi 48 +#define P80211ENUM_regdomain_spain 49 +#define P80211ENUM_regdomain_france 50 +#define P80211ENUM_regdomain_mkk 64 +#define P80211ENUM_ccamode_edonly 1 +#define P80211ENUM_ccamode_csonly 2 +#define P80211ENUM_ccamode_edandcs 4 +#define P80211ENUM_diversity_fixedlist 1 +#define P80211ENUM_diversity_notsupported 2 +#define P80211ENUM_diversity_dynamic 3 +#define P80211ENUM_scantype_active 1 +#define P80211ENUM_scantype_passive 2 +#define P80211ENUM_resultcode_success 1 +#define P80211ENUM_resultcode_invalid_parameters 2 +#define P80211ENUM_resultcode_not_supported 3 +#define P80211ENUM_resultcode_timeout 4 +#define P80211ENUM_resultcode_too_many_req 5 +#define P80211ENUM_resultcode_refused 6 +#define P80211ENUM_resultcode_bss_already 7 +#define P80211ENUM_resultcode_invalid_access 8 +#define P80211ENUM_reason_unspec_reason 1 +#define P80211ENUM_reason_auth_not_valid 2 +#define P80211ENUM_reason_deauth_lv_ss 3 +#define P80211ENUM_reason_inactivity 4 +#define P80211ENUM_reason_ap_overload 5 +#define P80211ENUM_reason_class23_err 6 +#define P80211ENUM_reason_class3_err 7 +#define P80211ENUM_reason_disas_lv_ss 8 +#define P80211ENUM_reason_asoc_not_auth 9 +#define P80211ENUM_status_successful 0 +#define P80211ENUM_status_unspec_failure 1 +#define P80211ENUM_status_unsup_cap 10 +#define P80211ENUM_status_reasoc_no_asoc 11 +#define P80211ENUM_status_fail_other 12 +#define P80211ENUM_status_unspt_alg 13 +#define P80211ENUM_status_auth_seq_fail 14 +#define P80211ENUM_status_chlng_fail 15 +#define P80211ENUM_status_auth_timeout 16 +#define P80211ENUM_status_ap_full 17 +#define P80211ENUM_status_unsup_rate 18 + +/*--------------------------------------------------------------------*/ +/* p80211 maximum length constants for the different pascal strings. */ +/*--------------------------------------------------------------------*/ + +#define MAXLEN_PSTR6 (6) /* pascal array of 6 bytes */ +#define MAXLEN_PSTR14 (14) /* pascal array of 14 bytes */ +#define MAXLEN_PSTR32 (32) /* pascal array of 32 bytes */ +#define MAXLEN_PSTR255 (255) /* pascal array of 255 bytes */ + +/*====================================================================*/ +/*----- Macros -------------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* The following macros are used to ensure consistent naming */ +/* conventions for all the different metadata lists. */ +/*--------------------------------------------------------------------*/ + +#define MKREQMETANAME(name) p80211meta_ ## req ## _ ## name +#define MKCOLLMETANAME(name) p80211meta_ ## coll ## _ ## name +#define MKINDMETANAME(name) p80211meta_ ## ind ## _ ## name +#define MKMIBMETANAME(name) p80211meta_ ## mib ## _ ## name +#define MKGRPMETANAME(name) p80211meta_ ## grp ## _ ## name + +#define MKREQMETASIZE(name) p80211meta_ ## req ## _ ## name ## _ ## size +#define MKCOLLMETASIZE(name) p80211meta_ ## coll ## _ ## name ## _ ## size +#define MKINDMETASIZE(name) p80211meta_ ## ind ## _ ## name ## _ ## size +#define MKMIBMETASIZE(name) p80211meta_ ## mib ## _ ## name ## _ ## size +#define MKGRPMETASIZE(name) p80211meta_ ## grp ## _ ## name ## _ ## size + +#define GETMETASIZE(aptr) (**((UINT32**)(aptr))) + +/*--------------------------------------------------------------------*/ +/* The following ifdef depends on the following defines */ +/* P80211_NOINCLUDESTRINGS - ifdef, all metadata name fields */ +/* are empty strings */ +/*--------------------------------------------------------------------*/ + +#ifdef P80211_NOINCLUDESTRINGS + #define MKITEMNAME(s) ("") +#else + #define MKITEMNAME(s) (s) +#endif + +/*--------------------------------------------------------------------*/ +/* The following macro creates a name for an enum */ +/*--------------------------------------------------------------------*/ +#define MKENUMNAME(name) p80211enum_ ## name + +/*--------------------------------------------------------------------*/ +/* The following macros are used to construct and deconstruct the */ +/* Data ID codes. */ +/*--------------------------------------------------------------------*/ + +#define P80211DID_LSB_SECTION (0) +#define P80211DID_LSB_GROUP (6) +#define P80211DID_LSB_ITEM (12) +#define P80211DID_LSB_INDEX (18) +#define P80211DID_LSB_ISTABLE (26) +#define P80211DID_LSB_ACCESS (27) +#define P80211DID_LSB_TYPE (28) + +#define P80211DID_MASK_SECTION (0x0000003fUL) +#define P80211DID_MASK_GROUP (0x0000003fUL) +#define P80211DID_MASK_ITEM (0x0000003fUL) +#define P80211DID_MASK_INDEX (0x000000ffUL) +#define P80211DID_MASK_ISTABLE (0x00000001UL) +#define P80211DID_MASK_ACCESS (0x00000001UL) +#define P80211DID_MASK_TYPE (0x00000007UL) + + +#define P80211DID_MK(a,m,l) ((((UINT32)(a)) & (m)) << (l)) + +#define P80211DID_MKSECTION(a) P80211DID_MK(a, \ + P80211DID_MASK_SECTION, \ + P80211DID_LSB_SECTION ) +#define P80211DID_MKGROUP(a) P80211DID_MK(a, \ + P80211DID_MASK_GROUP, \ + P80211DID_LSB_GROUP ) +#define P80211DID_MKITEM(a) P80211DID_MK(a, \ + P80211DID_MASK_ITEM, \ + P80211DID_LSB_ITEM ) +#define P80211DID_MKINDEX(a) P80211DID_MK(a, \ + P80211DID_MASK_INDEX, \ + P80211DID_LSB_INDEX ) +#define P80211DID_MKISTABLE(a) P80211DID_MK(a, \ + P80211DID_MASK_ISTABLE, \ + P80211DID_LSB_ISTABLE ) +#define P80211DID_MKACCESS(a) P80211DID_MK(a, \ + P80211DID_MASK_ACCESS, \ + P80211DID_LSB_ACCESS ) +#define P80211DID_MKTYPE(a) P80211DID_MK(a, \ + P80211DID_MASK_TYPE, \ + P80211DID_LSB_TYPE ) + + +#define P80211DID_MKID(s,g,i,n,t,a,d) (P80211DID_MKSECTION(s) | \ + P80211DID_MKGROUP(g) | \ + P80211DID_MKITEM(i) | \ + P80211DID_MKINDEX(n) | \ + P80211DID_MKISTABLE(t) | \ + P80211DID_MKACCESS(a) | \ + P80211DID_MKTYPE(d) ) + + +#define P80211DID_GET(a,m,l) ((((UINT32)(a)) >> (l)) & (m)) + +#define P80211DID_SECTION(a) P80211DID_GET(a, \ + P80211DID_MASK_SECTION, \ + P80211DID_LSB_SECTION) +#define P80211DID_GROUP(a) P80211DID_GET(a, \ + P80211DID_MASK_GROUP, \ + P80211DID_LSB_GROUP) +#define P80211DID_ITEM(a) P80211DID_GET(a, \ + P80211DID_MASK_ITEM, \ + P80211DID_LSB_ITEM) +#define P80211DID_INDEX(a) P80211DID_GET(a, \ + P80211DID_MASK_INDEX, \ + P80211DID_LSB_INDEX) +#define P80211DID_ISTABLE(a) P80211DID_GET(a, \ + P80211DID_MASK_ISTABLE, \ + P80211DID_LSB_ISTABLE) +#define P80211DID_ACCESS(a) P80211DID_GET(a, \ + P80211DID_MASK_ACCESS, \ + P80211DID_LSB_ACCESS) +#define P80211DID_TYPE(a) P80211DID_GET(a, \ + P80211DID_MASK_TYPE, \ + P80211DID_LSB_TYPE) + +/*====================================================================*/ +/*----- Types --------------------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* The following structure types are used for the represenation of */ +/* ENUMINT type metadata. */ +/*--------------------------------------------------------------------*/ +typedef struct p80211enumpair +{ + UINT32 val; + char *name; +} p80211enumpair_t; + +typedef struct p80211enum +{ + INT nitems; + p80211enumpair_t *list; +} p80211enum_t; + +/*--------------------------------------------------------------------*/ +/* The following structure types are used to store data items in */ +/* messages. */ +/*--------------------------------------------------------------------*/ + +/* Maximum pascal string */ +typedef struct p80211pstr255 +{ + UINT8 len; + UINT8 data[MAXLEN_PSTR255]; +} p80211pstr255_t; + +/* pascal string for macaddress and bssid */ +typedef struct p80211pstr6 +{ + UINT8 len; + UINT8 data[MAXLEN_PSTR6]; +} p80211pstr6_t; + +/* pascal string for channel list */ +typedef struct p80211pstr14 +{ + UINT8 len; + UINT8 data[MAXLEN_PSTR14]; +} p80211pstr14_t; + +/* pascal string for ssid */ +typedef struct p80211pstr32 +{ + UINT8 len; + UINT8 data[MAXLEN_PSTR32]; +} p80211pstr32_t; + +/* prototype template */ +typedef struct p80211item +{ + UINT32 did; + UINT32 len; +} p80211item_t; + +/* message data iteem for COLLECTION */ +typedef struct p80211item_coll +{ + UINT32 did; + UINT32 len; +} p80211item_coll_t; + +/* message data item for INT, BOUNDEDINT, ENUMINT */ +typedef struct p80211item_uint32 +{ + UINT32 did; + UINT32 len; + UINT32 data; +} p80211item_uint32_t; + +/* message data item for OCTETSTR, DISPLAYSTR */ +typedef struct p80211item_pstr6 +{ + UINT32 did; + UINT32 len; + p80211pstr6_t data; +}p80211item_pstr6_t; + +/* message data item for OCTETSTR, DISPLAYSTR */ +typedef struct p80211item_pstr14 +{ + UINT32 did; + UINT32 len; + p80211pstr14_t data; +}p80211item_pstr14_t; + +/* message data item for OCTETSTR, DISPLAYSTR */ +typedef struct p80211item_pstr32 +{ + UINT32 did; + UINT32 len; + p80211pstr32_t data; +}p80211item_pstr32_t; + +/* message data item for OCTETSTR, DISPLAYSTR */ +typedef struct p80211item_pstr255 +{ + UINT32 did; + UINT32 len; + p80211pstr255_t data; +}p80211item_pstr255_t; + +/* message data item for the collection in the BSSDescription argument */ +/* in the SCAN msg */ + +typedef struct p80211item_coll_bssdesc +{ + p80211item_pstr6_t bssid; + p80211item_pstr32_t ssid; + p80211item_uint32_t bsstype; + p80211item_uint32_t beaconperiod; + p80211item_uint32_t dtimperiod; + p80211item_uint32_t timestamp; + p80211item_uint32_t localtime; + p80211item_uint32_t fhdwelltime; + p80211item_uint32_t fhhopset; + p80211item_uint32_t fhhoppattern; + p80211item_uint32_t fhhopindex; + p80211item_uint32_t dschannel; + p80211item_uint32_t cfpcount; + p80211item_uint32_t cfpperiod; + p80211item_uint32_t cfpmaxdur; + p80211item_uint32_t cfpdurremain; + p80211item_uint32_t ibssatimwin; + p80211item_uint32_t cfpollable; + p80211item_uint32_t cfpollreq; + p80211item_uint32_t privacy; + p80211item_uint32_t basicrate1; + p80211item_uint32_t basicrate2; + p80211item_uint32_t basicrate3; + p80211item_uint32_t basicrate4; + p80211item_uint32_t basicrate5; + p80211item_uint32_t basicrate6; + p80211item_uint32_t basicrate7; + p80211item_uint32_t basicrate8; +}p80211item_coll_bssdesc_t; + +/* message data item for the BSSDescription argument in the SCAN msg */ + +typedef struct p80211item_bssdesc +{ + UINT32 did; + UINT32 len; + p80211item_coll_bssdesc_t data; +} p80211item_bssdesc_t; + +/*--------------------------------------------------------------------*/ +/* The following structure type is used to represent all of the */ +/* metadata items. Some components may choose to use more, less or */ +/* different metadata items. */ +/*--------------------------------------------------------------------*/ + +typedef struct p80211meta +{ + char *name; /* data item name */ + UINT32 did; /* partial did */ + UINT32 msgoffset; /* offset of this item in data item structure */ + UINT32 min; /* min value of a BOUNDEDINT */ + UINT32 max; /* max value of a BOUNDEDINT */ + UINT32 maxlen; /* maxlen of a OCTETSTR or DISPLAYSTR */ + p80211enum_t *enumptr; /* ptr to the enum type for ENUMINT */ + struct p80211meta *collptr; /* ptr to array of COLLECTION subitems */ + void (*totextptr)(void); /* ptr to totext conversion function */ + void (*fromtextptr)(void); /* ptr to totext conversion function */ + void (*validfunptr)(void); /* ptr to totext conversion function */ +} p80211meta_t; + + + +/*====================================================================*/ +/*----- External Declarations ----------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* Enumeration Lists */ +/* The following are the external declarations for all enumerations */ +/*--------------------------------------------------------------------*/ + +extern p80211enum_t MKENUMNAME(truth); +extern p80211enum_t MKENUMNAME(powermgmt); +extern p80211enum_t MKENUMNAME(bsstype); +extern p80211enum_t MKENUMNAME(authalg); +extern p80211enum_t MKENUMNAME(phytype); +extern p80211enum_t MKENUMNAME(temptype); +extern p80211enum_t MKENUMNAME(regdomain); +extern p80211enum_t MKENUMNAME(ccamode); +extern p80211enum_t MKENUMNAME(diversity); +extern p80211enum_t MKENUMNAME(scantype); +extern p80211enum_t MKENUMNAME(resultcode); +extern p80211enum_t MKENUMNAME(reason); +extern p80211enum_t MKENUMNAME(status); + +/*--------------------------------------------------------------------*/ +/* Metadata Lists */ +/* The following are the external declarations for all the metadata */ +/* lists. */ +/*--------------------------------------------------------------------*/ + +/*------------- Extern for the collection metadata lists -------------*/ +/*------------- defined in p80211metamib.c ----------------------------*/ +extern p80211meta_t **p80211meta_slist[]; + +/*------------- Extern(s) for the mib metadata group(s) --------------*/ +/*------------- defined in p80211metamib.c ----------------------------*/ +extern p80211meta_t *MKGRPMETANAME(dot11smt)[]; +extern p80211meta_t *MKGRPMETANAME(dot11mac)[]; +extern p80211meta_t *MKGRPMETANAME(dot11phy)[]; + +/*------------- Extern(s) for the msg metadata group(s) --------------*/ +/*------------- defined in p80211msg.c --------------------------------*/ +extern p80211meta_t *MKGRPMETANAME(msg)[]; + +/*------------- Externs for the msg collection metadata lists --------*/ +/*------------- defined in p80211msg.c --------------------------------*/ +extern p80211meta_t MKCOLLMETANAME(bssdesc)[]; +extern UINT32 MKCOLLMETASIZE(bssdesc); + +/*------------- Externs for the command metadata lists ---------------*/ +/*------------- defined in p80211msg.c --------------------------------*/ +extern p80211meta_t MKREQMETANAME(mib_get)[]; +extern UINT32 MKREQMETASIZE(mib_get); +extern p80211meta_t MKREQMETANAME(mib_set)[]; +extern UINT32 MKREQMETASIZE(mib_set); +extern p80211meta_t MKREQMETANAME(powermgmt)[]; +extern UINT32 MKREQMETASIZE(powermgmt); +extern p80211meta_t MKREQMETANAME(scan)[]; +extern UINT32 MKREQMETASIZE(scan); +extern p80211meta_t MKREQMETANAME(join)[]; +extern UINT32 MKREQMETASIZE(join); +extern p80211meta_t MKREQMETANAME(authenticate)[]; +extern UINT32 MKREQMETASIZE(authenticate); +extern p80211meta_t MKREQMETANAME(deauthenticate)[]; +extern UINT32 MKREQMETASIZE(deauthenticate); +extern p80211meta_t MKREQMETANAME(associate)[]; +extern UINT32 MKREQMETASIZE(associate); +extern p80211meta_t MKREQMETANAME(reassociate)[]; +extern UINT32 MKREQMETASIZE(reassociate); +extern p80211meta_t MKREQMETANAME(disassociate)[]; +extern UINT32 MKREQMETASIZE(disassociate); +extern p80211meta_t MKREQMETANAME(reset)[]; +extern UINT32 MKREQMETASIZE(reset); +extern p80211meta_t MKREQMETANAME(start)[]; +extern UINT32 MKREQMETASIZE(start); + +/*------------- Externs for the indication metadata lists ------------*/ +/*------------- defined in p80211msg.c --------------------------------*/ +extern p80211meta_t MKINDMETANAME(authenticate)[]; +extern UINT32 MKINDMETASIZE(authenticate); +extern p80211meta_t MKINDMETANAME(deauthenticate)[]; +extern UINT32 MKINDMETASIZE(deauthenticate); +extern p80211meta_t MKINDMETANAME(associate)[]; +extern UINT32 MKINDMETASIZE(associate); +extern p80211meta_t MKINDMETANAME(reassociate)[]; +extern UINT32 MKINDMETASIZE(reassociate); +extern p80211meta_t MKINDMETANAME(disassociate)[]; +extern UINT32 MKINDMETASIZE(disassociate); + + +/*====================================================================*/ +/*----- Function Prototypes ------------------------------------------*/ + +/*--------------------------------------------------------------------*/ +/* The following declare functions that perform validation and text */ +/* to binary conversions based on the metadata for interface and */ +/* MIB data items. */ +/*--------------------------------------------------------------------*/ + +/*-- DISPLAYSTR ------------------------------------------------------*/ +/* pstr ==> cstr */ +void p80211_totext_displaystr( void ); + +/* cstr ==> pstr */ +void p80211_fromtext_displaystr( void ); + +/* function that checks validity of a displaystr binary value */ +void p80211_isvalid_displaystr( void ); + +/*-- OCTETSTR --------------------------------------------------------*/ +/* pstr ==> "xx:xx:...." */ +void p80211_totext_octetstr( void ); + +/* "xx:xx:...." ==> pstr */ +void p80211_fromtext_octetstr( void ); + +/* function that checks validity of an octetstr binary value */ +void p80211_isvalid_octetstr( void ); + +/*-- BOUNDEDINT ------------------------------------------------------*/ +/* UINT32 ==> %d */ +void p80211_totext_boundedint( void ); + +/* %d ==> UINT32 */ +void p80211_fromtext_boundedint( void ); + +/* function that checks validity of a boundedint's binary value */ +void p80211_isvalid_boundedint( void ); + +/*-- INT -------------------------------------------------------------*/ +/* UINT32 ==> %d */ +void p80211_totext_int( void ); + +/* %d ==> UINT32 */ +void p80211_fromtext_int( void ); + +/* function that checks validity of an int's binary value (always successful) */ +void p80211_isvalid_int( void ); + +/*-- ENUMINT ---------------------------------------------------------*/ +/* UINT32 ==> */ +void p80211_totext_enumint( void ); + +/* ==> UINT32 */ +void p80211_fromtext_enumint( void ); + +/* function that checks validity of an enum's binary value */ +void p80211_isvalid_enumint( void ); + +/*-- COLLECTION ------------------------------------------------------*/ +/* ==> */ +void p80211_totext_collection( void ); + +/* ==> */ +void p80211_fromtext_collection( void ); + +/* function that checks validity of a collection's binary value */ +void p80211_isvalid_collection( void ); + +/*-- MIBITEM ---------------------------------------------------------*/ +/* ==> */ +void p80211_totext_mibitem( void ); + +/* ==> */ +void p80211_fromtext_mibitem( void ); + +/* function that checks validity of a mibitem's binary value */ +void p80211_isvalid_mibitem( void ); + +/*-- MIBDID ----------------------------------------------------------*/ +/* ==> */ +void p80211_totext_mibdid( void ); + +/* ==> */ +void p80211_fromtext_mibdid( void ); + +/* function that checks validity of a mibdid's binary value */ +void p80211_isvalid_mibdid( void ); + +/*-- MIBCOLLECTION ---------------------------------------------------*/ +/* ==> */ +void p80211_totext_mibcollection( void ); + +/* ==> */ +void p80211_fromtext_mibcollection( void ); + +/* function that checks validity of a mibcollection binary value */ +void p80211_isvalid_mibcollection( void ); + +#endif /* _P80211TYPES_H */ diff --git a/src/include/wlan/version.h b/src/include/wlan/version.h new file mode 100644 index 0000000..30b84ba --- /dev/null +++ b/src/include/wlan/version.h @@ -0,0 +1,3 @@ + +#define WLAN_RELEASE "0.5.1" +#define WLAN_RELEASE_CODE 0x000501 diff --git a/src/include/wlan/wlan_compat.h b/src/include/wlan/wlan_compat.h new file mode 100644 index 0000000..c9ab5d1 --- /dev/null +++ b/src/include/wlan/wlan_compat.h @@ -0,0 +1,487 @@ +/* wlan_compat.h: Types and macros to aid in portability +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* +* Description: +* +* -------------------------------------------------------------------- +*/ + +#ifndef _WLAN_COMPAT_H +#define _WLAN_COMPAT_H + +/*=============================================================*/ +/*------ Establish Platform Identity --------------------------*/ +/*=============================================================*/ +/* Key macros: */ +/* WLAN_CPU_FAMILY */ + #define WLAN_Ix86 1 + #define WLAN_PPC 2 + #define WLAN_Ix96 3 +/* WLAN_CPU_CORE */ + #define WLAN_I386CORE 1 + #define WLAN_PPCCORE 2 + #define WLAN_I296 3 +/* WLAN_CPU_PART */ + #define WLAN_I386PART 1 + #define WLAN_MPC860 2 + #define WLAN_MPC850 3 + #define WLAN_I296SA 4 + #define WLAN_PPCPART 5 +/* WLAN_SYSARCH */ + #define WLAN_PCAT 1 + #define WLAN_MBX 2 + #define WLAN_RPX 3 + #define WLAN_LWARCH 4 + #define WLAN_PMAC 5 +/* WLAN_OS */ + #define WLAN_LINUX_KERNEL 1 + #define WLAN_LINUX_USER 2 + #define WLAN_LWOS 3 + #define WLAN_QNX4 4 +/* WLAN_COMPILER */ + #define WLAN_GNUC 1 + #define WLAN_DIAB 2 + +#if defined(__LINUX_WLAN__) && defined(__KERNEL__) + #define WLAN_OS WLAN_LINUX_KERNEL + #define WLAN_COMPILER WLAN_GNUC + #if defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) + #define WLAN_CPU_FAMILY WLAN_Ix86 + #define WLAN_CPU_CORE WLAN_I386CORE + #define WLAN_CPU_PART WLAN_I386PART + #define WLAN_SYSARCH WLAN_PCAT + #elif defined(CONFIG_PPC) + #define WLAN_CPU_FAMILY WLAN_PPC + #define WLAN_CPU_CORE WLAN_PPCCORE + #if defined(CONFIG_MBX) + #define WLAN_CPU_PART WLAN_MPC860 + #define WLAN_SYSARCH WLAN_MBX + #elif defined(CONFIG_RPX) + #define WLAN_CPU_PART WLAN_MPC850 + #define WLAN_SYSARCH WLAN_RPX + #else + #define WLAN_CPU_PART WLAN_PPCPART + #define WLAN_SYSARCH WLAN_PMAC + #endif + #endif +#elif defined(__LINUX_WLAN__) && !defined(__KERNEL__) + #define WLAN_OS WLAN_LINUX_USER + #define WLAN_COMPILER WLAN_GNUC + #if defined(__I386__) + #define WLAN_CPU_FAMILY WLAN_Ix86 + #define WLAN_CPU_CORE WLAN_I386CORE + #define WLAN_CPU_PART WLAN_I386PART + #define WLAN_SYSARCH WLAN_PCAT + #elif defined(CONFIG_PPC) + #define WLAN_CPU_FAMILY WLAN_PPC + #define WLAN_CPU_CORE WLAN_PPCCORE + #if defined(CONFIG_MBX) + #define WLAN_CPU_PART WLAN_MPC860 + #define WLAN_SYSARCH WLAN_MBX + #elif defined(CONFIG_RPX) + #define WLAN_CPU_PART WLAN_MPC850 + #define WLAN_SYSARCH WLAN_RPX + #else + #define WLAN_CPU_PART WLAN_PPCPART + #define WLAN_SYSARCH WLAN_PMAC + #endif + #endif +#elif defined(LW) || defined(LW_HDW_ISDN) || defined(LW_HDW_SERIAL) + #define WLAN_OS WLAN_LWOS + #define WLAN_COMPILER WLAN_DIAB + #define WLAN_CPU_FAMILY WLAN_PPC + #define WLAN_CPU_CORE WLAN_PPCCORE + #define WLAN_CPU_PART WLAN_MPC860 + #define WLAN_SYSARCH WLAN_LWARCH +#elif defined(MBX) + #define WLAN_OS WLAN_LWOS + #define WLAN_COMPILER WLAN_DIAB + #define WLAN_CPU_FAMILY WLAN_PPC + #define WLAN_CPU_CORE WLAN_PPCCORE + #define WLAN_CPU_PART WLAN_MPC860 + #define WLAN_SYSARCH WLAN_MBX +#endif + +/*=============================================================*/ +/*------ Bit settings -----------------------------------------*/ +/*=============================================================*/ + +#define BIT0 0x00000001 +#define BIT1 0x00000002 +#define BIT2 0x00000004 +#define BIT3 0x00000008 +#define BIT4 0x00000010 +#define BIT5 0x00000020 +#define BIT6 0x00000040 +#define BIT7 0x00000080 +#define BIT8 0x00000100 +#define BIT9 0x00000200 +#define BIT10 0x00000400 +#define BIT11 0x00000800 +#define BIT12 0x00001000 +#define BIT13 0x00002000 +#define BIT14 0x00004000 +#define BIT15 0x00008000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + +#define MOTO_BIT31 0x00000001 +#define MOTO_BIT30 0x00000002 +#define MOTO_BIT29 0x00000004 +#define MOTO_BIT28 0x00000008 +#define MOTO_BIT27 0x00000010 +#define MOTO_BIT26 0x00000020 +#define MOTO_BIT25 0x00000040 +#define MOTO_BIT24 0x00000080 +#define MOTO_BIT23 0x00000100 +#define MOTO_BIT22 0x00000200 +#define MOTO_BIT21 0x00000400 +#define MOTO_BIT20 0x00000800 +#define MOTO_BIT19 0x00001000 +#define MOTO_BIT18 0x00002000 +#define MOTO_BIT17 0x00004000 +#define MOTO_BIT16 0x00008000 +#define MOTO_BIT15 0x00010000 +#define MOTO_BIT14 0x00020000 +#define MOTO_BIT13 0x00040000 +#define MOTO_BIT12 0x00080000 +#define MOTO_BIT11 0x00100000 +#define MOTO_BIT10 0x00200000 +#define MOTO_BIT9 0x00400000 +#define MOTO_BIT8 0x00800000 +#define MOTO_BIT7 0x01000000 +#define MOTO_BIT6 0x02000000 +#define MOTO_BIT5 0x04000000 +#define MOTO_BIT4 0x08000000 +#define MOTO_BIT3 0x10000000 +#define MOTO_BIT2 0x20000000 +#define MOTO_BIT1 0x40000000 +#define MOTO_BIT0 0x80000000 + +typedef unsigned char UINT8; +typedef unsigned short UINT16; +typedef unsigned long UINT32; + +typedef signed char INT8; +typedef signed short INT16; +typedef signed long INT32; + +typedef unsigned int UINT; +typedef signed int INT; + +#if (WLAN_COMPILER == WLAN_GNUC) + typedef unsigned long long UINT64; + typedef signed long long INT64; +#else + typedef UINT8 UINT64[8]; +#endif + +#define UINT8_MAX (0xffUL) +#define UINT16_MAX (0xffffUL) +#define UINT32_MAX (0xffffffffUL) + +#define INT8_MAX (0x7fL) +#define INT16_MAX (0x7fffL) +#define INT32_MAX (0x7fffffffL) + +/*=============================================================*/ +/*------ Compiler Portability Macros --------------------------*/ +/*=============================================================*/ +#if (WLAN_COMPILER == WLAN_GNUC) + #define __WLAN_ATTRIB_PACK__ __attribute__ ((packed)) + #define __WLAN_PRAGMA_PACK1__ + #define __WLAN_PRAGMA_PACKDFLT__ + #define __WLAN_INLINE__ inline +#elif (WLAN_COMPILER == WLAN_DIAB) + #define __WLAN_ATTRIB_PACK__ + #define __WLAN_PRAGMA_PACK1__ #pragma pack + #define __WLAN_PRAGMA_PACKDFLT__ #pragma pack() + #define __WLAN_INLINE__ inline +#else + #error "Unknown compiler" +#endif + +/*=============================================================*/ +/*------ OS Portability Macros --------------------------------*/ +/*=============================================================*/ + +#if (WLAN_OS == WLAN_LINUX_KERNEL) + #define WLAN_LOG_ERROR0(s) printk(KERN_ERR s); + #define WLAN_LOG_ERROR1(s,n) printk(KERN_ERR s, (n)); + #define WLAN_LOG_ERROR2(s,n1,n2) printk(KERN_ERR s, (n1), (n2)); + #define WLAN_LOG_ERROR3(s,n1,n2,n3) printk(KERN_ERR s, (n1), (n2), (n3)); + #define WLAN_LOG_ERROR4(s,n1,n2,n3,n4) printk(KERN_ERR ": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_WARNING0(s) printk(KERN_WARNING s); + #define WLAN_LOG_WARNING1(s,n) printk(KERN_WARNING s, (n)); + #define WLAN_LOG_WARNING2(s,n1,n2) printk(KERN_WARNING s, (n1), (n2)); + #define WLAN_LOG_WARNING3(s,n1,n2,n3) printk(KERN_WARNING s, (n1), (n2), (n3)); + #define WLAN_LOG_WARNING4(s,n1,n2,n3,n4) printk(KERN_WARNING ": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_NOTICE0(s) printk(KERN_NOTICE s); + #define WLAN_LOG_NOTICE1(s,n) printk(KERN_NOTICE s, (n)); + #define WLAN_LOG_NOTICE2(s,n1,n2) printk(KERN_NOTICE s, (n1), (n2)); + #define WLAN_LOG_NOTICE3(s,n1,n2,n3) printk(KERN_NOTICE s, (n1), (n2), (n3)); + #define WLAN_LOG_NOTICE4(s,n1,n2,n3,n4) printk(KERN_NOTICE s, (n1), (n2), (n3), (n4)); + + #if defined(WLAN_INCLUDE_DEBUG) + #define WLAN_ASSERT(c) if ((!(c)) && wlan_debug >= 1) { \ + WLAN_LOG_DEBUG0(1, "Assertion failure!\n"); } + #define WLAN_HEX_DUMP( l, s, p, n) if( wlan_debug >= (l) ){ int i; \ + printk(KERN_DEBUG s ":"); \ + for( i=0; i < (n); i++) printk( " %02x", ((UINT8*)(p))[i]); \ + printk("\n"); } + + #define DBFENTER { if ( wlan_debug >= 4 ){ WLAN_LOG_DEBUG0(3,"Enter\n"); } } + #define DBFEXIT { if ( wlan_debug >= 4 ){ WLAN_LOG_DEBUG0(3,"Exit\n"); } } + + #define WLAN_LOG_INFO0(s) printk(KERN_INFO __FUNCTION__": " s); + #define WLAN_LOG_INFO1(s,n) printk(KERN_INFO __FUNCTION__": " s, (n)); + #define WLAN_LOG_INFO2(s,n1,n2) printk(KERN_INFO __FUNCTION__": " s, (n1), (n2)); + #define WLAN_LOG_INFO3(s,n1,n2,n3) printk(KERN_INFO __FUNCTION__": " s, (n1), (n2), (n3)); + #define WLAN_LOG_INFO4(s,n1,n2,n3,n4) printk(KERN_INFO __FUNCTION__": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_DEBUG0(l, s) if ( wlan_debug >= (l)) printk(KERN_DEBUG __FUNCTION__": " s); + #define WLAN_LOG_DEBUG1(l, s,n) if ( wlan_debug >= (l)) printk(KERN_DEBUG __FUNCTION__": " s, (n)); + #define WLAN_LOG_DEBUG2(l, s,n1,n2) if ( wlan_debug >= (l)) printk(KERN_DEBUG __FUNCTION__": " s, (n1), (n2)); + #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3) if ( wlan_debug >= (l)) printk(KERN_DEBUG __FUNCTION__": " s, (n1), (n2), (n3)); + #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4) if ( wlan_debug >= (l)) printk(KERN_DEBUG __FUNCTION__": " s, (n1), (n2), (n3), (n4)); + #else + #define WLAN_ASSERT(c) + #define WLAN_HEX_DUMP( l, s, p, n) + + #define DBFENTER + #define DBFEXIT + + #define WLAN_LOG_INFO0(s) + #define WLAN_LOG_INFO1(s,n) + #define WLAN_LOG_INFO2(s,n1,n2) + #define WLAN_LOG_INFO3(s,n1,n2,n3) + #define WLAN_LOG_INFO4(s,n1,n2,n3,n4) + + #define WLAN_LOG_DEBUG0(l, s) + #define WLAN_LOG_DEBUG1(l, s,n) + #define WLAN_LOG_DEBUG2(l, s,n1,n2) + #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3) + #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4) + #endif +#elif (WLAN_OS == WLAN_LWOS) + #define KERN_ERR + #define KERN_WARNING + #define KERN_NOTICE + #define KERN_INFO + #define KERN_DEBUG + #define __FUNCTION__ + + #define WLAN_LOG_ERROR0(s) kprintf(KERN_ERR s); + #define WLAN_LOG_ERROR1(s,n) kprintf(KERN_ERR s, (n)); + #define WLAN_LOG_ERROR2(s,n1,n2) kprintf(KERN_ERR s, (n1), (n2)); + #define WLAN_LOG_ERROR3(s,n1,n2,n3) kprintf(KERN_ERR s, (n1), (n2), (n3)); + #define WLAN_LOG_ERROR4(s,n1,n2,n3,n4) kprintf(KERN_ERR ": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_WARNING0(s) kprintf(KERN_WARNING s); + #define WLAN_LOG_WARNING1(s,n) kprintf(KERN_WARNING s, (n)); + #define WLAN_LOG_WARNING2(s,n1,n2) kprintf(KERN_WARNING s, (n1), (n2)); + #define WLAN_LOG_WARNING3(s,n1,n2,n3) kprintf(KERN_WARNING s, (n1), (n2), (n3)); + #define WLAN_LOG_WARNING4(s,n1,n2,n3,n4) kprintf(KERN_WARNING ": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_NOTICE0(s) kprintf(KERN_NOTICE s); + #define WLAN_LOG_NOTICE1(s,n) kprintf(KERN_NOTICE s, (n)); + #define WLAN_LOG_NOTICE2(s,n1,n2) kprintf(KERN_NOTICE s, (n1), (n2)); + #define WLAN_LOG_NOTICE3(s,n1,n2,n3) kprintf(KERN_NOTICE s, (n1), (n2), (n3)); + #define WLAN_LOG_NOTICE4(s,n1,n2,n3,n4) kprintf(KERN_NOTICE s, (n1), (n2), (n3), (n4)); + + #if defined(WLAN_INCLUDE_DEBUG) + #define WLAN_ASSERT(c) if ((!(c)) && wlan_debug >= 1) \ + {WLAN_LOG_DEBUG0(1, "Assertion failure!\n");} + #define WLAN_HEX_DUMP( l, s, p, n) if( wlan_debug >= (l) ){ int i; \ + kprintf(KERN_DEBUG s ":"); \ + for( i=0; i < (n); i++) kprintf( " %02x", ((UINT8*)(p))[i]); \ + kprintf("\n"); } + + #define DBFENTER { if ( wlan_debug >= 4 ){ WLAN_LOG_DEBUG0(3,"Enter\n"); } } + #define DBFEXIT { if ( wlan_debug >= 4 ){ WLAN_LOG_DEBUG0(3,"Exit\n"); } } + + #define WLAN_LOG_INFO0(s) kprintf(KERN_INFO __FUNCTION__": " s); + #define WLAN_LOG_INFO1(s,n) kprintf(KERN_INFO __FUNCTION__": " s, (n)); + #define WLAN_LOG_INFO2(s,n1,n2) kprintf(KERN_INFO __FUNCTION__": " s, (n1), (n2)); + #define WLAN_LOG_INFO3(s,n1,n2,n3) kprintf(KERN_INFO __FUNCTION__": " s, (n1), (n2), (n3)); + #define WLAN_LOG_INFO4(s,n1,n2,n3,n4) kprintf(KERN_INFO __FUNCTION__": " s, (n1), (n2), (n3), (n4)); + + #define WLAN_LOG_DEBUG0(l, s) if ( wlan_debug >= (l)) kprintf(KERN_DEBUG __FUNCTION__": " s); + #define WLAN_LOG_DEBUG1(l, s,n) if ( wlan_debug >= (l)) kprintf(KERN_DEBUG __FUNCTION__": " s, (n)); + #define WLAN_LOG_DEBUG2(l, s,n1,n2) if ( wlan_debug >= (l)) kprintf(KERN_DEBUG __FUNCTION__": " s, (n1), (n2)); + #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3) if ( wlan_debug >= (l)) kprintf(KERN_DEBUG __FUNCTION__": " s, (n1), (n2), (n3)); + #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4) if ( wlan_debug >= (l)) kprintf(KERN_DEBUG __FUNCTION__": " s, (n1), (n2), (n3), (n4)); + #else + #define WLAN_ASSERT(c) + #define WLAN_HEX_DUMP( l, s, p, n) + + #define DBFENTER + #define DBFEXIT + + #define WLAN_LOG_INFO0(s) + #define WLAN_LOG_INFO1(s,n) + #define WLAN_LOG_INFO2(s,n1,n2) + #define WLAN_LOG_INFO3(s,n1,n2,n3) + #define WLAN_LOG_INFO4(s,n1,n2,n3,n4) + + #define WLAN_LOG_DEBUG0(l, s) + #define WLAN_LOG_DEBUG1(l, s,n) + #define WLAN_LOG_DEBUG2(l, s,n1,n2) + #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3) + #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4) + #endif +#else + #define WLAN_LOG_ERROR0(s) + #define WLAN_LOG_ERROR1(s,n) + #define WLAN_LOG_ERROR2(s,n1,n2) + #define WLAN_LOG_ERROR3(s,n1,n2,n3) + #define WLAN_LOG_ERROR4(s,n1,n2,n3,n4) + + #define WLAN_LOG_WARNING0(s) + #define WLAN_LOG_WARNING1(s,n) + #define WLAN_LOG_WARNING2(s,n1,n2) + #define WLAN_LOG_WARNING3(s,n1,n2,n3) + #define WLAN_LOG_WARNING4(s,n1,n2,n3,n4) + + #define WLAN_LOG_NOTICE0(s) + #define WLAN_LOG_NOTICE1(s,n) + #define WLAN_LOG_NOTICE2(s,n1,n2) + #define WLAN_LOG_NOTICE3(s,n1,n2,n3) + #define WLAN_LOG_NOTICE4(s,n1,n2,n3,n4) + + #define WLAN_ASSERT(c) + #define WLAN_HEX_DUMP( l, s, p, n) + + #define DBFENTER + #define DBFEXIT + + #define WLAN_LOG_INFO0(s) + #define WLAN_LOG_INFO1(s,n) + #define WLAN_LOG_INFO2(s,n1,n2) + #define WLAN_LOG_INFO3(s,n1,n2,n3) + #define WLAN_LOG_INFO4(s,n1,n2,n3,n4) + + #define WLAN_LOG_DEBUG0(l, s) + #define WLAN_LOG_DEBUG1(l, s,n) + #define WLAN_LOG_DEBUG2(l, s,n1,n2) + #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3) + #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4) +#endif + +#if (WLAN_OS == WLAN_LINUX_KERNEL) + #define wlan_ticks_per_sec HZ + #define wlan_ms_per_tick (1000UL / (wlan_ticks_per_sec)) + #define wlan_ms_to_ticks(n) ( (n) / (wlan_ms_per_tick)) + #define WLAN_INT_DISABLE(n) { save_flags((n)); cli(); } + #define WLAN_INT_ENABLE(n) { sti(); restore_flags((n)); } + +#elif (WLAN_OS == WLAN_LWOS) + #define atomic_t UINT32 + #define jiffies (sNumTicks) + #define wlan_ticks_per_sec ((kTicksPerTenth) * 10UL) + #define HZ (wlan_ticks_per_sec) + #define wlan_ms_per_tick (1000UL / (wlan_ticks_per_sec)) + #define wlan_ms_to_ticks(n) ( (n) / (wlan_ms_per_tick)) + #define udelay(n) { int i, j=0; for( i = (n)*10; i > 0; i--) j++; } + #define outb_p(v, a) (*((UINT8*)(a))) = (v); + #define outb(v, a) (*((UINT8*)(a))) = (v); + #define inb_p(a) (*((UINT8*)(a))) + #define inb(a) (*((UINT8*)(a))) + #define readb(a) (*((UINT8*)(a))) + #define writeb(byte, dest) ((*((UINT8*)(dest))) = ((UINT8)(byte))) + #define test_and_set_bit(b, p) \ + (((*(UINT32*)(p)) & ((BIT0) << (b))) ? \ + (1) : (((*(UINT32*)(p)) | ((BIT0) << (b))), (0)) ) + #define clear_bit(b, p) ((*((UINT32*)(p))) |= ((BIT0) << (b))) + + #define kmalloc(l,d) malloc((l)) + #define kfree_s(p,l) free((p)) + #define GFP_KERNEL 0 + #define GFP_ATOMIC 0 + #define WLAN_INT_DISABLE(n) { IntDisable(&(n)); } + #define WLAN_INT_ENABLE(n) { IntRestore(&(n)); } +#endif + +/*=============================================================*/ +/*------ Hardware Portability Macros --------------------------*/ +/*=============================================================*/ + +#if (WLAN_CPU_FAMILY == WLAN_Ix86) + #define ieee2host16(n) (n) + #define ieee2host32(n) (n) + #define host2ieee16(n) (n) + #define host2ieee32(n) (n) +#elif (WLAN_CPU_FAMILY == WLAN_PPC) + #define ieee2host16(n) (__swab16((n))) + #define ieee2host32(n) (__swab32((n))) + #define host2ieee16(n) (__swab16((n))) + #define host2ieee32(n) (__swab32((n))) +#endif + +#if (WLAN_OS == WLAN_LWOS) + #define __swab16(n) \ + ((UINT16) ( \ + ((((UINT16)(n)) & ((UINT16)0x00ffU)) << 8 ) | \ + ((((UINT16)(n)) & ((UINT16)0xff00U)) >> 8 ) )) + #define __swab32(n) \ + ((UINT32) ( \ + ((((UINT32)(n)) & ((UINT32)0x000000ffUL)) << 24 ) | \ + ((((UINT32)(n)) & ((UINT32)0x0000ff00UL)) << 8 ) | \ + ((((UINT32)(n)) & ((UINT32)0x00ff0000UL)) >> 8 ) | \ + ((((UINT32)(n)) & ((UINT32)0xff000000UL)) >> 24 ) )) + + #define htons(n) (n) + #define ntohs(n) (n) +#endif + +/*=============================================================*/ +/*--- General Macros ------------------------------------------*/ +/*=============================================================*/ + +#define wlan_max(a, b) (((a) > (b)) ? (a) : (b)) +#define wlan_min(a, b) (((a) < (b)) ? (a) : (b)) + +/*=============================================================*/ +/*--- Variables -----------------------------------------------*/ +/*=============================================================*/ + +extern int wlan_debug; +extern int wlan_ethconv; /* What's the default ethconv? */ + +/*=============================================================*/ +/*--- Functions -----------------------------------------------*/ +/*=============================================================*/ + +#endif /* _WLAN_COMPAT_H */ + diff --git a/src/p80211/README b/src/p80211/README new file mode 100644 index 0000000..e69de29 diff --git a/src/prism2/README b/src/prism2/README new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/README b/src/shared/README new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/p80211metamib.c b/src/shared/p80211metamib.c new file mode 100644 index 0000000..e169bc1 --- /dev/null +++ b/src/shared/p80211metamib.c @@ -0,0 +1,2086 @@ +/* p80211metamib.c: Defines the metadata for the MIB items +* -------------------------------------------------------------------- +* +* Written 1997-99 by Mark Mathews mark@absoval.com +* +* Copyright (c) 1999 AbsoluteValue Software, Inc. +* http://www.absoval.com +* +* This software may be used and distributed according to the terms +* of the GNU Public License, incoporated herein by reference. +* +* The author may be reached as mark@absoval.com, or C/O AbsoluteValue +* Software Inc., P.O. Box 941149, Maitland, FL, 32794-1149 +* +* Description: +* +* Note: A pointer to a variable containing the array length is stored +* in the first four bytes of each array. +* +* -------------------------------------------------------------------- +*/ + +#include +#include +#include + +extern UINT32 MKMIBMETASIZE(dot11StationConfigTable); + +p80211meta_t MKMIBMETANAME(dot11StationConfigTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11StationConfigTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11StationID"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11MediumOccupancyLimit"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 1000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CFPollable"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11CFPPeriod"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CFPMaxDuration"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11AuthenticationResponseTimeOut"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11PrivacyOptionImplemented"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11PowerManagementMode"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(powermgmt), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11DesiredSSID"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 32, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11DesiredBSSType"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(bsstype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11OperationalRateSet"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 126, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11BeaconPeriod"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11DTIMPeriod"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11AssociationResponseTimeOut"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11DisassociateReason"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 9, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11DisassociateStation"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11DeauthenticateReason"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 9, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11DeauthenticateStation"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11AuthenticateFailStatus"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 18, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11AuthenticateFailStation"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; + +UINT32 MKMIBMETASIZE(dot11StationConfigTable) = sizeof(MKMIBMETANAME(dot11StationConfigTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11AuthenticationAlgorithmsTable); + +p80211meta_t MKMIBMETANAME(dot11AuthenticationAlgorithmsTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11AuthenticationAlgorithmsTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11AuthenticationAlgorithmsIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 2, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11AuthenticationAlgorithm"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(authalg), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11AuthenticationAlgorithmsEnable"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; + +UINT32 MKMIBMETASIZE(dot11AuthenticationAlgorithmsTable) = sizeof(MKMIBMETANAME(dot11AuthenticationAlgorithmsTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11WEPDefaultKeysTable); + +p80211meta_t MKMIBMETANAME(dot11WEPDefaultKeysTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11WEPDefaultKeysTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11WEPDefaultKeyIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 4, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11WEPDefaultKeyValue"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 5, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; + +UINT32 MKMIBMETASIZE(dot11WEPDefaultKeysTable) = sizeof(MKMIBMETANAME(dot11WEPDefaultKeysTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11WEPKeyMappingsTable); + +p80211meta_t MKMIBMETANAME(dot11WEPKeyMappingsTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11WEPKeyMappingsTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11WEPKeyMappingIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11WEPKeyMappingAddress"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11WEPKeyMappingWEPOn"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11WEPKeyMappingValue"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 5, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; + +UINT32 MKMIBMETASIZE(dot11WEPKeyMappingsTable) = sizeof(MKMIBMETANAME(dot11WEPKeyMappingsTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PrivacyTable); + +p80211meta_t MKMIBMETANAME(dot11PrivacyTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PrivacyTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11PrivacyInvoked"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11WEPDefaultKeyID"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 3, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11WEPKeyMappingLength"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11ExcludeUnencrypted"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11WEPICVErrorCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11WEPExcludedCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + } +}; + +UINT32 MKMIBMETASIZE(dot11PrivacyTable) = sizeof(MKMIBMETANAME(dot11PrivacyTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKGRPMETASIZE(dot11smt); + +p80211meta_t *MKGRPMETANAME(dot11smt)[] = +{ + (p80211meta_t*)&MKGRPMETASIZE(dot11smt), + MKMIBMETANAME(dot11StationConfigTable), + MKMIBMETANAME(dot11AuthenticationAlgorithmsTable), + MKMIBMETANAME(dot11WEPDefaultKeysTable), + MKMIBMETANAME(dot11WEPKeyMappingsTable), + MKMIBMETANAME(dot11PrivacyTable) +}; + +UINT32 MKGRPMETASIZE(dot11smt) = sizeof(MKGRPMETANAME(dot11smt)) / sizeof(p80211meta_t*); + + +extern UINT32 MKMIBMETASIZE(dot11OperationTable); + +p80211meta_t MKMIBMETANAME(dot11OperationTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11OperationTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11MACAddress"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("dot11RTSThreshold"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 2347, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11ShortRetryLimit"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11LongRetryLimit"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11FragmentationThreshold"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 256, +/* max */ 2346, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11MaxTransmitMSDULifetime"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11MaxReceiveLifetime"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11ManufacturerID"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_DISPLAYSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 128, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_displaystr, +/* fromtextptr */ p80211_fromtext_displaystr, +/* validfunptr */ p80211_isvalid_displaystr + }, + { +/* name */ MKITEMNAME("dot11ProductID"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_DISPLAYSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 128, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_displaystr, +/* fromtextptr */ p80211_fromtext_displaystr, +/* validfunptr */ p80211_isvalid_displaystr + } +}; + +UINT32 MKMIBMETASIZE(dot11OperationTable) = sizeof(MKMIBMETANAME(dot11OperationTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11CountersTable); + +p80211meta_t MKMIBMETANAME(dot11CountersTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11CountersTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11TransmittedFragmentCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11MulticastTransmittedFrameCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11FailedCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11RetryCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11MultipleRetryCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11FrameDuplicateCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11RTSSuccessCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11RTSFailureCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11ACKFailureCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11ReceivedFragmentCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11MulticastReceivedFrameCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11FCSErrorCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11TransmittedFrameCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11WEPUndecryptableCount"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + } +}; + +UINT32 MKMIBMETASIZE(dot11CountersTable) = sizeof(MKMIBMETANAME(dot11CountersTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11GroupAddressesTable); + +p80211meta_t MKMIBMETANAME(dot11GroupAddressesTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11GroupAddressesTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11GroupAddressesIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11Address"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_OCTETSTR), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; + +UINT32 MKMIBMETASIZE(dot11GroupAddressesTable) = sizeof(MKMIBMETANAME(dot11GroupAddressesTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKGRPMETASIZE(dot11mac); + +p80211meta_t *MKGRPMETANAME(dot11mac)[] = +{ + (p80211meta_t*)&MKGRPMETASIZE(dot11mac), + MKMIBMETANAME(dot11OperationTable), + MKMIBMETANAME(dot11CountersTable), + MKMIBMETANAME(dot11GroupAddressesTable) +}; + +UINT32 MKGRPMETASIZE(dot11mac) = sizeof(MKGRPMETANAME(dot11mac)) / sizeof(p80211meta_t*); + + +extern UINT32 MKMIBMETASIZE(dot11PhyOperationTable); + +p80211meta_t MKMIBMETANAME(dot11PhyOperationTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyOperationTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11PHYType"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(phytype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11CurrentRegDomain"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(regdomain), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11TempType"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(temptype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyOperationTable) = sizeof(MKMIBMETANAME(dot11PhyOperationTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PhyAntennaTable); + +p80211meta_t MKMIBMETANAME(dot11PhyAntennaTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyAntennaTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11CurrentTxAntenna"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11DiversitySupport"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(diversity), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11CurrentRxAntenna"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyAntennaTable) = sizeof(MKMIBMETANAME(dot11PhyAntennaTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PhyTxPowerTable); + +p80211meta_t MKMIBMETANAME(dot11PhyTxPowerTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyTxPowerTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11NumberSupportedPowerLevels"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 8, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel1"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel2"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel3"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel4"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel5"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel6"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel7"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11TxPowerLevel8"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 10000, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CurrentTxPowerLevel"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 8, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyTxPowerTable) = sizeof(MKMIBMETANAME(dot11PhyTxPowerTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PhyFHSSTable); + +p80211meta_t MKMIBMETANAME(dot11PhyFHSSTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyFHSSTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11HopTime"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11CurrentChannelNumber"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 99, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11MaxDwellTime"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CurrentDwellTime"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CurrentSet"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CurrentPattern"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CurrentIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyFHSSTable) = sizeof(MKMIBMETANAME(dot11PhyFHSSTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PhyDSSSTable); + +p80211meta_t MKMIBMETANAME(dot11PhyDSSSTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyDSSSTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11CurrentChannel"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 14, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11CCAModeSupported"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11CurrentCCAMode"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(ccamode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11EDThreshold"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyDSSSTable) = sizeof(MKMIBMETANAME(dot11PhyDSSSTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11PhyIRTable); + +p80211meta_t MKMIBMETANAME(dot11PhyIRTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11PhyIRTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11CCAWatchdogTimerMax"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11CCAWatchdogCountMax"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11CCAWatchdogTimerMin"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dot11CCAWatchdogCountMin"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_FALSE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_INT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + } +}; + +UINT32 MKMIBMETASIZE(dot11PhyIRTable) = sizeof(MKMIBMETANAME(dot11PhyIRTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11RegDomainsSupportedTable); + +p80211meta_t MKMIBMETANAME(dot11RegDomainsSupportedTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11RegDomainsSupportedTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11RegDomainsSupportIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 8, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11RegDomainsSupportValue"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(regdomain), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; + +UINT32 MKMIBMETASIZE(dot11RegDomainsSupportedTable) = sizeof(MKMIBMETANAME(dot11RegDomainsSupportedTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11AntennasListTable); + +p80211meta_t MKMIBMETANAME(dot11AntennasListTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11AntennasListTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11AntennaListIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11SupportedTxAntenna"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11SupportedRxAntenna"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("dot11DiversitySelectionRx"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_ENUMINT), +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; + +UINT32 MKMIBMETASIZE(dot11AntennasListTable) = sizeof(MKMIBMETANAME(dot11AntennasListTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11SupportedDataRatesTxTable); + +p80211meta_t MKMIBMETANAME(dot11SupportedDataRatesTxTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11SupportedDataRatesTxTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11SupportedDataRatesTxIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 8, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11SupportedDataRatesTxValue"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; + +UINT32 MKMIBMETASIZE(dot11SupportedDataRatesTxTable) = sizeof(MKMIBMETANAME(dot11SupportedDataRatesTxTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKMIBMETASIZE(dot11SupportedDataRatesRxTable); + +p80211meta_t MKMIBMETANAME(dot11SupportedDataRatesRxTable)[] = +{ + { +/* name */ (char *)&(MKMIBMETASIZE(dot11SupportedDataRatesRxTable)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("dot11SupportedDataRatesRxIndex"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READWRITE, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 1, +/* max */ 8, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dot11SupportedDataRatesRxValue"), +/* did */ P80211DID_MKID(0,0,0,0, +/* */ P80211DID_ISTABLE_TRUE, +/* */ P80211DID_ACCESS_READONLY, +/* */ P80211_TYPE_BOUNDEDINT), +/* offset */ 0, +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; + +UINT32 MKMIBMETASIZE(dot11SupportedDataRatesRxTable) = sizeof(MKMIBMETANAME(dot11SupportedDataRatesRxTable)) / sizeof(p80211meta_t); + + +extern UINT32 MKGRPMETASIZE(dot11phy); + +p80211meta_t *MKGRPMETANAME(dot11phy)[] = +{ + (p80211meta_t*)&MKGRPMETASIZE(dot11phy), + MKMIBMETANAME(dot11PhyOperationTable), + MKMIBMETANAME(dot11PhyAntennaTable), + MKMIBMETANAME(dot11PhyTxPowerTable), + MKMIBMETANAME(dot11PhyFHSSTable), + MKMIBMETANAME(dot11PhyDSSSTable), + MKMIBMETANAME(dot11PhyIRTable), + MKMIBMETANAME(dot11RegDomainsSupportedTable), + MKMIBMETANAME(dot11AntennasListTable), + MKMIBMETANAME(dot11SupportedDataRatesTxTable), + MKMIBMETANAME(dot11SupportedDataRatesRxTable) +}; + +UINT32 MKGRPMETASIZE(dot11phy) = sizeof(MKGRPMETANAME(dot11phy)) / sizeof(p80211meta_t*); + + diff --git a/src/shared/p80211metamsg.c b/src/shared/p80211metamsg.c new file mode 100644 index 0000000..b864082 --- /dev/null +++ b/src/shared/p80211metamsg.c @@ -0,0 +1,2421 @@ +/* p80211msg.c: Defines the data and functions for 802.11 mgmt interfaces +* -------------------------------------------------------------------- +* +* Written 1997-99 by Mark Mathews mark@absoval.com +* +* Copyright (c) 1999 AbsoluteValue Software, Inc. +* http://www.absoval.com +* +* This software may be used and distributed according to the terms +* of the GNU Public License, incoporated herein by reference. +* +* The author may be reached as mark@absoval.com, or C/O AbsoluteValue +* Software Inc., P.O. Box 941149, Maitland, FL, 32794-1149 +* +* Description: +* +* Note: Constant values are always in HOST byte order. +* +* -------------------------------------------------------------------- +*/ + +#include +#include + +#include +#include +#include + +/*====================================================================*/ +/* Collection Sub-items Metadata */ +/*====================================================================*/ + +/*--------------------------------------------------------------------*/ +/* bssdesc - used in scan */ +/* The following array lists the metadata for each sub-item within */ +/* each collections present in the scan request message. */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKCOLLMETASIZE(bssdesc); + +p80211meta_t MKCOLLMETANAME(bssdesc)[] = +{ + { +/* name */ (char *)&(MKCOLLMETASIZE(bssdesc)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "bssid", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ "ssid", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR32, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("bsstype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 60UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(bsstype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("beaconperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 72UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("dtimperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 84UL ), +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("timestamp"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 96UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("localtime"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 108UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("fhdwelltime"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 120UL ), +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhhopset"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 132UL ), +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhhoppattern"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 144UL ), +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhhopindex"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 156UL ), +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dschannel"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 168UL ), +/* min */ 1, +/* max */ 14, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpcount"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 180UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("cfpperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 192UL ), +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpmaxduration"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 204UL ), +/* min */ 0, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpdurremaining"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 216UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("ibssatimwindow"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 228UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("cfpollable"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 240UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("cfpollreq"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 252UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("privacy"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 264UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("basicrate1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 276UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 288UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 300UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 312UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 324UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 336UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 348UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 360UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + } +}; /* end of bssdesc collection metadata list */ + +UINT32 MKCOLLMETASIZE(bssdesc) = sizeof(MKCOLLMETANAME(bssdesc))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* getmibvalue - used in mibget */ +/* The following array lists the metadata for the mibvalue */ +/* argument to the getmib request message. */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKCOLLMETASIZE(getmibvalue); + +p80211meta_t MKCOLLMETANAME(getmibvalue)[] = +{ + { +/* name */ (char *)&(MKCOLLMETASIZE(getmibvalue)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "uint32value", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_MIBITEM), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibitem, +/* fromtextptr */ p80211_fromtext_mibitem, +/* validfunptr */ p80211_isvalid_mibitem, + }, + { +/* name */ "pstrvalue", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_MIBITEM), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR255, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibitem, +/* fromtextptr */ p80211_fromtext_mibitem, +/* validfunptr */ p80211_isvalid_mibitem + }, +}; /* end of getmibvalue collection metadata list */ + +UINT32 MKCOLLMETASIZE(getmibvalue) = sizeof(MKCOLLMETANAME(getmibvalue))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* setmibvalue - used in mibset */ +/* The following array lists the metadata for the mibvalue */ +/* argument to the setmibvalue request message. */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKCOLLMETASIZE(setmibvalue); + +p80211meta_t MKCOLLMETANAME(setmibvalue)[] = +{ + { +/* name */ (char *)&(MKCOLLMETASIZE(setmibvalue)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "uint32value", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_MIBITEM), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibitem, +/* fromtextptr */ p80211_fromtext_mibitem, +/* validfunptr */ p80211_isvalid_mibitem, + }, + { +/* name */ "pstrvalue", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_MIBITEM), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR255, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibitem, +/* fromtextptr */ p80211_fromtext_mibitem, +/* validfunptr */ p80211_isvalid_mibitem + }, +}; /* end of setmibvalue collection metadata list */ + +UINT32 MKCOLLMETASIZE(setmibvalue) = sizeof(MKCOLLMETANAME(setmibvalue))/sizeof(p80211meta_t); + +/*====================================================================*/ +/* Message Argument Metadata */ +/*====================================================================*/ + +/*--------------------------------------------------------------------*/ +/* metadata for the mibget request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(mibget); + +p80211meta_t MKREQMETANAME(mibget)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(mibget)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("mibattribute"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibdid, +/* fromtextptr */ p80211_fromtext_mibdid, +/* validfunptr */ p80211_isvalid_mibdid + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("mibvalue"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 24UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(getmibvalue), +/* totextptr */ p80211_totext_mibcollection, +/* fromtextptr */ p80211_fromtext_mibcollection, +/* validfunptr */ p80211_isvalid_mibcollection + } +}; /* end of mibget request message metadata list */ + +UINT32 MKREQMETASIZE(mibget) = sizeof(MKREQMETANAME(mibget))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the mibset request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(mibset); + +p80211meta_t MKREQMETANAME(mibset)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(mibset)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("mibattribute"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_mibdid, +/* fromtextptr */ p80211_fromtext_mibdid, +/* validfunptr */ p80211_isvalid_mibdid + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("mibvalue"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 24UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(getmibvalue), +/* totextptr */ p80211_totext_mibcollection, +/* fromtextptr */ p80211_fromtext_mibcollection, +/* validfunptr */ p80211_isvalid_mibcollection + } +}; /* end of mibset request message metadata list */ + +UINT32 MKREQMETASIZE(mibset) = sizeof(MKREQMETANAME(mibset))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the powermgmt request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(powermgmt); + +p80211meta_t MKREQMETANAME(powermgmt)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(powermgmt)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("powermgmtmode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(powermgmt), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("wakeup"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("receivedtims"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 24UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 36UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of powermgmt request message metadata list */ + +UINT32 MKREQMETASIZE(powermgmt) = sizeof(MKREQMETANAME(powermgmt))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the scan request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(scan); + +p80211meta_t MKREQMETANAME(scan)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(scan)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ MKITEMNAME("bsstype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(bsstype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("bssid"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 12UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("ssid"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 28UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR32, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("scantype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 72UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(scantype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("probedelay"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 84UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("channellist"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 96UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR14, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("minchanneltime"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 120UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("maxchanneltime"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 132UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 144UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("bssdesc1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 156UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 536UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 916UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 1296UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 1676UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 2056UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 2436UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 2816UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc9"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 3196UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + }, + { +/* name */ MKITEMNAME("bssdesc10"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_COLLECTION), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 3576UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ MKCOLLMETANAME(bssdesc), +/* totextptr */ p80211_totext_collection, +/* fromtextptr */ p80211_fromtext_collection, +/* validfunptr */ p80211_isvalid_collection + } +}; /* end of scan request message metadata list */ + +UINT32 MKREQMETASIZE(scan) = sizeof(MKREQMETANAME(scan))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the join request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(join); + +p80211meta_t MKREQMETANAME(join)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(join)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "bssid", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ "joinfailuretimeout", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 1, +/* max */ UINT32_MAX, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 28UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 40UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 52UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 64UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 76UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 88UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 110UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 112UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 124UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 136UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 148UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 160UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 172UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 184UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 196UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 208UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 220UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of join request message metadata list */ + +UINT32 MKREQMETASIZE(join) = sizeof(MKREQMETANAME(join))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the authenticate request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(authenticate); + +p80211meta_t MKREQMETANAME(authenticate)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(authenticate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("authenticationtype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(authalg), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ "authenticationfailuretimeout", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 28UL ), +/* min */ 1, +/* max */ UINT32_MAX, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 40UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of authenticate request message metadata list */ + +UINT32 MKREQMETASIZE(authenticate) = sizeof(MKREQMETANAME(authenticate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the deauthenticate request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(deauthenticate); + +p80211meta_t MKREQMETANAME(deauthenticate)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(deauthenticate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("reasoncode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(reason), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 28UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of deauthenticate request message metadata list */ + +UINT32 MKREQMETASIZE(deauthenticate) = sizeof(MKREQMETANAME(deauthenticate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the associate request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(associate); + +p80211meta_t MKREQMETANAME(associate)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(associate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ "associatefailuretimeout", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 1, +/* max */ UINT32_MAX, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpollable"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 28UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("cfpollreq"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 40UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("privacy"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 52UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("listeninterval"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 64UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 76UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of associate request message metadata list */ + +UINT32 MKREQMETASIZE(associate) = sizeof(MKREQMETANAME(associate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the reassociate request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(reassociate); + +p80211meta_t MKREQMETANAME(reassociate)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(reassociate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "newapaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ "reassociatefailuretimeout", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 1, +/* max */ UINT32_MAX, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpollable"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 28UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("cfpollreq"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 40UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("privacy"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 52UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("listeninterval"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 64UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 76UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of reassociate request message metadata list */ + +UINT32 MKREQMETASIZE(reassociate) = sizeof(MKREQMETANAME(reassociate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the disassociate request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(disassociate); + +p80211meta_t MKREQMETANAME(disassociate)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(disassociate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("reasoncode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(reason), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 28UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of disassociate request message metadata list */ + +UINT32 MKREQMETASIZE(disassociate) = sizeof(MKREQMETANAME(disassociate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the start request message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKREQMETASIZE(start); + +p80211meta_t MKREQMETANAME(start)[] = +{ + { +/* name */ (char *)&(MKREQMETASIZE(start)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "ssid", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR32, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("bsstype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 44UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(bsstype), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("beaconperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 56UL ), +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dtimperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 68UL ), +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpperiod"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 80UL ), +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("cfpmaxduration"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 92UL ), +/* min */ 0, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhdwelltime"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 104UL ), +/* min */ 1, +/* max */ 65535, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhhopset"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 116UL ), +/* min */ 1, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("fhhoppattern"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 128UL ), +/* min */ 0, +/* max */ 255, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("dschannel"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 140UL ), +/* min */ 1, +/* max */ 14, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("ibssatimwindow"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 152UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("probedelay"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_INT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 164UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_int, +/* fromtextptr */ p80211_fromtext_int, +/* validfunptr */ p80211_isvalid_int + }, + { +/* name */ MKITEMNAME("cfpollable"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 176UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("cfpollreq"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 188UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(truth), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + }, + { +/* name */ MKITEMNAME("basicrate1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 200UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 212UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 224UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 236UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 248UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 260UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 272UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("basicrate8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 284UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate1"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 296UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate2"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 308UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate3"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 320UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate4"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 332UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate5"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 344UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate6"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 356UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate7"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 368UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("operationalrate8"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_BOUNDEDINT), +/* offset */ P80211ITEM_MKOFFSET(0UL, ISREQUEST, 0UL, 380UL ), +/* min */ 2, +/* max */ 127, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_boundedint, +/* fromtextptr */ p80211_fromtext_boundedint, +/* validfunptr */ p80211_isvalid_boundedint + }, + { +/* name */ MKITEMNAME("resultcode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, 0UL, ISCONFIRM, 392UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(resultcode), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of start request message metadata list */ + +UINT32 MKREQMETASIZE(start) = sizeof(MKREQMETANAME(start))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the authenticate indication message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKINDMETASIZE(authenticate); + +p80211meta_t MKINDMETANAME(authenticate)[] = +{ + { +/* name */ (char *)&(MKINDMETASIZE(authenticate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("authenticationtype"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(authalg), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of authenticate indication metadata list */ + +UINT32 MKINDMETASIZE(authenticate) = sizeof(MKINDMETANAME(authenticate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the authenticate indication message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKINDMETASIZE(deauthenticate); + +p80211meta_t MKINDMETANAME(deauthenticate)[] = +{ + { +/* name */ (char *)&(MKINDMETASIZE(deauthenticate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("reasoncode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(reason), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of deauthenticate indication metadata list */ + +UINT32 MKINDMETASIZE(deauthenticate) = sizeof(MKINDMETANAME(deauthenticate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the associate indication message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKINDMETASIZE(associate); + +p80211meta_t MKINDMETANAME(associate)[] = +{ + { +/* name */ (char *)&(MKINDMETASIZE(associate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; /* end of associate indication metadata list */ + +UINT32 MKINDMETASIZE(associate) = sizeof(MKINDMETANAME(associate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the reassociate indication message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKINDMETASIZE(reassociate); + +p80211meta_t MKINDMETANAME(reassociate)[] = +{ + { +/* name */ (char *)&(MKINDMETASIZE(reassociate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + } +}; /* end of reassociate indication metadata list */ + +UINT32 MKINDMETASIZE(reassociate) = sizeof(MKINDMETANAME(reassociate))/sizeof(p80211meta_t); + +/*--------------------------------------------------------------------*/ +/* metadata for the disassociate indication message arguments */ +/*--------------------------------------------------------------------*/ + +extern UINT32 MKINDMETASIZE(disassociate); + +p80211meta_t MKINDMETANAME(disassociate)[] = +{ + { +/* name */ (char *)&(MKINDMETASIZE(disassociate)), +/* did */ 0, +/* offset */ 0, +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ NULL, +/* fromtextptr */ NULL, +/* validfunptr */ NULL + }, + { +/* name */ "peerstaaddress", +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_OCTETSTR), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, ISCONFIRM, 0UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ MAXLEN_PSTR6, +/* enumptr */ NULL, +/* collptr */ NULL, +/* totextptr */ p80211_totext_octetstr, +/* fromtextptr */ p80211_fromtext_octetstr, +/* validfunptr */ p80211_isvalid_octetstr + }, + { +/* name */ MKITEMNAME("reasoncode"), +/* did */ P80211DID_MKID(0,0,0,0,0,0,P80211_TYPE_ENUMINT), +/* offset */ P80211ITEM_MKOFFSET(ISREQUIRED, ISREQUEST, 0UL, 16UL ), +/* min */ 0, +/* max */ 0, +/* maxlen */ 0, +/* enumptr */ &MKENUMNAME(reason), +/* collptr */ NULL, +/* totextptr */ p80211_totext_enumint, +/* fromtextptr */ p80211_fromtext_enumint, +/* validfunptr */ p80211_isvalid_enumint + } +}; /* end of disassociate indication metadata list */ + +UINT32 MKINDMETASIZE(disassociate) = sizeof(MKINDMETANAME(disassociate))/sizeof(p80211meta_t); + +/*====================================================================*/ +/* Messages Group array */ +/* Note: the positions in this array are _very_ important. They */ +/* match the message codes #defined in p80211msg.h . */ +/*====================================================================*/ +extern UINT32 MKGRPMETASIZE(msg); + +p80211meta_t *MKGRPMETANAME(msg)[] = +{ + (p80211meta_t*)&MKGRPMETASIZE(msg), /* 0 - reserved for size ptr */ + /*-- request messages --------------------------------------------*/ + MKREQMETANAME(mibget), /* 1 - P80211MSG_REQ_MIB_GET */ + MKREQMETANAME(mibset), /* 2 - P80211MSG_REQ_MIB_SET */ + MKREQMETANAME(powermgmt), /* 3 - P80211MSG_REQ_POWERMGMT */ + MKREQMETANAME(scan), /* 4 - P80211MSG_REQ_SCAN */ + MKREQMETANAME(join), /* 5 - P80211MSG_REQ_JOIN */ + MKREQMETANAME(authenticate), /* 6 - P80211MSG_REQ_AUTHENTICATE */ + MKREQMETANAME(deauthenticate), /* 7 - P80211MSG_REQ_DEAUTHENTICATE */ + MKREQMETANAME(associate), /* 8 - P80211MSG_REQ_ASSOCIATE */ + MKREQMETANAME(reassociate), /* 9 - P80211MSG_REQ_REASSOCIATE */ + MKREQMETANAME(disassociate), /* 10 - P80211MSG_REQ_DISASSOCIATE */ + NULL, /* 11 - P80211MSG_REQ_RESET, implementation TBD */ + MKREQMETANAME(start) /* 12 - P80211MSG_REQ_START */, + NULL, /* 13 - reserved */ + NULL, /* 14 - reserved */ + NULL, /* 15 - reserved */ + NULL, /* 16 - reserved */ + NULL, /* 17 - reserved */ + NULL, /* 18 - reserved */ + NULL, /* 19 - reserved */ + NULL, /* 20 - reserved */ + /*-- indication messages -----------------------------------------*/ + MKINDMETANAME(authenticate), /* 21 - P80211MSG_IND_AUTHENTICATE */ + MKINDMETANAME(deauthenticate), /* 22 - P80211MSG_IND_DEAUTHENTICATE */ + MKINDMETANAME(associate), /* 23 - P80211MSG_IND_ASSOCIATE */ + MKINDMETANAME(reassociate), /* 24 - P80211MSG_IND_REASSOCIATE */ + MKINDMETANAME(disassociate) /* 25 - P80211MSG_IND_DISASSOCIATE */ + /* 26 - 40 reserved */ + /*-- indication messages -----------------------------------------*/ + /* 41 - 60 reserved */ +}; + +UINT32 MKGRPMETASIZE(msg) = sizeof(MKGRPMETANAME(msg)) / + sizeof(p80211meta_t*); + diff --git a/src/shared/p80211types.c b/src/shared/p80211types.c new file mode 100644 index 0000000..a83cef8 --- /dev/null +++ b/src/shared/p80211types.c @@ -0,0 +1,405 @@ +/* p80211types.c: Defines globally used types in linux-wlan +* -------------------------------------------------------------------- +* +* Written 1997-99 by Mark Mathews mark@absoval.com +* +* Copyright (c) 1999 AbsoluteValue Software, Inc. +* http://www.absoval.com +* +* This software may be used and distributed according to the terms +* of the GNU Public License, incoporated herein by reference. +* +* The author may be reached as mark@absoval.com, or C/O AbsoluteValue +* Software Inc., P.O. Box 941149, Maitland, FL, 32794-1149 +* +* Description: +* +* Note: Constant values are always in HOST byte order. +* +* -------------------------------------------------------------------- +*/ + +#include + +#include +#include +#include + + +/*====================================================================*/ +/* Item Metadata */ +/* The following array contains pointers to the metadata sections. */ +/* Each section is an array of groups, each group is an array of */ +/* metadata items. */ +/*====================================================================*/ + +extern UINT32 p80211meta_slist_size; + +p80211meta_t **p80211meta_slist[] = +{ + (p80211meta_t**)&p80211meta_slist_size, + MKGRPMETANAME(dot11smt), + MKGRPMETANAME(dot11mac), + MKGRPMETANAME(dot11phy), + MKGRPMETANAME(msg) + +/* , + MKGRPMETANAME(linux), + MKGRPMETANAME(am930), + MKGRPMETANAME(hfa384x) +*/ +}; + +UINT32 p80211meta_slist_size = sizeof(p80211meta_slist)/sizeof(p80211meta_t**); + + +/*====================================================================*/ +/* Item enumerations */ +/* The following arrays list the numbers and names for each of the */ +/* enumerations present in the 802.11 MIB and MLME. */ +/*====================================================================*/ + +/* the following depends on the following defines: + P80211_NOINCLUDESTRINGS - ifdef, all metadata name fields are empty strings +*/ + +#define MKENUM(name) \ +p80211enum_t MKENUMNAME(name) = \ + { \ + sizeof((p80211enumpair_ ## name)) / sizeof(p80211enumpair_t), \ + (p80211enumpair_ ## name) \ + } + +#ifdef P80211_NOINCLUDESTRINGS + #define MKENUMPAIR(n,s) { (n), ("") } +#else + #define MKENUMPAIR(n,s) { (n), (s) } +#endif + +#define MKENUMPAIRLIST(name) p80211enumpair_t p80211enumpair_ ## name [] = + + +MKENUMPAIRLIST(truth) +{ + MKENUMPAIR( 0, "false" ), + MKENUMPAIR( 1, "true") +}; +MKENUM(truth); + +MKENUMPAIRLIST(powermgmt) +{ + MKENUMPAIR( 1, "active" ), + MKENUMPAIR( 2, "powersave" ) +}; +MKENUM(powermgmt); + +MKENUMPAIRLIST(bsstype) +{ + MKENUMPAIR( 1, "infrastructure" ), + MKENUMPAIR( 2, "independent" ), + MKENUMPAIR( 3, "any" ) +}; +MKENUM(bsstype); + +MKENUMPAIRLIST(authalg) +{ + MKENUMPAIR( 1, "opensystem" ), + MKENUMPAIR( 2, "sharedkey" ) +}; +MKENUM(authalg); + +MKENUMPAIRLIST(phytype) +{ + MKENUMPAIR( 1, "fhss" ), + MKENUMPAIR( 2, "dsss" ), + MKENUMPAIR( 3, "irbaseband" ) +}; +MKENUM(phytype); + +MKENUMPAIRLIST(temptype) +{ + MKENUMPAIR( 1, "commercial" ), + MKENUMPAIR( 2, "industrial" ) +}; +MKENUM(temptype); + +MKENUMPAIRLIST(regdomain) +{ + MKENUMPAIR( 0x10, "fcc" ), + MKENUMPAIR( 0x20, "doc" ), + MKENUMPAIR( 0x30, "etsi" ), + MKENUMPAIR( 0x31, "spain" ), + MKENUMPAIR( 0x32, "france" ), + MKENUMPAIR( 0x40, "mkk" ) +}; +MKENUM(regdomain); + +MKENUMPAIRLIST(ccamode) +{ + MKENUMPAIR( 0x01, "edonly" ), + MKENUMPAIR( 0x02, "csonly" ), + MKENUMPAIR( 0x04, "edandcs" ) +}; +MKENUM(ccamode); + +MKENUMPAIRLIST(diversity) +{ + MKENUMPAIR( 1, "fixedlist" ), + MKENUMPAIR( 2, "notsupported" ), + MKENUMPAIR( 3, "dynamic" ) +}; +MKENUM(diversity); + +MKENUMPAIRLIST(scantype) +{ + MKENUMPAIR( 1, "active" ), + MKENUMPAIR( 2, "passive" ), +}; +MKENUM(scantype); + +MKENUMPAIRLIST(resultcode) +{ + MKENUMPAIR( 1, "success" ), + MKENUMPAIR( 2, "invalid_parameters" ), + MKENUMPAIR( 3, "not_supported" ), + MKENUMPAIR( 4, "timeout" ), + MKENUMPAIR( 5, "too_many_req" ), + MKENUMPAIR( 6, "refused" ), + MKENUMPAIR( 7, "bss_already" ), + MKENUMPAIR( 8, "invalid_access" ) +}; +MKENUM(resultcode); + +/*--------------------------------------------------------------------*/ +/* Note: the following names are from the 802.11 SDL, the comment */ +/* lists the 802.11 Chapter 7 description. */ +/*--------------------------------------------------------------------*/ +MKENUMPAIRLIST(reason) +{ + MKENUMPAIR( 1, "unspec_reason" ), + /* Unspecified Reason */ + MKENUMPAIR( 2, "auth_not_valid" ), + /* Previous authentication no longer valid */ + MKENUMPAIR( 3, "deauth_lv_ss" ), + /* Deauthenticated because sending station is leaving (has left) IBSS or ESS */ + MKENUMPAIR( 4, "inactivity" ), + /* Disassociated due to inactivity */ + MKENUMPAIR( 5, "ap_overload" ), + /* Disassociated because AP is unable to handle all currently associated stations */ + MKENUMPAIR( 6, "class23_err" ), + /* Class 2 or 3 frame received from nonauthenticated station */ + MKENUMPAIR( 7, "class3_err" ), + /* Class 3 frame received from nonassociated station */ + MKENUMPAIR( 8, "disas_lv_ss" ), + /* Disassociated because sending station is leaving (has left BSS) */ + MKENUMPAIR( 9, "asoc_not_auth" ) + /* Station requesting (re)association is not authenticated with responding station */ +}; +MKENUM(reason); + +/*--------------------------------------------------------------------*/ +/* Note: the following names are from the 802.11 SDL, the comment */ +/* lists the 802.11 Chapter 7 description. */ +/*--------------------------------------------------------------------*/ +MKENUMPAIRLIST(status) +{ + MKENUMPAIR( 0, "successful" ), + /* Successful */ + MKENUMPAIR( 1, "unspec_failure" ), + /* Unspecified failure */ + MKENUMPAIR( 10, "unsup_cap" ), + /* Cannot support all requested capabilities in Capability Information field */ + MKENUMPAIR( 11, "reasoc_no_asoc" ), + /* Reassociation denied due to inability to confirm that association exists */ + MKENUMPAIR( 12, "fail_other" ), + /* Association denied due to to reason outside scope of this standard */ + MKENUMPAIR( 13, "unspt_alg" ), + /* Responding station does not support the specified authentication algorithm */ + MKENUMPAIR( 14, "auth_seq_fail" ), + /* Received and authentication frame with authentication transaction sequence number out of expected sequence */ + MKENUMPAIR( 15, "chlng_fail" ), + /* Authentication rejected because of challenge failure */ + MKENUMPAIR( 16, "auth_timeout" ), + /* Authentication rejected due to timeout waiting for next frame in sequence */ + MKENUMPAIR( 17, "ap_full" ), + /* Association denied because AP is unable to handle additional associated stations */ + MKENUMPAIR( 18, "unsup_rate" ) + /* Association denied due to requesting station not supporting all of the data rates in the BSSBasicRateSet parameter */ +}; +MKENUM(status); + + +MKENUMPAIRLIST(msgcode) +{ + MKENUMPAIR( P80211MSG_REQ_MIB_GET, "mibget"), + MKENUMPAIR( P80211MSG_REQ_MIB_SET, "mibset"), + MKENUMPAIR( P80211MSG_REQ_POWERMGMT, "powermgmt"), + MKENUMPAIR( P80211MSG_REQ_SCAN, "scan"), + MKENUMPAIR( P80211MSG_REQ_JOIN, "join"), + MKENUMPAIR( P80211MSG_REQ_AUTHENTICATE, "authenticate"), + MKENUMPAIR( P80211MSG_REQ_DEAUTHENTICATE, "deauthenticate"), + MKENUMPAIR( P80211MSG_REQ_ASSOCIATE, "associate"), + MKENUMPAIR( P80211MSG_REQ_REASSOCIATE, "reassociate"), + MKENUMPAIR( P80211MSG_REQ_DISASSOCIATE, "disassociate"), + MKENUMPAIR( P80211MSG_REQ_RESET, "reset"), + MKENUMPAIR( P80211MSG_REQ_START, "start"), + + MKENUMPAIR( P80211MSG_IND_AUTHENTICATE, "authenticate.ind"), + MKENUMPAIR( P80211MSG_IND_DEAUTHENTICATE, "deauthenticate.ind"), + MKENUMPAIR( P80211MSG_IND_ASSOCIATE, "associate.ind"), + MKENUMPAIR( P80211MSG_IND_REASSOCIATE, "reassociate.ind"), + MKENUMPAIR( P80211MSG_IND_DISASSOCIATE, "disassociate.ind"), +}; +MKENUM(msgcode); + +/*--------------------------------------------------------------------*/ +/* The following function definitions are for functions that */ +/* functions that convert MIB items binary represenations to/from */ +/* their textual representations. */ +/*--------------------------------------------------------------------*/ + + +/*-- DISPLAYSTR ------------------------------------------------------*/ +/* pstr ==> cstr */ +void p80211_totext_displaystr( void ) +{ +} + +/* cstr ==> pstr */ +void p80211_fromtext_displaystr( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_displaystr( void ) +{ +} + +/*-- OCTETSTR --------------------------------------------------------*/ +/* pstr ==> "xx:xx:...." */ +void p80211_totext_octetstr( void ) +{ +} + +/* "xx:xx:...." ==> pstr */ +void p80211_fromtext_octetstr( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_octetstr( void ) +{ +} + +/*-- BOUNDEDINT ------------------------------------------------------*/ +/* UINT32 ==> %d */ +void p80211_totext_boundedint( void ) +{ +} + +/* %d ==> UINT32 */ +void p80211_fromtext_boundedint( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_boundedint( void ) +{ +} + +/*-- INT -------------------------------------------------------------*/ +/* UINT32 ==> %d */ +void p80211_totext_int( void ) +{ +} + +/* %d ==> UINT32 */ +void p80211_fromtext_int( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_int( void ) +{ +} + +/*-- ENUMINT ---------------------------------------------------------*/ +/* UINT32 ==> */ +void p80211_totext_enumint( void ) +{ +} + +/* ==> UINT32 */ +void p80211_fromtext_enumint( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_enumint( void ) +{ +} + +/*-- COLLECTION ------------------------------------------------------*/ +/* UINT32 ==> */ +void p80211_totext_collection( void ) +{ +} + +/* ==> UINT32 */ +void p80211_fromtext_collection( void ) +{ +} + +/* function that checks validity of data item's value */ +void p80211_isvalid_collection( void ) +{ +} + +/*-- MIBITEM ---------------------------------------------------------*/ +/* function that checks validity of a mibitem's binary value */ +void p80211_isvalid_mibitem( void ) +{ +} + +/* ==> */ +void p80211_totext_mibitem( void ) +{ +} + +/* ==> */ +void p80211_fromtext_mibitem( void ) +{ +} + +/*-- MIBDID ----------------------------------------------------------*/ +/* function that checks validity of a mibdid's binary value */ +void p80211_isvalid_mibdid( void ) +{ +} + +/* ==> */ +void p80211_totext_mibdid( void ) +{ +} + +/* ==> */ +void p80211_fromtext_mibdid( void ) +{ +} + +/*-- MIBCOLLECTION ---------------------------------------------------*/ +/* function that checks validity of a mibcollection binary value */ +void p80211_isvalid_mibcollection( void ) +{ +} + +/* ==> */ +void p80211_totext_mibcollection( void ) +{ +} + +/* ==> */ +void p80211_fromtext_mibcollection( void ) +{ +} + diff --git a/src/tstmeta/Makefile b/src/tstmeta/Makefile new file mode 100644 index 0000000..bd51792 --- /dev/null +++ b/src/tstmeta/Makefile @@ -0,0 +1,12 @@ + +all : tstmeta + +SRCS= ../shared/p80211types.c \ + ../shared/p80211metamsg.c \ + ../shared/p80211metamib.c \ + tstmeta.c + +tstmeta : ../include/wlan/p80211types.h \ + ../include/wlan/p80211msg.h \ + $(SRCS) + cc -I ../include -D__LINUX_WLAN__ -o tstmeta $(SRCS) diff --git a/src/tstmeta/README b/src/tstmeta/README new file mode 100644 index 0000000..e69de29 diff --git a/src/tstmeta/tstmeta b/src/tstmeta/tstmeta new file mode 100755 index 0000000000000000000000000000000000000000..14b5fb178ed3b29612d14586599711b266451a97 GIT binary patch literal 40007 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 literal 0 HcmV?d00001 diff --git a/src/tstmeta/tstmeta.c b/src/tstmeta/tstmeta.c new file mode 100644 index 0000000..c2fe159 --- /dev/null +++ b/src/tstmeta/tstmeta.c @@ -0,0 +1,126 @@ +/* p80211 metadata test program */ + + +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + int s, g, i, n, k; + UINT32 offset; + UINT32 nenumargs; + UINT32 ncollargs; + + if ( argc > 1 ) + k = atoi(argv[1]); + else + k = 1; + + for ( s=k; s < GETMETASIZE(p80211meta_slist); s++) + { + if ( p80211meta_slist[s] != NULL ) + { + for ( g=1; g < GETMETASIZE(p80211meta_slist[s]); g++) + { + if ( p80211meta_slist[s][g] != NULL ) + { + for ( i=1; i < GETMETASIZE(p80211meta_slist[s][g]); i++) + { + offset = p80211meta_slist[s][g][i].msgoffset; + printf(" name=%s\n", p80211meta_slist[s][g][i].name); + printf(" did=0x%x\n", p80211meta_slist[s][g][i].did); + printf(" msgoffset value=0x%x\n", offset ); + printf(" is required?=0x%x\n", P80211ITEM_ISREQUIRED(offset)); + printf(" is request?=0x%x\n", P80211ITEM_ISREQUEST(offset)); + printf(" is confirm?=0x%x\n", P80211ITEM_ISCONFIRM(offset)); + printf(" actual offset=%lu\n", P80211ITEM_GET_OFFSET(offset)); + printf(" min=%lu\n", p80211meta_slist[s][g][i].min); + printf(" max=%lu\n", p80211meta_slist[s][g][i].max); + printf(" maxlen=%lu\n", p80211meta_slist[s][g][i].maxlen); + + /******* IF there's an ENUM LIST, print it *********/ + if ( P80211DID_TYPE(p80211meta_slist[s][g][i].did) == P80211_TYPE_ENUMINT ) + { + printf(" enum list:\n"); + + nenumargs= p80211meta_slist[s][g][i].enumptr->nitems; + + printf(" nenumargs=%lu\n", nenumargs); + + for ( n = 0; n < nenumargs; n++) + { + printf(" enum value: %lu\n", p80211meta_slist[s][g][i].enumptr->list[n].val); + printf(" enum name: %s\n", p80211meta_slist[s][g][i].enumptr->list[n].name); + } + } + else + { + if ( p80211meta_slist[s][g][i].enumptr == NULL ) + printf(" enum list = NULL\n"); + else + printf(" ERROR: type is not ENUMINT, yet enumptr not NULL\n"); + } + + /******* IF there's a COLLECTION SUB-ITEM LIST, print it *********/ + if ( P80211DID_TYPE(p80211meta_slist[s][g][i].did)==P80211_TYPE_COLLECTION) + { + printf(" collection list:\n"); + + ncollargs = GETMETASIZE(p80211meta_slist[s][g][i].collptr); + + printf(" ncollargs=%lu\n", ncollargs); + + for ( n = 1; n < ncollargs; n++) + { + offset = p80211meta_slist[s][g][i].collptr[n].msgoffset; + printf(" name: %s\n", p80211meta_slist[s][g][i].collptr[n].name); + printf(" did: 0x%x\n", p80211meta_slist[s][g][i].collptr[n].did); + printf(" msgoffset value=0x%x\n", offset ); + printf(" is required?=0x%x\n", P80211ITEM_ISREQUIRED(offset)); + printf(" is request?=0x%x\n", P80211ITEM_ISREQUEST(offset)); + printf(" is confirm?=0x%x\n", P80211ITEM_ISCONFIRM(offset)); + printf(" actual offset=%lu\n", P80211ITEM_GET_OFFSET(offset)); + printf(" min=%lu\n", p80211meta_slist[s][g][i].collptr[n].min); + printf(" max=%lu\n", p80211meta_slist[s][g][i].collptr[n].max); + printf(" maxlen=%lu\n", p80211meta_slist[s][g][i].collptr[n].maxlen); + + /******* item in COLLECTION SUB-ITEM LIST is an ENUMINT type *********/ + if ( P80211DID_TYPE(p80211meta_slist[s][g][i].collptr[n].did) == P80211_TYPE_ENUMINT ) + { + printf(" enum list:\n"); + + nenumargs= p80211meta_slist[s][g][i].collptr[n].enumptr->nitems; + + printf(" nenumargs=%lu\n", nenumargs); + + for ( k = 0; k < nenumargs; k++) + { + printf(" enum value: %lu\n", p80211meta_slist[s][g][i].collptr[n].enumptr->list[k].val); + printf(" enum name: %s\n", p80211meta_slist[s][g][i].collptr[n].enumptr->list[k].name); + } + } + else + { + if ( p80211meta_slist[s][g][i].collptr[n].enumptr == NULL ) + printf(" enum list = NULL\n"); + else + printf(" ERROR: type is not ENUMINT, yet enumptr not NULL\n"); + } + + if ( p80211meta_slist[s][g][i].collptr[n].collptr != NULL ) + { + printf(" ERROR: it looks as though you have an embedded\n"); + printf(" collection; not expected\n"); + } + } + } + } + } + } + } + } + return 0; +} diff --git a/src/wlanctl/Makefile b/src/wlanctl/Makefile new file mode 100644 index 0000000..d45b528 --- /dev/null +++ b/src/wlanctl/Makefile @@ -0,0 +1,23 @@ +# makefile for the PRISM/AMD79C930 configuration utility + +include ../config.mk + +ifndef CFLAGS +CFLAGS = -O2 -Wall -Wstrict-prototypes -Winline -pipe -D__LINUX_WLAN__ +endif + +CPPFLAGS = -I../include -I$(LINUX)/include + + +SRCS = main.c prmib.c + + +wlanctl: main.o prmib.o + cc -o wlanctl main.o prmib.o + +install: + cp -p wlanctl $(INST_EXEDIR) + +clean: + rm -f core core.* *.o .*.o *.s *.a .depend tmp_make *~ + diff --git a/src/wlanctl/README b/src/wlanctl/README new file mode 100644 index 0000000..e69de29 diff --git a/src/wlanctl/main.c b/src/wlanctl/main.c new file mode 100644 index 0000000..b401666 --- /dev/null +++ b/src/wlanctl/main.c @@ -0,0 +1,744 @@ +/* main.c: Entry point for the wlanctl program +* -------------------------------------------------------------------- +* Linux WLAN +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.0 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The initial developer of the original code is Mark S. Mathews +* . Portions created by Mark S. Mathews +* are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. +* Copyright (c) 1999 AbsoluteValue Software, Inc. +* http://www.absoval.com +* +* Description: +* +* -------------------------------------------------------------------- +*/ + +#include +#include +#include + +/* Ugly hack for LinuxPPC R4, don't have time to figure it out right now */ +#if defined(_ARCH_PPC) +#undef __GLIBC__ +#endif + + +#include +#include +#include +#include +#include +#include +#include +#include "wlanctl.h" +#include "prmib.h" + +int getmib( int fd, char *interface, UINT32 mibcode ); +void pr_netlist(wlan_netlist_t *list); +int process_bsscreate( int fd, int argc, char **argv ); +int process_bssjoin( int fd, int argc, char **argv ); +int process_getmib( int fd, int argc, char **argv ); +int process_netlist( int fd, int argc, char **argv ); +int process_scan( int fd, int argc, char **argv ); +void strtoUINT48( UINT8 *a, char *s ); +void usage(void); + +char appname[MAX_APPNAME_LEN + 1]; + +int main(int argc, char *argv[]) +{ + int result = 0; + int fd; + wlan_req_t req; + + strcpy( appname, APPNAME ); + + if ( argc >= 2 ) + { + + if ( strcasecmp(argv[1], "version") == 0 ) + { + printf("%s version " WLAN_RELEASE "\n", appname); + return result; + } + + /* get a socket */ + fd = socket(AF_INET, SOCK_STREAM, 0); + if ( fd != -1 ) + { + /* Test that there is a card */ + strcpy( req.name, argv[1]); + req.result = 0; + req.data = NULL; + req.len = 0; + result = ioctl( fd, WLAN_TEST, &req); + + if (result < 0) + { + fprintf(stderr, "%s: ioctl failed testing interface \'%s\'\n", + appname, argv[1]); + fprintf(stderr, "interface \'%s\' is probably an invalid wireless network interface name\n", argv[1] ); + fprintf(stderr, "OR a wireless card is not inserted in the specified interface\n"); + } + else + { + if ( req.result == 0xf0f0 ) + { + /* now, what does the user want? */ + if ( argc > 2 ) + { + /* ok, there's more arguments */ + if ( strcasecmp(argv[2], SCAN) == 0 ) + { + result = process_scan(fd, argc, argv); + } + else if ( strcasecmp(argv[2], NETLIST) == 0 ) + { + result = process_netlist(fd, argc, argv); + } + else if ( strcasecmp(argv[2], BSSCREATE) == 0 ) + { + result = process_bsscreate(fd, argc, argv); + } + else if ( strcasecmp(argv[2], BSSJOIN) == 0 ) + { + result = process_bssjoin(fd, argc, argv); + } + else if ( strcasecmp(argv[2], GETMIB) == 0 ) + { + result = process_getmib(fd, argc, argv); + } + else if ( strcasecmp(argv[2], "getmibitem") == 0 ) + { + fprintf(stderr, "%s: cmd currently unsupported\n", + appname); + } + else if ( strcasecmp(argv[2], "setmibitem") == 0 ) + { + fprintf(stderr, "%s: cmd currently unsupported\n", + appname); + } + else + { + fprintf(stderr, "%s: %s is an invalid command\n", + appname, argv[2]); + usage(); + result = 1; + } + } + else + { + /* ok, we just want a general status msg */ + /* maybe some stats, joined?, ESSID, BSSID etc. */ + printf("some general stats\n"); + } + + } + else + { + fprintf(stderr,"%s: ioctl successful but driver not responding!\n", appname); + result = 1; + } + } + } + else + { + fprintf(stderr, "%s: No appropriate sockets!\n", appname); + result = 1; + } + } + else + { + usage(); + result = 1; + } + + return result; +} + + +/*---------------------------------------------------------------- +* getmib +* +* Called by process_getmib when the user has specified the 'getmib' +* command on the command line. +* +* This function does the actual read the contents of one or more Managment +* Information Block (MIB) structures from the specified wireless +* network device and display the values. Issuing just the getmib +* command to wlanctl displays ALL MIB's. Otherwise, a particular +* MIB is specified following the getmib command. +* +* Valid MIB values are: +* 0x00 for local mib +* 0x02 for address mib +* 0x03 for mac (media access control) mib +* 0x04 for statistics mib +* 0x05 for managment mib +* 0x07 for physical mib +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int getmib( int fd, char *interface, UINT32 mibcode ) +{ + wlan_req_t req; + wlan_getmib_t mib; + int result; + + strcpy( req.name, interface); + req.len = sizeof(wlan_getmib_t); + req.data = &mib; + req.result = 0; + mib.mibcode = mibcode; + + result = 0; + + switch (mibcode) + { + case SUMIB_LOCAL: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + prlocalmib( &mib.data.local ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + case SUMIB_ADDR: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + praddrmib( &mib.data.addr ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + case SUMIB_MAC: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + prmacmib( &mib.data.mac ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + case SUMIB_STAT: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + prstatsmib( &mib.data.stats ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + case SUMIB_MGMT: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + prmgmtmib( &mib.data.mgmt ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + case SUMIB_PHY: + if ( (result = ioctl( fd, WLAN_GETMIB, &req)) == 0 ) + { + prphymib( &mib.data.phy ); + } + else + { + fprintf(stderr, "%s: ioctl failed for mibcode 0x%02lx.\n", appname, mibcode); + } + break; + default: + fprintf(stderr, "%s: invalid mibcode of 0x%02lx.\n", appname, mibcode); + result = 1; + break; + } + + return result; +} + + +/*---------------------------------------------------------------- +* usage +* +* This function displays the proper syntax of the wlanctl utility. +* +* Arguments: +* no arguments +* +* returns: function doesn't return anything +* +----------------------------------------------------------------*/ +void usage(void) +{ + printf("\n%s : control utility for am79C930 based DS wlan cards\n", appname); + printf(" usage: %s interface|version [cmd [cmdarg ...]]\n\n", appname); + printf(" where \"interface\" is the name of a wireless\n"); + printf(" network interface. Running 'ifconfig' will list\n"); + printf(" all network interfaces.\n\n"); + printf(" Refer to wlanctl man page for more details.\n\n"); +} + + +/*---------------------------------------------------------------- +* strtoUINT48 +* +* This function converts a character string that represents an +* IEEE 802 address into an unsigned 48 bit number. +* +* Arguments: +* a - IEEE 802 48 bit address +* s - character string representing a 48 bit IEEE 802 address +* +* returns: function doesn't return anything +* +----------------------------------------------------------------*/ +void strtoUINT48( UINT8 *a, char *s ) +{ + char *p; + int i; + UINT val; + + for ( i = 0; i < 5; i++) + { + p = strchr( s, ':'); + if ( p == NULL ) + { + fprintf(stderr, "%s: UINT48 format error!\n", appname); + exit(1); + } + else + { + *p = '\0'; + sscanf( s, "%x", &val); + a[i] = (UINT8)val; + s = p+1; + } + } + sscanf( s, "%x", &val); + a[i] = (UINT8)val; +} + + +/*---------------------------------------------------------------- +* pr_netlist +* +* Called when the user has requested the 'netlist' command at the +* command line. +* +* This function will traverse the list of BSS's in the network +* list and print the channel, the bssid, the beacon interval, +* the capabilities information, and the ssid for each BSS. +* +* Arguments: +* list - network list containing all current BSS's +* +* +* returns: function doesn't return anything +* +----------------------------------------------------------------*/ +void pr_netlist(wlan_netlist_t *list) +{ + int i; + char buf[80]; + wlan_ie_ssid_t *ie; + + for ( i = 0; i < list->nitems; i++) + { + printf("ch bssid bcn cap_info ssid\n"); + printf("------------------------------------------------------\n"); + printf("%02d ", list->netlist[i].channel); + mac2str( list->netlist[i].bssid, buf); + printf("%s ", buf); + printf("%04d ", list->netlist[i].bcn_int); + printf("0x%04x ", list->netlist[i].cap_info); + ie = (wlan_ie_ssid_t*)list->netlist[i].ssid; + memcpy(buf, ie->ssid, ie->len); + buf[ie->len] = '\0'; + printf("%s\n", buf); + } +} + + +/*---------------------------------------------------------------- +* process_scan +* +* Called when the user has requested the 'scan' command at the +* command line. +* +* This function will scan the range of channels beginning and +* ending with "start" channel and "end" channel repsectively +* for the specified basic service set id (BSSID). The user +* must specify the starting and ending channels to scan, how +* long to scan on each channel, what BSS to scan for, the BSS +* type and the scan type. +* +* When complete, issuing the "netlist" command will display the +* list of BSS's found as a result of the scan. +* +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* The arguments for the wlanctl scan command as they should appear +* on the command line in the following order are: +* name - name of wireless network interface +* cmd - wlanctl command being called, in this case, it is 'scan' +* startch - first channel to start scan +* endch - last channel to scan +* timech - time, in microseconds, to scan each channel +* bssid - a colon separated IEEE 802 address indicating which +* bss to scan for. An address of ff:ff:ff:ff:ff:ff +* scans for ALL bss's. +* bsstype - specifies the type of bss to scan for. Valid values +* are "ind", "infr" or both, where "ind" is an independent +* bss, namely funtioning in ad-hoc mode, and "infr" is +* an infrastructure bss, namely we're scanning for access points. +* Note that both "ind" and "infr" bss's can be operable +* simultaneously; hence, the scan for "both". +* scantype - specifies the type of scan to perform: active or passive +* active - sends out probe requests expecting a probe response +* passive - listens for beacons without sending probe requests +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int process_scan( int fd, int argc, char **argv ) +{ + int result; + + result = 0; + + if ( argc < 9 ) + { + fprintf(stderr, "%s: not enough arguments for scan command; ", + appname); + fprintf(stderr, "see wlanctl man page.\n"); + usage(); + } + else + { + wlan_req_t req; + wlan_scan_t cmd; + + strcpy( req.name, argv[1]); + req.result = 0; + req.data = &cmd; + req.len = sizeof(cmd); + cmd.startch = atoi( argv[3] ); + cmd.endch = atoi( argv[4] ); + cmd.timech = atoi( argv[5] ); + strtoUINT48( cmd.bssid, argv[6] ); + + if (strcmp(argv[7], "both") == 0 ) + { + cmd.bsstype = BSSTYPE_IND | BSSTYPE_INFRA; + } + else if ( strcmp(argv[7], "independent") == 0 ) + { + cmd.bsstype = BSSTYPE_IND; + } + else + { + cmd.bsstype = BSSTYPE_INFRA; + } + + if ( strcmp( argv[8], "active") == 0 ) + { + cmd.scantype = 0; + } + else + { + cmd.scantype = 1; + } + + result = ioctl( fd, WLAN_SCAN, &req); + + switch( req.result) + { + case 0: + printf("%s: scan begun\n", appname); + break; + case 1: + fprintf(stderr, "%s: command discarded, driver is already scanning\n", appname); + break; + case 2: + fprintf(stderr, "%s: h/w scan command failed!\n", appname); + break; + default: + fprintf(stderr, "%s: unknown error.\n", appname); + break; + } + } + + return result; +} + + +/*---------------------------------------------------------------- +* process_getmib +* +* Called when the user has requested the 'getmib' command at the +* command line. +* +* This function calls getmib to read the contents of one or more +* Managment Information Block (MIB) structures from the specified +* wireless network device and display the values. Issuing just the +* getmib command to wlanctl displays ALL MIB's. Otherwise, a +* particular MIB(s) is specified following the getmib command. +* +* Valid MIB values are: +* 0x00 for local mib +* 0x02 for address mib +* 0x03 for mac (media access control) mib +* 0x04 for statistics mib +* 0x05 for managment mib +* 0x07 for physical mib +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int process_getmib( int fd, int argc, char **argv ) +{ + int result; + + result = 0; + + /* ok, which mib's? */ + if ( argc >= 4 ) + { + int i; + UINT32 mibcode; + + for ( i = 3; i < argc; i++ ) + { + mibcode = atoi(argv[i]); + result = getmib( fd, argv[1], mibcode ); + } + } + else + { + /* OK, print them all */ + result = getmib( fd, argv[1], SUMIB_LOCAL); + result = getmib( fd, argv[1], SUMIB_ADDR); + result = getmib( fd, argv[1], SUMIB_MAC); + result = getmib( fd, argv[1], SUMIB_STAT); + result = getmib( fd, argv[1], SUMIB_MGMT); + result = getmib( fd, argv[1], SUMIB_PHY); + } + + return result; +} + + +/*---------------------------------------------------------------- +* process_netlist +* +* Called when the user has requested the 'netlist' command at the +* command line. +* +* This function prints all the BSS's in the current list of BSS's +* generated from the last scan. +* +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int process_netlist( int fd, int argc, char **argv ) +{ + int result; + wlan_req_t req; + wlan_netlist_len_t cmd1; + wlan_netlist_t *cmd2; + + result = 0; + strcpy( req.name, argv[1]); + req.result = 0; + req.data = &cmd1; + req.len = sizeof(cmd1); + result = ioctl( fd, WLAN_NETLIST_LEN, &req); + + if ( result || req.result ) + { + fprintf(stderr,"%s: ioctl failed in netlist_len command.\n", appname); + } + else + { + cmd2 = malloc( sizeof(wlan_netlist_t) + (cmd1.nitems * sizeof(netitem_t))); + cmd2->nitems = cmd1.nitems; + req.result = 0; + req.data = cmd2; + req.len = sizeof(wlan_netlist_t) + (cmd1.nitems * sizeof(netitem_t)); + result = ioctl( fd, WLAN_NETLIST, &req); + + if ( result || req.result ) + { + fprintf(stderr,"%s: ioctl failed in netlist command\n", appname); + } + else + { + pr_netlist( cmd2 ); + } + } + + return result; +} + + +/*---------------------------------------------------------------- +* process_bsscreate +* +* Called when the user has requested the 'bsscreate' command at the +* command line. +* +* This function creates a BSS based on the arguments passed to the +* command. The arguments are in the order that follows: +* channel - the channel number to establish the bss on. +* beacon interval - time (in microseconds) between the +* transmission of beacon frames in the new BSS. +* atim window - "Announcement Traffic Indication Message" +* The atim window is the period of time following a target +* beacon transmission time (TBTT) that power saving MAC +* entities should remain awake listening for atim frames. +* Units for the atim window are 1024 microseconds. +* ssid - "Service Set Identifier": a string (with a maximum +* length of 15 characters) that identifies the new BSS. +* This is not to be confused with the BSSID, namely the +* IEEE 802 48 bit address. +* +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int process_bsscreate( int fd, int argc, char **argv ) +{ + int result; + + result = 0; + + if (argc < 7) + { + fprintf(stderr,"%s: not enough arguments for bsscreate command; ", + appname); + fprintf(stderr, "see wlanctl man page.\n"); + usage(); + } + else + { + wlan_req_t req; + wlan_bsscreate_t cmd; + + strcpy( req.name, argv[1]); + req.result = 0; + req.data = &cmd; + req.len = sizeof(cmd); + cmd.channel = atoi(argv[3]); + cmd.beacon_int = atoi(argv[4]); + cmd.atim_win = atoi(argv[5]); + cmd.ssid[0] = WLAN_EID_SSID; + cmd.ssid[1] = strlen(argv[6]); + strcpy( &(cmd.ssid[2]), argv[6]); + result = ioctl( fd, WLAN_BSSCREATE, &req); + + if ( result ) + { + fprintf(stderr,"%s: ioctl failed for bsscreate command.\n", + appname); + } + } + + return result; +} + + +/*---------------------------------------------------------------- +* process_bssjoin +* +* Called when the user has requested the 'bssjoin' command at the +* command line. +* +* This function forces the wireless network device to join +* (syncronize) with the named BSS. The named BSS provided as an +* argument to the bssjoin command must be a valid BSS in the +* network list. +* +* Arguments: +* fd - socket file descriptor +* argc - the argument count passed to main +* argv - the argument list passed to main +* +* returns: 0 if successful, not 0 otherwise +* +----------------------------------------------------------------*/ +int process_bssjoin( int fd, int argc, char **argv ) +{ + int result; + wlan_req_t req; + wlan_bssjoin_t cmd; + + result = 0; + + if ( argc < 4 ) + { + fprintf(stderr, + "%s: not enough arguments for the bssjoin command; ", appname); + fprintf(stderr, "see wlanctl man page.\n"); + usage(); + result = 1; + } + else + { + strcpy( req.name, argv[1]); + req.result = 0; + req.data = &cmd; + req.len = sizeof(cmd); + strtoUINT48( cmd.bssid, argv[3] ); + + result = ioctl( fd, WLAN_BSSJOIN, &req); + + if ( req.result ) + { + fprintf(stderr, + "%s: Either the bssid was invalid or the sync command failed.\n", + appname); + result = 1; + } + } + + return result; +} diff --git a/src/wlanctl/prmib.c b/src/wlanctl/prmib.c new file mode 100644 index 0000000..55403d2 --- /dev/null +++ b/src/wlanctl/prmib.c @@ -0,0 +1,335 @@ +/* + + + Linux WLAN + + The contents of this file are subject to the Mozilla Public + License Version 1.0 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The initial developer of the original code is Mark S. Mathews + . Portions created by Mark S. Mathews + are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "prmib.h" + +void mac2str( UINT8 *ma, char *str) +{ + sprintf( str, "%02x:%02x:%02x:%02x:%02x:%02x", + ma[0], ma[1], ma[2], ma[3], ma[4], ma[5]); +} + +void prlocalmib( su_mib_local_t *mib ) +{ + char tmp[18]; + printf("LOCAL MIB:\n"); + sprintf( tmp, "0x%02x", mib->frag_disable); + printf("%20s: %-16s ", "frag_dis", tmp); + sprintf( tmp, "0x%02x", mib->add_plcp_disable); + printf("%20s: %-16s\n", "add_plcp_dis", tmp); + + sprintf( tmp, "0x%02x", mib->add_plcp_disable); + printf("%20s: %-16s ", "add_plcp_disable", tmp); + sprintf( tmp, "0x%02x", mib->mac_hdr_preserve); + printf("%20s: %-16s\n", "mac_hdr_preserve", tmp); + + sprintf( tmp, "0x%02x", mib->rx_mgmt_q_enable); + printf("%20s: %-16s ", "rx_mgmt_q_enable", tmp); + + sprintf( tmp, "0x%02x", mib->reassembly_disable); + printf("%20s: %-16s ", "reassembly_disable", tmp); + sprintf( tmp, "0x%02x", mib->strip_plcp_disable); + printf("%20s: %-16s\n", "strip_plcp_disable", tmp); + + sprintf( tmp, "0x%02x", mib->rx_error_disable); + printf("%20s: %-16s ", "rx_error_disable", tmp); + sprintf( tmp, "0x%02x", mib->power_save_mode_disable); + printf("%20s: %-16s\n", "pwr_save_mode_dis", tmp); + + sprintf( tmp, "0x%02x", mib->accept_all_multicast_disable); + printf("%20s: %-16s ", "accept_all_multi_dis", tmp); + sprintf( tmp, "0x%02x", mib->check_seq_cntl_disable); + printf("%20s: %-16s\n", "chk_seq_cntl_dis", tmp); + +/* sprintf( tmp, "0x%02x", mib->loopback); + printf("%20s: %-16s ", "loopback", tmp); +*/ + sprintf( tmp, "0x%02x", mib->network_mode); + printf("%20s: %-16s\n", "network_mode", tmp); + + sprintf( tmp, "0x%02x", mib->pwd_level); + printf("%20s: %-16s ", "pwd_level", tmp); +/* sprintf( tmp, "0x%02x", mib->phy_type); + printf("%20s: %-16s\n", "phy_type", tmp); +*/ + sprintf( tmp, "0x%04lx", mib->tx_buffer_offset); + printf("%20s: %-16s ", "tx_buffer_offset", tmp); + sprintf( tmp, "0x%04lx", mib->tx_buffer_size); + printf("%20s: %-16s\n", "tx_buffer_size", tmp); + + sprintf( tmp, "0x%04lx", mib->rx_buffer_offset); + printf("%20s: %-16s ", "rx_buffer_offset", tmp); + sprintf( tmp, "0x%04lx", mib->rx_buffer_size); + printf("%20s: %-16s\n", "rx_buffer_size", tmp); +} + +void prstatsmib( su_mib_mac_statistics_t *mib ) +{ + char tmp[18]; + printf("STATISTICS MIB:\n"); + sprintf( tmp, "%lud", mib->tx_mpdu_cnt); + printf("%20s: %-16s ", "tx_mpdu_cnt", tmp); + sprintf( tmp, "%lud", mib->tx_msdu_cnt); + printf("%20s: %-16s\n", "tx_msdu_cnt", tmp); + + sprintf( tmp, "%lud", mib->tx_octets_cnt); + printf("%20s: %-16s ", "tx_octets_cnt", tmp); + sprintf( tmp, "%ud", mib->tx_multicast_cnt); + printf("%20s: %-16s\n", "tx_multicast_cnt", tmp); + + sprintf( tmp, "%ud", mib->tx_broadcast_cnt); + printf("%20s: %-16s ", "tx_broadcast_cnt", tmp); + sprintf( tmp, "%lud", mib->failed_cnt); + printf("%20s: %-16s\n", "failed_cnt", tmp); + + sprintf( tmp, "%lud", mib->retry_cnt); + printf("%20s: %-16s ", "retry_cnt", tmp); + sprintf( tmp, "%lud", mib->multiple_retry_cnt); + printf("%20s: %-16s\n", "multiple_retry_cnt", tmp); + + sprintf( tmp, "%lud", mib->frame_dup_cnt); + printf("%20s: %-16s ", "frame_dup_cnt", tmp); + sprintf( tmp, "%lud", mib->rts_success_cnt); + printf("%20s: %-16s\n", "rts_success_cnt", tmp); + + sprintf( tmp, "%lud", mib->rts_failure_cnt); + printf("%20s: %-16s ", "rts_failure_cnt", tmp); + sprintf( tmp, "%lud", mib->ack_failure_cnt); + printf("%20s: %-16s\n", "ack_failure_cnt", tmp); + + sprintf( tmp, "%lud", mib->rx_frame_cnt); + printf("%20s: %-16s ", "rx_frame_cnt", tmp); + sprintf( tmp, "%lud", mib->rx_octets_cnt); + printf("%20s: %-16s\n", "rx_octets_cnt", tmp); + + sprintf( tmp, "%ud", mib->rx_multicast_cnt); + printf("%20s: %-16s ", "rx_multicast_cnt", tmp); + sprintf( tmp, "%ud", mib->rx_broadcast_cnt); + printf("%20s: %-16s\n", "rx_broadcast_cnt", tmp); + + sprintf( tmp, "%lud", mib->fcs_error_cnt); + printf("%20s: %-16s ", "fcs_error_cnt", tmp); + sprintf( tmp, "%lud", mib->error_cnt); + printf("%20s: %-16s\n", "error_cnt", tmp); + +} + + +void praddrmib( su_mib_mac_addr_stat_grp_t *mib ) +{ + char tmp[40]; + int i; + + printf("ADDRESS MIB:\n"); + + mac2str( mib->mac_address, tmp); + printf("%20s: %-16s\n", "mac_address", tmp); + for ( i = 0; i < SUMIB_MAX_GRP_ADDR; i+=2) + { + mac2str( mib->group_addresses[i], tmp); + printf("%17s[%1d]: %-16s ", "grp_addr", i, tmp); + mac2str( mib->group_addresses[i+1], tmp); + printf("%17s[%1d]: %-16s\n", "grp_addr", i + 1, tmp); + } + sprintf(tmp, "0x%02x", mib->tx_enable_status); + printf("%20s: %-16s\n", "tx_ena_status", tmp); +/* sprintf(tmp, "0x%02x", mib->promisc); + printf("%20s: %-16s\n", "promiscuous_status", tmp); +*/ +} + + +void prmacmib( su_mib_mac_t *mib ) +{ + char tmp[80]; + + printf("MAC MIB:\n"); + +/* + sprintf(tmp, "%ud", mib->rate_factor); + printf( "%20s: %-16s ", "rate_factor", tmp); + sprintf(tmp, "%ud", mib->handshake_overhead); + printf( "%20s: %-16s\n", "handshake_overhead", tmp); +*/ + + sprintf(tmp, "%ud", mib->rts_threshold); + printf( "%20s: %-16s ", "rts_threshold", tmp); + sprintf(tmp, "%ud", mib->cw_max); + printf( "%20s: %-16s\n", "cw_max", tmp); + + sprintf(tmp, "%ud", mib->cw_min); + printf("%20s: %-16s ", "cw_min", tmp); +/* sprintf(tmp, "%ud", mib->cts_time); + printf("%20s: %-16s\n", "cts_time", tmp); +*/ + +/* + sprintf(tmp, "%ud", mib->ack_time); + printf("%20s: %-16s ", "ack_time", tmp); + sprintf(tmp, "%ud", mib->ack_timeout); + printf("%20s: %-16s\n", "ack_timeout", tmp); + + sprintf(tmp, "%ud", mib->cts_timeout); + printf("%20s: %-16s ", "cts_timeout", tmp); +*/ + sprintf(tmp, "%ud", mib->short_retry_limit); + printf("%20s: %-16s\n", "short_retry_limit", tmp); + + sprintf(tmp, "%ud", mib->long_retry_limit); + printf("%20s: %-16s ", "long_retry_limit", tmp); + sprintf(tmp, "%ud", mib->max_frame_length); + printf("%20s: %-16s\n", "max_frame_length", tmp); + + sprintf(tmp, "%ud", mib->fragmentation_threshold); + printf("%20s: %-16s ", "frag_threshold", tmp); + sprintf(tmp, "%ud", mib->probe_delay); + printf("%20s: %-16s\n", "probe_delay", tmp); + + sprintf(tmp, "%ud", mib->min_probe_response_time); + printf("%20s: %-16s ", "min_probe_resp_time", tmp); + sprintf(tmp, "%ud", mib->max_probe_response_time); + printf("%20s: %-16s\n", "max_probe_resp_time", tmp); + + sprintf(tmp, "%lud", mib->max_tx_msdu_lifetime); + printf("%20s: %-16s ", "max_tx_msdu_lifetime", tmp); + sprintf(tmp, "%lud", mib->max_rx_msdu_lifetime); + printf("%20s: %-16s\n", "max_rx_msdu_lifetime", tmp); + + sprintf(tmp, "%ud", mib->sta_basic_rate); + printf("%20s: %-16s\n", "sta_basic_rate", tmp); + + strncpy( tmp, &mib->desired_essid[2], mib->desired_essid[1]); + tmp[mib->desired_essid[1]] = '\0'; + printf("%20s: %s\n", "desired_essid", tmp); +} + + +void prmgmtmib( su_mib_mac_mgmt_t *mib ) +{ + char tmp[80]; + + printf("MAC MGMT MIB:\n"); + + sprintf(tmp, "0x%x", mib->pwr_mgmt_mode); + printf("%20s: %-16s ", "pwr_mgmt_mode", tmp); + sprintf(tmp, "0x%x", mib->scan_mode); + printf("%20s: %-16s\n", "scan_mode", tmp); + + sprintf(tmp, "0x%x", mib->scan_state); + printf("%20s: %-16s ", "scan_state", tmp); + sprintf(tmp, "0x%x", mib->dtim_period); + printf("%20s: %-16s\n", "dtim_period", tmp); + + sprintf(tmp, "0x%x", mib->atim_window); + printf("%20s: %-16s ", "atim_window", tmp); + sprintf(tmp, "0x%x", mib->beacon_period); + printf("%20s: %-16s\n", "beacon_period", tmp); + + sprintf(tmp, "0x%x", mib->passive_scan_duration); + printf("%20s: %-16s ", "passive_scan_dur", tmp); + sprintf(tmp, "0x%x", mib->listen_interval); + printf("%20s: %-16s\n", "listen_interval", tmp); + + sprintf(tmp, "0x%x", mib->med_occupancy_limit); + printf("%20s: %-16s ", "med_occupancy_limit", tmp); + sprintf(tmp, "0x%x", mib->max_mpdu_time); + printf("%20s: %-16s\n", "max_mpdu_time", tmp); + + sprintf(tmp, "0x%x", mib->cfp_max_duration); + printf("%20s: %-16s ", "cfp_max_duration", tmp); + sprintf(tmp, "0x%x", mib->cfp_rate); + printf("%20s: %-16s\n", "cfp_rate", tmp); + + sprintf(tmp, "0x%x", mib->station_id); + printf("%20s: %-16s ", "station_id", tmp); + mac2str(mib->current_bssid, tmp); + printf("%20s: %-16s\n", "current_bssid", tmp); + + strncpy( tmp, &mib->current_essid[2], mib->current_essid[1]); + + { + int i; + + for ( i = 0; i < (WLAN_SSID_MAXLEN + 2); i++ ) + printf("mib->current_essid[%d] = %lu, 0x%02lx, %c\n", i, + (unsigned long)mib->current_essid[i], + (unsigned long)mib->current_essid[i], + (char)mib->current_essid[i]); + } +/* + tmp[mib->current_essid[1]] = '\0'; + printf("%20s: %s\n", "current_essid", tmp); +*/ +} + +void prdrvrmib( su_mib_drvr_mac_mgmt_t *mib ) +{ + printf("DRVR MAC MGMT MIB:\n"); + printf(" Currently unsupported\n\n"); +} + + +void prphymib( su_mib_phy_t *mib ) +{ + char tmp[40]; + printf("PHY MIB:\n"); + + sprintf(tmp, "%ud", mib->slot_time); + printf("%20s: %-16s ", "slot_time", tmp); + sprintf(tmp, "%ud", mib->sifs); + printf("%20s: %-16s\n", "sifs", tmp); + + sprintf(tmp, "%ud", mib->mpdu_max); + printf("%20s: %-16s ", "mpdu_max", tmp); + sprintf(tmp, "%ud", mib->hop_time); + printf("%20s: %-16s\n", "hop_time", tmp); + + sprintf(tmp, "%ud", mib->preamble_length); + printf("%20s: %-16s ", "preamble_length", tmp); + sprintf(tmp, "%ud", mib->plcp_hdr_length); + printf("%20s: %-16s\n", "plcp_hdr_length", tmp); + + sprintf(tmp, "0x%x", mib->current_reg_domain); + printf("%20s: %-16s\n", "current_reg_domain", tmp); + + sprintf(tmp, "0x%02x, 0x%02x, 0x%02x, 0x%02x", + mib->supported_data_rates[0], + mib->supported_data_rates[1], + mib->supported_data_rates[2], + mib->supported_data_rates[3] ); + printf("%20s: %-16s\n", "supp_data_rates", tmp); + + sprintf(tmp, "%ud, %ud, %ud, %ud", mib->pwr_up_time[0], + mib->pwr_up_time[1], mib->pwr_up_time[2], mib->pwr_up_time[3] ); + printf("%20s: %-16s\n", "pwr_up_times", tmp); +} + + + diff --git a/src/wlanctl/prmib.h b/src/wlanctl/prmib.h new file mode 100644 index 0000000..66ff649 --- /dev/null +++ b/src/wlanctl/prmib.h @@ -0,0 +1,29 @@ +/* + + Linux WLAN + + The contents of this file are subject to the Mozilla Public + License Version 1.0 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The initial developer of the original code is Mark S. Mathews + . Portions created by Mark S. Mathews + are Copyright (C) 1998 AbsoluteValue Software, Inc. All Rights Reserved. + +*/ + +void mac2str( UINT8 *ma, char *str); +void prlocalmib( su_mib_local_t *mib ); +void prstatsmib( su_mib_mac_statistics_t *mib ); +void praddrmib( su_mib_mac_addr_stat_grp_t *mib ); +void prmacmib( su_mib_mac_t *mib ); +void prmgmtmib( su_mib_mac_mgmt_t *mib ); +void prdrvrmib( su_mib_drvr_mac_mgmt_t *mib ); +void prphymib( su_mib_phy_t *mib ); + diff --git a/src/wlanctl/wlanctl b/src/wlanctl/wlanctl new file mode 100755 index 0000000000000000000000000000000000000000..8eb8f5774139785bbc71cded100a35ac05fbb257 GIT binary patch literal 22721 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