1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.net.wifi; 18 19 import android.annotation.FlaggedApi; 20 import android.annotation.SystemApi; 21 22 import com.android.wifi.flags.Flags; 23 24 /** 25 * Defines integer constants for Soft AP deauthentication reason codes. 26 * 27 * <p>These reason codes provide information about why a client was disconnected from a Soft AP. 28 * Refer to Section 9.4.1.7 and Table 9-45 of the IEEE 802.11-2016 standard for more information. 29 * @hide 30 */ 31 @SystemApi 32 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 33 public final class DeauthenticationReasonCode { 34 /** Disconnected for an unknown reason. */ 35 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 36 public static final int REASON_UNKNOWN = 0; 37 38 /** Disconnected for an unspecified reason. */ 39 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 40 public static final int REASON_UNSPECIFIED = 1; 41 42 /** Disconnected because the previous authentication is no longer valid. */ 43 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 44 public static final int REASON_PREV_AUTH_NOT_VALID = 2; 45 46 /** Disconnected because the client is being de-authenticated. */ 47 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 48 public static final int REASON_DEAUTH_LEAVING = 3; 49 50 /** Disconnected due to inactivity. */ 51 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 52 public static final int REASON_DISASSOC_DUE_TO_INACTIVITY = 4; 53 54 /** Disconnected because the AP is unable to handle all currently associated stations. */ 55 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 56 public static final int REASON_DISASSOC_AP_BUSY = 5; 57 58 /** Disconnected because of a Class 2 frame received from a non-authenticated station. */ 59 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 60 public static final int REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6; 61 62 /** Disconnected because of a Class 3 frame received from a non-associated station. */ 63 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 64 public static final int REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7; 65 66 /** Disconnected because the STA has left the network. */ 67 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 68 public static final int REASON_DISASSOC_STA_HAS_LEFT = 8; 69 70 /** Disconnected because the STA requested association without authentication. */ 71 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 72 public static final int REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9; 73 74 /** Disconnected because the power capability element is not valid. */ 75 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 76 public static final int REASON_PWR_CAPABILITY_NOT_VALID = 10; 77 78 /** Disconnected because the supported channel element is not valid. */ 79 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 80 public static final int REASON_SUPPORTED_CHANNEL_NOT_VALID = 11; 81 82 /** Disconnected due to a BSS transition disassociation. */ 83 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 84 public static final int REASON_BSS_TRANSITION_DISASSOC = 12; 85 86 /** Disconnected because of an invalid information element. */ 87 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 88 public static final int REASON_INVALID_IE = 13; 89 90 /** Disconnected because of a message integrity code failure. */ 91 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 92 public static final int REASON_MICHAEL_MIC_FAILURE = 14; 93 94 /** Disconnected due to a four-way handshake timeout. */ 95 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 96 public static final int REASON_FOURWAY_HANDSHAKE_TIMEOUT = 15; 97 98 /** Disconnected due to a group key handshake timeout. */ 99 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 100 public static final int REASON_GROUP_KEY_UPDATE_TIMEOUT = 16; 101 102 /** Disconnected because an information element in the 4-way handshake differs. */ 103 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 104 public static final int REASON_IE_IN_4WAY_DIFFERS = 17; 105 106 /** Disconnected because the group cipher is not valid. */ 107 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 108 public static final int REASON_GROUP_CIPHER_NOT_VALID = 18; 109 110 /** Disconnected because the pairwise cipher is not valid. */ 111 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 112 public static final int REASON_PAIRWISE_CIPHER_NOT_VALID = 19; 113 114 /** Disconnected because the authentication and key management protocol is not valid. */ 115 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 116 public static final int REASON_AKMP_NOT_VALID = 20; 117 118 /** Disconnected because the robust security network IE version is not supported. */ 119 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 120 public static final int REASON_UNSUPPORTED_RSN_IE_VERSION = 21; 121 122 /** Disconnected because the robust security network IE capabilities are invalid. */ 123 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 124 public static final int REASON_INVALID_RSN_IE_CAPAB = 22; 125 126 /** Disconnected because the IEEE 802.1X authentication failed. */ 127 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 128 public static final int REASON_IEEE_802_1X_AUTH_FAILED = 23; 129 130 /** Disconnected because the cipher suite was rejected. */ 131 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 132 public static final int REASON_CIPHER_SUITE_REJECTED = 24; 133 134 /** Disconnected because the Tunneled Direct Link Setup teardown is unreachable. */ 135 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 136 public static final int REASON_TDLS_TEARDOWN_UNREACHABLE = 25; 137 138 /** Disconnected because of a Tunneled Direct Link Setup teardown for an unspecified reason. */ 139 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 140 public static final int REASON_TDLS_TEARDOWN_UNSPECIFIED = 26; 141 142 /** Disconnected because an session security protocol requested disassociation. */ 143 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 144 public static final int REASON_SSP_REQUESTED_DISASSOC = 27; 145 146 /** Disconnected because there is no session security protocol roaming agreement. */ 147 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 148 public static final int REASON_NO_SSP_ROAMING_AGREEMENT = 28; 149 150 /** Disconnected because of an unsupported cipher or authentication key management method. */ 151 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 152 public static final int REASON_BAD_CIPHER_OR_AKM = 29; 153 154 /** Disconnected because the client is not authorized at this location. */ 155 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 156 public static final int REASON_NOT_AUTHORIZED_THIS_LOCATION = 30; 157 158 /** Disconnected because a service change precludes traffic specification. */ 159 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 160 public static final int REASON_SERVICE_CHANGE_PRECLUDES_TS = 31; 161 162 /** Disconnected for an unspecified quality of service related reason. */ 163 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 164 public static final int REASON_UNSPECIFIED_QOS_REASON = 32; 165 166 /** Disconnected because there is not enough bandwidth. */ 167 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 168 public static final int REASON_NOT_ENOUGH_BANDWIDTH = 33; 169 170 /** Disconnected due to low acknowledgment rate. */ 171 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 172 public static final int REASON_DISASSOC_LOW_ACK = 34; 173 174 /** Disconnected for exceeding the transmission opportunity. */ 175 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 176 public static final int REASON_EXCEEDED_TXOP = 35; 177 178 /** Disconnected because the station is leaving the network. */ 179 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 180 public static final int REASON_STA_LEAVING = 36; 181 182 /** Disconnected because of the end of a traffic specification, block ack, or DLS session. */ 183 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 184 public static final int REASON_END_TS_BA_DLS = 37; 185 186 /** Disconnected because of an unknown traffic specification or block ack. */ 187 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 188 public static final int REASON_UNKNOWN_TS_BA = 38; 189 190 /** Disconnected due to a timeout. */ 191 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 192 public static final int REASON_TIMEOUT = 39; 193 194 /** Disconnected because of a peerkey mismatch. */ 195 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 196 public static final int REASON_PEERKEY_MISMATCH = 45; 197 198 /** Disconnected because the authorized access limit has been reached. */ 199 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 200 public static final int REASON_AUTHORIZED_ACCESS_LIMIT_REACHED = 46; 201 202 /** Disconnected due to external service requirements. */ 203 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 204 public static final int REASON_EXTERNAL_SERVICE_REQUIREMENTS = 47; 205 206 /** Disconnected because of an invalid fast transition action frame count. */ 207 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 208 public static final int REASON_INVALID_FT_ACTION_FRAME_COUNT = 48; 209 210 /** Disconnected because of an invalid pairwise master key identifier. */ 211 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 212 public static final int REASON_INVALID_PMKID = 49; 213 214 /** Disconnected because of an invalid management downlink endpoint. */ 215 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 216 public static final int REASON_INVALID_MDE = 50; 217 218 /** Disconnected because of an invalid fast transition endpoint. */ 219 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 220 public static final int REASON_INVALID_FTE = 51; 221 222 /** Disconnected because mesh peering was cancelled. */ 223 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 224 public static final int REASON_MESH_PEERING_CANCELLED = 52; 225 226 /** Disconnected because the maximum number of mesh peers has been reached. */ 227 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 228 public static final int REASON_MESH_MAX_PEERS = 53; 229 230 /** Disconnected because of a mesh configuration policy violation. */ 231 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 232 public static final int REASON_MESH_CONFIG_POLICY_VIOLATION = 54; 233 234 /** Disconnected because a mesh close message was received. */ 235 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 236 public static final int REASON_MESH_CLOSE_RCVD = 55; 237 238 /** Disconnected because the maximum number of mesh retries has been reached. */ 239 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 240 public static final int REASON_MESH_MAX_RETRIES = 56; 241 242 /** Disconnected due to a mesh confirmation timeout. */ 243 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 244 public static final int REASON_MESH_CONFIRM_TIMEOUT = 57; 245 246 /** Disconnected because of an invalid mesh group temporal key. */ 247 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 248 public static final int REASON_MESH_INVALID_GTK = 58; 249 250 /** Disconnected because of inconsistent mesh parameters. */ 251 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 252 public static final int REASON_MESH_INCONSISTENT_PARAMS = 59; 253 254 /** Disconnected because of an invalid mesh security capability. */ 255 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 256 public static final int REASON_MESH_INVALID_SECURITY_CAP = 60; 257 258 /** Disconnected because of a mesh path error: no proxy information. */ 259 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 260 public static final int REASON_MESH_PATH_ERROR_NO_PROXY_INFO = 61; 261 262 /** Disconnected because of a mesh path error: no forwarding information. */ 263 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 264 public static final int REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO = 62; 265 266 /** Disconnected because of a mesh path error: destination unreachable. */ 267 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 268 public static final int REASON_MESH_PATH_ERROR_DEST_UNREACHABLE = 63; 269 270 /** Disconnected because the MAC address already exists in the mesh basic service set. */ 271 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 272 public static final int REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64; 273 274 /** Disconnected due to a mesh channel switch due to regulatory requirements. */ 275 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 276 public static final int REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65; 277 278 /** Disconnected due to a mesh channel switch for an unspecified reason. */ 279 @FlaggedApi(Flags.FLAG_SOFTAP_DISCONNECT_REASON) 280 public static final int REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED = 66; 281 DeauthenticationReasonCode()282 private DeauthenticationReasonCode() {} // Private constructor to prevent instantiation 283 } 284