Commit Graph

162 Commits

Author SHA1 Message Date
Jun-ichiro itojun Hagino 3a27312b54 BGP decoding. more attributes and NLRIs needs to be added.
as BGP is a protocol on top of TCP, it may have trouble parsing
out-of-sync data (in most cases data is aligned on packet, it seems).

svn path=/trunk/; revision=843
1999-10-15 17:00:47 +00:00
Jun-ichiro itojun Hagino 33d11fff97 IPComp (RFC2393) decoding.
svn path=/trunk/; revision=838
1999-10-15 05:30:43 +00:00
Jun-ichiro itojun Hagino 831497b33e use inet_pton() and inet_ntop(), which are RFC2553 standard function
for converting IPv[46] numeric notation to/from binary form.
recent BIND includes those functions so fallback is not necessary on
most of the platforms.
sorry if it raises any portability problem on other platforms.

remove partial inclusion of inet_ntop() in packet-ipv6.c.

move ip6_to_str() to packet.c, it fits better there than packet-ipv6.c.

svn path=/trunk/; revision=829
1999-10-14 05:41:33 +00:00
Guy Harris 5ed4011c30 Nathan Neulinger's NTP dissector.
svn path=/trunk/; revision=828
1999-10-14 05:10:33 +00:00
Jun-ichiro itojun Hagino 810a67a6d0 implement ipprotostr() in ipproto.c, which basically does ipprotobynumber()
for ip.ip_p and ip6.ip6_nxt (and other IPv6 header chain).

use val_to_str() as much as possible in dissect_{ipv6,pim,ripng}().

make --disable-zlib a default for netbsd (temporary workaround).

svn path=/trunk/; revision=827
1999-10-14 03:50:51 +00:00
Guy Harris 364274edf3 Nathan Neulinger's dissector for the Yahoo messenger and pager
protocols.

svn path=/trunk/; revision=824
1999-10-14 01:29:07 +00:00
Guy Harris 93d58bf824 Jun-ichiro itojun Hagino's code for PIM, and some fixes from him as
well.

Add some more protocols to the list of value/string pairs for IP
protocol types.

svn path=/trunk/; revision=822
1999-10-13 06:47:49 +00:00
Guy Harris 66d84f1093 Jun-ichiro itojun Hagino's changes for IPv6 extension header decoding
and RIPng decoding.

svn path=/trunk/; revision=818
1999-10-12 23:12:06 +00:00
Gilbert Ramirez bacb9d5bae New proto_tree header_field_info stuff. Header_field_infos now contain
the base for numbers to be displayed in, bitmasks for bitfields, and blurbs
(which are one or two sentences describing the field).

proto_tree_add*() routines now automatically handle bitfields. You tell
it which header field you are adding, and just pass it the value of the
entire field, and the proto_tree routines will do the masking and shifting
for you.

This means that bitfields are more naturally filtered via dfilter now.

Added Phil Techau's support for signed integers in dfilters/proto_tree.

Added the beginning of the SNA dissector. It's not complete, but I'm
committing it now because it has example after example of how to use
bitfields with the new header_field_info struct and proto_tree routines.
It was the impetus to change how header_field_info works.

svn path=/trunk/; revision=815
1999-10-12 06:21:15 +00:00
Richard Sharpe 42b64a7584 Big bunch of fixes to packet-smb.c for things I need.
Also added first pass of state keeping. I am using glib's hash
functions.

Modelled after packet-ncp.c.

We will need to standardize the <proto>_init_protocol functions called in
file.c at some stage ...

I will have a couple of more goes at the state keeping before I am finished.
At the moment, the infrastructure is there but I do nothing with it.

svn path=/trunk/; revision=798
1999-10-10 11:50:45 +00:00
Guy Harris 93b7dfe367 Christophe Tronche's BPDU dissector.
svn path=/trunk/; revision=790
1999-10-08 20:50:39 +00:00
Richard Sharpe 776a369f1a A bunch of fixes for SMB decode.
1. Fix some silly errors.
  2. Dont decode beyond Word Count if errcode > 0
  3. Decode a bunch mode SMBs

Next is to keep state so we can do a better job ...

svn path=/trunk/; revision=758
1999-10-03 01:14:33 +00:00
Guy Harris 96e79ab6f8 Add a "BYTES_ARE_IN_FRAME()" macro, to test whether there are a
specified number of bytes of captured data in the frame at the specified
offset, and a "IS_DATA_IN_FRAME()" macro, to test whether there are any
bytes of captured data in the frame at the specified offset, and convert
some bounds checks to use them.

Add a dissector for the Internet Printing Protocol.

