2 # H.248 conformation file
26 IndAudMediaDescriptor/streams IndAudMediaDescriptorStreams
27 ActionRequest/contextId ContextId
28 ActionReply/contextId ContextId
29 StatisticsParameter/statName StatName
30 StatisticsParameter/statValue StatValue
31 PropertyParm/propertyName PropertyName
32 EventParameter/extraInfo EventPar_extraInfo
33 PropertyParm/extraInfo PropParm_extraInfo
34 ContextRequest/iepscallind Iepscallind_BOOL
37 IP4Address/address iP4Address
38 IP6Address/address iP6Address
39 ContextAttrAuditRequest/emergency cAAREmergency
40 ContextAttrAuditRequest/priority cAARPriority
41 SecondRequestedEvent/eventAction secondaryEventAction
42 TerminationStateDescriptor/eventBufferControl tSEventBufferControl
43 SecondEventsDescriptor/eventList secondaryEventList
44 IndAudEventBufferDescriptor/eventName iAEBDEventName
45 TerminationID/id terminationId
46 IndAudStreamParms/localControlDescriptor iASPLocalControlDescriptor
47 IndAudStreamParms/localDescriptor iASPLocalDescriptor
48 LocalControlDescriptor/propertyParms lCDpropertyParms
49 TerminationStateDescriptor/propertyParms tSDpropertyParms
50 MediaDescriptor/streams/oneStream mediaDescriptorOneStream
51 MediaDescriptor/streams/multiStream mediaDescriptorMultiStream
52 MediaDescriptor/streams/multiStream/_item mediaDescriptorMultiStream_item
53 DomainName/name domName
54 IndAudEventsDescriptor/pkgdName iAEDPkgdName
55 IndAudLocalRemoteDescriptor/propGrps iAPropertyGroup
56 IndAudLocalControlDescriptor/propertyParms indAudPropertyParms
57 IndAudTerminationStateDescriptor/propertyParms indAudPropertyParms
58 IndAudLocalControlDescriptor/reserveGroup iALCDReserveGroup
59 IndAudLocalControlDescriptor/reserveValue iALCDReserveValue
60 IndAudLocalControlDescriptor/streamMode iALCDStreamMode
61 IndAudStreamDescriptor/streamParms indAudStreamParms
62 IndAudMediaDescriptor/termStateDescr indAudTerminationStateDescriptor
63 IndAudSignal/signalName iASignalName
64 IndAudSeqSigList/signalList iASignalList
65 IndAudSignalsDescriptor/signal indAudSignal
66 IndAudSignalsDescriptor/seqSigList indAudSeqSigList
67 IndAudTerminationStateDescriptor/serviceState iATSDServiceState
68 IndAudStreamParms/remoteDescriptor iASPRemoteDescriptor
69 PropertyParm/value propertyParamValue
70 IndAudMediaDescriptor/streams indAudMediaDescriptorStreams
71 AmmRequest/terminationID terminationIDList
72 AmmsReply/terminationID terminationIDList
73 AmmDescriptor/statisticsDescriptor aDstatisticsDescriptor
74 AuditReturnParameter/statisticsDescriptor aRPstatisticsDescriptor
75 StreamParms/statisticsDescriptor sPstatisticsDescriptor
76 SubtractRequest/terminationID terminationIDList
77 NotifyRequest/terminationID terminationIDList
78 NotifyReply/terminationID terminationIDList
79 ServiceChangeRequest/terminationID terminationIDList
80 ServiceChangeReply/terminationID terminationIDList
81 IndAudStatisticsDescriptor/statName iAStatName
82 EventParameter/extraInfo eventPar_extraInfo
83 PropertyParm/extraInfo propParm_extraInfo
84 ContextRequest/iepscallind iepscallind_BOOL
85 TransactionRequest/transactionId transactionId
86 SegmentReply/transactionId seg_rep_transactionId
87 TransactionReply/transactionId trep_transactionId
88 TransactionPending/transactionId tpend_transactionId
89 EventParameterV1/value event_param_value
90 SigParameterV1/value sig_param_value
91 AuditReplyV1/auditResult audit_result
94 IP4Address/address ABBREV=iP4Address
95 IP6Address/address ABBREV=iP6Address
96 TransactionRequest/transactionId ABBREV=transactionRequest.transactionId
97 SegmentReply/transactionId ABBREV=segmentreply.transactionId
98 TransactionReply/transactionId ABBREV=transactionreply.transactionId
99 TransactionPending/transactionId ABBREV=transactionpending.transactionId
100 DomainName/name ABBREV=domainname
101 TerminationID/id ABBREV=terminationId
102 PropertyParm/value ABBREV=propertyParamValue
103 EventParameterV1/value ABBREV=event_param_value
104 SigParameterV1/value ABBREV=sig_param_value
107 curr_info.msg = gcp_msg(actx->pinfo,tvb_raw_offset(tvb),keep_persistent_data);
111 col_add_str(actx->pinfo->cinfo, COL_INFO, gcp_msg_to_str(curr_info.msg,actx->pinfo->pool,keep_persistent_data));
113 if (keep_persistent_data)
114 gcp_analyze_msg(h248_tree, actx->pinfo, tvb, curr_info.msg, &h248_arrel, &ei_h248_errored_command);
117 #.FN_BODY Message/version VAL_PTR = &h248_version
121 #.FN_BODY TransactionRequest/transactionId
123 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
124 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REQUEST, actx->pinfo, keep_persistent_data);
128 #.FN_BODY TransactionPending/transactionId
130 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
131 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_PENDING, actx->pinfo, keep_persistent_data);
134 #.FN_BODY TransactionReply/transactionId
136 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
137 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_REPLY, actx->pinfo, keep_persistent_data);
140 #.FN_BODY SegmentReply/transactionId
142 offset = dissect_h248_trx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &trx_id);
143 curr_info.trx = gcp_trx(curr_info.msg, trx_id, GCP_TRX_ACK, actx->pinfo, keep_persistent_data);
146 #.FN_BODY ActionRequest/contextId
148 offset = dissect_h248_ctx_id(implicit_tag, actx->pinfo, tree, tvb, offset, &ctx_id);
149 curr_info.ctx = gcp_ctx(curr_info.msg,curr_info.trx,ctx_id,actx->pinfo,keep_persistent_data);
150 curr_info.cmd = NULL;
151 curr_info.term = NULL;
156 if (!curr_info.cmd) {
157 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_REPLY,offset,actx->pinfo,keep_persistent_data);
162 #.FN_HDR Command/addReq
163 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REQ,offset,actx->pinfo,keep_persistent_data);
167 #.FN_FTR Command/addReq
168 curr_info.cmd = NULL;
171 #.FN_HDR Command/moveReq
172 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REQ,offset,actx->pinfo,keep_persistent_data);
177 #.FN_FTR Command/moveReq
178 curr_info.cmd = NULL;
181 #.FN_HDR Command/modReq
182 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REQ,offset,actx->pinfo,keep_persistent_data);
185 #.FN_FTR Command/modReq
186 curr_info.cmd = NULL;
189 #.FN_HDR Command/subtractReq
190 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REQ,offset,actx->pinfo,keep_persistent_data);
193 #.FN_FTR Command/subtractReq
194 curr_info.cmd = NULL;
197 #.FN_HDR Command/auditCapRequest
198 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REQ,offset,actx->pinfo,keep_persistent_data);
201 #.FN_FTR Command/auditCapRequest
202 curr_info.cmd = NULL;
205 #.FN_HDR Command/auditValueRequest
206 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REQ,offset,actx->pinfo,keep_persistent_data);
209 #.FN_FTR Command/auditValueRequest
210 curr_info.cmd = NULL;
213 #.FN_HDR Command/notifyReq
214 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REQ,offset,actx->pinfo,keep_persistent_data);
217 #.FN_FTR Command/notifyReq
218 curr_info.cmd = NULL;
221 #.FN_HDR ServiceChangeRequest
222 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REQ,offset,actx->pinfo,keep_persistent_data);
225 #.FN_FTR ServiceChangeRequest
226 curr_info.cmd = NULL;
229 #.FN_HDR ContextRequest/topologyReq
230 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_TOPOLOGY_REQ,offset,actx->pinfo,keep_persistent_data);
233 #.FN_FTR ContextRequest/topologyReq
234 curr_info.cmd = NULL;
237 #.FN_HDR ActionRequest/contextAttrAuditReq
238 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_CTX_ATTR_AUDIT_REQ,offset,actx->pinfo,keep_persistent_data);
241 #.FN_FTR ActionRequest/contextAttrAuditReq
242 curr_info.cmd = NULL;
245 #.FN_HDR CommandReply/addReply
246 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_ADD_REPLY,offset,actx->pinfo,keep_persistent_data);
250 #.FN_HDR CommandReply/moveReply
251 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOVE_REPLY,offset,actx->pinfo,keep_persistent_data);
255 #.FN_HDR CommandReply/modReply
256 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_MOD_REPLY,offset,actx->pinfo,keep_persistent_data);
260 #.FN_HDR CommandReply/subtractReply
261 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SUB_REPLY,offset,actx->pinfo,keep_persistent_data);
265 #.FN_HDR CommandReply/notifyReply
266 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_NOTIFY_REPLY,offset,actx->pinfo,keep_persistent_data);
270 #.FN_HDR ServiceChangeReply
271 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_SVCCHG_REPLY,offset,actx->pinfo,keep_persistent_data);
275 #.FN_HDR CommandReply/auditCapReply
276 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITCAP_REPLY,offset,actx->pinfo,keep_persistent_data);
280 #.FN_BODY CommandReply/auditCapReply
282 if(h248_version > 1) {
285 /* call V1 of the dissector */
286 offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
290 #.FN_HDR CommandReply/auditValueReply
291 curr_info.cmd = gcp_cmd(curr_info.msg,curr_info.trx,curr_info.ctx,GCP_CMD_AUDITVAL_REPLY,offset,actx->pinfo,keep_persistent_data);
295 #.FN_BODY CommandReply/auditValueReply
297 if(h248_version > 1) {
300 /* call V1 of the dissector */
301 offset = dissect_h248_AuditReplyV1(implicit_tag, tvb, offset, actx, tree, hf_index);
305 #.FN_BODY AuditReplyV1
307 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
308 AuditReplyV1_sequence, hf_h248_auditValueReplyV1, ett_h248_AuditReplyV1);
311 #.FN_BODY ErrorDescriptor/errorCode
312 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &error_code);
313 expert_add_info(actx->pinfo, actx->created_item, &ei_h248_errored_command);
316 gcp_cmd_set_error(curr_info.cmd,error_code);
317 } else if (curr_info.trx) {
318 gcp_trx_set_error(curr_info.trx,error_code);
322 #.FN_HDR TerminationID
323 curr_info.term = wmem_new0(actx->pinfo->pool, gcp_term_t);
324 wild_term = GCP_WILDCARD_NONE;
327 #.FN_BODY WildcardField
329 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
330 tree = proto_item_add_subtree(actx->created_item,ett_wildcard);
331 proto_tree_add_item(tree,hf_h248_term_wild_type,new_tvb,0,1,ENC_BIG_ENDIAN);
332 proto_tree_add_item(tree,hf_h248_term_wild_level,new_tvb,0,1,ENC_BIG_ENDIAN);
333 proto_tree_add_item(tree,hf_h248_term_wild_position,new_tvb,0,1,ENC_BIG_ENDIAN);
335 wild_term = tvb_get_uint8(new_tvb,0) & 0x80 ? GCP_WILDCARD_CHOOSE : GCP_WILDCARD_ALL;
336 /* limitation: assume only one wildcard is used */
337 wild_card = tvb_get_uint8(new_tvb,0);
341 #.FN_BODY TerminationID/id
343 h248_term_info_t term_info;
345 term_info.wild_card = wild_card;
346 term_info.str = NULL;
348 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &new_tvb);
351 curr_info.term->len = tvb_reported_length(new_tvb);
352 curr_info.term->type = 0; /* unknown */
354 if (h248_term_handle) {
355 call_dissector_with_data(h248_term_handle, new_tvb, actx->pinfo, tree, &term_info);
359 if (curr_info.term->len) {
360 curr_info.term->buffer = (uint8_t *)tvb_memdup(actx->pinfo->pool,new_tvb,0,curr_info.term->len);
362 curr_info.term->str = wmem_strdup_printf(actx->pinfo->pool, "%s %s",
363 bytes_to_str_punct(actx->pinfo->pool,curr_info.term->buffer,curr_info.term->len, 0),
366 curr_info.term->str = bytes_to_str_punct(actx->pinfo->pool,curr_info.term->buffer,curr_info.term->len, 0);
371 curr_info.term = gcp_cmd_add_term(curr_info.msg, curr_info.trx, curr_info.cmd, curr_info.term, wild_term, actx->pinfo, keep_persistent_data);
374 curr_info.term->len = 0;
375 curr_info.term->buffer = (uint8_t*)wmem_strdup(actx->pinfo->pool, "");
376 curr_info.term->str = wmem_strdup(actx->pinfo->pool, "?");
380 #.FN_BODY SCreasonValueOctetStr VAL_PTR = ¶meter_tvb
381 tvbuff_t *parameter_tvb;
387 dissect_h248_ServiceChangeReasonStr(false, parameter_tvb, 0, actx, tree, hf_h248_serviceChangeReasonStr);
390 #.FN_BODY EventParameter
391 /* H248 v1 support */
392 if (h248_version > 1) {
395 offset = dissect_h248_EventParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
399 #.FN_BODY SigParameter
400 /* H248 v1 support */
401 if (h248_version > 1) {
404 offset = dissect_h248_SigParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index);
409 IP4Address/address TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
410 IP6Address/address TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
411 ActionRequest/contextId TYPE = FT_UINT32 DISPLAY = BASE_HEX STRINGS = NULL
412 ActionReply/contextId TYPE = FT_UINT32 DISPLAY = BASE_HEX STRINGS = NULL
413 ErrorDescriptor/errorCode TYPE = FT_UINT32 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &h248_reasons_ext