aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/h225/h225.cnf
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/asn1/h225/h225.cnf')
-rw-r--r--epan/dissectors/asn1/h225/h225.cnf764
1 files changed, 764 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h225/h225.cnf b/epan/dissectors/asn1/h225/h225.cnf
new file mode 100644
index 0000000000..7a963e92b1
--- /dev/null
+++ b/epan/dissectors/asn1/h225/h225.cnf
@@ -0,0 +1,764 @@
+# h225.cnf
+# H.225 conformation file
+# Copyright 2004 Anders Broman
+
+#.IMPORT ../h235/h235-exp.cnf
+
+
+
+
+
+
+#.IMPORT ../h245/h245-exp.cnf
+
+#----------------------------------------------------------------------------------------
+#.EXPORTS ONLY_VALS WS_DLL NO_PROT_PREFIX
+H323-UU-PDU/h323-message-body
+FacilityReason
+GatekeeperRejectReason
+UnregRequestReason
+UnregRejectReason
+BandRejectReason
+DisengageReason
+DisengageRejectReason
+InfoRequestNakReason
+AdmissionRejectReason
+LocationRejectReason
+RegistrationRejectReason
+
+#.MODULE_EXPORTS
+RasMessage EXTERN WS_DLL
+NonStandardParameter
+PublicTypeOfNumber
+PrivateTypeOfNumber
+AliasAddress NO_PROT_PREFIX
+PartyNumber
+PresentationIndicator
+ScreeningIndicator
+CallIdentifier
+ConferenceIdentifier
+CircuitIdentifier
+GenericIdentifier
+GenericData
+BandWidth
+TimeToLive
+TransportAddress
+AlternateTransportAddresses
+TransportChannelInfo
+CallReferenceValue
+GloballyUniqueID
+TunnelledProtocol
+IntegrityMechanism
+ICV
+CryptoH323Token
+TransportQOS
+FeatureSet
+CircuitInfo
+EndpointType
+SupportedProtocols
+GatekeeperIdentifier
+ServiceControlSession
+ReleaseCompleteReason EXTERN WS_DLL
+ExtendedAliasAddress_PDU
+#.END
+
+#.PDU
+H323-UserInformation
+RasMessage
+ExtendedAliasAddress
+#.END
+
+#----------------------------------------------------------------------------------------
+
+#.OMIT_ASSIGNMENT
+EncodedFastStartToken
+FastStartToken
+#.END
+
+#.VIRTUAL_ASSGN
+FastStart Setup-UUIE/fastStart
+#.SET_TYPE
+Setup-UUIE/fastStart FastStart
+CallProceeding-UUIE/fastStart FastStart
+Connect-UUIE/fastStart FastStart
+Alerting-UUIE/fastStart FastStart
+Information-UUIE/fastStart FastStart
+Facility-UUIE/fastStart FastStart
+Progress-UUIE/fastStart FastStart
+
+#.VIRTUAL_ASSGN
+H245Control H323-UU-PDU/h245Control
+ParallelH245Control Setup-UUIE/parallelH245Control
+DialedDigits AliasAddress/dialledDigits
+
+#.VIRTUAL_ASSGN
+DestinationInfo AdmissionRequest/destinationInfo
+#.SET_TYPE
+AdmissionRequest/destinationInfo DestinationInfo
+AdmissionConfirm/destinationInfo DestinationInfo
+LocationRequest/destinationInfo DestinationInfo
+LocationConfirm/destinationInfo DestinationInfo
+
+#.VIRTUAL_ASSGN
+H245TransportAddress TransportAddress
+#.SET_TYPE
+Setup-UUIE/h245Address H245TransportAddress
+CallProceeding-UUIE/h245Address H245TransportAddress
+Connect-UUIE/h245Address H245TransportAddress
+Alerting-UUIE/h245Address H245TransportAddress
+Facility-UUIE/h245Address H245TransportAddress
+Progress-UUIE/h245Address H245TransportAddress
+#.FIELD_RENAME
+H245TransportAddress/ipAddress h245IpAddress
+H245TransportAddress/ipAddress/ip h245Ip
+H245TransportAddress/ipAddress/port h245IpPort
+H245TransportAddress/ipSourceRoute h245IpSourceRoute
+H245TransportAddress/ipSourceRoute/route h245Route
+H245TransportAddress/ipSourceRoute/routing h245Routing
+H245TransportAddress/ipxAddress h245IpxAddress
+H245TransportAddress/ipxAddress/port h245IpxPort
+H245TransportAddress/ip6Address h245Ip6Address
+H245TransportAddress/ip6Address/ip h245Ip6
+
+#.VIRTUAL_ASSGN
+Language Setup-UUIE/language
+#.SET_TYPE
+Connect-UUIE/language Language
+Setup-UUIE/language Language
+RegistrationRequest/language Language
+AdmissionConfirm/language Language
+LocationRequest/language Language
+
+#----------------------------------------------------------------------------------------
+#.TYPE_RENAME
+CallCreditServiceControl/callStartingPoint CallCreditServiceControl_callStartingPoint
+TunnelledProtocol/id TunnelledProtocol_id
+ServiceControlSession/reason ServiceControlSession_reason
+RasUsageSpecification/callStartingPoint RasUsageSpecificationcallStartingPoint
+CapacityReportingSpecification/when CapacityReportingSpecification_when
+RasUsageSpecification/when RasUsageSpecification_when
+TransportAddress/ipAddress/ip IpV4
+#----------------------------------------------------------------------------------------
+#.FIELD_RENAME
+RasUsageSpecification/callStartingPoint/alerting alerting_flg
+CallCreditServiceControl/callStartingPoint/alerting alerting_flg
+UseSpecifiedTransport/annexE annexE_flg
+
+UUIEsRequested/callProceeding callProceeding_flg
+
+CicInfo/cic cic_2_4
+UUIEsRequested/connect connect_bool
+NonStandardIdentifier/object nsiOID
+NonStandardParameter/data nsp_data
+H323-UU-PDU/h323-message-body/empty empty_flg
+RasUsageInfoTypes/endTime endTime_flg
+UUIEsRequested/facility facility_bool
+CallsAvailable/group group_IA5String
+GroupID/group group_IA5String
+
+Setup-UUIE/hopCount hopCount_1_31
+UUIEsRequested/information information_bool
+TransportAddress/ip6Address/ip ipV6
+TransportAddress/ipAddress/ip ipV4
+TransportAddress/ipSourceRoute/ip src_route_ipV4
+RTPSession/multicast multicast_flg
+
+UUIEsRequested/notify notify_bool
+TransportAddress/ipxAddress/port ipx_port
+TransportAddress/ipAddress/port ipV4_port
+TransportAddress/ipSourceRoute/port ipV4_src_port
+TransportAddress/ip6Address/port ipV6_port
+UUIEsRequested/progress progress_bool
+
+Facility-UUIE/reason facilityReason
+UnregistrationRequest/reason unregRequestReason
+ReleaseComplete-UUIE/reason releaseCompleteReason
+BandwidthReject/rejectReason bandRejectReason
+UnregistrationReject/rejectReason unregRejectReason
+RegistrationReject/rejectReason registrationRejectReason
+LocationReject/rejectReason locationRejectReason
+DisengageReject/rejectReason disengageRejectReason
+GatekeeperReject/rejectReason gatekeeperRejectReason
+
+UUIEsRequested/releaseComplete releaseComplete_bool
+UseSpecifiedTransport/sctp sctp_flg
+ServiceControlSession/sessionId sessionId_0_255
+UUIEsRequested/setup setup_bool
+UUIEsRequested/setupAcknowledge setupAcknowledge_bool
+Setup-UUIE/sourceInfo setup-UUIE_sourceInfo
+
+UUIEsRequested/status status_bool
+UUIEsRequested/statusInquiry statusInquiry_bool
+RasUsageInfoTypes/terminationCause terminationCause_flg
+CapacityReportingSpecification/when capacityReportingSpecification_when
+UUIEsRequested/alerting alerting_bool
+
+LocationConfirm/callSignalAddress locationConfirm_callSignalAddress
+
+RasUsageSpecification/callStartingPoint/connect connect_flg
+CallCreditServiceControl/callStartingPoint/connect connect_flg
+
+Alerting-UUIE/destinationInfo uUIE_destinationInfo
+CallProceeding-UUIE/destinationInfo uUIE_destinationInfo
+Connect-UUIE/destinationInfo uUIE_destinationInfo
+Facility-UUIE/destinationInfo uUIE_destinationInfo
+Progress-UUIE/destinationInfo uUIE_destinationInfo
+
+TunnelledProtocol/id tunnelledProtocol_id
+SecurityCapabilities/integrity securityCapabilities_integrity
+
+GenericIdentifier/nonStandard genericIdentifier_nonStandard
+AlternateGK/rasAddress alternateGK_rasAddress
+GatekeeperRequest/rasAddress gatekeeperRequest_rasAddress
+GatekeeperConfirm/rasAddress gatekeeperConfirm_rasAddress
+LocationConfirm/rasAddress locationConfirm_rasAddress
+InfoRequestResponse/rasAddress infoRequestResponse_rasAddress
+
+
+Setup-UUIE/remoteExtensionAddress uUIE_remoteExtensionAddress
+Facility-UUIE/remoteExtensionAddress uUIE_remoteExtensionAddress
+
+VendorIdentifier/vendor vendorIdentifier_vendor
+
+RasUsageSpecification/callStartingPoint ras_callStartingPoint
+
+ReleaseCompleteReason/securityError rLC_securityError
+GatekeeperRejectReason/securityError gkRej_securityError
+RegistrationRejectReason/securityError reg_securityError
+
+CallIdentifier/guid guid
+
+ExtendedAliasAddress/address extAliasAddress
+
+IsupNumber/e164Number isupE164Number
+IsupNumber/dataPartyNumber isupDataPartyNumber
+IsupNumber/telexPartyNumber isupTelexPartyNumber
+IsupNumber/privateNumber isupPrivateNumber
+IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber
+
+#----------------------------------------------------------------------------------------
+#.FN_BODY H323-UU-PDU/h323-message-body VAL_PTR = &message_body_val
+ gint32 message_body_val;
+
+ contains_faststart = FALSE;
+ call_id_guid = NULL;
+%(DEFAULT_BODY)s
+ col_append_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, "CS: %%s ",
+ val_to_str(message_body_val, T_h323_message_body_vals, "<unknown>"));
+
+ if (h225_pi->msg_type == H225_CS) {
+ /* Don't override msg_tag value from IRR */
+ h225_pi->msg_tag = message_body_val;
+ }
+
+ if (call_id_guid) {
+ h225_pi->guid = *call_id_guid;
+ }
+
+ if (contains_faststart == TRUE )
+ {
+ col_append_str(%(ACTX)s->pinfo->cinfo, COL_INFO, "OpenLogicalChannel " );
+ }
+
+ col_set_fence(%(ACTX)s->pinfo->cinfo,COL_INFO);
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY FastStart/_item VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb = NULL;
+ char codec_str[50];
+ codec_str[0] = '\0';
+
+%(DEFAULT_BODY)s
+ if (value_tvb && tvb_reported_length(value_tvb)) {
+ dissect_h245_FastStart_OLC(value_tvb, %(ACTX)s->pinfo, tree, codec_str);
+ }
+
+ /* Add to packet info */
+ g_snprintf(h225_pi->frame_label, 50, "%%s %%s", h225_pi->frame_label, codec_str);
+
+ contains_faststart = TRUE;
+ h225_pi->is_faststart = TRUE;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY RasMessage VAL_PTR = &rasmessage_value
+ gint32 rasmessage_value;
+
+ call_id_guid = NULL;
+%(DEFAULT_BODY)s
+ col_add_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, "RAS: %%s ",
+ val_to_str(rasmessage_value, h225_RasMessage_vals, "<unknown>"));
+
+ h225_pi->msg_tag = rasmessage_value;
+ if (call_id_guid) {
+ h225_pi->guid = *call_id_guid;
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR DestinationInfo/_item
+
+ h225_pi->is_destinationInfo = TRUE;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY DialedDigits VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb = NULL;
+ guint len = 0;
+
+%(DEFAULT_BODY)s
+ if (h225_pi && h225_pi->is_destinationInfo == TRUE) {
+ if (value_tvb) {
+ len = tvb_reported_length(value_tvb);
+ /* XXX - should this be allocated as an ephemeral string? */
+ if (len > sizeof h225_pi->dialedDigits - 1)
+ len = sizeof h225_pi->dialedDigits - 1;
+ tvb_memcpy(value_tvb, (guint8*)h225_pi->dialedDigits, 0, len);
+ }
+ h225_pi->dialedDigits[len] = '\0';
+ h225_pi->is_destinationInfo = FALSE;
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY H245TransportAddress/ipAddress/ip VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+
+ ipv4_address = 0;
+%(DEFAULT_BODY)s
+ if (value_tvb)
+ ipv4_address = tvb_get_ipv4(value_tvb, 0);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY H245TransportAddress/ip6Address/ip VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+
+ ipv6_address = ipv6_address_zeros;
+%(DEFAULT_BODY)s
+ if (value_tvb)
+ tvb_get_ipv6(value_tvb, 0, &ipv6_address);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS H245TransportAddress/ipAddress/port VAL_PTR = &ip_port
+#----------------------------------------------------------------------------------------
+#.FN_PARS H245TransportAddress/ip6Address/port VAL_PTR = &ip_port
+#----------------------------------------------------------------------------------------
+#.FN_BODY ParallelH245Control/_item VAL_PTR = &h245_tvb
+ tvbuff_t *h245_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY H245Control/_item VAL_PTR = &h245_tvb
+ tvbuff_t *h245_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR H323-UU-PDU/h323-message-body/empty
+ h225_pi->cs_type = H225_EMPTY;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Status-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_STATUS;
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Information-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_INFORMATION;
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Progress-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_PROGRESS;
+ if (contains_faststart == TRUE )
+ g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ else
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR SetupAcknowledge-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_SETUP_ACK;
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Facility-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_FACILITY;
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS H323-UU-PDU/h245Tunnelling VAL_PTR = &(h225_pi->is_h245Tunneling)
+#----------------------------------------------------------------------------------------
+#.FN_HDR Setup-UUIE
+ contains_faststart = FALSE;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Setup-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_SETUP;
+ if (contains_faststart == TRUE )
+ g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ else
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR CallProceeding-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_CALL_PROCEDING;
+ if (contains_faststart == TRUE )
+ g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ else
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Alerting-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_ALERTING;
+ if (contains_faststart == TRUE )
+ g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ else
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR ReleaseComplete-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_RELEASE_COMPLET;
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR Connect-UUIE
+ /* Add to packet info */
+ h225_pi->cs_type = H225_CONNECT;
+ if (contains_faststart == TRUE )
+ g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ else
+ g_snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H245TransportAddress
+ ipv4_address=0;
+ ipv6_address = ipv6_address_zeros;
+ ip_port=0;
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR H245TransportAddress
+ /* we need this info for TAPing */
+ h225_pi->is_h245 = TRUE;
+ h225_pi->h245_address = ipv4_address;
+ h225_pi->h245_port = ip_port;
+
+ if ( !actx->pinfo->fd->flags.visited && h245_handle && ip_port!=0 ) {
+ address src_addr;
+ conversation_t *conv=NULL;
+
+ if (ipv4_address!=0) {
+ set_address(&src_addr, AT_IPv4, 4, &ipv4_address);
+ } else if (memcmp(ipv6_address.bytes, ipv6_address_zeros.bytes, sizeof(ipv6_address.bytes))!=0) {
+ set_address(&src_addr, AT_IPv6, 16, ipv6_address.bytes);
+ } else {
+ return offset;
+ }
+
+ conv=find_conversation(actx->pinfo->num, &src_addr, &src_addr, PT_TCP, ip_port, ip_port, NO_ADDR_B|NO_PORT_B);
+ if(!conv){
+ conv=conversation_new(actx->pinfo->num, &src_addr, &src_addr, PT_TCP, ip_port, ip_port, NO_ADDR2|NO_PORT2);
+ conversation_set_dissector(conv, h245_handle);
+ }
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY FacilityReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY GatekeeperRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnregRequestReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnregRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY BandRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY DisengageReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#----------------------------------------------------------------------------------------
+#.FN_BODY DisengageRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY AdmissionRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY LocationRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY RegistrationRejectReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY InfoRequestNakReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY ReleaseCompleteReason VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ h225_pi->reason = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY CallIdentifier/guid
+ tvbuff_t *guid_tvb = NULL;
+
+ %(ACTX)s->value_ptr = &guid_tvb;
+%(DEFAULT_BODY)s
+ if (guid_tvb)
+ tvb_get_ntohguid(guid_tvb, 0, call_id_guid = wmem_new(wmem_packet_scope(), e_guid_t));
+ %(ACTX)s->value_ptr = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS GloballyUniqueID VAL_PTR = (tvbuff_t **)%(ACTX)s->value_ptr
+#----------------------------------------------------------------------------------------
+#.FN_PARS RequestSeqNum VAL_PTR = &(h225_pi->requestSeqNum)
+#----------------------------------------------------------------------------------------
+#.FN_BODY H323-UU-PDU/h4501SupplementaryService/_item VAL_PTR = &h4501_tvb
+ tvbuff_t *h4501_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ if (h4501_tvb && tvb_reported_length(h4501_tvb)) {
+ call_dissector(h4501_handle, h4501_tvb, %(ACTX)s->pinfo, tree);
+ }
+#.END
+#----------------------------------------------------------------------------------------
+
+#--- TunnelledProtocol ------------------------------------------------------------------
+
+#.FN_HDR TunnelledProtocol
+ tpOID = "";
+#.FN_FTR TunnelledProtocol
+ tp_handle = dissector_get_string_handle(tp_dissector_table, tpOID);
+#.FN_PARS TunnelledProtocol/id/tunnelledProtocolObjectID
+ FN_VARIANT = _str VAL_PTR = &tpOID
+#.END
+
+#.FN_HDR H323-UU-PDU/tunnelledSignallingMessage
+ tp_handle = NULL;
+#.FN_BODY H323-UU-PDU/tunnelledSignallingMessage/messageContent/_item VAL_PTR = &next_tvb
+ tvbuff_t *next_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ next_tvb_add_handle(&tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle);
+#.END
+
+#--- NonStandardParameter ---------------------------------------------------------------
+
+#.FN_PARS
+NonStandardIdentifier/object FN_VARIANT = _str VAL_PTR = &nsiOID
+#.END
+
+#.FN_BODY NonStandardIdentifier VAL_PTR = &value
+ gint32 value;
+
+ nsiOID = "";
+ h221NonStandard = 0;
+
+%(DEFAULT_BODY)s
+ switch (value) {
+ case 0 : /* object */
+ nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, nsiOID);
+ break;
+ case 1 : /* h221NonStandard */
+ nsp_handle = dissector_get_uint_handle(nsp_h221_dissector_table, h221NonStandard);
+ break;
+ default :
+ nsp_handle = NULL;
+ }
+#.END
+
+#.FN_HDR H221NonStandard
+ t35CountryCode = 0;
+ t35Extension = 0;
+ manufacturerCode = 0;
+#.FN_FTR H221NonStandard
+ h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
+ proto_tree_add_uint(tree, hf_h221Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
+#.FN_PARS
+H221NonStandard/t35CountryCode VAL_PTR = &t35CountryCode
+H221NonStandard/t35Extension VAL_PTR = &t35Extension
+H221NonStandard/manufacturerCode VAL_PTR = &manufacturerCode
+#.END
+
+#.FN_HDR NonStandardParameter
+ nsp_handle = NULL;
+#.FN_BODY NonStandardParameter/data VAL_PTR = &next_tvb
+ tvbuff_t *next_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ if (next_tvb && tvb_reported_length(next_tvb)) {
+ call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, %(ACTX)s->pinfo, tree);
+ }
+#.END
+
+#=== Generic Extensible Framework =======================================================
+
+#.FN_HDR GenericData
+ void *priv_data = actx->private_data;
+ gef_ctx_t *gefx;
+
+ /* check if not inherited from FeatureDescriptor */
+ gefx = gef_ctx_get(actx->private_data);
+ if (!gefx) {
+ gefx = gef_ctx_alloc(NULL, "GenericData");
+ actx->private_data = gefx;
+ }
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#.FN_HDR EnumeratedParameter
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(parent_gefx, NULL);
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#----------------------------------------------------------------------------------------
+#.FN_HDR FeatureDescriptor
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(NULL, "FeatureDescriptor");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+#----------------------------------------------------------------------------------------
+
+#.FN_HDR GenericIdentifier
+ gef_ctx_t *gefx;
+ proto_item* ti;
+#.FN_FTR
+ gef_ctx_update_key(gef_ctx_get(actx->private_data));
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
+ }
+ actx->private_data = gefx; /* subdissector could overwrite it */
+#.END
+
+#.FN_BODY GenericIdentifier/standard VAL_PTR = &value_int
+ guint32 value_int = (guint32)-1;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = wmem_strdup_printf(wmem_packet_scope(), "%%u", value_int);
+#.END
+
+#.FN_BODY GenericIdentifier/oid FN_VARIANT = _str VAL_PTR = &oid_str
+ const gchar *oid_str = NULL;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = oid_str;
+#.END
+
+#----------------------------------------------------------------------------------------
+#.FN_BODY Content/raw VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ PROTO_ITEM_SET_HIDDEN(ti);
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+
+#=== end of GEF =========================================================================
+
+# TBCD-STRING is additionally constrained
+# parameter stack is used for passing this constraint
+
+#.FN_HDR TBCD-STRING
+ int min_len, max_len;
+ gboolean has_extension;
+
+ get_size_constraint_from_stack(actx, "TBCD_STRING", &min_len, &max_len, &has_extension);
+#.FN_PARS TBCD-STRING
+MIN_VAL = min_len
+MAX_VAL = max_len
+EXT = has_extension
+#.END
+
+
+#.TYPE_ATTR
+H221NonStandard/t35CountryCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(T35CountryCode_vals)
+TransportAddress/ipAddress/ip TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
+TransportAddress/ip6Address/ip TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
+H245TransportAddress/ipAddress/ip TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
+H245TransportAddress/ip6Address/ip TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
+VendorIdentifier/productId TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
+VendorIdentifier/versionId TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
+H323-UserInformation/user-data/protocol-discriminator TYPE = FT_UINT32 DISPLAY = BASE_DEC|BASE_EXT_STRING STRINGS = &q931_protocol_discriminator_vals_ext
+H323-UU-PDU/tunnelledSignallingMessage/messageContent/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
+NonStandardParameter/data TYPE = FT_UINT32 DISPLAY = BASE_DEC
+FastStart/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
+ParallelH245Control/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
+H245Control/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
+GloballyUniqueID TYPE = FT_GUID DISPLAY = BASE_NONE
+H323-UU-PDU/h4501SupplementaryService/_item TYPE = FT_UINT32 DISPLAY = BASE_DEC
+#.END