Wireshark 4.5.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions | Variables
addr_resolv.h File Reference
#include <epan/address.h>
#include <epan/tvbuff.h>
#include <wsutil/inet_cidr.h>
#include <epan/to_str.h>
#include <wiretap/wtap.h>
#include "ws_symbol_export.h"

Go to the source code of this file.

Classes

struct  _e_addr_resolve
 Flags to control name resolution. More...
 
struct  serv_port
 
struct  _resolved_name
 

Macros

#define MAXNAMELEN   64 /* max name length (most names: DNS labels, services, eth) */
 
#define MAXVLANNAMELEN   128 /* max vlan name length */
 
#define MAXDNSNAMELEN   256 /* max total length of a domain name in the DNS */
 
#define BASE_ENTERPRISES   BASE_CUSTOM
 
#define STRINGS_ENTERPRISES   CF_FUNC(enterprises_base_custom)
 
#define ADDR_RESOLV_MACADDR(at)    (((at)->type == AT_ETHER) || ((at)->type == AT_EUI64))
 
#define ADDR_RESOLV_NETADDR(at)    (((at)->type == AT_IPv4) || ((at)->type == AT_IPv6) || ((at)->type == AT_IPX))
 
#define TRIED_RESOLVE_ADDRESS   (1U<<0) /* name resolution is being/has been tried */
 
#define NAME_RESOLVED   (1U<<1) /* the name field contains a host name, not a printable address */
 
#define RESOLVED_ADDRESS_USED   (1U<<2) /* a get_hostname* call returned the host name */
 
#define STATIC_HOSTNAME   (1U<<3) /* do not update entries from hosts file with DNS responses */
 
#define NAME_RESOLVED_PREFIX   (1U<<4) /* name was generated from a prefix (e.g., OUI) instead of the entire address */
 
#define TRIED_OR_RESOLVED_MASK   (TRIED_RESOLVE_ADDRESS | NAME_RESOLVED)
 
#define USED_AND_RESOLVED_MASK   (NAME_RESOLVED | RESOLVED_ADDRESS_USED)
 

Typedefs

typedef struct _e_addr_resolve e_addr_resolve
 Flags to control name resolution.
 
typedef struct hashether hashether_t
 
typedef struct hasheui64 hasheui64_t
 
typedef struct hashwka hashwka_t
 
typedef struct hashmanuf hashmanuf_t
 
typedef struct serv_port serv_port_t
 
typedef struct _resolved_name resolved_name_t
 

Functions

WS_DLL_PUBLIC hashipv4_tnew_ipv4 (const unsigned addr)
 
WS_DLL_PUBLIC bool fill_dummy_ip4 (const unsigned addr, hashipv4_t *volatile tp)
 
WS_DLL_PUBLIC char * udp_port_to_display (wmem_allocator_t *allocator, unsigned port)
 
WS_DLL_PUBLIC char * tcp_port_to_display (wmem_allocator_t *allocator, unsigned port)
 
char * dccp_port_to_display (wmem_allocator_t *allocator, unsigned port)
 
WS_DLL_PUBLIC char * sctp_port_to_display (wmem_allocator_t *allocator, unsigned port)
 
WS_DLL_PUBLIC const char * serv_name_lookup (port_type proto, unsigned port)
 
WS_DLL_PUBLIC const char * enterprises_lookup (uint32_t value, const char *unknown_str)
 
WS_DLL_PUBLIC const char * try_enterprises_lookup (uint32_t value)
 
WS_DLL_PUBLIC void enterprises_base_custom (char *buf, uint32_t value)
 
WS_DLL_PUBLIC const char * try_serv_name_lookup (port_type proto, unsigned port)
 
WS_DLL_PUBLIC char * port_with_resolution_to_str (wmem_allocator_t *scope, port_type proto, unsigned port)
 
WS_DLL_PUBLIC int port_with_resolution_to_str_buf (char *buf, unsigned long buf_size, port_type proto, unsigned port)
 
void addr_resolve_pref_init (struct pref_module *nameres)
 
void addr_resolve_pref_apply (void)
 
WS_DLL_PUBLIC void disable_name_resolution (void)
 
