http://bugs.ethereal.com/bugzilla/show_bug.cgi?id=377
[obnox/wireshark/wip.git] / pcap-util.h
index 0ea23f51342e55efaeb65746c965a4a66bd65739..df1770ea7778aaf6d42b27c37ce1d0ba247ce612 100644 (file)
-/* pcap-util.h\r
- * Utility definitions for packet capture\r
- *\r
- * $Id: pcap-util.h,v 1.7 2004/06/12 07:47:13 guy Exp $\r
- *\r
- * Ethereal - Network traffic analyzer\r
- * By Gerald Combs <gerald@ethereal.com>\r
- * Copyright 1998 Gerald Combs\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
- */\r
-\r
-#ifndef __PCAP_UTIL_H__\r
-#define __PCAP_UTIL_H__\r
-\r
-#ifdef HAVE_LIBPCAP\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif /* __cplusplus */\r
-\r
-/*\r
- * XXX - this is also the traditional default snapshot size in\r
- * tcpdump - but, if IPv6 is enabled, it defaults to 96, to get an\r
- * IPv6 header + TCP + 22 extra bytes.\r
- *\r
- * Some libpcap versions for particular capture devices might happen\r
- * to impose a minimum, but it's not always 68.\r
- */\r
-#define MIN_PACKET_SIZE 68     /* minimum amount of packet data we can read */\r
-\r
-#define MAX_WIN_IF_NAME_LEN 511\r
-\r
-/*\r
- * The list of interfaces returned by "get_interface_list()" is\r
- * a list of these structures.\r
- */\r
-typedef struct {\r
-       char    *name;\r
-       char    *description;\r
-    GSList  *ip_addr;       /* containing guint32 values */\r
-    gboolean loopback;\r
-} if_info_t;\r
-\r
-GList *get_interface_list(int *err, char *err_str);\r
-\r
-/* Error values from "get_interface_list()". */\r
-#define        CANT_GET_INTERFACE_LIST 0       /* error getting list */\r
-#define        NO_INTERFACES_FOUND     1       /* list is empty */\r
-\r
-void free_interface_list(GList *if_list);\r
-\r
-/*\r
- * Get an error message string for a CANT_GET_INTERFACE_LIST error from\r
- * "get_interface_list()".\r
- */\r
-gchar *cant_get_if_list_error_message(const char *err_str);\r
-\r
-/*\r
- * The list of data link types returned by "get_pcap_linktype_list()" is\r
- * a list of these structures.\r
- */\r
-typedef struct {\r
-       int     dlt;\r
-       char    *name;\r
-       char    *description;\r
-} data_link_info_t;\r
-\r
-int get_pcap_linktype(pcap_t *pch, char *devname);\r
-GList *get_pcap_linktype_list(char *devname, char *err_buf);\r
-void free_pcap_linktype_list(GList *linktype_list);\r
-const char *set_pcap_linktype(pcap_t *pch, char *devname, int dlt);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* __cplusplus */\r
-\r
-#endif /* HAVE_LIBPCAP */\r
-\r
-/*\r
- * Append to a GString an indication of the version of libpcap/WinPcap\r
- * with which we were compiled, if we were, or an indication that we\r
- * weren't compiled with libpcap/WinPcap, if we weren't.\r
- */\r
-extern void get_compiled_pcap_version(GString *str);\r
-\r
-/*\r
- * Append to a GString an indication of the version of libpcap/WinPcap\r
- * with which we're running, or an indication that we're not running\r
- * with libpcap/WinPcap, if we were compiled with libpcap/WinPcap,\r
- * or nothing, if we weren't compiled with libpcap/WinPcap.\r
- */\r
-extern void get_runtime_pcap_version(GString *str);\r
-\r
-#endif /* __PCAP_UTIL_H__ */\r
+/* pcap-util.h
+ * Utility definitions for packet capture
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifndef __PCAP_UTIL_H__
+#define __PCAP_UTIL_H__
+
+#ifdef HAVE_LIBPCAP
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <epan/address.h>
+
+/*
+ * XXX - this is also the traditional default snapshot size in
+ * tcpdump - but, if IPv6 is enabled, it defaults to 96, to get an
+ * IPv6 header + TCP + 22 extra bytes.
+ *
+ * Some libpcap versions for particular capture devices might happen
+ * to impose a minimum, but it's not always 68.
+ */
+#define MIN_PACKET_SIZE 68     /* minimum amount of packet data we can read */
+
+#define MAX_WIN_IF_NAME_LEN 511
+
+/*
+ * The list of interfaces returned by "get_interface_list()" is
+ * a list of these structures.
+ */
+typedef struct {
+       char    *name;
+       char    *description;
+       GSList  *ip_addr;       /* containing address values */
+       gboolean loopback;
+} if_info_t;
+
+/*
+ * An address in the "ip_addr" list.
+ */
+typedef struct {
+       address_type type;
+       union {
+               guint32 ip4_addr;
+               guint8 ip6_addr[16];
+       } ip_addr;
+} if_addr_t;
+
+GList *get_interface_list(int *err, char *err_str);
+
+/* Error values from "get_interface_list()". */
+#define        CANT_GET_INTERFACE_LIST 0       /* error getting list */
+#define        NO_INTERFACES_FOUND     1       /* list is empty */
+
+void free_interface_list(GList *if_list);
+
+/*
+ * Get an error message string for a CANT_GET_INTERFACE_LIST error from
+ * "get_interface_list()".
+ */
+gchar *cant_get_if_list_error_message(const char *err_str);
+
+/*
+ * The list of data link types returned by "get_pcap_linktype_list()" is
+ * a list of these structures.
+ */
+typedef struct {
+       int     dlt;
+       char    *name;
+       char    *description;
+} data_link_info_t;
+
+int get_pcap_linktype(pcap_t *pch, char *devname);
+GList *get_pcap_linktype_list(char *devname, char *err_buf);
+void free_pcap_linktype_list(GList *linktype_list);
+const char *set_pcap_linktype(pcap_t *pch, char *devname, int dlt);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* HAVE_LIBPCAP */
+
+/*
+ * Append to a GString an indication of the version of libpcap/WinPcap
+ * with which we were compiled, if we were, or an indication that we
+ * weren't compiled with libpcap/WinPcap, if we weren't.
+ */
+extern void get_compiled_pcap_version(GString *str);
+
+/*
+ * Append to a GString an indication of the version of libpcap/WinPcap
+ * with which we're running, or an indication that we're not running
+ * with libpcap/WinPcap, if we were compiled with libpcap/WinPcap,
+ * or nothing, if we weren't compiled with libpcap/WinPcap.
+ */
+extern void get_runtime_pcap_version(GString *str);
+
+#endif /* __PCAP_UTIL_H__ */