Coverage Report

Created: 2026-09-28 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-coseventcomm.c
Line
Count
Source
1
/* packet-coseventcomm.c
2
 *
3
 * Routines for IDL dissection
4
 *
5
 * Autogenerated from idl2wrs
6
 * Copyright 2001 Frank Singleton <frank.singleton@ericsson.com>
7
 */
8
9
10
/*
11
 * Wireshark - Network traffic analyzer
12
 * By Gerald Combs <gerald@wireshark.org>
13
 * Copyright 1998 Gerald Combs
14
 */
15
16
/*
17
 * SPDX-License-Identifier: GPL-2.0-or-later
18
 */
19
20
21
#include "config.h"
22
23
#include <string.h>
24
#include <epan/packet.h>
25
#include <epan/proto.h>
26
#include "packet-giop.h"
27
#include <epan/expert.h>
28
#include <wsutil/array.h>
29
30
#include "ws_diag_control.h"
31
#include "ws_compiler_tests.h"
32
33
#ifdef _MSC_VER
34
/* disable warning: "unreference local variable" */
35
#pragma warning(disable:4101)
36
#endif
37
38
/* XXX this should be autogenerated, or the warnings fixed in the generator */
39
DIAG_OFF(unused-function)
40
DIAG_OFF(unused-variable)
41
#if WS_IS_AT_LEAST_GNUC_VERSION(6,0)
42
DIAG_OFF(unused-const-variable)
43
#endif
44
45
void proto_register_giop_coseventcomm(void);
46
void proto_reg_handoff_giop_coseventcomm(void);
47
48
/* Initialise the protocol and subtree pointers */
49
static int proto_coseventcomm;
50
static int ett_coseventcomm;
51
static int ett_giop_struct;
52
static int ett_giop_sequence;
53
static int ett_giop_array;
54
static int ett_giop_union;
55
56
57
/* Initialise the initial Alignment */
58
static uint32_t boundary = GIOP_HEADER_SIZE;  /* initial value */
59
60
static int hf_operationrequest;/* Request_Operation field */
61
62
        /* Operation filters */
63
static int hf_CosEventComm_PullSupplier_try_pull_has_event;
64
        /* User exception filters */
65
        /* Expert info filters */
66
static expert_field ei_coseventcomm_unknown_giop_msg;
67
static expert_field ei_coseventcomm_unknown_exception;
68
static expert_field ei_coseventcomm_unknown_reply_status;
69
70
71
static proto_tree *start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset);
72
73
74
/*  Begin Exception Helper Functions  */
75
76
77
78
/*  End Exception Helper Functions  */
79
80
/*
81
 * Main delegator for exception handling
82
 *
83
 */