WS_DLL_PUBLIC bool host_name_lookup_process (void)
 
WS_DLL_PUBLIC const char * get_hostname (const unsigned addr)
 
WS_DLL_PUBLIC char * get_hostname_wmem (wmem_allocator_t *allocator, const unsigned addr)
 
WS_DLL_PUBLIC const char * get_hostname6 (const ws_in6_addr *ad)
 
WS_DLL_PUBLIC char * get_hostname6_wmem (wmem_allocator_t *allocator, const ws_in6_addr *ad)
 
WS_DLL_PUBLIC const char * get_ether_name (const uint8_t *addr)
 
const char * get_hostname_ss7pc (const uint8_t ni, const uint32_t pc)
 
void fill_unresolved_ss7pc (const char *pc_addr, const uint8_t ni, const uint32_t pc)
 
WS_DLL_PUBLIC const char * tvb_get_ether_name (tvbuff_t *tvb, int offset)
 
const char * get_ether_name_if_known (const uint8_t *addr)
 
const char * get_manuf_name (const uint8_t *addr, size_t size)
 
WS_DLL_PUBLIC const char * get_manuf_name_if_known (const uint8_t *addr, size_t size)
 
const char * uint_get_manuf_name_if_known (const uint32_t oid)
 
WS_DLL_PUBLIC const char * tvb_get_manuf_name (tvbuff_t *tvb, int offset)
 
WS_DLL_PUBLIC const char * tvb_get_manuf_name_if_known (tvbuff_t *tvb, int offset)
 
const char * get_eui64_name (const uint8_t *addr)
 
char * eui64_to_display (wmem_allocator_t *allocator, const uint64_t addr)
 
char * get_ipxnet_name (wmem_allocator_t *allocator, const uint32_t addr)
 
char * get_vlan_name (wmem_allocator_t *allocator, const uint16_t id)
 
WS_DLL_PUBLIC unsigned get_hash_ether_status (hashether_t *ether)
 
WS_DLL_PUBLIC bool get_hash_ether_used (hashether_t *ether)
 
WS_DLL_PUBLIC char * get_hash_ether_hexaddr (hashether_t *ether)
 
WS_DLL_PUBLIC char * get_hash_ether_resolved_name (hashether_t *ether)
 
WS_DLL_PUBLIC bool get_hash_manuf_used (hashmanuf_t *manuf)
 
WS_DLL_PUBLIC char * get_hash_manuf_resolved_name (hashmanuf_t *manuf)
 
WS_DLL_PUBLIC bool get_hash_wka_used (hashwka_t *wka)
 
WS_DLL_PUBLIC char * get_hash_wka_resolved_name (hashwka_t *wka)
 
WS_DLL_PUBLIC void add_ipv4_name (const unsigned addr, const char *name, const bool static_entry)
 
WS_DLL_PUBLIC void add_ipv6_name (const ws_in6_addr *addr, const char *name, const bool static_entry)
 
WS_DLL_PUBLIC bool add_hosts_file (const char *hosts_file)
 
WS_DLL_PUBLIC bool add_ip_name_from_string (const char *addr, const char *name)
 
WS_DLL_PUBLIC resolved_name_tget_edited_resolved_name (const char *addr)
 
WS_DLL_PUBLIC addrinfo_lists_tget_addrinfo_list (void)
 
void add_ether_byip (const unsigned ip, const uint8_t *eth)
 
WS_DLL_PUBLIC bool get_host_ipaddr (const char *host, uint32_t *addrp)
 
WS_DLL_PUBLIC bool get_host_ipaddr6 (const char *host, ws_in6_addr *addrp)
 
WS_DLL_PUBLIC wmem_map_tget_manuf_hashtable (void)
 
WS_DLL_PUBLIC wmem_map_tget_wka_hashtable (void)
 
WS_DLL_PUBLIC wmem_map_tget_eth_hashtable (void)
 
WS_DLL_PUBLIC wmem_map_tget_serv_port_hashtable (void)
 
WS_DLL_PUBLIC wmem_map_tget_ipxnet_hash_table (void)
 
