"guint", and make the "labnum" variable to which its return value is
assigned a "guint".
"plen" in "decode_prefix_MP()" can have a 16-bit value assigned to it;
make it a "guint", not just a "guint8".
svn path=/trunk/; revision=9568
- fix a typo
- correctly hook-in capability notification subcodes
in the *bgpnotify_minor[] array
- add support for draft-ietf-idr-cease-subcode-02
svn path=/trunk/; revision=7756
draft-ietf-idr-bgp-ext-communities rather than
draft-ramachandra-bgp-ext-communities, and get rid of unused
MAX_SIZE_OF_EXT_COM_NAMES #define.
svn path=/trunk/; revision=7691
packets, and mark any stuff before the first BGP header as continuation
data.
Make the main loop for dissecting the BGP packets similar to the loop in
"tcp_dissect_pdus()" (if "tcp_dissect_pdus()" took a starting offset as
an argument, we could use it), so that it handles a BGP header split
between TCP segments.
svn path=/trunk/; revision=7405
support dissecting of v6 VPN NLRIs;
fix a little bug for displaying v4 nexthops using type 1 RD
style [dissecting started at wrong offset].
svn path=/trunk/; revision=6561
instead of copying them into a struct. Remove the "bgp" struct, as it is
no longer used. Gracefuly (more than before, at least) handle a zero
packet length.
svn path=/trunk/; revision=6421
more complete support for L2VPNs as described in
draft-kompella-ppvpn-l2vpn;
fix a segfault in the extd_community decoder;
more consistent SAFI strings (tcpdump);
more robust V6 decoding (the assumption that v6 may come
only in unlabeled form is wrong :-|)
svn path=/trunk/; revision=6093
Basic support for AFI & Extd communities in
draft-kompella-ppvpn-l2vpn
More robust handling for unknown AFIs in BGP MP(UN)REACH NLRIs
Fix typos.
svn path=/trunk/; revision=6079
equivalents for the toplevel directory. The removal of winsock2.h will
hopefully not cause any problems under MSVC++, as those files using
struct timeval still include wtap.h, which still includes winsock2.h.
svn path=/trunk/; revision=5932
Communities attribute in a BGP Update message.
Also, get rid of an extra space before a colon in the display for that
attribute, which isn't in other attributes.
svn path=/trunk/; revision=4732
are in the reserved region (which also fixes a bug where we weren't
printing the value for the NO_ADVERTISE community correctly).
svn path=/trunk/; revision=4638
"epan/..." pathnames, so as to avoid collisions with header files in any
of the directories in which we look (e.g., "proto.h", as some other
package has its own "proto.h" file which it installs in the top-level
include directory).
Don't add "-I" flags to search "epan", as that's no longer necessary
(and we want includes of "epan" headers to fail if the "epan/" is left
out, so that we don't re-introduce includes lacking "epan/").
svn path=/trunk/; revision=4586
Collapse the two loops through the TCP segment into one.
Use "tvb_reported_length()", not "tvb_length()", to find out how big the
TCP segment is ("tvb_length()" says how much of it was captured, not how
much of it there is).
svn path=/trunk/; revision=4557
has the "extended length" flag set - the starting offset of the list
depends on whether the "extended length" bit was set or not.
svn path=/trunk/; revision=4544
structure to the "packet_info" structure; only stuff that's permanently
stored with each frame should be in the "frame_data" structure, and the
"column_info" structure is not guaranteed to hold the column values for
that frame at all times - it was only in the "frame_data" structure so
that it could be passed to dissectors, and, as all dissectors are now
passed a pointer to a "packet_info" structure, it could just as well be
put in the "packet_info" structure.
That saves memory, by shrinking the "frame_data" structure (there's one
of those per frame), and also lets us clean up the code a bit.
svn path=/trunk/; revision=4370
take a dissector handle as an argument, rather than a pointer to a
dissector function and a protocol ID. Associate dissector handles with
dissector table entries.
svn path=/trunk/; revision=4308
have two independent "value_string" tables mapping RFC 1700 address
family numbers to names, nor is there any need to have the BGP dissector
and the PIM dissector have two independent sets of #defines for RFC 1700
address family numbers; put a single "value_string" table in "afn.c" and
put a declaration of it, and #defines for the address family numbers,
into "afn.h", and have the dissectors use that.
Move the #define for PGM into "ipproto.h", and add an entry for it in
the "value_string" table in "ipproto.c".
Have the PGM dissector use the standard Ethereal mechanisms for
resolving addresses, and have it use "value_string" tables for mapping
option types, the OPX bits, and packet types to strings. Use
"bytes_to_str()" to turn byte arrays into strings of hex digits. Pass
the packet type string to "dissect_pgmopts()" as an argument, rather
than making it a global. Don't use "proto_tree_add_XXX_format" routines
if you can possibly just use "proto_tree_add_XXX"; give various fields
the correct radix and type, and VALS() strings if necessary, to make
that happen (and to make filtering on them more pleasant). Put the
type, length, and total length of the options into the protocol tree as
separate fields. Don't have separate type, length, and OPX fields for
every type of option; one field will suffice. Don't format a string
with "sprintf()" and then pass that string to "col_add_fstr()" with a
format of "%s" and the string as an argument - "col_add_fstr()" can
format strings itself (that's what the "f" stands for). Don't byte-swap
and then un-byte-swap IPv4 address fields in the header, just leave them
network byte order to start with. Use the correct fields for
"proto_tree_add_XXX", rather than using the same field multiple times.
Quit early if an address family identifier isn't AFNUM_INET, as that
means the structure we use to dissect the header doesn't match the
actual header.
svn path=/trunk/; revision=3761
suggests, and that RFC 2858 obsoletes RFC 2283 which says you can,
doesn't matter - Ethereal's job isn't to enforce protocol standards or
to refuse to dissect stuff that doesn't conform to the final version of
standards; if it can dissect stuff that's now illegal but that wasn't
illegal in the past, and do so without causing problems when dissecting
currently legal stuff, it should so so, so that if you have captures
that include now-illegal stuff (perhaps from old devices that haven't
been upgraded, or from old captures), you can still see what was
happening.
svn path=/trunk/; revision=3644