aboutsummaryrefslogtreecommitdiffstats
path: root/doc/README.developer
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-03-01 08:05:49 +0000
committerGuy Harris <guy@alum.mit.edu>2000-03-01 08:05:49 +0000
commit33afb489e752c8281248bb238e2536bd131d525d (patch)
tree164d1dafebb56881f5924d4a385846be59a771b4 /doc/README.developer
parent4eee1fa7caecae210a86923c72b674f750c987c7 (diff)
downloadwireshark-33afb489e752c8281248bb238e2536bd131d525d.tar.gz
wireshark-33afb489e752c8281248bb238e2536bd131d525d.tar.bz2
wireshark-33afb489e752c8281248bb238e2536bd131d525d.zip
Merge in some information from Jeff Foster's developer's notes.
svn path=/trunk/; revision=1674
Diffstat (limited to 'doc/README.developer')
-rw-r--r--doc/README.developer79
1 files changed, 71 insertions, 8 deletions
diff --git a/doc/README.developer b/doc/README.developer
index e82ef5705a..c786eb19d1 100644
--- a/doc/README.developer
+++ b/doc/README.developer
@@ -1,4 +1,4 @@
-$Id: README.developer,v 1.1 2000/03/01 07:43:23 guy Exp $
+$Id: README.developer,v 1.2 2000/03/01 08:05:49 guy Exp $
This file is a HOWTO for Ethereal developers. It describes how to start coding
a protocol dissector and the use some of the important functions and variables
@@ -28,7 +28,50 @@ name is "packet-", followed by the abbreviated name for the protocol,
followed by ".h"; any dissector file that calls your dissector should be
changed to include that file.
-/* Recommended includes for Ethereal protocol dissectors */
+You may not need to include all the headers listed in the skeleton
+below, and you may need to include additional headers. For example, the
+code inside
+
+ #ifdef NEED_SNPRINTF_H
+
+ ...
+
+ #endif
+
+is needed only if you are using the "snprintf()" function.
+
+The "$Id: README.developer,v 1.2 2000/03/01 08:05:49 guy Exp $" in the comment will be updated by CVS when the file is
+checked in; it will allow the RCS "ident" command to report which
+version of the file is currently checked out.
+
+------------------------------------Cut here------------------------------------
+/* packet-PROTOABBREV.c
+ * Routines for PROTONAME dissection
+ * Copyright 2000, YOUR_NAME <YOUR_EMAIL_ADDRESS>
+ *
+ * $Id: README.developer,v 1.2 2000/03/01 08:05:49 guy Exp $
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@unicom.net>
+ * Copyright 1998 Gerald Combs
+ *
+ * Copied from WHATEVER_FILE_YOU_USED
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
@@ -65,7 +108,6 @@ static int hf_PROTOABBREV_FIELDABBREV = -1;
/* Initialize the subtree pointers */
static gint ett_PROTOABBREV = -1;
-
/* Code to actually dissect the packets */
void
dissect_PROTOABBREV(cont u_char *pd, int offset, frame_data *fd, proto_tree *tree)
@@ -77,20 +119,35 @@ dissect_PROTOABBREV(cont u_char *pd, int offset, frame_data *fd, proto_tree *tre
/* Make entries in Protocol column and Info column on summary display */
if (check_col(fd, COL_PROTOCOL))
- col_add_str(fd, COL_PROTOCOL, "PROTOABBREV");
+ col_add_str(fd, COL_PROTOCOL, "PROTOABBREV");
+/* This field shows up as the "Info" column in the display; you should make
+ it, if possible, summarize what's in the packet, so that a user looking
+ at the list of packets can tell what type of packet it is.
+
+ "col_add_fstr()" can be used instead of "col_add_str()"; it takes
+ "printf()"-like arguments. */
if (check_col(fd, COL_INFO))
- col_add_str(fd, COL_INFO, "PROTONAME");
+ col_add_str(fd, COL_INFO, "XXX Request");
+/* In the interest of speed, if "tree" is NULL, don't do any work not
+ necessary to generate protocol tree items. */
if (tree) {
+/* NOTE: The offset and length values in the previous call to
+ "proto_tree_add_item()" define what data bytes to highlight in the hex
+ display window when the line in the protocol tree display
+ corresponding to that item is selected.
+
+ END_OF_FRAME is a handy way to highlight all data from the offset to
+ the end of the packet. */
ti = proto_tree_add_item(tree, proto_PROTOABBREV, offset, END_OF_FRAME, NULL);
PROTOABBREV_tree = proto_item_add_subtree(ti, ett_PROTOABBREV);
/* Code to process the packet goes here */
- };
-};
+ }
+}
/* Register the protocol with Ethereal */
proto_register_PROTOABBREV(void)
@@ -117,12 +174,18 @@ proto_register_PROTOABBREV(void)
proto_register_field_array(proto_PROTOABBREV, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
};
+------------------------------------Cut here------------------------------------
1.2 Explanation of needed substitutions in code skeleton.
In the above code block the following strings should be substituted with
your information.
+YOUR_NAME Your name, of course. You do want credit, don't you?
+ It's the only payment you will receive....
+YOUR_EMAIL_ADDRESS Keep those cards and letters coming.
+WHATEVER_FILE_YOU_USED Add this line if you are using another file as a
+ starting point.
PROTONAME The name of the protocol.
PROTOABBREV An abbreviated name for the protocol. (NO SPACES) (rec.
a-z, 0-9 only and try to conform with IANA names)
@@ -204,7 +267,7 @@ static const true_false_string boolstringname = {
1.4 The dissector and the data it receives.
1.4.1 The dissector has the following header which must be placed into
-packet.h.
+packet-PROTOABBREV.h.
void
dissect_PROTOABBREV(const u_char *pd, int offset, frame_data *fd, proto_tree *tree);