1 <!-- EDG Chapter Introduction -->
4 <chapter id="ChapterIntroduction">
5 <title>Introduction</title>
7 <section id="ChIntroIntro">
8 <title>Introduction</title>
10 This chapter will provide you with information about Ethereal
11 development in general.
15 <section id="ChIntroWhatIs">
16 <title>What is <application>Ethereal?</application></title>
18 Well, if you want to start Ethereal development, you might already
19 know what Ethereal is doing. If not, please have a look at the
20 <ulink url="&EtherealUsersGuidePage;">Ethereal User's Guide</ulink>,
21 which will provide a lot of general information about it.
26 <section id="ChIntroPlatforms">
27 <title>Platforms Ethereal runs on</title>
29 Ethereal currently runs on most UNIX platforms and various Windows
30 platforms. It requires GTK+, GLib, libpcap and some other libraries in
34 As Ethereal is developed in a platform independant way and uses libraries
35 which are available for a lot of different platforms (such as the GTK+
36 GUI library), it's available on a such a wide variety of platforms.
39 If a binary package is not available for your platform, you should
40 download the source and try to build it. Please report your experiences
41 to <ulink url="mailto:&EtherealDevMailList;">&EtherealDevMailList;</ulink>.
44 Binary packages are available for at least the following platforms:
47 <section><title>Unix</title>
50 <listitem><para>Apple Mac OS X</para></listitem>
51 <listitem><para>BeOS</para></listitem>
52 <listitem><para>FreeBSD</para></listitem>
53 <listitem><para>HP-UX</para></listitem>
54 <listitem><para>IBM AIX</para></listitem>
55 <listitem><para>NetBSD</para></listitem>
56 <listitem><para>OpenBSD</para></listitem>
57 <listitem><para>SCO UnixWare/OpenUnix</para></listitem>
58 <listitem><para>SGI Irix</para></listitem>
59 <listitem><para>Sun Solaris/Intel</para></listitem>
60 <listitem><para>Sun Solaris/Sparc</para></listitem>
61 <listitem><para>Tru64 UNIX (formerly Digital UNIX)</para></listitem>
66 <section><title>Linux</title>
69 <listitem><para>Debian GNU/Linux</para></listitem>
70 <listitem><para>Gentoo Linux</para></listitem>
71 <listitem><para>IBM S/390 Linux (Red Hat)</para></listitem>
72 <listitem><para>Mandrake Linux</para></listitem>
73 <listitem><para>PLD Linux</para></listitem>
74 <listitem><para>Red Hat Linux</para></listitem>
75 <listitem><para>Rock Linux</para></listitem>
76 <listitem><para>Slackware Linux</para></listitem>
77 <listitem><para>Suse Linux</para></listitem>
82 <section><title>Microsoft Windows</title>
84 Thanks to the Win32 API, development on all Windows platforms will be
85 done in a very similar way. However some differences between the platforms
86 are existing (especially between the NT and 95 based platforms), the
87 differences will be notified where appropriate. All Windows platforms
88 referred to as Win32, Win or Windows may be used with the same meaning.
89 As Windows CE differs a lot compared to the other Windows platforms
90 mentioned, Ethereal will not run on Windows CE and there are no plans to
93 <listitem><para>Windows Me / 98 / 95</para></listitem>
94 <listitem><para>Windows Server 2003 / XP / 2000 / NT 4.0</para></listitem>
101 <section id="ChIntroDevelopment">
103 Development and maintenance of <application>Ethereal</application>
106 Ethereal was initially developed by Gerald Combs. Ongoing development
107 and maintenance of Ethereal is handled by the Ethereal team, a loose
108 group of individuals who fix bugs and provide new functionality.
111 There have also been a large number of people who have contributed
112 protocol dissectors to Ethereal, and it is expected that this will
113 continue. You can find a list of the people who have contributed
114 code to Ethereal by checking the about dialog box of Ethereal, or have
115 a look at the <ulink url="&EtherealAuthorsPage;"/> page on the Ethereal
120 communication between the developers is usually done trough the developer
121 mailing list, which can be joined by anyone interested in the development
122 process. At the time writing of this document, more than 500 persons are
123 subscribed to this mailing list!
126 It is strongly recommended to join the developer mailing list, if you
127 are going to do any Ethereal development. See
128 <xref linkend="ChIntroMailingLists"/> about the different Ethereal
129 mailing lists available.
132 <section><title>Programming language(s) used</title>
134 Almost any part of Ethereal is implemented in plain ANSI C.
137 The typical task for a new Ethereal developer is to extend an existing,
138 or write a new dissector for a specific network protocol. As (almost) any
139 dissector is written in plain old ANSI C, a good knowledge about ANSI C
140 will be sufficient for Ethereal development in almost any case.
143 So unless you are going to change the development process of Ethereal
144 itself, you won't come in touch with any other programming language than
145 ANSI C (such as perl or python, which are used only in the Ethereal build
149 Beside the usual tools for developing a program in C (compiler, make, ...),
150 the build process uses some additional helper tools (Perl, Python, Sed,
151 ...), which are needed for the build process and in the case Ethereal
152 should be installed from the released source packages. If Ethereal is
153 installed from a binary package, none of these helper tools are needed on
159 <section><title>Open Source Software</title>
161 Ethereal is an open source software project, and is released under
162 the <ulink url="&GPLWebsite;">GNU General Public Licence</ulink> (GPL).
163 You can freely use Ethereal on any number of computers you like, without
164 worrying about license keys or fees or such. In addition, all source
165 code is freely available under the GPL. Because of that, it is very easy
166 for people to add new protocols to Ethereal, either as plugins, or built
167 into the source, and they often do!
171 modify Ethereal to suit your own needs, and it would be appreciated
172 if you contribute your improvements back to the Ethereal team.
175 You gain three benefits by contributing your improvements back to the
180 Other people who find your contributions useful will appreciate
181 them, and you will know that you have helped people in the
182 same way that the developers of Ethereal have helped people.
187 The developers of Ethereal might improve your changes even more,
188 as there's always room for improvements. Or they may implement some
189 advanced things on top of your code, which can be useful for yourself
195 The maintainers and developers of Ethereal will maintain your
196 code as well, fixing it when API changes or other changes are
197 made, and generally keeping it in tune with what is happening
198 with Ethereal. So if Ethereal is updated (which is done often),
199 you can get a new Ethereal version from the website and your changes
200 will already be included without any effort for you.
206 The Ethereal source code and binary kits for some platforms are all
207 available on the download page of the Ethereal website:
208 <ulink url="&EtherealDownloadPage;">&EtherealDownloadPage;</ulink>.
215 <section id="ChIntroReleases">
216 <title>Releases and distributions</title>
218 The officially released files can be found at: <ulink
219 url="&EtherealDownloadPage;"/>. A new Ethereal version is released, after
220 significant changes compared to the last release were completed or a
221 serious security issue was encountered. The typical release schedule is
222 about every 4-8 weeks (although this may vary).
225 There are two kinds of distributions: binary and source, both have their
226 advantages and disadvantages.
229 <section id="ChIntroReleaseBinary">
230 <title>Binary distributions</title>
232 Binary distributions are usually easy to install (as simply starting
233 the appropriate file is usually the only thing to do). They are available
234 for the following systems:
238 Win32 (.exe file). The typical Windows end user is used to get a setup.exe
239 file, which will install all the required things for him.
244 Debian (.deb file). A user of a Debian Package Manager (DPKG) based system
245 is used to get a .deb file from which the package manager checks the
246 dependancies and installs the software.
251 RedHat (.rpm file). A user of a RedHat Package Manager (RPM) based system
252 is used to get a .rpm file from which the package manager checks the
253 dependancies and installs the software.
258 Solaris. A Solaris user is used to get a file from which the package manager
259 (PKG) checks the dependancies and installs the software.
263 However, if you want to start developing with Ethereal, the binary
264 distributions won't be much helpful, as you need the source files, of
268 For details about how to build these binary distributions yourself,
269 e.g. if you need a distribution for a special audience, see
270 <xref linkend="ChSrcBinary"/>.
274 <section id="ChIntroReleaseSource">
275 <title>Source code distributions</title>
277 It's still common for UNIX developers to give the end user a source
278 tarball and let the user compile it on their target machine (configure,
279 make, make install). However, for different UNIX (Linux) distributions
280 it's becoming more common to release binary packages (e.g. .deb or .rpm
284 You should use the released sources if you want to build Ethereal from
285 source on your platform for productive use. However, if you going to
286 develop changes to the Ethereal sources, it might be better to use the
287 latest SVN sources. For details about the different ways to get the
288 Ethereal source code see <xref linkend="ChSrcObtain"/>.
291 Before building Ethereal from a source distribution, make sure you have
292 all the tools and libraries required to build. The following chapters will
293 describe the required tools and libraries in detail.
298 <section id="ChIntroHelp">
299 <title>Reporting problems and getting help</title>
301 If you have problems, or need help with Ethereal, there are several
302 places that may be of interest to you (well, beside this guide of
306 <section id="ChIntroHomepage"><title>Website</title>
308 You will find lot's of useful information on the Ethereal homepage at
309 <ulink url="&EtherealWebSite;">&EtherealWebSite;</ulink>.
313 <section id="ChIntroWiki"><title>Wiki</title>
315 The Ethereal Wiki at <ulink
316 url="&EtherealWikiSite;">&EtherealWikiSite;</ulink> provides a wide range
317 of information related to Ethereal and packet capturing in general.
318 You will find a lot of information not part of this developer's guide. For
319 example, there is an explanation how to capture on a switched network,
320 an ongoing effort to build a protocol reference and a lot more.
323 And best of all, if you would like to contribute your knowledge on a
324 specific topic (maybe a network protocol you know well), you can edit the
325 wiki pages by simply using your webbrowser.
329 <section id="ChIntroFAQ"><title>FAQ</title>
331 The "Frequently Asked Questions" will list often asked questions and
332 the corresponding answers.
333 <note><title>Read the FAQ!</title>
335 Before sending any mail to the mailing lists below, be sure to read the
336 FAQ, as it will often answer the question(s) you might have. This will save
337 yourself and others a lot of time (keep in mind that a lot of people are
338 subscribed to the mailing lists).
341 You will find the FAQ inside Ethereal by clicking the menu item
342 Help/Contents and selecting the FAQ page in the upcoming dialog.
345 An online version is available at the ethereal website:
346 <ulink url="&EtherealFAQPage;">&EtherealFAQPage;</ulink>. You might
347 prefer this online version, as it's typically more up to date and the HTML
348 format is easier to use.
352 <section id="ChIntroMailingLists"><title>Mailing Lists</title>
354 There are several mailing lists of specific Ethereal topics available:
356 <varlistentry><term><command>ethereal-announce</command></term>
359 This mailing list will inform you about new program
360 releases, which usually appear about every 4-8 weeks.
364 <varlistentry><term><command>ethereal-users</command></term>
367 This list is for users of Ethereal. People post
368 questions about building and using Ethereal, others (hopefully)
373 <varlistentry><term><command>ethereal-dev</command></term>
376 This list is for Ethereal developers. People post questions about
377 the development of Ethereal, others (hopefully) provide answers.
378 If you want to start developing a protocol dissector, join this list.
382 <varlistentry><term><command>ethereal-bugs</command></term>
385 This list is for Ethereal developers. Everytime a change to the bug
386 database occurs, a mail to this mailing list is generated.
387 If you want to be notified about all the changes to the bug
388 database, join this list. Details about the bug database can be
389 found in <xref linkend="ChIntroBugDatabase"/>.
393 <varlistentry><term><command>ethereal-cvs</command></term>
396 This list is for Ethereal developers. Everytime a change to the SVN
397 repository is checked in, a mail to this mailing list is generated.
398 If you want to be notified about all the changes to the SVN
399 repository, join this list. Details about the SVN repository can be
400 found in <xref linkend="ChSrcSVNServer"/>.
405 You can subscribe to each of these lists from the Ethereal web site:
406 <ulink url="&EtherealWebSite;">&EtherealWebSite;</ulink>. Simply
407 select the <command>mailing lists</command> link on the left hand
408 side of the site. The lists are archived at the Ethereal web site
410 <tip><title>Tip!</title>
412 You can search in the list archives to see if someone asked the same
413 question some time before and maybe already got an answer. That way you
414 don't have to wait until someone answers your question.
420 <section id="ChIntroBugDatabase"><title>Bug database</title>
422 The Etereal community started collecting bug reports in a Bugzilla database at
423 <ulink url="&EtherealBugsSite;">&EtherealBugsSite;</ulink>.
424 This database is filled with manually filed bug reports, usually after some
425 discussion on ethereal-dev, and bug reports from the QA build tooling.
429 <section id="ChIntroReportProblems"><title>Reporting Problems</title>
430 <note><title>Note!</title>
432 Before reporting any problems, please make sure you have installed the
433 latest version of Ethereal.
437 If you report problems, provide as much
438 information as possible. In general, just think about what
439 you would need to find that problem, if someone else sends you such a
440 problem report. Also keep in mind, that people uses a lot of different
441 platforms to compile/run Ethereal on.
444 When reporting problems with Ethereal, it is helpful if you supply the
445 following information:
449 The version number of Ethereal and the dependent libraries linked with
450 it, eg GTK+, etc. You can obtain this with the command
451 <command>ethereal -v</command>.
456 Information about the platform you run Ethereal on.
461 A detailed description of your problem.
466 If you get an error/warning message, copy the text of that message (and
467 also a few lines before and after it, if there are some), so others may
468 find the build step where things go wrong.
469 Please don't give something like: "I get a warning when comiling x"
470 as this won't give any direction to look at.
475 <note><title>Don't send large files!</title>
477 Do not send large files (>100KB) to the mailing lists, just place a note
478 that further data is available on request. Large files will only annoy a
479 lot of people on the list who are not interested in your specific problem.
480 If required, you will be asked for further data by the persons who really
484 <note><title>Don't send confidential information!</title>
486 If you send captured data to the mailing lists, or add it to your bug report,
487 be sure it doesn't contain any sensitive or confidential information,
493 <section><title>Reporting Crashes on UNIX/Linux platforms</title>
495 When reporting crashes with Ethereal, it is helpful if you supply the
496 traceback information (besides the information mentioned in
497 <xref linkend="ChIntroReportProblems"/>).
500 You can obtain this traceback information with the following commands:
503 $ gdb `whereis ethereal | cut -f2 -d: | cut -d' ' -f2` core >& bt.txt
511 Type the characters in the first line verbatim! Those are
517 backtrace is a <command>gdb</command> command. You should
518 enter it verbatim after the first line shown above, but it will not be
520 (Control-D, that is, press the Control key and the D key
521 together) will cause <command>gdb</command> to exit. This will
522 leave you with a file called
523 <filename>bt.txt</filename> in the current directory.
524 Include the file with your bug report.
529 If you do not have <command>gdb</command> available, you
530 will have to check out your operating system's debugger.
535 You should mail the traceback to the
536 <ulink url="mailto:&EtherealDevMailList;">&EtherealDevMailList;</ulink>
537 mailing list, or append it to your bug report.
541 <section><title>Reporting Crashes on Windows platforms</title>
543 The Windows distributions don't contain the symbol files (.pdb), because
544 they are very large. For this reason it's not possible to create
545 a meaningful backtrace file from it. You should report your crash just
546 like other problems, using the mechanism from
547 <xref linkend="ChIntroReportProblems"/>.
552 <section id="ChIntroOtherSources"><title>Other sources of developer information
555 If you don't find the information you need inside this book, there are
556 various other sources of information:
560 have a look at the Ethereal source code
565 there are various documentation files on different topics inside the
566 source code, see all the README.xxx files
571 tool documentation of the various tools used
572 (e.g. manpages of sed, gcc, ...)
577 the different mailing lists <xref linkend="ChIntroMailingLists"/>
590 <!-- End of EUG Chapter 1 -->