summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2004-12-30 02:10:24 +0000
committerGuy Harris <guy@alum.mit.edu>2004-12-30 02:10:24 +0000
commit0ccf418724aa221c786e8ac765a8cbe1fed8ac3d (patch)
tree1e4a380da3f190a7468ee2baa824b4e1ff58ac67
parent9d5c8771c1560425077117b33a06a9e8263062a9 (diff)
downloadwireshark-0ccf418724aa221c786e8ac765a8cbe1fed8ac3d.tar.gz
Add a "get_addr_name()" routine that takes an "address *" and attempts
to resolve it to a name. Fix up some const-pointer-to-non-const-pointer, and function-pointer-to-void-*, conversions. Fix some comments. svn path=/trunk/; revision=12863
-rw-r--r--epan/addr_resolv.c26
-rw-r--r--epan/addr_resolv.h24
-rw-r--r--epan/column-utils.c35
-rw-r--r--epan/dissectors/packet-aoe.c6
-rw-r--r--epan/prefs.c1
-rw-r--r--epan/tap.c4
-rw-r--r--epan/tap.h2
-rw-r--r--gtk/conversations_table.c33
-rw-r--r--gtk/hostlist_table.c22
-rw-r--r--util.c1
10 files changed, 79 insertions, 75 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c
index f31b72cbc1..1b4503859d 100644
--- a/epan/addr_resolv.c
+++ b/epan/addr_resolv.c
@@ -1869,6 +1869,32 @@ extern gchar *get_sctp_port(guint port)
} /* get_sctp_port */
+const gchar *get_addr_name(address *addr)
+{
+ guint32 ipv4_addr;
+ struct e_in6_addr ipv6_addr;
+
+ switch (addr->type) {
+
+ case AT_ETHER:
+ return get_ether_name(addr->data);
+
+ case AT_IPv4:
+ memcpy(&ipv4_addr, addr->data, sizeof ipv4_addr);
+ return get_hostname(ipv4_addr);
+
+ case AT_IPv6:
+ memcpy(&ipv6_addr.s6_addr, addr->data, sizeof ipv6_addr.s6_addr);
+ return get_hostname6(&ipv6_addr);
+
+ case AT_STRINGZ:
+ return addr->data;
+
+ default:
+ return NULL;
+ }
+}
+
extern gchar *get_ether_name(const guint8 *addr)
{
if (!(g_resolv_flags & RESOLV_MAC))
diff --git a/epan/addr_resolv.h b/epan/addr_resolv.h
index 05b6877e28..8c37ab3272 100644
--- a/epan/addr_resolv.h
+++ b/epan/addr_resolv.h
@@ -60,16 +60,34 @@ extern gchar *g_pipxnets_path;
/* Set the flags controlling what names to resolve */
extern void resolv_set_flags(guint32 flags);
-/* get_tcp_port returns the UDP port name or "%u" if not found */
+/*
+ * get_udp_port() returns the port name corresponding to that UDP port,
+ * or the port number as a string if not found.
+ */
extern gchar *get_udp_port(guint port);
-/* get_tcp_port returns the TCP port name or "%u" if not found */
+/*
+ * get_tcp_port() returns the port name corresponding to that TCP port,
+ * or the port number as a string if not found.
+ */
extern gchar *get_tcp_port(guint port);
-/* get_sctp_port returns the SCTP port name or "%u" if not found */
+/*
+ * get_sctp_port() returns the port name corresponding to that SCTP port,
+ * or the port number as a string if not found.
+ */
extern gchar *get_sctp_port(guint port);
/*
+ * For address types that support name resolution, and for AT_STRINGZ,
+ * "get_addr_name()" returns the name corresponding to the address,
+ * or a string for the address if not found.
+ *
+ * For other address types, it returns a null pointer.
+ */
+const gchar *get_addr_name(address *addr);
+
+/*
* Asynchronous host name lookup initialization, processing, and cleanup
*/
diff --git a/epan/column-utils.c b/epan/column-utils.c
index ecf245c6dc..8851fce7f1 100644
--- a/epan/column-utils.c
+++ b/epan/column-utils.c
@@ -574,7 +574,7 @@ static void
col_set_addr(packet_info *pinfo, int col, address *addr, gboolean is_res,
gboolean is_src)
{
- guint32 ipv4_addr;
+ const char *addr_string;
struct e_in6_addr ipv6_addr;
pinfo->cinfo->col_expr[col][0] = '\0';
@@ -582,37 +582,12 @@ col_set_addr(packet_info *pinfo, int col, address *addr, gboolean is_res,
if (addr->type == AT_NONE)
return; /* no address, nothing to do */
if (is_res) {
- switch (addr->type) {
-
- case AT_ETHER:
- strncpy(pinfo->cinfo->col_buf[col], get_ether_name(addr->data), COL_MAX_LEN);
- pinfo->cinfo->col_buf[col][COL_MAX_LEN - 1] = '\0';
- break;
-
- case AT_IPv4:
- memcpy(&ipv4_addr, addr->data, sizeof ipv4_addr);
- strncpy(pinfo->cinfo->col_buf[col], get_hostname(ipv4_addr), COL_MAX_LEN);
+ addr_string = get_addr_name(addr);
+ if (addr_string != NULL) {
+ strncpy(pinfo->cinfo->col_buf[col], addr_string, COL_MAX_LEN);
pinfo->cinfo->col_buf[col][COL_MAX_LEN - 1] = '\0';
- break;
-
- case AT_IPv6:
- memcpy(&ipv6_addr.s6_addr, addr->data, sizeof ipv6_addr.s6_addr);
- strncpy(pinfo->cinfo->col_buf[col], get_hostname6(&ipv6_addr), COL_MAX_LEN);
- pinfo->cinfo->col_buf[col][COL_MAX_LEN - 1] = '\0';
- break;
-
- case AT_STRINGZ:
- /* XXX - should be done in "address_to_str_buf()", but that routine
- doesn't know COL_MAX_LEN; it should be changed to take the
- maximum length as an argument. */
- strncpy(pinfo->cinfo->col_buf[col], addr->data, COL_MAX_LEN);
- pinfo->cinfo->col_buf[col][COL_MAX_LEN - 1] = '\0';
- break;
-
- default:
+ } else
address_to_str_buf(addr, pinfo->cinfo->col_buf[col]);
- break;
- }
} else {
switch (addr->type) {
diff --git a/epan/dissectors/packet-aoe.c b/epan/dissectors/packet-aoe.c
index 4fdb9e4d3a..0a6196a9da 100644
--- a/epan/dissectors/packet-aoe.c
+++ b/epan/dissectors/packet-aoe.c
@@ -202,7 +202,7 @@ ata_cmd_equal_matched(gconstpointer k1, gconstpointer k2)
static guint
ata_cmd_hash_unmatched(gconstpointer k)
{
- ata_info_t *key = (ata_info_t *)k;
+ const ata_info_t *key = (ata_info_t *)k;
return key->tag;
}
@@ -210,8 +210,8 @@ ata_cmd_hash_unmatched(gconstpointer k)
static gint
ata_cmd_equal_unmatched(gconstpointer k1, gconstpointer k2)
{
- ata_info_t *key1 = (ata_info_t *)k1;
- ata_info_t *key2 = (ata_info_t *)k2;
+ const ata_info_t *key1 = (ata_info_t *)k1;
+ const ata_info_t *key2 = (ata_info_t *)k2;
return (key1->tag==key2->tag)&&(key1->conversation==key2->conversation);
}
diff --git a/epan/prefs.c b/epan/prefs.c
index 9a41a77afd..35f9533420 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -38,6 +38,7 @@
#include <glib.h>
#include <epan/filesystem.h>
+#include <epan/address.h>
#include <epan/addr_resolv.h>
#include <epan/packet.h>
#include <epan/prefs.h>
diff --git a/epan/tap.c b/epan/tap.c
index e73ab58a6f..60ee22e195 100644
--- a/epan/tap.c
+++ b/epan/tap.c
@@ -61,7 +61,7 @@ typedef struct _tap_packet_t {
struct _tap_packet_t *next;
int tap_id;
packet_info *pinfo;
- void *tap_specific_data;
+ const void *tap_specific_data;
} tap_packet_t;
static tap_packet_t *tap_packet_list_free=NULL;
static tap_packet_t *tap_packet_list_queue=NULL;
@@ -167,7 +167,7 @@ register_tap(char *name)
to by the tap specific data pointer.
*/
void
-tap_queue_packet(int tap_id, packet_info *pinfo, void *tap_specific_data)
+tap_queue_packet(int tap_id, packet_info *pinfo, const void *tap_specific_data)
{
tap_packet_t *tpt;
diff --git a/epan/tap.h b/epan/tap.h
index 491ed3cae5..4ecb1fb91d 100644
--- a/epan/tap.h
+++ b/epan/tap.h
@@ -40,7 +40,7 @@ typedef void (*tap_draw_cb)(void *tapdata);
extern void tap_init(void);
extern int register_tap(char *name);
extern int find_tap_id(char *name);
-extern void tap_queue_packet(int tap_id, packet_info *pinfo, void *tap_specific_data);
+extern void tap_queue_packet(int tap_id, packet_info *pinfo, const void *tap_specific_data);
extern void tap_queue_init(epan_dissect_t *edt);
extern void tap_push_tapped_queue(epan_dissect_t *edt);
extern void reset_tap_listeners(void);
diff --git a/gtk/conversations_table.c b/gtk/conversations_table.c
index 325f19c470..7fa58b5ee6 100644
--- a/gtk/conversations_table.c
+++ b/gtk/conversations_table.c
@@ -944,25 +944,19 @@ ct_create_popup_menu(conversations_table *ct)
static void
draw_ct_table_address(conversations_table *ct, int conversation_idx)
{
- char *entry;
+ const char *entry;
char *port;
- address_type at;
guint32 pt;
int rownum;
rownum=gtk_clist_find_row_from_data(ct->table, (gpointer)conversation_idx);
- at = ct->conversations[conversation_idx].src_address.type;
- if(!ct->resolve_names) at = AT_NONE;
- switch(at) {
- case(AT_IPv4):
- entry=get_hostname((*(guint *)ct->conversations[conversation_idx].src_address.data));
- break;
- case(AT_ETHER):
- entry=get_ether_name(ct->conversations[conversation_idx].src_address.data);
- break;
- default:
+ if(!ct->resolve_names)
entry=address_to_str(&ct->conversations[conversation_idx].src_address);
+ else {
+ entry=get_addr_name(&ct->conversations[conversation_idx].src_address.data);
+ if(!entry)
+ entry=address_to_str(&ct->conversations[conversation_idx].src_address);
}
gtk_clist_set_text(ct->table, rownum, 0, entry);
@@ -981,17 +975,12 @@ draw_ct_table_address(conversations_table *ct, int conversation_idx)
}
gtk_clist_set_text(ct->table, rownum, 1, entry);
- at = ct->conversations[conversation_idx].dst_address.type;
- if(!ct->resolve_names) at = AT_NONE;
- switch(at) {
- case(AT_IPv4):
- entry=get_hostname((*(guint *)ct->conversations[conversation_idx].dst_address.data));
- break;
- case(AT_ETHER):
- entry=get_ether_name(ct->conversations[conversation_idx].dst_address.data);
- break;
- default:
+ if(!ct->resolve_names)
entry=address_to_str(&ct->conversations[conversation_idx].dst_address);
+ else {
+ entry=get_addr_name(&ct->conversations[conversation_idx].dst_address.data);
+ if(!entry)
+ entry=address_to_str(&ct->conversations[conversation_idx].dst_address);
}
gtk_clist_set_text(ct->table, rownum, 2, entry);
diff --git a/gtk/hostlist_table.c b/gtk/hostlist_table.c
index 84e3cc4589..afe9540c3e 100644
--- a/gtk/hostlist_table.c
+++ b/gtk/hostlist_table.c
@@ -194,8 +194,8 @@ hostlist_sort_column(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2)
char *text2 = NULL;
int i1, i2;
- GtkCListRow *row1 = (GtkCListRow *) ptr1;
- GtkCListRow *row2 = (GtkCListRow *) ptr2;
+ const GtkCListRow *row1 = ptr1;
+ const GtkCListRow *row2 = ptr2;
text1 = GTK_CELL_TEXT (row1->cell[clist->sort_column])->text;
text2 = GTK_CELL_TEXT (row2->cell[clist->sort_column])->text;
@@ -457,25 +457,19 @@ hostlist_create_popup_menu(hostlist_table *hl)
static void
draw_hostlist_table_address(hostlist_table *hl, int hostlist_idx)
{
- char *entry;
+ const char *entry;
char *port;
- address_type at;
guint32 pt;
int rownum;
rownum=gtk_clist_find_row_from_data(hl->table, (gpointer)hostlist_idx);
- at = hl->hosts[hostlist_idx].address.type;
- if(!hl->resolve_names) at = AT_NONE;
- switch(at) {
- case(AT_IPv4):
- entry=get_hostname((*(guint *)hl->hosts[hostlist_idx].address.data));
- break;
- case(AT_ETHER):
- entry=get_ether_name(hl->hosts[hostlist_idx].address.data);
- break;
- default:
+ if(!hl->resolve_names)
entry=address_to_str(&hl->hosts[hostlist_idx].address);
+ else {
+ entry=get_addr_name(&hl->hosts[hostlist_idx].address);
+ if(!entry)
+ entry=address_to_str(&hl->hosts[hostlist_idx].address);
}
gtk_clist_set_text(hl->table, rownum, 0, entry);
diff --git a/util.c b/util.c
index 807e5aa029..7b61d1b3f1 100644
--- a/util.c
+++ b/util.c
@@ -56,6 +56,7 @@ typedef int mode_t; /* for win32 */
#endif /* __MINGW32__ */
#endif /* HAVE_IO_H */
+#include <epan/address.h>
#include <epan/addr_resolv.h>
/*