AccessPoint

Package: inet.node.wireless

compound module AccessPoint

A wireless access point device that connects wireless stations (like WirelessHost) to a wired network. Supports multiple wireless radios and multiple Ethernet ports.

The access point relays frames between the wireless and wired interfaces using a built-in MAC relay unit (bridging). It implements the IEEE 802.11 AP functionality including association, authentication, and frame forwarding between network segments.

Key features:

  • Configurable number of wireless interfaces (radios)

  • Configurable number of Ethernet ports

  • IEEE 802.11 management functionality

  • MAC-layer bridging between interfaces

  • Customizable wireless management type (simplified or full-featured)

  • Stationary by default, but mobility can be added

The wireless management can be configured to use either the full IEEE 802.11 management protocol (Ieee80211MgmtAp) or a simplified version (Ieee80211MgmtApSimplified) that doesn’t support scanning, authentication, and association processes.

See also: WirelessHost, EthernetSwitch, StandardHost

AccessPointbl.out++ --> bridging.lowerLayerIn conditional: sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging)?bl.in++ --> bridging.lowerLayerOut conditional: sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging)?bl.out++ --> li.in++ conditional: exists(bl)?li.out++ --> bl.in++ conditional: exists(bl)?bl.out++ --> ethernet.upperLayerIn conditional: exists(ethernet)?ethernet.upperLayerOut --> bl.in++ conditional: exists(ethernet)?ethernet.lowerLayerOut --> li.in++ conditional: exists(ethernet)?li.out++ --> ethernet.lowerLayerIn conditional: exists(ethernet)?radioIn[i] --> wlan[i].radioIn for i=0..numWlanInterfaces-1⦀wlan[i].upperLayerOut --> li.in++ for i=0..numWlanInterfaces-1 conditional: sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging)⦀?wlan[i].upperLayerIn --> li.out++ for i=0..numWlanInterfaces-1 conditional: sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging)⦀?eth[i].phys <--> ethg[i] for i=0..sizeof(ethg)-1⦀eth[i].upperLayerIn --> li.out++ for i=0..sizeof(ethg)-1 conditional: sizeof(ethg)+numWlanInterfaces>1⦀?eth[i].upperLayerOut --> li.in++ for i=0..sizeof(ethg)-1 conditional: sizeof(ethg)+numWlanInterfaces>1⦀?status: inet.common.lifecycle.NodeStatus Keeps track of the status of the network node (up, down, etc.) for other modules, and also displa... Source: status: NodeStatus if hasStatus { @display("p=100,100;is=s"); }statusinterfaceTable: inet.networklayer.common.InterfaceTable Keeps the table of network interfaces. Source: interfaceTable: InterfaceTable { @display("p=100,200;is=s"); }interfaceTablemacTable: inet.linklayer.ethernet.common.MacForwardingTable (like IMacForwardingTable) MacForwardingTable: Handles the mapping between ports and MAC addresses. IMacForwardingTable: Interface for MAC address tables, used by MAC relay units in Ethenet switches. Source: macTable: <default("MacForwardingTable")> like IMacForwardingTable { @display("p=100,300;is=s"); }macTablemobility: inet.mobility.static.StationaryMobility (like IMobility) StationaryMobility: Mobility module for stationary nodes. IMobility: The module interface for mobility models. Source: mobility: <default("StationaryMobility")> like IMobility { @display("p=100,400;is=s"); }mobilitybridging: inet.linklayer.ieee8021d.relay.Ieee8021dRelay (like IMacRelayUnit) Ieee8021dRelay: Forwards frames (~EtherFrame) based on their destination MAC addresses to appropriate ports. IMacRelayUnit: Module interface for modules providing Ethernet switch functionality. Source: bridging: <default(firstAvailable("Ieee8021dRelay","MacRelayUnit"))> like IMacRelayUnit if sizeof(ethg)+numWlanInterfaces > 1 && typename != "" { @display("p=800,100"); }bridgingbl: inet.common.MessageDispatcher Facilitates the interconnection of applications, protocols, and network interfaces, dispatching m... Source: bl: MessageDispatcher if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging) { @display("p=800,200;b=1200,5,,,,1"); }blethernet: inet.linklayer.ethernet.basic.EthernetEncapsulation (like IEthernetLayer) EthernetEncapsulation: Performs Ethernet II or Ethernet with LLC/SNAP encapsulation/decapsulation. IEthernetLayer: Module interface for Ethernet protocol layer implementations. Source: ethernet: <default("EthernetEncapsulation")> like IEthernetLayer if typename != "" && exists(bridging) { @display("p=700,300"); }ethernetli: inet.common.MessageDispatcher Facilitates the interconnection of applications, protocols, and network interfaces, dispatching m... Source: li: MessageDispatcher { @display("p=800,400;b=1000,5,,,,1"); }liwlan[numWlanInterfaces]: inet.linklayer.ieee80211.Ieee80211Interface (like IWirelessInterface) Ieee80211Interface: Implements an IEEE 802.11 network interface. IWirelessInterface: Interface for wireless network interfaces. Source: wlan[numWlanInterfaces]: <default("Ieee80211Interface")> like IWirelessInterface { @display("p=250,500,row,150;q=queue"); }#wlan[numWlanInterfaces]eth[sizeof(ethg)]: inet.linklayer.ethernet.basic.EthernetInterface (like IEthernetInterface) EthernetInterface: Represents an Ethernet network interface. IEthernetInterface: Interface for Ethernet network interfaces. Source: eth[sizeof(ethg)]: <default("EthernetInterface")> like IEthernetInterface { mac.promiscuous = true; @display("p=850,500,row;q=txQueue"); }#eth[sizeof(ethg)]

