aboutsummaryrefslogtreecommitdiff
path: root/pcap/pcap.h
diff options
context:
space:
mode:
Diffstat (limited to 'pcap/pcap.h')
-rw-r--r--pcap/pcap.h311
1 files changed, 277 insertions, 34 deletions
diff --git a/pcap/pcap.h b/pcap/pcap.h
index 90614dd0..8182bef4 100644
--- a/pcap/pcap.h
+++ b/pcap/pcap.h
@@ -69,6 +69,49 @@
#ifndef lib_pcap_pcap_h
#define lib_pcap_pcap_h
+/*
+ * Some software that uses libpcap/WinPcap/Npcap defines _MSC_VER before
+ * includeing pcap.h if it's not defined - and it defines it to 1500.
+ * (I'm looking at *you*, lwIP!)
+ *
+ * Attempt to detect this, and undefine _MSC_VER so that we can *reliably*
+ * use it to know what compiler is being used and, if it's Visual Studio,
+ * what version is being used.
+ */
+#if defined(_MSC_VER)
+ /*
+ * We assume here that software such as that doesn't define _MSC_FULL_VER
+ * as well and that it defines _MSC_VER with a value > 1200.
+ *
+ * DO NOT BREAK THESE ASSUMPTIONS. IF YOU FEEL YOU MUST DEFINE _MSC_VER
+ * WITH A COMPILER THAT'S NOT MICROSOFT'S C COMPILER, PLEASE CONTACT
+ * US SO THAT WE CAN MAKE IT SO THAT YOU DON'T HAVE TO DO THAT. THANK
+ * YOU.
+ *
+ * OK, is _MSC_FULL_VER defined?
+ */
+ #if !defined(_MSC_FULL_VER)
+ /*
+ * According to
+ *
+ * https://sourceforge.net/p/predef/wiki/Compilers/
+ *
+ * with "Visual C++ 6.0 Processor Pack"/Visual C++ 6.0 SP6 and
+ * later, _MSC_FULL_VER is defined, so either this is an older
+ * version of Visual C++ or it's not Visual C++ at all.
+ *
+ * For Visual C++ 6.0, _MSC_VER is defined as 1200.
+ */
+ #if _MSC_VER > 1200
+ /*
+ * If this is Visual C++, _MSC_FULL_VER should be defined, so we
+ * assume this isn't Visual C++, and undo the lie that it is.
+ */
+ #undef _MSC_VER
+ #endif
+ #endif
+#endif
+
#include <pcap/funcattrs.h>
#include <pcap/pcap-inttypes.h>
@@ -127,6 +170,7 @@ typedef struct pcap_addr pcap_addr_t;
* of the flags used in the printout phases of tcpdump.
* Many fields here are 32 bit ints so compilers won't insert unwanted
* padding; these files need to be interchangeable across architectures.
+ * Documentation: https://www.tcpdump.org/manpages/pcap-savefile.5.txt.
*
* Do not change the layout of this structure, in any way (this includes
* changes that only affect the length of fields in this structure).
@@ -154,7 +198,7 @@ typedef struct pcap_addr pcap_addr_t;
*
* Then supply the changes by forking the branch at
*
- * https://github.com/the-tcpdump-group/libpcap/issues
+ * https://github.com/the-tcpdump-group/libpcap/tree/master
*
* and issuing a pull request, so that future versions of libpcap and
* programs that use it (such as tcpdump) will be able to read your new
@@ -164,8 +208,8 @@ struct pcap_file_header {
bpf_u_int32 magic;
u_short version_major;
u_short version_minor;
- bpf_int32 thiszone; /* gmt to local correction */
- bpf_u_int32 sigfigs; /* accuracy of timestamps */
+ bpf_int32 thiszone; /* gmt to local correction; this is always 0 */
+ bpf_u_int32 sigfigs; /* accuracy of timestamps; this is always 0 */
bpf_u_int32 snaplen; /* max length saved portion of each pkt */
bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
};
@@ -201,7 +245,7 @@ typedef enum {
struct pcap_pkthdr {
struct timeval ts; /* time stamp */
bpf_u_int32 caplen; /* length of portion present */
- bpf_u_int32 len; /* length this packet (off wire) */
+ bpf_u_int32 len; /* length of this packet (off wire) */
};
/*
@@ -321,35 +365,91 @@ typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
#define PCAP_NETMASK_UNKNOWN 0xffffffff
/*
+ * Initialize pcap. If this isn't called, pcap is initialized to
+ * a mode source-compatible and binary-compatible with older versions
+ * that lack this routine.
+ */
+
+/*
+ * Initialization options.
+ * All bits not listed here are reserved for expansion.
+ *
+ * On UNIX-like systems, the local character encoding is assumed to be
+ * UTF-8, so no character encoding transformations are done.
+ *
+ * On Windows, the local character encoding is the local ANSI code page.
+ */
+#define PCAP_CHAR_ENC_LOCAL 0x00000000U /* strings are in the local character encoding */
+#define PCAP_CHAR_ENC_UTF_8 0x00000001U /* strings are in UTF-8 */
+
+PCAP_AVAILABLE_1_10
+PCAP_API int pcap_init(unsigned int, char *);
+
+/*
* We're deprecating pcap_lookupdev() for various reasons (not
* thread-safe, can behave weirdly with WinPcap). Callers
* should use pcap_findalldevs() and use the first device.
*/
+PCAP_AVAILABLE_0_4
PCAP_API char *pcap_lookupdev(char *)
PCAP_DEPRECATED(pcap_lookupdev, "use 'pcap_findalldevs' and use the first device");
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);
+PCAP_AVAILABLE_1_0
PCAP_API pcap_t *pcap_create(const char *, char *);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_set_snaplen(pcap_t *, int);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_set_promisc(pcap_t *, int);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_can_set_rfmon(pcap_t *);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_set_rfmon(pcap_t *, int);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_set_timeout(pcap_t *, int);
+
+PCAP_AVAILABLE_1_2
PCAP_API int pcap_set_tstamp_type(pcap_t *, int);
+
+PCAP_AVAILABLE_1_5
PCAP_API int pcap_set_immediate_mode(pcap_t *, int);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_set_buffer_size(pcap_t *, int);
+
+PCAP_AVAILABLE_1_5
PCAP_API int pcap_set_tstamp_precision(pcap_t *, int);
+
+PCAP_AVAILABLE_1_5
PCAP_API int pcap_get_tstamp_precision(pcap_t *);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_activate(pcap_t *);
+PCAP_AVAILABLE_1_2
PCAP_API int pcap_list_tstamp_types(pcap_t *, int **);
+
+PCAP_AVAILABLE_1_2
PCAP_API void pcap_free_tstamp_types(int *);
+
+PCAP_AVAILABLE_1_2
PCAP_API int pcap_tstamp_type_name_to_val(const char *);
+
+PCAP_AVAILABLE_1_2
PCAP_API const char *pcap_tstamp_type_val_to_name(int);
+
+PCAP_AVAILABLE_1_2
PCAP_API const char *pcap_tstamp_type_val_to_description(int);
#ifdef __linux__
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_set_protocol_linux(pcap_t *, int);
#endif
@@ -359,8 +459,7 @@ PCAP_API int pcap_set_protocol_linux(pcap_t *, int);
*
* A system that supports PCAP_TSTAMP_HOST is offering time stamps
* provided by the host machine, rather than by the capture device,
- * but not committing to any characteristics of the time stamp;
- * it will not offer any of the PCAP_TSTAMP_HOST_ subtypes.
+ * but not committing to any characteristics of the time stamp.
*
* PCAP_TSTAMP_HOST_LOWPREC is a time stamp, provided by the host machine,
* that's low-precision but relatively cheap to fetch; it's normally done
@@ -368,10 +467,15 @@ PCAP_API int pcap_set_protocol_linux(pcap_t *, int);
* fetch from system calls.
*
* PCAP_TSTAMP_HOST_HIPREC is a time stamp, provided by the host machine,
- * that's high-precision; it might be more expensive to fetch. It might
- * or might not be synchronized with the system clock, and might have
+ * that's high-precision; it might be more expensive to fetch. It is
+ * synchronized with the system clock.
+ *
+ * PCAP_TSTAMP_HOST_HIPREC_UNSYNCED is a time stamp, provided by the host
+ * machine, that's high-precision; it might be more expensive to fetch.
+ * It is not synchronized with the system clock, and might have
* problems with time stamps for packets received on different CPUs,
- * depending on the platform.
+ * depending on the platform. It might be more likely to be strictly
+ * monotonic than PCAP_TSTAMP_HOST_HIPREC.
*
* PCAP_TSTAMP_ADAPTER is a high-precision time stamp supplied by the
* capture device; it's synchronized with the system clock.
@@ -391,11 +495,12 @@ PCAP_API int pcap_set_protocol_linux(pcap_t *, int);
* the packet is received by the network adapter, due to batching
* of interrupts for packet arrival, queueing delays, etc..
*/
-#define PCAP_TSTAMP_HOST 0 /* host-provided, unknown characteristics */
-#define PCAP_TSTAMP_HOST_LOWPREC 1 /* host-provided, low precision */
-#define PCAP_TSTAMP_HOST_HIPREC 2 /* host-provided, high precision */
-#define PCAP_TSTAMP_ADAPTER 3 /* device-provided, synced with the system clock */
-#define PCAP_TSTAMP_ADAPTER_UNSYNCED 4 /* device-provided, not synced with the system clock */
+#define PCAP_TSTAMP_HOST 0 /* host-provided, unknown characteristics */
+#define PCAP_TSTAMP_HOST_LOWPREC 1 /* host-provided, low precision, synced with the system clock */
+#define PCAP_TSTAMP_HOST_HIPREC 2 /* host-provided, high precision, synced with the system clock */
+#define PCAP_TSTAMP_ADAPTER 3 /* device-provided, synced with the system clock */
+#define PCAP_TSTAMP_ADAPTER_UNSYNCED 4 /* device-provided, not synced with the system clock */
+#define PCAP_TSTAMP_HOST_HIPREC_UNSYNCED 5 /* host-provided, high precision, not synced with the system clock */
/*
* Time stamp resolution types.
@@ -406,13 +511,25 @@ PCAP_API int pcap_set_protocol_linux(pcap_t *, int);
#define PCAP_TSTAMP_PRECISION_MICRO 0 /* use timestamps with microsecond precision, default */
#define PCAP_TSTAMP_PRECISION_NANO 1 /* use timestamps with nanosecond precision */
+PCAP_AVAILABLE_0_4
PCAP_API pcap_t *pcap_open_live(const char *, int, int, int, char *);
+
+PCAP_AVAILABLE_0_6
PCAP_API pcap_t *pcap_open_dead(int, int);
+
+PCAP_AVAILABLE_1_5
PCAP_API pcap_t *pcap_open_dead_with_tstamp_precision(int, int, u_int);
+
+PCAP_AVAILABLE_1_5
PCAP_API pcap_t *pcap_open_offline_with_tstamp_precision(const char *, u_int, char *);
+
+PCAP_AVAILABLE_0_4
PCAP_API pcap_t *pcap_open_offline(const char *, char *);
+
#ifdef _WIN32
+ PCAP_AVAILABLE_1_5
PCAP_API pcap_t *pcap_hopen_offline_with_tstamp_precision(intptr_t, u_int, char *);
+
PCAP_API pcap_t *pcap_hopen_offline(intptr_t, char *);
/*
* If we're building libpcap, these are internal routines in savefile.c,
@@ -434,60 +551,153 @@ PCAP_API pcap_t *pcap_open_offline(const char *, char *);
pcap_hopen_offline(_get_osfhandle(_fileno(f)), b)
#endif
#else /*_WIN32*/
+ PCAP_AVAILABLE_1_5
PCAP_API pcap_t *pcap_fopen_offline_with_tstamp_precision(FILE *, u_int, char *);
+
+ PCAP_AVAILABLE_0_9
PCAP_API pcap_t *pcap_fopen_offline(FILE *, char *);
#endif /*_WIN32*/
+PCAP_AVAILABLE_0_4
PCAP_API void pcap_close(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_loop(pcap_t *, int, pcap_handler, u_char *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
+
+PCAP_AVAILABLE_0_4
PCAP_API const u_char *pcap_next(pcap_t *, struct pcap_pkthdr *);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
+
+PCAP_AVAILABLE_0_8
PCAP_API void pcap_breakloop(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_stats(pcap_t *, struct pcap_stat *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_setfilter(pcap_t *, struct bpf_program *);
+
+PCAP_AVAILABLE_0_9
PCAP_API int pcap_setdirection(pcap_t *, pcap_direction_t);
+
+PCAP_AVAILABLE_0_7
PCAP_API int pcap_getnonblock(pcap_t *, char *);
+
+PCAP_AVAILABLE_0_7
PCAP_API int pcap_setnonblock(pcap_t *, int, char *);
+
+PCAP_AVAILABLE_0_9
PCAP_API int pcap_inject(pcap_t *, const void *, size_t);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_sendpacket(pcap_t *, const u_char *, int);
+
+PCAP_AVAILABLE_1_0
PCAP_API const char *pcap_statustostr(int);
+
+PCAP_AVAILABLE_0_4
PCAP_API const char *pcap_strerror(int);
+
+PCAP_AVAILABLE_0_4
PCAP_API char *pcap_geterr(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API void pcap_perror(pcap_t *, const char *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_compile(pcap_t *, struct bpf_program *, const char *, int,
bpf_u_int32);
+
+PCAP_AVAILABLE_0_5
PCAP_API int pcap_compile_nopcap(int, int, struct bpf_program *,
const char *, int, bpf_u_int32);
+
+/* XXX - this took two arguments in 0.4 and 0.5 */
+PCAP_AVAILABLE_0_6
PCAP_API void pcap_freecode(struct bpf_program *);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_offline_filter(const struct bpf_program *,
const struct pcap_pkthdr *, const u_char *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_datalink(pcap_t *);
+
+PCAP_AVAILABLE_1_0
PCAP_API int pcap_datalink_ext(pcap_t *);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_list_datalinks(pcap_t *, int **);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_set_datalink(pcap_t *, int);
+
+PCAP_AVAILABLE_0_8
PCAP_API void pcap_free_datalinks(int *);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_datalink_name_to_val(const char *);
+
+PCAP_AVAILABLE_0_8
PCAP_API const char *pcap_datalink_val_to_name(int);
+
+PCAP_AVAILABLE_0_8
PCAP_API const char *pcap_datalink_val_to_description(int);
+
+PCAP_AVAILABLE_1_10
PCAP_API const char *pcap_datalink_val_to_description_or_dlt(int);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_snapshot(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_is_swapped(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_major_version(pcap_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_minor_version(pcap_t *);
+
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_bufsize(pcap_t *);
/* XXX */
+PCAP_AVAILABLE_0_4
PCAP_API FILE *pcap_file(pcap_t *);
+
+#ifdef _WIN32
+/*
+ * This probably shouldn't have been kept in WinPcap; most if not all
+ * UN*X code that used it won't work on Windows. We deprecate it; if
+ * anybody really needs access to whatever HANDLE may be associated
+ * with a pcap_t (there's no guarantee that there is one), we can add
+ * a Windows-only pcap_handle() API that returns the HANDLE.
+ */
+PCAP_AVAILABLE_0_4
+PCAP_API int pcap_fileno(pcap_t *)
+PCAP_DEPRECATED(pcap_fileno, "use 'pcap_handle'");
+#else /* _WIN32 */
+PCAP_AVAILABLE_0_4
PCAP_API int pcap_fileno(pcap_t *);
+#endif /* _WIN32 */
#ifdef _WIN32
PCAP_API int pcap_wsockinit(void);
#endif
+PCAP_AVAILABLE_0_4
PCAP_API pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);
+
#ifdef _WIN32
+ PCAP_AVAILABLE_0_9
PCAP_API pcap_dumper_t *pcap_dump_hopen(pcap_t *, intptr_t);
+
/*
* If we're building libpcap, this is an internal routine in sf-pcap.c, so
* we must not define it as a macro.
@@ -506,17 +716,35 @@ PCAP_API pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);
pcap_dump_hopen(p, _get_osfhandle(_fileno(f)))
#endif
#else /*_WIN32*/
+ PCAP_AVAILABLE_0_9
PCAP_API pcap_dumper_t *pcap_dump_fopen(pcap_t *, FILE *fp);
#endif /*_WIN32*/
+
+PCAP_AVAILABLE_1_7
PCAP_API pcap_dumper_t *pcap_dump_open_append(pcap_t *, const char *);
+
+PCAP_AVAILABLE_0_8
PCAP_API FILE *pcap_dump_file(pcap_dumper_t *);
+
+PCAP_AVAILABLE_0_9
PCAP_API long pcap_dump_ftell(pcap_dumper_t *);
+
+PCAP_AVAILABLE_1_9
PCAP_API int64_t pcap_dump_ftell64(pcap_dumper_t *);
+
+PCAP_AVAILABLE_0_8
PCAP_API int pcap_dump_flush(pcap_dumper_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API void pcap_dump_close(pcap_dumper_t *);
+
+PCAP_AVAILABLE_0_4
PCAP_API void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);
+PCAP_AVAILABLE_0_7
PCAP_API int pcap_findalldevs(pcap_if_t **, char *);
+
+PCAP_AVAILABLE_0_7
PCAP_API void pcap_freealldevs(pcap_if_t *);
/*
@@ -524,7 +752,7 @@ PCAP_API void pcap_freealldevs(pcap_if_t *);
* version string directly.
*
* On at least some UNIXes, if you import data from a shared library into
- * an program, the data is bound into the program binary, so if the string
+ * a program, the data is bound into the program binary, so if the string
* in the version of the library with which the program was linked isn't
* the same as the string in the version of the library with which the
* program is being run, various undesirable things may happen (warnings,
@@ -534,22 +762,9 @@ PCAP_API void pcap_freealldevs(pcap_if_t *);
*
* On Windows, the string is constructed at run time.
*/
+PCAP_AVAILABLE_0_8
PCAP_API const char *pcap_lib_version(void);
-/*
- * On at least some versions of NetBSD and QNX, we don't want to declare
- * bpf_filter() here, as it's also be declared in <net/bpf.h>, with a
- * different signature, but, on other BSD-flavored UN*Xes, it's not
- * declared in <net/bpf.h>, so we *do* want to declare it here, so it's
- * declared when we build pcap-bpf.c.
- */
-#if !defined(__NetBSD__) && !defined(__QNX__)
- PCAP_API u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
-#endif
-PCAP_API int bpf_validate(const struct bpf_insn *f, int len);
-PCAP_API char *bpf_image(const struct bpf_insn *, int);
-PCAP_API void bpf_dump(const struct bpf_program *, int);
-
#if defined(_WIN32)
/*
@@ -583,7 +798,10 @@ PCAP_API void bpf_dump(const struct bpf_program *, int);
PCAP_API HANDLE pcap_getevent(pcap_t *p);
+ PCAP_AVAILABLE_1_8
PCAP_API int pcap_oid_get_request(pcap_t *, bpf_u_int32, void *, size_t *);
+
+ PCAP_AVAILABLE_1_8
PCAP_API int pcap_oid_set_request(pcap_t *, bpf_u_int32, const void *, size_t *);
PCAP_API pcap_send_queue* pcap_sendqueue_alloc(u_int memsize);
@@ -626,8 +844,11 @@ PCAP_API void bpf_dump(const struct bpf_program *, int);
* UN*X definitions
*/
+ PCAP_AVAILABLE_0_8
PCAP_API int pcap_get_selectable_fd(pcap_t *);
- PCAP_API struct timeval *pcap_get_required_select_timeout(pcap_t *);
+
+ PCAP_AVAILABLE_1_9
+ PCAP_API const struct timeval *pcap_get_required_select_timeout(pcap_t *);
#endif /* _WIN32/MSDOS/UN*X */
@@ -660,14 +881,17 @@ PCAP_API void bpf_dump(const struct bpf_program *, int);
* - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol]
* - rpcap://host/devicename [opens the selected device available on a remote host]
* - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP]
- * - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged]
- * - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged]
+ * - adaptername [to open a local adapter; kept for compatibility, but it is strongly discouraged]
+ * - (NULL) [to open the first local adapter; kept for compatibility, but it is strongly discouraged]
*
* The formats allowed by the pcap_findalldevs_ex() are the following:
* - file://folder/ [lists all the files in the given folder]
* - rpcap:// [lists all local adapters]
* - rpcap://host:port/ [lists the devices available on a remote host]
*
+ * In all the above, "rpcaps://" can be substituted for "rpcap://" to enable
+ * SSL (if it has been compiled in).
+ *
* Referring to the 'host' and 'port' parameters, they can be either numeric or literal. Since
* IPv6 is fully supported, these are the allowed formats:
*
@@ -728,7 +952,7 @@ PCAP_API void bpf_dump(const struct bpf_program *, int);
#define PCAP_OPENFLAG_DATATX_UDP 0x00000002
/*
- * Specifies wheether the remote probe will capture its own generated
+ * Specifies whether the remote probe will capture its own generated
* traffic.
*
* In case the remote probe uses the same interface to capture traffic
@@ -797,7 +1021,7 @@ PCAP_API void bpf_dump(const struct bpf_program *, int);
#define RPCAP_RMTAUTH_PWD 1
/*
- * This structure keeps the information needed to autheticate the user
+ * This structure keeps the information needed to authenticate the user
* on a remote machine.
*
* The remote machine can either grant or refuse the access according
@@ -856,10 +1080,15 @@ struct pcap_rmtauth
* For opening a remote capture, pcap_open() is currently the only
* API available.
*/
+PCAP_AVAILABLE_1_9
PCAP_API pcap_t *pcap_open(const char *source, int snaplen, int flags,
int read_timeout, struct pcap_rmtauth *auth, char *errbuf);
+
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_createsrcstr(char *source, int type, const char *host,
const char *port, const char *name, char *errbuf);
+
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_parsesrcstr(const char *source, int *type, char *host,
char *port, char *name, char *errbuf);
@@ -882,6 +1111,7 @@ PCAP_API int pcap_parsesrcstr(const char *source, int *type, char *host,
* For listing remote capture devices, pcap_findalldevs_ex() is currently
* the only API available.
*/
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_findalldevs_ex(const char *source,
struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf);
@@ -952,6 +1182,7 @@ struct pcap_samp
/*
* New functions.
*/
+PCAP_AVAILABLE_1_9
PCAP_API struct pcap_samp *pcap_setsampling(pcap_t *p);
/*
@@ -961,12 +1192,24 @@ PCAP_API struct pcap_samp *pcap_setsampling(pcap_t *p);
/* Maximum length of an host name (needed for the RPCAP active mode) */
#define RPCAP_HOSTLIST_SIZE 1024
+PCAP_AVAILABLE_1_9
PCAP_API SOCKET pcap_remoteact_accept(const char *address, const char *port,
const char *hostlist, char *connectinghost,
struct pcap_rmtauth *auth, char *errbuf);
+
+PCAP_AVAILABLE_1_10
+PCAP_API SOCKET pcap_remoteact_accept_ex(const char *address, const char *port,
+ const char *hostlist, char *connectinghost,
+ struct pcap_rmtauth *auth, int uses_ssl, char *errbuf);
+
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_remoteact_list(char *hostlist, char sep, int size,
char *errbuf);
+
+PCAP_AVAILABLE_1_9
PCAP_API int pcap_remoteact_close(const char *host, char *errbuf);
+
+PCAP_AVAILABLE_1_9
PCAP_API void pcap_remoteact_cleanup(void);
#ifdef __cplusplus