Add dissection of HI3CCLinkData

Change-Id: I002c31972c4bcc231527eeaa2c6b21c3b1a9636a
Reviewed-on: https://code.wireshark.org/review/30920
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Anders Broman 2018-12-05 13:41:11 +01:00 committed by Anders Broman
parent 59e71df81c
commit bd8cfad8b8
9 changed files with 456 additions and 13 deletions

View File

@ -95,6 +95,7 @@ GCSNA General Circuit Services Notification Application Protocol
GLOW Lawo Emberplus Data format
GSM-R protocol (User-to-User Information Element usage)
GSUP (Osmocom Generic Subscriber Update Protocol)
HI3CCLinkData
Local Number Portability Database Query Protocol(ANSI)
MsgPack protocol
NGAP (5G) protocol

View File

@ -375,6 +375,7 @@ set(DISSECTOR_PUBLIC_HEADERS
packet-h265.h
packet-h323.h
packet-h450-ros.h
packet-HI2Operations.h
packet-hpext.h
packet-http.h
packet-http2.h

View File

@ -11,6 +11,7 @@ set( PROTOCOL_NAME HI2Operations )
set( ASN_FILE_LIST
HI2Operations_ver11.asn
HI3CCLinkData.asn
UmtsHI2Operations.asn
TS101909201.asn
PCESP.asn
@ -20,6 +21,7 @@ set( ASN_FILE_LIST
set( EXTRA_DIST
${ASN_FILE_LIST}
packet-${PROTOCOL_NAME}-template.c
packet-${PROTOCOL_NAME}-template.h
${PROTOCOL_NAME}.cnf
)
@ -30,7 +32,4 @@ set( SRC_FILES
set( A2W_FLAGS -b )
set( EXTRA_CNF
)
ASN2WRS()

View File

@ -6,14 +6,17 @@ UmtsHI2Operations UmtsHI2
PCESP PCESP
TS101909201 TS101909201
EN301040 EN301040
HI3CCLinkData hi3cclinkdata
#.MODULE_IMPORT
#.EXPORTS
UUS1-Content_PDU
#.REGISTER
#.PDU
IRIsContent
UUS1-Content
#.NO_EMIT
@ -28,6 +31,69 @@ LIMODIFYconf
LISTATUSind
StatusType
#.FN_HDR UUS1-Content
/* Heuristic test to see if it's our content */
gint8 tmp_class;
gboolean tmp_pc;
gint32 tmp_tag;
int tmp_offset;
guint length = tvb_captured_length(tvb);
guint32 tmp_length;
gboolean tmp_ind;
/* Check for min length */
if (length < 6){
return 0;
}
/* We start with UUS1-Content ::= SEQUENCE */
tmp_offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
if(tmp_class != BER_CLASS_UNI){
return 0;
}
if(tmp_pc != 1){
return 0;
}
if(tmp_tag != BER_UNI_TAG_SEQUENCE){
return 0;
}
/* Get length just to move offset forward */
tmp_offset = get_ber_length(tvb, tmp_offset, &tmp_length, &tmp_ind);
/* Next 2 mandatorry elements
* lawfullInterceptionIdentifier [1] LawfulInterceptionIdentifier,
* communicationIdentifier [2] CommunicationIdentifier,
*/
tmp_offset = get_ber_identifier(tvb, tmp_offset, &tmp_class, &tmp_pc, &tmp_tag);
if(tmp_class != BER_CLASS_CON){
return 0;
}
if(tmp_pc != 0){
return 0;
}
if(tmp_tag != 1){
return 0;
}
#.FN_BODY Network-Element-Identifier/e164-Format VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb=NULL;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_calling_party_number_parameter(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY UUS1-Content/bearer-capability VAL_PTR =&parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), tree);
#.TYPE_RENAME
#.FIELD_RENAME

View File

@ -0,0 +1,68 @@
HI3CCLinkData
{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) hi3(2) cclinkLI(4) version4(4)}
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
IMPORTS
-- from clause D.5
LawfulInterceptionIdentifier,
CommunicationIdentifier,
CC-Link-Identifier
FROM HI2Operations
{itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2) hi2(1) version8(8)};
-- =============================
-- Object Identifier Definitions
-- =============================
-- LawfulIntercept DomainId
-- WS Allready in HI2... lawfulInterceptDomainId OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) lawfulIntercept(2)}
-- hi3 Domain
hi3CCLinkId OBJECT IDENTIFIER ::= {lawfulInterceptDomainId hi3(2) ccLinkLI(4)}
hi3CCLinkIdOperationId OBJECT IDENTIFIER ::= {hi3CCLinkId version4(4)}
UUS1-Content ::= SEQUENCE
{
domainID [0] OBJECT IDENTIFIER (hi3CCLinkIdOperationId) OPTIONAL,
-- Once using FTP delivery mechanism
lawfullInterceptionIdentifier [1] LawfulInterceptionIdentifier,
communicationIdentifier [2] CommunicationIdentifier,
cC-Link-Identifier [3] CC-Link-Identifier OPTIONAL,
direction-Indication [4] Direction-Indication,
bearer-capability [5] OCTET STRING (SIZE(1..12)) OPTIONAL,
-- transport the Bearer capability information element (value part)
-- Protocol: EN 300 403-1 [6]
service-Information [7] Service-Information OPTIONAL,
...
}
-- ==================
-- PARAMETERS FORMATS
-- ==================
Direction-Indication ::= ENUMERATED
{
mono-mode(0),
cc-from-target(1),
cc-from-other-party(2),
...,
direction-unknown(3)
}
Service-Information ::= SET
{
high-layer-capability [0] OCTET STRING (SIZE(1)) OPTIONAL,
-- HLC (octet 4 only)
-- Protocol: EN 300 403-1 [6]
tMR [1] OCTET STRING (SIZE(1)) OPTIONAL,
-- Transmission Medium Requirement
-- Protocol: ISUP EN 300 356 [5]
bearerServiceCode [2] OCTET STRING (SIZE(1)) OPTIONAL,
teleServiceCode [3] OCTET STRING (SIZE(1)) OPTIONAL
-- from MAP, TS GSM 09.02 [32], clause 14.7.9 and clause 14.7.10
}
END -- end of HI3CCLinkData

