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

Done some fixes on Sniffer and Dot11Data.

This commit is contained in:
Matias Fontanini
2012-10-10 21:06:06 -03:00
parent 73577c744a
commit 3139020df2
3 changed files with 15 additions and 2 deletions

View File

@@ -40,6 +40,7 @@
#include "ethernetII.h"
#include "radiotap.h"
#include "loopback.h"
#include "dot11.h"
namespace Tins {
/**
@@ -213,6 +214,11 @@ namespace Tins {
ret_val = call_functor<Tins::EthernetII>(data, packet, header->caplen);
else if(data->iface_type == DLT_IEEE802_11_RADIO)
ret_val = call_functor<Tins::RadioTap>(data, packet, header->caplen);
else if(data->iface_type == DLT_IEEE802_11) {
std::auto_ptr<PDU> pdu(Tins::Dot11::from_bytes((const uint8_t*)packet, header->caplen));
if(pdu.get())
ret_val = data->c_handler(*pdu);
}
else if(data->iface_type == DLT_NULL)
ret_val = call_functor<Tins::Loopback>(data, packet, header->caplen);

View File

@@ -1233,8 +1233,13 @@ Dot11Data::Dot11Data(const uint8_t *buffer, uint32_t total_sz)
buffer += _addr4.size();
total_sz -= _addr4.size();
}
if(total_sz)
inner_pdu(new Tins::SNAP(buffer, total_sz));
if(total_sz) {
// If the wep bit is on, then just use a RawPDU
if(wep())
inner_pdu(new Tins::RawPDU(buffer, total_sz));
else
inner_pdu(new Tins::SNAP(buffer, total_sz));
}
}

View File

@@ -73,6 +73,8 @@ PDU *BaseSniffer::next_packet() {
ret = new EthernetII((const uint8_t*)content, header.caplen);
else if(iface_type == DLT_IEEE802_11_RADIO)
ret = new RadioTap((const uint8_t*)content, header.caplen);
else if(iface_type == DLT_IEEE802_11)
ret = Dot11::from_bytes((const uint8_t*)content, header.caplen);
else if(iface_type == DLT_LOOP)
ret = new Tins::Loopback((const uint8_t*)content, header.caplen);
}