Usage diagram

Inheritance diagram

Used in

Name

Type

Description

LinearNetwork

network

(no description)

Parameters

Name

Type

Default value

Description

numWlanInterfaces

int

1

The number of radios in the access point

hasStatus

bool

false

fcsMode

string

“declared”

Properties

Name

Value

Description

display

i=device/accesspoint

labels

node,ethernet-node,wireless-node

networkNode

Gates

Name

Direction

Size

Description

radioIn [ ]

input

numWlanInterfaces

ethg [ ]

inout

Unassigned submodule parameters

Name

Type

Default value

Description

status.displayStringTextFormat

string

“{stateStr}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

status.initialStatus

string

“UP”

Initial status of the network node

interfaceTable.displayStringTextFormat

string

“{numInterfaces} interfaces”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

interfaceTable.displayAddresses

bool

false

Whether to display IP addresses on links

macTable.displayStringTextFormat

string

“addr: %a\nvlan: %v”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

macTable.agingTime

double

120s

macTable.forwardingTable

object

[]

macTable.forwardingTableFile

string

“”

macTable.interfaceTableModule

string

mobility.displayStringTextFormat

string

“p: {position}\nv: {velocity}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

mobility.subjectModule

string

“^”

The module path that determines the subject module, the motion of which this mobility model describes. The default value is the parent module

mobility.coordinateSystemModule

string

“”

The module path of the geographic coordinate system module; optional, empty disables geographic conversion (and the {geo_position} directive)

mobility.updateDisplayString

bool

true

Enables continuous update of the subject module’s position by modifying its display string

mobility.constraintAreaMinX

double

-inf m

The minimum x position of the constraint area. It is unconstrained by default (negative infinity)

mobility.constraintAreaMinY

double

-inf m

The minimum y position of the constraint area. It is unconstrained by default (negative infinity)

mobility.constraintAreaMinZ

double

-inf m

The minimum z position of the constraint area. It is unconstrained by default (negative infinity)

mobility.constraintAreaMaxX

double

inf m

The maximum x position of the constraint area. It is unconstrained by default (positive infinity)

mobility.constraintAreaMaxY

double

