destination network-layer addresses of the servers, and the NCP
connection number, and use the pointer to the conversation and the
request sequence number as the hash key for the table of requests used
to find the request for a given response; this lets it work with
NCP-over-TCP and NCP-over-UDP.
Register the NCP dissector with the UDP dissector in the handoff
registration routine for NCP, just as we do with the TCP dissector.
svn path=/trunk/; revision=1878
is the first time we've looked at a packet; it may not be null if, for
example, we're doing read filtering, or if we're colorizing packets, or
if there are plugins active, or if this is Tethereal with the "-V" flag.
Instead, use the new "visited" flag.
svn path=/trunk/; revision=1876
and have dissectors for protocols that run at the OSI network layer
register themselves with it using "dissector_add()".
Make various dissectors static if they can be, and remove from header
files declarations of those dissectors.
svn path=/trunk/; revision=1873
for protocols that run inside 802.2 LLC register themselves with it
using "dissector_add()".
Make various dissectors static if they can be, and remove from header
files declarations of those dissectors.
svn path=/trunk/; revision=1872
protocols that run inside IPv4 register themselves with it using
"dissector_add()".
Make various dissectors static if they can be, and get rid of any header
files that no longer contain any information as a result of that change.
svn path=/trunk/; revision=1870
find a COTP PDU - we might have called a subdissector, which would have
set the protocol itself. Do so only if we've not seen any DT PDUs on
which we've called a subdissector.
svn path=/trunk/; revision=1864
and nettl captures - a "start" field is used for capture files where the
time stamps on packets are relative to some initial time stamp, e.g. the
time the capture started, but those file formats use absolute time
stamps, so no "start" field is needed.
Make the "this is an HP-UX 11.x nettl capture" flag a member of the
private data structure for a nettl capture, rather than a global - it's
per-capture-file state.
Once the "start" field is removed from the RADCOM private data
structure, there's nothing left, so eliminate the private data
structure.
svn path=/trunk/; revision=1863
being COTP packets, so we make "dissect_cotp_internal()" return FALSE if
it saw no valid COTP packets, and return TRUE and set the COL_PROTOCOL
field to COTP if it saw at least one valid COTP packet, and have
"dissect_cotp()" dissect the packet as raw data if
"dissect_cotp_internal()" returns FALSE (for the benefit of callers such
as X.25).
svn path=/trunk/; revision=1861
Fix up some spacing problems in the INFO field of CLNP packets.
Dissect only the payload of DT and MD NPDUs as COTP; the payload of
other packets isn't to be so dissected (ER NPDUs are like ICMP error
packets, in that they contain the network-layer header and zero or more
bytes of the payload of the offending packet, for example).
svn path=/trunk/; revision=1860
console-subsystem program, so that when not run from a shell window it
doesn't cause a shell window to be popped up. (Yes, this means that any
messages it prints, when not popped up from a shell window, get lost,
but the same is true of Ethereal on UNIX/X.) Trick for doing this
shamelessly stolen from the Win32 port of the GIMP.
We do not want to build Tethereal or editcap as Windows-subsystem
programs, however, so we take the "/SUBSYSTEM" flag out of LDFLAGS and
put it into the link commands for Ethereal, Tethereal, and editcap.
svn path=/trunk/; revision=1857
Specific queries and debugging requests may be sent from ports
other than 520, but they are directed to port 520 on the target
machine.
and RFC 2453, on RIP V2, says:
Specific queries may be sent from ports other than the RIP port,
but they must be directed to the RIP port on the target machine.
so there is no requirement that RIP packets have 520 as both source and
destination port numbers. It's therefore OK to register it as the
dissector for UDP port 520 - no need to handle it specially in the UDP
dissector as a reminder to make it check both source and destination
ports - so we do so.
svn path=/trunk/; revision=1855
but will be in the future, and it's easier for me to keep my local branch
in sync with the source with the calls to dfilter_apply() already modified
tothe 4-arg format.
Add a CPP macro to ipv4.h to define ipv4_addr_ne(). Use it in dfilter.c
svn path=/trunk/; revision=1854
it in SOCKS dissector.
(Okay, how many times am I going to modify packet.h today, forcing you
to re-compile everything? :-)
svn path=/trunk/; revision=1850
sub-dissector table is not stored in the header_field_info struct, but
in a separate namespace. Dissector tables are now registered by name
and not by field ID. For example:
udp_dissector_table = register_dissector_table("udp.port");
Because of this different namespace, dissector tables can have names
that are not field names. This is useful for ethertype, since multiple
fields are "ethertypes".
packet-ethertype.c replaces ethertype.c (the name was changed so that it
would be named in the same fashion as all the filenames passed to make-reg-dotc)
Although it registers no protocol or field, it registers one dissector table:
ethertype_dissector_table = register_dissector_table("ethertype");
All protocols that can be called because of an ethertype field now register
that fact with dissector_add() calls.
In this way, one dissector_table services all ethertype fields
(hf_eth_type, hf_llc_type, hf_null_etype, hf_vlan_etype)
Furthermore, the code allows for names of protocols to exist in the
etype_vals, yet a dissector for that protocol doesn't exist. The name
of the dissector is printed in COL_INFO. You're welcome, Richard. :-)
svn path=/trunk/; revision=1848
libpcap), if we have a null filter string we report it as "no filter",
just as we would do for a null filter string pointer.
svn path=/trunk/; revision=1844
in its caller.
Set the COL_PROTOCOL column to "COTP" in the COTP dissector, rather than
in the dissectors it calls, so that it's done for all frames we hand to
that dissector.
Set the COL_INFO field for COTP packets we don't dissect because the
length indicator is zero, or the frame is too short, or the PDU type is
bogus.
svn path=/trunk/; revision=1842
Fix the TPDU code numeric value to be "0x%x" rather than "Ox%x".
Add a COL_INFO field for CLNP PDUs whose payload we don't dissect as
COTP.
Don't dissect segments other than the first derived PDU of a segmented
CLNP PDU (just as we do with fragments other than the first fragment of
a fragmented IP datagram).
svn path=/trunk/; revision=1841
Use "%u" rather than a hex format to print length values and segment
offsets, and use "%u" rather than "%d" to print unsigned values.
In the CLNP dissector, chop off the payload and captured-payload lengths
based on the segment length (along the lines of what we do for IP).
svn path=/trunk/; revision=1839
with conversations and having TCP and UDP check whether a packet is part
of a conversation with a dissector and, if so, using that dissector on
the conversation, and "ethertype()"-style support for allowing a
dissector to call a sub-dissector via the same path that the TCP and UDP
dissectors use, based on port numbers supplied by that dissector.
svn path=/trunk/; revision=1837
I'm going to go ahead and install the plugins in a "0.8.7" directory, and
continue incrementing the micro number until the minor version changes to 9.
Then for all of 0.9.x, the plugin directory will be "0.9" until the ABI
changes again. This should cause less confusion, even if it means the
plugins don't change between 0.8.6 and 0.8.7.
svn path=/trunk/; revision=1834
and BIND, do, by counting the number of characters we look at and, if
when we see a pointer, we see we've already looked at as many characters
as there are in the DNS packet, we conclude that we're looping.
Also, check for pointers that point past the end of the packet (not just
past the end of the captured portion of the packet, i.e. cases where we
didn't capture all of the packet, but cases where the packet is actually
malformed).
svn path=/trunk/; revision=1830