View File

@ -17,6 +17,9 @@
#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-isup.h"
#include "packet-q931.h"
#include "packet-HI2Operations.h"
#define PNAME "HI2Operations"
#define PSNAME "HI2OPERATIONS"
@ -56,10 +59,16 @@ void proto_register_HI2Operations(void) {
proto_register_subtree_array(ett, array_length(ett));
register_dissector("HI2Operations", dissect_IRIsContent_PDU, proto_HI2Operations);
}
/*--- proto_reg_handoff_HI2Operations -------------------------------------------*/
void proto_reg_handoff_HI2Operations(void) {
heur_dissector_add("q931_user", dissect_HI2Operations_UUS1_Content_PDU, "HI3CCLinkData", "hi3cclinkdata",
proto_HI2Operations, HEURISTIC_ENABLE);
}

View File

@ -0,0 +1,32 @@
/* packet-HI2Operations-template.h
*
* Routines for HI2 (ETSI TS 101 671 V3.5.1 (2009-11))
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PACKET_HI2OPERATIONS_H
#define PACKET_HI2OPERATIONS_H
#include "packet-HI2Operations-exp.h"
#endif /* if PACKET_HI2OPERATIONS_H */
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 2
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=2 tabstop=8 expandtab:
* :indentSize=2:tabSize=8:noTabs=true:
*/

View File