inf m

The maximum y position of the constraint area. It is unconstrained by default (positive infinity)

mobility.constraintAreaMaxZ

double

inf m

The maximum z position of the constraint area. It is unconstrained by default (positive infinity)

mobility.initialX

double

uniform(this.constraintAreaMinX, this.constraintAreaMaxX)

mobility.initialY

double

uniform(this.constraintAreaMinY, this.constraintAreaMaxY)

mobility.initialZ

double

nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ))

mobility.initialLatitude

double

nan deg

mobility.initialLongitude

double

nan deg

mobility.initialAltitude

double

0m

mobility.initialHeading

double

0deg

mobility.initialElevation

double

0deg

mobility.initialBank

double

0deg

mobility.initFromDisplayString

bool

true

Enables one-time initialization from the subject module’s display string

mobility.updateFromDisplayString

bool

true

Enables continuous update from the subject module’s display string for dragging and rotating it

bridging.displayStringTextFormat

string

“proc: %p\ndisc: %d”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

bridging.macTableModule

string

bridging.interfaceTableModule

string

bl.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

bl.interfaceTableModule

string

Module path to the InterfaceTable module

bl.forwardServiceRegistration

bool

true

bl.forwardProtocolRegistration

bool

true

bl.interfaceMapping

object

{}

Maps network interface names to connected submodule names (e.g. {“eth0”: “bridging”}), overrides automatically learned dispatching; * overrides all learned network interfaces, ? overrides default

bl.serviceMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ethernetmac”: “bridging”}), overrides automatically learned dispatching; * overrides all learned services, ? overrides default

bl.protocolMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ipv4”: “bridging”}), overrides automatically learned dispatching; * overrides all learned protocols, ? overrides default

ethernet.displayStringTextFormat

string

“passed up: {totalFromMAC}\nsent: {totalFromHigherLayer}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

ethernet.registerProtocol

bool

false

FIXME //KLUDGE should redesign place of EthernetEncapsulation and LLC modules

ethernet.interfaceTableModule

string

The path to the InterfaceTable module

ethernet.fcsMode

string

“declared”

ethernet.stopOperationExtraTime

double

-1s

Extra time after the lifecycle stop operation has finished

ethernet.stopOperationTimeout

double

2s

Timeout value for the lifecycle stop operation

li.displayStringTextFormat

string

“processed {numProcessedPackets} pk ({processedTotalLength})”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

li.interfaceTableModule

string

Module path to the InterfaceTable module

li.forwardServiceRegistration

bool

true

li.forwardProtocolRegistration

bool

true

li.interfaceMapping

object

{}

Maps network interface names to connected submodule names (e.g. {“eth0”: “bridging”}), overrides automatically learned dispatching; * overrides all learned network interfaces, ? overrides default

li.serviceMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ethernetmac”: “bridging”}), overrides automatically learned dispatching; * overrides all learned services, ? overrides default

li.protocolMapping

object

{}

Maps protocols to connected submodule names (e.g. {“ipv4”: “bridging”}), overrides automatically learned dispatching; * overrides all learned protocols, ? overrides default

wlan.pcapRecorder.displayStringTextFormat

string

“rec: %n pks”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.pcapRecorder.verbose

bool

true

Whether to log packets on the module output

wlan.pcapRecorder.recordEmptyPackets

bool

true

Specifies if zero length packets are recorded or not

wlan.pcapRecorder.enableConvertingPackets

bool

true

Specifies if converting packets to link type is allowed or not

wlan.pcapRecorder.pcapFile

string

“”

The PCAP file to be written, suggested value: pcapFile = “${resultdir}/${configname}-#${runnumber}” + fullpath() + “.pcap”

wlan.pcapRecorder.fileFormat

string

“pcapng”

wlan.pcapRecorder.snaplen

int

65535

Maximum number of bytes to record per packet

wlan.pcapRecorder.timePrecision

int

6

Time precision in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see ‘if_tsresol’ option in pcapng file format).

wlan.pcapRecorder.dumpBadFrames

bool

true

Enable dump of frames with hasBitError

wlan.pcapRecorder.sendingSignalNames

string

“transmissionEnded”

Space-separated list of outbound packet signals to subscribe to

wlan.pcapRecorder.receivingSignalNames

string

“receptionEnded”

Space-separated list of inbound packet signals to subscribe to

wlan.pcapRecorder.dumpProtocols

string

“ethernetmac ppp ieee80211mac”

Space-separated list of protocol names as defined in the Protocol class

wlan.pcapRecorder.packetFilter

object

“*”

Which packets are considered, matches all packets by default

wlan.pcapRecorder.helpers

string

“”

Usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype

wlan.pcapRecorder.alwaysFlush

bool

false

Flush the pcapFile after each write to ensure that all packets are captured in case of a crash

wlan.mib.displayStringTextFormat

string

“Address: {address}{ssidStr}\n{modeStr}{stationTypeStr}{qosStr}{associatedStr}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.agent.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.agent.interfaceTableModule

string

The path to the InterfaceTable module

wlan.agent.mibModule

string

wlan.agent.activeScan

bool

true

Selects between active and passive scanning

wlan.agent.channelsToScan

string

“”

List of channel numbers to scan (space delimited); empty means all channels

wlan.agent.probeDelay

double

100ms

Delay before sending a probe request during active scanning

wlan.agent.minChannelTime

double

150ms

Min interval to spend on a channel during active scanning

wlan.agent.maxChannelTime

double

300ms

Channel time for passive scanning, and max channel time for active scanning

wlan.agent.authenticationTimeout

double

5s

Timeout for the authentication procedure

wlan.agent.associationTimeout

double

5s

Timeout for the association procedure

wlan.agent.startingTime

double

-1s

Agent starting time.

wlan.agent.defaultSsid

string

“”

List of allowed SSIDs to connect to; leave empty for no filtering

wlan.mgmt.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mgmt.interfaceTableModule

string

The path to the InterfaceTable module

wlan.mgmt.numChannels

int

1

Number of channels to scan

wlan.mgmt.mibModule

string

wlan.mgmt.macModule

string

The path to the MAC module

wlan.mac.dcf.channelAccess.pendingQueue.displayStringTextFormat

string

“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.channelAccess.pendingQueue.packetCapacity

int

100

Maximum number of packets in the queue, no limit by default

wlan.mac.dcf.channelAccess.pendingQueue.dataCapacity

int

-1b

Maximum total length of packets in the queue, no limit by default

wlan.mac.dcf.channelAccess.pendingQueue.dropperClass

string

“inet::queueing::PacketAtCollectionEndDropper”

Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class

wlan.mac.dcf.channelAccess.pendingQueue.comparatorClass

string

“inet::ieee80211::MgmtOverDataComparator”

Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class

wlan.mac.dcf.channelAccess.pendingQueue.bufferModule

string

“”

Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default

wlan.mac.dcf.channelAccess.inProgressFrames.displayStringTextFormat

string

“{numInProgress} packets”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.channelAccess.inProgressFrames.pendingQueueModule

string

“^.pendingQueue”

wlan.mac.dcf.channelAccess.inProgressFrames.originatorMacDataServiceModule

string

“^.^.originatorMacDataService”

wlan.mac.dcf.channelAccess.inProgressFrames.ackHandlerModule

string

“^.^.ackHandler”

wlan.mac.dcf.channelAccess.contention.displayStringTextFormat

string

“{fsmState}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.channelAccess.contention.initialChannelBusy

bool

true

Assume that the channel was busy before the simulation started

wlan.mac.dcf.channelAccess.contention.backoffOptimization

bool

true

We can pretend the frame has arrived into the queue a little bit earlier, and maybe able to start transmitting immediately

wlan.mac.dcf.originatorMacDataService.fragmentationPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.originatorMacDataService.fragmentationPolicy.fragmentationThreshold

int

1500B

wlan.mac.dcf.rateSelection.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.rateSelection.multicastFrameBitrate

double

-1bps

wlan.mac.dcf.rateSelection.responseAckFrameBitrate

double

-1bps

wlan.mac.dcf.rateSelection.responseCtsFrameBitrate

double

-1bps

wlan.mac.dcf.rateSelection.dataFrameBitrate

double

-1bps

Fastest

wlan.mac.dcf.rateSelection.dataFrameBandwidth

double

nan Hz

Unspecified by default

wlan.mac.dcf.rateSelection.dataFrameNumSpatialStreams

int

-1

Unspecified by default

wlan.mac.dcf.rateSelection.mgmtFrameBitrate

double

-1bps

Fastest

wlan.mac.dcf.rateSelection.controlFrameBitrate

double

-1bps

wlan.mac.dcf.recoveryProcedure.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.recoveryProcedure.shortRetryLimit

int

7

wlan.mac.dcf.recoveryProcedure.longRetryLimit

int

4

wlan.mac.dcf.originatorProtectionMechanism.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.originatorProtectionMechanism.rateSelectionModule

string

wlan.mac.dcf.ackHandler.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.originatorAckPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.originatorAckPolicy.rateSelectionModule

string

wlan.mac.dcf.originatorAckPolicy.ackTimeout

double

-1s

wlan.mac.dcf.recipientAckPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.recipientAckPolicy.rateSelectionModule

string

wlan.mac.dcf.rtsPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.rtsPolicy.rateSelectionModule

string

wlan.mac.dcf.rtsPolicy.ctsTimeout

double

-1s

wlan.mac.dcf.rtsPolicy.rtsThreshold

int

2346B

wlan.mac.dcf.ctsPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.dcf.ctsPolicy.rxModule

string

wlan.mac.dcf.ctsPolicy.rateSelectionModule

string

wlan.mac.hcf.edca.edcaf.pendingQueue.displayStringTextFormat

string

“contains %p pk (%l) pushed %u\npulled %o removed %r dropped %d”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.pendingQueue.packetCapacity

int

100

Maximum number of packets in the queue, no limit by default

wlan.mac.hcf.edca.edcaf.pendingQueue.dataCapacity

int

-1b

Maximum total length of packets in the queue, no limit by default

wlan.mac.hcf.edca.edcaf.pendingQueue.dropperClass

string

“inet::queueing::PacketAtCollectionEndDropper”

Determines which packets are dropped when the queue is overloaded, packets are not dropped by default; the parameter must be the name of a C++ class which implements the IPacketDropperFunction C++ interface and is registered via Register_Class

wlan.mac.hcf.edca.edcaf.pendingQueue.comparatorClass

string

“inet::ieee80211::MgmtOverDataComparator”

Determines the order of packets in the queue, insertion order by default; the parameter must be the name of a C++ class which implements the IPacketComparatorFunction C++ interface and is registered via Register_Class

wlan.mac.hcf.edca.edcaf.pendingQueue.bufferModule

string

“”

Relative module path to the IPacketBuffer module used by this queue, implicit buffer by default

wlan.mac.hcf.edca.edcaf.inProgressFrames.displayStringTextFormat

string

“{numInProgress} packets”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.inProgressFrames.pendingQueueModule

string

“^.pendingQueue”

wlan.mac.hcf.edca.edcaf.inProgressFrames.originatorMacDataServiceModule

string

“^.^.^.originatorMacDataService”

wlan.mac.hcf.edca.edcaf.inProgressFrames.ackHandlerModule

string

“^.ackHandler”

wlan.mac.hcf.edca.edcaf.contention.displayStringTextFormat

string

“{fsmState}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.contention.initialChannelBusy

bool

true

Assume that the channel was busy before the simulation started

wlan.mac.hcf.edca.edcaf.contention.backoffOptimization

bool

true