84
static bool
85
decode_user_exception(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *ptree _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
86
0
{
87
0
    proto_tree *tree _U_;
88
89
0
    if (!header->exception_id)
90
0
        return false;
91
92
93
0
    return false;    /* user exception not found */
94
0
}
95
96
/*
97
 * IDL:omg.org/CosEventComm/PullConsumer/disconnect_pull_consumer:1.0
98
 */
99
static void
100
decode_CosEventComm_PullConsumer_disconnect_pull_consumer(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
101
0
{
102
    /* Operation specific Variable declarations Begin */
103
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
104
0
    _U_ int old_offset;
105
    /* Operation specific Variable declarations End */
106
107
0
    switch(header->message_type) {
108
0
    case Request:
109
0
        break;
110
0
    case Reply:
111
0
        switch(header->rep_status) {
112
0
        case NO_EXCEPTION:
113
            /* Function returns void */
114
115
0
            break;
116
0
        case USER_EXCEPTION:
117
0
            break;
118
0
        default:
119
            /* Unknown Exception */
120
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
121
0
            break;
122
0
        }   /* switch(header->rep_status) */
123
124
0
        break;
125
0
    default:
126
        /* Unknown GIOP Message */
127
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
128
0
        break;
129
0
    } /* switch(header->message_type) */
130
0
}
131
132
/*
133
 * IDL:omg.org/CosEventComm/PullSupplier/disconnect_pull_supplier:1.0
134
 */
135
static void
136
decode_CosEventComm_PullSupplier_disconnect_pull_supplier(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
137
0
{
138
    /* Operation specific Variable declarations Begin */
139
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
140
0
    _U_ int old_offset;
141
    /* Operation specific Variable declarations End */
142
143
0
    switch(header->message_type) {
144
0
    case Request:
145
0
        break;
146
0
    case Reply:
147
0
        switch(header->rep_status) {
148
0
        case NO_EXCEPTION:
149
            /* Function returns void */
150
151
0
            break;
152
0
        case USER_EXCEPTION:
153
0
            break;
154
0
        default:
155
            /* Unknown Exception */
156
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
157
0
            break;
158
0
        }   /* switch(header->rep_status) */
159
160
0
        break;
161
0
    default:
162
        /* Unknown GIOP Message */
163
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
164
0
        break;
165
0
    } /* switch(header->message_type) */
166
0
}
167
168
/*
169
 * IDL:omg.org/CosEventComm/PullSupplier/try_pull:1.0
170
 */
171
static void
172
decode_CosEventComm_PullSupplier_try_pull(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
173
0
{
174
    /* Operation specific Variable declarations Begin */
175
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
176
0
    _U_ int old_offset;
177
    /* Operation specific Variable declarations End */
178
179
0
    switch(header->message_type) {
180
0
    case Request:
181
0
        break;
182
0
    case Reply:
183
0
        switch(header->rep_status) {
184
0
        case NO_EXCEPTION:
185
0
            get_CDR_any(tvb, pinfo, tree, item, offset, stream_is_big_endian, boundary, header);
186
187
0
            old_offset = *offset;
188
0
            proto_tree_add_boolean(tree, hf_CosEventComm_PullSupplier_try_pull_has_event, tvb, old_offset, 1, get_CDR_boolean(tvb,offset));
189
190
0
            break;
191
0
        case USER_EXCEPTION:
192
0
            break;
193
0
        default:
194
            /* Unknown Exception */
195
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
196
0
            break;
197
0
        }   /* switch(header->rep_status) */
198
199
0
        break;
200
0
    default:
201
        /* Unknown GIOP Message */
202
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
203
0
        break;
204
0
    } /* switch(header->message_type) */
205
0
}
206
207
/*
208
 * IDL:omg.org/CosEventComm/PullSupplier/pull:1.0
209
 */
210
static void
211
decode_CosEventComm_PullSupplier_pull(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
212
0
{
213
    /* Operation specific Variable declarations Begin */
214
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
215
0
    _U_ int old_offset;
216
    /* Operation specific Variable declarations End */
217
218
0
    switch(header->message_type) {
219
0
    case Request:
220
0
        break;
221
0
    case Reply:
222
0
        switch(header->rep_status) {
223
0
        case NO_EXCEPTION:
224
0
            get_CDR_any(tvb, pinfo, tree, item, offset, stream_is_big_endian, boundary, header);
225
226
0
            break;
227
0
        case USER_EXCEPTION:
228
0
            break;
229
0
        default:
230
            /* Unknown Exception */
231
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
232
0
            break;
233
0
        }   /* switch(header->rep_status) */
234
235
0
        break;
236
0
    default:
237
        /* Unknown GIOP Message */
238
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
239
0
        break;
240
0
    } /* switch(header->message_type) */
241
0
}
242
243
/*
244
 * IDL:omg.org/CosEventComm/PushSupplier/disconnect_push_supplier:1.0
245
 */
246
static void
247
decode_CosEventComm_PushSupplier_disconnect_push_supplier(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
248
0
{
249
    /* Operation specific Variable declarations Begin */
250
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
251
0
    _U_ int old_offset;
252
    /* Operation specific Variable declarations End */
253
254
0
    switch(header->message_type) {
255
0
    case Request:
256
0
        break;
257
0
    case Reply:
258
0
        switch(header->rep_status) {
259
0
        case NO_EXCEPTION:
260
            /* Function returns void */
261
262
0
            break;
263
0
        case USER_EXCEPTION:
264
0
            break;
265
0
        default:
266
            /* Unknown Exception */
267
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
268
0
            break;
269
0
        }   /* switch(header->rep_status) */
270
271
0
        break;
272
0
    default:
273
        /* Unknown GIOP Message */
274
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
275
0
        break;
276
0
    } /* switch(header->message_type) */
277
0
}
278
279
/*
280
 * IDL:omg.org/CosEventComm/PushConsumer/disconnect_push_consumer:1.0
281
 */
282
static void
283
decode_CosEventComm_PushConsumer_disconnect_push_consumer(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
284
0
{
285
    /* Operation specific Variable declarations Begin */
286
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
287
0
    _U_ int old_offset;
288
    /* Operation specific Variable declarations End */
289
290
0
    switch(header->message_type) {
291
0
    case Request:
292
0
        break;
293
0
    case Reply:
294
0
        switch(header->rep_status) {
295
0
        case NO_EXCEPTION:
296
            /* Function returns void */
297
298
0
            break;
299
0
        case USER_EXCEPTION:
300
0
            break;
301
0
        default:
302
            /* Unknown Exception */
303
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
304
0
            break;
305
0
        }   /* switch(header->rep_status) */
306
307
0
        break;
308
0
    default:
309
        /* Unknown GIOP Message */
310
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
311
0
        break;
312
0
    } /* switch(header->message_type) */
313
0
}
314
315
/*
316
 * IDL:omg.org/CosEventComm/PushConsumer/push:1.0
317
 */
318
static void
319
decode_CosEventComm_PushConsumer_push(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, proto_item *item _U_, int *offset _U_, MessageHeader *header, const char *operation _U_, bool stream_is_big_endian _U_)
320
0
{
321
    /* Operation specific Variable declarations Begin */
322
0
    _U_ wmem_stack_t *tree_stack = wmem_stack_new(pinfo->pool);
323
0
    _U_ int old_offset;
324
    /* Operation specific Variable declarations End */
325
326
0
    switch(header->message_type) {
327
0
    case Request:
328
0
        get_CDR_any(tvb, pinfo, tree, item, offset, stream_is_big_endian, boundary, header);
329
330
0
        break;
331
0
    case Reply:
332
0
        switch(header->rep_status) {
333
0
        case NO_EXCEPTION:
334
            /* Function returns void */
335
336
0
            break;
337
0
        case USER_EXCEPTION:
338
0
            break;
339
0
        default:
340
            /* Unknown Exception */
341
0
            expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_exception, "Unknown exception %d", header->rep_status);
342
0
            break;
343
0
        }   /* switch(header->rep_status) */
344
345
0
        break;
346
0
    default:
347
        /* Unknown GIOP Message */
348
0
        expert_add_info_format(pinfo, item, &ei_coseventcomm_unknown_giop_msg, "Unknown GIOP message %d", header->message_type);
349
0
        break;
350
0
    } /* switch(header->message_type) */
351
0
}
352
353
/*
354
 * Called once we accept the packet as being for us; it sets the
355
 * Protocol and Info columns and creates the top-level protocol
356
 * tree item.
357
 */
358
static proto_tree *
359
start_dissecting(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset)
360
0
{
361
362
0
    proto_item *ti = NULL;
363
0
    proto_tree *tree = NULL;            /* init later, inside if(tree) */
364
365
0
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "COSEVENTCOMM");
366
367
    /*
368
     * Do not clear COL_INFO, as nothing is being written there by
369
     * this dissector yet. So leave it as is from the GIOP dissector.
370
     * TODO: add something useful to COL_INFO
371
     *     col_clear(pinfo->cinfo, COL_INFO);
372
     */
373
374
0
    if (ptree) {
375
0
        ti = proto_tree_add_item(ptree, proto_coseventcomm, tvb, *offset, tvb_reported_length_remaining(tvb, *offset), ENC_NA);
376
0
        tree = proto_item_add_subtree(ti, ett_coseventcomm);
377
0
    }
378
0
    return tree;
379
0
}
380
381
static proto_item*
382
process_RequestOperation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, MessageHeader *header, const char *operation)
383
0
{
384
0
    proto_item *pi;
385
0
    if(header->message_type == Reply) {
386
        /* fill-up info column */
387
0
        col_append_fstr(pinfo->cinfo, COL_INFO, " op = %s",operation);
388
0
    }
389
    /* fill-up the field */
390
0
    pi=proto_tree_add_string(ptree, hf_operationrequest, tvb, 0, 0, operation);
391
0
    proto_item_set_generated(pi);
392
0
    return pi;
393
0
}
394
395
static bool
396
dissect_coseventcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *ptree, int *offset, MessageHeader *header, const char *operation, char *idlname)
397
46
{
398
46
    proto_item *item _U_;
399
46
    proto_tree *tree _U_;
400
46
    bool stream_is_big_endian = is_big_endian(header); /* get endianness */
401
402
    /* If we have a USER Exception, then decode it and return */
403
46
    if ((header->message_type == Reply) && (header->rep_status == USER_EXCEPTION)) {
404
0
       return decode_user_exception(tvb, pinfo, ptree, offset, header, operation, stream_is_big_endian);
405
0
    }
406
407
46
    switch(header->message_type) {
408
409
46
    case Request:
410
46
    case Reply:
411
412
46
        if (strcmp(operation, "disconnect_pull_consumer") == 0
413
0
            && (!idlname || strcmp(idlname, "CosEventComm/PullConsumer") == 0)) {
414
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
415
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
416
0
            decode_CosEventComm_PullConsumer_disconnect_pull_consumer(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
417
0
            return true;
418
0
        }
419
420
46
        if (strcmp(operation, "disconnect_pull_supplier") == 0
421
0
            && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
422
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
423
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
424
0
            decode_CosEventComm_PullSupplier_disconnect_pull_supplier(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
425
0
            return true;
426
0
        }
427
428
46
        if (strcmp(operation, "try_pull") == 0
429
0
            && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
430
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
431
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
432
0
            decode_CosEventComm_PullSupplier_try_pull(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
433
0
            return true;
434
0
        }
435
436
46
        if (strcmp(operation, "pull") == 0
437
0
            && (!idlname || strcmp(idlname, "CosEventComm/PullSupplier") == 0)) {
438
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
439
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
440
0
            decode_CosEventComm_PullSupplier_pull(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
441
0
            return true;
442
0
        }
443
444
46
        if (strcmp(operation, "disconnect_push_supplier") == 0
445
0
            && (!idlname || strcmp(idlname, "CosEventComm/PushSupplier") == 0)) {
446
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
447
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
448
0
            decode_CosEventComm_PushSupplier_disconnect_push_supplier(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
449
0
            return true;
450
0
        }
451
452
46
        if (strcmp(operation, "disconnect_push_consumer") == 0
453
0
            && (!idlname || strcmp(idlname, "CosEventComm/PushConsumer") == 0)) {
454
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
455
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
456
0
            decode_CosEventComm_PushConsumer_disconnect_push_consumer(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
457
0
            return true;
458
0
        }
459
460
46
        if (strcmp(operation, "push") == 0
461
0
            && (!idlname || strcmp(idlname, "CosEventComm/PushConsumer") == 0)) {
462
0
            item = process_RequestOperation(tvb, pinfo, ptree, header, operation);  /* fill-up Request_Operation field & info column */
463
0
            tree = start_dissecting(tvb, pinfo, ptree, offset);
464
0
            decode_CosEventComm_PushConsumer_push(tvb, pinfo, tree, item, offset, header, operation, stream_is_big_endian);
465
0
            return true;
466
0
        }
467
468
46
        break;
469
470
46
    case CancelRequest:
471
0
    case LocateRequest:
472
0
    case LocateReply:
473
0
    case CloseConnection:
474
0
    case MessageError:
475
0
    case Fragment:
476
0
       return false;      /* not handled yet */
477
478
0
    default:
479
0
       return false;      /* not handled yet */
480
481
46
    }   /* switch */
482
483
484
46
    return false;
485
486
46
}  /* End of main dissector  */
487
488
489
/* Register the protocol with Wireshark */
490
void proto_register_giop_coseventcomm(void)
491
16
{
492
    /* setup list of header fields */
493
16
    static hf_register_info hf[] = {
494
        /* field that indicates the currently ongoing request/reply exchange */
495
16
            {&hf_operationrequest, {"Request_Operation","giop-coseventcomm.Request_Operation",FT_STRING,BASE_NONE,NULL,0x0,NULL,HFILL}},
496
        /* Operation filters */
497
16
        {&hf_CosEventComm_PullSupplier_try_pull_has_event, {"has_event","giop-coseventcomm.PullSupplier.try_pull.has_event",FT_BOOLEAN,8,NULL,0x01,NULL,HFILL}},
498
        /* Attribute filters */
499
        /* Struct filters */
500
        /* User exception filters */
501
        /* Union filters */
502
503
16
    };
504
505
16
    static ei_register_info ei[] = {
506
16
        { &ei_coseventcomm_unknown_giop_msg, { "giop-coseventcomm.unknown_giop_msg", PI_PROTOCOL, PI_WARN, "Unknown GIOP message", EXPFILL }},
507
16
        { &ei_coseventcomm_unknown_exception, { "giop-coseventcomm.unknown_exception", PI_PROTOCOL, PI_WARN, "Unknown exception", EXPFILL }},
508
16
        { &ei_coseventcomm_unknown_reply_status, { "giop-coseventcomm.unknown_reply_status", PI_PROTOCOL, PI_WARN, "Unknown reply status", EXPFILL }},
509
16
    };
510
511
    /* setup protocol subtree array */
512
513
16
    static int *ett[] = {
514
16
        &ett_coseventcomm,
515
16
        &ett_giop_struct,
516
16
        &ett_giop_sequence,
517
16
        &ett_giop_array,
518
16
        &ett_giop_union,
519
16
    };
520
521
16
    expert_module_t* expert_coseventcomm;
522
523
524
    /* Register the protocol name and description */
525
16
    proto_coseventcomm = proto_register_protocol("Coseventcomm Dissector Using GIOP API" , "GIOP/COSEVENTCOMM", "giop-coseventcomm" );
526
16
    proto_register_field_array(proto_coseventcomm, hf, array_length(hf));
527
16
    proto_register_subtree_array(ett, array_length(ett));
528
529
16
    expert_coseventcomm = expert_register_protocol(proto_coseventcomm);
530
16
    expert_register_field_array(expert_coseventcomm, ei, array_length(ei));
531
16
}
532
533
/* register me as handler for these interfaces */
534
void proto_reg_handoff_giop_coseventcomm(void)
535
16
{
536
    /* Register for Explicit Dissection */
537
16
    register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PullConsumer", proto_coseventcomm );     /* explicit dissector */
538
539
    /* Register for Explicit Dissection */
540
16
    register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PullSupplier", proto_coseventcomm );     /* explicit dissector */
541
542
    /* Register for Explicit Dissection */
543
16
    register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PushConsumer", proto_coseventcomm );     /* explicit dissector */
544
545
    /* Register for Explicit Dissection */
546
16
    register_giop_user_module(dissect_coseventcomm, "COSEVENTCOMM", "CosEventComm/PushSupplier", proto_coseventcomm );     /* explicit dissector */
547
548
    /* Register for Heuristic Dissection */
549
16
    register_giop_user(dissect_coseventcomm, "COSEVENTCOMM" ,proto_coseventcomm);     /* heuristic dissector */
550
551
16
}
552
553
/*
554
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
555
 *
556
 * Local Variables:
557
 * c-basic-offset: 4
558
 * tab-width: 8
559
 * indent-tabs-mode: nil
560
 * End:
561
 *
562
 * ex: set shiftwidth=4 tabstop=8 expandtab:
563
 * :indentSize=4:tabSize=8:noTabs=true:
564
 */