100b3ed16SGreg Kroah-Hartman /* p80211types.h 200b3ed16SGreg Kroah-Hartman * 300b3ed16SGreg Kroah-Hartman * Macros, constants, types, and funcs for p80211 data types 400b3ed16SGreg Kroah-Hartman * 500b3ed16SGreg Kroah-Hartman * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. 600b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 700b3ed16SGreg Kroah-Hartman * 800b3ed16SGreg Kroah-Hartman * linux-wlan 900b3ed16SGreg Kroah-Hartman * 1000b3ed16SGreg Kroah-Hartman * The contents of this file are subject to the Mozilla Public 1100b3ed16SGreg Kroah-Hartman * License Version 1.1 (the "License"); you may not use this file 1200b3ed16SGreg Kroah-Hartman * except in compliance with the License. You may obtain a copy of 1300b3ed16SGreg Kroah-Hartman * the License at http://www.mozilla.org/MPL/ 1400b3ed16SGreg Kroah-Hartman * 1500b3ed16SGreg Kroah-Hartman * Software distributed under the License is distributed on an "AS 1600b3ed16SGreg Kroah-Hartman * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 1700b3ed16SGreg Kroah-Hartman * implied. See the License for the specific language governing 1800b3ed16SGreg Kroah-Hartman * rights and limitations under the License. 1900b3ed16SGreg Kroah-Hartman * 2000b3ed16SGreg Kroah-Hartman * Alternatively, the contents of this file may be used under the 2100b3ed16SGreg Kroah-Hartman * terms of the GNU Public License version 2 (the "GPL"), in which 2200b3ed16SGreg Kroah-Hartman * case the provisions of the GPL are applicable instead of the 2300b3ed16SGreg Kroah-Hartman * above. If you wish to allow the use of your version of this file 2400b3ed16SGreg Kroah-Hartman * only under the terms of the GPL and not to allow others to use 2500b3ed16SGreg Kroah-Hartman * your version of this file under the MPL, indicate your decision 2600b3ed16SGreg Kroah-Hartman * by deleting the provisions above and replace them with the notice 2700b3ed16SGreg Kroah-Hartman * and other provisions required by the GPL. If you do not delete 2800b3ed16SGreg Kroah-Hartman * the provisions above, a recipient may use your version of this 2900b3ed16SGreg Kroah-Hartman * file under either the MPL or the GPL. 3000b3ed16SGreg Kroah-Hartman * 3100b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 3200b3ed16SGreg Kroah-Hartman * 3300b3ed16SGreg Kroah-Hartman * Inquiries regarding the linux-wlan Open Source project can be 3400b3ed16SGreg Kroah-Hartman * made directly to: 3500b3ed16SGreg Kroah-Hartman * 3600b3ed16SGreg Kroah-Hartman * AbsoluteValue Systems Inc. 3700b3ed16SGreg Kroah-Hartman * info@linux-wlan.com 3800b3ed16SGreg Kroah-Hartman * http://www.linux-wlan.com 3900b3ed16SGreg Kroah-Hartman * 4000b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 4100b3ed16SGreg Kroah-Hartman * 4200b3ed16SGreg Kroah-Hartman * Portions of the development of this software were funded by 4300b3ed16SGreg Kroah-Hartman * Intersil Corporation as part of PRISM(R) chipset product development. 4400b3ed16SGreg Kroah-Hartman * 4500b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 4600b3ed16SGreg Kroah-Hartman * 4700b3ed16SGreg Kroah-Hartman * This file declares some of the constants and types used in various 4800b3ed16SGreg Kroah-Hartman * parts of the linux-wlan system. 4900b3ed16SGreg Kroah-Hartman * 5000b3ed16SGreg Kroah-Hartman * Notes: 5100b3ed16SGreg Kroah-Hartman * - Constant values are always in HOST byte order. 5200b3ed16SGreg Kroah-Hartman * 5300b3ed16SGreg Kroah-Hartman * All functions and statics declared here are implemented in p80211types.c 5400b3ed16SGreg Kroah-Hartman * -------------------------------------------------------------------- 5500b3ed16SGreg Kroah-Hartman */ 5600b3ed16SGreg Kroah-Hartman 5700b3ed16SGreg Kroah-Hartman #ifndef _P80211TYPES_H 5800b3ed16SGreg Kroah-Hartman #define _P80211TYPES_H 5900b3ed16SGreg Kroah-Hartman 6000b3ed16SGreg Kroah-Hartman /*================================================================*/ 6100b3ed16SGreg Kroah-Hartman /* System Includes */ 6200b3ed16SGreg Kroah-Hartman /*================================================================*/ 6300b3ed16SGreg Kroah-Hartman 6400b3ed16SGreg Kroah-Hartman /*================================================================*/ 6500b3ed16SGreg Kroah-Hartman /* Project Includes */ 6600b3ed16SGreg Kroah-Hartman /*================================================================*/ 6700b3ed16SGreg Kroah-Hartman 6800b3ed16SGreg Kroah-Hartman #ifndef _WLAN_COMPAT_H 6900b3ed16SGreg Kroah-Hartman #include "wlan_compat.h" 7000b3ed16SGreg Kroah-Hartman #endif 7100b3ed16SGreg Kroah-Hartman 7200b3ed16SGreg Kroah-Hartman /*================================================================*/ 7300b3ed16SGreg Kroah-Hartman /* Constants */ 7400b3ed16SGreg Kroah-Hartman /*================================================================*/ 7500b3ed16SGreg Kroah-Hartman 7600b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 7700b3ed16SGreg Kroah-Hartman /* p80211 data type codes used for MIB items and message */ 7800b3ed16SGreg Kroah-Hartman /* arguments. The various metadata structures provide additional */ 7900b3ed16SGreg Kroah-Hartman /* information about these types. */ 8000b3ed16SGreg Kroah-Hartman 8100b3ed16SGreg Kroah-Hartman #define P80211_TYPE_OCTETSTR 1 /* pascal array of bytes */ 8200b3ed16SGreg Kroah-Hartman #define P80211_TYPE_DISPLAYSTR 2 /* pascal array of bytes containing ascii */ 83aaad4303SSolomon Peachy #define P80211_TYPE_int 4 /* u32 min and max limited by 32 bits */ 84aaad4303SSolomon Peachy #define P80211_TYPE_ENUMint 5 /* u32 holding a numeric 8500b3ed16SGreg Kroah-Hartman code that can be mapped 8600b3ed16SGreg Kroah-Hartman to a textual name */ 8700b3ed16SGreg Kroah-Hartman #define P80211_TYPE_UNKDATA 6 /* Data item containing an 8800b3ed16SGreg Kroah-Hartman unknown data type */ 89aaad4303SSolomon Peachy #define P80211_TYPE_intARRAY 7 /* Array of 32-bit integers. */ 9000b3ed16SGreg Kroah-Hartman #define P80211_TYPE_BITARRAY 8 /* Array of bits. */ 9100b3ed16SGreg Kroah-Hartman #define P80211_TYPE_MACARRAY 9 /* Array of MAC addresses. */ 9200b3ed16SGreg Kroah-Hartman 9300b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 9400b3ed16SGreg Kroah-Hartman /* The following constants are indexes into the Mib Category List */ 9500b3ed16SGreg Kroah-Hartman /* and the Message Category List */ 9600b3ed16SGreg Kroah-Hartman 9700b3ed16SGreg Kroah-Hartman /* Mib Category List */ 9800b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11SMT 1 9900b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11MAC 2 10000b3ed16SGreg Kroah-Hartman #define P80211_MIB_CAT_DOT11PHY 3 10100b3ed16SGreg Kroah-Hartman 10200b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11SMT P80211_MIB_CAT_DOT11SMT 10300b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11MAC P80211_MIB_CAT_DOT11MAC 10400b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11PHY P80211_MIB_CAT_DOT11PHY 10500b3ed16SGreg Kroah-Hartman 10600b3ed16SGreg Kroah-Hartman /* Message Category List */ 10700b3ed16SGreg Kroah-Hartman #define P80211_MSG_CAT_DOT11REQ 1 10800b3ed16SGreg Kroah-Hartman #define P80211_MSG_CAT_DOT11IND 2 10900b3ed16SGreg Kroah-Hartman /* #define P80211_MSG_CAT_DOT11CFM 3 (doesn't exist at this time) */ 11000b3ed16SGreg Kroah-Hartman 11100b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11REQ P80211_MSG_CAT_DOT11REQ 11200b3ed16SGreg Kroah-Hartman #define P80211SEC_DOT11IND P80211_MSG_CAT_DOT11IND 11300b3ed16SGreg Kroah-Hartman /* #define P80211SEC_DOT11CFM P80211_MSG_CAT_DOT11CFM (doesn't exist at this time */ 11400b3ed16SGreg Kroah-Hartman 11500b3ed16SGreg Kroah-Hartman 11600b3ed16SGreg Kroah-Hartman 11700b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 11800b3ed16SGreg Kroah-Hartman /* p80211 DID field codes that represent access type and */ 11900b3ed16SGreg Kroah-Hartman /* is_table status. */ 12000b3ed16SGreg Kroah-Hartman 12100b3ed16SGreg Kroah-Hartman #define P80211DID_ACCESS_READ 0x10000000 12200b3ed16SGreg Kroah-Hartman #define P80211DID_ACCESS_WRITE 0x08000000 12300b3ed16SGreg Kroah-Hartman #define P80211DID_WRITEONLY 0x00000001 12400b3ed16SGreg Kroah-Hartman #define P80211DID_READONLY 0x00000002 12500b3ed16SGreg Kroah-Hartman #define P80211DID_READWRITE 0x00000003 12600b3ed16SGreg Kroah-Hartman #define P80211DID_ISTABLE_FALSE 0 12700b3ed16SGreg Kroah-Hartman #define P80211DID_ISTABLE_TRUE 1 12800b3ed16SGreg Kroah-Hartman 12900b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 13000b3ed16SGreg Kroah-Hartman /* p80211 enumeration constants. The value to text mappings for */ 13100b3ed16SGreg Kroah-Hartman /* these is in p80211types.c. These defines were generated */ 13200b3ed16SGreg Kroah-Hartman /* from the mappings. */ 13300b3ed16SGreg Kroah-Hartman 13400b3ed16SGreg Kroah-Hartman /* error codes for lookups */ 13500b3ed16SGreg Kroah-Hartman #define P80211ENUM_BAD 0xffffffffUL 13600b3ed16SGreg Kroah-Hartman #define P80211ENUM_BADSTR "P80211ENUM_BAD" 13700b3ed16SGreg Kroah-Hartman 13800b3ed16SGreg Kroah-Hartman #define P80211ENUM_truth_false 0 13900b3ed16SGreg Kroah-Hartman #define P80211ENUM_truth_true 1 14000b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_disable 0 14100b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_fwload 1 14200b3ed16SGreg Kroah-Hartman #define P80211ENUM_ifstate_enable 2 14300b3ed16SGreg Kroah-Hartman #define P80211ENUM_powermgmt_active 1 14400b3ed16SGreg Kroah-Hartman #define P80211ENUM_powermgmt_powersave 2 14500b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_infrastructure 1 14600b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_independent 2 14700b3ed16SGreg Kroah-Hartman #define P80211ENUM_bsstype_any 3 14800b3ed16SGreg Kroah-Hartman #define P80211ENUM_authalg_opensystem 1 14900b3ed16SGreg Kroah-Hartman #define P80211ENUM_authalg_sharedkey 2 15000b3ed16SGreg Kroah-Hartman #define P80211ENUM_phytype_fhss 1 15100b3ed16SGreg Kroah-Hartman #define P80211ENUM_phytype_dsss 2 15200b3ed16SGreg Kroah-Hartman #define P80211ENUM_phytype_irbaseband 3 15300b3ed16SGreg Kroah-Hartman #define P80211ENUM_temptype_commercial 1 15400b3ed16SGreg Kroah-Hartman #define P80211ENUM_temptype_industrial 2 15500b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_fcc 16 15600b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_doc 32 15700b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_etsi 48 15800b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_spain 49 15900b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_france 50 16000b3ed16SGreg Kroah-Hartman #define P80211ENUM_regdomain_mkk 64 16100b3ed16SGreg Kroah-Hartman #define P80211ENUM_ccamode_edonly 1 16200b3ed16SGreg Kroah-Hartman #define P80211ENUM_ccamode_csonly 2 16300b3ed16SGreg Kroah-Hartman #define P80211ENUM_ccamode_edandcs 4 16400b3ed16SGreg Kroah-Hartman #define P80211ENUM_ccamode_cswithtimer 8 16500b3ed16SGreg Kroah-Hartman #define P80211ENUM_ccamode_hrcsanded 16 16600b3ed16SGreg Kroah-Hartman #define P80211ENUM_diversity_fixedlist 1 16700b3ed16SGreg Kroah-Hartman #define P80211ENUM_diversity_notsupported 2 16800b3ed16SGreg Kroah-Hartman #define P80211ENUM_diversity_dynamic 3 16900b3ed16SGreg Kroah-Hartman #define P80211ENUM_scantype_active 1 17000b3ed16SGreg Kroah-Hartman #define P80211ENUM_scantype_passive 2 17100b3ed16SGreg Kroah-Hartman #define P80211ENUM_scantype_both 3 17200b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_success 1 17300b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_invalid_parameters 2 17400b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_not_supported 3 17500b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_timeout 4 17600b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_too_many_req 5 17700b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_refused 6 17800b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_bss_already 7 17900b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_invalid_access 8 18000b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_invalid_mibattribute 9 18100b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_cant_set_readonly_mib 10 18200b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_implementation_failure 11 18300b3ed16SGreg Kroah-Hartman #define P80211ENUM_resultcode_cant_get_writeonly_mib 12 18400b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_unspec_reason 1 18500b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_auth_not_valid 2 18600b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_deauth_lv_ss 3 18700b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_inactivity 4 18800b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_ap_overload 5 18900b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_class23_err 6 19000b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_class3_err 7 19100b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_disas_lv_ss 8 19200b3ed16SGreg Kroah-Hartman #define P80211ENUM_reason_asoc_not_auth 9 19300b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_successful 0 19400b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unspec_failure 1 19500b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unsup_cap 10 19600b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_reasoc_no_asoc 11 19700b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_fail_other 12 19800b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unspt_alg 13 19900b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_auth_seq_fail 14 20000b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_chlng_fail 15 20100b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_auth_timeout 16 20200b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_ap_full 17 20300b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unsup_rate 18 20400b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unsup_shortpreamble 19 20500b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unsup_pbcc 20 20600b3ed16SGreg Kroah-Hartman #define P80211ENUM_status_unsup_agility 21 20700b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_data_ok 0 20800b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_no_value 1 20900b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_invalid_itemname 2 21000b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_invalid_itemdata 3 21100b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_missing_itemdata 4 21200b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_incomplete_itemdata 5 21300b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_invalid_msg_did 6 21400b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_invalid_mib_did 7 21500b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_missing_conv_func 8 21600b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_string_too_long 9 21700b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_data_out_of_range 10 21800b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_string_too_short 11 21900b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_missing_valid_func 12 22000b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_unknown 13 22100b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_invalid_did 14 22200b3ed16SGreg Kroah-Hartman #define P80211ENUM_msgitem_status_missing_print_func 15 22300b3ed16SGreg Kroah-Hartman 22400b3ed16SGreg Kroah-Hartman #define P80211ENUM_lnxroam_reason_unknown 0 22500b3ed16SGreg Kroah-Hartman #define P80211ENUM_lnxroam_reason_beacon 1 22600b3ed16SGreg Kroah-Hartman #define P80211ENUM_lnxroam_reason_signal 2 22700b3ed16SGreg Kroah-Hartman #define P80211ENUM_lnxroam_reason_txretry 3 22800b3ed16SGreg Kroah-Hartman #define P80211ENUM_lnxroam_reason_notjoined 4 22900b3ed16SGreg Kroah-Hartman 23000b3ed16SGreg Kroah-Hartman #define P80211ENUM_p2preamble_long 0 23100b3ed16SGreg Kroah-Hartman #define P80211ENUM_p2preamble_short 2 23200b3ed16SGreg Kroah-Hartman #define P80211ENUM_p2preamble_mixed 3 23300b3ed16SGreg Kroah-Hartman 23400b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 23500b3ed16SGreg Kroah-Hartman /* p80211 max length constants for the different pascal strings. */ 23600b3ed16SGreg Kroah-Hartman 23700b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR6 (6) /* pascal array of 6 bytes */ 23800b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR14 (14) /* pascal array of 14 bytes */ 23900b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR32 (32) /* pascal array of 32 bytes */ 24000b3ed16SGreg Kroah-Hartman #define MAXLEN_PSTR255 (255) /* pascal array of 255 bytes */ 24100b3ed16SGreg Kroah-Hartman #define MAXLEN_MIBATTRIBUTE (392) /* maximum mibattribute */ 24200b3ed16SGreg Kroah-Hartman /* where the size of the DATA itself */ 24300b3ed16SGreg Kroah-Hartman /* is a DID-LEN-DATA triple */ 24400b3ed16SGreg Kroah-Hartman /* with a max size of 4+4+384 */ 24500b3ed16SGreg Kroah-Hartman 246aaad4303SSolomon Peachy #define P80211_SET_int(item, value) do { \ 24700b3ed16SGreg Kroah-Hartman (item).data = (value); \ 24800b3ed16SGreg Kroah-Hartman (item).status = P80211ENUM_msgitem_status_data_ok; \ 24900b3ed16SGreg Kroah-Hartman } while(0) 25000b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 25100b3ed16SGreg Kroah-Hartman /* string constants */ 25200b3ed16SGreg Kroah-Hartman 25300b3ed16SGreg Kroah-Hartman #define NOT_SET "NOT_SET" 25400b3ed16SGreg Kroah-Hartman #define NOT_SUPPORTED "NOT_SUPPORTED" 25500b3ed16SGreg Kroah-Hartman #define UNKNOWN_DATA "UNKNOWN_DATA" 25600b3ed16SGreg Kroah-Hartman 25700b3ed16SGreg Kroah-Hartman 25800b3ed16SGreg Kroah-Hartman /*--------------------------------------------------------------------*/ 25900b3ed16SGreg Kroah-Hartman /* Metadata flags */ 26000b3ed16SGreg Kroah-Hartman 26100b3ed16SGreg Kroah-Hartman /* MSM: Do these belong in p80211meta.h? I'm not sure. */ 26200b3ed16SGreg Kroah-Hartman 26300b3ed16SGreg Kroah-Hartman #define ISREQUIRED (0x80000000UL) 26400b3ed16SGreg Kroah-Hartman #define ISREQUEST (0x40000000UL) 26500b3ed16SGreg Kroah-Hartman #define ISCONFIRM (0x20000000UL) 26600b3ed16SGreg Kroah-Hartman 26700b3ed16SGreg Kroah-Hartman 26800b3ed16SGreg Kroah-Hartman /*================================================================*/ 26900b3ed16SGreg Kroah-Hartman /* Macros */ 27000b3ed16SGreg Kroah-Hartman 27100b3ed16SGreg Kroah-Hartman /*--------------------------------------------------------------------*/ 27200b3ed16SGreg Kroah-Hartman /* The following macros are used to manipulate the 'flags' field in */ 27300b3ed16SGreg Kroah-Hartman /* the metadata. These are only used when the metadata is for */ 27400b3ed16SGreg Kroah-Hartman /* command arguments to determine if the data item is required, and */ 27500b3ed16SGreg Kroah-Hartman /* whether the metadata item is for a request command, confirm */ 27600b3ed16SGreg Kroah-Hartman /* command or both. */ 27700b3ed16SGreg Kroah-Hartman /*--------------------------------------------------------------------*/ 27800b3ed16SGreg Kroah-Hartman /* MSM: Do these belong in p80211meta.h? I'm not sure */ 27900b3ed16SGreg Kroah-Hartman 28000b3ed16SGreg Kroah-Hartman #define P80211ITEM_SETFLAGS(q, r, c) ( q | r | c ) 28100b3ed16SGreg Kroah-Hartman 282aaad4303SSolomon Peachy #define P80211ITEM_ISREQUIRED(flags) (((u32)(flags & ISREQUIRED)) >> 31 ) 283aaad4303SSolomon Peachy #define P80211ITEM_ISREQUEST(flags) (((u32)(flags & ISREQUEST)) >> 30 ) 284aaad4303SSolomon Peachy #define P80211ITEM_ISCONFIRM(flags) (((u32)(flags & ISCONFIRM)) >> 29 ) 28500b3ed16SGreg Kroah-Hartman 28600b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 28700b3ed16SGreg Kroah-Hartman /* The following macro creates a name for an enum */ 28800b3ed16SGreg Kroah-Hartman 28900b3ed16SGreg Kroah-Hartman #define MKENUMNAME(name) p80211enum_ ## name 29000b3ed16SGreg Kroah-Hartman 29100b3ed16SGreg Kroah-Hartman /*---------------------------------------------------------------- 29200b3ed16SGreg Kroah-Hartman * The following constants and macros are used to construct and 29300b3ed16SGreg Kroah-Hartman * deconstruct the Data ID codes. The coding is as follows: 29400b3ed16SGreg Kroah-Hartman * 29500b3ed16SGreg Kroah-Hartman * ...rwtnnnnnnnniiiiiiggggggssssss s - Section 29600b3ed16SGreg Kroah-Hartman * g - Group 29700b3ed16SGreg Kroah-Hartman * i - Item 29800b3ed16SGreg Kroah-Hartman * n - Index 29900b3ed16SGreg Kroah-Hartman * t - Table flag 30000b3ed16SGreg Kroah-Hartman * w - Write flag 30100b3ed16SGreg Kroah-Hartman * r - Read flag 30200b3ed16SGreg Kroah-Hartman * . - Unused 30300b3ed16SGreg Kroah-Hartman */ 30400b3ed16SGreg Kroah-Hartman 30500b3ed16SGreg Kroah-Hartman #define P80211DID_INVALID 0xffffffffUL 30600b3ed16SGreg Kroah-Hartman #define P80211DID_VALID 0x00000000UL 30700b3ed16SGreg Kroah-Hartman 30800b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_SECTION (0) 30900b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_GROUP (6) 31000b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ITEM (12) 31100b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_INDEX (18) 31200b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ISTABLE (26) 31300b3ed16SGreg Kroah-Hartman #define P80211DID_LSB_ACCESS (27) 31400b3ed16SGreg Kroah-Hartman 31500b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_SECTION (0x0000003fUL) 31600b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_GROUP (0x0000003fUL) 31700b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ITEM (0x0000003fUL) 31800b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_INDEX (0x000000ffUL) 31900b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ISTABLE (0x00000001UL) 32000b3ed16SGreg Kroah-Hartman #define P80211DID_MASK_ACCESS (0x00000003UL) 32100b3ed16SGreg Kroah-Hartman 32200b3ed16SGreg Kroah-Hartman 323aaad4303SSolomon Peachy #define P80211DID_MK(a,m,l) ((((u32)(a)) & (m)) << (l)) 32400b3ed16SGreg Kroah-Hartman 32500b3ed16SGreg Kroah-Hartman #define P80211DID_MKSECTION(a) P80211DID_MK(a, \ 32600b3ed16SGreg Kroah-Hartman P80211DID_MASK_SECTION, \ 32700b3ed16SGreg Kroah-Hartman P80211DID_LSB_SECTION ) 32800b3ed16SGreg Kroah-Hartman #define P80211DID_MKGROUP(a) P80211DID_MK(a, \ 32900b3ed16SGreg Kroah-Hartman P80211DID_MASK_GROUP, \ 33000b3ed16SGreg Kroah-Hartman P80211DID_LSB_GROUP ) 33100b3ed16SGreg Kroah-Hartman #define P80211DID_MKITEM(a) P80211DID_MK(a, \ 33200b3ed16SGreg Kroah-Hartman P80211DID_MASK_ITEM, \ 33300b3ed16SGreg Kroah-Hartman P80211DID_LSB_ITEM ) 33400b3ed16SGreg Kroah-Hartman #define P80211DID_MKINDEX(a) P80211DID_MK(a, \ 33500b3ed16SGreg Kroah-Hartman P80211DID_MASK_INDEX, \ 33600b3ed16SGreg Kroah-Hartman P80211DID_LSB_INDEX ) 33700b3ed16SGreg Kroah-Hartman #define P80211DID_MKISTABLE(a) P80211DID_MK(a, \ 33800b3ed16SGreg Kroah-Hartman P80211DID_MASK_ISTABLE, \ 33900b3ed16SGreg Kroah-Hartman P80211DID_LSB_ISTABLE ) 34000b3ed16SGreg Kroah-Hartman 34100b3ed16SGreg Kroah-Hartman 34200b3ed16SGreg Kroah-Hartman #define P80211DID_MKID(s,g,i,n,t,a) (P80211DID_MKSECTION(s) | \ 34300b3ed16SGreg Kroah-Hartman P80211DID_MKGROUP(g) | \ 34400b3ed16SGreg Kroah-Hartman P80211DID_MKITEM(i) | \ 34500b3ed16SGreg Kroah-Hartman P80211DID_MKINDEX(n) | \ 34600b3ed16SGreg Kroah-Hartman P80211DID_MKISTABLE(t) | \ 34700b3ed16SGreg Kroah-Hartman (a) ) 34800b3ed16SGreg Kroah-Hartman 34900b3ed16SGreg Kroah-Hartman 350aaad4303SSolomon Peachy #define P80211DID_GET(a,m,l) ((((u32)(a)) >> (l)) & (m)) 35100b3ed16SGreg Kroah-Hartman 35200b3ed16SGreg Kroah-Hartman #define P80211DID_SECTION(a) P80211DID_GET(a, \ 35300b3ed16SGreg Kroah-Hartman P80211DID_MASK_SECTION, \ 35400b3ed16SGreg Kroah-Hartman P80211DID_LSB_SECTION) 35500b3ed16SGreg Kroah-Hartman #define P80211DID_GROUP(a) P80211DID_GET(a, \ 35600b3ed16SGreg Kroah-Hartman P80211DID_MASK_GROUP, \ 35700b3ed16SGreg Kroah-Hartman P80211DID_LSB_GROUP) 35800b3ed16SGreg Kroah-Hartman #define P80211DID_ITEM(a) P80211DID_GET(a, \ 35900b3ed16SGreg Kroah-Hartman P80211DID_MASK_ITEM, \ 36000b3ed16SGreg Kroah-Hartman P80211DID_LSB_ITEM) 36100b3ed16SGreg Kroah-Hartman #define P80211DID_INDEX(a) P80211DID_GET(a, \ 36200b3ed16SGreg Kroah-Hartman P80211DID_MASK_INDEX, \ 36300b3ed16SGreg Kroah-Hartman P80211DID_LSB_INDEX) 36400b3ed16SGreg Kroah-Hartman #define P80211DID_ISTABLE(a) P80211DID_GET(a, \ 36500b3ed16SGreg Kroah-Hartman P80211DID_MASK_ISTABLE, \ 36600b3ed16SGreg Kroah-Hartman P80211DID_LSB_ISTABLE) 36700b3ed16SGreg Kroah-Hartman #define P80211DID_ACCESS(a) P80211DID_GET(a, \ 36800b3ed16SGreg Kroah-Hartman P80211DID_MASK_ACCESS, \ 36900b3ed16SGreg Kroah-Hartman P80211DID_LSB_ACCESS) 37000b3ed16SGreg Kroah-Hartman 37100b3ed16SGreg Kroah-Hartman /*================================================================*/ 37200b3ed16SGreg Kroah-Hartman /* Types */ 37300b3ed16SGreg Kroah-Hartman 37400b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 37500b3ed16SGreg Kroah-Hartman /* The following structure types are used for the represenation */ 376aaad4303SSolomon Peachy /* of ENUMint type metadata. */ 37700b3ed16SGreg Kroah-Hartman 37800b3ed16SGreg Kroah-Hartman typedef struct p80211enumpair 37900b3ed16SGreg Kroah-Hartman { 380aaad4303SSolomon Peachy u32 val; 38100b3ed16SGreg Kroah-Hartman char *name; 38200b3ed16SGreg Kroah-Hartman } p80211enumpair_t; 38300b3ed16SGreg Kroah-Hartman 38400b3ed16SGreg Kroah-Hartman typedef struct p80211enum 38500b3ed16SGreg Kroah-Hartman { 386aaad4303SSolomon Peachy int nitems; 38700b3ed16SGreg Kroah-Hartman p80211enumpair_t *list; 38800b3ed16SGreg Kroah-Hartman } p80211enum_t; 38900b3ed16SGreg Kroah-Hartman 39000b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 39100b3ed16SGreg Kroah-Hartman /* The following structure types are used to store data items in */ 39200b3ed16SGreg Kroah-Hartman /* messages. */ 39300b3ed16SGreg Kroah-Hartman 39400b3ed16SGreg Kroah-Hartman /* Template pascal string */ 39500b3ed16SGreg Kroah-Hartman typedef struct p80211pstr 39600b3ed16SGreg Kroah-Hartman { 397aaad4303SSolomon Peachy u8 len; 39800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstr_t; 39900b3ed16SGreg Kroah-Hartman 40000b3ed16SGreg Kroah-Hartman typedef struct p80211pstrd 40100b3ed16SGreg Kroah-Hartman { 402aaad4303SSolomon Peachy u8 len; 403aaad4303SSolomon Peachy u8 data[0]; 40400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstrd_t; 40500b3ed16SGreg Kroah-Hartman 40600b3ed16SGreg Kroah-Hartman /* Maximum pascal string */ 40700b3ed16SGreg Kroah-Hartman typedef struct p80211pstr255 40800b3ed16SGreg Kroah-Hartman { 409aaad4303SSolomon Peachy u8 len; 410aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR255]; 41100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstr255_t; 41200b3ed16SGreg Kroah-Hartman 41300b3ed16SGreg Kroah-Hartman /* pascal string for macaddress and bssid */ 41400b3ed16SGreg Kroah-Hartman typedef struct p80211pstr6 41500b3ed16SGreg Kroah-Hartman { 416aaad4303SSolomon Peachy u8 len; 417aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR6]; 41800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstr6_t; 41900b3ed16SGreg Kroah-Hartman 42000b3ed16SGreg Kroah-Hartman /* pascal string for channel list */ 42100b3ed16SGreg Kroah-Hartman typedef struct p80211pstr14 42200b3ed16SGreg Kroah-Hartman { 423aaad4303SSolomon Peachy u8 len; 424aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR14]; 42500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstr14_t; 42600b3ed16SGreg Kroah-Hartman 42700b3ed16SGreg Kroah-Hartman /* pascal string for ssid */ 42800b3ed16SGreg Kroah-Hartman typedef struct p80211pstr32 42900b3ed16SGreg Kroah-Hartman { 430aaad4303SSolomon Peachy u8 len; 431aaad4303SSolomon Peachy u8 data[MAXLEN_PSTR32]; 43200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211pstr32_t; 43300b3ed16SGreg Kroah-Hartman 43400b3ed16SGreg Kroah-Hartman /* MAC address array */ 43500b3ed16SGreg Kroah-Hartman typedef struct p80211macarray 43600b3ed16SGreg Kroah-Hartman { 437aaad4303SSolomon Peachy u32 cnt; 438aaad4303SSolomon Peachy u8 data[1][MAXLEN_PSTR6]; 43900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211macarray_t; 44000b3ed16SGreg Kroah-Hartman 44100b3ed16SGreg Kroah-Hartman /* prototype template */ 44200b3ed16SGreg Kroah-Hartman typedef struct p80211item 44300b3ed16SGreg Kroah-Hartman { 444aaad4303SSolomon Peachy u32 did; 445aaad4303SSolomon Peachy u16 status; 446aaad4303SSolomon Peachy u16 len; 44700b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_t; 44800b3ed16SGreg Kroah-Hartman 44900b3ed16SGreg Kroah-Hartman /* prototype template w/ data item */ 45000b3ed16SGreg Kroah-Hartman typedef struct p80211itemd 45100b3ed16SGreg Kroah-Hartman { 452aaad4303SSolomon Peachy u32 did; 453aaad4303SSolomon Peachy u16 status; 454aaad4303SSolomon Peachy u16 len; 455aaad4303SSolomon Peachy u8 data[0]; 45600b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211itemd_t; 45700b3ed16SGreg Kroah-Hartman 458aaad4303SSolomon Peachy /* message data item for int, BOUNDEDINT, ENUMINT */ 45900b3ed16SGreg Kroah-Hartman typedef struct p80211item_uint32 46000b3ed16SGreg Kroah-Hartman { 461aaad4303SSolomon Peachy u32 did; 462aaad4303SSolomon Peachy u16 status; 463aaad4303SSolomon Peachy u16 len; 464aaad4303SSolomon Peachy u32 data; 46500b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_uint32_t; 46600b3ed16SGreg Kroah-Hartman 46700b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 46800b3ed16SGreg Kroah-Hartman typedef struct p80211item_pstr6 46900b3ed16SGreg Kroah-Hartman { 470aaad4303SSolomon Peachy u32 did; 471aaad4303SSolomon Peachy u16 status; 472aaad4303SSolomon Peachy u16 len; 47300b3ed16SGreg Kroah-Hartman p80211pstr6_t data; 47400b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_pstr6_t; 47500b3ed16SGreg Kroah-Hartman 47600b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 47700b3ed16SGreg Kroah-Hartman typedef struct p80211item_pstr14 47800b3ed16SGreg Kroah-Hartman { 479aaad4303SSolomon Peachy u32 did; 480aaad4303SSolomon Peachy u16 status; 481aaad4303SSolomon Peachy u16 len; 48200b3ed16SGreg Kroah-Hartman p80211pstr14_t data; 48300b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_pstr14_t; 48400b3ed16SGreg Kroah-Hartman 48500b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 48600b3ed16SGreg Kroah-Hartman typedef struct p80211item_pstr32 48700b3ed16SGreg Kroah-Hartman { 488aaad4303SSolomon Peachy u32 did; 489aaad4303SSolomon Peachy u16 status; 490aaad4303SSolomon Peachy u16 len; 49100b3ed16SGreg Kroah-Hartman p80211pstr32_t data; 49200b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_pstr32_t; 49300b3ed16SGreg Kroah-Hartman 49400b3ed16SGreg Kroah-Hartman /* message data item for OCTETSTR, DISPLAYSTR */ 49500b3ed16SGreg Kroah-Hartman typedef struct p80211item_pstr255 49600b3ed16SGreg Kroah-Hartman { 497aaad4303SSolomon Peachy u32 did; 498aaad4303SSolomon Peachy u16 status; 499aaad4303SSolomon Peachy u16 len; 50000b3ed16SGreg Kroah-Hartman p80211pstr255_t data; 50100b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_pstr255_t; 50200b3ed16SGreg Kroah-Hartman 50300b3ed16SGreg Kroah-Hartman /* message data item for UNK 392, namely mib items */ 50400b3ed16SGreg Kroah-Hartman typedef struct p80211item_unk392 50500b3ed16SGreg Kroah-Hartman { 506aaad4303SSolomon Peachy u32 did; 507aaad4303SSolomon Peachy u16 status; 508aaad4303SSolomon Peachy u16 len; 509aaad4303SSolomon Peachy u8 data[MAXLEN_MIBATTRIBUTE]; 51000b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_unk392_t; 51100b3ed16SGreg Kroah-Hartman 51200b3ed16SGreg Kroah-Hartman /* message data item for UNK 1025, namely p2 pdas */ 51300b3ed16SGreg Kroah-Hartman typedef struct p80211item_unk1024 51400b3ed16SGreg Kroah-Hartman { 515aaad4303SSolomon Peachy u32 did; 516aaad4303SSolomon Peachy u16 status; 517aaad4303SSolomon Peachy u16 len; 518aaad4303SSolomon Peachy u8 data[1024]; 51900b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_unk1024_t; 52000b3ed16SGreg Kroah-Hartman 52100b3ed16SGreg Kroah-Hartman /* message data item for UNK 4096, namely p2 download chunks */ 52200b3ed16SGreg Kroah-Hartman typedef struct p80211item_unk4096 52300b3ed16SGreg Kroah-Hartman { 524aaad4303SSolomon Peachy u32 did; 525aaad4303SSolomon Peachy u16 status; 526aaad4303SSolomon Peachy u16 len; 527aaad4303SSolomon Peachy u8 data[4096]; 52800b3ed16SGreg Kroah-Hartman } __WLAN_ATTRIB_PACK__ p80211item_unk4096_t; 52900b3ed16SGreg Kroah-Hartman 53000b3ed16SGreg Kroah-Hartman struct catlistitem; 53100b3ed16SGreg Kroah-Hartman 53200b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 53300b3ed16SGreg Kroah-Hartman /* The following structure type is used to represent all of the */ 53400b3ed16SGreg Kroah-Hartman /* metadata items. Some components may choose to use more, */ 53500b3ed16SGreg Kroah-Hartman /* less or different metadata items. */ 53600b3ed16SGreg Kroah-Hartman 537aaad4303SSolomon Peachy typedef void (*p80211_totext_t)( struct catlistitem *, u32 did, u8* itembuf, char *textbuf); 538aaad4303SSolomon Peachy typedef void (*p80211_fromtext_t)( struct catlistitem *, u32 did, u8* itembuf, char *textbuf); 539aaad4303SSolomon Peachy typedef u32 (*p80211_valid_t)( struct catlistitem *, u32 did, u8* itembuf); 54000b3ed16SGreg Kroah-Hartman 54100b3ed16SGreg Kroah-Hartman 54200b3ed16SGreg Kroah-Hartman /*================================================================*/ 54300b3ed16SGreg Kroah-Hartman /* Extern Declarations */ 54400b3ed16SGreg Kroah-Hartman 54500b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 54600b3ed16SGreg Kroah-Hartman /* Enumeration Lists */ 54700b3ed16SGreg Kroah-Hartman /* The following are the external declarations */ 54800b3ed16SGreg Kroah-Hartman /* for all enumerations */ 54900b3ed16SGreg Kroah-Hartman 55000b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(truth); 55100b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(ifstate); 55200b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(powermgmt); 55300b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(bsstype); 55400b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(authalg); 55500b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(phytype); 55600b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(temptype); 55700b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(regdomain); 55800b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(ccamode); 55900b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(diversity); 56000b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(scantype); 56100b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(resultcode); 56200b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(reason); 56300b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(status); 56400b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(msgcode); 56500b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(msgitem_status); 56600b3ed16SGreg Kroah-Hartman 56700b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(lnxroam_reason); 56800b3ed16SGreg Kroah-Hartman 56900b3ed16SGreg Kroah-Hartman extern p80211enum_t MKENUMNAME(p2preamble); 57000b3ed16SGreg Kroah-Hartman 57100b3ed16SGreg Kroah-Hartman /*================================================================*/ 57200b3ed16SGreg Kroah-Hartman /* Function Declarations */ 57300b3ed16SGreg Kroah-Hartman 57400b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 57500b3ed16SGreg Kroah-Hartman /* The following declare some utility functions for use with the */ 57600b3ed16SGreg Kroah-Hartman /* p80211enum_t type. */ 57700b3ed16SGreg Kroah-Hartman 578aaad4303SSolomon Peachy u32 p80211enum_text2int(p80211enum_t *ep, char *text); 579aaad4303SSolomon Peachy u32 p80211enum_int2text(p80211enum_t *ep, u32 val, char *text); 58000b3ed16SGreg Kroah-Hartman void p80211_error2text(int err_code, char *err_str); 58100b3ed16SGreg Kroah-Hartman 58200b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 58300b3ed16SGreg Kroah-Hartman /* The following declare some utility functions for use with the */ 58400b3ed16SGreg Kroah-Hartman /* p80211item_t and p80211meta_t types. */ 58500b3ed16SGreg Kroah-Hartman 58600b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 58700b3ed16SGreg Kroah-Hartman /* The following declare functions that perform validation and */ 58800b3ed16SGreg Kroah-Hartman /* text to binary conversions based on the metadata for interface */ 58900b3ed16SGreg Kroah-Hartman /* and MIB data items. */ 59000b3ed16SGreg Kroah-Hartman /*----------------------------------------------------------------*/ 59100b3ed16SGreg Kroah-Hartman 59200b3ed16SGreg Kroah-Hartman /*-- DISPLAYSTR ------------------------------------------------------*/ 59300b3ed16SGreg Kroah-Hartman /* pstr ==> cstr */ 594aaad4303SSolomon Peachy void p80211_totext_displaystr( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 59500b3ed16SGreg Kroah-Hartman 59600b3ed16SGreg Kroah-Hartman /* cstr ==> pstr */ 597aaad4303SSolomon Peachy void p80211_fromtext_displaystr( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 59800b3ed16SGreg Kroah-Hartman 59900b3ed16SGreg Kroah-Hartman /* function that checks validity of a displaystr binary value */ 600aaad4303SSolomon Peachy u32 p80211_isvalid_displaystr( struct catlistitem *metalist, u32 did, u8 *itembuf ); 60100b3ed16SGreg Kroah-Hartman 60200b3ed16SGreg Kroah-Hartman /*-- OCTETSTR --------------------------------------------------------*/ 60300b3ed16SGreg Kroah-Hartman /* pstr ==> "xx:xx:...." */ 604aaad4303SSolomon Peachy void p80211_totext_octetstr( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 60500b3ed16SGreg Kroah-Hartman 60600b3ed16SGreg Kroah-Hartman /* "xx:xx:...." ==> pstr */ 607aaad4303SSolomon Peachy void p80211_fromtext_octetstr( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 60800b3ed16SGreg Kroah-Hartman 60900b3ed16SGreg Kroah-Hartman /* function that checks validity of an octetstr binary value */ 610aaad4303SSolomon Peachy u32 p80211_isvalid_octetstr( struct catlistitem *metalist, u32 did, u8 *itembuf ); 61100b3ed16SGreg Kroah-Hartman 612aaad4303SSolomon Peachy /*-- int -------------------------------------------------------------*/ 613aaad4303SSolomon Peachy /* u32 ==> %d */ 614aaad4303SSolomon Peachy void p80211_totext_int( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 61500b3ed16SGreg Kroah-Hartman 616aaad4303SSolomon Peachy /* %d ==> u32 */ 617aaad4303SSolomon Peachy void p80211_fromtext_int( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 61800b3ed16SGreg Kroah-Hartman 61900b3ed16SGreg Kroah-Hartman /* function that checks validity of an int's binary value (always successful) */ 620aaad4303SSolomon Peachy u32 p80211_isvalid_int( struct catlistitem *metalist, u32 did, u8 *itembuf ); 62100b3ed16SGreg Kroah-Hartman 622aaad4303SSolomon Peachy /*-- ENUMint ---------------------------------------------------------*/ 623aaad4303SSolomon Peachy /* u32 ==> <valuename> */ 624aaad4303SSolomon Peachy void p80211_totext_enumint( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 62500b3ed16SGreg Kroah-Hartman 626aaad4303SSolomon Peachy /* <valuename> ==> u32 */ 627aaad4303SSolomon Peachy void p80211_fromtext_enumint( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 62800b3ed16SGreg Kroah-Hartman 62900b3ed16SGreg Kroah-Hartman /* function that checks validity of an enum's binary value */ 630aaad4303SSolomon Peachy u32 p80211_isvalid_enumint( struct catlistitem *metalist, u32 did, u8 *itembuf ); 63100b3ed16SGreg Kroah-Hartman 632aaad4303SSolomon Peachy /*-- intARRAY --------------------------------------------------------*/ 633aaad4303SSolomon Peachy /* u32[] => %d,%d,%d,... */ 634aaad4303SSolomon Peachy void p80211_totext_intarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 63500b3ed16SGreg Kroah-Hartman 636aaad4303SSolomon Peachy /* %d,%d,%d,... ==> u32[] */ 637aaad4303SSolomon Peachy void p80211_fromtext_intarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 63800b3ed16SGreg Kroah-Hartman 63900b3ed16SGreg Kroah-Hartman /* function that checks validity of an integer array's value */ 640aaad4303SSolomon Peachy u32 p80211_isvalid_intarray( struct catlistitem *metalist, u32 did, u8 *itembuf ); 64100b3ed16SGreg Kroah-Hartman 64200b3ed16SGreg Kroah-Hartman /*-- BITARRAY --------------------------------------------------------*/ 643aaad4303SSolomon Peachy /* u32 ==> %d,%d,%d,... */ 644aaad4303SSolomon Peachy void p80211_totext_bitarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 64500b3ed16SGreg Kroah-Hartman 646aaad4303SSolomon Peachy /* %d,%d,%d,... ==> u32 */ 647aaad4303SSolomon Peachy void p80211_fromtext_bitarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 64800b3ed16SGreg Kroah-Hartman 64900b3ed16SGreg Kroah-Hartman /* function that checks validity of a bit array's value */ 650aaad4303SSolomon Peachy u32 p80211_isvalid_bitarray( struct catlistitem *metalist, u32 did, u8 *itembuf ); 65100b3ed16SGreg Kroah-Hartman 65200b3ed16SGreg Kroah-Hartman /*-- MACARRAY --------------------------------------------------------*/ 653aaad4303SSolomon Peachy void p80211_totext_macarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 65400b3ed16SGreg Kroah-Hartman 655aaad4303SSolomon Peachy void p80211_fromtext_macarray( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 65600b3ed16SGreg Kroah-Hartman 65700b3ed16SGreg Kroah-Hartman /* function that checks validity of a MAC address array's value */ 658aaad4303SSolomon Peachy u32 p80211_isvalid_macarray( struct catlistitem *metalist, u32 did, u8 *itembuf ); 65900b3ed16SGreg Kroah-Hartman 66000b3ed16SGreg Kroah-Hartman /*-- MIBATTRIUBTE ------------------------------------------------------*/ 66100b3ed16SGreg Kroah-Hartman /* <mibvalue> ==> <textual representation identified in MIB metadata> */ 662aaad4303SSolomon Peachy void p80211_totext_getmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 663aaad4303SSolomon Peachy void p80211_totext_setmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 66400b3ed16SGreg Kroah-Hartman 66500b3ed16SGreg Kroah-Hartman 66600b3ed16SGreg Kroah-Hartman /* <textual representation identified in MIB metadata> ==> <mibvalue> */ 667aaad4303SSolomon Peachy void p80211_fromtext_getmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 668aaad4303SSolomon Peachy void p80211_fromtext_setmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf, char *textbuf ); 66900b3ed16SGreg Kroah-Hartman 67000b3ed16SGreg Kroah-Hartman /* function that checks validity of a mibitem's binary value */ 671aaad4303SSolomon Peachy u32 p80211_isvalid_getmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf ); 672aaad4303SSolomon Peachy u32 p80211_isvalid_setmibattribute( struct catlistitem *metalist, u32 did, u8 *itembuf ); 67300b3ed16SGreg Kroah-Hartman 67400b3ed16SGreg Kroah-Hartman #endif /* _P80211TYPES_H */ 67500b3ed16SGreg Kroah-Hartman 676