We can pretend the frame has arrived into the queue a little bit earlier, and maybe able to start transmitting immediately

wlan.mac.hcf.edca.edcaf.ackHandler.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.txopProcedure.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.txopProcedure.txopLimit

double

-1s

wlan.mac.hcf.edca.edcaf.recoveryProcedure.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.edcaf.recoveryProcedure.shortRetryLimit

int

7

wlan.mac.hcf.edca.edcaf.recoveryProcedure.longRetryLimit

int

4

wlan.mac.hcf.edca.collisionController.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.mgmtAndNonQoSRecoveryProcedure.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.edca.mgmtAndNonQoSRecoveryProcedure.shortRetryLimit

int

7

wlan.mac.hcf.edca.mgmtAndNonQoSRecoveryProcedure.longRetryLimit

int

4

wlan.mac.hcf.hcca.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorMacDataService.msduAggregationPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorMacDataService.msduAggregationPolicy.subframeNumThreshold

int

-1

Minimum number of subframes needed to compose an A-MSDU. (-1 means it won’t be checked)

wlan.mac.hcf.originatorMacDataService.msduAggregationPolicy.aggregationLengthThreshold

int

-1

The minimum length for an aggregated payload necessary to create an A-MSDU (-1 means it won’t be checked).

wlan.mac.hcf.originatorMacDataService.msduAggregationPolicy.maxAMsduSize

int

4065

-1 means infinity

wlan.mac.hcf.originatorMacDataService.msduAggregationPolicy.qOsCheck

bool

true

Turns on/off the check of the presence of the QoS flag (false means off – this is needed for aggregation in DCF mode).

wlan.mac.hcf.originatorMacDataService.mpduAggregationPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorMacDataService.fragmentationPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorMacDataService.fragmentationPolicy.fragmentationThreshold

int

1500B

wlan.mac.hcf.singleProtectionMechanism.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.singleProtectionMechanism.rateSelectionModule

string

wlan.mac.hcf.rateSelection.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.rateSelection.multicastFrameBitrate

double

-1bps

wlan.mac.hcf.rateSelection.responseAckFrameBitrate

double

-1bps

wlan.mac.hcf.rateSelection.responseBlockAckFrameBitrate

double

-1bps

wlan.mac.hcf.rateSelection.responseCtsFrameBitrate

double

-1bps

wlan.mac.hcf.rateSelection.dataFrameBitrate

double

-1bps

Fastest

wlan.mac.hcf.rateSelection.dataFrameBandwidth

double

nan Hz

Unspecified by default

wlan.mac.hcf.rateSelection.dataFrameNumSpatialStreams

int

-1

Unspecified by default

wlan.mac.hcf.rateSelection.mgmtFrameBitrate

double

-1bps

Fastest

wlan.mac.hcf.rateSelection.controlFrameBitrate

double

-1bps

wlan.mac.hcf.originatorAckPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorAckPolicy.rateSelectionModule

string

wlan.mac.hcf.originatorAckPolicy.blockAckReqThreshold

int

5

wlan.mac.hcf.originatorAckPolicy.maxBlockAckPolicyFrameLength

int

1000B

wlan.mac.hcf.originatorAckPolicy.blockAckTimeout

double

-1s

wlan.mac.hcf.originatorAckPolicy.ackTimeout

double

-1s

wlan.mac.hcf.recipientAckPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.recipientAckPolicy.rateSelectionModule

string

wlan.mac.hcf.rtsPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.rtsPolicy.rateSelectionModule

string

wlan.mac.hcf.rtsPolicy.ctsTimeout

double

-1s

wlan.mac.hcf.rtsPolicy.rtsThreshold

int

2346B

wlan.mac.hcf.ctsPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.ctsPolicy.rxModule

string

wlan.mac.hcf.ctsPolicy.rateSelectionModule

string

wlan.mac.hcf.originatorBlockAckAgreementPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.originatorBlockAckAgreementPolicy.delayedAckPolicySupported

bool

false

