Ieee80211MgmtFrame.msg

Msg File src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrame.msg

Name Type Description
Ieee80211CapabilityInformation struct

Capability Information field format. This field is not used by the model (and is omitted from management frame formats too), because its fields are related to features not supported by this model (PCF, privacy, and beacons in ad-hoc mode). It is only provided here for completeness.

Ieee80211HandoverParameters struct

Additional parameters for handover decisions (Not part of standard, for experimental purposes)

Ieee80211ReasonCode enum

802.11 reason code; values correspond to the standard.

Ieee80211StatusCode enum

802.11 status code; values correspond to the standard.

Ieee80211HwmpCode enum (no description)
Ieee80211SupportedRatesElement struct

Structure to store supported rates

Ieee80211MgmtFrame class

Frame body base class used to hide various frame body types

Ieee80211AuthenticationFrame class

Authentication frame body format.

Ieee80211DeauthenticationFrame class

De-authentication frame body format

Ieee80211DisassociationFrame class

Dis-association frame body format (same as De-authentication)

Ieee80211ProbeRequestFrame class

Probe request frame body format

Ieee80211AssociationRequestFrame class

Association request frame body format

Ieee80211ReassociationRequestFrame class

Re-association request frame body format (same as association)

Ieee80211AssociationResponseFrame class

Association response frame body format

Ieee80211ReassociationResponseFrame class

Re-association response frame body format (same as AssociationResponse)

Ieee80211BeaconFrame class

Beacon frame body format.

Ieee80211ProbeResponseFrame class

Probe response frame body format (same as Beacon)

Source code

//
// Copyright (C) 2006 OpenSim Ltd.
// Copyright (C) 2001 Eric Wu and Steve Woon, Monash University, Melbourne, Australia
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//

//
// Required for MacAddress declarations
//
import inet.common.INETDefs;
import inet.common.packet.chunk.Chunk;
import inet.linklayer.ieee80211.mac.Ieee80211Frame;
import inet.linklayer.common.MacAddress;

namespace inet::ieee80211;

//
// Capability Information field format. This field is not used
// by the model (and is omitted from management frame formats too),
// because its fields are related to features not supported by this model
// (PCF, privacy, and beacons in ad-hoc mode). It is only provided here
// for completeness.
//
struct Ieee80211CapabilityInformation
{
    bool ESS;
    bool IBSS;
    bool CFPollable;
    bool CFPollRequest;
    bool privacy;
    bool DelayedBlockAck;
    bool InmediateBlockAck;
}

//
// Additional parameters for handover decisions
// (Not part of standard, for experimental purposes)
//
struct Ieee80211HandoverParameters
{
    @packetData;
    double avgBackoffTime;
    double avgWaitTime;
    double avgErrorRate;
    double estAvailBW;
}

//
// 802.11 reason code; values correspond to the standard.
//
enum Ieee80211ReasonCode
{

    RC_UNSPECIFIED = 1;
    RC_PREV_AUTH_EXPIRED = 2;
    RC_DEAUTH_MS_LEAVING = 3;
    RC_DISASS_INACTIVITY = 4;
    RC_DISASS_TOO_MANY_MS = 5;
    RC_NONAUTH_CLASS2 = 6;
    RC_NONASS_CLASS3 = 7;
    RC_DIASS_MS_LEAVING = 8;
    RC_NONAUTH_ASS_REQUEST = 9;
    RC_MESH_PEERING_CANCELLED = 52;
    RC_MESH_MAX_PEERS = 53;
    RC_MESH_CONFIGURATION_POLICY_VIOLATION = 54;
    RC_MESH_CLOSE_RCVD = 55;
    RC_MESH_MAX_RETRIES = 56;
    RC_MESH_CONFIRM_TIMEOUT = 57;
    RC_MESH_INVALID_GTK = 58;
    RC_MESH_INCONSISTENT_PARAMETERS = 59;
    RC_MESH_INVALID_SECURITY_CAPABILITY = 60;
    RC_MESH_PATH_ERROR_NO_PROXY_INFORMATION = 61;
    RC_MESH_PATH_ERROR_NO_FORWARDING_INFORMATION = 60;
    RC_MESH_PATH_ERROR_DESTINATION_UNREACHABLE = 63;
    RC_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64;
    RC_MESH_CHANNEL_SWITCH_REGULATORY_REQUIREMENTS = 65;
    RC_MESH_CHANNEL_SWITCH_UNSPECIFIED = 66;
}