svn path=/trunk/; revision=685
1999-09-17 05:56:58 +00:00
Guy Harris f4ac555e90 Peter Torvals' Internet Cache Protocol dissector.
svn path=/trunk/; revision=677
1999-09-14 08:06:47 +00:00
Guy Harris 3823ab23be Add a "Expand all levels"/"Print as displayed" pair of radio buttons to
the "File/Print" dialog box; "Expand all levels" means that all levels
of the protocol tree should be printed, while "Print as displayed" means
that only those levels shown in the display should be printed.

Free the table of column widths once printing is done.

svn path=/trunk/; revision=671
1999-09-12 20:23:43 +00:00
Guy Harris 55dff94484 Add summary-vs-detail radio buttons to the print dialog box; detail
prints the protocol tree, and summary prints the fields in the summary
clist, with a header line at the beginning of the printout.

Print only packets selected by the current packet filter.

Just have "ARP" and "RARP" in the "Protocol" field for ARP packets;
whether it's a request or a reply can be seen in the "Info" field.

Add to the "Frame" section of the protocol tree the time between the
current packet and the previous displayed packet, and the packet number.
Have FT_RELATIVE_TIME fields be a "struct timeval", and display them as
seconds and fractional seconds (we didn't have any fields of that type,
and that type of time fits the delta time above).

Add an FT_DOUBLE field type (although we don't yet have anything using
it).

svn path=/trunk/; revision=666
1999-09-12 06:11:51 +00:00
Gerald Combs 078f9a67b9 Added support for PPP Multilink Protocol (MP). Modified dissect_ppp_stuff
to recognize and handle protocol field compression.

svn path=/trunk/; revision=651
1999-09-11 04:19:26 +00:00
Guy Harris dc298db578 Give "globals.h" an RCS ID and copyright/GPL notice.
Move some defines that would be used even by a non-GTK+-based Ethereal
from "gtk/main.h" to "globals.h".

Remove the byte-order #defines from "packet.h", as they're now in
"globals.h" (having been moved there from "gtk/main.h").

Fix up some files that use those #defines to include "globals.h".

"resolv.c" doesn't use any GTK stuff, so it needn't include <gtk/gtk.h>
nor "gtk/main.h" - it only did so to get the byte-order #defines for the
benefit of "packet-ipv6.h", and "packet-ipv6.h" now includes them
itself.

svn path=/trunk/; revision=649
1999-09-10 07:19:51 +00:00
Guy Harris cde9b4699c Add in a bunch of changes based on the IBM specification for the NetBIOS
Frame protocol (that being what this dissects).

If you're cutting up something into bitfields, the bitfield dissection
returned by "dissect_bitfield_XXX()" should be the first text on the
line - if not, then if the text items that come before the various
bitfields aren't all the same length, the bits don't line up.

Cope with packets from one of Gilbert's captures, where the sender
"name" in some NBF datagrams isn't a NetBIOS name, it's 10 octets of 0
followed by a MAC address!

The "name type" in the "Data2" field of NBF frames is 0x00 for unique
names and 0x01 for group names, not a "16th character of a NetBIOS name"
name type.

Fix up various other things.

svn path=/trunk/; revision=633
1999-09-03 07:20:15 +00:00
Guy Harris dec805ba0d Dissect the name type flag in NBIPX name service packets (at least
according to what NetMon thinks the bits are).

svn path=/trunk/; revision=629
1999-09-03 00:38:50 +00:00
Guy Harris f9a1fea17c Have the IPX code set "pi.len" and "pi.captured_len" based on the length
in the IPX header, and have the dissectors it calls use it rather than
being passed the length as an argument.

Treat both packet type 20 ("WAN Broadcast") and 4 ("IPX", although 3 is
also "IPX", according to Network Monitor) as potentially being NetBIOS
packets.

The packet types for the IPX NetBIOS socket (0x0455) and the NWLink
sockets (0x0551 and 0x0553) are different (perhaps because there's one
socket for the 0x0455 NBIPX, so you have to do name service and datagram
service and have the packet types distinguish them, but NWLink has
separate sockets for name service and datagram service).

The packet type for name service and for datagram service are at
*different locations* in the packet, which is unfortunate if you want to
use the packet type to distinguish name service and datagram service
packets.  Use the packet length, for now, to distinguish them, with
socket 0x0455.

Dissect datagram packets differently from name service packets.

Export "packet-netbios.c"'s "netbios_add_name()" routine, and use it
when dissecting NBIPX packets as well.

Label NBIPX packets as "NBIPX" rather than "NetBIOS".

svn path=/trunk/; revision=627
1999-09-02 23:17:58 +00:00
Guy Harris 18ecb7c367 PPP options in LCP, IPCP, etc. are like IP and TCP options - one octet
of option code, one octet of length (which includes the two option code
and length bytes), followed by 0 or more octets of option data, with
some options being fixed-length and some being variable-length.  Put
some stuff from the PPP control protocol option parsing code into the
IP-and-TCP option parsing code, and use the latter instead of the
former.

(That code might also be usable for CDP as well, with some stuff added
to it.)

