2 # H.225 conformation file
3 # Copyright 2004 Anders Broman
5 #.IMPORT ../h235/h235-exp.cnf
12 #.IMPORT ../h245/h245-exp.cnf
14 #----------------------------------------------------------------------------------------
15 #.EXPORTS ONLY_VALS WS_DLL NO_PROT_PREFIX
16 H323-UU-PDU/h323-message-body
18 GatekeeperRejectReason
27 RegistrationRejectReason
30 RasMessage EXTERN WS_DLL
34 AliasAddress NO_PROT_PREFIX
46 AlternateTransportAddresses
61 ReleaseCompleteReason EXTERN WS_DLL
62 ExtendedAliasAddress_PDU
71 #----------------------------------------------------------------------------------------
79 FastStart Setup-UUIE/fastStart
81 Setup-UUIE/fastStart FastStart
82 CallProceeding-UUIE/fastStart FastStart
83 Connect-UUIE/fastStart FastStart
84 Alerting-UUIE/fastStart FastStart
85 Information-UUIE/fastStart FastStart
86 Facility-UUIE/fastStart FastStart
87 Progress-UUIE/fastStart FastStart
90 H245Control H323-UU-PDU/h245Control
91 ParallelH245Control Setup-UUIE/parallelH245Control
92 DialedDigits AliasAddress/dialledDigits
95 DestinationInfo AdmissionRequest/destinationInfo
97 AdmissionRequest/destinationInfo DestinationInfo
98 AdmissionConfirm/destinationInfo DestinationInfo
99 LocationRequest/destinationInfo DestinationInfo
100 LocationConfirm/destinationInfo DestinationInfo
103 H245TransportAddress TransportAddress
105 Setup-UUIE/h245Address H245TransportAddress
106 CallProceeding-UUIE/h245Address H245TransportAddress
107 Connect-UUIE/h245Address H245TransportAddress
108 Alerting-UUIE/h245Address H245TransportAddress
109 Facility-UUIE/h245Address H245TransportAddress
110 Progress-UUIE/h245Address H245TransportAddress
112 H245TransportAddress/ipAddress h245IpAddress
113 H245TransportAddress/ipAddress/ip h245Ip
114 H245TransportAddress/ipAddress/port h245IpPort
115 H245TransportAddress/ipSourceRoute h245IpSourceRoute
116 H245TransportAddress/ipSourceRoute/route h245Route
117 H245TransportAddress/ipSourceRoute/routing h245Routing
118 H245TransportAddress/ipxAddress h245IpxAddress
119 H245TransportAddress/ipxAddress/port h245IpxPort
120 H245TransportAddress/ip6Address h245Ip6Address
121 H245TransportAddress/ip6Address/ip h245Ip6
122 H245TransportAddress/ip6Address/port h245Ip6port
123 DisplayName/language displayName_language
124 Endpoint/remoteExtensionAddress/_item ep_remoteExtensionAddress_item
125 AdmissionConfirm/remoteExtensionAddress/_item ac_remoteExtensionAddress_item
128 H245TransportAddress/ipAddress/ip ABBREV=h245Ip
129 H245TransportAddress/ipAddress/port ABBREV=h245IpPort
130 H245TransportAddress/ip6Address/ip ABBREV=h245Ip6
131 H245TransportAddress/ip6Address/port ABBREV=h245Ip6port
132 H245TransportAddress/ipxAddress/port ABBREV=h245IpxPort
133 TransportAddress/ipSourceRoute/ip ABBREV=src_route_ipV4
134 TransportAddress/ipSourceRoute/port ABBREV=ipV4_src_port
135 TransportAddress/ipAddress/ip ABBREV=ipV4
136 TransportAddress/ipAddress/port ABBREV=ipV4_port
137 TransportAddress/ip6Address/ip ABBREV=ipV6
138 TransportAddress/ip6Address/port ABBREV=ipV6_port
139 TransportAddress/ipxAddress/port ABBREV=ipx_port
140 DisplayName/language ABBREV=displayName_language
141 ExtendedAliasAddress/address ABBREV=extAliasAddress
142 Endpoint/remoteExtensionAddress/_item ABBREV=remoteExtensionAddress.item
143 AdmissionConfirm/remoteExtensionAddress/_item ABBREV=ac_remoteExtensionAddress_item
146 Language Setup-UUIE/language
148 Connect-UUIE/language Language
149 Setup-UUIE/language Language
150 RegistrationRequest/language Language
151 AdmissionConfirm/language Language
152 LocationRequest/language Language
154 #----------------------------------------------------------------------------------------
156 CallCreditServiceControl/callStartingPoint CallCreditServiceControl_callStartingPoint
157 TunnelledProtocol/id TunnelledProtocol_id
158 ServiceControlSession/reason ServiceControlSession_reason
159 RasUsageSpecification/callStartingPoint RasUsageSpecificationcallStartingPoint
160 CapacityReportingSpecification/when CapacityReportingSpecification_when
161 RasUsageSpecification/when RasUsageSpecification_when
162 TransportAddress/ipAddress/ip IpV4
163 #----------------------------------------------------------------------------------------
165 RasUsageSpecification/callStartingPoint/alerting alerting_flg
166 CallCreditServiceControl/callStartingPoint/alerting alerting_flg
167 UseSpecifiedTransport/annexE annexE_flg
169 UUIEsRequested/callProceeding callProceeding_flg
172 UUIEsRequested/connect connect_bool
173 NonStandardIdentifier/object nsiOID
174 NonStandardParameter/data nsp_data
175 H323-UU-PDU/h323-message-body/empty empty_flg
176 RasUsageInfoTypes/endTime endTime_flg
177 UUIEsRequested/facility facility_bool
178 CallsAvailable/group group_IA5String
179 GroupID/group group_IA5String
181 Setup-UUIE/hopCount hopCount_1_31
182 UUIEsRequested/information information_bool
183 TransportAddress/ip6Address/ip ipV6
184 TransportAddress/ipAddress/ip ipV4
185 TransportAddress/ipSourceRoute/ip src_route_ipV4
186 RTPSession/multicast multicast_flg
188 UUIEsRequested/notify notify_bool
189 TransportAddress/ipxAddress/port ipx_port
190 TransportAddress/ipAddress/port ipV4_port
191 TransportAddress/ipSourceRoute/port ipV4_src_port
192 TransportAddress/ip6Address/port ipV6_port
193 UUIEsRequested/progress progress_bool
195 Facility-UUIE/reason facilityReason
196 UnregistrationRequest/reason unregRequestReason
197 ReleaseComplete-UUIE/reason releaseCompleteReason
198 BandwidthReject/rejectReason bandRejectReason
199 UnregistrationReject/rejectReason unregRejectReason
200 RegistrationReject/rejectReason registrationRejectReason
201 LocationReject/rejectReason locationRejectReason
202 DisengageReject/rejectReason disengageRejectReason
203 GatekeeperReject/rejectReason gatekeeperRejectReason
205 UUIEsRequested/releaseComplete releaseComplete_bool
206 UseSpecifiedTransport/sctp sctp_flg
207 ServiceControlSession/sessionId sessionId_0_255
208 UUIEsRequested/setup setup_bool
209 UUIEsRequested/setupAcknowledge setupAcknowledge_bool
210 Setup-UUIE/sourceInfo setup-UUIE_sourceInfo
212 UUIEsRequested/status status_bool
213 UUIEsRequested/statusInquiry statusInquiry_bool
214 RasUsageInfoTypes/terminationCause terminationCause_flg
215 CapacityReportingSpecification/when capacityReportingSpecification_when
216 UUIEsRequested/alerting alerting_bool
218 LocationConfirm/callSignalAddress locationConfirm_callSignalAddress
220 RasUsageSpecification/callStartingPoint/connect connect_flg
221 CallCreditServiceControl/callStartingPoint/connect connect_flg
223 Alerting-UUIE/destinationInfo uUIE_destinationInfo
224 CallProceeding-UUIE/destinationInfo uUIE_destinationInfo
225 Connect-UUIE/destinationInfo uUIE_destinationInfo
226 Facility-UUIE/destinationInfo uUIE_destinationInfo
227 Progress-UUIE/destinationInfo uUIE_destinationInfo
229 TunnelledProtocol/id tunnelledProtocol_id
230 SecurityCapabilities/integrity securityCapabilities_integrity
232 GenericIdentifier/nonStandard genericIdentifier_nonStandard
233 AlternateGK/rasAddress alternateGK_rasAddress
234 GatekeeperRequest/rasAddress gatekeeperRequest_rasAddress
235 GatekeeperConfirm/rasAddress gatekeeperConfirm_rasAddress
236 LocationConfirm/rasAddress locationConfirm_rasAddress
237 InfoRequestResponse/rasAddress infoRequestResponse_rasAddress
240 Setup-UUIE/remoteExtensionAddress uUIE_remoteExtensionAddress
241 Facility-UUIE/remoteExtensionAddress uUIE_remoteExtensionAddress
243 VendorIdentifier/vendor vendorIdentifier_vendor
245 RasUsageSpecification/callStartingPoint ras_callStartingPoint
247 ReleaseCompleteReason/securityError rLC_securityError
248 GatekeeperRejectReason/securityError gkRej_securityError
249 RegistrationRejectReason/securityError reg_securityError
251 CallIdentifier/guid guid
253 ExtendedAliasAddress/address extAliasAddress
255 IsupNumber/e164Number isupE164Number
256 IsupNumber/dataPartyNumber isupDataPartyNumber
257 IsupNumber/telexPartyNumber isupTelexPartyNumber
258 IsupNumber/privateNumber isupPrivateNumber
259 IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber
261 #----------------------------------------------------------------------------------------
262 #.FN_BODY H323-UU-PDU/h323-message-body VAL_PTR = &message_body_val
263 int32_t message_body_val;
264 h225_packet_info* h225_pi;
266 contains_faststart = false;
269 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "CS: %%s ",
270 val_to_str_const(message_body_val, T_h323_message_body_vals, "<unknown>"));
272 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
273 if (h225_pi != NULL) {
274 if (h225_pi->msg_type == H225_CS) {
275 /* Don't override msg_tag value from IRR */
276 h225_pi->msg_tag = message_body_val;
280 h225_pi->guid = *call_id_guid;
284 if (contains_faststart == true )
286 col_append_str(actx->pinfo->cinfo, COL_INFO, "OpenLogicalChannel " );
289 col_set_fence(actx->pinfo->cinfo,COL_INFO);
292 #----------------------------------------------------------------------------------------
293 #.FN_BODY FastStart/_item VAL_PTR = &value_tvb
294 tvbuff_t *value_tvb = NULL;
296 h225_packet_info* h225_pi;
300 if (value_tvb && tvb_reported_length(value_tvb)) {
301 dissect_h245_FastStart_OLC(value_tvb, actx->pinfo, tree, codec_str);
304 /* Add to packet info */
305 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
306 if (h225_pi != NULL) {
308 snprintf(temp, 50, "%%s %%s", h225_pi->frame_label, codec_str);
309 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
310 h225_pi->is_faststart = true;
312 contains_faststart = true;
314 #----------------------------------------------------------------------------------------
315 #.FN_BODY RasMessage VAL_PTR = &rasmessage_value
316 int32_t rasmessage_value;
317 h225_packet_info* h225_pi;
321 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RAS: %%s ",
322 val_to_str_const(rasmessage_value, h225_RasMessage_vals, "<unknown>"));
324 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
325 if (h225_pi != NULL) {
326 h225_pi->msg_tag = rasmessage_value;
328 h225_pi->guid = *call_id_guid;
332 #----------------------------------------------------------------------------------------
333 #.FN_HDR DestinationInfo/_item
334 h225_packet_info* h225_pi;
336 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
337 if (h225_pi != NULL) {
338 h225_pi->is_destinationInfo = true;
341 #----------------------------------------------------------------------------------------
342 #.FN_BODY DialedDigits VAL_PTR = &value_tvb
343 tvbuff_t *value_tvb = NULL;
345 h225_packet_info* h225_pi;
348 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
349 if (h225_pi && h225_pi->is_destinationInfo == true) {
351 len = tvb_reported_length(value_tvb);
352 /* XXX - should this be allocated as an ephemeral string? */
353 if (len > sizeof h225_pi->dialedDigits - 1)
354 len = sizeof h225_pi->dialedDigits - 1;
355 tvb_memcpy(value_tvb, (uint8_t*)h225_pi->dialedDigits, 0, len);
357 h225_pi->dialedDigits[len] = '\0';
358 h225_pi->is_destinationInfo = false;
361 #----------------------------------------------------------------------------------------
362 #.FN_BODY H245TransportAddress/ipAddress/ip VAL_PTR = &value_tvb
368 ipv4_address = tvb_get_ipv4(value_tvb, 0);
370 #----------------------------------------------------------------------------------------
371 #.FN_BODY H245TransportAddress/ip6Address/ip VAL_PTR = &value_tvb
374 ipv6_address = ipv6_address_zeros;
377 tvb_get_ipv6(value_tvb, 0, &ipv6_address);
379 #----------------------------------------------------------------------------------------
380 #.FN_PARS H245TransportAddress/ipAddress/port VAL_PTR = &ip_port
381 #----------------------------------------------------------------------------------------
382 #.FN_PARS H245TransportAddress/ip6Address/port VAL_PTR = &ip_port
383 #----------------------------------------------------------------------------------------
384 #.FN_BODY ParallelH245Control/_item VAL_PTR = &h245_tvb
385 tvbuff_t *h245_tvb = NULL;
388 next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
390 #----------------------------------------------------------------------------------------
391 #.FN_BODY H245Control/_item VAL_PTR = &h245_tvb
392 tvbuff_t *h245_tvb = NULL;
395 next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
397 #----------------------------------------------------------------------------------------
398 #.FN_HDR H323-UU-PDU/h323-message-body/empty
399 h225_packet_info* h225_pi;
401 #----------------------------------------------------------------------------------------
402 #.FN_FTR H323-UU-PDU/h323-message-body/empty
403 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
404 if (h225_pi != NULL) {
405 h225_pi->cs_type = H225_EMPTY;
408 #----------------------------------------------------------------------------------------
410 h225_packet_info* h225_pi;
412 #----------------------------------------------------------------------------------------
414 /* Add to packet info */
415 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
416 if (h225_pi != NULL) {
417 h225_pi->cs_type = H225_STATUS;
418 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
421 #----------------------------------------------------------------------------------------
422 #.FN_HDR Information-UUIE
423 h225_packet_info* h225_pi;
425 #----------------------------------------------------------------------------------------
426 #.FN_FTR Information-UUIE
427 /* Add to packet info */
428 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
429 if (h225_pi != NULL) {
430 h225_pi->cs_type = H225_INFORMATION;
431 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
434 #----------------------------------------------------------------------------------------
435 #.FN_HDR Progress-UUIE
436 h225_packet_info* h225_pi;
438 #----------------------------------------------------------------------------------------
439 #.FN_FTR Progress-UUIE
440 /* Add to packet info */
441 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
442 if (h225_pi != NULL) {
443 h225_pi->cs_type = H225_PROGRESS;
444 if (contains_faststart) {
446 snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
447 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
449 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
452 #----------------------------------------------------------------------------------------
453 #.FN_HDR SetupAcknowledge-UUIE
454 h225_packet_info* h225_pi;
456 #----------------------------------------------------------------------------------------
457 #.FN_FTR SetupAcknowledge-UUIE
458 /* Add to packet info */
459 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
460 if (h225_pi != NULL) {
461 h225_pi->cs_type = H225_SETUP_ACK;
462 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
465 #----------------------------------------------------------------------------------------
466 #.FN_HDR Facility-UUIE
467 h225_packet_info* h225_pi;
469 #----------------------------------------------------------------------------------------
470 #.FN_FTR Facility-UUIE
471 /* Add to packet info */
472 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
473 if (h225_pi != NULL) {
474 h225_pi->cs_type = H225_FACILITY;
475 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
478 #----------------------------------------------------------------------------------------
479 #.FN_HDR H323-UU-PDU/h245Tunnelling
480 h225_packet_info* h225_pi;
481 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
482 if (h225_pi != NULL) {
484 #----------------------------------------------------------------------------------------
485 #.FN_PARS H323-UU-PDU/h245Tunnelling VAL_PTR = &(h225_pi->is_h245Tunneling)
486 #----------------------------------------------------------------------------------------
487 #.FN_FTR H323-UU-PDU/h245Tunnelling
490 #----------------------------------------------------------------------------------------
492 h225_packet_info* h225_pi;
493 contains_faststart = false;
495 #----------------------------------------------------------------------------------------
497 /* Add to packet info */
498 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
499 if (h225_pi != NULL) {
500 h225_pi->cs_type = H225_SETUP;
501 if (contains_faststart) {
503 snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
504 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
506 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
509 #----------------------------------------------------------------------------------------
510 #.FN_HDR CallProceeding-UUIE
511 h225_packet_info* h225_pi;
513 #----------------------------------------------------------------------------------------
514 #.FN_FTR CallProceeding-UUIE
515 /* Add to packet info */
516 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
517 if (h225_pi != NULL) {
518 h225_pi->cs_type = H225_CALL_PROCEDING;
519 if (contains_faststart) {
521 snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
522 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
524 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
527 #----------------------------------------------------------------------------------------
528 #.FN_HDR Alerting-UUIE
529 h225_packet_info* h225_pi;
531 #----------------------------------------------------------------------------------------
532 #.FN_FTR Alerting-UUIE
533 /* Add to packet info */
534 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
535 if (h225_pi != NULL) {
536 h225_pi->cs_type = H225_ALERTING;
537 if (contains_faststart) {
539 snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
540 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
542 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
545 #----------------------------------------------------------------------------------------
546 #.FN_HDR ReleaseComplete-UUIE
547 h225_packet_info* h225_pi;
549 #----------------------------------------------------------------------------------------
550 #.FN_FTR ReleaseComplete-UUIE
551 /* Add to packet info */
552 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
553 if (h225_pi != NULL) {
554 h225_pi->cs_type = H225_RELEASE_COMPLET;
555 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
558 #----------------------------------------------------------------------------------------
559 #.FN_HDR Connect-UUIE
560 h225_packet_info* h225_pi;
562 #----------------------------------------------------------------------------------------
563 #.FN_FTR Connect-UUIE
564 /* Add to packet info */
565 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
566 if (h225_pi != NULL) {
567 h225_pi->cs_type = H225_CONNECT;
568 if (contains_faststart) {
570 snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
571 (void) g_strlcpy(h225_pi->frame_label, temp, 50);
573 snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
576 #----------------------------------------------------------------------------------------
577 #.FN_HDR H245TransportAddress
578 h225_packet_info* h225_pi;
580 ipv6_address = ipv6_address_zeros;
584 #----------------------------------------------------------------------------------------
585 #.FN_FTR H245TransportAddress
586 /* we need this info for TAPing */
587 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
590 h225_pi->is_h245 = true;
591 h225_pi->h245_address = ipv4_address;
592 h225_pi->h245_port = ip_port;
594 if ( !actx->pinfo->fd->visited && h245_handle && ip_port!=0 ) {
596 conversation_t *conv=NULL;
598 if (ipv4_address!=0) {
599 set_address(&src_addr, AT_IPv4, 4, &ipv4_address);
600 } else if (memcmp(ipv6_address.bytes, ipv6_address_zeros.bytes, sizeof(ipv6_address.bytes))!=0) {
601 set_address(&src_addr, AT_IPv6, 16, ipv6_address.bytes);
606 conv=find_conversation(actx->pinfo->num, &src_addr, &src_addr, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR_B|NO_PORT_B);
608 conv=conversation_new(actx->pinfo->num, &src_addr, &src_addr, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR2|NO_PORT2);
609 conversation_set_dissector(conv, h245_handle);
613 #----------------------------------------------------------------------------------------
614 #.FN_BODY FacilityReason VAL_PTR = &value
616 h225_packet_info* h225_pi;
617 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
620 if (h225_pi != NULL) {
621 h225_pi->reason = value;
624 #----------------------------------------------------------------------------------------
625 #.FN_BODY GatekeeperRejectReason VAL_PTR = &value
627 h225_packet_info* h225_pi;
628 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
631 if (h225_pi != NULL) {
632 h225_pi->reason = value;
635 #----------------------------------------------------------------------------------------
636 #.FN_BODY UnregRequestReason VAL_PTR = &value
638 h225_packet_info* h225_pi;
639 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
642 if (h225_pi != NULL) {
643 h225_pi->reason = value;
646 #----------------------------------------------------------------------------------------
647 #.FN_BODY UnregRejectReason VAL_PTR = &value
649 h225_packet_info* h225_pi;
650 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
653 if (h225_pi != NULL) {
654 h225_pi->reason = value;
657 #----------------------------------------------------------------------------------------
658 #.FN_BODY BandRejectReason VAL_PTR = &value
660 h225_packet_info* h225_pi;
661 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
664 if (h225_pi != NULL) {
665 h225_pi->reason = value;
668 #----------------------------------------------------------------------------------------
669 #.FN_BODY DisengageReason VAL_PTR = &value
671 h225_packet_info* h225_pi;
672 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
675 if (h225_pi != NULL) {
676 h225_pi->reason = value;
678 #----------------------------------------------------------------------------------------
679 #.FN_BODY DisengageRejectReason VAL_PTR = &value
681 h225_packet_info* h225_pi;
682 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
685 if (h225_pi != NULL) {
686 h225_pi->reason = value;
689 #----------------------------------------------------------------------------------------
690 #.FN_BODY AdmissionRejectReason VAL_PTR = &value
692 h225_packet_info* h225_pi;
693 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
696 if (h225_pi != NULL) {
697 h225_pi->reason = value;
700 #----------------------------------------------------------------------------------------
701 #.FN_BODY LocationRejectReason VAL_PTR = &value
703 h225_packet_info* h225_pi;
704 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
707 if (h225_pi != NULL) {
708 h225_pi->reason = value;
711 #----------------------------------------------------------------------------------------
712 #.FN_BODY RegistrationRejectReason VAL_PTR = &value
714 h225_packet_info* h225_pi;
715 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
718 if (h225_pi != NULL) {
719 h225_pi->reason = value;
722 #----------------------------------------------------------------------------------------
723 #.FN_BODY InfoRequestNakReason VAL_PTR = &value
725 h225_packet_info* h225_pi;
726 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
729 if (h225_pi != NULL) {
730 h225_pi->reason = value;
733 #----------------------------------------------------------------------------------------
734 #.FN_BODY ReleaseCompleteReason VAL_PTR = &value
736 h225_packet_info* h225_pi;
737 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
740 if (h225_pi != NULL) {
741 h225_pi->reason = value;
744 #----------------------------------------------------------------------------------------
745 #.FN_BODY CallIdentifier/guid
746 tvbuff_t *guid_tvb = NULL;
748 actx->value_ptr = &guid_tvb;
751 tvb_get_ntohguid(guid_tvb, 0, call_id_guid = wmem_new(actx->pinfo->pool, e_guid_t));
752 actx->value_ptr = NULL;
754 #----------------------------------------------------------------------------------------
755 #.FN_PARS GloballyUniqueID VAL_PTR = (tvbuff_t **)actx->value_ptr
756 #----------------------------------------------------------------------------------------
757 #.FN_HDR RequestSeqNum
758 h225_packet_info* h225_pi;
759 h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
760 if (h225_pi != NULL) {
762 #----------------------------------------------------------------------------------------
763 #.FN_PARS RequestSeqNum VAL_PTR = &(h225_pi->requestSeqNum)
764 #----------------------------------------------------------------------------------------
765 #.FN_FTR RequestSeqNum
768 #----------------------------------------------------------------------------------------
769 #.FN_BODY H323-UU-PDU/h4501SupplementaryService/_item VAL_PTR = &h4501_tvb
770 tvbuff_t *h4501_tvb = NULL;
773 if (h4501_tvb && tvb_reported_length(h4501_tvb)) {
774 call_dissector(h4501_handle, h4501_tvb, actx->pinfo, tree);
777 #----------------------------------------------------------------------------------------
779 #--- TunnelledProtocol ------------------------------------------------------------------
781 #.FN_HDR TunnelledProtocol
783 #.FN_FTR TunnelledProtocol
784 tp_handle = dissector_get_string_handle(tp_dissector_table, tpOID);
785 #.FN_PARS TunnelledProtocol/id/tunnelledProtocolObjectID
786 FN_VARIANT = _str VAL_PTR = &tpOID
789 #.FN_HDR H323-UU-PDU/tunnelledSignallingMessage
791 #.FN_BODY H323-UU-PDU/tunnelledSignallingMessage/messageContent/_item VAL_PTR = &next_tvb
792 tvbuff_t *next_tvb = NULL;
795 next_tvb_add_handle(tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle);
798 #--- NonStandardParameter ---------------------------------------------------------------
801 NonStandardIdentifier/object FN_VARIANT = _str VAL_PTR = &nsiOID
804 #.FN_BODY NonStandardIdentifier VAL_PTR = &value
812 case 0 : /* object */
813 nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, nsiOID);
815 case 1 : /* h221NonStandard */
816 nsp_handle = dissector_get_uint_handle(nsp_h221_dissector_table, h221NonStandard);
823 #.FN_HDR H221NonStandard
826 manufacturerCode = 0;
827 #.FN_FTR H221NonStandard
828 h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
829 proto_tree_add_uint(tree, hf_h221Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
831 H221NonStandard/t35CountryCode VAL_PTR = &t35CountryCode
832 H221NonStandard/t35Extension VAL_PTR = &t35Extension
833 H221NonStandard/manufacturerCode VAL_PTR = &manufacturerCode
836 #.FN_HDR NonStandardParameter
838 #.FN_BODY NonStandardParameter/data VAL_PTR = &next_tvb
839 tvbuff_t *next_tvb = NULL;
842 if (next_tvb && tvb_reported_length(next_tvb)) {
843 call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, actx->pinfo, tree);
847 #=== Generic Extensible Framework =======================================================
850 void *priv_data = actx->private_data;
853 /* check if not inherited from FeatureDescriptor */
854 gefx = gef_ctx_get(actx->private_data);
856 gefx = gef_ctx_alloc(actx->pinfo->pool, NULL, "GenericData");
857 actx->private_data = gefx;
860 actx->private_data = priv_data;
863 #.FN_HDR EnumeratedParameter
864 gef_ctx_t *parent_gefx;
866 parent_gefx = gef_ctx_get(actx->private_data);
867 actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, NULL);
869 actx->private_data = parent_gefx;
872 #----------------------------------------------------------------------------------------
873 #.FN_HDR FeatureDescriptor
874 void *priv_data = actx->private_data;
875 actx->private_data = gef_ctx_alloc(actx->pinfo->pool, NULL, "FeatureDescriptor");
877 actx->private_data = priv_data;
879 #----------------------------------------------------------------------------------------
881 #.FN_HDR GenericIdentifier
885 gef_ctx_update_key(actx->pinfo->pool, gef_ctx_get(actx->private_data));
886 gefx = gef_ctx_get(actx->private_data);
888 ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
889 proto_item_set_hidden(ti);
890 dissector_try_string_new(gef_name_dissector_table, gefx->key, tvb_new_subset_length_caplen(tvb, offset>>3, 0, 0), actx->pinfo, tree, false, actx);
892 actx->private_data = gefx; /* subdissector could overwrite it */
895 #.FN_BODY GenericIdentifier/standard VAL_PTR = &value_int
896 uint32_t value_int = (uint32_t)-1;
900 gefx = gef_ctx_get(actx->private_data);
901 if (gefx) gefx->id = wmem_strdup_printf(actx->pinfo->pool, "%%u", value_int);
904 #.FN_BODY GenericIdentifier/oid FN_VARIANT = _str VAL_PTR = &oid_str
905 const char *oid_str = NULL;
909 gefx = gef_ctx_get(actx->private_data);
910 if (gefx) gefx->id = oid_str;
913 #----------------------------------------------------------------------------------------
914 #.FN_BODY Content/raw VAL_PTR = &value_tvb
920 gefx = gef_ctx_get(actx->private_data);
922 ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
923 proto_item_set_hidden(ti);
924 dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, %(TREE)s, actx);
928 #=== end of GEF =========================================================================
930 # TBCD-STRING is additionally constrained
931 # parameter stack is used for passing this constraint
934 int min_len, max_len;
937 get_size_constraint_from_stack(actx, "TBCD_STRING", &min_len, &max_len, &has_extension);
938 #.FN_PARS TBCD-STRING
946 H221NonStandard/t35CountryCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(T35CountryCode_vals)
947 TransportAddress/ipAddress/ip TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
948 TransportAddress/ip6Address/ip TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
949 H245TransportAddress/ipAddress/ip TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
950 H245TransportAddress/ip6Address/ip TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
951 VendorIdentifier/productId TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
952 VendorIdentifier/versionId TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
953 H323-UserInformation/user-data/protocol-discriminator TYPE = FT_UINT32 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &q931_protocol_discriminator_vals_ext
954 H323-UU-PDU/tunnelledSignallingMessage/messageContent/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
955 NonStandardParameter/data TYPE = FT_UINT32 DISPLAY = BASE_DEC
956 FastStart/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
957 ParallelH245Control/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
958 H245Control/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
959 GloballyUniqueID TYPE = FT_GUID DISPLAY = BASE_NONE
960 H323-UU-PDU/h4501SupplementaryService/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC