Files
1261Nat/src/TinsNetworkInterfaceCard.h
2017-03-02 00:38:04 +01:00

41 lines
1.3 KiB
C++

#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