1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Created IEEE802_11 constructor from buffer. Tagged option parsing and subclass parsing is missing.

This commit is contained in:
Matias Fontanini
2011-08-23 23:57:35 -03:00
parent 422b9f93ff
commit 22b84e5df0
2 changed files with 12 additions and 4 deletions

View File

@@ -509,7 +509,7 @@ namespace Tins {
PDUType pdu_type() const { return PDU::IEEE802_11; }
protected:
virtual uint32_t write_fixed_parameters(uint8_t *buffer, uint32_t total_sz) { return 0; }
private:
protected:
/**
* Struct that represents the 802.11 header
*/
@@ -556,7 +556,8 @@ namespace Tins {
} __attribute__((__packed__)) seq_control;
} __attribute__((__packed__));
private:
IEEE802_11(const ieee80211_header *header_ptr);
void write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU *parent);

View File

@@ -63,11 +63,18 @@ Tins::IEEE802_11::IEEE802_11(uint32_t iface_index, const uint8_t* dst_hw_addr, c
}
Tins::IEEE802_11::IEEE802_11(const ieee80211_header *header_ptr) : PDU(ETHERTYPE_IP) {
}
Tins::IEEE802_11::IEEE802_11(const uint8_t *buffer, uint32_t total_sz) : PDU(ETHERTYPE_IP), _options_size(0) {
if(total_sz < sizeof(_header))
throw std::runtime_error("Not enough size for an RadioTap header in the buffer.");
std::memcpy(&_header, buffer, sizeof(_header));
buffer += sizeof(_header);
total_sz -= sizeof(_header);
// Tagged arguments missing.
// subclass specific parsing missing too.
}
Tins::IEEE802_11::~IEEE802_11() {