@ -1,7 +1,7 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-HI2Operations.c */
/* asn2wrs.py -b -p HI2Operations -c ./HI2Operations.cnf -s ./packet-HI2Operations-template -D . -O ../.. HI2Operations_ver11.asn UmtsHI2Operations.asn TS101909201.asn PCESP.asn EN301040.asn */
/* asn2wrs.py -b -p HI2Operations -c ./HI2Operations.cnf -s ./packet-HI2Operations-template -D . -O ../.. HI2Operations_ver11.asn HI3CCLinkData.asn UmtsHI2Operations.asn TS101909201.asn PCESP.asn EN301040.asn */
/* Input file: packet-HI2Operations-template.c */
@ -25,6 +25,9 @@
#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-isup.h"
#include "packet-q931.h"
#include "packet-HI2Operations.h"
#define PNAME "HI2Operations"
#define PSNAME "HI2OPERATIONS"
@ -39,6 +42,7 @@ int proto_HI2Operations = -1;
/*--- Included file: packet-HI2Operations-hf.c ---*/
#line 1 "./asn1/HI2Operations/packet-HI2Operations-hf.c"
static int hf_HI2Operations_IRIsContent_PDU = -1; /* IRIsContent */
static int hf_HI2Operations_HI2Operations_UUS1_Content_PDU = -1; /* UUS1_Content */
static int hf_HI2Operations_iRIContent = -1; /* IRIContent */
static int hf_HI2Operations_iRISequence = -1; /* IRISequence */
static int hf_HI2Operations_IRISequence_item = -1; /* IRIContent */
@ -92,7 +96,7 @@ static int hf_HI2Operations_communication_Identity_Number = -1; /* OCTET_STRING
static int hf_HI2Operations_network_Identifier = -1; /* Network_Identifier */
static int hf_HI2Operations_operator_Identifier = -1; /* OCTET_STRING_SIZE_1_5 */
static int hf_HI2Operations_network_Element_Identifier = -1; /* Network_Element_Identifier */
static int hf_HI2Operations_e164_Format = -1; /* OCTET_STRING_SIZE_1_25 */
static int hf_HI2Operations_e164_Format = -1; /* T_e164_Format */
static int hf_HI2Operations_x25_Format = -1; /* OCTET_STRING_SIZE_1_25 */
static int hf_HI2Operations_iP_Format = -1; /* OCTET_STRING_SIZE_1_25 */
static int hf_HI2Operations_dNS_Format = -1; /* OCTET_STRING_SIZE_1_25 */
@ -109,6 +113,7 @@ static int hf_HI2Operations_imsi = -1; /* OCTET_STRING_SIZE_3_8 */
static int hf_HI2Operations_callingPartyNumber = -1; /* CallingPartyNumber */
static int hf_HI2Operations_calledPartyNumber = -1; /* CalledPartyNumber */
static int hf_HI2Operations_msISDN = -1; /* OCTET_STRING_SIZE_1_9 */
static int hf_HI2Operations_e164_Format_01 = -1; /* OCTET_STRING_SIZE_1_25 */
static int hf_HI2Operations_sip_uri = -1; /* OCTET_STRING */
static int hf_HI2Operations_tel_url = -1; /* OCTET_STRING */
static int hf_HI2Operations_services_Information = -1; /* Services_Information */
@ -204,6 +209,14 @@ static int hf_HI2Operations_iP_assignment = -1; /* T_iP_assignment */
static int hf_HI2Operations_iPBinaryAddress = -1; /* OCTET_STRING_SIZE_4_16 */
static int hf_HI2Operations_iPTextAddress = -1; /* IA5String_SIZE_7_45 */
static int hf_HI2Operations_countryCode = -1; /* PrintableString_SIZE_2 */
static int hf_HI2Operations_lawfullInterceptionIdentifier = -1; /* LawfulInterceptionIdentifier */
static int hf_HI2Operations_direction_Indication = -1; /* Direction_Indication */
static int hf_HI2Operations_bearer_capability = -1; /* T_bearer_capability */
static int hf_HI2Operations_service_Information = -1; /* Service_Information */
static int hf_HI2Operations_high_layer_capability = -1; /* OCTET_STRING_SIZE_1 */
static int hf_HI2Operations_tMR = -1; /* OCTET_STRING_SIZE_1 */
static int hf_HI2Operations_bearerServiceCode = -1; /* OCTET_STRING_SIZE_1 */
static int hf_HI2Operations_teleServiceCode = -1; /* OCTET_STRING_SIZE_1 */
static int hf_HI2Operations_qosMobileRadio = -1; /* OCTET_STRING */
static int hf_HI2Operations_qosGn = -1; /* OCTET_STRING */
static int hf_HI2Operations_iri_to_CC = -1; /* IRI_to_CC_Correlation */
@ -354,7 +367,7 @@ static int hf_HI2Operations_cI = -1; /* CellIdType */
static int hf_HI2Operations_ssi = -1; /* SSIType */
/*--- End of included file: packet-HI2Operations-hf.c ---*/
#line 31 "./asn1/HI2Operations/packet-HI2Operations-template.c"
#line 34 "./asn1/HI2Operations/packet-HI2Operations-template.c"
/* Initialize the subtree pointers */
@ -416,6 +429,8 @@ static gint ett_HI2Operations_DataNodeAddress = -1;
static gint ett_HI2Operations_IPAddress = -1;
static gint ett_HI2Operations_IP_value = -1;
static gint ett_HI2Operations_National_HI2_ASN1parameters = -1;
static gint ett_HI2Operations_UUS1_Content = -1;
static gint ett_HI2Operations_Service_Information = -1;
static gint ett_HI2Operations_UmtsQos = -1;
static gint ett_HI2Operations_CorrelationValues = -1;
static gint ett_HI2Operations_T_both_IRI_CC = -1;
@ -464,7 +479,7 @@ static gint ett_HI2Operations_TETRACGIType = -1;
static gint ett_HI2Operations_TSIType = -1;
/*--- End of included file: packet-HI2Operations-ett.c ---*/
#line 34 "./asn1/HI2Operations/packet-HI2Operations-template.c"
#line 37 "./asn1/HI2Operations/packet-HI2Operations-template.c"
/*--- Included file: packet-HI2Operations-fn.c ---*/
@ -531,6 +546,26 @@ dissect_HI2Operations_OCTET_STRING_SIZE_1_5(gboolean implicit_tag _U_, tvbuff_t
static int
dissect_HI2Operations_T_e164_Format(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 79 "./asn1/HI2Operations/HI2Operations.cnf"
tvbuff_t *parameter_tvb=NULL;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
if (!parameter_tvb)
return offset;
dissect_isup_calling_party_number_parameter(parameter_tvb, actx->pinfo, tree, NULL);
return offset;
}
static int
dissect_HI2Operations_OCTET_STRING_SIZE_1_25(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
@ -642,7 +677,7 @@ static const value_string HI2Operations_Network_Element_Identifier_vals[] = {
};
static const ber_choice_t Network_Element_Identifier_choice[] = {
{ 1, &hf_HI2Operations_e164_Format, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
{ 1, &hf_HI2Operations_e164_Format, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_HI2Operations_T_e164_Format },
{ 2, &hf_HI2Operations_x25_Format, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
{ 3, &hf_HI2Operations_iP_Format, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
{ 4, &hf_HI2Operations_dNS_Format, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
@ -1358,7 +1393,7 @@ static const ber_sequence_t T_partyIdentity_sequence[] = {
{ &hf_HI2Operations_callingPartyNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_HI2Operations_CallingPartyNumber },
{ &hf_HI2Operations_calledPartyNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_HI2Operations_CalledPartyNumber },
{ &hf_HI2Operations_msISDN, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_9 },
{ &hf_HI2Operations_e164_Format, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
{ &hf_HI2Operations_e164_Format_01, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1_25 },
{ &hf_HI2Operations_sip_uri, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING },
{ &hf_HI2Operations_tel_url, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING },
{ NULL, 0, 0, 0, NULL }
@ -3743,6 +3778,137 @@ dissect_HI2Operations_IRIsContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
return offset;
}
static const value_string HI2Operations_Direction_Indication_vals[] = {
{ 0, "mono-mode" },
{ 1, "cc-from-target" },
{ 2, "cc-from-other-party" },
{ 3, "direction-unknown" },
{ 0, NULL }
};
static int
dissect_HI2Operations_Direction_Indication(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
dissect_HI2Operations_T_bearer_capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 88 "./asn1/HI2Operations/HI2Operations.cnf"
tvbuff_t *parameter_tvb;
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
&parameter_tvb);
if (!parameter_tvb)
return offset;
dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_reported_length_remaining(parameter_tvb,0), tree);
return offset;
}
static int
dissect_HI2Operations_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t Service_Information_set[] = {
{ &hf_HI2Operations_high_layer_capability, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1 },
{ &hf_HI2Operations_tMR , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1 },
{ &hf_HI2Operations_bearerServiceCode, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1 },
{ &hf_HI2Operations_teleServiceCode, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OCTET_STRING_SIZE_1 },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_HI2Operations_Service_Information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
Service_Information_set, hf_index, ett_HI2Operations_Service_Information);
return offset;
}
static const ber_sequence_t UUS1_Content_sequence[] = {
{ &hf_HI2Operations_domainID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_OBJECT_IDENTIFIER },
{ &hf_HI2Operations_lawfullInterceptionIdentifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_HI2Operations_LawfulInterceptionIdentifier },
{ &hf_HI2Operations_communicationIdentifier, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_HI2Operations_CommunicationIdentifier },
{ &hf_HI2Operations_cC_Link_Identifier, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_CC_Link_Identifier },
{ &hf_HI2Operations_direction_Indication, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_HI2Operations_Direction_Indication },
{ &hf_HI2Operations_bearer_capability, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_T_bearer_capability },
{ &hf_HI2Operations_service_Information, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_HI2Operations_Service_Information },
{ NULL, 0, 0, 0, NULL }
};
static int
dissect_HI2Operations_UUS1_Content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 35 "./asn1/HI2Operations/HI2Operations.cnf"
/* Heuristic test to see if it's our content */
gint8 tmp_class;
gboolean tmp_pc;
gint32 tmp_tag;
int tmp_offset;
guint length = tvb_captured_length(tvb);
guint32 tmp_length;
gboolean tmp_ind;
/* Check for min length */
if (length < 6){
return 0;
}
/* We start with UUS1-Content ::= SEQUENCE */
tmp_offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
if(tmp_class != BER_CLASS_UNI){
return 0;
}
if(tmp_pc != 1){
return 0;
}
if(tmp_tag != BER_UNI_TAG_SEQUENCE){
return 0;
}
/* Get length just to move offset forward */
tmp_offset = get_ber_length(tvb, tmp_offset, &tmp_length, &tmp_ind);
/* Next 2 mandatorry elements
* lawfullInterceptionIdentifier [1] LawfulInterceptionIdentifier,
* communicationIdentifier [2] CommunicationIdentifier,
*/
tmp_offset = get_ber_identifier(tvb, tmp_offset, &tmp_class, &tmp_pc, &tmp_tag);
if(tmp_class != BER_CLASS_CON){
return 0;
}
if(tmp_pc != 0){
return 0;
}
if(tmp_tag != 1){
return 0;
}
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
UUS1_Content_sequence, hf_index, ett_HI2Operations_UUS1_Content);
return offset;
}
/*--- PDUs ---*/
static int dissect_IRIsContent_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
@ -3752,10 +3918,17 @@ static int dissect_IRIsContent_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr
offset = dissect_HI2Operations_IRIsContent(FALSE, tvb, offset, &asn1_ctx, tree, hf_HI2Operations_IRIsContent_PDU);
return offset;
}
int dissect_HI2Operations_UUS1_Content_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
offset = dissect_HI2Operations_UUS1_Content(FALSE, tvb, offset, &asn1_ctx, tree, hf_HI2Operations_HI2Operations_UUS1_Content_PDU);
return offset;
}
/*--- End of included file: packet-HI2Operations-fn.c ---*/
#line 36 "./asn1/HI2Operations/packet-HI2Operations-template.c"
#line 39 "./asn1/HI2Operations/packet-HI2Operations-template.c"
/*--- proto_register_HI2Operations ----------------------------------------------*/
@ -3770,6 +3943,10 @@ void proto_register_HI2Operations(void) {
{ "IRIsContent", "HI2Operations.IRIsContent",
FT_UINT32, BASE_DEC, VALS(HI2Operations_IRIsContent_vals), 0,
NULL, HFILL }},
{ &hf_HI2Operations_HI2Operations_UUS1_Content_PDU,
{ "UUS1-Content", "HI2Operations.UUS1_Content_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_HI2Operations_iRIContent,
{ "iRIContent", "HI2Operations.iRIContent",
FT_UINT32, BASE_DEC, VALS(HI2Operations_IRIContent_vals), 0,
@ -3985,7 +4162,7 @@ void proto_register_HI2Operations(void) {
{ &hf_HI2Operations_e164_Format,
{ "e164-Format", "HI2Operations.e164_Format",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1_25", HFILL }},
NULL, HFILL }},
{ &hf_HI2Operations_x25_Format,
{ "x25-Format", "HI2Operations.x25_Format",
FT_BYTES, BASE_NONE, NULL, 0,
@ -4050,6 +4227,10 @@ void proto_register_HI2Operations(void) {
{ "msISDN", "HI2Operations.msISDN",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1_9", HFILL }},
{ &hf_HI2Operations_e164_Format_01,
{ "e164-Format", "HI2Operations.e164_Format",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1_25", HFILL }},
{ &hf_HI2Operations_sip_uri,
{ "sip-uri", "HI2Operations.sip_uri",
FT_BYTES, BASE_NONE, NULL, 0,
@ -4430,6 +4611,38 @@ void proto_register_HI2Operations(void) {
{ "countryCode", "HI2Operations.countryCode",
FT_STRING, BASE_NONE, NULL, 0,
"PrintableString_SIZE_2", HFILL }},
{ &hf_HI2Operations_lawfullInterceptionIdentifier,
{ "lawfullInterceptionIdentifier", "HI2Operations.lawfullInterceptionIdentifier",
FT_BYTES, BASE_NONE, NULL, 0,
"LawfulInterceptionIdentifier", HFILL }},
{ &hf_HI2Operations_direction_Indication,
{ "direction-Indication", "HI2Operations.direction_Indication",
FT_UINT32, BASE_DEC, VALS(HI2Operations_Direction_Indication_vals), 0,
NULL, HFILL }},
{ &hf_HI2Operations_bearer_capability,
{ "bearer-capability", "HI2Operations.bearer_capability",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_HI2Operations_service_Information,
{ "service-Information", "HI2Operations.service_Information_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_HI2Operations_high_layer_capability,
{ "high-layer-capability", "HI2Operations.high_layer_capability",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1", HFILL }},
{ &hf_HI2Operations_tMR,
{ "tMR", "HI2Operations.tMR",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1", HFILL }},
{ &hf_HI2Operations_bearerServiceCode,
{ "bearerServiceCode", "HI2Operations.bearerServiceCode",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1", HFILL }},
{ &hf_HI2Operations_teleServiceCode,
{ "teleServiceCode", "HI2Operations.teleServiceCode",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_1", HFILL }},
{ &hf_HI2Operations_qosMobileRadio,
{ "qosMobileRadio", "HI2Operations.qosMobileRadio",
FT_BYTES, BASE_NONE, NULL, 0,
@ -5024,7 +5237,7 @@ void proto_register_HI2Operations(void) {
"SSIType", HFILL }},
/*--- End of included file: packet-HI2Operations-hfarr.c ---*/
#line 44 "./asn1/HI2Operations/packet-HI2Operations-template.c"
#line 47 "./asn1/HI2Operations/packet-HI2Operations-template.c"
};
/* List of subtrees */
@ -5088,6 +5301,8 @@ void proto_register_HI2Operations(void) {
&ett_HI2Operations_IPAddress,
&ett_HI2Operations_IP_value,
&ett_HI2Operations_National_HI2_ASN1parameters,
&ett_HI2Operations_UUS1_Content,
&ett_HI2Operations_Service_Information,
&ett_HI2Operations_UmtsQos,
&ett_HI2Operations_CorrelationValues,
&ett_HI2Operations_T_both_IRI_CC,
@ -5136,7 +5351,7 @@ void proto_register_HI2Operations(void) {
&ett_HI2Operations_TSIType,
/*--- End of included file: packet-HI2Operations-ettarr.c ---*/
#line 49 "./asn1/HI2Operations/packet-HI2Operations-template.c"
#line 52 "./asn1/HI2Operations/packet-HI2Operations-template.c"
};
/* Register protocol */
@ -5147,10 +5362,16 @@ void proto_register_HI2Operations(void) {
proto_register_subtree_array(ett, array_length(ett));
register_dissector("HI2Operations", dissect_IRIsContent_PDU, proto_HI2Operations);
}
/*--- proto_reg_handoff_HI2Operations -------------------------------------------*/
void proto_reg_handoff_HI2Operations(void) {
heur_dissector_add("q931_user", dissect_HI2Operations_UUS1_Content_PDU, "HI3CCLinkData", "hi3cclinkdata",
proto_HI2Operations, HEURISTIC_ENABLE);
}

View File

@ -0,0 +1,46 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-HI2Operations.h */
/* asn2wrs.py -b -p HI2Operations -c ./HI2Operations.cnf -s ./packet-HI2Operations-template -D . -O ../.. HI2Operations_ver11.asn HI3CCLinkData.asn UmtsHI2Operations.asn TS101909201.asn PCESP.asn EN301040.asn */
/* Input file: packet-HI2Operations-template.h */
#line 1 "./asn1/HI2Operations/packet-HI2Operations-template.h"
/* packet-HI2Operations-template.h
*
* Routines for HI2 (ETSI TS 101 671 V3.5.1 (2009-11))
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PACKET_HI2OPERATIONS_H
#define PACKET_HI2OPERATIONS_H
/*--- Included file: packet-HI2Operations-exp.h ---*/
#line 1 "./asn1/HI2Operations/packet-HI2Operations-exp.h"
int dissect_HI2Operations_UUS1_Content_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
/*--- End of included file: packet-HI2Operations-exp.h ---*/
#line 17 "./asn1/HI2Operations/packet-HI2Operations-template.h"
#endif /* if PACKET_HI2OPERATIONS_H */
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 2
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=2 tabstop=8 expandtab:
* :indentSize=2:tabSize=8:noTabs=true:
*/