On Fri, May 8, 2015 at 3:09 PM, Guy Harris <g...@alum.mit.edu> wrote: > > On May 8, 2015, at 7:06 AM, "John Dill" <john.d...@greenfieldeng.com> wrote: > >>> Message: 3 >>> Date: Thu, 7 May 2015 11:29:22 -0700 >>> From: Guy Harris <g...@alum.mit.edu> >>> To: Developer support list for Wireshark <wireshark-dev@wireshark.org> >>> Subject: Re: [Wireshark-dev] proto.h extension >>> Message-ID: <cf2e7490-f023-49c2-8383-6c1a1394b...@alum.mit.edu> >>> Content-Type: text/plain; charset=iso-8859-1 >>> >>> On May 7, 2015, at 8:13 AM, "John Dill" <john.d...@greenfieldeng.com> wrote: >>> >>>> I have a couple of extensions that I created for the Wireshark baseline >>> that we're using (1.10.x). The diffs to proto.h and proto.c show the code >>> changes to add a couple of features that I've found useful, unit strings >>> and hiding the bits for bitmask header fields. >>>> >>>> http://codepad.org/KTGdEL1t >>> >>> You need more than >>> >>> /* Following constants have to be ORed with a base_display_e when >>> dissector >>> * want to control aspects of the display string for a >>> header_field_info */ >>> >>> as a comment there - you need comments explaining what each of those flags >>> actually *does*. >> >> Guy, >> >> Sorry it wasn't clear. Starting from this snippet... >> >> /* >> * BASE_UNIT_STRING - Append a unit string to the numeric value > > That one's reasonable; I've thought of a similar option. > >> * >> * When active, Wireshark will append a unit string declared as a >> * simple 'char *' for the 'strings' to the numeric value. > > You might want to, instead, have it be a structure with a pair of strings, so > that if the field has the value 1, you can print the singular rather than the > plural, e.g.: > > struct unit_names { > char *singular; /* name to use for 1 unit */ > char *plural; /* name to use for < 1 or > 1 units */ > }; > > struct unit_names feet { > "foot", > "feet" > }; > > { > &hf_MFD_State_Data_Slew_Elevation_Ch1, > { > "Slew_Elevation_Ch1", > "ndo.MFD_State_Data.Slew_Elevation_Ch1", > FT_FLOAT, > BASE_NONE | BASE_UNIT_STRING, > &feet, > 0x0, > NULL, > HFILL > } > }, > > (For floating-point numbers, "1 unit" means "*exactly* 1 unit", i.e. an exact > floating-point comparison with 1x2^0.) > > We could either > > 1) require that both be non-null > > or > > 2) assume that, if the plural is null, you can pluralize using the > standard rules of English. > > Does anybody have a preference there? > > As the last word of the last item in the list above indicates, that limits > the output to English; however, the same applies to, for example > > { &hf_ip_hdr_len, > { "Header Length", "ip.hdr_len", FT_UINT8, BASE_DEC, > NULL, 0x0F, NULL, HFILL }}, > > and I don't expect to see the full names of every single field in Wireshark: > > $ ./tshark -G fields | wc -l > 151035 > > to be translated to any other language any time soon, and it also applies to > > static const value_string ipopt_timestamp_flag_vals[] = { > {IPOPT_TS_TSONLY, "Time stamps only" }, > {IPOPT_TS_TSANDADDR, "Time stamp and address" }, > {IPOPT_TS_PRESPEC, "Time stamps for prespecified addresses"}, > {0, NULL }}; > > and translating all value_string tables would also be difficult. > > So should we think about localization of the packet summary and detail fields > (which would, I suspect, be a huge project), and possibly leave the unit > strings open for localization, or not? > >> /* >> * BASE_NO_BITMASK_DISPLAY - Hide the bitfield display of a data >> * element. >> * >> * In Wireshark, any time the 'bitmask' argument is non-zero, a >> * bitfield display showing the location of 1's and 0's is >> * display is shown. In certain situations, the display of >> * bitmask fields next to non-bitmask fields is quite jarring >> * because the display of these bitfields do not align the >> * data elements in an easy to scan column. >> * >> * 1010 .... Data Element 1 >> * .... 0101 Data Element 2 >> * Data Element 3 > > Presumably that would be used by people who don't care enough about the > individual bits of the octet(s) to be willing to sacrifice that for having > the elements line up. > > That might depend on the protocol, with protocols doing more bit-packing > being more likely to have a mix of octet-aligned and non-octet-aligned > fields. Presumably avionics has some low-bit-rate links and needs to do more > bit-packing; I think some telephony protocols have the same issue - that > might be why ASN.1 PER was created. > > So is this something that should be done on a per-field basis, as a > preference, or both?
It would be simpler and smarter if we just accounted for the fact when aligning fields: if a field does not have a bitmask, but something above/below it (in the same tree) does then indent it with the appropriate number of spaces. ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe