summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-03-02 09:33:52 -0500
committerAnders Broman <a.broman58@gmail.com>2015-03-03 07:19:42 +0000
commit1a54112c1d437d48c7dee4d7d37aeeab0b3507d8 (patch)
treeb50d71d5baf56d51b956b9f11cfa63f7f1ad881e
parent43fd878c4e4d726dd4604ade4c0548eed783c4f3 (diff)
downloadwireshark-1a54112c1d437d48c7dee4d7d37aeeab0b3507d8.tar.gz
Add tvb_get_ether_name
This is mostly to reduce tvb_get_ptr calls that were used to pass into get_ether_name. Some optimizations were made to packet-ieee80211.c in the process of conversion. Change-Id: I81d3c65d4c09a15237fc287c2e989eb6e6936b1f Reviewed-on: https://code.wireshark.org/review/7492 Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--debian/libwireshark0.symbols1
-rw-r--r--epan/addr_resolv.c6
-rw-r--r--epan/addr_resolv.h3
-rw-r--r--epan/dissectors/packet-bootp.c2
-rw-r--r--epan/dissectors/packet-ieee80211.c289
-rw-r--r--epan/dissectors/packet-ubertooth.c2
6 files changed, 90 insertions, 213 deletions
diff --git a/debian/libwireshark0.symbols b/debian/libwireshark0.symbols
index e411afab2a..728304377c 100644
--- a/debian/libwireshark0.symbols
+++ b/debian/libwireshark0.symbols
@@ -1320,6 +1320,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
tvb_get_bits@Base 1.9.1
tvb_get_const_stringz@Base 1.9.1
tvb_get_ds_tvb@Base 1.9.1
+ tvb_get_ether_name@Base 1.99.3
tvb_get_gint40@Base 1.99.2
tvb_get_gint48@Base 1.99.2
tvb_get_gint56@Base 1.99.2
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c
index f71da50d2c..9002ad7940 100644
--- a/epan/addr_resolv.c
+++ b/epan/addr_resolv.c
@@ -3016,6 +3016,12 @@ get_ether_name(const guint8 *addr)
} /* get_ether_name */
+gchar *
+tvb_get_ether_name(tvbuff_t *tvb, gint offset)
+{
+ return get_ether_name(tvb_get_ptr(tvb, offset, 6));
+}
+
/* Look for a (non-dummy) ether name in the hash, and return it if found.
* If it's not found, simply return NULL.
*/
diff --git a/epan/addr_resolv.h b/epan/addr_resolv.h
index 068a741460..d6ac3a559e 100644
--- a/epan/addr_resolv.h
+++ b/epan/addr_resolv.h
@@ -173,6 +173,9 @@ WS_DLL_PUBLIC const gchar* get_hostname6(const struct e_in6_addr *ad);
"%02x:%02x:%02x:%02x:%02x:%02x" */
WS_DLL_PUBLIC gchar *get_ether_name(const guint8 *addr);
+/* Same as get_ether_name with tvb support */
+WS_DLL_PUBLIC gchar *tvb_get_ether_name(tvbuff_t *tvb, gint offset);
+
/* get_ether_name returns the logical name if found in ethers files else NULL */
gchar *get_ether_name_if_known(const guint8 *addr);
diff --git a/epan/dissectors/packet-bootp.c b/epan/dissectors/packet-bootp.c
index 0c1c255a70..ac58604446 100644
--- a/epan/dissectors/packet-bootp.c
+++ b/epan/dissectors/packet-bootp.c
@@ -5174,7 +5174,7 @@ dissect_bootp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
&& hlen == 6) {
col_add_fstr(pinfo->cinfo, COL_INFO, "Boot Request from %s (%s)",
tvb_arphrdaddr_to_str(tvb, 28, hlen, htype),
- get_ether_name(tvb_get_ptr(tvb, 28, hlen)));
+ tvb_get_ether_name(tvb, 28));
}
else {
col_add_fstr(pinfo->cinfo, COL_INFO, "Boot Request from %s",
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 6309c80a2e..510d2f3a8b 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -16351,22 +16351,22 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre
}
static void
-set_src_addr_cols(packet_info *pinfo, const guint8 *addr, const char *type)
+set_src_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
{
address ether_addr;
- SET_ADDRESS(&ether_addr, AT_ETHER, 6, addr);
+ TVB_SET_ADDRESS(&ether_addr, AT_ETHER, tvb, offset, 6);
col_add_fstr(pinfo->cinfo, COL_RES_DL_SRC, "%s (%s)",
address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
}
static void
-set_dst_addr_cols(packet_info *pinfo, const guint8 *addr, const char *type)
+set_dst_addr_cols(packet_info *pinfo, tvbuff_t *tvb, int offset, const char *type)
{
address ether_addr;
- SET_ADDRESS(&ether_addr, AT_ETHER, 6, addr);
+ TVB_SET_ADDRESS(&ether_addr, AT_ETHER, tvb, offset, 6);
col_add_fstr(pinfo->cinfo, COL_RES_DL_DST, "%s (%s)",
address_with_resolution_to_str(wmem_packet_scope(), &ether_addr), type);
@@ -16418,7 +16418,6 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
guint32 seq_number, frag_number;
gboolean more_frags;
const guint8 *src = NULL;
- const guint8 *dst = NULL;
const guint8 *bssid = NULL;
proto_item *ti = NULL;
proto_item *fcs_item = NULL;
@@ -16593,42 +16592,39 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
if (tree)
{
+ gchar *ra_da_name, *ta_sa_name, *bssid_name;
+
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ ra_da_name = tvb_get_ether_name(tvb, 4);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ ta_sa_name = tvb_get_ether_name(tvb, 10);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_bssid, tvb, 16, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
+ bssid_name = tvb_get_ether_name(tvb, 16);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6, bssid_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
/* add items for wlan.addr filter */
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6, bssid_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item (hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
@@ -16702,17 +16698,15 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
break;
/* Add address 1 */
- dst = tvb_get_ptr(tvb, 4, 6);
- set_dst_addr_cols(pinfo, dst, addr1_str);
+ set_dst_addr_cols(pinfo, tvb, 4, addr1_str);
if (tree) {
+ gchar* ether_name = tvb_get_ether_name(tvb, 4);
proto_tree_add_item(hdr_tree, addr1_hf, tvb, 4, 6, ENC_BIG_ENDIAN);
- hidden_item = proto_tree_add_string (hdr_tree, addr1_hf_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, addr1_hf_resolved, tvb, 4, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(dst));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
}
@@ -16735,11 +16729,10 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
}
if ((frame_type_subtype == CTRL_CFP_END) && tree) {
- src = tvb_get_ptr (tvb, offset, 6);
if(isDMG == TRUE)
- set_src_addr_cols(pinfo, src, "TA");
+ set_src_addr_cols(pinfo, tvb, offset, "TA");
else
- set_src_addr_cols(pinfo, src, "BSSID");
+ set_src_addr_cols(pinfo, tvb, offset, "BSSID");
if (tree) {
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
@@ -16754,26 +16747,23 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
case CTRL_CFP_END:
case CTRL_CFP_ENDACK:
{
- src = tvb_get_ptr (tvb, offset, 6);
- set_src_addr_cols(pinfo, src, "BSSID");
+ set_src_addr_cols(pinfo, tvb, offset, "BSSID");
if (tree) {
+ gchar* ether_name = tvb_get_ether_name(tvb, offset);
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6,
- get_ether_name(tvb_get_ptr(tvb, offset, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6,
- get_ether_name(src));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- offset += 6;
+ offset += 6;
}
break;
}
case CTRL_VHT_NDP_ANNC:
{
- src = tvb_get_ptr (tvb, offset, 6);
- set_src_addr_cols(pinfo, src, "TA");
+ set_src_addr_cols(pinfo, tvb, offset, "TA");
if (tree) {
guint16 sta_info;
guint8 len_fcs = 0;
@@ -16781,15 +16771,14 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
proto_item *dialog_token_item;
proto_tree *sta_info_tree;
proto_item *sta_info_item;
+ gchar* ether_name = tvb_get_ether_name(tvb, offset);
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6,
- get_ether_name(tvb_get_ptr(tvb, offset, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6,
- get_ether_name(src));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset += 6;
@@ -16841,16 +16830,15 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
case CTRL_RTS:
{
src = tvb_get_ptr (tvb, offset, 6);
- set_src_addr_cols(pinfo, src, "TA");
+ set_src_addr_cols(pinfo, tvb, offset, "TA");
if (tree) {
+ gchar* ether_name = tvb_get_ether_name(tvb, offset);
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6,
- get_ether_name(tvb_get_ptr(tvb, offset, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6,
- get_ether_name(src));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset += 6;
}
@@ -16865,8 +16853,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
case CTRL_BLOCK_ACK_REQ:
{
- src = tvb_get_ptr (tvb, offset, 6);
- set_src_addr_cols(pinfo, src, "TA");
+ set_src_addr_cols(pinfo, tvb, offset, "TA");
if (tree)
{
@@ -16874,15 +16861,14 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
guint8 block_ack_type;
proto_item *bar_parent_item;
proto_tree *bar_sub_tree;
+ gchar* ether_name = tvb_get_ether_name(tvb, offset);
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6,
- get_ether_name(tvb_get_ptr(tvb, offset, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6,
- get_ether_name(src));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset += 6;
@@ -16977,8 +16963,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
case CTRL_BLOCK_ACK:
{
- src = tvb_get_ptr (tvb, offset, 6);
- set_src_addr_cols(pinfo, src, "TA");
+ set_src_addr_cols(pinfo, tvb, offset, "TA");
if (tree)
{
@@ -16986,15 +16971,14 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
guint8 block_ack_type;
proto_item *ba_parent_item;
proto_tree *ba_sub_tree;
+ gchar* ether_name = tvb_get_ether_name(tvb, offset);
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_ta, tvb, offset, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6,
- get_ether_name(tvb_get_ptr(tvb, offset, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, offset, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6,
- get_ether_name(src));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, offset, 6, ether_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
offset += 6;
@@ -17209,13 +17193,11 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
break;
}
- src = tvb_get_ptr(tvb, src_offset, 6);
- dst = tvb_get_ptr(tvb, dst_offset, 6);
bssid = tvb_get_ptr(tvb, bssid_offset, 6);
- SET_ADDRESS(&pinfo->dl_src, wlan_address_type, 6, src);
+ TVB_SET_ADDRESS(&pinfo->dl_src, wlan_address_type, tvb, src_offset, 6);
COPY_ADDRESS_SHALLOW(&pinfo->src, &pinfo->dl_src);
- SET_ADDRESS(&pinfo->dl_dst, wlan_address_type, 6, dst);
+ TVB_SET_ADDRESS(&pinfo->dl_dst, wlan_address_type, tvb, dst_offset, 6);
COPY_ADDRESS_SHALLOW(&pinfo->dst, &pinfo->dl_dst);
/* for tap */
@@ -17235,177 +17217,63 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
/* Now if we have a tree we start adding stuff */
if (tree)
{
+ gchar *ra_da_name, *ta_sa_name, *bssid_name, *sa_name = NULL;
switch (addr_type)
{
- /* XXX - using the offsets set above, could all of these cases be collapsed into one? */
case DATA_ADDR_T1:
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_bssid, tvb, 16, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item (hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
-
- /* add items for wlan.addr filter */
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- break;
-
case DATA_ADDR_T2:
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_bssid, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 16, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item (hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
-
- /* add items for wlan.addr filter */
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- break;
-
case DATA_ADDR_T3:
+ case DATA_ADDR_T4:
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ ra_da_name = tvb_get_ether_name(tvb, 4);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 4, 6, ENC_NA);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ ta_sa_name = tvb_get_ether_name(tvb, 10);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 16, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
+ proto_tree_add_item (hdr_tree, hf_ieee80211_addr_bssid, tvb, 16, 6, ENC_NA);
+ bssid_name = tvb_get_ether_name(tvb, 16);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_bssid_resolved, tvb, 16, 6, bssid_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item (hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item (hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
+ if (addr_type == DATA_ADDR_T4)
+ {
+ proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 24, 6, ENC_NA);
+ sa_name = tvb_get_ether_name(tvb, 24);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 24, 6, sa_name);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
/* add items for wlan.addr filter */
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6, ra_da_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6, ta_sa_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6, bssid_name);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- break;
- case DATA_ADDR_T4:
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ra, tvb, 4, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ra_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_ta, tvb, 10, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_ta_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_da, tvb, 16, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- proto_tree_add_item (hdr_tree, hf_ieee80211_frag_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item (hdr_tree, hf_ieee80211_seq_number, tvb, 22, 2, ENC_LITTLE_ENDIAN);
- proto_tree_add_item (hdr_tree, hf_ieee80211_addr_sa, tvb, 24, 6, ENC_NA);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, 24, 6,
- get_ether_name(tvb_get_ptr(tvb, 24, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
-
- /* add items for wlan.addr filter */
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 4, 6,
- get_ether_name(tvb_get_ptr(tvb, 4, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 10, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 10, 6,
- get_ether_name(tvb_get_ptr(tvb, 10, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 16, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 16, 6,
- get_ether_name(tvb_get_ptr(tvb, 16, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 24, 6, ENC_NA);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
- hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 24, 6,
- get_ether_name(tvb_get_ptr(tvb, 24, 6)));
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ if (addr_type == DATA_ADDR_T4)
+ {
+ hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 24, 6, ENC_NA);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_resolved, tvb, 24, 6, sa_name);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+ }
break;
}
@@ -17415,8 +17283,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
case EXTENSION_FRAME: {
switch (frame_type_subtype) {
case EXTENSION_DMG_BEACON: {
- dst = tvb_get_ptr(tvb, 4, 6);
- set_dst_addr_cols(pinfo, dst, "BSSID");
+ set_dst_addr_cols(pinfo, tvb, 4, "BSSID");
if (tree) {
proto_tree_add_item(hdr_tree, hf_ieee80211_addr_bssid, tvb, 4, 6, ENC_NA);
hidden_item = proto_tree_add_item (hdr_tree, hf_ieee80211_addr, tvb, 4, 6, ENC_NA);
@@ -18118,11 +17985,11 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_item(subframe_tree, hf_ieee80211_addr_da, next_tvb, msdu_offset, 6, ENC_NA);
hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_da_resolved, tvb, msdu_offset, 6,
- get_ether_name(tvb_get_ptr(tvb, msdu_offset, 6)));
+ tvb_get_ether_name(tvb, msdu_offset));
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item(subframe_tree, hf_ieee80211_addr_sa, next_tvb, msdu_offset+6, 6, ENC_NA);
hidden_item = proto_tree_add_string (hdr_tree, hf_ieee80211_addr_sa_resolved, tvb, msdu_offset+6, 6,
- get_ether_name(tvb_get_ptr(tvb, msdu_offset+6, 6)));
+ tvb_get_ether_name(tvb, msdu_offset+6));
PROTO_ITEM_SET_HIDDEN(hidden_item);
proto_tree_add_item(subframe_tree, hf_ieee80211_amsdu_length, next_tvb, msdu_offset+12, 2, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-ubertooth.c b/epan/dissectors/packet-ubertooth.c
index 8b7fefdb6f..77836d4b89 100644
--- a/epan/dissectors/packet-ubertooth.c
+++ b/epan/dissectors/packet-ubertooth.c
@@ -1598,7 +1598,7 @@ dissect_ubertooth(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
case 56: /* BTLE Set Target */
proto_tree_add_item(main_tree, hf_bdaddr, tvb, offset, 6, ENC_NA);
col_append_fstr(pinfo->cinfo, COL_INFO, " - %s",
- get_ether_name((char *) tvb_memdup(wmem_packet_scope(), tvb, offset, 6)));
+ tvb_get_ether_name(tvb, offset));
offset += 6;
break;