Wireshark-dev: [Wireshark-dev] Patch to packet-eth.c to clarify address ig/lg bits
From: Stephen Fisher <stephentfisher@xxxxxxxxx>
Date: Thu, 24 Aug 2006 15:06:11 -0700
Attached is a patch to clarify the local/global (lg bit) and individual/group (ig bit) address bits in Ethernet MAC addresses. The current code identifies the ig bit as "multicast" although it is actually set for both multicast and broadcast addresses. Current display example: Destination: Broadcast (ff:ff:ff:ff:ff:ff) Address: Broadcast (ff:ff:ff:ff:ff:ff) .... ...1 .... .... .... .... = Multicast: This is a MULTICAST frame .... ..1. .... .... .... .... = Locally Administrated Address: This \ is NOT a factory default address New display example: Destination: Broadcast (ff:ff:ff:ff:ff:ff) Address: Broadcast (ff:ff:ff:ff:ff:ff) .... ...1 .... .... .... .... = IG bit: Group address \ (multicast/broadcast) .... ..1. .... .... .... .... = LG bit: Locally administered address Along with new descriptions in the bottom of screen field description. Steve
Index: epan/dissectors/packet-eth.c =================================================================== --- epan/dissectors/packet-eth.c (revision 19016) +++ epan/dissectors/packet-eth.c (working copy) @@ -49,8 +49,8 @@ static int hf_eth_len = -1; static int hf_eth_type = -1; static int hf_eth_addr = -1; -static int hf_eth_multicast = -1; -static int hf_eth_local_admin = -1; +static int hf_eth_ig = -1; +static int hf_eth_lg = -1; static int hf_eth_trailer = -1; static gint ett_ieee8023 = -1; @@ -64,13 +64,13 @@ #define ETH_HEADER_SIZE 14 -static const true_false_string multicast_tfs = { - "This is a MULTICAST frame", - "This is a UNICAST frame" +static const true_false_string ig_tfs = { + "Group address (multicast/broadcast)", + "Individual address (unicast)" }; -static const true_false_string local_admin_tfs = { - "This is NOT a factory default address", - "This is a FACTORY DEFAULT address" +static const true_false_string lg_tfs = { + "Locally administered address", + "Globally unique address" }; /* These are the Netware-ish names for the different Ethernet frame types. @@ -293,16 +293,16 @@ addr_tree = proto_item_add_subtree(addr_item, ett_addr); } proto_tree_add_ether(addr_tree, hf_eth_addr, tvb, 0, 6, dst_addr); - proto_tree_add_item(addr_tree, hf_eth_multicast, tvb, 0, 3, FALSE); - proto_tree_add_item(addr_tree, hf_eth_local_admin, tvb, 0, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_ig, tvb, 0, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_lg, tvb, 0, 3, FALSE); addr_item=proto_tree_add_ether(fh_tree, hf_eth_src, tvb, 6, 6, src_addr); if(addr_item){ addr_tree = proto_item_add_subtree(addr_item, ett_addr); } proto_tree_add_ether(addr_tree, hf_eth_addr, tvb, 6, 6, src_addr); - proto_tree_add_item(addr_tree, hf_eth_multicast, tvb, 6, 3, FALSE); - proto_tree_add_item(addr_tree, hf_eth_local_admin, tvb, 6, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_ig, tvb, 6, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_lg, tvb, 6, 3, FALSE); dissect_802_3(ehdr->type, is_802_2, tvb, ETH_HEADER_SIZE, pinfo, parent_tree, fh_tree, hf_eth_len, hf_eth_trailer, fcs_len); @@ -330,16 +330,16 @@ addr_tree = proto_item_add_subtree(addr_item, ett_addr); } proto_tree_add_ether(addr_tree, hf_eth_addr, tvb, 0, 6, dst_addr); - proto_tree_add_item(addr_tree, hf_eth_multicast, tvb, 0, 3, FALSE); - proto_tree_add_item(addr_tree, hf_eth_local_admin, tvb, 0, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_ig, tvb, 0, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_lg, tvb, 0, 3, FALSE); addr_item=proto_tree_add_ether(fh_tree, hf_eth_src, tvb, 6, 6, src_addr); if(addr_item){ addr_tree = proto_item_add_subtree(addr_item, ett_addr); } proto_tree_add_ether(addr_tree, hf_eth_addr, tvb, 6, 6, src_addr); - proto_tree_add_item(addr_tree, hf_eth_multicast, tvb, 6, 3, FALSE); - proto_tree_add_item(addr_tree, hf_eth_local_admin, tvb, 6, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_ig, tvb, 6, 3, FALSE); + proto_tree_add_item(addr_tree, hf_eth_lg, tvb, 6, 3, FALSE); ethertype(ehdr->type, tvb, ETH_HEADER_SIZE, pinfo, parent_tree, fh_tree, hf_eth_type, hf_eth_trailer, fcs_len); @@ -484,15 +484,15 @@ { "Trailer", "eth.trailer", FT_BYTES, BASE_NONE, NULL, 0x0, "Ethernet Trailer or Checksum", HFILL }}, - { &hf_eth_multicast, - { "Multicast", "eth.multicast", FT_BOOLEAN, 24, - VALS(&multicast_tfs), 0x010000, - "Whether this is a multicast frame or not", HFILL }}, + { &hf_eth_ig, + { "IG bit", "eth.ig", FT_BOOLEAN, 24, + VALS(&ig_tfs), 0x010000, + "Specifies if this is an individual (unicast) or group (broadcast/multicast) address", HFILL }}, - { &hf_eth_local_admin, - { "Locally Administrated Address", "eth.local_admin", FT_BOOLEAN, 24, - VALS(&local_admin_tfs), 0x020000, - "Whether this is a \"factory default\" address or not", HFILL }}, + { &hf_eth_lg, + { "LG bit", "eth.lg", FT_BOOLEAN, 24, + VALS(&lg_tfs), 0x020000, + "Specifies if this is a locally administered or globally unique (IEEE assigned) address", HFILL }}, }; static gint *ett[] = {
- Follow-Ups:
- Re: [Wireshark-dev] Patch to packet-eth.c to clarify address ig/lg bits
- From: ronnie sahlberg
- Re: [Wireshark-dev] Patch to packet-eth.c to clarify address ig/lg bits
- Prev by Date: [Wireshark-dev] [PATCH] RTP with MP2T payload
- Next by Date: [Wireshark-dev] wireshark 0.99.3 and images/toolbar/capture_ethernet_16.xpm
- Previous by thread: Re: [Wireshark-dev] [PATCH] RTP with MP2T payload
- Next by thread: Re: [Wireshark-dev] Patch to packet-eth.c to clarify address ig/lg bits
- Index(es):