blob: ee52e0268d33e3ad35d7915ba01a47c5d26a3729 [file] [log] [blame]
// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SHILL_IEEE80211_H
#define SHILL_IEEE80211_H
namespace shill {
namespace IEEE_80211 {
const uint8_t kElemIdErp = 42;
const uint8_t kElemIdHTCap = 45;
const uint8_t kElemIdHTInfo = 61;
const uint8_t kElemIdVendor = 221;
const unsigned int kMaxSSIDLen = 32;
const unsigned int kWEP40AsciiLen = 5;
const unsigned int kWEP40HexLen = 10;
const unsigned int kWEP104AsciiLen = 13;
const unsigned int kWEP104HexLen = 26;
const unsigned int kWPAAsciiMinLen = 8;
const unsigned int kWPAAsciiMaxLen = 63;
const unsigned int kWPAHexLen = 64;
const uint32_t kOUIVendorEpigram = 0x00904c;
const uint32_t kOUIVendorMicrosoft = 0x0050f2;
const uint8_t kOUIMicrosoftWPS = 4;
const uint16_t kWPSElementManufacturer = 0x1021;
const uint16_t kWPSElementModelName = 0x1023;
const uint16_t kWPSElementModelNumber = 0x1024;
const uint16_t kWPSElementDeviceName = 0x1011;
// This structure is incomplete. Fields will be added as necessary.
//
// NOTE: the uint16_t stuff is in little-endian format so conversions are
// required.
struct ieee80211_frame {
uint16_t frame_control;
uint16_t duration_usec;
uint8_t destination_mac[6];
uint8_t source_mac[6];
uint8_t address[6];
uint16_t sequence_control;
union {
struct {
uint16_t reserved_1;
uint16_t reserved_2;
uint16_t status_code;
} authentiate_message;
struct {
uint16_t reason_code;
} deauthentiate_message;
struct {
uint16_t reserved_1;
uint16_t status_code;
} associate_response;
} u;
};
// Status/reason code returned by nl80211 messages: Authenticate,
// Deauthenticate, Associate, and Reassociate.
enum ConnectStatus {
kConnectStatusSuccessful = 0,
kConnectStatusFailure = 1,
kConnectStatusNoLongerValid = 2,
kConnectStatusSenderHasLeft = 3,
kConnectStatusNonAuthenticated = 7,
kConnectStatusAllCapabilitiesNotSupported = 10,
kConnectStatusCantConfirmAssociation = 11,
kConnectStatusAssociationDenied = 12,
kConnectStatusAuthenticationUnsupported = 13,
kConnectStatusOutOfSequence = 14,
kConnectStatusChallengeFailure = 15,
kConnectStatusFrameTimeout = 16,
kConnectStatusMaxSta = 17,
kConnectStatusDataRateUnsupported = 18,
kConnectStatusShortPreambleUnsupported = 19,
kConnectStatusPbccUnsupported = 20,
kConnectStatusChannelAgilityUnsupported = 21,
kConnectStatusNeedSpectrumManagement = 22,
kConnectStatusUnacceptablePowerCapability = 23,
kConnectStatusUnacceptableSupportedChannelInfo = 24,
kConnectStatusShortTimeSlotRequired = 25,
kConnectStatusErPbccRequired = 26,
kConnectStatusHtFeaturesRequired = 27,
kConnectStatusR0khUnreachable = 28,
kConnectStatusPcoTransitionRequired = 29,
kConnectStatusRejectedTemporarily = 30,
kConnectStatusRobustPolicyViolated = 31,
kConnectStatusQosFailure = 32,
kConnectStatusInsufficientBandwithForQsta = 33,
kConnectStatusPoorConditions = 34,
kConnectStatusQosNotSupported = 35,
kConnectStatusDeclined = 37,
kConnectStatusInvalidParameterValues = 38,
kConnectStatusCannotBeHonored = 39,
kConnectStatusInvalidInfoElement = 40,
kConnectStatusGroupCipherInvalid = 41,
kConnectStatusPairwiseCipherInvalid = 42,
kConnectStatusAkmpInvalid = 43,
kConnectStatusUnsupportedRsnIeVersion = 44,
kConnectStatusInvalidRsnIeCaps = 45,
kConnectStatusCipherSuiteRejected = 46,
kConnectStatusTsDelayNotMet = 47,
kConnectStatusDirectLinkIllegal = 48,
kConnectStatusStaNotInQbss = 49,
kConnectStatusStaNotInQsta = 50,
kConnectStatusExcessiveListenInterval = 51,
kConnectStatusInvalidFastBssFrameCount = 52,
kConnectStatusInvalidPmkid = 53,
kConnectStatusInvalidMdie = 54,
kConnectStatusInvalidFtie = 55,
};
}
} // namespace shill
#endif // SHILL_IEEE_80211_H