Shuffle the arguments to "dissect_ip_tcp_options()" to resemble those of
various other dissectors (i.e., with the "proto_tree *" at the end).

Add in code to dissect a pile of PPP options documented in various RFCs.

svn path=/trunk/; revision=601
1999-08-28 08:31:28 +00:00
Guy Harris adf5b4881c Add in the Async Map option.
Add in the Identification and Time Remaining codes for LCP.

Add in a pile of other LCP options, albeit without anything more than
names for now.

Don't say "1 bytes", say "1 byte".

Don't use "dissect_data()" to dissect part of a *CP packet, and don't
dissect opaque data if there're zero bytes of it.

svn path=/trunk/; revision=578
1999-08-25 07:32:46 +00:00
Guy Harris 8a6cdd595e Put in support for dissecting LCP and IPCP options.
Have a common routine to parse both LCP and IPCP, as IPCP is based on
LCP.

Have only one "value_string" array of PPP protocol types, with all the
types we know about.

svn path=/trunk/; revision=577
1999-08-25 06:52:04 +00:00
Guy Harris 265b8eeaee Dump the values of the "flags" and "ttl" fields of the CDP header.
Don't treat the CDP header as an in-memory data structure; that might
cause problems if it's not aligned on a 2-byte boundary.

Make the type and length fields of a TLV unsigned.

Correctly check for the end of the (captured part of the) frame.

Show most TLVs as "expandable" entries, where they expand into type,
length, and data entries.

Dissect "unknown" TLVs.

svn path=/trunk/; revision=573
1999-08-25 00:55:45 +00:00
Guy Harris 678b5fd6ff Add a new Wiretap encapsulation type WTAP_ENCAP_FDDI_BITSWAPPED, meaning
"FDDI with the MAC addresses bit-swapped"; whether the MAC addresses are
bit-swapped is a property of the machine on which the capture was taken,
not of the machine on which the capture is being read - right now, none
of the capture file formats we read indicate whether FDDI MAC addresses
are bit-swapped, but this does let us treat non-"libpcap" captures as
being bit-swapped or not bit-swapped independent of the machine on which
they're being read (and of the machine on which they were captured, but
I have the impression they're bit-swapped on most platforms), and allows
us to, if, as, and when we implement packet capture in Wiretap, mark
packets in a capture file written in Wiretap-native format based on the
machine on which they are captured (assuming the rule "Ultrix, Alpha,
and BSD/OS are the only platforms that don't bit-swap", or some other
compile-time rule, gets the right answer, or that some platform has
drivers that can tell us whether the addresses are bit-swapped).

(NOTE: if, for any of the capture file formats used only on one
platform, FDDI MAC addresses aren't bit-swapped, the code to read that
capture file format should be fixed to flag them as not bit-swapped.)

Use the encapsulation type to decide whether to bit-swap addresses in
"dissect_fddi()".

svn path=/trunk/; revision=557
1999-08-24 03:19:34 +00:00
Guy Harris a033390918 Add support for reading Full Frontal ATM from an ATM Sniffer capture
file, instead of throwing out all but LANE or RFC 1483 data frames and
pretending that the former are just Ethernet or Token-Ring frames.

Add some level of decoding for ATM LANE, but not all of it; the rest,
including decoding non-LANE frames, is left as an exercise for somebody
who has captures they want to decode, an interest in decoding them, ATM
expertise, and time....

svn path=/trunk/; revision=523
1999-08-20 06:55:20 +00:00
Gilbert Ramirez c1adce9762 Re-arranged Ethereal's definitions of DLT_RAW et al. since capture.c
is the only file that uses them. I hope to avoid some compiler warnings
with this.

svn path=/trunk/; revision=512
1999-08-18 16:28:22 +00:00
Guy Harris ac4f87218d Declare the "packet_info" structure "pi" in "packet.h", rather than in a
bunch of source files.

Replace the "payload" field of a "packet_info" structure with "len" and
"captured_len" fields, which contain the total packet length and total
captured packet length (including all headers) at the current protocol
layer (i.e., if a given layer has a length field, and that length field
says its shorter than the length we got from the capture, reduce the
"pi.len" and "pi.captured_len" values appropriately).  Those fields can
be used in the future if we add checks to make sure a field we're
extracting from a packet doesn't go past the end of the packet, or past
the captured part of the packet.

Get rid of the additional payload argument to some dissection functions;
use "pi.captured_len - offset" instead.

Have the END_OF_FRAME macro use "pi.captured_len" rather than
"fd->cap_len", so that "dissect the rest of the frame" becomes "dissect
the rest of the packet", and doesn't dissect end-of-frame padding such
as padding added to make an Ethernet frame 60 or more octets long.  (We
might want to rename it END_OF_PACKET; if we ever want to label the
end-of-frame padding for the benefit of people curious what that extra
gunk is, we could have a separate END_OF_FRAME macro that uses
"fd->cap_len".)

svn path=/trunk/; revision=506
1999-08-18 00:57:54 +00:00
Guy Harris 9e58014e7f Add ICMP to the set of packet types counted in the window shown while a
capture is in progress.

svn path=/trunk/; revision=491
1999-08-14 23:47:20 +00:00
Guy Harris 6572382f9a Have the "delta" format for time stamps show the time delta between a
packet and the previous *displayed* packet, rather than the previous
packet in a capture.

svn path=/trunk/; revision=486
1999-08-14 04:23:22 +00:00
Guy Harris 37ddd5f5ed Jeff Foster's changes to add support for NetBEUI/NBF (NetBIOS atop 802.2
LLC, the original NetBIOS encapsulation).

svn path=/trunk/; revision=466
1999-08-10 20:06:39 +00:00
Guy Harris 86a8ad1dcd Building a GList by adding elements to the end with "g_list_append()" is
N^2 in the ultimate size of the list (as "g_list_append()" is linear in
the size of the list, at least when used in the way the GLib
documentation says to use it); instead, maintain our own linked list of
"frame_data" structures for all packets read, including a pointer to the
last element.

"gtk_clist_set_row_data()" is linear in the row number, so if it's used
to attach a pointer to the "frame_data" structure for a packet to the
packet list GtkClist row for each packet, that's also N^2 in the number
of packets in that packet list; instead, store the row number in the
"frame_data" structure, and find the packet for a given row by scanning
the list for it (we were already scanning the list linearly to find that
packet's index in the list of all packets; that's only done when a
packet's selected, so it's not *too* bad, but it might be nice to avoid
having to do that scan).

svn path=/trunk/; revision=457
1999-08-10 04:13:37 +00:00
Guy Harris 47d1269da4 Add a "dissect_xdlc_control()" routine, to dissect the control field of
SDLC-derived protocols such as HDLC and derivatives of it such as LAPB,
IEEE 802.2 LLC, and so on.  Have the LLC and LAPB dissectors use it.

Make "dissect_numeric_bitfield()" put the low-order bit of the bitfield
in the low-order bit of an integer when printing it, so that the right
value is printed.

svn path=/trunk/; revision=434
1999-08-04 04:37:46 +00:00
Guy Harris 79c2223425 Check in Olivier Abad's patch to add dissectors for LAP-B and X.25, and
wiretap support for RADCOM Ltd.'s WAN/LAN analyzers (see

	http://www.radcom-inc.com/

).  Note: as I remember, IEEE 802.2/ISO 8022 LLC has somewhat of an SDLC
flavor to it, just as I think LAP, LAPB, LAPD, and so on do, so we may
be able to combine some of the LLC dissection and the LAPB dissection
into common code that could, conceivably be used for other SDLC-flavored
protocols.

Make "S" a mnemonic for "Summary" in the "Tools" menu.

Move the routine, used for the "Tools/Summary" display, that turns a
wiretap file type into a descriptive string for it into the wiretap
library itself, expand on some of its descriptions, and add an entry for
files from a RADCOM analyzer.

Have "Tools/Summary" display the snapshot length for the capture.

svn path=/trunk/; revision=416
1999-08-02 02:04:38 +00:00
Guy Harris 7d358ac637 Make unsigned the members of a "packet_info" structure that store IP
addresses, IP protocols, and TCP/UDP port numbers (as those are
unsigned).

svn path=/trunk/; revision=411
1999-07-31 18:18:43 +00:00
Laurent Deniel 98ebf4ee0a Remove srcip and destip from packet_info since it is not safe to affect
string pointer from the result of ip_to_str (statically allocated string).
Use the ip_src and the new field ip_dst in follow.c to build a correct
string display filter.

svn path=/trunk/; revision=408
1999-07-31 11:21:06 +00:00
Guy Harris 6f1d3a3be8 Patches from Thierry Andry to support Classical IP captures from systems
with the ATM on Linux software from <http://lrcwww.epfl.ch/linux-atm/>.

svn path=/trunk/; revision=401
1999-07-28 23:16:42 +00:00
Guy Harris b70d733f50 Have:
COL_INFO columns resize automatically even during a live
	capture;

	columns showing network addresses never resize automatically;

	other columns resize only when a capture is done;

and make all columns resizeable by hand (once they've resized, for
auto-resizeable columns).

svn path=/trunk/; revision=394
1999-07-28 03:29:02 +00:00
Guy Harris de459d1426 Revert to static sizing of columns.
svn path=/trunk/; revision=377
1999-07-22 21:14:13 +00:00
Gilbert Ramirez 4dcaf2d853 Added "Packet Length in bytes" as an optional column.
svn path=/trunk/; revision=375
1999-07-22 16:03:52 +00:00
Gilbert Ramirez 093f28c382 Fixed packet.h for good.
svn path=/trunk/; revision=358
1999-07-12 21:39:28 +00:00
Richard Sharpe 87be6de734 Some more updates. Now have open_andx decoded mostly ... Still some funnies
and some difficult things.

I should not have blown away any of Gilbert's stuff this time around ...

Hope not anyway ...

svn path=/trunk/; revision=357
1999-07-12 14:26:16 +00:00
Guy Harris d35862ac07 The previous checkins were based on versions of the file prior to
Gilbert's new protocol-tree code (and to a bunch of other changes); put
all the missing changes back in.

svn path=/trunk/; revision=354
1999-07-11 07:24:57 +00:00
Richard Sharpe 9b8cd07087 More decoding of fields. Now handle enumerated fields, but still have
problems with single bit fields when declared as an enumerated field.

It shows an unknown ... Damn ... Can't see what the problem is.

svn path=/trunk/; revision=353
1999-07-10 14:01:53 +00:00
Guy Harris 5617c18368 Declare "dissect_radius()" here.
svn path=/trunk/; revision=350
1999-07-08 20:31:42 +00:00
Gilbert Ramirez 53d2a96094 Added Johan's RADIUS dissector, finally. I modified it to fit in with the
new proto_tree routines. I also removed the check for lex and yacc from
wiretap's configure script. The IP dissector now uses
proto_register_field_array().

svn path=/trunk/; revision=348
1999-07-08 04:23:28 +00:00
Gilbert Ramirez 07f42b5b31 Created a new protocol tree implementation and a new display filter
mechanism that is built into ethereal. Wiretap is now used to read all
file formats. Libpcap is used only for capturing.

svn path=/trunk/; revision=342
1999-07-07 22:52:57 +00:00
Guy Harris b547681d56 Add support for RTSP (RFC 2326) over TCP, and SDP (RFC 2327) inside
RTSP, from Jason Lango <jal@netapp.com>.

svn path=/trunk/; revision=340
1999-07-07 00:34:58 +00:00
Richard Sharpe 4cef485bd4 Fixed a small problem that would have prevented Ethereal from compiling.
svn path=/trunk/; revision=335
1999-07-01 04:04:38 +00:00
Guy Harris 919fe8f24c Update the display if the "command-line-specified" time format is
changed by updating those columns showing the time in the
"command-line-specified" format, not by redoing the entire packet list
display; that way, the display continues to show the same packets and
any packet the user selected remains selected.  (It's also less work to
do that - you don't have to re-dissect the packet.)

Turn "redisplay_packets()" into "filter_packets()", and do some other
cleanups.

svn path=/trunk/; revision=325
1999-06-22 03:39:07 +00:00
Guy Harris becbefffcb Use "gtk_toggle_button_set_state()" rather than
"gtk_toggle_button_set_active()" to set the state of radio buttions;
"gtk_toggle_button_set_active()" doesn't exist in GTK+ 1.0[.x], and
"gtk_toggle_button_set_state()" is an alias for it in GTK+ 1.2[.x].

Compute the column widths in the summary display based on the longest
string in the column; recompute it whenever we update the columns.

svn path=/trunk/; revision=319
1999-06-19 03:14:32 +00:00
Gilbert Ramirez af2bae7723 Changed the Access Control and Frame Control fields in the Token-Ring header
to use the decode_*_bitfield() routines. This needed to happen anyway, but
I finally made the change so that I can figure out how I'm going to handle
bitfield fields in my experiment of changing the implementation of the
protocol tree in ethereal.

svn path=/trunk/; revision=311
1999-06-14 20:30:06 +00:00
Guy Harris 1c30696df9 Make the string argument to "col_add_str()" a "const gchar *" - it
doesn't modify anything pointed to by that argument, and that keeps us
from getting complaints if we pass a "const gchar *" to it.

svn path=/trunk/; revision=306
1999-06-12 04:21:09 +00:00
Gilbert Ramirez aca172004f Added RSVP protocol dissector.
svn path=/trunk/; revision=304
1999-06-11 16:45:02 +00:00
Gilbert Ramirez 34450a8a35 Added PPPoE, PPTP, GRE, and ISAKMP dissectors.
svn path=/trunk/; revision=303
1999-06-11 15:30:55 +00:00
Gilbert Ramirez 124c7bc994 Fixed some serious bugs in the NCP hash routines. I also simplified
the NCP field table structure so that it is easier to add new request/reply
types. I even added a new type myself. There's still more work to be done;
so for now ignore the warnings that gcc emits.

svn path=/trunk/; revision=287
1999-05-13 16:42:43 +00:00
Gilbert Ramirez c50d66ba7c Added Didier Jorand's dissect_snmp routine. This is only compiled in
if you have the UCD or CMU SNMP library available. If you have the SNMP
library but do not with to have SNMP support, use the
	./configure --disable-snmp
option. Otherwise 'configure' finds the SNMP library and uses it.

svn path=/trunk/; revision=281
1999-05-12 05:56:42 +00:00
Guy Harris e638eb378f Turn "arpaddr_to_str()" into "bytes_to_str()", and make it public, so it
can be used by dissectors other than ARP to display byte arrays as
strings of hex digits.

Add a routine to extract a null-terminated Unicode string and turn it
into an ISO 8859-1 string for display.  (Ultimately, we should determine
what character sets the X server or printer or whatever can handle, and
turn it into the appropriate character set.)

Display the challenge in "core-to-LANMAN-2.1" Negotiate Protocol
responses as a string of hex digits - but only if the length is
non-zero.  (It's a counted array, not a null-terminated string.)

Display some additional security mode bits in an NT LM 0.12 Negotiate
Protocol response.

Display some additional bits in the "capabilities" field of the
Negotiate Protocol response.

Display the challenge in an NT LM 0.12 Negotiate Protocol response as a
string of hex digits (it's a counted array, not a null-terminated
string).

Display the domain name as Unicode in an NT LM 0.12 Negotiate Protocol
response if the capabilities field has the "supports Unicode" bit set
(no, not the "Unicode" bit in the "flags2" field - NT doesn't set that
in the response, even though it sends the domain name over in Unicode!).

Display some additional bits in the "flags2" field of an SMB.

svn path=/trunk/; revision=275
1999-05-11 08:21:39 +00:00
Guy Harris 93aab5c7b0 Decode SMB requests inside NetBIOS Datagram Service packets.
svn path=/trunk/; revision=269
1999-05-10 21:50:13 +00:00
Gilbert Ramirez defccf6b4c Fixed the number of parameters for the other super-IPX protocols so that
the table of dissect functions that IPX needs only needs to store pointers to
on type of function. Now all super-IPX protocols have an 'int max_data' argument.

svn path=/trunk/; revision=267
1999-05-10 20:51:36 +00:00
Guy Harris a4c1b66753 Decode the "flags2" field in the SMB header.
Squelch another "variable may be used without being initialized"
complaint (also due to insufficiently sophisticated dataflow analysis by
EGCS 1.1), and a number of "unused variable" complaints, as well as
"assigning a 'const XXX *' to an 'XXX *'" complaints.

svn path=/trunk/; revision=266
1999-05-10 20:30:27 +00:00
Gilbert Ramirez 0add610ce6 This small change lets me read SMBtrans packets that come over NBIPX.
svn path=/trunk/; revision=262
1999-05-10 19:01:32 +00:00
Richard Sharpe ba2afbfeb8 Mode decoded SMBs ... Now decode part of a TCONX request,
but not the responses, and do not handle the ANDX part yet,
but I have a Linux course to develop, so that is enough for
now.

svn path=/trunk/; revision=261
1999-05-10 00:27:32 +00:00
Richard Sharpe 8b00cf57b3 Added initial support for SMB plus most of negprot decode ..
svn path=/trunk/; revision=258
1999-05-09 04:16:36 +00:00
Guy Harris 5958b839bc Add support for the NetBIOS Session Service.
Improve the descriptions of the NetBIOS Name Service errors a bit.

svn path=/trunk/; revision=247
1999-04-30 03:16:03 +00:00
Guy Harris bad78f629a Add NNTP support.
svn path=/trunk/; revision=241
1999-04-06 02:02:12 +00:00
Guy Harris ee80616a8c FTP, POP, and Telnet support from Richard Sharpe.
svn path=/trunk/; revision=237
1999-04-05 21:54:41 +00:00
Guy Harris f1e024b605 Move the bitfield-decoding routines to "packet.h", along with other
helper routines for packet dissecting, and away from "util.c", which is
now all GUI-related.  (Among other things, this makes life more pleasant
for Gilbert Ramirez's "tethereal" stuff, although a lot more separation
of GUI from other stuff needs to be done to make that - or a
"curses"-based variant of Ethereal, or a variant using some other GUI
toolkit - work smoothly.)

svn path=/trunk/; revision=235
1999-03-31 08:20:28 +00:00
Guy Harris 2ffe6f0ffe Changes to the routines to help decode text-oriented protocols (FTP,
SMTP, POP, HTTP, etc.) for the benefit of Richard Sharpe's FTP and POP
dissectors.

svn path=/trunk/; revision=233
1999-03-30 04:41:01 +00:00
Gilbert Ramirez 2b86d46d70 Jun-ichiro's IPv6 patch is merged in with ethereal and now uses the new
proto*() functions. The configure script tries to use ipv6 name resolution if
it knows the type of ipv6 stack the user has (this can be avoided with the
--disable-ipv6 switch) Additionally, the configure script now deals with wiretap
better. If the user doesn't want to compile wiretap, the wiretap is never
visited. A few unnecessary #includes were removed from some wiretap files, and
a CPP macro was moved from bpf.c to wtap.h.

svn path=/trunk/; revision=229
1999-03-28 18:32:03 +00:00
Gilbert Ramirez ef3dfe2077 Removed all references to gtk objects from packet*.[ch] files. They now
reference the protocol tree with struct proto_tree and struct proto_item
objects. That way, the packet decoding source code file can be used with
non-gtk packet decoders, like a curses-based ethereal, e.g. I also re-arranged
some of the information in packet.h to more appropriate places (like other
packet-*.[ch] files).

svn path=/trunk/; revision=223
1999-03-23 03:14:46 +00:00
Guy Harris 05e5c40597 Well, that was dumb. I didn't have to add a "capture_data()" routine; I
just had to make "sap_capture_func()" return NULL if it didn't find an
entry for the SAP it was passed.

svn path=/trunk/; revision=220
1999-03-22 03:56:34 +00:00
Guy Harris 8f70ffdda9 Have "sap_capture_func()" return "capture_data" rather than
"dissect_data"; if you call "dissect_data()" with an argument list of
the type expected by a "capture_XXX()" routine, it won't do the right
thing (and may do the wrong thing, e.g. crash).

Have "sap_capture_func()" (and "sap_dissect_func()") return function
pointers rather than "void *"s, so that I don't make a mistake like the
above in the future....

svn path=/trunk/; revision=219
1999-03-22 03:44:44 +00:00
Guy Harris 38a04d2660 Added Richard Sharpe's TFTP support.
svn path=/trunk/; revision=190
1999-02-15 06:36:57 +00:00
Guy Harris 10d6bc0996 Add a first cut at HTTP decoding.
svn path=/trunk/; revision=187
1999-02-12 09:03:42 +00:00
Guy Harris 75305346b5 When doing a capture, decode enough of the incoming packets to correctly
update the packet counts and percentages in the dialog box popped up
during a capture, even for non-Ethernet captures.

svn path=/trunk/; revision=184
1999-02-09 00:35:38 +00:00
Gilbert Ramirez facb503960 I removed the bit-fields that depended upon gcc's ability to use any type
of variable as a bit field container. ANSI specs only allow unsigned ints
to host bit fields; IBM's C compiler is very ANSI-strict.

svn path=/trunk/; revision=183
1999-02-08 20:02:35 +00:00
Gilbert Ramirez 69458d2e92 Added guy's time and DHCP patch.
svn path=/trunk/; revision=177
1999-01-28 21:29:36 +00:00
Guy Harris bc21c7a2c7 Decode the various flag fields in resource records in NBNS replies.
svn path=/trunk/; revision=159
1999-01-05 08:48:40 +00:00
Guy Harris e808e2a733 Neither "ether_to_str()" nor "ip_to_str()" modify the data pointed to by
their arguments, so make those arguments pointers to 'const", so that we
don't get complaints if somebody hands them a pointer to "const".

svn path=/trunk/; revision=158
1999-01-05 07:33:38 +00:00
Guy Harris 229245043d Decode the word containing the opcode, flags, reply code, etc. in DNS
and NBNS requests.

Put the opcode in the COL_INFO field for DNS requests (it was already
there for NBNS requests).

Don't assume a DNS or NBNS request is neatly aligned on a 2-byte
boundary (it might not be if, for example, the packet is an FDDI
packet).

svn path=/trunk/; revision=153
1999-01-04 09:13:46 +00:00
Gilbert Ramirez 3688d96c45 Added the iptrace (AIX's packet-capture tool) file format to wiretap.
This necessitated a change in ethereal because iptrace supports multi-NIC
packet capturing, including multi-datalink-type capturing.

svn path=/trunk/; revision=145
1999-01-02 06:10:55 +00:00
Gerald Combs cb1f8e34c5 * Added Joerg Mayer's Vines patch
* Added Joerg to the AUTHORS file
* Added Guy's bitfield decode patch
* Fixed time output

svn path=/trunk/; revision=142
1998-12-29 04:05:38 +00:00
hannes 183c35b0b4 Added "Cisco Discovery Protocol" Hooks
Added Ethernet Loopback Protocol Type to ethertype.c

svn path=/trunk/; revision=129
1998-12-19 00:12:23 +00:00
Guy Harris 7dd4f76f59 When dissecting DNS or NBNS queries or replies, add the item to the tree
for the queries or replies first, then create and add the subtree and
populate it, and, when that's done, set the length of the item
appropriately; if you add the subtree later, the subtree's top-level
node appears to have level 0, rather than 1 greater than the tree of
which it's a subtree, which causes those trees not to print correctly.

svn path=/trunk/; revision=122
1998-12-04 05:59:14 +00:00
Gilbert Ramirez d570947a14 Added NetBIOS Datagram (over UDP) support.
svn path=/trunk/; revision=113
1998-11-20 05:58:42 +00:00
Gerald Combs b0fdc8edb2 * Added patches from Laurent and Guy
svn path=/trunk/; revision=103
1998-11-18 03:01:44 +00:00
Gerald Combs 6ca358948b * Added column formatting functionality.
* Added check_col(), add_col_str() and add_col_fmt() to replace references
  to ft->win_info.
* Added column prefs handling code.

svn path=/trunk/; revision=97
1998-11-17 04:29:13 +00:00
Guy Harris d07cba10c1 Add a routine to convert Ethernet packet types to strings.
Use that routine in "ethertype()".

	Have "dissect_arp()" handle hardware addresses that aren't
	6-byte Ethernet addresses and protocol addresses that aren't
	4-byte IPv4 addresses - currently, it just prints the first 16
	hex digits, but it could be made to handle other types specially
	just as it handles 6-byte Ethernet and 4-byte IPv4 addresses.

	Have it decode a more complete set of hardware address types.

svn path=/trunk/; revision=78
1998-11-03 07:45:10 +00:00
Guy Harris 6f241463be Add the "Maximize security" type of service for IP, from RFC
1455.

	Make the arguments to "val_to_str()" and "match_strval()" that
	point to things those routines don't modify pointers to "const",
	and make the "value_string" tables passed into those routines in
	"packet-ip.c" "const".

svn path=/trunk/; revision=72
1998-10-28 01:16:49 +00:00
Guy Harris 0bb16cb989 Add a "val_to_str()" routine that calls "match_strval()" and, if
it returns NULL, formats the value with the format passed in as
	an argument, and returns a pointer to that static buffer.

	Change several "match_strval()" calls to use "val_to_str()".

	In "dissect_ospf()", use "match_strval()" to look up the packet
	type, and use "Unknown" if it doesn't find a match.

svn path=/trunk/; revision=66
1998-10-20 05:31:03 +00:00
Guy Harris 7867e7441d Add declarations of "dissect_aarp()' and "dissect_ddp()".
svn path=/trunk/; revision=65
1998-10-16 06:46:55 +00:00
Gerald Combs 349f96bb49 * Copied in the correct GNU license (I'm such a goober)
* Hacks to the filter interface (Gerald)
* About box (Laurent)
* AppleTalk support (Simon)
* Mods to the match_strval routine (Gerald)

svn path=/trunk/; revision=61
1998-10-16 01:18:35 +00:00
Guy Harris 75b9af68eb Show queries as a summary line (as was the case before my DNS checkins)
which can be expanded into a detailed name/type/class description.

svn path=/trunk/; revision=58
1998-10-15 06:40:51 +00:00
Guy Harris 022967513b Tag NetBIOS Name Service-over-UDP packets as "NBNS (UDP)".
Give a detailed display of the innards of NBNS-over-UDP packets.  Export
some stuff from the DNS decoder for the use of the NBNS decoder (NBNS is
DNS-like).

Give a more detailed display of the innards of DNS packets as well.

Fix a couple of minor NBNS bugs.

svn path=/trunk/; revision=55
1998-10-14 19:35:00 +00:00
Gilbert Ramirez 5e649516c9 I've started to figure out the difference between NetBIOS over IPX for
Netware, and NetBIOS over IPX for WinNT (NWLink).

svn path=/trunk/; revision=53
1998-10-14 05:18:32 +00:00
Gilbert Ramirez 4dbba72d17 I rename the single dissect() function in packet-nbipx.c, and had packet-ipx.c
call it under fewer circumstances.

svn path=/trunk/; revision=52
1998-10-14 04:28:49 +00:00
Gilbert Ramirez 4ef47e6cfb Added preliminary support for NetBIOS Name Services over IPX and UDP. Note
that these are two very different implementations of NetBIOS name services and
at the protocol level are not similar. I have put the UDP protocol in
packet-nbns.c, since it will be a very big module. I have all of rfc 1002 to
read and implement. I am planning on putting many different NetBIOS over IPX
functions in packet-nbipx.c, however, since there is no RFC or published
standard. I have to hack the protocol, and as such, I do not expect it to be
as full-featured as the IP-world equivalents.

svn path=/trunk/; revision=50
1998-10-14 04:09:15 +00:00
Guy Harris 7f2da15d6b Add a routine to dissect IP or TCP options (and, from a look at RFC
1883, it should, perhaps with some additions, be able to handle IPv6
options as well).

Make the IPv4 and TCP dissectors use it.

Fix a typo in the IP dissector ("Unknon" for "Unknown").

Show the IP and TCP header lengths as byte counts rather than
4-byte-word counts.

Show the protocol field value of an IP header as a name if it's a
protocol we know about.

List the acknowledgment and urgent pointer values in a TCP header only
if the corresponding flag is set.

Make the ETT_ values members of an enum, so that the compiler
automatically assigns them sequential integer values (at least if said
compiler conforms to the ANSI C standard).

svn path=/trunk/; revision=45
1998-10-13 05:40:04 +00:00