diff options
author | Guy Harris <guy@alum.mit.edu> | 2004-12-30 02:10:24 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2004-12-30 02:10:24 +0000 |
commit | 0ccf418724aa221c786e8ac765a8cbe1fed8ac3d (patch) | |
tree | 1e4a380da3f190a7468ee2baa824b4e1ff58ac67 | |
parent | 9d5c8771c1560425077117b33a06a9e8263062a9 (diff) |
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.c | 26 | ||||
-rw-r--r-- | epan/addr_resolv.h | 24 | ||||
-rw-r--r-- | epan/column-utils.c | 35 | ||||
-rw-r--r-- | epan/dissectors/packet-aoe.c | 6 | ||||
-rw-r--r-- | epan/prefs.c | 1 | ||||
-rw-r--r-- | epan/tap.c | 4 | ||||
-rw-r--r-- | epan/tap.h | 2 | ||||
-rw-r--r-- | gtk/conversations_table.c | 33 | ||||
-rw-r--r-- | gtk/hostlist_table.c | 22 | ||||
-rw-r--r-- | util.c | 1 |
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); @@ -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> /* |