From Peter Hawkins: fix the maximum length argument to "tvb_memcpy()".
[obnox/wireshark/wip.git] / doc / ethereal.pod.template
1
2 =head1 NAME
3
4 ethereal - Interactively browse network traffic
5
6 =head1 SYNOPSYS
7
8 B<ethereal>
9 S<[ B<-a> capture autostop condition ] ...>
10 S<[ B<-b> number of ring buffer files ]>
11 S<[ B<-B> byte view height ]>
12 S<[ B<-c> count ]>
13 S<[ B<-f> capture filter expression ]>
14 S<[ B<-h> ]>
15 S<[ B<-i> interface ]> 
16 S<[ B<-k> ]>
17 S<[ B<-l> ]>
18 S<[ B<-m> font ]>
19 S<[ B<-n> ]>
20 S<[ B<-N> resolving flags ] >
21 S<[ B<-o> preference setting ] ...>
22 S<[ B<-p> ]>
23 S<[ B<-P> packet list height ]>
24 S<[ B<-Q> ]>
25 S<[ B<-r> infile ]>
26 S<[ B<-R> display filter expression ]>
27 S<[ B<-S> ]>
28 S<[ B<-s> snaplen ]>
29 S<[ B<-T> tree view height ]>
30 S<[ B<-t> time stamp format ]>
31 S<[ B<-v> ]>
32 S<[ B<-w> savefile]>
33 S<[ infile ]>
34
35 =head1 DESCRIPTION
36
37 B<Ethereal> is a GUI network protocol analyzer.  It lets you
38 interactively browse packet data from a live network or from a
39 previously saved capture file.  B<Ethereal>'s native capture file format
40 is B<libpcap> format, which is also the format used by B<tcpdump> and
41 various other tools.  In addition, B<Ethereal> can read capture files
42 from B<snoop> and B<atmsnoop>, Shomiti/Finisar B<Surveyor>, Novell
43 B<LANalyzer>, Network General/Network Associates DOS-based B<Sniffer>
44 (compressed or uncompressed), Microsoft B<Network Monitor>, AIX's
45 B<iptrace>, Cinco Networks B<NetXRay>, Network Associates Windows-based
46 B<Sniffer>, AG Group/WildPackets B<EtherPeek>/B<TokenPeek>/B<AiroPeek>,
47 B<RADCOM>'s WAN/LAN analyzer, B<Lucent/Ascend> router debug output,
48 HP-UX's B<nettl>, the dump output from B<Toshiba's> ISDN routers, the
49 output from B<i4btrace> from the ISDN4BSD project, the output in
50 B<IPLog> format from the Cisco Secure Intrusion Detection System, B<pppd
51 logs> (pppdump format), the output from VMS's B<TCPIPtrace> utility, the
52 text output from the B<DBS Etherwatch> VMS utility, and traffic capture
53 files from Visual Networks' Visual UpTime.  There is no need to tell
54 B<Ethereal> what type of file you are reading; it will determine the
55 file type by itself.  B<Ethereal> is also capable of reading any of
56 these file formats if they are compressed using gzip.  B<Ethereal>
57 recognizes this directly from the file; the '.gz' extension is not
58 required for this purpose.
59
60 Like other protocol analyzers, B<Ethereal>'s main window shows 3 views
61 of a packet.  It shows a summary line, briefly describing what the
62 packet is.  A protocol tree is shown, allowing you to drill down to
63 exact protocol or field that you interested in.  Finally, a hex dump
64 shows you exactly what the packet looks like when it goes over the wire.
65
66 In addition, B<Ethereal> has some features that make it unique.  It can
67 assemble all the packets in a TCP conversation and show you the ASCII
68 (or EBCDIC, or hex) data in that conversation.  Display filters in
69 B<Ethereal> are very powerful; more fields are filterable in B<Ethereal>
70 than in other protocol analyzers, and the syntax you can use to create
71 your filters is richer.  As B<Ethereal> progresses, expect more and more
72 protocol fields to be allowed in display filters.
73
74 Packet capturing is performed with the pcap library.  The capture filter
75 syntax follows the rules of the pcap library.  This syntax is different
76 from the display filter syntax.
77
78 Compressed file support uses (and therefore requires) the zlib library. 
79 If the zlib library is not present, B<Ethereal> will compile, but will
80 be unable to read compressed files.
81
82 The pathname of a capture file to be read can be specified with the
83 B<-r> option or can be specified as a command-line argument.
84
85 =head1 OPTIONS
86
87 =over 4
88
89 Most users will want to start B<Ethereal> without options and configure
90 it from the menus instead. Those users may just skip this section.
91
92 =item -a
93
94 Specify a criterion that specifies when B<Ethereal> is to stop writing
95 to a capture file.  The criterion is of the form I<test>B<:>I<value>,
96 where I<test> is one of:
97
98 =for man .RS
99
100 =for html <P><DL>
101
102 =item duration
103
104 Stop writing to a capture file after I<value> seconds have elapsed.
105
106 =item filesize
107
108 Stop writing to a capture file after it reaches a size of I<value>
109 kilobytes (where a kilobyte is 1000 bytes, not 1024 bytes).
110
111 =for man .RE
112
113 =for html </DL>
114
115 =item -b
116
117 If a maximum capture file size was specified, cause B<Ethereal> to run
118 in "ring buffer" mode, with the specified number of files.  In "ring
119 buffer" mode, B<Ethereal> will write to several capture files; the name
120 of the first file, while the capture is in progress, will be the name
121 specified by the B<-w> flag, and subsequent files with have .I<n>
122 appended, with I<n> counting up.
123
124 When the first capture file fills up, B<Ethereal> will switch to writing
125 to the next file, until it fills up the last file, at which point it'll
126 discard the data in the first file and start writing to that file.  When
127 that file fills up, B<Ethereal> will discard the data in the next file
128 and start writing to it, and so on.
129
130 When the capture completes, the files will be renamed to have names
131 based on the number of the file and on the date and time at which
132 packets most recently started being written to the file.
133
134 =item -B
135
136 Set the initial height of the byte view (bottom) pane.
137
138 =item -c
139
140 Set the default number of packets to read when capturing live
141 data.
142
143 =item -f
144
145 Set the capture filter expression.
146
147 =item -h
148
149 Print the version and options and exit.
150
151 =item -i
152
153 Set the name of the network interface or pipe to use for live packet capture.
154 Network interface names should match one of the names listed in "B<netstat -i>"
155 or "B<ifconfig -a>".
156 Pipe names should be either the name of a FIFO (named pipe) or ``-'' to read
157 data from the standard input. Data read from pipes must be in libpcap format.
158
159 =item -k
160
161 Start the capture session immediately.  If the B<-i> flag was
162 specified, the capture uses the specified interface.  Otherwise,
163 B<Ethereal> searches the list of interfaces, choosing the first
164 non-loopback interface if there are any non-loopback interfaces, and
165 choosing the first loopback interface if there are no non-loopback
166 interfaces; if there are no interfaces, B<Ethereal> reports an error and
167 doesn't start the capture.
168
169 =item -l
170
171 Turn on automatic scrolling if the packet display is being updated
172 automatically as packets arrive during a capture (as specified by the
173 B<-S> flag).
174
175 =item -m
176
177 Set the name of the font used by B<Ethereal> for most text. 
178 B<Ethereal> will construct the name of the bold font used for the data
179 in the byte view pane that corresponds to the field selected in the
180 protocol tree pane from the name of the main text font.
181
182 =item -n
183
184 Disable network object name resolution (such as hostname, TCP and UDP port
185 names).
186
187 =item -N
188
189 Turn on name resolving for particular types of addresses and port
190 numbers, with name resolving for other types of addresses and port
191 numbers turned off; the argument is a string that may contain the
192 letters B<m> to enable MAC address resolution, B<n> to enable network
193 address resolution, and B<t> to enable transport-layer port number
194 resolution.  This overrides B<-n> if both B<-N> and B<-n> are present.
195
196 =item -o
197
198 Set a preference value, overriding the default value and any value read
199 from a preference file.  The argument to the flag is a string of the
200 form I<prefname>B<:>I<value>, where I<prefname> is the name of the
201 preference (which is the same name that would appear in the preference
202 file), and I<value> is the value to which it should be set.
203
204 =item -p
205
206 I<Don't> put the interface into promiscuous mode.  Note that the
207 interface might be in promiscuous mode for some other reason; hence,
208 B<-p> cannot be used to ensure that the only traffic that is captured is
209 traffic sent to or from the machine on which B<Ethereal> is running,
210 broadcast traffic, and multicast traffic to addresses received by that
211 machine.
212
213 =item -P
214
215 Set the initial height of the packet list (top) pane.
216
217 =item -Q
218
219 Cause B<Ethereal> to exit after the end of capture session (useful in
220 batch mode with B<-c> option for instance); this option requires the
221 B<-i> and B<-w> parameters.
222
223 =item -r
224
225 Read packet data from I<infile>.
226
227 =item -R
228
229 When reading a capture file specified with the B<-r> flag, causes the
230 specified filter (which uses the syntax of display filters, rather than
231 that of capture filters) to be applied to all packets read from the
232 capture file; packets not matching the filter are discarded.
233
234 =item -S
235
236 Perform the live packet capture in a separate process, and automatically
237 update the packet display as packets are seen.
238
239 =item -s
240
241 Set the default snapshot length to use when capturing live data. 
242 No more than I<snaplen> bytes of each network packet will be read into
243 memory, or saved to disk.
244
245 =item -T
246
247 Set the initial height of the tree view (middle) pane.
248
249 =item -t
250
251 Set the format of the packet timestamp displayed in the packet list
252 window.  The format can be one of 'r' (relative), 'a' (absolute), 'ad'
253 (absolute with date), or 'd' (delta).  The relative time is the time
254 elapsed between the first packet and the current packet.  The absolute
255 time is the actual time the packet was captured, with no date displayed;
256 the absolute date and time is the actual time and date the packet was
257 captured.  The delta time is the time since the previous packet was
258 captured.  The default is relative.
259
260 =item -v
261
262 Print the version and exit.
263
264 =item -w
265
266 Set the default capture file name.
267
268 =back
269
270 =head1 INTERFACE
271
272 =head2 MENU ITEMS
273
274 =over 4
275
276 =item File:Open, File:Close, File:Reload
277
278 Open, close, or reload a capture file.  The I<File:Open> dialog box
279 allows a filter to be specified; when the capture file is read, the
280 filter is applied to all packets read from the file, and packets not
281 matching the filter are discarded.
282
283 =item File:Save, File:Save As
284
285 Save the current capture, or the packets currently displayed from that
286 capture, to a file.  Check boxes let you select whether to save all
287 packets, or just those that have passed the current display filter and/or
288 those that are currently marked, and an option menu lets you select (from 
289 a list of file formats in which at particular capture, or the packets 
290 currently displayed from that capture, can be saved), a file format in 
291 which to save it.
292
293 =item File:Print
294
295 Print, for all the packets in the current capture, either the summary
296 line for the packet or the protocol tree view of the packet; when
297 printing the protocol tree view, the hex dump of the packet can be
298 printed as well.  Printing options can be set with the
299 I<Edit:Preferences> menu item, or in the dialog box popped up by this
300 item.
301
302 =item File:Print Packet
303
304 Print a fully-expanded protocol tree view of the currently-selected
305 packet.  Printing options can be set with the I<Edit:Preferences> menu
306 item.
307
308 =item File:Quit
309
310 Exit the application.
311
312 =item Edit:Find Frame
313
314 Search forward or backward, starting with the currently selected packet
315 (or the most recently selected packet, if no packet is selected), for a
316 packet matching a given display filter expression.
317
318 =item Edit:Find Next
319
320 Search forward, starting with the currently selected packet
321 (or the most recently selected packet, if no packet is selected), for a
322 packet matching the filter from the previous search.
323
324 =item Edit:Find Previous
325
326 Search backward, starting with the currently selected packet (or the
327 most recently selected packet, if no packet is selected), for a packet
328 matching the filter from the previous search.
329
330 =item Edit:Go To Frame
331
332 Go to a particular numbered packet.
333
334 =item Edit:Mark Frame
335
336 Mark (or unmark if currently marked) the selected packet.  The field
337 "frame.marked" is set for frames that are marked, so that, for example,
338 a display filters can be used to display only marked frames, and so that
339 the L<Find Frame> menu item can be used to find the next or previous
340 marked frame.
341
342 =item Edit:Mark All Frames
343
344 Mark all packets that are currently displayed.
345
346 =item Edit:Unmark All Frames
347
348 Unmark all packets that are currently displayed.
349
350 =item Edit:Preferences
351
352 Set the packet printing, column display, TCP stream coloring, and GUI
353 options (see L<"Preferences"> below).
354
355 =item Edit:Capture Filters
356
357 Edit the saved list of capture filters, allowing filters to be added,
358 changed, or deleted.
359
360 =item Edit:Display Filters
361
362 Edit the saved list of display filters, allowing filters to be added,
363 changed, or deleted.
364
365 =item Edit:Protocols
366
367 Edit the list of protocols, allowing protocol dissection to be 
368 enabled or disabled.
369
370 =item Capture:Start
371
372 Initiate a live packet capture (see L<"Capture Options"> below).  A
373 temporary file will be created to hold the capture.  The location of the
374 file can be chosen by setting your TMPDIR environment variable before
375 starting B<Ethereal>.  Otherwise, the default TMPDIR location is
376 system-dependent, but is likely either F</var/tmp> or F</tmp>.
377
378 =item Capture:Stop
379
380 In a capture that updates the packet display as packets arrive (so that
381 Ethereal responds to user input other than pressing the "Stop" button in
382 the capture packet statistics dialog box), stop the capture.
383
384 =item Display:Options
385
386 Pop up a dialog allowing you to set the format of the packet timestamp
387 displayed in the packet list window to relative, absolute, absolute date
388 and time, or delta, to enable or disable the automatic scrolling of the
389 packet list while a live capture is in progress or to enable or disable
390 translation of addresses to names in the display.
391
392 =item Display:Match
393
394 Create a display filter, or add to the display filter strip at the
395 bottom, a display filter based on the data currently highlighted in the
396 protocol tree, and apply the filter.
397
398 If that data is a field that can be tested in a display filter
399 expression, the display filter will test that field; otherwise, the
400 display filter will be based on absolute offset within the packet, and
401 so could be unreliable if the packet contains protocols with
402 variable-length headers, such as a source-routed token-ring packet.
403
404 The B<Selected> option creates a display filter that tests for a match
405 of the data; the B<Not Selected> option creates a display filter that
406 tests for a non-match of the data.  The B<And Selected>, B<Or Selected>,
407 B<And Not Selected>, and B<Or Not Selected> options add to the end of
408 the display filter in the strip at the bottom an AND or OR operator
409 followed by the new display filter expression.
410
411 =item Display:Prepare
412
413 Create a display filter, or add to the display filter strip at the
414 bottom, a display filter based on the data currently highlighted in the
415 protocol tree, but don't apply the filter.
416
417 =item Display:Colorize Display
418
419 Change the foreground and background colors of the packet information in
420 the list of packets, based upon display filters.  The list of display
421 filters is applied to each packet sequentially.  After the first display
422 filter matches a packet, any additional display filters in the list are
423 ignored.  Therefore, if you are filtering on the existence of protocols,
424 you should list the higher-level protocols first, and the lower-level
425 protocols last.
426
427 =item Display:Collapse All
428
429 Collapse the protocol tree branches.
430
431 =item Display:Expand All
432
433 Expand all branches of the protocol tree.
434
435 =item Display:Expand All
436
437 Expands all branches of the protocol tree.
438
439 =item Display:Show Packet In New Window
440
441 Create a new window containing a protocol tree view and a hex dump
442 window of the currently selected packet; this window will continue to
443 display that packet's protocol tree and data even if another packet is
444 selected.
445
446 =item Display:User Specified Decodes
447
448 Create a new window showing whether any protocol ID to dissector
449 mappings have been changed by the user.  This window also allows the
450 user to reset all decodes to their default values.
451
452 =item Tools:Plugins
453
454 See what dynamically loadable dissector plugin modules have been loaded
455 (see I<"Plugins"> below).
456
457 =item Tools:Follow TCP Stream
458
459 If you have a TCP packet selected, display the contents of the data
460 stream for the TCP connection to which that packet belongs, as text, in
461 a separate window, and leave the list of packets in a filtered state,
462 with only those packets that are part of that TCP connection being
463 displayed.  You can revert to your old view by pressing ENTER in the
464 display filter text box, thereby invoking your old display filter (or
465 resetting it back to no display filter).
466
467 The window in which the data stream is displayed lets you select whether
468 to display:
469
470 =over 4
471
472 =item
473
474 whether to display the entire conversation, or one or the other side of
475 it;
476
477 =item
478
479 whether the data being displayed is to be treated as ASCII or EBCDIC
480 text or as raw hex data;
481
482 =back
483
484 =back
485
486 =over 4
487
488 =item
489
490 and lets you print what's currently being displayed, using the same
491 print options that are used for the I<File:Print Packet> menu item, or
492 save it as text to a file.
493
494 =back
495
496 =item Tools:Decode As
497
498 If you have a packet selected, present a dialog allowing you to change
499 which dissectors are used to decode this packet.  The dialog has one
500 panel each for the link layer, network layer and transport layer
501 protocol/port numbers, and will allow each of these to be changed
502 independently.  For example, if the selected packet is a TCP packet to
503 port 12345, using this dialog you can instruct Ethereal to decode all
504 packets to or from that TCP port as HTTP packets.
505
506 =item Tools:Protocol Hierarchy Statistics
507
508 Show the number of packets, and the number of bytes in those packets,
509 for each protocol in the trace.  It organizes the protocols in the same
510 hierarchy in which they were found in the trace.  Besides counting the
511 packets in which the protocol exists, a count is also made for packets
512 in which the protocol is the last protocol in the stack.  These
513 last-protocol counts show you how many packets (and the byte count
514 associated with those packets) B<ended> in a particular protocol.  In
515 the table, they are listed under "End Packets" and "End Bytes".
516
517 =head2 WINDOWS
518
519 =over 4
520
521 =item Main Window
522
523 The main window is split into three panes.  You can resize each pane using
524 a "thumb" at the right end of each divider line.  Below the panes is a
525 strip that shows the current filter and informational text.
526
527 =over 6
528
529 =item Top Pane
530
531 The top pane contains the list of network packets that you can scroll
532 through and select.  By default, the packet number, packet timestamp,
533 source and destination addresses, protocol, and description are
534 displayed for each packet; the I<Columns> page in the dialog box popped
535 up by I<Edit:Preferences> lets you change this (although, unfortunately,
536 you currently have to save the preferences, and exit and restart
537 Ethereal, for those changes to take effect).
538
539 If you click on the heading for a column, the display will be sorted by
540 that column; clicking on the heading again will reverse the sort order
541 for that column.
542
543 An effort is made to display information as high up the protocol stack
544 as possible, e.g. IP addresses are displayed for IP packets, but the
545 MAC layer address is displayed for unknown packet types.
546
547 The right mouse button can be used to pop up a menu of operations.
548
549 The middle mouse button can be used to mark a packet.
550
551 =item Middle Pane
552
553 The middle pane contains a I<protocol tree> for the currently-selected
554 packet.  The tree displays each field and its value in each protocol
555 header in the stack.  The right mouse button can be used to pop up a
556 menu of operations.
557
558 =item Bottom Pane
559
560 The lowest pane contains a hex dump of the actual packet data. 
561 Selecting a field in the I<protocol tree> highlights the corresponding
562 bytes in this section.
563
564 The right mouse button can be used to pop up a menu of operations.
565
566 =item Current Filter
567
568 A display filter can be entered into the strip at the bottom. 
569 A filter for HTTP, HTTPS, and DNS traffic might look like this:
570
571   tcp.port == 80 || tcp.port == 443 || tcp.port == 53
572
573 Selecting the I<Filter:> button lets you choose from a list of named
574 filters that you can optionally save.  Pressing the Return or Enter
575 keys, or selecting the I<Apply> button, will cause the filter to be
576 applied to the current list of packets.  Selecting the I<Reset> button
577 clears the display filter so that all packets are displayed.
578
579 =back
580
581 =item Preferences
582
583 The I<Preferences> dialog lets you control various personal preferences
584 for the behavior of B<Ethereal>.
585
586 =over 6
587
588 =item Printing Preferences
589
590 The radio buttons at the top of the I<Printing> page allow you choose
591 between printing packets with the I<File:Print Packet> menu item as text
592 or PostScript, and sending the output directly to a command or saving it
593 to a file.  The I<Command:> text entry box, on UNIX-compatible systems,
594 is the command to send files to (usually B<lpr>), and the I<File:> entry
595 box lets you enter the name of the file you wish to save to. 
596 Additionally, you can select the I<File:> button to browse the file
597 system for a particular save file.
598
599 =item Column Preferences
600
601 The I<Columns> page lets you specify the number, title, and format
602 of each column in the packet list.
603
604 The I<Column title> entry is used to specify the title of the column
605 displayed at the top of the packet list.  The type of data that the column
606 displays can be specified using the I<Column format> option menu.
607 The row of buttons on the left perform the following actions:
608
609 =over 6
610
611 =item Add New
612
613 Adds a new column to the list.
614
615 =item Delete
616
617 Deletes the currently selected list item.
618
619 =item Up / Down
620
621 Moves the selected list item up or down one position.
622
623 =item OK
624
625 Currently has no effect.
626
627 =item Save
628
629 Saves the current column format as the default.
630
631 =item Cancel
632
633 Closes the dialog without making any changes.
634
635 =back
636
637 =item TCP Streams Preferences
638
639 The I<TCP Streams> page can be used to change the color of the text
640 displayed in the TCP stream window.  To change a color, simply select
641 an attribute from the "Set:" menu and use the color selector to get the
642 desired color.  The new text colors are displayed in a sample window.
643
644 =item User Interface Preferences
645
646 The I<User Interface> page is used to modify small aspects of the GUI to
647 your own personal taste:
648
649 =over 6
650
651 =item Scrollbars
652
653 The vertical scrollbars in the three panes can be set to be either on
654 the left or the right. 
655
656 =item Selection Bars
657
658 The selection bar in the packet list and protocol tree can have either a
659 "browse" or "select" behavior.  If the selection bar has a "browse"
660 behavior, the arrow keys will move an outline of the selection bar,
661 allowing you to browse the rest of the list or tree without changing the
662 selection until you press the space bar.  If the selection bar has a
663 "select" behavior, the arrow keys will move the selection bar and change
664 the selection to the new item in the packet list or protocol tree.
665
666 =item Tree Line Style
667
668 Trees can be drawn with no lines, solid lines, or dotted lines between
669 items, or can be drawn with "tab" headings.
670
671 =item Tree Expander Style
672
673 The expander item that can be clicked to show or hide items under a tree
674 item can be omitted (note that this will prevent you from changing
675 whether those items are shown or hidden!), or can be drawn as squares,
676 triangles, or circles.
677
678 =item Hex Display
679
680 The highlight method in the hex dump display for the selected protocol
681 item can be set to use either inverse video, or bold characters.
682
683 =item Save Window Position
684
685 If this item is selected, the position of the main Ethereal window will
686 be saved when Ethereal exits, and used when Ethereal is started again.
687
688 =item Save Window Size
689
690 If this item is selected, the size of the main Ethereal window will
691 be saved when Ethereal exits, and used when Ethereal is started again.
692
693 =item Fonts
694
695 The "Font..." button lets you select the font to be used for most text.
696
697 =item Colors
698
699 The "Colors..." button lets you select the colors to be used for instance
700 for the marked frames.
701
702 =back
703
704 =item Capture Preferences
705
706 The I<Capture> page lets you specify various parameters for capturing
707 live packet data; these are used the first time a capture is started.
708
709 The I<Interface:> combo box lets you specify the interface from which to
710 capture packet data, or the name of a FIFO from which to get the packet
711 data.  You can specify whether the interface is to be put in promiscuous
712 mode or not with the I<Capture packets in promiscuous mode> check box,
713 can specify that the display should be updated as packets are captured
714 with the I<Update list of packets in real time> check box, and can
715 specify whether in such a capture the packet list pane should scroll to
716 show the most recently captured packets with the I<Automatic scrolling
717 in live capture> check box.
718
719 =item Protocol Preferences
720
721 There are also pages for various protocols that Ethereal dissects,
722 controlling the way Ethereal handles those protocols.
723
724 =back
725
726 =item Edit Capture Filter List
727
728 =item Edit Display Filter List
729
730 =item Capture Filter
731
732 =item Display Filter
733
734 =item Read Filter
735
736 =item Search Filter
737
738 The I<Edit Capture Filter List> dialog lets you create, modify, and
739 delete capture filters, and the I<Edit Display Filter List> dialog lets
740 you create, modify, and delete display filters.
741
742 The I<Capture Filter> dialog lets you do all of the editing operations
743 listed, and also lets you choose or construct a filter to be used when
744 capturing packets.
745
746 The I<Display Filter> dialog lets you do all of the editing operations
747 listed, and also lets you choose or construct a filter to be used to
748 filter the current capture being viewed.
749
750 The I<Read Filter> dialog lets you do all of the editing operations
751 listed, and also lets you choose or construct a filter to be used to
752 as a read filter for a capture file you open.
753
754 The I<Search Filter> dialog lets you do all of the editing operations
755 listed, and also lets you choose or construct a filter expression to be
756 used in a find operation.
757
758 In all of those dialogs, the I<Filter name> entry specifies a
759 descriptive name for a filter, e.g.  B<Web and DNS traffic>.  The
760 I<Filter string> entry is the text that actually describes the filtering
761 action to take, as described above.The dialog buttons perform the
762 following actions:
763
764 =over 6
765
766 =item New
767
768 If there is text in the two entry boxes, creates a new associated list
769 item.
770
771 =item Change
772
773 Modifies the currently selected list item to match what's in the entry
774 boxes.
775
776 =item Copy
777
778 Makes a copy of the currently selected list item.
779
780 =item Delete
781
782 Deletes the currently selected list item.
783
784 =item Add Expression...
785
786 For display filter expressions, pops up a dialog box to allow you to
787 construct a filter expression to test a particular field; it offers
788 lists of field names, and, when appropriate, lists from which to select
789 tests to perform on the field and values with which to compare it.  In
790 that dialog box, the OK button will cause the filter expression you
791 constructed to be entered into the I<Filter string> entry at the current
792 cursor position.
793
794 =item OK
795
796 In the I<Capture Filter> dialog, closes the dialog box and makes the
797 filter in the I<Filter string> entry the filter in the I<Capture
798 Preferences> dialog.  In the I<Display Filter> dialog, closes the dialog
799 box and makes the filter in the I<Filter string> entry the current
800 display filter, and applies it to the current capture.  In the I<Read
801 Filter> dialog, closes the dialog box and makes the filter in the
802 I<Filter string> entry the filter in the I<Open Capture File> dialog. 
803 In the I<Search Filter> dialog, closes the dialog box and makes the
804 filter in the I<Filter string> entry the filter in the I<Find Frame>
805 dialog.
806
807 =item Apply
808
809 Makes the filter in the I<Filter string> entry the current display
810 filter, and applies it to the current capture.
811
812 =item Save
813
814 Saves the current filter list in F<$HOME/.ethereal/cfilters> on
815 UNIX-compatible systems, and F<%APPDATA%\Ethereal\cfilters> (or, if
816 %APPDATA% isn't defined,
817 F<%USERPROFILE%\Application Data\Ethereal\cfilters>)
818 on Windows systems, if the list of filters being edited is the list of
819 capture filters, or in F<$HOME/.ethereal/dfilters> on UNIX-compatible
820 systems, and F<%APPDATA%\Ethereal\dfilters> (or, if %APPDATA% isn't
821 defined, F<%USERPROFILE%\Application Data\Ethereal\dfilters>) on Windows
822 systems, if the list of filters being edited is the list of display
823 filters.
824
825 =item Close
826
827 Closes the dialog without doing anything with the filter in the I<Filter
828 string> entry.
829
830 =back
831
832 =item Capture Options
833
834 The I<Capture Options> dialog lets you specify various parameters for
835 capturing live packet data.
836
837 The I<Interface:> field lets you specify the interface from which to
838 capture packet data or a command from which to get the packet data via a
839 pipe.
840
841 The I<Limit each packet to ... bytes> check box and field lets you
842 specify a maximum number of bytes per packet to capture and save; if the
843 check box is not checked, the limit will be 65535 bytes.
844
845 The I<Capture packets in promiscuous mode> check box lets you specify
846 whether the interface should be put into promiscuous mode when
847 capturing.
848
849 The I<Filter:> entry lets you specify the capture filter using a
850 tcpdump-style filter string as described above.
851
852 The I<File:> entry lets you specify the file into which captured packets
853 should be saved, as in the I<Printer Options> dialog above.  If not
854 specified, the captured packets will be saved in a temporary file; you
855 can save those packets to a file with the I<File:Save As> menu item.
856
857 The I<Use ring buffer> check box lets you specify that the capture
858 should be done in "ring buffer" mode; the I<Number of files> field
859 lets you specify the number of files in the ring buffer.
860
861 The I<Update list of packets in real time> check box lets you specify
862 whether the display should be updated as packets are captured and, if
863 you specify that, the I<Automatic scrolling in live capture> check box
864 lets you specify the packet list pane should automatically scroll to
865 show the most recently captured packets as new packets arrive.
866
867 The I<Stop capture after ... packet(s) captured> check box and field let
868 you specify that Ethereal should stop capturing after having captured
869 some number of packets; if the check box is not checked, Ethereal will
870 not stop capturing at some fixed number of captured packets.
871
872 If "ring buffer" mode is not specified, the I<Stop capture after ...
873 kilobyte(s) captured> check box and field let you specify that Ethereal
874 should stop capturing after the the file to which captured packets are
875 being saved grows as large as or larger than some specified number of
876 kilobytes (where a kilobyte is 1000 bytes, not 1024 bytes).  If the
877 check box is not checked, Ethereal will not stop capturing at some
878 capture file size (although the operating system on which Ethereal is
879 running, or the available disk space, may still limit the maximum size
880 of a capture file).
881
882 If "ring buffer" mode is specified, that field becomes the I<Rotate
883 capture file very ...  kilobyte(s)> field, and specifies the number
884 of kilobytes at which to start writing to a new ring buffer file; the
885 check box is forced to be checked, as "ring buffer" mode requires a file
886 size to be specified.
887
888 The I<Stop capture after ...  second(s)> check box and field let you
889 specify that Ethereal should stop capturing after it has been capturing
890 for some number of seconds; if the check box is not checked, Ethereal
891 will not stop capturing after some fixed time has elapsed.
892
893 The I<Enable MAC name resolution>, I<Enable network name resolution> and
894 I<Enable transport name resolution> check boxes let you specify whether
895 MAC addresses, network addresses, and transport-layer port numbers
896 should be translated to names.
897
898 =item Display Options
899
900 The I<Display Options> dialog lets you specify the format of the time
901 stamp in the packet list.  You can select "Time of day" for absolute
902 time stamps, "Date and time of day" for absolute time stamps with the
903 date, "Seconds since beginning of capture" for relative time stamps, or
904 "Seconds since previous frame" for delta time stamps.  You can also
905 specify whether, when the display is updated as packets are captured,
906 the list should automatically scroll to show the most recently captured
907 packets or not and whether addresses or port numbers should be
908 translated to names in the display on a MAC, network and transport layer
909 basis.
910
911 =item Plugins
912
913 The I<Plugins> dialog lets you view the dissector plugin modules
914 available on your system.
915
916 The I<Plugins List> shows the name and version of each dissector plugin
917 module found on your system.  The plugins are searched in the following
918 directories: the F<lib/ethereal/plugins/$VERSION> directory under the
919 main installation directory (for example,
920 F</usr/local/lib/ethereal/plugins/$VERSION>),
921 F</usr/lib/ethereal/plugins/$VERSION>,
922 F</usr/local/lib/ethereal/plugins/$VERSION>, and
923 F<$HOME/.ethereal/plugins> on UNIX-compatible systems, and in the
924 F<plugins\$VERSION> directory under the main installation directory (for
925 example, F<C:\Program Files\Ethereal\plugins\$VERSION>) and
926 F<%APPDATA%\Ethereal\plugins\$VERSION> (or, if %APPDATA% isn't defined,
927 F<%USERPROFILE%\Application Data\Ethereal\plugins\$VERSION>) on Windows
928 systems; $VERSION is the version number of the plugin interface, which
929 is typically the version number of Ethereal.  Note that a dissector
930 plugin module may support more than one protocol; there is not
931 necessarily a one-to-one correspondence between dissector plugin modules
932 and protocols.  Protocols supported by a dissector plugin module are
933 enabled and disabled using the I<Edit:Protocols> dialog box, just as
934 protocols built into Ethereal are.
935
936 =head1 CAPTURE FILTER SYNTAX
937
938 See manual page of tcpdump(8).
939
940 =head1 DISPLAY FILTER SYNTAX
941
942 Display filters help you remove the noise from a packet trace and let
943 you see only the packets that interest you.  If a packet meets the
944 requirements expressed in your display filter, then it is displayed in
945 the list of packets.  Display filters let you compare the fields within
946 a protocol against a specific value, compare fields against fields, and
947 to check the existence of specified fields or protocols.
948
949 The simplest display filter allows you to check for the existence of a
950 protocol or field.  If you want to see all packets which contain the IPX
951 protocol, the filter would be "ipx".  (Without the quotation marks) To
952 see all packets that contain a Token-Ring RIF field, use "tr.rif".
953
954 Fields can also be compared against values.  The comparison operators
955 can be expressed either through C-like symbols, or through English-like
956 abbreviations:
957
958     eq, ==    Equal
959     ne, !=    Not equal
960     gt, >     Greater than
961     lt, <     Less Than
962     ge, >=    Greater than or Equal to
963     le, <=    Less than or Equal to
964
965 Furthermore, each protocol field is typed. The types are:
966
967     Unsigned integer (either 8-bit, 16-bit, 24-bit, or 32-bit)
968     Signed integer (either 8-bit, 16-bit, 24-bit, or 32-bit)
969     Boolean
970     Ethernet address (6 bytes)
971     Byte string (n-number of bytes)
972     IPv4 address
973     IPv6 address
974     IPX network number
975     String (text)
976     Double-precision floating point number
977
978 An integer may be expressed in decimal, octal, or hexadecimal notation. 
979 The following three display filters are equivalent:
980
981     frame.pkt_len > 10
982     frame.pkt_len > 012
983     frame.pkt_len > 0xa
984
985 Boolean values are either true or false.  In a display filter expression
986 testing the value of a Boolean field, "true" is expressed as 1 or any
987 other non-zero value, and "false" is expressed as zero.  For example, a
988 token-ring packet's source route field is boolean.  To find any
989 source-routed packets, a display filter would be:
990
991     tr.sr == 1
992
993 Non source-routed packets can be found with:
994
995     tr.sr == 0
996
997 Ethernet addresses, as well as a string of bytes, are represented in hex
998 digits.  The hex digits may be separated by colons, periods, or hyphens:
999
1000     fddi.dst eq ff:ff:ff:ff:ff:ff
1001     ipx.srcnode == 0.0.0.0.0.1
1002     eth.src == aa-aa-aa-aa-aa-aa
1003
1004 If a string of bytes contains only one byte, then it is represented as
1005 an unsigned integer.  That is, if you are testing for hex value 'ff' in
1006 a one-byte byte-string, you must compare it agains '0xff' and not 'ff'. 
1007
1008 IPv4 addresses can be represented in either dotted decimal notation, or
1009 by using the hostname:
1010
1011     ip.dst eq www.mit.edu
1012     ip.src == 192.168.1.1
1013
1014 IPv4 addresses can be compared with the same logical relations as numbers:
1015 eq, ne, gt, ge, lt, and le.  The IPv4 address is stored in host order,
1016 so you do not have to worry about how the endianness of an IPv4 address
1017 when using it in a display filter.
1018
1019 Classless InterDomain Routing (CIDR) notation can be used to test if an
1020 IPv4 address is in a certain subnet.  For example, this display filter
1021 will find all packets in the 129.111 Class-B network:
1022
1023     ip.addr == 129.111.0.0/16
1024
1025 Remember, the number after the slash represents the number of bits used
1026 to represent the network.  CIDR notation can also be used with
1027 hostnames, in this example of finding IP addresses on the same Class C
1028 network as 'sneezy':
1029
1030     ip.addr eq sneezy/24
1031
1032 The CIDR notation can only be used on IP addresses or hostnames, not in
1033 variable names.  So, a display filter like "ip.src/24 == ip.dst/24" is
1034 not valid.  (yet)
1035
1036 IPX networks are represented by unsigned 32-bit integers.  Most likely
1037 you will be using hexadecimal when testing for IPX network values:
1038
1039     ipx.srcnet == 0xc0a82c00
1040
1041 A slice operator also exists.  You can check the substring
1042 (byte-string) of any protocol or field.  For example, you can filter on
1043 the vendor portion of an ethernet address (the first three bytes) like
1044 this:
1045
1046     eth.src[0:3] == 00:00:83
1047
1048 If the length of your byte-slice is only one byte, then it is still
1049 represented in hex, but without the preceding "0x": 
1050
1051     llc[3] == aa
1052
1053 You can use the slice operator on a protocol name, too.  And
1054 remember, the "frame" protocol encompasses the entire packet, allowing
1055 you to look at the nth byte of a packet regardless of its frame type
1056 (Ethernet, token-ring, etc.).
1057
1058     token[0:5] ne 0.0.0.1.1
1059     ipx[0:2] == ff:ff
1060     llc[3:1] eq 0xaa
1061
1062 The following syntax governs slices:
1063
1064         [i:j]   i = start_offset, j = length
1065         [i-j]   i = start_offet, j = end_offset, inclusive.
1066         [i]     i = start_offset, length = 1
1067         [:j]    start_offset = 0, length = j
1068         [i:]    start_offset = i, end_offset = end_of_field
1069
1070 Offsets and lengths can be negative, in which case they indicate the
1071 offset from the B<end> of the field.  Here's how to check the last 4
1072 bytes of a frame:
1073
1074     frame[-4:4] == 0.1.2.3
1075
1076 or
1077
1078     frame[-4:] == 0.1.2.3
1079
1080 You can create complex concatenations of slices using the comma operator:
1081
1082         field[1,3-5,9:] == 01:03:04:05:09:0a:0b
1083
1084 All the above tests can be combined together with logical expressions. 
1085 These too are expressable in C-like syntax or with English-like
1086 abbreviations:
1087
1088     and, &&   Logical AND
1089     or, ||    Logical OR
1090     not, !    Logical NOT
1091
1092 Expressions can be grouped by parentheses as well.  The following are
1093 all valid display filter expression:
1094
1095     tcp.port == 80 and ip.src == 192.168.2.1
1096     not llc
1097     (ipx.srcnet == 0xbad && ipx.srnode == 0.0.0.0.0.1) || ip
1098     tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29
1099
1100 A special caveat must be given regarding fields that occur more than
1101 once per packet.  "ip.addr" occurs twice per IP packet, once for the
1102 source address, and once for the destination address.  Likewise,
1103 tr.rif.ring fields can occur more than once per packet.  The following
1104 two expressions are not equivalent:
1105
1106         ip.addr ne 192.168.4.1
1107     not ip.addr eq 192.168.4.1
1108
1109 The first filter says "show me IP packets where an ip.addr exists that
1110 does not equal 192.168.4.1".  That is, as long as one ip.addr in the
1111 packet does not equal 192.168.44.1, the packet passes the display
1112 filter.  The second filter "don't show me any packets that have at least
1113 one ip.addr field equal to 192.168.4.1".  If one ip.addr is 192.168.4.1,
1114 the packet does not pass.  If B<neither> ip.addr fields is 192.168.4.1,
1115 then the packet passes.
1116
1117 It is easy to think of the 'ne' and 'eq' operators as having an implict
1118 "exists" modifier when dealing with multiply-recurring fields.  "ip.addr
1119 ne 192.168.4.1" can be thought of as "there exists an ip.addr that does
1120 not equal 192.168.4.1".
1121
1122 Be careful with multiply-recurring fields; they can be confusing.
1123
1124 Care must also be taken when using the display filter to remove noise
1125 from the packet trace. If you want to e.g. filter out all IP multicast
1126 packets to address 224.1.2.3, then using:
1127
1128     ip.dst ne 224.1.2.3
1129
1130 may be too restrictive. Filtering with "ip.dst" selects only those
1131 B<IP> packets that satisfy the rule. Any other packets, including all
1132 non-IP packets, will not displayed. For displaying also the non-IP
1133 packets, you can use one of the following two expressions:
1134
1135     not ip or ip.dst ne 224.1.2.3
1136     not ip.addr eq 224.1.2.3
1137
1138 The first filter uses "not ip" to include all non-IP packets and then
1139 lets "ip.dst ne 224.1.2.3" to filter out the unwanted IP packets. The
1140 second filter has already been explained above where filtering with
1141 multiply occuring fields was discussed.
1142
1143 The following is a table of protocol and protocol fields that are
1144 filterable in B<Ethereal>.  The abbreviation of the protocol or field is
1145 given.  This abbreviation is what you use in the display filter.  The
1146 type of the field is also given.
1147
1148 =insert_dfilter_table
1149
1150 =head1 FILES
1151
1152 The F<ethereal.conf> file, which is installed in the F<etc> directory
1153 under the main installation directory (for example, F</usr/local/etc>)
1154 on UNIX-compatible systems, and in the main installation directory (for
1155 example, F<C:\Program Files\Ethereal>) on Windows systems, and the
1156 personal preferences file, which is F<$HOME/.ethereal/preferences> on
1157 UNIX-compatible systems and F<%APPDATA%\Ethereal\preferences> (or, if
1158 %APPDATA% isn't defined,
1159 F<%USERPROFILE%\Application Data\Ethereal\preferences>) on
1160 Windows systems, contain system-wide and personal preference settings,
1161 respectively.  The file contains preference settings of the form
1162 I<prefname>B<:>I<value>, one per line, where I<prefname> is the name of
1163 the preference (which is the same name that would appear in the
1164 preference file), and I<value> is the value to which it should be set;
1165 white space is allowed between B<:> and I<value>.  A preference setting
1166 can be continued on subsequent lines by indenting the continuation lines
1167 with white space.  A B<#> character starts a comment that runs to the
1168 end of the line.
1169
1170 The system-wide preference file is read first, if it exists, overriding
1171 B<Ethereal>'s default values; the personal preferences file is then
1172 read, if it exists, overriding default values and values read from the
1173 system-wide preference file.
1174
1175 Note that whenever the preferences are saved by using the I<Save> button
1176 in the I<Edit:Preferences> dialog box, your personal preferences file
1177 will be overwritten with the new settings, destroying any comments that
1178 were in the file.
1179
1180 The F<ethers> file, which is found in the F</etc> directory on
1181 UNIX-compatible systems, and in the main installation directory (for
1182 example, F<C:\Program Files\Ethereal>) on Windows systems, is consulted
1183 to correlate 6-byte hardware addresses to names.  If an address is not
1184 found in the F<ethers> file, the F<$HOME/.ethereal/ethers> file on
1185 UNIX-compatible systems, and the F<%APPDATA%\Ethereal\ethers> file (or, if
1186 %APPDATA% isn't defined, the
1187 F<%USERPROFILE%\Application Data\Ethereal\ethers> file) on Windows
1188 systems is consulted next.  Each line contains one hardware
1189 address and name, separated by whitespace.  The digits of the hardware
1190 address are separated by either a colon (:), a dash (-), or a period
1191 (.).  The following three lines are valid lines of an ethers file:
1192
1193   ff:ff:ff:ff:ff:ff          Broadcast
1194   c0-00-ff-ff-ff-ff          TR_broadcast
1195   00.00.00.00.00.00          Zero_broadcast
1196
1197 The F<manuf> file, which is installed in the F<etc> directory under the
1198 main installation directory (for example, F</usr/local/etc>) on
1199 UNIX-compatible systems, and in the main installation directory (for
1200 example, F<C:\Program Files\Ethereal>) on Windows systems, matches the
1201 3-byte vendor portion of a 6-byte hardware address with the
1202 manufacturer's name.  The format of the file is the same as the
1203 F<ethers> file, except that each address is three bytes instead of six.
1204
1205 The F<ipxnets> file, which is found in the F</etc> directory on
1206 UNIX-compatible systems, and in the main installation directory (for
1207 example, F<C:\Program Files\Ethereal>) on Windows systems, correlates
1208 4-byte IPX network numbers to names.  If a network number is not found
1209 in the F<ipxnets> file, the F<$HOME/.ethereal/ipxnets> file on
1210 UNIX-compatible systems, and the F<%APPDATA%\Ethereal\ipxnets> file (or,
1211 if %APPDATA% isn't defined, the
1212 F<%USERPROFILE%\Application Data\Ethereal\ipxnets> file)
1213 on Windows systems, is consulted next.  The format is the same as the
1214 F<ethers> file, except that each address if four bytes instead of six. 
1215 Additionally, the address can be represented a single hexadecimal
1216 number, as is more common in the IPX world, rather than four hex octets. 
1217 For example, these four lines are valid lines of an ipxnets file.
1218
1219   C0.A8.2C.00              HR
1220   c0-a8-1c-00              CEO
1221   00:00:BE:EF              IT_Server1
1222   110f                     FileServer3
1223
1224 =head1 SEE ALSO
1225
1226 I<tethereal(1)>, I<editcap(1)>, I<tcpdump(8)>, I<pcap(3)>
1227
1228 =head1 NOTES
1229
1230 The latest version of B<Ethereal> can be found at
1231 B<http://www.ethereal.com>.
1232
1233 =head1 AUTHORS
1234
1235   Original Author
1236   -------- ------
1237   Gerald Combs  <gerald[AT]ethereal.com>
1238
1239
1240   Contributors
1241   ------------
1242   Gilbert Ramirez          <gram[AT]alumni.rice.edu>
1243   Hannes R. Boehm          <hannes[AT]boehm.org>
1244   Mike Hall                <mlh[AT]io.com>
1245   Bobo Rajec               <bobo[AT]bsp-consulting.sk>
1246   Laurent Deniel           <deniel[AT]worldnet.fr>
1247   Don Lafontaine           <lafont02[AT]cn.ca>
1248   Guy Harris               <guy[AT]alum.mit.edu>
1249   Simon Wilkinson          <sxw[AT]dcs.ed.ac.uk>
1250   Joerg Mayer              <jmayer[AT]loplof.de>
1251   Martin Maciaszek         <fastjack[AT]i-s-o.net>
1252   Didier Jorand            <Didier.Jorand[AT]alcatel.fr>
1253   Jun-ichiro itojun Hagino <itojun[AT]iijlab.net>
1254   Richard Sharpe           <sharpe[AT]ns.aus.com>
1255   John McDermott           <jjm[AT]jkintl.com> 
1256   Jeff Jahr                <jjahr[AT]shastanets.com>
1257   Brad Robel-Forrest       <bradr[AT]watchguard.com>
1258   Ashok Narayanan          <ashokn[AT]cisco.com>
1259   Aaron Hillegass          <aaron[AT]classmax.com>
1260   Jason Lango              <jal[AT]netapp.com>
1261   Johan Feyaerts           <Johan.Feyaerts[AT]siemens.atea.be>
1262   Olivier Abad             <oabad[AT]cybercable.fr>
1263   Thierry Andry            <Thierry.Andry[AT]advalvas.be>
1264   Jeff Foster              <jjfoste[AT]woodward.com>
1265   Peter Torvals            <petertv[AT]xoommail.com>
1266   Christophe Tronche       <ch.tronche[AT]computer.org>
1267   Nathan Neulinger         <nneul[AT]umr.edu>
1268   Tomislav Vujec           <tvujec[AT]carnet.hr>
1269   Kojak                    <kojak[AT]bigwig.net>
1270   Uwe Girlich              <Uwe.Girlich[AT]philosys.de>
1271   Warren Young             <tangent[AT]mail.com>
1272   Heikki Vatiainen         <hessu[AT]cs.tut.fi>
1273   Greg Hankins             <gregh[AT]twoguys.org>
1274   Jerry Talkington         <jerryt[AT]netapp.com>
1275   Dave Chapeskie           <dchapes[AT]ddm.on.ca>
1276   James Coe                <jammer[AT]cin.net>
1277   Bert Driehuis            <driehuis[AT]playbeing.org>
1278   Stuart Stanley           <stuarts[AT]mxmail.net>
1279   John Thomes              <john[AT]ensemblecom.com>
1280   Laurent Cazalet          <laurent.cazalet[AT]mailclub.net>
1281   Thomas Parvais           <thomas.parvais[AT]advalvas.be>
1282   Gerrit Gehnen            <G.Gehnen[AT]atrie.de>
1283   Craig Newell             <craign[AT]cheque.uq.edu.au>
1284   Ed Meaney                <emeaney[AT]altiga.com>
1285   Dietmar Petras           <DPetras[AT]ELSA.de> 
1286   Fred Reimer              <fwr[AT]ga.prestige.net>
1287   Florian Lohoff           <flo[AT]rfc822.org>
1288   Jochen Friedrich         <jochen+ethereal[AT]scram.de>
1289   Paul Welchinski          <paul.welchinski[AT]telusplanet.net>
1290   Doug Nazar               <nazard[AT]dragoninc.on.ca>
1291   Andreas Sikkema          <andreas.sikkema[AT]philips.com>
1292   Mark Muhlestein          <mmm[AT]netapp.com>
1293   Graham Bloice            <graham.bloice[AT]trihedral.com>
1294   Ralf Schneider           <ralf.schneider[AT]alcatel.se>
1295   Yaniv Kaul               <ykaul[AT]netvision.net.il>
1296   Paul Ionescu             <ipaul[AT]romsys.ro>
1297   Mark Burton              <markb[AT]ordern.com>
1298   Stefan Raab              <sraab[AT]cisco.com>
1299   Mark Clayton             <clayton[AT]shore.net>
1300   Michael Rozhavsky        <mike[AT]tochna.technion.ac.il>
1301   Dug Song                 <dugsong[AT]monkey.org>
1302   Michael Tuexen           <Michael.Tuexen[AT]icn.siemens.de>
1303   Bruce Korb               <bkorb[AT]sco.com>
1304   Jose Pedro Oliveira      <jpo[AT]di.uminho.pt>
1305   David Frascone           <dave[AT]frascone.com>
1306   Peter Kjellerstedt       <pkj[AT]axis.com>
1307   Phil Techau              <phil_t[AT]altavista.net>
1308   Wes Hardaker             <wjhardaker[AT]ucdavis.edu>
1309   Robert Tsai              <rtsai[AT]netapp.com>
1310   Craig Metz               <cmetz[AT]inner.net>
1311   Per Flock                <per.flock[AT]axis.com>
1312   Jack Keane               <jkeane[AT]OpenReach.com>
1313   Brian Wellington         <bwelling[AT]xbill.org>
1314   Santeri Paavolainen      <santtu[AT]ssh.com>
1315   Ulrich Kiermayr          <uk[AT]ap.univie.ac.at>
1316   Neil Hunter              <neil.hunter[AT]energis-squared.com>
1317   Ralf Holzer              <ralf[AT]well.com>
1318   Craig Rodrigues          <rodrigc[AT]mediaone.net>
1319   Ed Warnicke              <hagbard[AT]physics.rutgers.edu>
1320   Johan Jorgensen          <johan.jorgensen[AT]axis.com>
1321   Frank Singleton          <frank.singleton[AT]ericsson.com>
1322   Kevin Shi                <techishi[AT]ms22.hinet.net>
1323   Mike Frisch              <mfrisch[AT]saturn.tlug.org>
1324   Burke Lau                <burke_lau[AT]agilent.com>
1325   Martti Kuparinen         <martti.kuparinen[AT]iki.fi>
1326   David Hampton            <dhampton[AT]mac.com>
1327   Kent Engström            <kent[AT]unit.liu.se>
1328   Ronnie Sahlberg          <rsahlber[AT]bigpond.net.au>
1329   Alexandre P. Ferreira    <alexandref[AT]spliceip.com.br>
1330   Simharajan Srishylam     <Simharajan.Srishylam[AT]netapp.com>
1331   Greg Kilfoyle            <gregk[AT]redback.com>
1332   James E. Flemer          <jflemer[AT]acm.jhu.edu>
1333   Peter Lei                <peterlei[AT]cisco.com>
1334   Thomas Gimpel            <thomas.gimpel[AT]ferrari.de>
1335   Albert Chin              <china[AT]thewrittenword.com>
1336   Charles Levert           <charles[AT]comm.polymtl.ca>
1337   Todd Sabin               <tas[AT]webspan.net>
1338   Eduardo Pérez Ureta      <eperez[AT]dei.inf.uc3m.es>
1339   Martin Thomas            <martin_a_thomas[AT]yahoo.com>
1340   Hartmut Mueller          <hartmut[AT]wendolene.ping.de>
1341   Michal Melerowicz        <Michal.Melerowicz[AT]nokia.com>
1342   Hannes Gredler           <hannes[AT]juniper.net>
1343   Inoue                    <inoue[AT]ainet.or.jp>
1344   Olivier Biot             <Olivier.Biot[AT]siemens.atea.be>
1345   Patrick Wolfe            <pjw[AT]zocalo.cellular.ameritech.com>
1346   Martin Held              <Martin.Held[AT]icn.siemens.de>
1347   Riaan Swart              <rswart[AT]cs.sun.ac.za>
1348   Christian Lacunza        <celacunza[AT]gmx.net>
1349   Michael Rozhavsky        <mike[AT]tochna.technion.ac.il>
1350   Scott Renfro             <scott[AT]renfro.org>
1351   Juan Toledo              <toledo[AT]users.sourceforge.net>
1352   Jean-Christian Pennetier <jeanchristian.pennetier[AT]rd.francetelecom.fr>
1353   Jian Yu                  <bgp4news[AT]yahoo.com>
1354   Eran Mann                <emann[AT]opticalaccess.com>
1355   Andy Hood                <ahood[AT]westpac.com.au>
1356   Randy McEoin             <rmceoin[AT]pe.net>
1357   Edgar Iglesias           <edgar.iglesias[AT]axis.com>
1358   Martina Obermeier        <Martina.Obermeier[AT]icn.siemens.de>
1359   Javier Achirica          <achirica[AT]ttd.net>
1360   B. Johannessen           <bob[AT]havoq.com>
1361   Thierry Pelle            <thierry.pelle[AT]rd.francetelecom.fr>
1362   Francisco Javier Cabello <fjcabello[AT]vtools.es>
1363   Laurent Rabret           <laurent.rabret[AT]rd.francetelecom.fr>
1364   nuf si                   <gnippiks[AT]yahoo.com>
1365   Jeff Morriss             <jeff.morriss[AT]ulticom.com>
1366   Aamer Akhter             <aakhter[AT]cisco.com>
1367   Pekka Savola             <pekkas[AT]netcore.fi>
1368   David Eisner             <cradle[AT]Glue.umd.edu>
1369   Steve Dickson            <steved[AT]talarian.com>
1370   Markus Seehofer          <mseehofe[AT]nt.hirschmann.de>
1371   Lee Berger               <lberger[AT]roy.org>
1372   Motonori Shindo          <mshindo[AT]mshindo.net>
1373   Terje Krogdahl           <tekr[AT]nextra.com>
1374   Jean-Francois Mule       <jfmule[AT]clarent.com>
1375   Thomas Wittwer           <thomas.wittwer[AT]iclip.ch>
1376   Matthias Nyffenegger     <matthias.nyffenegger[AT]iclip.ch>
1377   Palle Lyckegaard         <Palle[AT]lyckegaard.dk>
1378   Nicolas Balkota          <balkota[AT]mac.com>
1379   Tom Uijldert             <Tom.Uijldert[AT]cmg.nl>
1380   Endoh Akira              <endoh[AT]netmarks.co.jp>
1381   Graeme Hewson            <graeme.hewson[AT]oracle.com>
1382   Pasi Eronen              <pasi.eronen[at]nixu.com>
1383   Georg von Zezschwitz     <gvz[AT]2scale.net>
1384   Steffen Weinreich        <steve[AT]weinreich.org>
1385   Marc Milgram             <mmilgram[AT]arrayinc.com>
1386   Gordon McKinney          <gordon[AT]night-ray.com>
1387   Tim Farley               <tfarley[AT]iss.net>
1388   Daniel Thompson          <daniel.thompson[AT]st.com>
1389   Chris Jepeway            <thai-dragon[AT]eleven29.com>
1390   Pavel Novotny            <Pavel.Novotny[AT]icn.siemens.de>
1391   Shinsuke Suzuki          <suz[AT]kame.net>
1392   Andrew C. Feren          <aferen[AT]cetacean.com>
1393   Tomas Kukosa             <tomas.kukosa[AT]anfdata.cz>
1394   Andreas Stockmeier       <a.stockmeier[AT]avm.de>
1395   Pekka Nikander           <pekka.nikander[AT]nomadiclab.com>
1396   Hamish Moffatt           <hamish[AT]cloud.net.au>
1397   Kazushi Sugyo            <k-sugyou[AT]nwsl.mesh.ad.jp>
1398   Tim Potter               <tpot[AT]samba.org>
1399   Raghu Angadi             <rangadi[AT]inktomi.com>
1400   Taisuke Sasaki           <sasaki[AT]soft.net.fujitsu.co.jp>
1401   Tim Newsham              <newsham[AT]lava.net>
1402   Tom Nisbet               <Tnisbet[AT]VisualNetworks.com>
1403   Darren New               <dnew[AT]san.rr.com>
1404   Pavel Mores              <pvl[AT]uh.cz>
1405   Bernd Becker             <bb[AT]bernd-becker.de>
1406   Heinz Prantner           <Heinz.Prantner[AT]radisys.com>
1407   Irfan Khan               <ikhan[AT]qualcomm.com>
1408   Jayaram V.R              <vjayar[AT]cisco.com>
1409   Dinesh Dutt              <ddutt[AT]cisco.com>
1410   Nagarjuna Venna          <nvenna[AT]Brixnet.com>
1411   Jirka Novak              <j.novak[AT]netsystem.cz>
1412   Ricardo Barroetaveña     <rbarroetavena[AT]veufort.com>
1413   Alan Harrison            <alanharrison[AT]mail.com>
1414   Mike Frantzen            <frantzen[AT]w4g.org>
1415   Charlie Duke             <cduke[AT]fvc.com>
1416   Alfred Arnold            <Alfred.Arnold[AT]elsa.de>
1417   Dermot Bradley           <dermot.bradley[AT]openwave.com>
1418   Adam Sulmicki            <adam[AT]cfar.umd.edu>
1419   Kari Tiirikainen         <kari.tiirikainen[AT]nokia.com>
1420   John Mackenzie           <John.A.Mackenzie[AT]t-online.de>
1421   Peter Valchev            <pvalchev[AT]openbsd.org>
1422   Alex Ruzin               <alexr[AT]nbase.co.il>
1423   Jouni Malinen            <jkmaline[AT]cc.hut.fi>
1424   Paul E. Erkkila          <pee[AT]erkkila.org>
1425   Jakob Schlyter           <jakob[AT]crt.se>
1426   Jim Sienicki             <sienicki[AT]issanni.com>
1427   Steven French            <sfrench[AT]us.ibm.com>
1428   Diana Eichert            <deicher[AT]sandia.gov>
1429   Blair Cooper             <blair[AT]teamon.com>
1430   Kikuchi Ayamura          <ayamura[AT]ayamura.org>
1431   Didier Gautheron         <dgautheron[AT]magic.fr>
1432   Phil Williams            <csypbw[AT]comp.leeds.ac.uk>
1433   Kevin Humphries          <khumphries[AT]networld.com>
1434   Erik Nordström           <erik.nordstrom[AT]it.uu.se>
1435   Devin Heitmueller        <dheitmueller[AT]netilla.com>
1436   Chenjiang Hu             <chu[AT]chiaro.com>
1437   Kan Sasaki               <sasaki[AT]fcc.ad.jp>
1438   Stefan Wenk              <stefan.wenk[AT]gmx.at>
1439   Ruud Linders             <ruud[AT]lucent.com>
1440   Andrew Esh               <Andrew.Esh[AT]tricord.com>
1441   Greg Morris              <GMORRIS[AT]novell.com>
1442   Dirk Steinberg           <dws[AT]dirksteinberg.de>
1443   Kari Heikkila            <kari.o.heikkila[AT]nokia.com>
1444   Olivier Dreux            <Olivier.Dreux[AT]alcatel.fr>
1445   Michael Stiller          <ms[AT]2scale.net>
1446   Antti Tuominen           <ajtuomin[AT]tml.hut.fi>
1447   Martin Gignac            <lmcgign[AT]mobilitylab.net>
1448   John Wells               <wells[AT]ieee.org>
1449   Loic Tortay              <tortay[AT]cc.in2p3.fr>
1450   Steve Housley            <Steve_Housley[AT]eur.3com.com>
1451   Peter Hawkins            <peter[AT]hawkins.emu.id.au>
1452
1453 Alain Magloire <alainm[AT]rcsm.ece.mcgill.ca> was kind enough to give his
1454 permission to use his version of snprintf.c.
1455
1456 Dan Lasley <dlasley[AT]promus.com> gave permission for his dumpit() hex-dump
1457 routine to be used.
1458
1459 Mattia Cazzola <mattiac[AT]alinet.it> provided a patch to the hex dump
1460 display routine.
1461
1462 We use the exception module from Kazlib, a C library written by
1463 Kaz Kylheku <kaz[AT]ashi.footprints.net>. Thanks goes to him for his
1464 well-written library. The Kazlib home page can be found at
1465 http://users.footprints.net/~kaz/kazlib.html