Wireshark-dev: Re: [Wireshark-dev] Does lua provide something like range strings?

From: Richard Sharpe <realrichardsharpe@xxxxxxxxx>
Date: Tue, 9 Oct 2018 11:38:29 -0700
On Tue, Oct 9, 2018 at 7:14 AM Peter Wu <peter@xxxxxxxxxxxxx> wrote:
>
> Hi Richard,
>
> On Mon, Oct 08, 2018 at 10:59:35AM -0700, Richard Sharpe wrote:
> > I am wondering if the Lua interp in Wireshark provides the equivalent
> > of range strings?
> >
> > Does anyone know?
> >
> > I guess I could make the indexes strings, since they are associative
> > arrays anyway but looking up a value in a range would be difficult.
>
> There does not seem to be support for range strings, but it could be
> added. See value_string_from_table in epan/wslua/wslua_proto_field.c for
> an example.
>
> I suppose that the natural syntax would be:
>
>     local your_range_string = {
>         { 0, 24, "First quarter" },
>         { 25, 54, "Second quarter" },
>     };

Hmmm, I think it might need more than that:

#define WSLUA_OPTARG_ProtoField_new_VALUESTRING 4 /* A table
containing the text that
        corresponds to the values, or a table containing unit name for
the values if base is
        `base.UNIT_STRING`, or one of `frametype.NONE`,
`frametype.REQUEST`, `frametype.RESPONSE`,
        `frametype.ACK` or `frametype.DUP_ACK` if field type is
ftypes.FRAMENUM. */

The code handling a new ProtoField assumes that arg 4 is a ValueString
... there would have to be some way to indicate that it is a range
string.

The BASE field is field 5. We could have symbols ORed into that, I guess.

-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)(传说杜康是酒的发明者)