53 lines
1.9 KiB
C++
53 lines
1.9 KiB
C++
#ifndef __PCAPDLL_WINDOWS_H_
|
|
#define __PCAPDLL_WINDOWS_H_
|
|
|
|
#include <Windows.h>
|
|
#include <winsock2.h>
|
|
#include <pcap.h>
|
|
|
|
namespace icsneo {
|
|
|
|
// Helper loader for the PCAP DLL
|
|
class PCAPDLL {
|
|
public:
|
|
// Functions
|
|
typedef int(__cdecl* PCAPFINDDEVICE)(char* source, struct pcap_rmtauth* auth, pcap_if_t** alldevs, char* errbuf);
|
|
typedef pcap_t*(__cdecl* PCAPOPEN)(const char* source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth* auth, char* errbuf);
|
|
typedef void(__cdecl* PCAPFREEDEVS)(pcap_if_t* alldevsp);
|
|
typedef void(__cdecl* PCAPCLOSE)(pcap_t* p);
|
|
typedef int(__cdecl* PCAPSTATS)(pcap_t* p, struct pcap_stat* ps);
|
|
typedef int(__cdecl* PCAPNEXTEX)(pcap_t* p, struct pcap_pkthdr** pkt_header, const u_char** pkt_data);
|
|
typedef int(__cdecl* PCAPSENDPACKET)(pcap_t* p, const u_char* buf, int size);
|
|
// typedef pcap_send_queue*(__cdecl* PCAPSENDQUEUEALLOC)(u_int memsize);
|
|
// typedef int(__cdecl* PCAPSENDQUEUEQUEUE)(pcap_send_queue* queue, const struct pcap_pkthdr* pkt_header, const u_char* pkt_data);
|
|
// typedef void(__cdecl* PCAPSENDQUEUEDESTROY)(pcap_send_queue* queue);
|
|
// typedef u_int(__cdecl* PCAPSENDQUEUETRANSMIT)(pcap_t* p, pcap_send_queue* queue, int sync);
|
|
typedef int(__cdecl* PCAPDATALINK)(pcap_t* p);
|
|
typedef int(__cdecl* PCAPCREATESRCSTR)(char* source, int type, const char* host, const char* port, const char* name, char* errbuf);
|
|
typedef int(__cdecl* PCAPSETBUFF)(pcap_t* p, int dim);
|
|
PCAPFINDDEVICE findalldevs_ex;
|
|
PCAPOPEN open;
|
|
PCAPFREEDEVS freealldevs;
|
|
PCAPCLOSE close;
|
|
PCAPSTATS stats;
|
|
PCAPNEXTEX next_ex;
|
|
PCAPSENDPACKET sendpacket;
|
|
// PCAPSENDQUEUEALLOC sendqueue_alloc;
|
|
// PCAPSENDQUEUEQUEUE sendqueue_queue;
|
|
// PCAPSENDQUEUEDESTROY sendqueue_destroy;
|
|
// PCAPSENDQUEUETRANSMIT sendqueue_transmit;
|
|
PCAPDATALINK datalink;
|
|
PCAPCREATESRCSTR createsrcstr;
|
|
PCAPSETBUFF setbuff;
|
|
|
|
PCAPDLL();
|
|
~PCAPDLL() { closeDLL(); }
|
|
bool ok() const { return dll != nullptr; }
|
|
private:
|
|
HINSTANCE dll;
|
|
void closeDLL();
|
|
};
|
|
|
|
};
|
|
|
|
#endif |