On Sun, Nov 07, 2010 at 10:46:47AM -0500, Hadriel Kaplan wrote:
> Howdy,
> The current packet-netflow.c dissector has a big "switch (pen_type) {...}" 
> block in dissect_v9_v10_pdu_data(), which looks up specific known 
> netflow/ipfix fields as it walks netflow v9/10 PDUs.
> 
> Unfortunately, it's a bit of a hack as pen_type is a guint64 and a switch 
> statement will silently cast it to an int.

>  I say "unfortunately", because I discovered to my chagrin that it's a 
> *signed* int, so any case statement can't use a constant greater than 
> 0x7fffffff, 
> which given how the current code works, means one can't have a Private 
> Enterprise Number greater than 0x7fff and use it to define a known field in 
> this code.
>  As it turns out, my Enterprise number is higher than that. (Cace 
> Technology's is just under it, which is why the current code works for Cace's 
> netflow fields)

Have you tried adding 'U' to your #define? i.e.

instead of just:
   #define VENDOR_FOO 0xdead

do:
   #define VENDOR_FOO 0xdeadU

or even better:
    #define VENDOR_FOO G_GUINT64_CONSTANT(0xdead) /* which should result in 
0xdeadLLU */
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to