There's no "enable name resolution in captures" preference in Ethereal,

and never was - there's only an Ethereal-wide "enable name resolution"
preference.  Name it just "name_resolve".

Replace all tests of "g_resolving_actif" with tests of
"prefs.name_resolv", and replace all code that sets "g_resolving_actif"
with code that sets "prefs.name_resolv", so that the setting of
"prefs.name_resolv" actually affects whether names are resolved or not.

svn path=/trunk/; revision=3300
This commit is contained in:
Guy Harris 2001-04-15 03:37:16 +00:00
parent 38b8932fd0
commit f8c9764894
11 changed files with 63 additions and 52 deletions

View File

@ -1,7 +1,7 @@
/* resolv.c
* Routines for network object lookup
*
* $Id: resolv.c,v 1.8 2001/04/02 09:41:54 guy Exp $
* $Id: resolv.c,v 1.9 2001/04/15 03:37:15 guy Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@ -82,6 +82,8 @@
#include "resolv.h"
#include "filesystem.h"
#include "prefs.h"
#define EPATH_ETHERS "/etc/ethers"
#define EPATH_IPXNETS "/etc/ipxnets"
#define EPATH_MANUF DATAFILE_DIR "/manuf"
@ -154,8 +156,6 @@ static int ipxnet_resolution_initialized = 0;
* Global variables (can be changed in GUI sections)
*/
int g_resolving_actif = 1; /* routines are active by default */
gchar *g_ethers_path = EPATH_ETHERS;
gchar *g_pethers_path = NULL; /* "$HOME"/EPATH_PERSONAL_ETHERS */
gchar *g_ipxnets_path = EPATH_IPXNETS;
@ -220,7 +220,7 @@ static guchar *serv_name_lookup(guint port, port_type proto)
tp->addr = port;
tp->next = NULL;
if (!g_resolving_actif ||
if (!prefs.name_resolve ||
(servp = getservbyport(htons(port), serv_proto)) == NULL) {
/* unknown port */
sprintf(tp->name, "%d", port);
@ -279,7 +279,7 @@ static guchar *host_name_lookup(guint addr, gboolean *found)
tp->addr = addr;
tp->next = NULL;
if (g_resolving_actif) {
if (prefs.name_resolve) {
#ifdef AVOID_DNS_TIMEOUT
/* Quick hack to avoid DNS/YP timeout */
@ -319,7 +319,7 @@ static guchar *host_name_lookup6(struct e_in6_addr *addr, gboolean *found)
#ifdef INET6
struct hostent *hostp;
if (g_resolving_actif) {
if (prefs.name_resolve) {
#ifdef AVOID_DNS_TIMEOUT
/* Quick hack to avoid DNS/YP timeout */
@ -1036,7 +1036,7 @@ extern guchar *get_hostname(guint addr)
{
gboolean found;
if (!g_resolving_actif)
if (!prefs.name_resolve)
return ip_to_str((guint8 *)&addr);
return host_name_lookup(addr, &found);
@ -1047,7 +1047,7 @@ extern const guchar *get_hostname6(struct e_in6_addr *addr)
gboolean found;
#ifdef INET6
if (!g_resolving_actif)
if (!prefs.name_resolve)
return ip6_to_str(addr);
if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MULTICAST(addr))
return ip6_to_str(addr);
@ -1100,7 +1100,7 @@ extern guchar *get_udp_port(guint port)
static gchar str[3][MAXNAMELEN];
static gchar *cur;
if (!g_resolving_actif) {
if (!prefs.name_resolve) {
if (cur == &str[0][0]) {
cur = &str[1][0];
} else if (cur == &str[1][0]) {
@ -1121,7 +1121,7 @@ extern guchar *get_tcp_port(guint port)
static gchar str[3][MAXNAMELEN];
static gchar *cur;
if (!g_resolving_actif) {
if (!prefs.name_resolve) {
if (cur == &str[0][0]) {
cur = &str[1][0];
} else if (cur == &str[1][0]) {
@ -1142,7 +1142,7 @@ extern guchar *get_sctp_port(guint port)
static gchar str[3][MAXNAMELEN];
static gchar *cur;
if (!g_resolving_actif) {
if (!prefs.name_resolve) {
if (cur == &str[0][0]) {
cur = &str[1][0];
} else if (cur == &str[1][0]) {
@ -1160,7 +1160,7 @@ extern guchar *get_sctp_port(guint port)
extern guchar *get_ether_name(const guint8 *addr)
{
if (!g_resolving_actif)
if (!prefs.name_resolve)
return ether_to_str((guint8 *)addr);
if (!eth_resolution_initialized) {
@ -1184,7 +1184,7 @@ guchar *get_ether_name_if_known(const guint8 *addr)
/* Initialize ether structs if we're the first
* ether-related function called */
if (!g_resolving_actif)
if (!prefs.name_resolve)
return NULL;
if (!eth_resolution_initialized) {
@ -1236,7 +1236,7 @@ guchar *get_ether_name_if_known(const guint8 *addr)
extern guint8 *get_ether_addr(const guchar *name)
{
/* force resolution (do not check g_resolving_actif) */
/* force resolution (do not check prefs.name_resolve) */
if (!eth_resolution_initialized) {
initialize_ethers();
@ -1268,7 +1268,7 @@ extern void add_ether_byip(guint ip, const guint8 *eth)
extern const guchar *get_ipxnet_name(const guint32 addr)
{
if (!g_resolving_actif) {
if (!prefs.name_resolve) {
return ipxnet_to_str_punct(addr, '\0');
}
@ -1286,7 +1286,7 @@ extern guint32 get_ipxnet_addr(const guchar *name, gboolean *known)
guint32 addr;
gboolean success;
/* force resolution (do not check g_resolving_actif) */
/* force resolution (do not check prefs.name_resolve) */
if (!ipxnet_resolution_initialized) {
initialize_ipxnets();
@ -1306,12 +1306,12 @@ extern const guchar *get_manuf_name(const guint8 *addr)
static gchar *cur;
hashmanuf_t *manufp;
if (g_resolving_actif && !eth_resolution_initialized) {
if (prefs.name_resolve && !eth_resolution_initialized) {
initialize_ethers();
eth_resolution_initialized = 1;
}
if (!g_resolving_actif || ((manufp = manuf_name_lookup(addr)) == NULL)) {
if (!prefs.name_resolve || ((manufp = manuf_name_lookup(addr)) == NULL)) {
if (cur == &str[0][0]) {
cur = &str[1][0];
} else if (cur == &str[1][0]) {

View File

@ -1,7 +1,7 @@
/* resolv.h
* Definitions for network object lookup
*
* $Id: resolv.h,v 1.5 2001/04/02 09:41:54 guy Exp $
* $Id: resolv.h,v 1.6 2001/04/15 03:37:15 guy Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@ -34,7 +34,6 @@
/* global variables */
extern int g_resolving_actif;
extern gchar *g_ethers_path;
extern gchar *g_ipxnets_path;
extern gchar *g_manuf_path;

View File

@ -1,7 +1,7 @@
/* capture_dlg.c
* Routines for packet capture windows
*
* $Id: capture_dlg.c,v 1.40 2001/04/13 14:59:30 jfoster Exp $
* $Id: capture_dlg.c,v 1.41 2001/04/15 03:37:16 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -278,7 +278,7 @@ capture_prep_cb(GtkWidget *w, gpointer d)
resolv_cb = dlg_check_button_new_with_label_with_mnemonic(
"Enable _name resolution", accel_group);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.capture_name_resolve);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.name_resolve);
gtk_container_add(GTK_CONTAINER(main_vb), resolv_cb);
gtk_widget_show(resolv_cb);
@ -502,7 +502,7 @@ capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) {
prefs.capture_auto_scroll = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active;
prefs.capture_name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active;
prefs.name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active;
gtk_widget_destroy(GTK_WIDGET(parent_w));

View File

@ -1,7 +1,7 @@
/* display_opts.c
* Routines for packet display windows
*
* $Id: display_opts.c,v 1.19 2001/04/13 14:59:30 jfoster Exp $
* $Id: display_opts.c,v 1.20 2001/04/15 03:37:16 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -179,7 +179,7 @@ display_opt_cb(GtkWidget *w, gpointer d) {
button = dlg_check_button_new_with_label_with_mnemonic(
"Enable _name resolution", accel_group);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), prefs.capture_name_resolve);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), prefs.name_resolve);
gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_NAME_RESOLUTION_KEY,
button);
gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0);
@ -269,7 +269,7 @@ get_display_options(GtkWidget *parent_w)
button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w),
E_DISPLAY_NAME_RESOLUTION_KEY);
prefs.capture_name_resolve = (GTK_TOGGLE_BUTTON (button)->active);
prefs.name_resolve = (GTK_TOGGLE_BUTTON (button)->active);
}

View File

@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
* $Id: file_dlg.c,v 1.37 2001/04/09 22:35:23 gram Exp $
* $Id: file_dlg.c,v 1.38 2001/04/15 03:37:16 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -39,6 +39,7 @@
#include "globals.h"
#include "gtkglobals.h"
#include "prefs.h"
#include "resolv.h"
#include "keys.h"
#include "filter_prefs.h"
@ -97,7 +98,7 @@ file_open_cmd_cb(GtkWidget *w, gpointer data)
resolv_cb = dlg_check_button_new_with_label_with_mnemonic(
"Enable name resolution", NULL);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), g_resolving_actif);
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.name_resolve);
gtk_box_pack_end(GTK_BOX(GTK_FILE_SELECTION(file_open_w)->main_vbox),
resolv_cb, FALSE, FALSE, 5);
gtk_widget_show(resolv_cb);
@ -190,7 +191,7 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) {
/* Set the global resolving variable */
resolv_cb = gtk_object_get_data(GTK_OBJECT(w), E_FILE_RESOLVE_KEY);
g_resolving_actif = GTK_TOGGLE_BUTTON (resolv_cb)->active;
prefs.name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active;
/* We've crossed the Rubicon; get rid of the file selection box. */
gtk_widget_hide(GTK_WIDGET (fs));

View File

@ -1,6 +1,6 @@
/* main.c
*
* $Id: main.c,v 1.192 2001/04/13 14:59:30 jfoster Exp $
* $Id: main.c,v 1.193 2001/04/15 03:37:16 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -520,11 +520,11 @@ void expand_all_cb(GtkWidget *widget, gpointer data) {
void resolve_name_cb(GtkWidget *widget, gpointer data) {
if (cfile.protocol_tree) {
int tmp = prefs.capture_name_resolve;
prefs.capture_name_resolve = 1;
int tmp = prefs.name_resolve;
prefs.name_resolve = 1;
gtk_clist_clear ( GTK_CLIST(tree_view) );
proto_tree_draw(cfile.protocol_tree, tree_view);
prefs.capture_name_resolve = tmp;
prefs.name_resolve = tmp;
}
}
@ -988,7 +988,7 @@ main(int argc, char *argv[])
prefs->gui_font_name = g_strdup(optarg);
break;
case 'n': /* No name resolution */
prefs->capture_name_resolve = 0;
prefs->name_resolve = 0;
break;
case 'o': /* Override preference from command line */
switch (prefs_set_pref(optarg)) {

View File

@ -1,7 +1,7 @@
/* menu.c
* Menu routines
*
* $Id: menu.c,v 1.51 2001/04/13 14:59:30 jfoster Exp $
* $Id: menu.c,v 1.52 2001/04/15 03:37:16 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -400,7 +400,7 @@ set_menus_for_selected_packet(gboolean have_selected_packet)
set_menu_sensitivity("/Tools/Decode As...",
have_selected_packet && decode_as_ok());
set_menu_sensitivity("/Resolve Name",
have_selected_packet && !prefs.capture_name_resolve);
have_selected_packet && !prefs.name_resolve);
}
/* Enable or disable menu items based on whether a tree row is selected. */

View File

@ -1,7 +1,7 @@
/* ipproto.c
* Routines for converting IPv4 protocol/v6 nxthdr field into string
*
* $Id: ipproto.c,v 1.11 2001/04/13 18:51:32 guy Exp $
* $Id: ipproto.c,v 1.12 2001/04/15 03:37:13 guy Exp $
*
* Gilbert Ramirez <gram@xiexie.org>
*
@ -45,6 +45,7 @@
#include "globals.h"
#include "packet.h"
#include "prefs.h"
#include "resolv.h"
#include "packet-ip.h"
#include "packet-ipv6.h"
@ -105,7 +106,7 @@ const char *ipprotostr(int proto) {
goto ok;
#ifdef HAVE_GETPROTOBYNUMBER
if (g_resolving_actif) {
if (prefs.name_resolve) {
pe = getprotobynumber(proto);
if (pe) {
s = pe->p_name;

30
prefs.c
View File

@ -1,7 +1,7 @@
/* prefs.c
* Routines for handling preferences
*
* $Id: prefs.c,v 1.49 2001/04/13 14:59:28 jfoster Exp $
* $Id: prefs.c,v 1.50 2001/04/15 03:37:13 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -615,7 +615,7 @@ read_prefs(int *gpf_errno_return, char **gpf_path_return,
prefs.capture_prom_mode = 0;
prefs.capture_real_time = 0;
prefs.capture_auto_scroll = 0;
prefs.capture_name_resolve= 1;
prefs.name_resolve= 1;
}
@ -851,11 +851,20 @@ prefs_set_pref(char *prefarg)
#define PRS_GUI_MARKED_FG "gui.marked_frame.fg"
#define PRS_GUI_MARKED_BG "gui.marked_frame.bg"
/*
* This applies to more than just captures, so it's not "capture.name_resolve";
* "capture.name_resolve" is supported on input for backwards compatibility.
*
* It's not a preference for a particular part of Ethereal, it's used all
* over the place, so its name doesn't have two components.
*/
#define PRS_NAME_RESOLVE "name_resolve"
#define PRS_CAP_NAME_RESOLVE "capture.name_resolve"
/* values for the capture dialog box */
#define PRS_CAP_REAL_TIME "capture.real_time_update"
#define PRS_CAP_PROM_MODE "capture.prom_mode"
#define PRS_CAP_AUTO_SCROLL "capture.auto_scroll"
#define PRS_CAP_NAME_RESOLVE "capture.name_resolve"
#define RED_COMPONENT(x) ((((x) >> 16) & 0xff) * 65535 / 255)
#define GREEN_COMPONENT(x) ((((x) >> 8) & 0xff) * 65535 / 255)
@ -1000,8 +1009,9 @@ set_pref(gchar *pref_name, gchar *value)
} else if (strcmp(pref_name, PRS_CAP_AUTO_SCROLL) == 0) {
prefs.capture_auto_scroll = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
} else if (strcmp(pref_name, PRS_CAP_NAME_RESOLVE) == 0) {
prefs.capture_name_resolve = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
} else if (strcmp(pref_name, PRS_NAME_RESOLVE) == 0 ||
strcmp(pref_name, PRS_CAP_NAME_RESOLVE) == 0) {
prefs.name_resolve = ((strcmp(value, "TRUE") == 0)?TRUE:FALSE);
} else {
/* To which module does this preference belong? */
@ -1327,6 +1337,10 @@ write_prefs(char **pf_path_return)
(prefs.gui_marked_bg.green * 255 / 65535),
(prefs.gui_marked_bg.blue * 255 / 65535));
fprintf(pf, "\n# Resolve addresses to names? TRUE/FALSE\n");
fprintf(pf, PRS_NAME_RESOLVE ": %s\n",
prefs.name_resolve == TRUE ? "TRUE" : "FALSE");
/* write the capture options */
fprintf(pf, "\n# Capture in promiscuous mode? TRUE/FALSE\n");
fprintf(pf, PRS_CAP_PROM_MODE ": %s\n",
@ -1340,10 +1354,6 @@ write_prefs(char **pf_path_return)
fprintf(pf, PRS_CAP_AUTO_SCROLL ": %s\n",
prefs.capture_auto_scroll == TRUE ? "TRUE" : "FALSE");
fprintf(pf, "\n# resolve names during capture? TRUE/FALSE\n");
fprintf(pf, PRS_CAP_NAME_RESOLVE ": %s\n",
prefs.capture_name_resolve == TRUE ? "TRUE" : "FALSE");
g_list_foreach(modules, write_module_prefs, pf);
fclose(pf);
@ -1392,7 +1402,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->capture_prom_mode = src->capture_prom_mode;
dest->capture_real_time = src->capture_real_time;
dest->capture_auto_scroll = src->capture_auto_scroll;
dest->capture_name_resolve = src->capture_name_resolve;
dest->name_resolve = src->name_resolve;
}

View File

@ -1,7 +1,7 @@
/* prefs.h
* Definitions for preference handling routines
*
* $Id: prefs.h,v 1.28 2001/04/13 14:59:28 jfoster Exp $
* $Id: prefs.h,v 1.29 2001/04/15 03:37:13 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -50,10 +50,10 @@ typedef struct _e_prefs {
gchar *gui_font_name;
color_t gui_marked_fg;
color_t gui_marked_bg;
gboolean name_resolve;
gboolean capture_prom_mode;
gboolean capture_real_time;
gboolean capture_auto_scroll;
gboolean capture_name_resolve;
} e_prefs;

View File

@ -1,6 +1,6 @@
/* tethereal.c
*
* $Id: tethereal.c,v 1.78 2001/04/11 05:24:08 guy Exp $
* $Id: tethereal.c,v 1.79 2001/04/15 03:37:13 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -391,7 +391,7 @@ main(int argc, char *argv[])
line_buffered = TRUE;
break;
case 'n': /* No name resolution */
g_resolving_actif = 0;
prefs->name_resolve = 0;
break;
case 'o': /* Override preference from command line */
switch (prefs_set_pref(optarg)) {