41 lines
1.3 KiB
C++
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
|