// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.wlan.ieee80211;

/// 802.11 status codes.  These values are common throughout the standard.
/// IEEE Std 802.11-2016, 9.4.1.9, Table 9-46
type StatusCode = strict enum : uint16 {
    SUCCESS = 0;
    REFUSED_REASON_UNSPECIFIED = 1;
    TDLS_REJECTED_ALTERNATIVE_PROVIDED = 2;
    TDLS_REJECTED = 3;
    /// 4 reserved.
    SECURITY_DISABLED = 5;
    UNACCEPTABLE_LIFETIME = 6;
    NOT_IN_SAME_BSS = 7;
    /// 8-9 reserved.
    REFUSED_CAPABILITIES_MISMATCH = 10;
    DENIED_NO_ASSOCIATION_EXISTS = 11;
    DENIED_OTHER_REASON = 12;
    UNSUPPORTED_AUTH_ALGORITHM = 13;
    TRANSACTION_SEQUENCE_ERROR = 14;
    CHALLENGE_FAILURE = 15;
    REJECTED_SEQUENCE_TIMEOUT = 16;
    DENIED_NO_MORE_STAS = 17;
    REFUSED_BASIC_RATES_MISMATCH = 18;
    DENIED_NO_SHORT_PREAMBLE_SUPPORT = 19;
    /// 20-21 reserved.
    REJECTED_SPECTRUM_MANAGEMENT_REQUIRED = 22;
    REJECTED_BAD_POWER_CAPABILITY = 23;
    REJECTED_BAD_SUPPORTED_CHANNELS = 24;
    DENIED_NO_SHORT_SLOT_TIME_SUPPORT = 25;
    /// 26 reserved.
    DENIED_NO_HT_SUPPORT = 27;
    R0KH_UNREACHABLE = 28;
    DENIED_PCO_TIME_NOT_SUPPORTED = 29;
    REFUSED_TEMPORARILY = 30;
    ROBUST_MANAGEMENT_POLICY_VIOLATION = 31;
    UNSPECIFIED_QOS_FAILURE = 32;
    DENIED_INSUFFICIENT_BANDWIDTH = 33;
    DENIED_POOR_CHANNEL_CONDITIONS = 34;
    DENIED_QOS_NOT_SUPPORTED = 35;
    REQUEST_DECLINED = 37;
    INVALID_PARAMETERS = 38;
    REJECTED_WITH_SUGGESTED_CHANGES = 39;
    STATUS_INVALID_ELEMENT = 40;
    STATUS_INVALID_GROUP_CIPHER = 41;
    STATUS_INVALID_PAIRWISE_CIPHER = 42;
    STATUS_INVALID_AKMP = 43;
    UNSUPPORTED_RSNE_VERSION = 44;
    INVALID_RSNE_CAPABILITIES = 45;
    STATUS_CIPHER_OUT_OF_POLICY = 46;
    REJECTED_FOR_DELAY_PERIOD = 47;
    DLS_NOT_ALLOWED = 48;
    NOT_PRESENT = 49;
    NOT_QOS_STA = 50;
    DENIED_LISTEN_INTERVAL_TOO_LARGE = 51;
    STATUS_INVALID_FT_ACTION_FRAME_COUNT = 52;
    STATUS_INVALID_PMKID = 53;
    STATUS_INVALID_MDE = 54;
    STATUS_INVALID_FTE = 55;
    /// 56 is assigned to "REQUESTED_TCLAS_NOT_SUPPORTED_BY_AP" in 802.11-2016, duplicate with 80.
    /// Name below is as listed in the 802.11 Assigned Numbers Authority database.
    REQUESTED_TCLAS_NOT_SUPPORTED_BY_AP = 56;
    INSUFFICIENT_TCLAS_PROCESSING_RESOURCES = 57;
    TRY_ANOTHER_BSS = 58;
    GAS_ADVERTISEMENT_PROTOCOL_NOT_SUPPORTED = 59;
    NO_OUTSTANDING_GAS_REQUEST = 60;
    GAS_RESPONSE_NOT_RECEIVED_FROM_SERVER = 61;
    GAS_QUERY_TIMEOUT = 62;
    GAS_QUERY_RESPONSE_TOO_LARGE = 63;
    REJECTED_HOME_WITH_SUGGESTED_CHANGES = 64;
    SERVER_UNREACHABLE = 65;
    /// 66 reserved.
    REJECTED_FOR_SSP_PERMISSIONS = 67;
    REFUSED_UNAUTHENTICATED_ACCESS_NOT_SUPPORTED = 68;
    /// 69-71 reserved.
    INVALID_RSNE = 72;
    U_APSD_COEXISTANCE_NOT_SUPPORTED = 73;
    U_APSD_COEX_MODE_NOT_SUPPORTED = 74;
    BAD_INTERVAL_WITH_U_APSD_COEX = 75;
    ANTI_CLOGGING_TOKEN_REQUIRED = 76;
    UNSUPPORTED_FINITE_CYCLIC_GROUP = 77;
    CANNOT_FIND_ALTERNATIVE_TBTT = 78;
    TRANSMISSION_FAILURE = 79;
    /// See assignment for 56.
    REQUESTED_TCLAS_NOT_SUPPORTED = 80;
    TCLAS_RESOURCES_EXHAUSTED = 81;
    REJECTED_WITH_SUGGESTED_BSS_TRANSITION = 82;
    REJECT_WITH_SCHEDULE = 83;
    REJECT_NO_WAKEUP_SPECIFIED = 84;
    SUCCESS_POWER_SAVE_MODE = 85;
    PENDING_ADMITTING_FST_SESSION = 86;
    PERFORMING_FST_NOW = 87;
    PENDING_GAP_IN_BA_WINDOW = 88;
    REJECT_U_PID_SETTING = 89;
    REFUSED_EXTERNAL_REASON = 92;
    REFUSED_AP_OUT_OF_MEMORY = 93;
    REJECTED_EMERGENCY_SERVICES_NOT_SUPPORTED = 94;
    QUERY_RESPONSE_OUTSTANDING = 95;
    REJECT_DSE_BAND = 96;
    TCLAS_PROCESSING_TERMINATED = 97;
    TS_SCHEDULE_CONFLICT = 98;
    DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99;
    MCCAOP_RESERVATION_CONFLICT = 100;
    MAF_LIMIT_EXCEEDED = 101;
    MCCA_TRACK_LIMIT_EXCEEDED = 102;
    DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103;
    DENIED_VHT_NOT_SUPPORTED = 104;
    ENABLEMENT_DENIED = 105;
    RESTRICTION_FROM_AUTHORIZED_GDB = 106;
    AUTHORIZATION_DEENABLED = 107;

    /// Reserved values we will use for our own purposes.
    /// -----
    /// Failure when joining the BSS.
    JOIN_FAILURE = 256;
    /// Authenticate or associate fails due to spurious deauth or diassoc.
    SPURIOUS_DEAUTH_OR_DISASSOC = 257;
    /// Connect attempt is canceled
    CANCELED = 258;
    /// Failure establishing security association
    ESTABLISH_RSNA_FAILURE = 259;
};
