pcap_wrapper.h 3.1 KB

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