View | Details | Raw Unified | Return to bug 217317
Collapse All | Expand All

(-)sbin/ifconfig/ifieee80211.c (-19 / +188 lines)
Lines 75-80 Link Here
75
#include <net80211/ieee80211_superg.h>
75
#include <net80211/ieee80211_superg.h>
76
#include <net80211/ieee80211_tdma.h>
76
#include <net80211/ieee80211_tdma.h>
77
#include <net80211/ieee80211_mesh.h>
77
#include <net80211/ieee80211_mesh.h>
78
#include <net80211/ieee80211_wps.h>
78
79
79
#include <assert.h>
80
#include <assert.h>
80
#include <ctype.h>
81
#include <ctype.h>
Lines 2960-2972 Link Here
2960
	}
2961
	}
2961
}
2962
}
2962
2963
2963
/* XXX move to a public include file */
2964
#define IEEE80211_WPS_DEV_PASS_ID	0x1012
2965
#define IEEE80211_WPS_SELECTED_REG	0x1041
2966
#define IEEE80211_WPS_SETUP_STATE	0x1044
2967
#define IEEE80211_WPS_UUID_E		0x1047
2968
#define IEEE80211_WPS_VERSION		0x104a
2969
2970
#define BE_READ_2(p)					\
2964
#define BE_READ_2(p)					\
2971
	((u_int16_t)					\
2965
	((u_int16_t)					\
2972
	 ((((const u_int8_t *)(p))[1]      ) |		\
2966
	 ((((const u_int8_t *)(p))[1]      ) |		\
Lines 2988-2993 Link Here
2988
			"R"	/* Registrar-specified */
2982
			"R"	/* Registrar-specified */
2989
		};
2983
		};
2990
		int n;
2984
		int n;
2985
		int f;
2991
2986
2992
		ie +=6, len -= 4;		/* NB: len is payload only */
2987
		ie +=6, len -= 4;		/* NB: len is payload only */
2993
2988
Lines 3008-3037 Link Here
3008
			ie += 4, len -= 4;
3004
			ie += 4, len -= 4;
3009
3005
3010
			switch (tlv_type) {
3006
			switch (tlv_type) {
3011
			case IEEE80211_WPS_VERSION:
3007
			case IEEE80211_WPS_ATTR_VERSION:
3012
				printf("v:%d.%d", *ie >> 4, *ie & 0xf);
3008
				printf("v:%d.%d", *ie >> 4, *ie & 0xf);
3013
				break;
3009
				break;
3014
			case IEEE80211_WPS_SETUP_STATE:
3010
			case IEEE80211_WPS_ATTR_AP_SETUP_LOCKED:
3015
				/* Only 1 and 2 are valid */
3011
				printf(" ap_setup:%s", *ie ? "locked" :
3016
				if (*ie == 0 || *ie >= 3)
3012
				    "unlocked");
3017
					printf(" state:B");
3018
				else
3019
					printf(" st:%s", *ie == 1 ? "N" : "C");
3020
				break;
3013
				break;
3021
			case IEEE80211_WPS_SELECTED_REG:
3014
			case IEEE80211_WPS_ATTR_CONFIG_METHODS:
3022
				printf(" sel:%s", *ie ? "T" : "F");
3015
				printf(" cfg_mthd:");
3016
				goto wps_attr_config_methods_common;
3017
			case IEEE80211_WPS_ATTR_SELECTED_REGISTRAR_CONFIG_METHODS:
3018
				printf(" sel_reg_cfg_mthd:");
3019
			wps_attr_config_methods_common:
3020
				cfg_mthd = BE_READ_2(ie);
3021
				f = 0;
3022
				for (n = 15; n >= 0; n--) {
3023
					if (f) {
3024
						printf(",");
3025
						f = 0;
3026
					}
3027
					switch (cfg_mthd & (1 << n)) {
3028
					case 0:
3029
						break;
3030
					case IEEE80211_WPS_CONFIG_USBA:
3031
						printf("usba");
3032
						f++;
3033
						break;
3034
					case IEEE80211_WPS_CONFIG_ETHERNET:
3035
						printf("ethernet");
3036
						f++;
3037
						break;
3038
					case IEEE80211_WPS_CONFIG_LABEL:
3039
						printf("label");
3040
						f++;
3041
						break;
3042
					case IEEE80211_WPS_CONFIG_DISPLAY:
3043
						if (!(cfg_mthd &
3044
						    (IEEE80211_WPS_CONFIG_VIRT_DISPLAY |
3045
						    IEEE80211_WPS_CONFIG_PHY_DISPLAY)))
3046
						    {
3047
							printf("display");
3048
							f++;
3049
						}
3050
						break;
3051
					case IEEE80211_WPS_CONFIG_EXT_NFC_TOKEN:
3052
						printf("ext_nfc_tokenk");
3053
						f++;
3054
						break;
3055
					case IEEE80211_WPS_CONFIG_INT_NFC_TOKEN:
3056
						printf("int_nfc_token");
3057
						f++;
3058
						break;
3059
					case IEEE80211_WPS_CONFIG_NFC_INTERFACE:
3060
						printf("nfc_interface");
3061
						f++;
3062
						break;
3063
					case IEEE80211_WPS_CONFIG_PUSHBUTTON:
3064
						if (!(cfg_mthd &
3065
						    (IEEE80211_WPS_CONFIG_VIRT_PUSHBUTTON |
3066
						    IEEE80211_WPS_CONFIG_PHY_PUSHBUTTON))) {
3067
							printf("push_button");
3068
							f++;
3069
						}
3070
						break;
3071
					case IEEE80211_WPS_CONFIG_KEYPAD:
3072
						printf("keypad");
3073
						f++;
3074
						break;
3075
					case IEEE80211_WPS_CONFIG_VIRT_PUSHBUTTON:
3076
						printf("virtual_push_button");
3077
						f++;
3078
						break;
3079
					case IEEE80211_WPS_CONFIG_PHY_PUSHBUTTON:
3080
						printf("physical_push_button");
3081
						f++;
3082
						break;
3083
					case IEEE80211_WPS_CONFIG_P2PS:
3084
						printf("p2ps");
3085
						f++;
3086
						break;
3087
					case IEEE80211_WPS_CONFIG_VIRT_DISPLAY:
3088
						printf("virtual_display");
3089
						f++;
3090
						break;
3091
					case IEEE80211_WPS_CONFIG_PHY_DISPLAY:
3092
						printf("physical_display");
3093
						f++;
3094
						break;
3095
					default:
3096
						printf("unknown_wps_config<%04x>",
3097
						    cfg_mthd & (1 << n));
3098
						f++;
3099
						break;
3100
					}
3101
				}
3023
				break;
3102
				break;
3024
			case IEEE80211_WPS_DEV_PASS_ID:
3103
			case IEEE80211_WPS_ATTR_DEV_NAME:
3104
				printf(" device_name:<%*s>", tlv_len, ie);
3105
				break;
3106
			case IEEE80211_WPS_ATTR_DEV_PASSWORD_ID:
3025
				n = LE_READ_2(ie);
3107
				n = LE_READ_2(ie);
3026
				if (n < nitems(dev_pass_id))
3108
				if (n < nitems(dev_pass_id))
3027
					printf(" dpi:%s", dev_pass_id[n]);
3109
					printf(" dpi:%s", dev_pass_id[n]);
3028
				break;
3110
				break;
3029
			case IEEE80211_WPS_UUID_E:
3111
			case IEEE80211_WPS_ATTR_MANUFACTURER:
3112
				printf(" manufacturer:<%*s>", tlv_len, ie);
3113
				break;
3114
			case IEEE80211_WPS_ATTR_MODEL_NAME:
3115
				printf(" model_name:<%*s>", tlv_len, ie);
3116
				break;
3117
			case IEEE80211_WPS_ATTR_MODEL_NUMBER:
3118
				printf(" model_number:<%*s>", tlv_len, ie);
3119
				break;
3120
			case IEEE80211_WPS_ATTR_PRIMARY_DEV_TYPE:
3121
				printf(" prim_dev:<");
3122
				for (n = 0; n < tlv_len; n++)
3123
					printf("%02x", ie[n]);
3124
				printf(">");
3125
				break;
3126
			case IEEE80211_WPS_ATTR_RF_BANDS:
3127
				printf(" rf:");
3128
				f = 0;
3129
				for (n = 7; n >= 0; n--) {
3130
					if (f) {
3131
						printf(",");
3132
						f = 0;
3133
					}
3134
					switch (*ie & (1 << n)) {
3135
					case 0:
3136
						break;
3137
					case IEEE80211_WPS_RF_BAND_24GHZ:
3138
						printf("2.4Ghz");
3139
						f++;
3140
						break;
3141
					case IEEE80211_WPS_RF_BAND_50GHZ:
3142
						printf("5Ghz");
3143
						f++;
3144
						break;
3145
					case IEEE80211_WPS_RF_BAND_600GHZ:
3146
						printf("60Ghz");
3147
						f++;
3148
						break;
3149
					default:
3150
						printf("unknown<%02x>",
3151
						    *ie & (1 << n));
3152
						f++;
3153
						break;
3154
					}
3155
				}
3156
				break;
3157
			case IEEE80211_WPS_ATTR_RESPONSE_TYPE:
3158
				printf(" resp_type:0x%02x", *ie);
3159
				break;
3160
			case IEEE80211_WPS_ATTR_SELECTED_REGISTRAR:
3161
				printf(" sel:%s", *ie ? "T" : "F");
3162
				break;
3163
			case IEEE80211_WPS_ATTR_SERIAL_NUMBER:
3164
				printf(" serial_number:<%*s>", tlv_len, ie);
3165
				break;
3166
			case IEEE80211_WPS_ATTR_UUID_E:
3030
				printf(" uuid-e:");
3167
				printf(" uuid-e:");
3031
				for (n = 0; n < (tlv_len - 1); n++)
3168
				for (n = 0; n < (tlv_len - 1); n++)
3032
					printf("%02x-", ie[n]);
3169
					printf("%02x-", ie[n]);
3033
				printf("%02x", ie[n]);
3170
				printf("%02x", ie[n]);
3034
				break;
3171
				break;
3172
			case IEEE80211_WPS_ATTR_VENDOR_EXT:
3173
				printf(" vendor:<");
3174
				for (n = 0; n < tlv_len; n++)
3175
					printf("%02x", ie[n]);
3176
				printf(">");
3177
				break;
3178
			case IEEE80211_WPS_ATTR_WPS_STATE:
3179
				switch (*ie) {
3180
				case IEEE80211_WPS_STATE_NOT_CONFIGURED:
3181
					printf(" state:N");
3182
					break;
3183
				case IEEE80211_WPS_STATE_CONFIGURED:
3184
					printf(" state:C");
3185
					break;
3186
				default:
3187
					printf(" state:B<%02x>", *ie);
3188
					break;
3189
				}
3190
				break;
3191
			default:
3192
				printf(" unknown_wps_attr:<0x%x>", tlv_type);
3193
				break;
3035
			}
3194
			}
3036
			ie += tlv_len, len -= tlv_len;
3195
			ie += tlv_len, len -= tlv_len;
3037
		}
3196
		}
Lines 3181-3186 Link Here
3181
	return frm[1] > 3 && LE_READ_4(frm+2) == ((WPS_OUI_TYPE<<24)|WPA_OUI);
3340
	return frm[1] > 3 && LE_READ_4(frm+2) == ((WPS_OUI_TYPE<<24)|WPA_OUI);
3182
}
3341
}
3183
3342
3343
char iename_buf[64];
3184
static const char *
3344
static const char *
3185
iename(int elemid)
3345
iename(int elemid)
3186
{
3346
{
Lines 3201-3210 Link Here
3201
	case IEEE80211_ELEMID_MEASREP:	return " MEASREP";
3361
	case IEEE80211_ELEMID_MEASREP:	return " MEASREP";
3202
	case IEEE80211_ELEMID_QUIET:	return " QUIET";
3362
	case IEEE80211_ELEMID_QUIET:	return " QUIET";
3203
	case IEEE80211_ELEMID_IBSSDFS:	return " IBSSDFS";
3363
	case IEEE80211_ELEMID_IBSSDFS:	return " IBSSDFS";
3364
	case IEEE80211_ELEMID_RESERVED_47:
3365
					return " RESERVED_47";
3366
	case IEEE80211_ELEMID_MOBILITY_DOMAIN:
3367
					return " MOBILITY_DOMAIN";
3368
	case IEEE80211_ELEMID_RRM_ENACAPS:
3369
					return " RRM_ENCAPS";
3370
	case IEEE80211_ELEMID_OVERLAP_BSS_SCAN_PARAM:
3371
					return " OVERLAP_BSS";
3204
	case IEEE80211_ELEMID_TPC:	return " TPC";
3372
	case IEEE80211_ELEMID_TPC:	return " TPC";
3205
	case IEEE80211_ELEMID_CCKM:	return " CCKM";
3373
	case IEEE80211_ELEMID_CCKM:	return " CCKM";
3374
	case IEEE80211_ELEMID_EXTCAP:	return " EXTCAP";
3206
	}
3375
	}
