/usr/include/ns3/ap-wifi-mac.h is in libns3-dev 3.13+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2006, 2009 INRIA
* Copyright (c) 2009 MIRKO BANCHI
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
* Author: Mirko Banchi <mk.banchi@gmail.com>
*/
#ifndef AP_WIFI_MAC_H
#define AP_WIFI_MAC_H
#include "regular-wifi-mac.h"
#include "amsdu-subframe-header.h"
#include "supported-rates.h"
namespace ns3 {
/**
* \brief Wi-Fi AP state machine
* \ingroup wifi
*
* Handle association, dis-association and authentication,
* of STAs within an infrastructure BSS.
*/
class ApWifiMac : public RegularWifiMac
{
public:
static TypeId GetTypeId (void);
ApWifiMac ();
virtual ~ApWifiMac ();
/**
* \param stationManager the station manager attached to this MAC.
*/
virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
/**
* \param linkUp the callback to invoke when the link becomes up.
*/
virtual void SetLinkUpCallback (Callback<void> linkUp);
/**
* \param packet the packet to send.
* \param to the address to which the packet should be sent.
*
* The packet should be enqueued in a tx queue, and should be
* dequeued as soon as the channel access function determines that
* access is granted to this MAC.
*/
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
/**
* \param packet the packet to send.
* \param to the address to which the packet should be sent.
* \param from the address from which the packet should be sent.
*
* The packet should be enqueued in a tx queue, and should be
* dequeued as soon as the channel access function determines that
* access is granted to this MAC. The extra parameter "from" allows
* this device to operate in a bridged mode, forwarding received
* frames without altering the source address.
*/
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
virtual bool SupportsSendFrom (void) const;
/**
* \param address the current address of this MAC layer.
*/
virtual void SetAddress (Mac48Address address);
/**
* \param interval the interval between two beacon transmissions.
*/
void SetBeaconInterval (Time interval);
/**
* \returns the interval between two beacon transmissions.
*/
Time GetBeaconInterval (void) const;
/**
* Start beacon transmission immediately.
*/
void StartBeaconing (void);
private:
virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr);
virtual void TxOk (const WifiMacHeader &hdr);
virtual void TxFailed (const WifiMacHeader &hdr);
/**
* This method is called to de-aggregate an A-MSDU and forward the
* constituent packets up the stack. We override the WifiMac version
* here because, as an AP, we also need to think about redistributing
* to other associated STAs.
*
* \param aggregatedPacket the Packet containing the A-MSDU.
* \param hdr a pointer to the MAC header for \c aggregatedPacket.
*/
virtual void DeaggregateAmsduAndForward (Ptr<Packet> aggregatedPacket,
const WifiMacHeader *hdr);
void ForwardDown (Ptr<const Packet> packet, Mac48Address from, Mac48Address to);
void ForwardDown (Ptr<const Packet> packet, Mac48Address from, Mac48Address to, uint8_t tid);
void SendProbeResp (Mac48Address to);
void SendAssocResp (Mac48Address to, bool success);
void SendOneBeacon (void);
SupportedRates GetSupportedRates (void) const;
void SetBeaconGeneration (bool enable);
bool GetBeaconGeneration (void) const;
virtual void DoDispose (void);
virtual void DoStart (void);
Ptr<DcaTxop> m_beaconDca;
Time m_beaconInterval;
bool m_enableBeaconGeneration;
EventId m_beaconEvent;
};
} // namespace ns3
#endif /* AP_WIFI_MAC_H */
|