30#include <tins/config.h>
32#if !defined(TINS_RADIOTAP_H) && defined(TINS_HAVE_DOT11)
33#define TINS_RADIOTAP_H
35#include <tins/macros.h>
37#include <tins/endianness.h>
38#include <tins/pdu_option.h>
94 LOCK_QUALITY = 1 << 7,
95 TX_ATTENUATION = 1 << 8,
96 DB_TX_ATTENUATION = 1 << 9,
97 DBM_TX_ATTENUATION = 1 << 10,
103 DATA_RETRIES = 1 << 17,
105 CHANNEL_PLUS = 1 << 18,
169 RadioTap(
const uint8_t* buffer, uint32_t total_sz);
184 void version(uint8_t new_version);
190 void padding(uint8_t new_padding);
196 void length(uint16_t new_length);
202 void tsft(uint64_t new_tsft);
214 void rate(uint8_t new_rate);
221 void channel(uint16_t new_freq, uint16_t new_type);
245 void antenna(uint8_t new_antenna);
257 void rx_flags(uint16_t new_rx_flag);
263 void tx_flags(uint16_t new_tx_flag);
307 uint64_t
tsft()
const;
319 uint8_t
rate()
const;
458 struct radiotap_header {
459 #if TINS_IS_LITTLE_ENDIAN
469 void write_serialization(uint8_t* buffer, uint32_t total_sz);
470 option do_find_option(PresentFlags type)
const;
472 radiotap_header header_;
473 options_payload_type options_payload_;
Abstraction of a network interface.
Definition network_interface.h:47
Represents a PDU option field.
Definition pdu_option.h:201
endian_type
Definition pdu.h:117
PDU()
Default constructor.
Definition pdu.cpp:50
PDUType
Enum which identifies each type of PDU.
Definition pdu.h:127
Sends packets through a network interface.
Definition packet_sender.h:118
void channel(uint16_t new_freq, uint16_t new_type)
Setter for the channel frequency and type field.
Definition radiotap.cpp:143
void length(uint16_t new_length)
Setter for the length field.
Definition radiotap.cpp:127
void mcs(const mcs_type &new_mcs)
Setter for the MCS field.
Definition radiotap.cpp:191
uint16_t channel_freq() const
Getter for the channel frequency field.
Definition radiotap.cpp:257
void xchannel(xchannel_type new_xchannel)
Setter for the xchannel field.
Definition radiotap.cpp:183
RadioTap()
Default constructor.
Definition radiotap.cpp:72
void antenna(uint8_t new_antenna)
Setter for the antenna field.
Definition radiotap.cpp:167
void flags(FrameFlags new_flags)
Setter for the flags field.
Definition radiotap.cpp:135
void send(PacketSender &sender, const NetworkInterface &iface)
Definition radiotap.cpp:320
void padding(uint8_t new_padding)
Setter for the padding field.
Definition radiotap.cpp:123
uint16_t channel_type() const
Getter for the channel type field.
Definition radiotap.cpp:264
void version(uint8_t new_version)
Setter for the version field.
Definition radiotap.cpp:119
void data_retries(uint8_t new_data_retries)
Setter for the data retries field.
Definition radiotap.cpp:163
bool matches_response(const uint8_t *ptr, uint32_t total_sz) const
Check whether ptr points to a valid response for this PDU.
Definition radiotap.cpp:348
RadioTap * clone() const
Definition radiotap.h:445
uint32_t trailer_size() const
Returns the frame's trailer size.
Definition radiotap.cpp:211
uint32_t header_size() const
Returns the RadioTap frame's header length.
Definition radiotap.cpp:207
PDUOption< RadioTap::PresentFlags, RadioTap > option
Definition radiotap.h:147
void tx_flags(uint16_t new_tx_flag)
Setter for the tx flag field.
Definition radiotap.cpp:179
void dbm_signal(int8_t new_dbm_signal)
Setter for the dbm signal field.
Definition radiotap.cpp:151
void rate(uint8_t new_rate)
Setter for the rate field.
Definition radiotap.cpp:139
PresentFlags present() const
Getter for the present bit fields.
Definition radiotap.cpp:197
FrameFlags
Flags used in the RadioTap::flags() method.
Definition radiotap.h:112
PDUType pdu_type() const
Getter for the PDU's type.
Definition radiotap.h:453
void dbm_noise(int8_t new_dbm_noise)
Setter for the dbm noise field.
Definition radiotap.cpp:155
void db_signal(uint8_t new_db_signal)
Setter for the db signal field.
Definition radiotap.cpp:171
void rx_flags(uint16_t new_rx_flag)
Setter for the rx flag field.
Definition radiotap.cpp:175
void signal_quality(uint8_t new_signal_quality)
Setter for the signal quality field.
Definition radiotap.cpp:159
const options_payload_type & options_payload() const
Gets the options payload.
Definition radiotap.cpp:228
PresentFlags
Flags used in the present field.
Definition radiotap.h:85
@ TSTF
Deprecated (typo), use TSFT.
Definition radiotap.h:87
std::vector< uint8_t > options_payload_type
Definition radiotap.h:152
static const PDU::PDUType pdu_flag
This PDU's flag.
Definition radiotap.h:56
static const endian_type endianness
Definition radiotap.h:61
ChannelType
Enumeration of the different channel type flags.
Definition radiotap.h:69
void add_option(const option &opt)
Definition radiotap.cpp:223
void tsft(uint64_t new_tsft)
Setter for the TSFT field.
Definition radiotap.cpp:131
The Tins namespace.
Definition address_range.h:38
The type used to represent the MCS flags field.
Definition radiotap.h:127
The type used to represent the XChannel field.
Definition radiotap.h:137