//
// 802.11 status code; values correspond to the standard.
//
enum Ieee80211StatusCode
{

    SC_SUCCESSFUL = 0;
    SC_UNSPECIFIED = 1;
    SC_UNSUP_CAP = 10;
    SC_REASS_DENIED = 11;
    SC_ASS_DENIED_UNKNOWN = 12;
    SC_AUTH_ALG0_UNSUP = 13;
    SC_AUTH_OUT_OF_SEQ = 14;
    SC_AUTH_CHALLENGE_FAIL = 15;
    SC_AUTH_TIMEOUT = 16;
    SC_ASS_TOO_MANY_MS = 17;
    SC_DATARATE_UNSUP = 18;
    SC_AUTH_REJECT_ANTI_CLOGING = 76;
    SC_AUTH_REJECT_FINITE_CYC_GROUP_UNS = 77;
    SC_TBTT_REQUEST = 78;
}

enum Ieee80211HwmpCode
{
    IE11S_GANN = 125;
    IE11S_RANN = 126;
    IE11S_PREQ = 130;
    IE11S_PREP = 131;
    IE11S_PERR = 132;
}

//
// Structure to store supported rates
//
struct Ieee80211SupportedRatesElement
{
    short numRates; // number of rates (max 8)
    double rate[8]; // in Mbit/s; should be multiple of 500 kbit/s
}

//
// Frame body base class used to hide various frame body types
//
class Ieee80211MgmtFrame extends FieldsChunk
{
}

//
// Authentication frame body format.
//
// Note: the "isLast" field is not part of the standard.
// The authentication procedure is simulated by this model by exchanging
// a number of "dummy" authentication frames without real contents;
// the "isLast" field gets set by the AP to signal the STA that
// the authentication procedure has completed and it does not need to
// send any more Authentication frames.
//
class Ieee80211AuthenticationFrame extends Ieee80211MgmtFrame
{
    chunkLength = B(6); // add 2+len bytes for challenge text if present
    unsigned short sequenceNumber;
    Ieee80211StatusCode statusCode;
    bool isLast; // not part of the standard; see above
}

//
// De-authentication frame body format
//
class Ieee80211DeauthenticationFrame extends Ieee80211MgmtFrame
{
    chunkLength = B(2);
    Ieee80211ReasonCode reasonCode;
}

//
// Dis-association frame body format (same as De-authentication)
//
class Ieee80211DisassociationFrame extends Ieee80211MgmtFrame
{
    chunkLength = B(2);
    Ieee80211ReasonCode reasonCode;
}

//
// Probe request frame body format
//
class Ieee80211ProbeRequestFrame extends Ieee80211MgmtFrame
{
    string SSID;
    Ieee80211SupportedRatesElement supportedRates;
}

//
// Association request frame body format
//
class Ieee80211AssociationRequestFrame extends Ieee80211MgmtFrame
{
    string SSID;
    Ieee80211SupportedRatesElement supportedRates;
}

//
// Re-association request frame body format (same as association)
//
class Ieee80211ReassociationRequestFrame extends Ieee80211AssociationRequestFrame
{
    MacAddress currentAP;
}

//
// Association response frame body format
//
class Ieee80211AssociationResponseFrame extends Ieee80211MgmtFrame
{
    Ieee80211StatusCode statusCode;
    short aid;
    Ieee80211SupportedRatesElement supportedRates;
}

//
// Re-association response frame body format (same as AssociationResponse)
//
class Ieee80211ReassociationResponseFrame extends Ieee80211AssociationResponseFrame
{
}

//
// Beacon frame body format.
//
class Ieee80211BeaconFrame extends Ieee80211MgmtFrame
{
    string SSID;
    Ieee80211SupportedRatesElement supportedRates;
    simtime_t beaconInterval;
    int channelNumber;
    Ieee80211HandoverParameters handoverParameters;     //TODO is it a vendor-specific parameter in serializer?
}

//
// Probe response frame body format (same as Beacon)
//
class Ieee80211ProbeResponseFrame extends Ieee80211BeaconFrame
{
}