|
|
@@ -0,0 +1,124 @@
|
|
|
+#pragma once
|
|
|
+
|
|
|
+#ifdef __cplusplus
|
|
|
+extern "C" {
|
|
|
+#endif
|
|
|
+
|
|
|
+#include <sys/time.h>
|
|
|
+//#include <stdint.h>
|
|
|
+
|
|
|
+struct bpf_program
|
|
|
+{
|
|
|
+ char a[2000];
|
|
|
+};
|
|
|
+
|
|
|
+struct pcap_t
|
|
|
+{
|
|
|
+ char a[2000];
|
|
|
+};
|
|
|
+
|
|
|
+typedef unsigned int bpf_u_int32;
|
|
|
+
|
|
|
+typedef struct my_timeval {
|
|
|
+ int tv_sec;
|
|
|
+ int tv_usec;
|
|
|
+} my_timeval;
|
|
|
+
|
|
|
+struct pcap_pkthdr {
|
|
|
+ struct my_timeval ts; /* time stamp */
|
|
|
+ bpf_u_int32 caplen; /* length of portion present */
|
|
|
+ bpf_u_int32 len; /* length this packet (off wire) */
|
|
|
+};
|
|
|
+
|
|
|
+typedef enum {
|
|
|
+ PCAP_D_INOUT = 0,
|
|
|
+ PCAP_D_IN,
|
|
|
+ PCAP_D_OUT
|
|
|
+} pcap_direction_t;
|
|
|
+
|
|
|
+
|
|
|
+struct pcap_addr {
|
|
|
+ struct pcap_addr *next;
|
|
|
+ struct sockaddr *addr; /* address */
|
|
|
+ struct sockaddr *netmask; /* netmask for that address */
|
|
|
+ struct sockaddr *broadaddr; /* broadcast address for that address */
|
|
|
+ struct sockaddr *dstaddr; /* P2P destination address for that address */
|
|
|
+};
|
|
|
+
|
|
|
+struct pcap_if {
|
|
|
+ struct pcap_if *next;
|
|
|
+ char *name; /* name to hand to "pcap_open_live()" */
|
|
|
+ char *description; /* textual description of interface, or NULL */
|
|
|
+ struct pcap_addr *addresses;
|
|
|
+ bpf_u_int32 flags; /* PCAP_IF_ interface flags */
|
|
|
+};
|
|
|
+
|
|
|
+typedef struct pcap_if pcap_if_t;
|
|
|
+typedef struct pcap_addr pcap_addr_t;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//typedef unsigned char u_char;
|
|
|
+
|
|
|
+
|
|
|
+#define PCAP_ERRBUF_SIZE 256
|
|
|
+
|
|
|
+#define DLT_NULL 0 /* BSD loopback encapsulation */
|
|
|
+#define DLT_EN10MB 1 /* Ethernet (10Mb) */
|
|
|
+#define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
|
|
|
+#define DLT_AX25 3 /* Amateur Radio AX.25 */
|
|
|
+#define DLT_PRONET 4 /* Proteon ProNET Token Ring */
|
|
|
+#define DLT_CHAOS 5 /* Chaos */
|
|
|
+#define DLT_IEEE802 6 /* 802.5 Token Ring */
|
|
|
+#define DLT_ARCNET 7 /* ARCNET, with BSD-style header */
|
|
|
+#define DLT_SLIP 8 /* Serial Line IP */
|
|
|
+#define DLT_PPP 9 /* Point-to-point Protocol */
|
|
|
+#define DLT_FDDI 10 /* FDDI */
|
|
|
+
|
|
|
+#define PCAP_NETMASK_UNKNOWN 0xffffffff
|
|
|
+
|
|
|
+typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
|
|
|
+ const u_char *);
|
|
|
+
|
|
|
+extern int (*pcap_loop )(pcap_t *, int, pcap_handler, u_char *);
|
|
|
+
|
|
|
+extern pcap_t* (*pcap_create)(const char *, char *);
|
|
|
+
|
|
|
+extern int (*pcap_set_snaplen) (pcap_t *, int);
|
|
|
+extern int (*pcap_set_promisc) (pcap_t *, int);
|
|
|
+extern int (*pcap_can_set_rfmon) (pcap_t *);
|
|
|
+extern int (*pcap_set_rfmon )(pcap_t *, int);
|
|
|
+extern int (*pcap_set_timeout)(pcap_t *, int);
|
|
|
+extern int (*pcap_set_buffer_size)(pcap_t *, int);
|
|
|
+extern int (*pcap_activate)(pcap_t *);
|
|
|
+
|
|
|
+extern int (*pcap_setfilter)(pcap_t *, struct bpf_program *);
|
|
|
+extern int (*pcap_setdirection)(pcap_t *, pcap_direction_t);
|
|
|
+
|
|
|
+extern int (*pcap_datalink)(pcap_t *);
|
|
|
+
|
|
|
+extern void (*pcap_freecode)(struct bpf_program *);
|
|
|
+
|
|
|
+extern int (*pcap_compile)(pcap_t *, struct bpf_program *, const char *, int,
|
|
|
+ bpf_u_int32);
|
|
|
+
|
|
|
+extern char* (*pcap_geterr)(pcap_t *);
|
|
|
+extern int (*pcap_sendpacket)(pcap_t *, const u_char *, int);
|
|
|
+
|
|
|
+extern char* (*pcap_lookupdev)(char *);
|
|
|
+
|
|
|
+extern int (*pcap_findalldevs)(pcap_if_t **, char *);
|
|
|
+
|
|
|
+inline int pcap_set_immediate_mode(pcap_t *,int)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef __cplusplus
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+int init_pcap();
|
|
|
+
|