wlan.mac.hcf.originatorBlockAckAgreementPolicy.aMsduSupported

bool

true

wlan.mac.hcf.originatorBlockAckAgreementPolicy.maximumAllowedBufferSize

int

64

wlan.mac.hcf.originatorBlockAckAgreementPolicy.blockAckTimeoutValue

double

0s

0 means that it depends on the originator

wlan.mac.hcf.recipientBlockAckAgreementPolicy.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.hcf.recipientBlockAckAgreementPolicy.delayedAckPolicySupported

bool

false

wlan.mac.hcf.recipientBlockAckAgreementPolicy.aMsduSupported

bool

true

wlan.mac.hcf.recipientBlockAckAgreementPolicy.maximumAllowedBufferSize

int

64

wlan.mac.hcf.recipientBlockAckAgreementPolicy.blockAckTimeoutValue

double

0s

0 means that it depends on the originator

wlan.mac.ds.displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.ds.mibModule

string

wlan.mac.rx.displayStringTextFormat

string

“{rxStatus}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.tx.displayStringTextFormat

string

“{txFramePrefix}{txState}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

wlan.mac.tx.rxModule

string

eth.pcapRecorder.displayStringTextFormat

string

“rec: %n pks”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

eth.pcapRecorder.verbose

bool

true

Whether to log packets on the module output

eth.pcapRecorder.recordEmptyPackets

bool

true

Specifies if zero length packets are recorded or not

eth.pcapRecorder.enableConvertingPackets

bool

true

Specifies if converting packets to link type is allowed or not

eth.pcapRecorder.pcapFile

string

“”

The PCAP file to be written, suggested value: pcapFile = “${resultdir}/${configname}-#${runnumber}” + fullpath() + “.pcap”

eth.pcapRecorder.fileFormat

string

“pcapng”

eth.pcapRecorder.snaplen

int

65535

Maximum number of bytes to record per packet

eth.pcapRecorder.timePrecision

int

6

Time precision in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see ‘if_tsresol’ option in pcapng file format).

eth.pcapRecorder.dumpBadFrames

bool

true

Enable dump of frames with hasBitError

eth.pcapRecorder.sendingSignalNames

string

“transmissionEnded”

Space-separated list of outbound packet signals to subscribe to

eth.pcapRecorder.receivingSignalNames

string

“receptionEnded”

Space-separated list of inbound packet signals to subscribe to

eth.pcapRecorder.dumpProtocols

string

“ethernetmac ppp ieee80211mac”

Space-separated list of protocol names as defined in the Protocol class

eth.pcapRecorder.packetFilter

object

“*”

Which packets are considered, matches all packets by default

eth.pcapRecorder.helpers

string

“”

Usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype

eth.pcapRecorder.alwaysFlush

bool

false

Flush the pcapFile after each write to ensure that all packets are captured in case of a crash

Source code

