1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-29 21:14:28 +01:00

Created an overload of Internals::pdu_from_flag for transport layer PDUs.

This commit is contained in:
Matias Fontanini
2013-11-04 13:46:25 -03:00
parent dfbbea33d5
commit 6d329424f1
4 changed files with 67 additions and 48 deletions

View File

@@ -34,6 +34,10 @@
#include "radiotap.h"
#include "dot11/dot11_base.h"
#include "ipv6.h"
#include "tcp.h"
#include "udp.h"
#include "icmp.h"
#include "icmpv6.h"
#include "arp.h"
#include "eapol.h"
#include "rawpdu.h"
@@ -100,6 +104,30 @@ Tins::PDU *pdu_from_flag(Constants::Ethernet::e flag, const uint8_t *buffer,
};
}
Tins::PDU *pdu_from_flag(Constants::IP::e flag, const uint8_t *buffer,
uint32_t size, bool rawpdu_on_no_match)
{
switch(flag) {
case Constants::IP::PROTO_IPIP:
return new Tins::TCP(buffer, size);
case Constants::IP::PROTO_TCP:
return new Tins::TCP(buffer, size);
case Constants::IP::PROTO_UDP:
return new Tins::UDP(buffer, size);
case Constants::IP::PROTO_ICMP:
return new Tins::ICMP(buffer, size);
case Constants::IP::PROTO_ICMPV6:
return new Tins::ICMPv6(buffer, size);
case Constants::IP::PROTO_IPV6:
return new Tins::IPv6(buffer, size);
default:
break;
}
if(rawpdu_on_no_match)
return new Tins::RawPDU(buffer, size);
return 0;
}
Tins::PDU *pdu_from_flag(PDU::PDUType type, const uint8_t *buffer, uint32_t size)
{
switch(type) {