]> The Tcpdump Group git mirrors - libpcap/blobdiff - pcap-int.h
pcap_create_interface() needs the interface name on Linux.
[libpcap] / pcap-int.h
index 04d2ba4bf85369f6f771b04a83c49e0cd0ce6a40..c5a030f5fe5435cebbe21bde9ecb873adb14423d 100644 (file)
 extern "C" {
 #endif
 
-#ifdef _WIN32
-/*
- * Make sure Packet32.h doesn't define BPF structures that we've
- * probably already defined as a result of including <pcap/pcap.h>.
- */
-#define BPF_MAJOR_VERSION
-#include <Packet32.h>
-extern CRITICAL_SECTION g_PcapCompileCriticalSection;
-#endif /* _WIN32 */
-
-#ifdef MSDOS
-#include <fcntl.h>
-#include <io.h>
+#if defined(_WIN32)
+  /*
+   * Make sure Packet32.h doesn't define BPF structures that we've
+   * probably already defined as a result of including <pcap/pcap.h>.
+   */
+  #define BPF_MAJOR_VERSION
+  #include <Packet32.h>
+#elif defined(MSDOS)
+  #include <fcntl.h>
+  #include <io.h>
 #endif
 
 #if (defined(_MSC_VER) && (_MSC_VER <= 1200)) /* we are compiling with Visual Studio 6, that doesn't support the LL suffix*/
@@ -111,7 +108,7 @@ extern CRITICAL_SECTION g_PcapCompileCriticalSection;
 #define MAXIMUM_SNAPLEN                262144
 
 struct pcap_opt {
-       char    *source;
+       char    *device;
        int     timeout;        /* timeout for buffering */
        int     buffer_size;
        int     promisc;
@@ -137,8 +134,8 @@ 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 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);
@@ -365,9 +362,7 @@ struct oneshot_userdata {
 #define min(a, b) ((a) > (b) ? (b) : (a))
 #endif
 
-/* XXX should these be in pcap.h? */
 int    pcap_offline_read(pcap_t *, int, pcap_handler, u_char *);
-int    pcap_read(pcap_t *, int cnt, pcap_handler, u_char *);
 
 #ifndef HAVE_STRLCPY
 #define strlcpy(x, y, z) \
@@ -452,7 +447,7 @@ int pcap_setnonblock_fd(pcap_t *p, int, char *);
  * by pcap_create routines.
  */
 pcap_t *pcap_create_interface(const char *, char *);
-pcap_t *pcap_create_common(const char *, char *, size_t);
+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 *);
@@ -462,27 +457,33 @@ int       pcap_check_activated(pcap_t *);
 /*
  * Internal interfaces for "pcap_findalldevs()".
  *
- * "pcap_findalldevs_interfaces()" finds interfaces using the
- * "standard" mechanisms (SIOCGIFCONF, "getifaddrs()", etc.).
- *
  * "pcap_platform_finddevs()" is a platform-dependent routine to
- * add devices not found by the "standard" mechanisms.
+ * find local network interfaces.
+ *
+ * "pcap_findalldevs_interfaces()" is a helper to find those interfaces
+ * using the "standard" mechanisms (SIOCGIFCONF, "getifaddrs()", etc.).
  *
  * "pcap_add_if()" adds an interface to the list of interfaces, for
  * use by various "find interfaces" routines.
  */
-int    pcap_findalldevs_interfaces(pcap_if_t **, char *);
 int    pcap_platform_finddevs(pcap_if_t **, char *);
-int    add_addr_to_iflist(pcap_if_t **, const char *, u_int, struct sockaddr *,
-           size_t, struct sockaddr *, size_t, struct sockaddr *, size_t,
-           struct sockaddr *, size_t, char *);
+#if !defined(_WIN32) && !defined(MSDOS)
+int    pcap_findalldevs_interfaces(pcap_if_t **, char *,
+           int (*)(const char *));
+#endif
+int    add_addr_to_iflist(pcap_if_t **, const char *, bpf_u_int32,
+           struct sockaddr *, size_t, struct sockaddr *, size_t,
+           struct sockaddr *, size_t, struct sockaddr *, size_t, 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);
-int    pcap_add_if(pcap_if_t **, const char *, u_int, const char *, char *);
-struct sockaddr *dup_sockaddr(struct sockaddr *, size_t);
-int    add_or_find_if(pcap_if_t **, pcap_if_t **, const char *, u_int,
+int    pcap_add_if(pcap_if_t **, const char *, bpf_u_int32, const char *,
+           char *);
+int    add_or_find_if(pcap_if_t **, pcap_if_t **, const char *, bpf_u_int32,
            const char *, char *);
+#ifndef _WIN32
+bpf_u_int32 if_flags_to_pcap_flags(const char *, u_int);
+#endif
 
 /*
  * Internal interfaces for "pcap_open_offline()".