# h225.cnf # H.225 conformation file # Copyright 2004 Anders Broman # $Id$ #.INCLUDE ../h235/h235-exp.cnf #.INCLUDE ../h245/h245-exp.cnf #---------------------------------------------------------------------------------------- #.EXPORTS #---------------------------------------------------------------------------------------- NonStandardParameter RasMessage WITH_VALS ETH_VAR NO_PROT_PREFIX H323-UU-PDU/h323-message-body ONLY_VALS ETH_VAR NO_PROT_PREFIX FacilityReason ONLY_VALS ETH_VAR NO_PROT_PREFIX GatekeeperRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX UnregRequestReason ONLY_VALS ETH_VAR NO_PROT_PREFIX UnregRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX BandRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX DisengageReason ONLY_VALS ETH_VAR NO_PROT_PREFIX DisengageRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX InfoRequestNakReason ONLY_VALS ETH_VAR NO_PROT_PREFIX ReleaseCompleteReason ONLY_VALS ETH_VAR NO_PROT_PREFIX AdmissionRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX LocationRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX RegistrationRejectReason ONLY_VALS ETH_VAR NO_PROT_PREFIX AliasAddress NO_PROT_PREFIX PartyNumber PresentationIndicator ScreeningIndicator CallIdentifier GenericData #---------------------------------------------------------------------------------------- #.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 Connect-UUIE/language Language Setup-UUIE/language Language AdmissionConfirm/language Language #---------------------------------------------------------------------------------------- #.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 #---------------------------------------------------------------------------------------- #.FN_BODY H323-UU-PDU/h323-message-body VAL_PTR = &message_body_val guint32 message_body_val; contains_faststart = FALSE; %(DEFAULT_BODY)s if (check_col(%(ACTX)s->pinfo->cinfo, COL_INFO)){ col_append_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, "CS: %%s ", val_to_str(message_body_val, T_h323_message_body_vals, "")); } if (h225_pi->msg_type == H225_CS) { /* Don't override msg_tag value from IRR */ h225_pi->msg_tag = message_body_val; } if (contains_faststart == TRUE ) { if (check_col(%(ACTX)s->pinfo->cinfo, COL_INFO)) { 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]; %(DEFAULT_BODY)s if (value_tvb && tvb_length(value_tvb)) { dissect_h245_OpenLogicalChannelCodec(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 guint32 rasmessage_value; %(DEFAULT_BODY)s if (check_col(%(ACTX)s->pinfo->cinfo, COL_INFO)){ col_add_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, "RAS: %%s ", val_to_str(rasmessage_value, RasMessage_vals, "")); } h225_pi->msg_tag = rasmessage_value; #.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->is_destinationInfo == TRUE) { if (value_tvb) { len = tvb_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/h245ipAddress/h245ipv4 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_PARS H245TransportAddress/h245ipAddress/h245ipv4port VAL_PTR = &ipv4_port #---------------------------------------------------------------------------------------- #.FN_BODY ParallelH245Control/_item VAL_PTR = &h245_tvb tvbuff_t *h245_tvb = NULL; %(DEFAULT_BODY)s next_tvb_add(&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(&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, "")); #.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, "")); #.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, ""), 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, "")); #.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, "")); #.END #---------------------------------------------------------------------------------------- #.FN_PARS H323-UU-PDU/h245Tunneling 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, ""), 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, "")); #.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, ""), 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, "")); #.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, ""), 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, "")); #.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, "")); #.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, ""), 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, "")); #.END #---------------------------------------------------------------------------------------- #.FN_HDR H245TransportAddress ipv4_address=0; ipv4_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 = ipv4_port; if((!actx->pinfo->fd->flags.visited) && ipv4_address!=0 && ipv4_port!=0 && h245_handle){ address src_addr; conversation_t *conv=NULL; src_addr.type=AT_IPv4; src_addr.len=4; src_addr.data=(const guint8 *)&ipv4_address; conv=find_conversation(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR_B|NO_PORT_B); if(!conv){ conv=conversation_new(actx->pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR2|NO_PORT2); conversation_set_dissector(conv, h245_handle); } } #.END #---------------------------------------------------------------------------------------- #.FN_PARS FacilityReason VAL_PTR = &value GatekeeperRejectReason VAL_PTR = &value UnregRequestReason VAL_PTR = &value UnregRejectReason VAL_PTR = &value BandRejectReason VAL_PTR = &value DisengageReason VAL_PTR = &value DisengageRejectReason VAL_PTR = &value AdmissionRejectReason VAL_PTR = &value LocationRejectReason VAL_PTR = &value RegistrationRejectReason VAL_PTR = &value InfoRequestNakReason VAL_PTR = &value ReleaseCompleteReason VAL_PTR = &value #.END #.FN_BODY FacilityReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY GatekeeperRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY UnregRequestReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY UnregRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY BandRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY DisengageReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #---------------------------------------------------------------------------------------- #.FN_BODY DisengageRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY AdmissionRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY LocationRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY RegistrationRejectReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY InfoRequestNakReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY ReleaseCompleteReason guint32 value; %(DEFAULT_BODY)s h225_pi->reason = value; #.END #---------------------------------------------------------------------------------------- #.FN_BODY CallIdentifier/guid tvbuff_t *guid_tvb; offset = dissect_per_octet_string(tvb,offset,%(ACTX)s,tree,hf_index,GUID_LEN,GUID_LEN,&guid_tvb); tvb_memcpy(guid_tvb,(guint8 *)&h225_pi->guid,0,GUID_LEN); #.END #---------------------------------------------------------------------------------------- #.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_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(&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 guint32 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_port_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_length(next_tvb)) { call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, %(ACTX)s->pinfo, tree); } #.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/h245ipAddress/h245ipv4 TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL H245TransportAddress/h245ip6Address/h245ipv6 TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL VendorIdentifier/productId TYPE = FT_STRING DISPLAY = BASE_HEX STRINGS = NULL VendorIdentifier/versionId TYPE = FT_STRING DISPLAY = BASE_HEX STRINGS = NULL H323-UserInformation/user-data/protocol-discriminator TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(q931_protocol_discriminator_vals) 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 #.END