//
// A wireless access point device that connects wireless stations (like WirelessHost)
// to a wired network. Supports multiple wireless radios and multiple Ethernet ports.
//
// The access point relays frames between the wireless and wired interfaces using
// a built-in MAC relay unit (bridging). It implements the IEEE 802.11 AP functionality
// including association, authentication, and frame forwarding between network segments.
//
// Key features:
// - Configurable number of wireless interfaces (radios)
// - Configurable number of Ethernet ports
// - IEEE 802.11 management functionality
// - MAC-layer bridging between interfaces
// - Customizable wireless management type (simplified or full-featured)
// - Stationary by default, but mobility can be added
//
// The wireless management can be configured to use either the full IEEE 802.11 management
// protocol (~Ieee80211MgmtAp) or a simplified version (~Ieee80211MgmtApSimplified) that
// doesn't support scanning, authentication, and association processes.
//
// @see ~WirelessHost, ~EthernetSwitch, ~StandardHost
//
module AccessPoint like INetworkNode
{
    parameters:
        @networkNode();
        @labels(node,ethernet-node,wireless-node);
        @display("i=device/accesspoint");
        int numWlanInterfaces = default(1);               // The number of radios in the access point
        bool hasStatus = default(false);
        string fcsMode @enum("declared","computed") = default("declared");
        wlan[*].protocol = default("ethernetmac");
        wlan[*].mgmt.typename = default("Ieee80211MgmtAp");
        wlan[*].llc.typename = default("Ieee80211Portal");
        wlan[*].agent.typename = default("");
        wlan[*].radio.antenna.mobilityModule = default("^.^.^.mobility");
        eth[*].encap.typename = "";
        *.macTableModule = default(absPath(".macTable"));
        *.interfaceTableModule = default(absPath(".interfaceTable"));
        bridging.hasStp = false;
        *.fcsMode = this.fcsMode;
        ethernet.registerProtocol = default(true);
    gates:
        input radioIn[numWlanInterfaces] @directIn;
        inout ethg[] @labels(EtherFrame-conn);
    submodules:
        status: NodeStatus if hasStatus {
            @display("p=100,100;is=s");
        }
        interfaceTable: InterfaceTable {
            @display("p=100,200;is=s");
        }
        macTable: <default("MacForwardingTable")> like IMacForwardingTable {
            @display("p=100,300;is=s");
        }
        mobility: <default("StationaryMobility")> like IMobility {
            @display("p=100,400;is=s");
        }
        bridging: <default(firstAvailable("Ieee8021dRelay","MacRelayUnit"))> like IMacRelayUnit if sizeof(ethg)+numWlanInterfaces > 1 && typename != "" {
            @display("p=800,100");
        }
        bl: MessageDispatcher if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging) {
            @display("p=800,200;b=1200,5,,,,1");
        }
        ethernet: <default("EthernetEncapsulation")> like IEthernetLayer if typename != "" && exists(bridging) {
            @display("p=700,300");
        }
        li: MessageDispatcher {
            @display("p=800,400;b=1000,5,,,,1");
        }
        wlan[numWlanInterfaces]: <default("Ieee80211Interface")> like IWirelessInterface {
            @display("p=250,500,row,150;q=queue");
        }
        eth[sizeof(ethg)]: <default("EthernetInterface")> like IEthernetInterface {
            mac.promiscuous = true;
            @display("p=850,500,row;q=txQueue");
        }
    connections allowunconnected:
        bl.out++ --> bridging.lowerLayerIn if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging);
        bl.in++ <-- bridging.lowerLayerOut if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging);

        bl.out++ --> li.in++ if exists(bl);
        li.out++ --> bl.in++ if exists(bl);

        bl.out++ --> ethernet.upperLayerIn if exists(ethernet);
        ethernet.upperLayerOut --> bl.in++ if exists(ethernet);
        ethernet.lowerLayerOut --> li.in++ if exists(ethernet);
        li.out++ --> ethernet.lowerLayerIn if exists(ethernet);

        // connections to network outside
        // wireless interfaces MUST be connected first (i.e. ports 0..numWlanInterfaces-1)
        // because broadcasts must be handled differently for wireless IFs by the bridging
        for i=0..numWlanInterfaces-1 {
            radioIn[i] --> { @display("m=s"); } --> wlan[i].radioIn;
            wlan[i].upperLayerOut --> li.in++ if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging);
            wlan[i].upperLayerIn <-- li.out++ if sizeof(ethg)+numWlanInterfaces > 1 && exists(bridging);
        }
        // ethernet must be connected only AFTER wireless ports
        for i=0..sizeof(ethg)-1 {
            eth[i].phys <--> { @display("m=s"); } <--> ethg[i];
            eth[i].upperLayerIn <-- li.out++ if sizeof(ethg)+numWlanInterfaces>1;
            eth[i].upperLayerOut --> li.in++ if sizeof(ethg)+numWlanInterfaces>1;
        }
}

File: src/inet/node/wireless/AccessPoint.ned