diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2011-05-08 10:23:53 +0000 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2011-05-08 10:23:53 +0000 |
commit | 7d317e553b95cf302d3acf3a9966c92c92f44c80 (patch) | |
tree | 064056433d1b4da25ce28966c34f0e2a1668feb3 /epan/addr_resolv.c | |
parent | 8428b08b1a11bfebd6a6039362eaa528727ac904 (diff) | |
download | wireshark-7d317e553b95cf302d3acf3a9966c92c92f44c80.tar.gz |
Add FT_EUI64 Field Type
* Remove proto_tree_add_eui64 function from 802.15.4 Dissector
* Replace print_eui64/print_eui64 by eui64_to_str/get_eui64_name
* Update Documentation (README.dev)
* Add new function in libwireshark.def
* Support of encoding for tvb_eui64_to_str
* Use FT_EUI64 for ICMPv6, CAPWAP, Zbee ... dissector
svn path=/trunk/; revision=37015
Diffstat (limited to 'epan/addr_resolv.c')
-rw-r--r-- | epan/addr_resolv.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c index 8b662f7bb8..1837241fdc 100644 --- a/epan/addr_resolv.c +++ b/epan/addr_resolv.c @@ -3051,6 +3051,54 @@ get_manuf_name_if_known(const guint8 *addr) } /* get_manuf_name_if_known */ +extern const gchar * +get_eui64_name(const guint64 addr_eui64) +{ + gchar *cur; + hashmanuf_t *mtp; + guint8 *addr = ep_alloc(8); + + /* Copy and convert the address to network byte order. */ + *(guint64 *)(addr) = pntoh64(&(addr_eui64)); + + if ((gbl_resolv_flags & RESOLV_MAC) && !eth_resolution_initialized) { + initialize_ethers(); + eth_resolution_initialized = TRUE; + } + + if (!(gbl_resolv_flags & RESOLV_MAC) || ((mtp = manuf_name_lookup(addr)) == NULL)) { + cur=ep_strdup_printf("%02x:%02x:%02x%02x:%02x:%02x%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]); + return cur; + } + cur=ep_strdup_printf("%s_%02x:%02x:%02x:%02x:%02x", mtp->name, addr[3], addr[4], addr[5], addr[6], addr[7]); + return cur; + +} /* get_eui64_name */ + + +const gchar * +get_eui64_name_if_known(const guint64 addr_eui64) +{ + gchar *cur; + hashmanuf_t *mtp; + guint8 *addr = ep_alloc(8); + + /* Copy and convert the address to network byte order. */ + *(guint64 *)(addr) = pntoh64(&(addr_eui64)); + + if (!eth_resolution_initialized) { + initialize_ethers(); + eth_resolution_initialized = TRUE; + } + + if ((mtp = manuf_name_lookup(addr)) == NULL) { + return NULL; + } + + cur=ep_strdup_printf("%s_%02x:%02x:%02x:%02x:%02x", mtp->name, addr[3], addr[4], addr[5], addr[6], addr[7]); + return cur; + +} /* get_eui64_name_if_known */ #ifdef HAVE_C_ARES #define GHI_TIMEOUT (250 * 1000) |