Added support for Router-Alert IP option (RFC2113)
[obnox/wireshark/wip.git] / packet-data.c
1 /* packet-data.c
2  * Routines for raw data (default case)
3  * Gilbert Ramirez <gram@xiexie.org>
4  *
5  * $Id: packet-data.c,v 1.20 2000/11/16 07:35:37 guy Exp $
6  *
7  * Ethereal - Network traffic analyzer
8  * By Gerald Combs <gerald@zing.org>
9  * Copyright 1998 Gerald Combs
10  *
11  * 
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version 2
15  * of the License, or (at your option) any later version.
16  * 
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  * 
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25  */
26
27 #ifdef HAVE_CONFIG_H
28 # include "config.h"
29 #endif
30
31 #ifdef HAVE_SYS_TYPES_H
32 # include <sys/types.h>
33 #endif
34
35 #include <glib.h>
36 #include "packet.h"
37
38 /* proto_data cannot be static because it's referenced in the
39  * print routines
40  */
41 int proto_data = -1;
42
43 /* Remove this once all dissectors are converted to use tvbuffs */
44 void
45 old_dissect_data(const u_char *pd, int offset, frame_data *fd, proto_tree *tree)
46 {
47         if (IS_DATA_IN_FRAME(offset) && tree) {
48                 proto_tree_add_protocol_format(tree, proto_data, NullTVB, offset,
49                         END_OF_FRAME, "Data (%d byte%s)", END_OF_FRAME,
50                         plurality(END_OF_FRAME, "", "s"));
51         }
52 }
53
54 void
55 dissect_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
56 {
57         int bytes;
58
59         if (tree) {
60                 bytes = tvb_length_remaining(tvb, offset);
61                 if (bytes > 0) {
62                         proto_tree_add_protocol_format(tree, proto_data, tvb,
63                                 offset,
64                                 bytes, "Data (%d byte%s)", bytes,
65                                 plurality(bytes, "", "s"));
66                 }
67         }
68 }
69
70 void
71 proto_register_data(void)
72 {
73         proto_data = proto_register_protocol (
74                 /* name */      "Data",
75                 /* abbrev */    "data" );
76 }