summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2012-11-23 22:28:06 +0000
committerGuy Harris <guy@alum.mit.edu>2012-11-23 22:28:06 +0000
commit7ed474bc27a468967bac44845116dc3ccde4d08b (patch)
treeeaf89d5aaea20c25a6bfe07ed03b6bdd57057f9f
parent6b97dfbfa7a1e93e4cc5f1616feadef5f6fd8dfe (diff)
downloadwireshark-7ed474bc27a468967bac44845116dc3ccde4d08b.tar.gz
Hoist all the friendly-name/vendor-description stuff up into
if_info_new(). svn path=/trunk/; revision=46159
-rw-r--r--capture-pcap-util-int.h4
-rw-r--r--capture-pcap-util-unix.c6
-rw-r--r--capture-pcap-util.c119
-rw-r--r--capture-wpcap.c10
4 files changed, 41 insertions, 98 deletions
diff --git a/capture-pcap-util-int.h b/capture-pcap-util-int.h
index 9689bb10e1..2ba3097fe2 100644
--- a/capture-pcap-util-int.h
+++ b/capture-pcap-util-int.h
@@ -25,8 +25,8 @@
#ifndef __PCAP_UTIL_INT_H__
#define __PCAP_UTIL_INT_H__
-extern if_info_t *if_info_new(const char *name, const char *friendly_name,
- const char *vendor_description, gboolean loopback);
+extern if_info_t *if_info_new(const char *name, const char *description,
+ gboolean loopback);
extern void if_info_add_address(if_info_t *if_info, struct sockaddr *addr);
#ifdef HAVE_PCAP_FINDALLDEVS
#ifdef HAVE_PCAP_REMOTE
diff --git a/capture-pcap-util-unix.c b/capture-pcap-util-unix.c
index 6149acc675..31def40f78 100644
--- a/capture-pcap-util-unix.c
+++ b/capture-pcap-util-unix.c
@@ -237,8 +237,7 @@ get_interface_list(int *err, char **err_str)
*/
loopback = ((ifrflags.ifr_flags & IFF_LOOPBACK) ||
strncmp(ifr->ifr_name, "lo", 2) == 0);
- if_info = if_info_new(ifr->ifr_name, loopback ? "Loopback" : NULL,
- NULL, loopback);
+ if_info = if_info_new(ifr->ifr_name, NULL, loopback);
if_info_add_address(if_info, &ifr->ifr_addr);
if (loopback)
il = g_list_append(il, if_info);
@@ -275,8 +274,7 @@ get_interface_list(int *err, char **err_str)
* It worked; we can use the "any" device.
*/
if_info = if_info_new("any",
- "Pseudo-device that captures on all interfaces",
- NULL, FALSE);
+ "Pseudo-device that captures on all interfaces", FALSE);
il = g_list_insert(il, if_info, -1);
pcap_close(pch);
}
diff --git a/capture-pcap-util.c b/capture-pcap-util.c
index b54ff05a9c..06eff2b06b 100644
--- a/capture-pcap-util.c
+++ b/capture-pcap-util.c
@@ -59,21 +59,42 @@
#endif
if_info_t *
-if_info_new(const char *name, const char *friendly_name,
- const char *vendor_description, gboolean loopback)
+if_info_new(const char *name, const char *description, gboolean loopback)
{
if_info_t *if_info;
if_info = (if_info_t *)g_malloc(sizeof (if_info_t));
if_info->name = g_strdup(name);
- if (friendly_name == NULL)
- if_info->friendly_name = NULL;
- else
- if_info->friendly_name = g_strdup(friendly_name);
- if (vendor_description == NULL)
- if_info->vendor_description = NULL;
- else
- if_info->vendor_description = g_strdup(vendor_description);
+#ifdef _WIN32
+ /*
+ * On Windows, the "description" is a vendor description,
+ * and the friendly name isn't returned by WinPcap.
+ * Fetch it ourselves.
+ */
+ get_windows_interface_friendlyname(name, &if_info->friendly_name);
+ if_info->vendor_description = g_strdup(description);
+#else
+ /*
+ * On UN*X, if there is a description, it's a friendly
+ * name, and there is no vendor description.
+ * If there's no description, fetch a friendly name
+ * if we can; if that fails, then, for a loopback
+ * interface, give it the friendly name "Loopback".
+ */
+ if_info->friendly_name = g_strdup(description);
+ if (if_info->friendly_name == NULL) {
+ if_info->friendly_name = get_unix_interface_friendly_name(name);
+ if (if_info->friendly_name == NULL) {
+ /*
+ * If this is a loopback interface, give it a
+ * "friendly name" of "Loopback".
+ */
+ if (loopback)
+ if_info->friendly_name = g_strdup("Loopback");
+ }
+ }
+ if_info->vendor_description = NULL;
+#endif
if_info->loopback = loopback;
if_info->addrs = NULL;
return if_info;
@@ -139,8 +160,6 @@ get_interface_list_findalldevs_ex(const char *source,
pcap_if_t *alldevs, *dev;
if_info_t *if_info;
char errbuf[PCAP_ERRBUF_SIZE];
- gboolean loopback;
- char *friendly_name;
if (pcap_findalldevs_ex((char *)source, auth, &alldevs, errbuf) == -1) {
*err = CANT_GET_INTERFACE_LIST;
@@ -160,41 +179,8 @@ get_interface_list_findalldevs_ex(const char *source,
}
for (dev = alldevs; dev != NULL; dev = dev->next) {
- /* Loopback flag */
- loopback = (dev->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE;
-
-#ifdef _WIN32
- /*
- * On Windows, the "description" is a vendor description,
- * and the friendly name isn't returned by WinPcap.
- * Fetch it ourselves.
- */
- get_windows_interface_friendlyname(dev->name, &friendly_name);
- if_info = if_info_new(dev->name, friendly_name,
- dev->description, loopback);
-#else
- /*
- * On UN*X, if there is a description, it's a friendly
- * name, and there is no vendor description.
- * If there's no description, fetch a friendly name
- * if we can; if that fails, then, for a loopback
- * interface, give it the friendly name "Loopback".
- */
- friendly_name = dev->description;
- if (friendly_name == NULL) {
- friendly_name = get_unix_interface_friendly_name(dev->name);
- if (friendly_name == NULL) {
- /*
- * If this is a loopback interface, give it a
- * "friendly name" of "Loopback".
- */
- if (loopback)
- friendly_name = g_strdup("Loopback");
- }
- }
- if_info = if_info_new(dev->name, friendly_name, NULL, loopback);
-#endif
- g_free(friendly_name);
+ if_info = if_info_new(dev->name, dev->description,
+ (dev->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE);
il = g_list_append(il, if_info);
if_info_ip(if_info, dev);
}
@@ -211,8 +197,6 @@ get_interface_list_findalldevs(int *err, char **err_str)
pcap_if_t *alldevs, *dev;
if_info_t *if_info;
char errbuf[PCAP_ERRBUF_SIZE];
- gboolean loopback;
- char *friendly_name;
if (pcap_findalldevs(&alldevs, errbuf) == -1) {
*err = CANT_GET_INTERFACE_LIST;
@@ -232,41 +216,8 @@ get_interface_list_findalldevs(int *err, char **err_str)
}
for (dev = alldevs; dev != NULL; dev = dev->next) {
- /* Loopback flag */
- loopback = (dev->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE;
-
-#ifdef _WIN32
- /*
- * On Windows, the "description" is a vendor description,
- * and the friendly name isn't returned by WinPcap.
- * Fetch it ourselves.
- */
- get_windows_interface_friendlyname(dev->name, &friendly_name);
- if_info = if_info_new(dev->name, friendly_name,
- dev->description, loopback);
-#else
- /*
- * On UN*X, if there is a description, it's a friendly
- * name, and there is no vendor description.
- * If there's no description, fetch a friendly name
- * if we can; if that fails, then, for a loopback
- * interface, give it the friendly name "Loopback".
- */
- friendly_name = dev->description;
- if (friendly_name == NULL) {
- friendly_name = get_unix_interface_friendly_name(dev->name);
- if (friendly_name == NULL) {
- /*
- * If this is a loopback interface, give it a
- * "friendly name" of "Loopback".
- */
- if (loopback)
- friendly_name = g_strdup("Loopback");
- }
- }
- if_info = if_info_new(dev->name, friendly_name, NULL, loopback);
-#endif
- g_free(friendly_name);
+ if_info = if_info_new(dev->name, dev->description,
+ (dev->flags & PCAP_IF_LOOPBACK) ? TRUE : FALSE);
il = g_list_append(il, if_info);
if_info_ip(if_info, dev);
}
diff --git a/capture-wpcap.c b/capture-wpcap.c
index 02f9a591fc..ea5f4f5aef 100644
--- a/capture-wpcap.c
+++ b/capture-wpcap.c
@@ -35,7 +35,6 @@
#include "capture_ifinfo.h"
#include "capture-pcap-util.h"
#include "capture-pcap-util-int.h"
-#include "capture_win_ifnames.h"
#include "capture-wpcap.h"
#include <wsutil/file_util.h>
@@ -723,7 +722,6 @@ get_interface_list(int *err, char **err_str)
char ascii_desc[MAX_WIN_IF_NAME_LEN + 1];
int i, j;
char errbuf[PCAP_ERRBUF_SIZE];
- char *friendly_name;
if (!has_wpcap) {
/*
@@ -825,10 +823,8 @@ get_interface_list(int *err, char **err_str)
}
ascii_name[j] = '\0';
i++;
- get_windows_interface_friendlyname(ascii_name, &friendly_name);
il = g_list_append(il,
- if_info_new(ascii_name, friendly_name, ascii_desc, FALSE));
- g_free(friendly_name);
+ if_info_new(ascii_name, ascii_desc, FALSE));
}
} else {
/*
@@ -847,10 +843,8 @@ get_interface_list(int *err, char **err_str)
* interface name, and "desc" points to
* that interface's description.
*/
- get_windows_interface_friendlyname(&win95names[i], &friendly_name);
il = g_list_append(il,
- if_info_new(&win95names[i], friendly_name, desc, FALSE));
- g_free(friendly_name);
+ if_info_new(&win95names[i], desc, FALSE));
/*
* Skip to the next description.