3207
	return " ???";
3376
	sprintf(iename_buf, " UNKNOWN_ELEMID_%d", elemid);
3377
	return (const char *) iename_buf;
3208
}
3378
}
3209
3379
3210
static void
3380
static void
(-)sys/net80211/ieee80211.h (+2 lines)
Lines 893-901 Link Here
893
	IEEE80211_ELEMID_ERP		= 42,
893
	IEEE80211_ELEMID_ERP		= 42,
894
	IEEE80211_ELEMID_HTCAP		= 45,
894
	IEEE80211_ELEMID_HTCAP		= 45,
895
	IEEE80211_ELEMID_QOS		= 46,
895
	IEEE80211_ELEMID_QOS		= 46,
896
	IEEE80211_ELEMID_RESERVED_47	= 47,
896
	IEEE80211_ELEMID_RSN		= 48,
897
	IEEE80211_ELEMID_RSN		= 48,
897
	IEEE80211_ELEMID_XRATES		= 50,
898
	IEEE80211_ELEMID_XRATES		= 50,
898
	IEEE80211_ELEMID_APCHANREP	= 51,
899
	IEEE80211_ELEMID_APCHANREP	= 51,
900
	IEEE80211_ELEMID_MOBILITY_DOMAIN	= 54,
899
	IEEE80211_ELEMID_HTINFO		= 61,
