From 76e86f556abb4d76865711a3c38bbeb5debad767 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Thu, 2 Mar 2017 00:38:04 +0100 Subject: [PATCH] getPhyLessPduPtr -> skip ethernet pdus --- src/TinsNetworkInterfaceCard.cpp | 15 +++++++++++---- src/TinsNetworkInterfaceCard.h | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/TinsNetworkInterfaceCard.cpp b/src/TinsNetworkInterfaceCard.cpp index 696d09f..c184e4f 100644 --- a/src/TinsNetworkInterfaceCard.cpp +++ b/src/TinsNetworkInterfaceCard.cpp @@ -1,8 +1,9 @@ #include "TinsNetworkInterfaceCard.h" #include #include -#include +#include #include +#include #include ByteVectorHash TinsNetworkInterfaceCard::byteVectorHash; @@ -48,7 +49,7 @@ TinsNetworkInterfaceCard::~TinsNetworkInterfaceCard() bool TinsNetworkInterfaceCard::handle(const Tins::PDU &pdu, IPacketHandler *callBackHandler) { - return false; + return false; } void TinsNetworkInterfaceCard::sendPacket(const Tins::PDU &pdu) @@ -104,7 +105,13 @@ void TinsNetworkInterfaceCard::stopListen() } -Tins::PDU * TinsNetworkInterfaceCard::getPhyLessPduPtr(IN const Tins::PDU & pdu) const +Tins::PDU * TinsNetworkInterfaceCard::getPhyLessPduPtr(IN Tins::PDU & pdu) const { - return pdu.inner_pdu(); + const Tins::EthernetII * ethPdu = pdu.find_pdu(); + if (ethPdu == nullptr) + { + return &pdu; + } + + return getPhyLessPduPtr(*(ethPdu->inner_pdu())); } diff --git a/src/TinsNetworkInterfaceCard.h b/src/TinsNetworkInterfaceCard.h index 800aecb..11bd0db 100644 --- a/src/TinsNetworkInterfaceCard.h +++ b/src/TinsNetworkInterfaceCard.h @@ -26,7 +26,7 @@ public: private: - Tins::PDU * getPhyLessPduPtr(IN const Tins::PDU & pdu) const; + Tins::PDU * getPhyLessPduPtr(IN Tins::PDU & pdu) const; void addPduToHashList(IN Tins::PDU &pdu); bool searchAndRemoveHashListItem(IN const std::size_t removedHash);