# 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 H245TransportAddress/ip6Address/port h245Ip6port DisplayName/language displayName_language Endpoint/remoteExtensionAddress/_item ep_remoteExtensionAddress_item AdmissionConfirm/remoteExtensionAddress/_item ac_remoteExtensionAddress_item #.FIELD_ATTR H245TransportAddress/ipAddress/ip ABBREV=h245Ip H245TransportAddress/ipAddress/port ABBREV=h245IpPort H245TransportAddress/ip6Address/ip ABBREV=h245Ip6 H245TransportAddress/ip6Address/port ABBREV=h245Ip6port H245TransportAddress/ipxAddress/port ABBREV=h245IpxPort TransportAddress/ipSourceRoute/ip ABBREV=src_route_ipV4 TransportAddress/ipSourceRoute/port ABBREV=ipV4_src_port TransportAddress/ipAddress/ip ABBREV=ipV4 TransportAddress/ipAddress/port ABBREV=ipV4_port TransportAddress/ip6Address/ip ABBREV=ipV6 TransportAddress/ip6Address/port ABBREV=ipV6_port TransportAddress/ipxAddress/port ABBREV=ipx_port DisplayName/language ABBREV=displayName_language ExtendedAliasAddress/address ABBREV=extAliasAddress Endpoint/remoteExtensionAddress/_item ABBREV=remoteExtensionAddress.item AdmissionConfirm/remoteExtensionAddress/_item ABBREV=ac_remoteExtensionAddress_item #.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 int32_t message_body_val; h225_packet_info* h225_pi; contains_faststart = false; call_id_guid = NULL; %(DEFAULT_BODY)s col_append_fstr(actx->pinfo->cinfo, COL_INFO, "CS: %%s ", val_to_str_const(message_body_val, T_h323_message_body_vals, "")); h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { 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->pinfo->cinfo, COL_INFO, "OpenLogicalChannel " ); } col_set_fence(actx->pinfo->cinfo,COL_INFO); #.END #---------------------------------------------------------------------------------------- #.FN_BODY FastStart/_item VAL_PTR = &value_tvb tvbuff_t *value_tvb = NULL; char codec_str[50]; h225_packet_info* h225_pi; codec_str[0] = '\0'; %(DEFAULT_BODY)s if (value_tvb && tvb_reported_length(value_tvb)) { dissect_h245_FastStart_OLC(value_tvb, actx->pinfo, tree, codec_str); } /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { char temp[50]; snprintf(temp, 50, "%%s %%s", h225_pi->frame_label, codec_str); (void) g_strlcpy(h225_pi->frame_label, temp, 50); h225_pi->is_faststart = true; } contains_faststart = true; #.END #---------------------------------------------------------------------------------------- #.FN_BODY RasMessage VAL_PTR = &rasmessage_value int32_t rasmessage_value; h225_packet_info* h225_pi; call_id_guid = NULL; %(DEFAULT_BODY)s col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RAS: %%s ", val_to_str_const(rasmessage_value, h225_RasMessage_vals, "")); h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->msg_tag = rasmessage_value; if (call_id_guid) { h225_pi->guid = *call_id_guid; } } #.END #---------------------------------------------------------------------------------------- #.FN_HDR DestinationInfo/_item h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->is_destinationInfo = true; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY DialedDigits VAL_PTR = &value_tvb tvbuff_t *value_tvb = NULL; unsigned len = 0; h225_packet_info* h225_pi; %(DEFAULT_BODY)s h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); 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, (uint8_t*)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_HDR H323-UU-PDU/h323-message-body/empty h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR H323-UU-PDU/h323-message-body/empty h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_EMPTY; } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Status-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Status-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_STATUS; snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Information-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Information-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_INFORMATION; snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Progress-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Progress-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_PROGRESS; if (contains_faststart) { char temp[50]; snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, ""), h225_pi->frame_label); (void) g_strlcpy(h225_pi->frame_label, temp, 50); } else snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR SetupAcknowledge-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR SetupAcknowledge-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_SETUP_ACK; snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Facility-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Facility-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_FACILITY; snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR H323-UU-PDU/h245Tunnelling h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { #.END #---------------------------------------------------------------------------------------- #.FN_PARS H323-UU-PDU/h245Tunnelling VAL_PTR = &(h225_pi->is_h245Tunneling) #---------------------------------------------------------------------------------------- #.FN_FTR H323-UU-PDU/h245Tunnelling } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Setup-UUIE h225_packet_info* h225_pi; contains_faststart = false; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Setup-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_SETUP; if (contains_faststart) { char temp[50]; snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, ""), h225_pi->frame_label); (void) g_strlcpy(h225_pi->frame_label, temp, 50); } else snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR CallProceeding-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR CallProceeding-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_CALL_PROCEDING; if (contains_faststart) { char temp[50]; snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, ""), h225_pi->frame_label); (void) g_strlcpy(h225_pi->frame_label, temp, 50); } else snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Alerting-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Alerting-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_ALERTING; if (contains_faststart) { char temp[50]; snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, ""), h225_pi->frame_label); (void) g_strlcpy(h225_pi->frame_label, temp, 50); } else snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR ReleaseComplete-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR ReleaseComplete-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_RELEASE_COMPLET; snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR Connect-UUIE h225_packet_info* h225_pi; #.END #---------------------------------------------------------------------------------------- #.FN_FTR Connect-UUIE /* Add to packet info */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { h225_pi->cs_type = H225_CONNECT; if (contains_faststart) { char temp[50]; snprintf(temp, 50, "%s OLC (%s)", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, ""), h225_pi->frame_label); (void) g_strlcpy(h225_pi->frame_label, temp, 50); } else snprintf(h225_pi->frame_label, 50, "%s", val_to_str_const(h225_pi->cs_type, T_h323_message_body_vals, "")); } #.END #---------------------------------------------------------------------------------------- #.FN_HDR H245TransportAddress h225_packet_info* h225_pi; ipv4_address=0; ipv6_address = ipv6_address_zeros; ip_port=0; #.END #---------------------------------------------------------------------------------------- #.FN_FTR H245TransportAddress /* we need this info for TAPing */ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi) { h225_pi->is_h245 = true; h225_pi->h245_address = ipv4_address; h225_pi->h245_port = ip_port; } if ( !actx->pinfo->fd->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, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR_B|NO_PORT_B); if(!conv){ conv=conversation_new(actx->pinfo->num, &src_addr, &src_addr, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR2|NO_PORT2); conversation_set_dissector(conv, h245_handle); } } #.END #---------------------------------------------------------------------------------------- #.FN_BODY FacilityReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY GatekeeperRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY UnregRequestReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY UnregRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY BandRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY DisengageReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #---------------------------------------------------------------------------------------- #.FN_BODY DisengageRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY AdmissionRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY LocationRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY RegistrationRejectReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY InfoRequestNakReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY ReleaseCompleteReason VAL_PTR = &value int32_t value; h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); %(DEFAULT_BODY)s if (h225_pi != NULL) { h225_pi->reason = value; } #.END #---------------------------------------------------------------------------------------- #.FN_BODY CallIdentifier/guid tvbuff_t *guid_tvb = NULL; actx->value_ptr = &guid_tvb; %(DEFAULT_BODY)s if (guid_tvb) tvb_get_ntohguid(guid_tvb, 0, call_id_guid = wmem_new(actx->pinfo->pool, e_guid_t)); actx->value_ptr = NULL; #.END #---------------------------------------------------------------------------------------- #.FN_PARS GloballyUniqueID VAL_PTR = (tvbuff_t **)actx->value_ptr #---------------------------------------------------------------------------------------- #.FN_HDR RequestSeqNum h225_packet_info* h225_pi; h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0); if (h225_pi != NULL) { #.END #---------------------------------------------------------------------------------------- #.FN_PARS RequestSeqNum VAL_PTR = &(h225_pi->requestSeqNum) #---------------------------------------------------------------------------------------- #.FN_FTR RequestSeqNum } #.END #---------------------------------------------------------------------------------------- #.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->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 int32_t 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->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(actx->pinfo->pool, 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(actx->pinfo->pool, 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(actx->pinfo->pool, 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(actx->pinfo->pool, 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_new(gef_name_dissector_table, gefx->key, tvb_new_subset_length_caplen(tvb, offset>>3, 0, 0), actx->pinfo, tree, false, actx); } actx->private_data = gefx; /* subdissector could overwrite it */ #.END #.FN_BODY GenericIdentifier/standard VAL_PTR = &value_int uint32_t value_int = (uint32_t)-1; gef_ctx_t *gefx; %(DEFAULT_BODY)s gefx = gef_ctx_get(actx->private_data); if (gefx) gefx->id = wmem_strdup_printf(actx->pinfo->pool, "%%u", value_int); #.END #.FN_BODY GenericIdentifier/oid FN_VARIANT = _str VAL_PTR = &oid_str const char *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->pinfo, %(TREE)s, actx); } #.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; bool 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