aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-12-18 20:36:36 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-12-18 20:36:36 +0000
commitca5a7ce28f4e5a0537b8d1dabd9fdb9ef4417556 (patch)
tree3ed202a78766b8199616a6892c5ac778b12f441f
parentcce755b79eb99b2d5b3cc8fbb5f0887613abf15b (diff)
Use the WinPcap version of pcap_datalink_val_to_description if it's
present. Add an entry for DLT_PPI in case it's not. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@31316 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r--Makefile.nmake1
-rw-r--r--capture-wpcap.c36
-rw-r--r--config.h.win321
-rw-r--r--config.nmake2
4 files changed, 38 insertions, 2 deletions
diff --git a/Makefile.nmake b/Makefile.nmake
index dc361f06a7..920b87b877 100644
--- a/Makefile.nmake
+++ b/Makefile.nmake
@@ -352,6 +352,7 @@ config.h : config.h.win32 config.nmake
-e "s/@HAVE_PCAP_FINDALLDEVS@/$(PCAP_FINDALLDEVS_CONFIG)/" \
-e "s/@HAVE_PCAP_DATALINK_NAME_TO_VAL@/$(PCAP_DATALINK_NAME_TO_VAL_CONFIG)/" \
-e "s/@HAVE_PCAP_DATALINK_VAL_TO_NAME@/$(PCAP_DATALINK_VAL_TO_NAME_CONFIG)/" \
+ -e "s/@HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION@/$(PCAP_DATALINK_VAL_TO_DESCRIPTION_CONFIG)/" \
-e "s/@HAVE_PCAP_BREAKLOOP@/$(PCAP_BREAKLOOP_CONFIG)/" \
-e "s/@HAVE_REMOTE@/$(PCAP_HAVE_REMOTE_CONFIG)/" \
-e "s/@HAVE_PCAP_REMOTE@/$(PCAP_REMOTE_CONFIG)/" \
diff --git a/capture-wpcap.c b/capture-wpcap.c
index 584e989cdf..4d5deb7f0e 100644
--- a/capture-wpcap.c
+++ b/capture-wpcap.c
@@ -79,6 +79,9 @@ static int (*p_pcap_datalink_name_to_val) (const char *);
#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME
static const char *(*p_pcap_datalink_val_to_name) (int);
#endif
+#ifdef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION
+static const char *(*p_pcap_datalink_val_to_description) (int);
+#endif
#ifdef HAVE_PCAP_BREAKLOOP
static void (*p_pcap_breakloop) (pcap_t *);
#endif
@@ -155,6 +158,9 @@ load_wpcap(void)
#ifdef HAVE_PCAP_DATALINK_VAL_TO_NAME
SYM(pcap_datalink_val_to_name, TRUE),
#endif
+#ifdef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION
+ SYM(pcap_datalink_val_to_description, TRUE),
+#endif
#ifdef HAVE_PCAP_BREAKLOOP
/*
* We don't try to work around the lack of this at
@@ -371,7 +377,7 @@ pcap_freealldevs(pcap_if_t *a)
}
#endif
-#if defined(HAVE_PCAP_DATALINK_NAME_TO_VAL) || defined(HAVE_PCAP_DATALINK_VAL_TO_NAME)
+#if defined(HAVE_PCAP_DATALINK_NAME_TO_VAL) || defined(HAVE_PCAP_DATALINK_VAL_TO_NAME) || defined(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION)
/*
* Table of DLT_ types, names, and descriptions, for use if the version
* of WinPcap we have installed lacks "pcap_datalink_name_to_val()"
@@ -465,9 +471,12 @@ static struct dlt_choice dlt_choices[] = {
#ifdef DLT_HDLC
DLT_CHOICE(DLT_HDLC, "Cisco HDLC"),
#endif
+#ifdef DLT_PPI
+ DLT_CHOICE(DLT_PPI, "Per-Packet Information"),
+#endif
DLT_CHOICE_SENTINEL
};
-#endif /* defined(HAVE_PCAP_DATALINK_NAME_TO_VAL) || defined(HAVE_PCAP_DATALINK_VAL_TO_NAME) */
+#endif /* defined(HAVE_PCAP_DATALINK_NAME_TO_VAL) || defined(HAVE_PCAP_DATALINK_VAL_TO_NAME) || defined(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION */
#ifdef HAVE_PCAP_DATALINK_NAME_TO_VAL
int
@@ -544,6 +553,29 @@ pcap_datalink_val_to_name(int dlt)
}
#endif
+#ifdef HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION
+const char *
+pcap_datalink_val_to_description(int dlt)
+{
+ int i;
+
+ g_assert(has_wpcap);
+
+ if (p_pcap_datalink_val_to_description != NULL)
+ return p_pcap_datalink_val_to_description(dlt);
+ else {
+ /*
+ * We don't have it in WinPcap; do it ourselves.
+ */
+ for (i = 0; dlt_choices[i].name != NULL; i++) {
+ if (dlt_choices[i].dlt == dlt)
+ return (dlt_choices[i].description);
+ }
+ return NULL;
+ }
+}
+#endif
+
#ifdef HAVE_PCAP_BREAKLOOP
void pcap_breakloop(pcap_t *a)
{
diff --git a/config.h.win32 b/config.h.win32
index 73de28204a..73607cb6fd 100644
--- a/config.h.win32
+++ b/config.h.win32
@@ -53,6 +53,7 @@
@HAVE_PCAP_FINDALLDEVS@
@HAVE_PCAP_DATALINK_NAME_TO_VAL@
@HAVE_PCAP_DATALINK_VAL_TO_NAME@
+@HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION@
@HAVE_LIBWIRESHARKDLL@
@HAVE_PCAP_LIST_DATALINKS@
diff --git a/config.nmake b/config.nmake
index 49994d6922..46b8c38cbd 100644
--- a/config.nmake
+++ b/config.nmake
@@ -938,6 +938,7 @@ WINPCAP_CONFIG=^#define HAVE_LIBPCAP 1
PCAP_FINDALLDEVS_CONFIG=^#define HAVE_PCAP_FINDALLDEVS 1
PCAP_DATALINK_NAME_TO_VAL_CONFIG=^#define HAVE_PCAP_DATALINK_NAME_TO_VAL 1
PCAP_DATALINK_VAL_TO_NAME_CONFIG=^#define HAVE_PCAP_DATALINK_VAL_TO_NAME 1
+PCAP_DATALINK_VAL_TO_DESCRIPTION_CONFIG=^#define HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION 1
# PCAP_BREAKLOOP won't have any benefit on Win32, but breaks compatibility with 3.0
PCAP_BREAKLOOP_CONFIG=
!ELSE
@@ -946,6 +947,7 @@ WINPCAP_CONFIG=
PCAP_FINDALLDEVS_CONFIG=
PCAP_DATALINK_NAME_TO_VAL_CONFIG=
PCAP_DATALINK_VAL_TO_NAME_CONFIG=
+PCAP_DATALINK_VAL_TO_DESCRIPTION_CONFIG=
PCAP_BREAKLOOP_CONFIG=
!ENDIF