WS_DLL_PUBLIC wmem_map_tget_vlan_hash_table (void)
 
WS_DLL_PUBLIC wmem_map_tget_ipv4_hash_table (void)
 
WS_DLL_PUBLIC wmem_map_tget_ipv6_hash_table (void)
 
WS_DLL_PUBLIC void set_resolution_synchrony (bool synchronous)
 
WS_DLL_LOCAL void name_resolver_init (void)
 
WS_DLL_LOCAL void host_name_lookup_reset (void)
 
WS_DLL_LOCAL void addr_resolv_init (void)
 
WS_DLL_LOCAL void addr_resolv_cleanup (void)
 
WS_DLL_PUBLIC bool str_to_ip (const char *str, void *dst)
 
WS_DLL_PUBLIC bool str_to_ip6 (const char *str, void *dst)
 
WS_DLL_LOCAL bool str_to_eth (const char *str, char *eth_bytes)
 
WS_DLL_LOCAL unsigned ipv6_oat_hash (const void *key)
 
WS_DLL_LOCAL gboolean ipv6_equal (const void *v1, const void *v2)
 

Variables

WS_DLL_PUBLIC e_addr_resolve gbl_resolv_flags
 
char * g_ethers_path
 
char * g_ipxnets_path
 
char * g_pethers_path
 
char * g_pipxnets_path
 

Detailed Description

Definitions for network object lookup

Laurent Deniel laure.nosp@m.nt.d.nosp@m.eniel.nosp@m.@fre.nosp@m.e.fr

Wireshark - Network traffic analyzer By Gerald Combs geral.nosp@m.d@wi.nosp@m.resha.nosp@m.rk.o.nosp@m.rg Copyright 1998 Gerald Combs

SPDX-License-Identifier: GPL-2.0-or-later

Function Documentation

◆ add_hosts_file()

WS_DLL_PUBLIC bool add_hosts_file ( const char *  hosts_file)

Add an additional "hosts" file for IPv4 and IPv6 name resolution.

The file can be added before host_name_lookup_init() is called and will be re-read each time host_name_lookup_init() is called.

Parameters
hosts_fileAbsolute path to the hosts file.
Returns
true if the hosts file can be read.

◆ get_addrinfo_list()

WS_DLL_PUBLIC addrinfo_lists_t * get_addrinfo_list ( void  )

Get lists of host name to address mappings we know about.

The struct contains two g_lists one with hashipv4_t entries and one with hashipv6_t entries.

Returns
a struct with lists of known addresses(IPv4 and IPv6). May be NULL.

◆ get_host_ipaddr()

WS_DLL_PUBLIC bool get_host_ipaddr ( const char *  host,
uint32_t *  addrp 
)

Translates a string representing a hostname or dotted-decimal IPv4 address into a numeric IPv4 address value in network byte order. If compiled with c-ares, the request will wait a maximum of 250ms for the request to finish. Otherwise the wait time will be system-dependent, usually much longer. Immediately returns false for hostnames if network name resolution is disabled.

Parameters
[in]hostThe hostname.
[out]addrpThe numeric IPv4 address in network byte order.
Returns
true on success, false on failure, timeout.

◆ get_host_ipaddr6()

WS_DLL_PUBLIC bool get_host_ipaddr6 ( const char *  host,
ws_in6_addr addrp 
)

Translates a string representing a hostname or colon-hex IPv6 address into a numeric IPv6 address value in network byte order. If compiled with c-ares, the request will wait a maximum of 250ms for the request to finish. Otherwise the wait time will be system-dependent, usually much longer. Immediately returns false for hostnames if network name resolution is disabled.

Parameters
[in]hostThe hostname.
[out]addrpThe numeric IPv6 address in network byte order.
Returns
true on success, false on failure or timeout.

◆ host_name_lookup_process()

WS_DLL_PUBLIC bool host_name_lookup_process ( void  )

If we're using c-ares process outstanding host name lookups. This is called from a GLIB timeout in Wireshark and before processing each packet in the first pass of two-pass TShark.

Returns
True if any new objects have been resolved since the previous call. This can be used to trigger a display update, e.g. in Wireshark.