123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- #ifndef pcap_int_h
- #define pcap_int_h
- #include <signal.h>
- #include <pcap/pcap.h>
- #include "varattrs.h"
- #include "fmtutils.h"
- #define PCAP_VERSION_STRING "libpcap version " PACKAGE_VERSION
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef MSDOS
- #include <fcntl.h>
- #include <io.h>
- #endif
- #define SWAPLL(ull) ((ull & 0xff00000000000000ULL) >> 56) | \
- ((ull & 0x00ff000000000000ULL) >> 40) | \
- ((ull & 0x0000ff0000000000ULL) >> 24) | \
- ((ull & 0x000000ff00000000ULL) >> 8) | \
- ((ull & 0x00000000ff000000ULL) << 8) | \
- ((ull & 0x0000000000ff0000ULL) << 24) | \
- ((ull & 0x000000000000ff00ULL) << 40) | \
- ((ull & 0x00000000000000ffULL) << 56)
- #define MAXIMUM_SNAPLEN 262144
- struct pcap_opt {
- char *device;
- int timeout;
- u_int buffer_size;
- int promisc;
- int rfmon;
- int immediate;
- int nonblock;
- int tstamp_type;
- int tstamp_precision;
-
- #ifdef __linux__
- int protocol;
- #endif
- #ifdef _WIN32
- int nocapture_local;
- #endif
- };
- typedef int (*activate_op_t)(pcap_t *);
- typedef int (*can_set_rfmon_op_t)(pcap_t *);
- typedef int (*read_op_t)(pcap_t *, int cnt, pcap_handler, u_char *);
- typedef int (*next_packet_op_t)(pcap_t *, struct pcap_pkthdr *, u_char **);
- typedef int (*inject_op_t)(pcap_t *, const void *, size_t);
- typedef void (*save_current_filter_op_t)(pcap_t *, const char *);
- typedef int (*setfilter_op_t)(pcap_t *, struct bpf_program *);
- typedef int (*setdirection_op_t)(pcap_t *, pcap_direction_t);
- typedef int (*set_datalink_op_t)(pcap_t *, int);
- typedef int (*getnonblock_op_t)(pcap_t *);
- typedef int (*setnonblock_op_t)(pcap_t *, int);
- typedef int (*stats_op_t)(pcap_t *, struct pcap_stat *);
- #ifdef _WIN32
- typedef struct pcap_stat *(*stats_ex_op_t)(pcap_t *, int *);
- typedef int (*setbuff_op_t)(pcap_t *, int);
- typedef int (*setmode_op_t)(pcap_t *, int);
- typedef int (*setmintocopy_op_t)(pcap_t *, int);
- typedef HANDLE (*getevent_op_t)(pcap_t *);
- typedef int (*oid_get_request_op_t)(pcap_t *, bpf_u_int32, void *, size_t *);
- typedef int (*oid_set_request_op_t)(pcap_t *, bpf_u_int32, const void *, size_t *);
- typedef u_int (*sendqueue_transmit_op_t)(pcap_t *, pcap_send_queue *, int);
- typedef int (*setuserbuffer_op_t)(pcap_t *, int);
- typedef int (*live_dump_op_t)(pcap_t *, char *, int, int);
- typedef int (*live_dump_ended_op_t)(pcap_t *, int);
- typedef PAirpcapHandle (*get_airpcap_handle_op_t)(pcap_t *);
- #endif
- typedef void (*cleanup_op_t)(pcap_t *);
- struct pcap {
-
- read_op_t read_op;
-
- next_packet_op_t next_packet_op;
- #ifdef _WIN32
- HANDLE handle;
- #else
- int fd;
- #endif
-
- u_int bufsize;
- void *buffer;
- u_char *bp;
- int cc;
- sig_atomic_t break_loop;
- void *priv;
- #ifdef ENABLE_REMOTE
- struct pcap_samp rmt_samp;
- #endif
- int swapped;
- FILE *rfile;
- u_int fddipad;
- struct pcap *next;
-
- int version_major;
- int version_minor;
- int snapshot;
- int linktype;
- int linktype_ext;
- int tzoff;
- int offset;
- int activated;
- int oldstyle;
- struct pcap_opt opt;
-
- u_char *pkt;
- #ifdef _WIN32
- struct pcap_stat stat;
- #endif
-
- pcap_direction_t direction;
-
- int bpf_codegen_flags;
- #if !defined(_WIN32) && !defined(MSDOS)
- int selectable_fd;
-
- struct timeval *required_select_timeout;
- #endif
-
- struct bpf_program fcode;
- char errbuf[PCAP_ERRBUF_SIZE + 1];
- int dlt_count;
- u_int *dlt_list;
- int tstamp_type_count;
- u_int *tstamp_type_list;
- int tstamp_precision_count;
- u_int *tstamp_precision_list;
- struct pcap_pkthdr pcap_header;
-
- activate_op_t activate_op;
- can_set_rfmon_op_t can_set_rfmon_op;
- inject_op_t inject_op;
- save_current_filter_op_t save_current_filter_op;
- setfilter_op_t setfilter_op;
- setdirection_op_t setdirection_op;
- set_datalink_op_t set_datalink_op;
- getnonblock_op_t getnonblock_op;
- setnonblock_op_t setnonblock_op;
- stats_op_t stats_op;
-
- pcap_handler oneshot_callback;
- #ifdef _WIN32
-
- stats_ex_op_t stats_ex_op;
- setbuff_op_t setbuff_op;
- setmode_op_t setmode_op;
- setmintocopy_op_t setmintocopy_op;
- getevent_op_t getevent_op;
- oid_get_request_op_t oid_get_request_op;
- oid_set_request_op_t oid_set_request_op;
- sendqueue_transmit_op_t sendqueue_transmit_op;
- setuserbuffer_op_t setuserbuffer_op;
- live_dump_op_t live_dump_op;
- live_dump_ended_op_t live_dump_ended_op;
- get_airpcap_handle_op_t get_airpcap_handle_op;
- #endif
- cleanup_op_t cleanup_op;
- };
- #define BPF_SPECIAL_VLAN_HANDLING 0x00000001
- struct pcap_timeval {
- bpf_int32 tv_sec;
- bpf_int32 tv_usec;
- };
- struct pcap_sf_pkthdr {
- struct pcap_timeval ts;
- bpf_u_int32 caplen;
- bpf_u_int32 len;
- };
- struct pcap_sf_patched_pkthdr {
- struct pcap_timeval ts;
- bpf_u_int32 caplen;
- bpf_u_int32 len;
- int index;
- unsigned short protocol;
- unsigned char pkt_type;
- };
- struct oneshot_userdata {
- struct pcap_pkthdr *hdr;
- const u_char **pkt;
- pcap_t *pd;
- };
- #ifndef min
- #define min(a, b) ((a) > (b) ? (b) : (a))
- #endif
- int pcap_offline_read(pcap_t *, int, pcap_handler, u_char *);
- #include <stdarg.h>
- #include "portability.h"
- #define PACKET_COUNT_IS_UNLIMITED(count) ((count) <= 0)
- #if !defined(_WIN32) && !defined(MSDOS)
- int pcap_getnonblock_fd(pcap_t *);
- int pcap_setnonblock_fd(pcap_t *p, int);
- #endif
- pcap_t *pcap_create_interface(const char *, char *);
- pcap_t *pcap_create_common(char *, size_t);
- int pcap_do_addexit(pcap_t *);
- void pcap_add_to_pcaps_to_close(pcap_t *);
- void pcap_remove_from_pcaps_to_close(pcap_t *);
- void pcap_cleanup_live_common(pcap_t *);
- int pcap_check_activated(pcap_t *);
- struct pcap_if_list;
- typedef struct pcap_if_list pcap_if_list_t;
- typedef int (*get_if_flags_func)(const char *, bpf_u_int32 *, char *);
- int pcap_platform_finddevs(pcap_if_list_t *, char *);
- #if !defined(_WIN32) && !defined(MSDOS)
- int pcap_findalldevs_interfaces(pcap_if_list_t *, char *,
- int (*)(const char *), get_if_flags_func);
- #endif
- pcap_if_t *find_or_add_dev(pcap_if_list_t *, const char *, bpf_u_int32,
- get_if_flags_func, const char *, char *);
- pcap_if_t *find_dev(pcap_if_list_t *, const char *);
- pcap_if_t *add_dev(pcap_if_list_t *, const char *, bpf_u_int32, const char *,
- char *);
- int add_addr_to_dev(pcap_if_t *, struct sockaddr *, size_t,
- struct sockaddr *, size_t, struct sockaddr *, size_t,
- struct sockaddr *dstaddr, size_t, char *errbuf);
- #ifndef _WIN32
- pcap_if_t *find_or_add_if(pcap_if_list_t *, const char *, bpf_u_int32,
- get_if_flags_func, char *);
- int add_addr_to_if(pcap_if_list_t *, const char *, bpf_u_int32,
- get_if_flags_func,
- struct sockaddr *, size_t, struct sockaddr *, size_t,
- struct sockaddr *, size_t, struct sockaddr *, size_t, char *);
- #endif
- pcap_t *pcap_open_offline_common(char *ebuf, size_t size);
- void sf_cleanup(pcap_t *p);
- void pcap_oneshot(u_char *, const struct pcap_pkthdr *, const u_char *);
- #ifdef _WIN32
- void pcap_win32_err_to_str(DWORD, char *);
- #endif
- int install_bpf_program(pcap_t *, struct bpf_program *);
- int pcap_strcasecmp(const char *, const char *);
- #ifdef YYDEBUG
- extern int pcap_debug;
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|