901
	IEEE80211_ELEMID_HTINFO		= 61,
900
	IEEE80211_ELEMID_SECCHAN_OFFSET	= 62,
902
	IEEE80211_ELEMID_SECCHAN_OFFSET	= 62,
901
	IEEE80211_ELEMID_RRM_ENACAPS	= 70,
903
	IEEE80211_ELEMID_RRM_ENACAPS	= 70,
(-)sys/net80211/ieee80211_wps.h (+147 lines)
Line 0 Link Here
1
/*-
2
 * Copyright (c) 2017 J.R. Oldroyd, Open Advisors Limited
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 *
14
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
 *
25
 * $FreeBSD$
26
 */
27
#ifndef _NET80211_IEEE80211_WPS_H_
28
#define _NET80211_IEEE80211_WPS_H_
29
30
/*
31
 * 802.11 WPS implementation definitions.
32
 */
33
34
#define IEEE80211_WPS_ATTR_AP_CHANNEL		0x1001
35
#define IEEE80211_WPS_ATTR_ASSOC_STATE		0x1002
36
#define IEEE80211_WPS_ATTR_AUTH_TYPE		0x1003
37
#define IEEE80211_WPS_ATTR_AUTH_TYPE_FLAGS	0x1004
38
#define IEEE80211_WPS_ATTR_AUTHENTICATOR	0x1005
39
#define IEEE80211_WPS_ATTR_CONFIG_METHODS	0x1008
40
#define IEEE80211_WPS_ATTR_CONFIG_ERROR		0x1009
41
#define IEEE80211_WPS_ATTR_CONFIRM_URL4		0x100a
42
#define IEEE80211_WPS_ATTR_CONFIRM_URL6		0x100b
43
#define IEEE80211_WPS_ATTR_CONN_TYPE		0x100c
44
#define IEEE80211_WPS_ATTR_CONN_TYPE_FLAGS	0x100d
45
#define IEEE80211_WPS_ATTR_CRED			0x100e
46
#define IEEE80211_WPS_ATTR_ENCR_TYPE		0x100f
47
#define IEEE80211_WPS_ATTR_ENCR_TYPE_FLAGS	0x1010
48
#define IEEE80211_WPS_ATTR_DEV_NAME		0x1011
49
#define IEEE80211_WPS_ATTR_DEV_PASSWORD_ID	0x1012
50
#define IEEE80211_WPS_ATTR_E_HASH1		0x1014
51
#define IEEE80211_WPS_ATTR_E_HASH2		0x1015
52
#define IEEE80211_WPS_ATTR_E_SNONCE1		0x1016
53
#define IEEE80211_WPS_ATTR_E_SNONCE2		0x1017
54
#define IEEE80211_WPS_ATTR_ENCR_SETTINGS	0x1018
55
#define IEEE80211_WPS_ATTR_ENROLLEE_NONCE	0x101a
56
#define IEEE80211_WPS_ATTR_FEATURE_ID		0x101b
57
#define IEEE80211_WPS_ATTR_IDENTITY		0x101c
58
#define IEEE80211_WPS_ATTR_IDENTITY_PROOF	0x101d
59
#define IEEE80211_WPS_ATTR_KEY_WRAP_AUTH	0x101e
60
#define IEEE80211_WPS_ATTR_KEY_ID		0x101f
61
#define IEEE80211_WPS_ATTR_MAC_ADDR		0x1020
62
#define IEEE80211_WPS_ATTR_MANUFACTURER		0x1021
63
#define IEEE80211_WPS_ATTR_MSG_TYPE		0x1022
64
#define IEEE80211_WPS_ATTR_MODEL_NAME		0x1023
65
#define IEEE80211_WPS_ATTR_MODEL_NUMBER		0x1024
66
#define IEEE80211_WPS_ATTR_NETWORK_INDEX	0x1026
67
#define IEEE80211_WPS_ATTR_NETWORK_KEY		0x1027
68
#define IEEE80211_WPS_ATTR_NETWORK_KEY_INDEX	0x1028
69
#define IEEE80211_WPS_ATTR_NEW_DEVICE_NAME	0x1029
70
#define IEEE80211_WPS_ATTR_NEW_PASSWORD		0x102a
71
#define IEEE80211_WPS_ATTR_OOB_DEVICE_PASSWORD	0x102c
72
#define IEEE80211_WPS_ATTR_OS_VERSION		0x102d
73
#define IEEE80211_WPS_ATTR_POWER_LEVEL		0x102f
74
#define IEEE80211_WPS_ATTR_PSK_CURRENT		0x1030
75
#define IEEE80211_WPS_ATTR_PSK_MAX		0x1031
76
#define IEEE80211_WPS_ATTR_PUBLIC_KEY		0x1032
77
#define IEEE80211_WPS_ATTR_RADIO_ENABLE		0x1033
78
#define IEEE80211_WPS_ATTR_REBOOT		0x1034
79
#define IEEE80211_WPS_ATTR_REGISTRAR_CURRENT	0x1035
80
#define IEEE80211_WPS_ATTR_REGISTRAR_ESTBLSHD	0x1036
81
#define IEEE80211_WPS_ATTR_REGISTRAR_LIST	0x1037
82
#define IEEE80211_WPS_ATTR_REGISTRAR_MAX	0x1038
83
#define IEEE80211_WPS_ATTR_REGISTRAR_NONCE	0x1039
84
#define IEEE80211_WPS_ATTR_REQUEST_TYPE		0x103a
85
#define IEEE80211_WPS_ATTR_RESPONSE_TYPE	0x103b
86
#define IEEE80211_WPS_ATTR_RF_BANDS		0x103c
87
#define IEEE80211_WPS_ATTR_R_HASH1		0x103d
88
#define IEEE80211_WPS_ATTR_R_HASH2		0x103e
89
#define IEEE80211_WPS_ATTR_R_SNONCE1		0x103f
90
#define IEEE80211_WPS_ATTR_R_SNONCE2		0x1040
91
#define IEEE80211_WPS_ATTR_SELECTED_REGISTRAR	0x1041
92
#define IEEE80211_WPS_ATTR_SERIAL_NUMBER	0x1042
93
#define IEEE80211_WPS_ATTR_WPS_STATE		0x1044
94
#define IEEE80211_WPS_ATTR_SSID			0x1045
95
#define IEEE80211_WPS_ATTR_TOTAL_NETWORKS	0x1046
96
#define IEEE80211_WPS_ATTR_UUID_E		0x1047
97
#define IEEE80211_WPS_ATTR_UUID_R		0x1048
98
#define IEEE80211_WPS_ATTR_VENDOR_EXT		0x1049
99
#define IEEE80211_WPS_ATTR_VERSION		0x104a
100
#define IEEE80211_WPS_ATTR_X509_CERT_REQ	0x104b
101
#define IEEE80211_WPS_ATTR_X509_CERT		0x104c
102
#define IEEE80211_WPS_ATTR_EAP_IDENTITY		0x104d
103
#define IEEE80211_WPS_ATTR_MSG_COUNTER		0x104e
104
#define IEEE80211_WPS_ATTR_PUBKEY_HASH		0x104f
105
#define IEEE80211_WPS_ATTR_REKEY_KEY		0x1050
106
#define IEEE80211_WPS_ATTR_KEY_LIFETIME		0x1051
107
#define IEEE80211_WPS_ATTR_PERMITTED_CONFIG_METHODS	0x1052
108
#define IEEE80211_WPS_ATTR_SELECTED_REGISTRAR_CONFIG_METHODS	0x1053
109
#define IEEE80211_WPS_ATTR_PRIMARY_DEV_TYPE	0x1054
110
#define IEEE80211_WPS_ATTR_SECONDARY_DEV_TYPE_LIST	0x1055
111
#define IEEE80211_WPS_ATTR_PORTABLE_DEV		0x1056
112
#define IEEE80211_WPS_ATTR_AP_SETUP_LOCKED	0x1057
113
#define IEEE80211_WPS_ATTR_APPLICATION_EXT	0x1058
114
#define IEEE80211_WPS_ATTR_EAP_TYPE		0x1059
115
#define IEEE80211_WPS_ATTR_IV			0x1060
116
#define IEEE80211_WPS_ATTR_KEY_PROVIDED_AUTO	0x1061
117
#define IEEE80211_WPS_ATTR_802_1X_ENABLED	0x1062
118
#define IEEE80211_WPS_ATTR_AP_SESSION_KEY	0x1063
119
#define IEEE80211_WPS_ATTR_WEP_TRANSMIT_KEY	0x1064
120
#define IEEE80211_WPS_ATTR_REQUESTED_DEV_TYPE	0x106a
121
#define IEEE80211_WPS_ATTR_EXTENSIBILITY_TEST	0x10fa /* _NOT_ defined in the spec */
122
123
/* RF bands bitmask */
124
#define IEEE80211_WPS_RF_BAND_24GHZ		0x01
125
#define IEEE80211_WPS_RF_BAND_50GHZ		0x02
126
#define IEEE80211_WPS_RF_BAND_600GHZ		0x04
127
128
/* Config methods bitmask */
129
#define IEEE80211_WPS_CONFIG_USBA		0x0001
130
#define IEEE80211_WPS_CONFIG_ETHERNET		0x0002
131
#define IEEE80211_WPS_CONFIG_LABEL		0x0004
132
#define IEEE80211_WPS_CONFIG_DISPLAY		0x0008
133
#define IEEE80211_WPS_CONFIG_EXT_NFC_TOKEN	0x0010
134
#define IEEE80211_WPS_CONFIG_INT_NFC_TOKEN	0x0020
135
#define IEEE80211_WPS_CONFIG_NFC_INTERFACE	0x0040
136
#define IEEE80211_WPS_CONFIG_PUSHBUTTON		0x0080
137
#define IEEE80211_WPS_CONFIG_KEYPAD		0x0100
138
#define IEEE80211_WPS_CONFIG_VIRT_PUSHBUTTON	0x0200
139
#define IEEE80211_WPS_CONFIG_PHY_PUSHBUTTON	0x0400
140
#define IEEE80211_WPS_CONFIG_P2PS		0x1000
141
#define IEEE80211_WPS_CONFIG_VIRT_DISPLAY	0x2000
142
#define IEEE80211_WPS_CONFIG_PHY_DISPLAY	0x4000
143
144
/* Wi-Fi Protected Setup state */
145
#define IEEE80211_WPS_STATE_NOT_CONFIGURED	0x01
146
#define IEEE80211_WPS_STATE_CONFIGURED		0x02
147
#endif /* _NET80211_IEEE80211_WPS_H_ */

Return to bug 217317