the entire ISIS header into a structure - that way, if we run out of
packet data in the middle of the header, we at least dissect the stuff
for which we have packet data.
svn path=/trunk/; revision=3629
rather than calling the tvbuff accessor multiple times.
Use "proto_tree_add_item()" for fields whose values we don't care about
in the code.
BTW, apologies to Hannes Gredler - the changes with
More IS-IS updates.
HELLO message support in RSVP.
were from him, but I forgot to put that in the checkin message.
svn path=/trunk/; revision=3628
(the tvbuffified version is correct here; I'll check this in for
reference purposes, even though I plan to check in the tvbuffified
version later).
svn path=/trunk/; revision=3625
them supply a protocol ID, and have the code that calls the
subdissectors check if the protocol is enabled and, if it isn't, not
call the sub-dissector.
svn path=/trunk/; revision=3623
"pinfo->{len,captured_len}"-adjusting currently done by the IP
dissector, make the IP dissector call that rather than doing the work
itself, make the IPv6 dissector call that rather than just adjusting the
tvbuff length itself, and make the IPX dissector call that rather than
just adjusting "pi.{len,captured_len}" itself.
This cleans things up a bit, and causes trailers to be properly reported
in IPX-over-Ethernet frames.
svn path=/trunk/; revision=3621
specified to "--with-pcap", add that directory to the include file and
library search paths, so that you can use "--with-pcap=DIR" to search
for libpcap in a directory other than the standard ones (either because
it was installed somewhere other than under "/usr" or "/usr/local", or
because you want to use a special version you've installed rather than
the standard one).
svn path=/trunk/; revision=3611
don't bother fetching it if the action is E_DECODE_NO; that means we can
also avoid fetching the currently selected row if the action is
E_DECODE_NO, so the fact that we've cleared the selection if the action
is E_DECODE_NO doesn't matter.
svn path=/trunk/; revision=3606
row *before* calling "decode_simple()", as, if the "Do not decode" radio
button is selected, "decode_simple()" will clear the current selection.
svn path=/trunk/; revision=3605
standard header file, so we get the platform's declaration (which may
include, for example, "dllexport"-type declarations) rather than the
"workaround for platforms that lack it" declaration.
svn path=/trunk/; revision=3603
Don't bother doing the WEP processing and child-tvbuff construction for
frames other than management and data frames, as they have no payload to
be WEP-encrypted or dissected.
svn path=/trunk/; revision=3600
that you can open up that protocol without opening up the 802.11 MAC
header; this can save some screen real estate.
Make the tree item for all the WEP parameters a text item, rather than a
"string" field with a null string pointer, as "strings" with null string
pointers give the filtering code gastric distress.
Dissect the WEP initialization vector as an FT_UINT24 (as it's a 3-byte
field), and dissect the key ID as part of an FT_UINT8 (as it's in an
8-bit byte).
After dissecting the frame control field, dissect the rest of the header
in one switch statement, and then:
handle WEP-encrypted frames with common code for all frame
types;
handle the payload of other frames.
(If we can supply the relevant keys to Ethereal, we could perhaps add
code to decrypt the WEP payload and then dissect the decrypted payload
the same way we dissect un-encrypted payloads.)
svn path=/trunk/; revision=3599
#defining all the bits in the flags field, and using those #defines in
the macros to test the flag fields, the macros fot the data address
types, the value_string table for the data frame to/from DS
combinations, and the bitfields for the flag bits.
svn path=/trunk/; revision=3598
Make routines not used outside this module static.
Make "find_header_length()" return the correct value for management and
control frames.
svn path=/trunk/; revision=3590
integral value from a packet - "tvb_get_letohs()" can do that just fine.
Don't use "tvb_get_ptr()", casting the result to a "guint16 *", and
dereferencing that pointer, either: that doesn't handle byte order
correctly, and it may fail if the pointer isn't aligned on a 2-byte
boundary.
For that matter, don't just use "tvb_get_ptr()" and dereference the
result to get an 8-bit quantity.
Use "proto_tree_add_item()" in many places where it's possible.
Reuse the results of "tvb_get_ptr()" calls when possible.
Show the fragment number and sequence number in decimal - they're just
ordinals.
Fix the blurb for the sequence number field.
svn path=/trunk/; revision=3589
and put it under the top-level 802.11 protocol item, so you don't have
to open the frame control field to see it.
Rename the variable for it, and the value_string array for it, to
indicate that it's made out of the type and subtype fields.
svn path=/trunk/; revision=3587
instead of having four identical copies of that code in switch
statements, just handle all four of them with the same case.
svn path=/trunk/; revision=3586
for all Association Request frames, or all frames except for
Clear-to-send frames, or....
Compute the composed frame type early in the dissection process, and set
the Info column as soon as you've done that, rather than doing it in the
later switch statement.
svn path=/trunk/; revision=3585
protocol tree; not only is putting it at the top level a little weird,
it upsets the heck out of the protocol-statistics code, causing it to
abort. Put the fixed and tagged parameters under the top-level entry
for 802.11 (where one of the fixed-parameters entries already was).
Call the top-level item just "IEEE 802.11", not "IEEE 802.11 Header", as
it includes management-frame information.
svn path=/trunk/; revision=3584
interpretation of the address fields, in DATA_ADDR_T{1,2,3,4} format.
Clean up a bunch of other macros to enclose their argument in
parentheses.
Clean up "find_header_length()" - it only needs to take the frame
control field of the frame as an argument, and should just check whether
"COOK_ADDR_SELECTOR()" returns DATA_ADDR_T4.
"tofrom_ds" is a value_string table, not a true_false_string table, so
wrap it in "VALS()", not "TFS()".
Don't fetch the header length in N different places in the main
dissector - just fetch it once and use it throughout.
svn path=/trunk/; revision=3582