whitespace fixes; mostly: remove trailing blanks
[metze/wireshark/wip.git] / epan / dissectors / packet-rtps.h
1 /* packet-rtps.h
2  * ~~~~~~~~~~~~~
3  *
4  * Routines for Real-Time Publish-Subscribe Protocol (RTPS) dissection
5  *
6  * Copyright 2005, Fabrizio Bertocci <fabrizio@rti.com>
7  * Real-Time Innovations, Inc.
8  * 385 Moffett Park Drive, Suite 115
9  * Sunnyvale, CA 94089
10  *
11  * Copyright 2003, LUKAS POKORNY <maskis@seznam.cz>
12  *                 PETR SMOLIK   <petr.smolik@wo.cz>
13  *                 ZDENEK SEBEK  <sebek@fel.cvut.cz>
14  *
15  * Czech Technical University in Prague
16  *  Faculty of Electrical Engineering <www.fel.cvut.cz>
17  *  Department of Control Engineering <dce.felk.cvut.cz>
18  *
19  * $Id$
20  *
21  * Wireshark - Network traffic analyzer
22  * By Gerald Combs <gerald@wireshark.org>
23  * Copyright 1998 Gerald Combs
24  *
25  * This program is free software; you can redistribute it and/or modify
26  * it under the terms of the GNU General Public License as published by
27  * the Free Software Foundation; either version 2 of the License, or
28  * (at your option) any later version.
29  *
30  * This program is distributed in the hope that it will be useful,
31  * but WITHOUT ANY WARRANTY; without even the implied warranty of
32  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33  * GNU General Public License for more details.
34  *
35  * You should have received a copy of the GNU General Public License
36  * along with this program; if not, write to the Free Software
37  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
38  *
39  *                  -------------------------------------
40  *
41  * The following file is part of the RTPS packet dissector for Wireshark.
42  *
43  * RTPS protocol was developed by Real-Time Innovations, Inc. as wire
44  * protocol for Data Distribution System.
45  * Additional information at:
46  *   Full OMG DDS Standard Specification:
47  *                             http://www.omg.org/cgi-bin/doc?ptc/2003-07-07
48  *
49  *   NDDS and RTPS information: http://www.rti.com/resources.html
50  *
51  */
52
53 #ifndef _TYPEDEFS_DEFINES_RTPS_H
54 #define _TYPEDEFS_DEFINES_RTPS_H
55
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59
60
61 typedef enum {
62     RTI_CDR_TK_NULL = 0,
63     RTI_CDR_TK_SHORT,
64     RTI_CDR_TK_LONG,
65     RTI_CDR_TK_USHORT,
66     RTI_CDR_TK_ULONG,
67     RTI_CDR_TK_FLOAT,
68     RTI_CDR_TK_DOUBLE,
69     RTI_CDR_TK_BOOLEAN,
70     RTI_CDR_TK_CHAR,
71     RTI_CDR_TK_OCTET,
72     RTI_CDR_TK_STRUCT,
73     RTI_CDR_TK_UNION,
74     RTI_CDR_TK_ENUM,
75     RTI_CDR_TK_STRING,
76     RTI_CDR_TK_SEQUENCE,
77     RTI_CDR_TK_ARRAY,
78     RTI_CDR_TK_ALIAS,
79     RTI_CDR_TK_LONGLONG,
80     RTI_CDR_TK_ULONGLONG,
81     RTI_CDR_TK_LONGDOUBLE,
82     RTI_CDR_TK_WCHAR,
83     RTI_CDR_TK_WSTRING,
84     RTI_CDR_TK_VALUE,
85     RTI_CDR_TK_VALUE_PARARM
86 } RTICdrTCKind;
87
88 #define RTPS_MAGIC_NUMBER   0x52545053 /* RTPS */
89
90 /* Traffic type */
91 #define PORT_BASE                       (7400)
92 #define PORT_METATRAFFIC_UNICAST        (0)
93 #define PORT_USERTRAFFIC_MULTICAST      (1)
94 #define PORT_METATRAFFIC_MULTICAST      (2)
95 #define PORT_USERTRAFFIC_UNICAST        (3)
96
97 /* Flags defined in the 'flag' bitmask of a submessage */
98 #define FLAG_E                  (0x01)  /* Common to all the submessages */
99 #define FLAG_DATA_D             (0x02)
100 #define FLAG_DATA_D_v2          (0x04)
101 #define FLAG_DATA_A             (0x04)
102 #define FLAG_DATA_H             (0x08)
103 #define FLAG_DATA_Q             (0x10)
104 #define FLAG_DATA_Q_v2          (0x02)
105 #define FLAG_DATA_FRAG_Q        (0x02)
106 #define FLAG_DATA_FRAG_H        (0x04)
107 #define FLAG_DATA_I             (0x10)
108 #define FLAG_DATA_U             (0x20)
109 #define FLAG_NOKEY_DATA_Q       (0x02)
110 #define FLAG_NOKEY_DATA_D       (0x04)
111 #define FLAG_ACKNACK_F          (0x02)
112 #define FLAG_HEARTBEAT_F        (0x02)
113 #define FLAG_GAP_F              (0x02)
114 #define FLAG_INFO_TS_T          (0x02)
115 #define FLAG_INFO_REPLY_IP4_M   (0x02)
116 #define FLAG_INFO_REPLY_M       (0x02)
117 #define FLAG_RTPS_DATA_Q        (0x02)
118 #define FLAG_RTPS_DATA_D        (0x04)
119 #define FLAG_RTPS_DATA_K        (0x08)
120 #define FLAG_RTPS_DATA_FRAG_Q   (0x02)
121 #define FLAG_RTPS_DATA_FRAG_K   (0x04)
122 #define FLAG_RTPS_DATA_BATCH_Q  (0x02)
123 #define FLAG_SAMPLE_INFO_T      (0x01)
124 #define FLAG_SAMPLE_INFO_Q      (0x02)
125 #define FLAG_SAMPLE_INFO_O      (0x04)
126 #define FLAG_SAMPLE_INFO_D      (0x08)
127 #define FLAG_SAMPLE_INFO_I      (0x10)
128 #define FLAG_SAMPLE_INFO_K      (0x20)
129
130
131 /* The following PIDs are defined since RTPS 1.0 */
132 #define PID_PAD                                 (0x00)
133 #define PID_SENTINEL                            (0x01)
134 #define PID_PARTICIPANT_LEASE_DURATION          (0x02)
135 #define PID_TIME_BASED_FILTER                   (0x04)
136 #define PID_TOPIC_NAME                          (0x05)
137 #define PID_OWNERSHIP_STRENGTH                  (0x06)
138 #define PID_TYPE_NAME                           (0x07)
139 #define PID_METATRAFFIC_MULTICAST_IPADDRESS     (0x0b)
140 #define PID_DEFAULT_UNICAST_IPADDRESS           (0x0c)
141 #define PID_METATRAFFIC_UNICAST_PORT            (0x0d)
142 #define PID_DEFAULT_UNICAST_PORT                (0x0e)
143 #define PID_MULTICAST_IPADDRESS                 (0x11)
144 #define PID_PROTOCOL_VERSION                    (0x15)
145 #define PID_VENDOR_ID                           (0x16)
146 #define PID_RELIABILITY                         (0x1a)
147 #define PID_LIVELINESS                          (0x1b)
148 #define PID_DURABILITY                          (0x1d)
149 #define PID_DURABILITY_SERVICE                  (0x1e)
150 #define PID_OWNERSHIP                           (0x1f)
151 #define PID_PRESENTATION                        (0x21)
152 #define PID_DEADLINE                            (0x23)
153 #define PID_DESTINATION_ORDER                   (0x25)
154 #define PID_LATENCY_BUDGET                      (0x27)
155 #define PID_PARTITION                           (0x29)
156 #define PID_LIFESPAN                            (0x2b)
157 #define PID_USER_DATA                           (0x2c)
158 #define PID_GROUP_DATA                          (0x2d)
159 #define PID_TOPIC_DATA                          (0x2e)
160 #define PID_UNICAST_LOCATOR                     (0x2f)
161 #define PID_MULTICAST_LOCATOR                   (0x30)
162 #define PID_DEFAULT_UNICAST_LOCATOR             (0x31)
163 #define PID_METATRAFFIC_UNICAST_LOCATOR         (0x32)
164 #define PID_METATRAFFIC_MULTICAST_LOCATOR       (0x33)
165 #define PID_PARTICIPANT_MANUAL_LIVELINESS_COUNT (0x34)
166 #define PID_CONTENT_FILTER_PROPERTY             (0x35)
167 #define PID_PROPERTY_LIST_OLD                   (0x36) /* For compatibility between 4.2d and 4.2e */
168 #define PID_HISTORY                             (0x40)
169 #define PID_RESOURCE_LIMIT                      (0x41)
170 #define PID_EXPECTS_INLINE_QOS                  (0x43)
171 #define PID_PARTICIPANT_BUILTIN_ENDPOINTS       (0x44)
172 #define PID_METATRAFFIC_UNICAST_IPADDRESS       (0x45)
173 #define PID_METATRAFFIC_MULTICAST_PORT          (0x46)
174 #define PID_TYPECODE                            (0x47)
175 #define PID_PARTICIPANT_GUID                    (0x50)
176 #define PID_PARTICIPANT_ENTITY_ID               (0x51)
177 #define PID_GROUP_GUID                          (0x52)
178 #define PID_GROUP_ENTITY_ID                     (0x53)
179 #define PID_FILTER_SIGNATURE                    (0x55)
180 #define PID_COHERENT_SET                        (0x56)
181
182 /* The following QoS are deprecated */
183 #define PID_PERSISTENCE                         (0x03)
184 #define PID_TYPE_CHECKSUM                       (0x08)
185 #define PID_TYPE2_NAME                          (0x09)
186 #define PID_TYPE2_CHECKSUM                      (0x0a)
187 #define PID_IS_RELIABLE                         (0x0f)
188 #define PID_EXPECTS_ACK                         (0x10)
189 #define PID_MANAGER_KEY                         (0x12)
190 #define PID_SEND_QUEUE_SIZE                     (0x13)
191 #define PID_RELIABILITY_ENABLED                 (0x14)
192 #define PID_RECV_QUEUE_SIZE                     (0x18)
193 #define PID_VARGAPPS_SEQUENCE_NUMBER_LAST       (0x17)
194 #define PID_RELIABILITY_OFFERED                 (0x19)
195 #define PID_LIVELINESS_OFFERED                  (0x1c)
196 #define PID_OWNERSHIP_OFFERED                   (0x20)
197 #define PID_PRESENTATION_OFFERED                (0x22)
198 #define PID_DEADLINE_OFFERED                    (0x24)
199 #define PID_DESTINATION_ORDER_OFFERED           (0x26)
200 #define PID_LATENCY_BUDGET_OFFERED              (0x28)
201 #define PID_PARTITION_OFFERED                   (0x2a)
202
203 /* The following PIDs are defined since RTPS 2.0 */
204 #define PID_DEFAULT_MULTICAST_LOCATOR           (0x0048)
205 #define PID_TRANSPORT_PRIORITY                  (0x0049)
206 #define PID_CONTENT_FILTER_INFO                 (0x0055)
207 #define PID_DIRECTED_WRITE                      (0x0057)
208 #define PID_BUILTIN_ENDPOINT_SET                (0x0058)
209 #define PID_PROPERTY_LIST                       (0x0059)        /* RTI DDS 4.2e and newer */
210 #define PID_ENDPOINT_GUID                       (0x005a)
211 #define PID_TYPE_MAX_SIZE_SERIALIZED            (0x0060)
212 #define PID_ORIGINAL_WRITER_INFO                (0x0061)
213 #define PID_ENTITY_NAME                         (0x0062)
214 #define PID_KEY_HASH                            (0x0070)
215 #define PID_STATUS_INFO                         (0x0071)
216
217 /* Vendor-specific: RTI */
218 #define PID_PRODUCT_VERSION                     (0x8000)
219 #define PID_PLUGIN_PROMISCUITY_KIND             (0x8001)
220 #define PID_ENTITY_VIRTUAL_GUID                 (0x8002)
221 #define PID_SERVICE_KIND                        (0x8003)
222 #define PID_TYPECODE_RTPS2                      (0x8004)        /* Was: 0x47 in RTPS 1.2 */
223 #define PID_DISABLE_POSITIVE_ACKS               (0x8005)
224 #define PID_LOCATOR_FILTER_LIST                 (0x8006)
225
226 /* appId.appKind possible values */
227 #define APPKIND_UNKNOWN                         (0x00)
228 #define APPKIND_MANAGED_APPLICATION             (0x01)
229 #define APPKIND_MANAGER                         (0x02)
230
231
232
233 /* Predefined EntityId */
234 #define ENTITYID_UNKNOWN                        (0x00000000)
235 #define ENTITYID_PARTICIPANT                    (0x000001c1)
236 #define ENTITYID_BUILTIN_TOPIC_WRITER           (0x000002c2)
237 #define ENTITYID_BUILTIN_TOPIC_READER           (0x000002c7)
238 #define ENTITYID_BUILTIN_PUBLICATIONS_WRITER    (0x000003c2)
239 #define ENTITYID_BUILTIN_PUBLICATIONS_READER    (0x000003c7)
240 #define ENTITYID_BUILTIN_SUBSCRIPTIONS_WRITER   (0x000004c2)
241 #define ENTITYID_BUILTIN_SUBSCRIPTIONS_READER   (0x000004c7)
242 #define ENTITYID_BUILTIN_SDP_PARTICIPANT_WRITER (0x000100c2)
243 #define ENTITYID_BUILTIN_SDP_PARTICIPANT_READER (0x000100c7)
244 #define ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER (0x000200c2)
245 #define ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER (0x000200c7)
246
247 /* Deprecated EntityId */
248 #define ENTITYID_APPLICATIONS_WRITER            (0x000001c2)
249 #define ENTITYID_APPLICATIONS_READER            (0x000001c7)
250 #define ENTITYID_CLIENTS_WRITER                 (0x000005c2)
251 #define ENTITYID_CLIENTS_READER                 (0x000005c7)
252 #define ENTITYID_SERVICES_WRITER                (0x000006c2)
253 #define ENTITYID_SERVICES_READER                (0x000006c7)
254 #define ENTITYID_MANAGERS_WRITER                (0x000007c2)
255 #define ENTITYID_MANAGERS_READER                (0x000007c7)
256 #define ENTITYID_APPLICATION_SELF               (0x000008c1)
257 #define ENTITYID_APPLICATION_SELF_WRITER        (0x000008c2)
258 #define ENTITYID_APPLICATION_SELF_READER        (0x000008c7)
259
260 /* Predefined Entity Kind */
261 #define ENTITYKIND_APPDEF_UNKNOWN               (0x00)
262 #define ENTITYKIND_APPDEF_PARTICIPANT           (0x01)
263 #define ENTITYKIND_APPDEF_WRITER_WITH_KEY       (0x02)
264 #define ENTITYKIND_APPDEF_WRITER_NO_KEY         (0x03)
265 #define ENTITYKIND_APPDEF_READER_NO_KEY         (0x04)
266 #define ENTITYKIND_APPDEF_READER_WITH_KEY       (0x07)
267 #define ENTITYKIND_BUILTIN_PARTICIPANT          (0xc1)
268 #define ENTITYKIND_BUILTIN_WRITER_WITH_KEY      (0xc2)
269 #define ENTITYKIND_BUILTIN_WRITER_NO_KEY        (0xc3)
270 #define ENTITYKIND_BUILTIN_READER_NO_KEY        (0xc4)
271 #define ENTITYKIND_BUILTIN_READER_WITH_KEY      (0xc7)
272
273
274 /* Submessage Type */
275 #define SUBMESSAGE_PAD                                  (0x01)
276 #define SUBMESSAGE_DATA                                 (0x02)
277 #define SUBMESSAGE_NOKEY_DATA                           (0x03)
278 #define SUBMESSAGE_ACKNACK                              (0x06)
279 #define SUBMESSAGE_HEARTBEAT                            (0x07)
280 #define SUBMESSAGE_GAP                                  (0x08)
281 #define SUBMESSAGE_INFO_TS                              (0x09)
282 #define SUBMESSAGE_INFO_SRC                             (0x0c)
283 #define SUBMESSAGE_INFO_REPLY_IP4                       (0x0d)
284 #define SUBMESSAGE_INFO_DST                             (0x0e)
285 #define SUBMESSAGE_INFO_REPLY                           (0x0f)
286
287 #define SUBMESSAGE_DATA_FRAG                            (0x10)  /* RTPS 2.0 Only */
288 #define SUBMESSAGE_NOKEY_DATA_FRAG                      (0x11)  /* RTPS 2.0 Only */
289 #define SUBMESSAGE_NACK_FRAG                            (0x12)  /* RTPS 2.0 Only */
290 #define SUBMESSAGE_HEARTBEAT_FRAG                       (0x13)  /* RTPS 2.0 Only */
291
292 #define SUBMESSAGE_RTPS_DATA_SESSION                    (0x14)  /* RTPS 2.1 only */
293 #define SUBMESSAGE_RTPS_DATA                            (0x15)  /* RTPS 2.1 only */
294 #define SUBMESSAGE_RTPS_DATA_FRAG                       (0x16)  /* RTPS 2.1 only */
295 #define SUBMESSAGE_ACKNACK_BATCH                        (0x17)  /* RTPS 2.1 only */
296 #define SUBMESSAGE_RTPS_DATA_BATCH                      (0x18)  /* RTPS 2.1 Only */
297 #define SUBMESSAGE_HEARTBEAT_BATCH                      (0x19)  /* RTPS 2.1 only */
298 #define SUBMESSAGE_ACKNACK_SESSION                      (0x1a)  /* RTPS 2.1 only */
299 #define SUBMESSAGE_HEARTBEAT_SESSION                    (0x1b)  /* RTPS 2.1 only */
300
301
302 /* An invalid IP Address:
303  * Make sure the _STRING macro is bigger than a normal IP
304  */
305 #define IPADDRESS_INVALID               (0)
306 #define IPADDRESS_INVALID_STRING        "ADDRESS_INVALID"
307
308 /* Identifies the value of an invalid port number:
309  * Make sure the _STRING macro is bigger than a normal port
310  */
311 #define PORT_INVALID                    (0)
312 #define PORT_INVALID_STRING             "PORT_INVALID"
313
314 /* Protocol Vendor Information (guint16) */
315 #define RTPS_VENDOR_UNKNOWN              (0x0000)
316 #define RTPS_VENDOR_UNKNOWN_STRING       "VENDOR_ID_UNKNOWN (0x0000)"
317 #define RTPS_VENDOR_RTI_DDS              (0x0101)
318 #define RTPS_VENDOR_RTI_DDS_STRING       "Real-Time Innovations, Inc. - Connext DDS"
319 #define RTPS_VENDOR_PT_DDS               (0x0102)
320 #define RTPS_VENDOR_PT_DDS_STRING        "PrismTech Inc. - OpenSplice DDS"
321 #define RTPS_VENDOR_OCI                  (0x0103)
322 #define RTPS_VENDOR_OCI_STRING           "Object Computing Incorporated, Inc. (OCI) - OpenDDS"
323 #define RTPS_VENDOR_MILSOFT              (0x0104)
324 #define RTPS_VENDOR_MILSOFT_STRING       "MilSoft"
325 #define RTPS_VENDOR_GALLIUM              (0x0105)
326 #define RTPS_VENDOR_GALLIUM_STRING       "Gallium Visual Systems Inc. - InterCOM DDS"
327 #define RTPS_VENDOR_TOC                  (0x0106)
328 #define RTPS_VENDOR_TOC_STRING           "TwinOaks Computing, Inc. - CoreDX DDS"
329 #define RTPS_VENDOR_LAKOTA_TSI           (0x0107)
330 #define RTPS_VENDOR_LAKOTA_TSI_STRING    "Lakota Technical Solutions, Inc."
331 #define RTPS_VENDOR_ICOUP                (0x0108)
332 #define RTPS_VENDOR_ICOUP_STRING         "ICOUP Consulting"
333 #define RTPS_VENDOR_ETRI                 (0x0109)
334 #define RTPS_VENDOR_ETRI_STRING          "ETRI Electronics and Telecommunication Research Institute"
335 #define RTPS_VENDOR_RTI_DDS_MICRO        (0x010A)
336 #define RTPS_VENDOR_RTI_DDS_MICRO_STRING "Real-Time Innovations, Inc. (RTI) - Connext DDS Micro"
337 #define RTPS_VENDOR_PT_MOBILE            (0x010B)
338 #define RTPS_VENDOR_PT_MOBILE_STRING     "PrismTech - OpenSplice Mobile"
339 #define RTPS_VENDOR_PT_GATEWAY           (0x010C)
340 #define RTPS_VENDOR_PT_GATEWAY_STRING    "PrismTech - OpenSplice Gateway"
341 #define RTPS_VENDOR_PT_LITE              (0x010D)
342 #define RTPS_VENDOR_PT_LITE_STRING       "PrismTech - OpenSplice Lite"
343 #define RTPS_VENDOR_TECHNICOLOR          (0x010E)
344 #define RTPS_VENDOR_TECHNICOLOR_STRING   "Technicolor Inc. - Qeo"
345
346 /* Data encapsulation */
347 #define ENCAPSULATION_CDR_BE            (0x0000)
348 #define ENCAPSULATION_CDR_LE            (0x0001)
349 #define ENCAPSULATION_PL_CDR_BE         (0x0002)
350 #define ENCAPSULATION_PL_CDR_LE         (0x0003)
351
352 /* Parameter Liveliness */
353 #define LIVELINESS_AUTOMATIC            (0)
354 #define LIVELINESS_BY_PARTICIPANT       (1)
355 #define LIVELINESS_BY_TOPIC             (2)
356
357 /* Parameter Durability */
358 #define DURABILITY_VOLATILE             (0)
359 #define DURABILITY_TRANSIENT_LOCAL      (1)
360 #define DURABILITY_TRANSIENT            (2)
361 #define DURABILITY_PERSISTENT           (3)
362
363 /* Parameter Ownership */
364 #define OWNERSHIP_SHARED                (0)
365 #define OWNERSHIP_EXCLUSIVE             (1)
366
367 /* Parameter Presentation */
368 #define PRESENTATION_INSTANCE           (0)
369 #define PRESENTATION_TOPIC              (1)
370 #define PRESENTATION_GROUP              (2)
371
372
373 #define LOCATOR_KIND_INVALID            (-1)
374 #define LOCATOR_KIND_RESERVED           (0)
375 #define LOCATOR_KIND_UDPV4              (1)
376 #define LOCATOR_KIND_UDPV6              (2)
377
378 /* History Kind */
379 #define HISTORY_KIND_KEEP_LAST          (0)
380 #define HISTORY_KIND_KEEP_ALL           (1)
381
382 /* Reliability Values */
383 #define RELIABILITY_BEST_EFFORT         (1)
384 #define RELIABILITY_RELIABLE            (2)
385
386 /* Destination Order */
387 #define BY_RECEPTION_TIMESTAMP          (0)
388 #define BY_SOURCE_TIMESTAMP             (1)
389
390 /* Participant message data kind */
391 #define PARTICIPANT_MESSAGE_DATA_KIND_UNKNOWN (0x00000000)
392 #define PARTICIPANT_MESSAGE_DATA_KIND_AUTOMATIC_LIVELINESS_UPDATE (0x00000001)
393 #define PARTICIPANT_MESSAGE_DATA_KIND_MANUAL_LIVELINESS_UPDATE (0x00000002)
394
395 /* Utilities to add elements to the protocol tree for packet-rtps.h and packet-rtps2.h */
396 extern guint16 rtps_util_add_protocol_version(proto_tree *tree, tvbuff_t* tvb, gint offset);
397 extern guint16 rtps_util_add_vendor_id(proto_tree *tree, tvbuff_t * tvb, gint offset);
398 extern void rtps_util_add_locator_t(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb, gint offset,
399                              gboolean little_endian, const guint8 * label);
400 extern int rtps_util_add_locator_list(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb,
401                                 gint offset, const guint8* label, gboolean little_endian);
402 extern void rtps_util_add_ipv4_address_t(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb, gint offset,
403                                          gboolean little_endian, int hf_item);
404 extern void rtps_util_add_locator_udp_v4(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb,
405                                   gint offset, const guint8 * label, gboolean little_endian);
406 extern int rtps_util_add_entity_id(proto_tree *tree, tvbuff_t * tvb, gint offset,
407                             int hf_item, int hf_item_entity_key, int hf_item_entity_kind,
408                             int subtree_entity_id, const char *label, guint32* entity_id_out);
409 extern void rtps_util_add_generic_entity_id(proto_tree *tree, tvbuff_t * tvb, gint offset, const char* label,
410                                      int hf_item, int hf_item_entity_key, int hf_item_entity_kind,
411                                      int subtree_entity_id);
412 extern guint64 rtps_util_add_seq_number(proto_tree *, tvbuff_t *,
413                         gint, int, const char *);
414 extern void rtps_util_add_ntp_time(proto_tree *tree, tvbuff_t * tvb, gint offset,
415                                    gboolean little_endian, int hf_time);
416 extern gint rtps_util_add_string(proto_tree *tree, tvbuff_t* tvb, gint offset,
417                           int hf_item, gboolean little_endian);
418 extern void rtps_util_add_port(proto_tree *tree, packet_info *pinfo, tvbuff_t * tvb,
419                         gint offset, gboolean little_endian, int hf_item);
420 extern void rtps_util_add_durability_service_qos(proto_tree *tree, tvbuff_t * tvb,
421                                                  gint offset, gboolean little_endian);
422 extern void rtps_util_add_liveliness_qos(proto_tree *tree, tvbuff_t * tvb, gint offset,
423                                          gboolean little_endian);
424 extern gint rtps_util_add_seq_string(proto_tree *tree, tvbuff_t* tvb, gint offset,
425                               gboolean little_endian, int param_length, int hf_numstring,
426                               int hf_string, const char *label);
427 extern void rtps_util_add_seq_octets(proto_tree *tree, packet_info *pinfo, tvbuff_t* tvb,
428                               gint offset, gboolean little_endian, int param_length, int hf_id);
429 extern gint rtps_util_add_seq_ulong(proto_tree *tree, tvbuff_t * tvb, gint offset, int hf_item,
430                         gboolean little_endian, int param_length, const char *label);
431
432 extern gboolean rtps_is_ping(tvbuff_t *tvb, packet_info *pinfo, gint offset);
433
434 /* Shared submessage dissection */
435 extern void dissect_PAD(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint8 flags,
436                         gboolean little_endian, int octects_to_next_header, proto_tree *tree);
437 extern void dissect_INFO_SRC(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint8 flags,
438                         gboolean little_endian, int octets_to_next_header, proto_tree *tree, guint16 rtps_version);
439 extern void dissect_INFO_TS(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint8 flags,
440                         gboolean little_endian, int octets_to_next_header, proto_tree *tree);
441
442
443 #ifdef __cplusplus
444 } /* extern "C"*/
445 #endif
446
447 #endif /* _TYPEDEFS_DEFINES_RTPS_H */