pcap_wrapper.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #pragma once
  2. //#ifdef __cplusplus
  3. //extern "C" {
  4. //#endif
  5. //#include <sys/time.h>
  6. //#include <stdint.h>
  7. struct bpf_program
  8. {
  9. char a[4096];
  10. };
  11. struct pcap_t
  12. {
  13. char a[4096];
  14. };
  15. typedef unsigned int bpf_u_int32;
  16. typedef struct my_timeval {
  17. int tv_sec;
  18. int tv_usec;
  19. } my_timeval;
  20. struct pcap_pkthdr {
  21. struct my_timeval ts; /* time stamp */
  22. bpf_u_int32 caplen; /* length of portion present */
  23. bpf_u_int32 len; /* length this packet (off wire) */
  24. };
  25. typedef enum {
  26. PCAP_D_INOUT = 0,
  27. PCAP_D_IN,
  28. PCAP_D_OUT
  29. } pcap_direction_t;
  30. struct pcap_addr {
  31. struct pcap_addr *next;
  32. struct sockaddr *addr; /* address */
  33. struct sockaddr *netmask; /* netmask for that address */
  34. struct sockaddr *broadaddr; /* broadcast address for that address */
  35. struct sockaddr *dstaddr; /* P2P destination address for that address */
  36. };
  37. struct pcap_if {
  38. struct pcap_if *next;
  39. char *name; /* name to hand to "pcap_open_live()" */
  40. char *description; /* textual description of interface, or NULL */
  41. struct pcap_addr *addresses;
  42. bpf_u_int32 flags; /* PCAP_IF_ interface flags */
  43. };
  44. typedef struct pcap_if pcap_if_t;
  45. typedef struct pcap_addr pcap_addr_t;
  46. typedef unsigned char u_char;
  47. #define PCAP_ERRBUF_SIZE 256
  48. #define DLT_NULL 0 /* BSD loopback encapsulation */
  49. #define DLT_EN10MB 1 /* Ethernet (10Mb) */
  50. #define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
  51. #define DLT_AX25 3 /* Amateur Radio AX.25 */
  52. #define DLT_PRONET 4 /* Proteon ProNET Token Ring */
  53. #define DLT_CHAOS 5 /* Chaos */
  54. #define DLT_IEEE802 6 /* 802.5 Token Ring */
  55. #define DLT_ARCNET 7 /* ARCNET, with BSD-style header */
  56. #define DLT_SLIP 8 /* Serial Line IP */
  57. #define DLT_PPP 9 /* Point-to-point Protocol */
  58. #define DLT_FDDI 10 /* FDDI */
  59. #define DLT_LINUX_SLL 113
  60. #define PCAP_NETMASK_UNKNOWN 0xffffffff
  61. typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
  62. const u_char *);
  63. extern int (*pcap_loop )(pcap_t *, int, pcap_handler, u_char *);
  64. extern int (*pcap_breakloop )(pcap_t *);
  65. extern pcap_t* (*pcap_create)(const char *, char *);
  66. extern int (*pcap_set_snaplen) (pcap_t *, int);
  67. extern int (*pcap_set_promisc) (pcap_t *, int);
  68. extern int (*pcap_can_set_rfmon) (pcap_t *);
  69. extern int (*pcap_set_rfmon )(pcap_t *, int);
  70. extern int (*pcap_set_timeout)(pcap_t *, int);
  71. extern int (*pcap_set_buffer_size)(pcap_t *, int);
  72. extern int (*pcap_activate)(pcap_t *);
  73. extern int (*pcap_setfilter)(pcap_t *, struct bpf_program *);
  74. extern int (*pcap_setdirection)(pcap_t *, pcap_direction_t);
  75. extern int (*pcap_datalink)(pcap_t *);
  76. extern void (*pcap_freecode)(struct bpf_program *);
  77. extern int (*pcap_compile)(pcap_t *, struct bpf_program *, const char *, int,
  78. bpf_u_int32);
  79. extern char* (*pcap_geterr)(pcap_t *);
  80. extern int (*pcap_sendpacket)(pcap_t *, const u_char *, int);
  81. extern char* (*pcap_lookupdev)(char *);
  82. extern int (*pcap_findalldevs)(pcap_if_t **, char *);
  83. inline int pcap_set_immediate_mode(pcap_t *,int)
  84. {
  85. return 0;
  86. }
  87. //#ifdef __cplusplus
  88. //}
  89. //#endif
  90. int init_pcap();