#ifndef TINSNETWORKINTERFACECARD_H #define TINSNETWORKINTERFACECARD_H #include "TinsNetworkInterfaceCard_t.h" #include "INetworkInterfaceCard_t.h" #include "INetworkInterfaceCard.h" #include "Ip4Packet_t.h" #include "Ip6Packet_t.h" class TinsNetworkInterfaceCard : public INetworkInterfaceCard { public: TinsNetworkInterfaceCard(); TinsNetworkInterfaceCard(const Tins::NetworkInterface & networkInterface); TinsNetworkInterfaceCard(const std::string& name); TinsNetworkInterfaceCard(const char* name); TinsNetworkInterfaceCard(const Tins::IPv4Address & ip); TinsNetworkInterfaceCard(const Tins::IPv6Address & ipv6); virtual ~TinsNetworkInterfaceCard(); virtual bool handle(IN const Tins::PDU & pdu, IN IPacketHandler * callBackHandler = nullptr) override; virtual void sendPacket(IN const Tins::PDU & pdu) override; virtual void startListen() override; virtual void stopListen() override; private: Tins::PDU * getPhyLessPduPtr(IN Tins::PDU & pdu) const; void addPduToHashList(IN Tins::PDU &pdu); bool searchAndRemoveHashListItem(IN const std::size_t removedHash); UPtrSniffer sniffer; UPtrSnifferConfiguration snifferConfig; UPtrPacketSender packetSender; static ByteVectorHash byteVectorHash; UPtrHashList sendPduHashList; UPtrMutex hashListMutex; }; #endif