2013-04-11 18:14:53 +00:00
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
2007-10-17 09:55:08 +00:00
/* packet-q932.c */
2016-03-09 03:17:51 +00:00
/* asn2wrs.py -b -p q932 -c ./q932.cnf -s ./packet-q932-template -D . -O ../.. Addressing-Data-Elements.asn Network-Facility-Extension.asn Network-Protocol-Profile-component.asn Interpretation-component.asn */
2007-04-27 08:10:18 +00:00
/* Input file: packet-q932-template.c */
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-template.c"
2007-04-27 08:10:18 +00:00
/* packet-q932.c
* Routines for Q .932 packet dissection
* 2007 Tomas Kukosa
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
2012-06-28 22:56:06 +00:00
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
2007-04-27 08:10:18 +00:00
*/
2012-09-20 02:03:38 +00:00
# include "config.h"
2007-04-27 08:10:18 +00:00
# include <epan/packet.h>
2014-08-08 13:19:29 +00:00
# include <epan/expert.h>
2007-04-27 08:10:18 +00:00
# include <epan/strutil.h>
2007-05-13 20:58:29 +00:00
# include <epan/asn1.h>
2013-02-17 19:28:59 +00:00
# include <epan/prefs.h>
2007-04-27 08:10:18 +00:00
# include "packet-ber.h"
# include "packet-q932.h"
# define PNAME "Q.932"
# define PSNAME "Q932"
# define PFNAME "q932"
2013-12-08 16:40:49 +00:00
void proto_register_q932 ( void ) ;
2007-04-27 08:10:18 +00:00
/* Initialize the protocol and registered fields */
2009-10-11 16:24:29 +00:00
static int proto_q932 = - 1 ;
2007-04-27 08:10:18 +00:00
static int hf_q932_ie_type = - 1 ;
static int hf_q932_ie_len = - 1 ;
static int hf_q932_ie_data = - 1 ;
static int hf_q932_pp = - 1 ;
static int hf_q932_nd = - 1 ;
/*--- Included file: packet-q932-hf.c ---*/
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-hf.c"
2007-04-27 08:10:18 +00:00
static int hf_q932_NetworkFacilityExtension_PDU = - 1 ; /* NetworkFacilityExtension */
static int hf_q932_NetworkProtocolProfile_PDU = - 1 ; /* NetworkProtocolProfile */
static int hf_q932_InterpretationComponent_PDU = - 1 ; /* InterpretationComponent */
static int hf_q932_presentationAlIowedAddress = - 1 ; /* AddressScreened */
static int hf_q932_presentationRestricted = - 1 ; /* NULL */
static int hf_q932_numberNotAvailableDueTolnterworking = - 1 ; /* NULL */
static int hf_q932_presentationRestrictedAddressScreened = - 1 ; /* AddressScreened */
static int hf_q932_presentationAllowedAddress = - 1 ; /* Address */
static int hf_q932_presentationRestrictedAddress = - 1 ; /* Address */
static int hf_q932_presentationAllowedNumberScreened = - 1 ; /* NumberScreened */
static int hf_q932_numberNotAvailableDueToInterworking = - 1 ; /* NULL */
static int hf_q932_presentationRestrictedNumberScreened = - 1 ; /* NumberScreened */
static int hf_q932_presentationAllowedNumber = - 1 ; /* PartyNumber */
static int hf_q932_presentationRestrictedNumber = - 1 ; /* PartyNumber */
static int hf_q932_partyNumber = - 1 ; /* PartyNumber */
static int hf_q932_screeninglndicator = - 1 ; /* ScreeningIndicator */
static int hf_q932_partySubaddress = - 1 ; /* PartySubaddress */
static int hf_q932_screeningIndicator = - 1 ; /* ScreeningIndicator */
static int hf_q932_unknownPartyNumber = - 1 ; /* NumberDigits */
static int hf_q932_publicPartyNumber = - 1 ; /* PublicPartyNumber */
static int hf_q932_nsapEncodedNumber = - 1 ; /* NsapEncodedNumber */
static int hf_q932_dataPartyNumber = - 1 ; /* NumberDigits */
static int hf_q932_telexPartyNumber = - 1 ; /* NumberDigits */
static int hf_q932_privatePartyNumber = - 1 ; /* PrivatePartyNumber */
static int hf_q932_nationalStandardPartyNumber = - 1 ; /* NumberDigits */
static int hf_q932_publicTypeOfNumber = - 1 ; /* PublicTypeOfNumber */
static int hf_q932_publicNumberDigits = - 1 ; /* NumberDigits */
static int hf_q932_privateTypeOfNumber = - 1 ; /* PrivateTypeOfNumber */
static int hf_q932_privateNumberDigits = - 1 ; /* NumberDigits */
static int hf_q932_userSpecifiedSubaddress = - 1 ; /* UserSpecifiedSubaddress */
static int hf_q932_nSAPSubaddress = - 1 ; /* NSAPSubaddress */
static int hf_q932_subaddressInformation = - 1 ; /* SubaddressInformation */
static int hf_q932_oddCountIndicator = - 1 ; /* BOOLEAN */
static int hf_q932_sourceEntity = - 1 ; /* EntityType */
static int hf_q932_sourceEntityAddress = - 1 ; /* AddressInformation */
static int hf_q932_destinationEntity = - 1 ; /* EntityType */
static int hf_q932_destinationEntityAddress = - 1 ; /* AddressInformation */
/*--- End of included file: packet-q932-hf.c ---*/
2016-03-09 03:17:51 +00:00
# line 49 ". / asn1 / q932 / packet-q932-template.c"
2007-04-27 08:10:18 +00:00
/* Initialize the subtree pointers */
static gint ett_q932 = - 1 ;
static gint ett_q932_ie = - 1 ;
/*--- Included file: packet-q932-ett.c ---*/
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-ett.c"
2007-04-27 08:10:18 +00:00
static gint ett_q932_PresentedAddressScreened = - 1 ;
static gint ett_q932_PresentedAddressUnscreened = - 1 ;
static gint ett_q932_PresentedNumberScreened = - 1 ;
static gint ett_q932_PresentedNumberUnscreened = - 1 ;
static gint ett_q932_AddressScreened = - 1 ;
static gint ett_q932_NumberScreened = - 1 ;
static gint ett_q932_Address = - 1 ;
static gint ett_q932_PartyNumber = - 1 ;
static gint ett_q932_PublicPartyNumber = - 1 ;
static gint ett_q932_PrivatePartyNumber = - 1 ;
static gint ett_q932_PartySubaddress = - 1 ;
static gint ett_q932_UserSpecifiedSubaddress = - 1 ;
static gint ett_q932_NetworkFacilityExtension_U = - 1 ;
/*--- End of included file: packet-q932-ett.c ---*/
2016-03-09 03:17:51 +00:00
# line 54 ". / asn1 / q932 / packet-q932-template.c"
2014-08-08 13:19:29 +00:00
static expert_field ei_q932_dse_not_supported = EI_INIT ;
static expert_field ei_q932_acse_not_supported = EI_INIT ;
static expert_field ei_q932_unknown_component = EI_INIT ;
static expert_field ei_q932_asn1_encoded = EI_INIT ;
2007-04-27 08:10:18 +00:00
/* Preferences */
/* ROSE context */
2007-07-13 11:25:53 +00:00
static rose_ctx_t q932_rose_ctx ;
2007-04-27 08:10:18 +00:00
2013-02-17 19:28:59 +00:00
dissector_table_t qsig_arg_local_dissector_table ;
dissector_table_t qsig_res_local_dissector_table ;
dissector_table_t qsig_err_local_dissector_table ;
dissector_table_t etsi_arg_local_dissector_table ;
dissector_table_t etsi_res_local_dissector_table ;
dissector_table_t etsi_err_local_dissector_table ;
2016-01-02 00:31:51 +00:00
# define FACILITY_QSIG 0
# define FACILITY_ETSI 1
static gint g_facility_encoding = FACILITY_QSIG ;
2013-02-17 19:28:59 +00:00
void proto_reg_handoff_q932 ( void ) ;
2007-04-27 08:10:18 +00:00
/* Subdissectors */
2014-02-26 19:29:17 +00:00
static dissector_handle_t q932_ros_handle ;
2007-04-27 08:10:18 +00:00
# define Q932_IE_EXTENDED_FACILITY 0x0D
# define Q932_IE_FACILITY 0x1C
# define Q932_IE_NOTIFICATION_INDICATOR 0x27
# define Q932_IE_INFORMATION_REQUEST 0x32
# define Q932_IE_FEATURE_ACTIVATION 0x38
# define Q932_IE_FEATURE_INDICATION 0x39
# define Q932_IE_SERVICE_PROFILE_ID 0x3A
# define Q932_IE_ENDPOINT_IDENTIFIER 0x3B
static const value_string q932_str_ie_type [ ] = {
{ Q932_IE_EXTENDED_FACILITY , " Extended facility " } ,
{ Q932_IE_FACILITY , " Facility " } ,
{ Q932_IE_NOTIFICATION_INDICATOR , " Notification indicator " } ,
{ Q932_IE_INFORMATION_REQUEST , " Information request " } ,
{ Q932_IE_FEATURE_ACTIVATION , " Feature activation " } ,
{ Q932_IE_FEATURE_INDICATION , " Feature indication " } ,
{ Q932_IE_SERVICE_PROFILE_ID , " Service profile identification " } ,
{ Q932_IE_ENDPOINT_IDENTIFIER , " Endpoint identifier " } ,
{ 0 , NULL }
} ;
static const value_string str_pp [ ] = {
{ 0x11 , " Remote Operations Protocol " } ,
{ 0x12 , " CMIP Protocol " } ,
{ 0x13 , " ACSE Protocol " } ,
{ 0x1F , " Networking extensions " } ,
{ 0 , NULL }
} ;
static const value_string str_nd [ ] = {
{ 0x00 , " User suspended " } ,
{ 0x01 , " User resume " } ,
{ 0x02 , " Bearer service change " } ,
{ 0x04 , " Call completion delay " } ,
{ 0x03 , " Discriminator for extension to ASN.1 encoded component " } ,
{ 0x40 , " Discriminator for extension to ASN.1 encoded component for ISO " } ,
{ 0x42 , " Conference established " } ,
{ 0x43 , " Conference disconnected " } ,
{ 0x44 , " Other party added " } ,
{ 0x45 , " Isolated " } ,
{ 0x46 , " Reattached " } ,
{ 0x47 , " Other party isolated " } ,
{ 0x48 , " Other party reattached " } ,
{ 0x49 , " Other party split " } ,
{ 0x4A , " Other party disconnected " } ,
{ 0x4B , " Conference floating " } ,
{ 0x4C , " Conference disconnected, pre-emption " } ,
{ 0x4F , " Conference floating, served user pre-empted " } ,
{ 0x60 , " Call is a waiting call " } ,
{ 0x68 , " Diversion activated " } ,
{ 0x69 , " call transferred, alerting " } ,
{ 0x6A , " call transferred, answered " } ,
{ 0x6E , " reverse charging (whole call) " } ,
{ 0x6F , " reverse charging (for the rest of the call) " } ,
{ 0x74 , " service profile update " } ,
{ 0x79 , " Remote hold " } ,
{ 0x7A , " Remote retrieval " } ,
{ 0x7B , " Call is diverting " } ,
{ 0 , NULL }
} ;
/*--- Included file: packet-q932-fn.c ---*/
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-fn.c"
2007-04-27 08:10:18 +00:00
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NumberDigits ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-04-27 08:10:18 +00:00
offset = dissect_ber_restricted_string ( implicit_tag , BER_UNI_TAG_NumericString ,
2007-05-15 05:49:43 +00:00
actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static const value_string q932_PublicTypeOfNumber_vals [ ] = {
{ 0 , " unknown " } ,
{ 1 , " internationalNumber " } ,
{ 2 , " nationalNumber " } ,
{ 3 , " networkSpecificNumber " } ,
{ 4 , " subscriberNumber " } ,
{ 6 , " abbreviatedNumber " } ,
{ 0 , NULL }
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_PublicTypeOfNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t PublicPartyNumber_sequence [ ] = {
{ & hf_q932_publicTypeOfNumber , BER_CLASS_UNI , BER_UNI_TAG_ENUMERATED , BER_FLAGS_NOOWNTAG , dissect_q932_PublicTypeOfNumber } ,
{ & hf_q932_publicNumberDigits , BER_CLASS_UNI , BER_UNI_TAG_NumericString , BER_FLAGS_NOOWNTAG , dissect_q932_NumberDigits } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_PublicPartyNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
PublicPartyNumber_sequence , hf_index , ett_q932_PublicPartyNumber ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NsapEncodedNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_octet_string ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static const value_string q932_PrivateTypeOfNumber_vals [ ] = {
{ 0 , " unknown " } ,
{ 1 , " level2RegionalNumber " } ,
{ 2 , " level1RegionalNumber " } ,
{ 3 , " pTNSpecificNumber " } ,
{ 4 , " localNumber " } ,
{ 6 , " abbreviatedNumber " } ,
{ 0 , NULL }
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_PrivateTypeOfNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t PrivatePartyNumber_sequence [ ] = {
{ & hf_q932_privateTypeOfNumber , BER_CLASS_UNI , BER_UNI_TAG_ENUMERATED , BER_FLAGS_NOOWNTAG , dissect_q932_PrivateTypeOfNumber } ,
{ & hf_q932_privateNumberDigits , BER_CLASS_UNI , BER_UNI_TAG_NumericString , BER_FLAGS_NOOWNTAG , dissect_q932_NumberDigits } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_PrivatePartyNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
PrivatePartyNumber_sequence , hf_index , ett_q932_PrivatePartyNumber ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PartyNumber_vals [ ] = {
{ 0 , " unknownPartyNumber " } ,
{ 1 , " publicPartyNumber " } ,
{ 2 , " nsapEncodedNumber " } ,
{ 3 , " dataPartyNumber " } ,
{ 4 , " telexPartyNumber " } ,
{ 5 , " privatePartyNumber " } ,
{ 8 , " nationalStandardPartyNumber " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PartyNumber_choice [ ] = {
{ 0 , & hf_q932_unknownPartyNumber , BER_CLASS_CON , 0 , BER_FLAGS_IMPLTAG , dissect_q932_NumberDigits } ,
{ 1 , & hf_q932_publicPartyNumber , BER_CLASS_CON , 1 , BER_FLAGS_IMPLTAG , dissect_q932_PublicPartyNumber } ,
{ 2 , & hf_q932_nsapEncodedNumber , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_NsapEncodedNumber } ,
{ 3 , & hf_q932_dataPartyNumber , BER_CLASS_CON , 3 , BER_FLAGS_IMPLTAG , dissect_q932_NumberDigits } ,
{ 4 , & hf_q932_telexPartyNumber , BER_CLASS_CON , 4 , BER_FLAGS_IMPLTAG , dissect_q932_NumberDigits } ,
{ 5 , & hf_q932_privatePartyNumber , BER_CLASS_CON , 5 , BER_FLAGS_IMPLTAG , dissect_q932_PrivatePartyNumber } ,
{ 8 , & hf_q932_nationalStandardPartyNumber , BER_CLASS_CON , 8 , BER_FLAGS_IMPLTAG , dissect_q932_NumberDigits } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PartyNumber ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PartyNumber_choice , hf_index , ett_q932_PartyNumber ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_ScreeningIndicator_vals [ ] = {
{ 0 , " userProvidedNotScreened " } ,
{ 1 , " userProvidedVerifiedAndPassed " } ,
{ 2 , " userProvidedVerifiedAndFailed " } ,
{ 3 , " networkProvided " } ,
{ 0 , NULL }
} ;
2007-04-27 08:10:18 +00:00
int
2007-05-13 20:58:29 +00:00
dissect_q932_ScreeningIndicator ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_SubaddressInformation ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_octet_string ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_BOOLEAN ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2008-01-04 16:21:07 +00:00
offset = dissect_ber_boolean ( implicit_tag , actx , tree , tvb , offset , hf_index , NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t UserSpecifiedSubaddress_sequence [ ] = {
{ & hf_q932_subaddressInformation , BER_CLASS_UNI , BER_UNI_TAG_OCTETSTRING , BER_FLAGS_NOOWNTAG , dissect_q932_SubaddressInformation } ,
{ & hf_q932_oddCountIndicator , BER_CLASS_UNI , BER_UNI_TAG_BOOLEAN , BER_FLAGS_OPTIONAL | BER_FLAGS_NOOWNTAG , dissect_q932_BOOLEAN } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_UserSpecifiedSubaddress ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
UserSpecifiedSubaddress_sequence , hf_index , ett_q932_UserSpecifiedSubaddress ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NSAPSubaddress ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_octet_string ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PartySubaddress_vals [ ] = {
{ 0 , " userSpecifiedSubaddress " } ,
{ 1 , " nSAPSubaddress " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PartySubaddress_choice [ ] = {
{ 0 , & hf_q932_userSpecifiedSubaddress , BER_CLASS_UNI , BER_UNI_TAG_SEQUENCE , BER_FLAGS_NOOWNTAG , dissect_q932_UserSpecifiedSubaddress } ,
{ 1 , & hf_q932_nSAPSubaddress , BER_CLASS_UNI , BER_UNI_TAG_OCTETSTRING , BER_FLAGS_NOOWNTAG , dissect_q932_NSAPSubaddress } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PartySubaddress ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PartySubaddress_choice , hf_index , ett_q932_PartySubaddress ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t AddressScreened_sequence [ ] = {
{ & hf_q932_partyNumber , BER_CLASS_ANY /*choice*/ , - 1 /*choice*/ , BER_FLAGS_NOOWNTAG | BER_FLAGS_NOTCHKTAG , dissect_q932_PartyNumber } ,
{ & hf_q932_screeninglndicator , BER_CLASS_UNI , BER_UNI_TAG_ENUMERATED , BER_FLAGS_NOOWNTAG , dissect_q932_ScreeningIndicator } ,
{ & hf_q932_partySubaddress , BER_CLASS_ANY /*choice*/ , - 1 /*choice*/ , BER_FLAGS_OPTIONAL | BER_FLAGS_NOOWNTAG | BER_FLAGS_NOTCHKTAG , dissect_q932_PartySubaddress } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_AddressScreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
AddressScreened_sequence , hf_index , ett_q932_AddressScreened ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NULL ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_null ( implicit_tag , actx , tree , tvb , offset , hf_index ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PresentedAddressScreened_vals [ ] = {
{ 0 , " presentationAlIowedAddress " } ,
{ 1 , " presentationRestricted " } ,
{ 2 , " numberNotAvailableDueTolnterworking " } ,
{ 3 , " presentationRestrictedAddress " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PresentedAddressScreened_choice [ ] = {
{ 0 , & hf_q932_presentationAlIowedAddress , BER_CLASS_CON , 0 , BER_FLAGS_IMPLTAG , dissect_q932_AddressScreened } ,
{ 1 , & hf_q932_presentationRestricted , BER_CLASS_CON , 1 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 2 , & hf_q932_numberNotAvailableDueTolnterworking , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 3 , & hf_q932_presentationRestrictedAddressScreened , BER_CLASS_CON , 3 , BER_FLAGS_IMPLTAG , dissect_q932_AddressScreened } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PresentedAddressScreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PresentedAddressScreened_choice , hf_index , ett_q932_PresentedAddressScreened ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t Address_sequence [ ] = {
{ & hf_q932_partyNumber , BER_CLASS_ANY /*choice*/ , - 1 /*choice*/ , BER_FLAGS_NOOWNTAG | BER_FLAGS_NOTCHKTAG , dissect_q932_PartyNumber } ,
{ & hf_q932_partySubaddress , BER_CLASS_ANY /*choice*/ , - 1 /*choice*/ , BER_FLAGS_OPTIONAL | BER_FLAGS_NOOWNTAG | BER_FLAGS_NOTCHKTAG , dissect_q932_PartySubaddress } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_Address ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
Address_sequence , hf_index , ett_q932_Address ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PresentedAddressUnscreened_vals [ ] = {
{ 0 , " presentationAllowedAddress " } ,
{ 1 , " presentationRestricted " } ,
{ 2 , " numberNotAvailableDueTolnterworking " } ,
{ 3 , " presentationRestrictedAddress " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PresentedAddressUnscreened_choice [ ] = {
{ 0 , & hf_q932_presentationAllowedAddress , BER_CLASS_CON , 0 , BER_FLAGS_IMPLTAG , dissect_q932_Address } ,
{ 1 , & hf_q932_presentationRestricted , BER_CLASS_CON , 1 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 2 , & hf_q932_numberNotAvailableDueTolnterworking , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 3 , & hf_q932_presentationRestrictedAddress , BER_CLASS_CON , 3 , BER_FLAGS_IMPLTAG , dissect_q932_Address } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PresentedAddressUnscreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PresentedAddressUnscreened_choice , hf_index , ett_q932_PresentedAddressUnscreened ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t NumberScreened_sequence [ ] = {
{ & hf_q932_partyNumber , BER_CLASS_ANY /*choice*/ , - 1 /*choice*/ , BER_FLAGS_NOOWNTAG | BER_FLAGS_NOTCHKTAG , dissect_q932_PartyNumber } ,
{ & hf_q932_screeningIndicator , BER_CLASS_UNI , BER_UNI_TAG_ENUMERATED , BER_FLAGS_NOOWNTAG , dissect_q932_ScreeningIndicator } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NumberScreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
NumberScreened_sequence , hf_index , ett_q932_NumberScreened ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PresentedNumberScreened_vals [ ] = {
{ 0 , " presentationAllowedNumber " } ,
{ 1 , " presentationRestricted " } ,
{ 2 , " numberNotAvailableDueToInterworking " } ,
{ 3 , " presentationRestrictedNumber " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PresentedNumberScreened_choice [ ] = {
{ 0 , & hf_q932_presentationAllowedNumberScreened , BER_CLASS_CON , 0 , BER_FLAGS_IMPLTAG , dissect_q932_NumberScreened } ,
{ 1 , & hf_q932_presentationRestricted , BER_CLASS_CON , 1 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 2 , & hf_q932_numberNotAvailableDueToInterworking , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 3 , & hf_q932_presentationRestrictedNumberScreened , BER_CLASS_CON , 3 , BER_FLAGS_IMPLTAG , dissect_q932_NumberScreened } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PresentedNumberScreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PresentedNumberScreened_choice , hf_index , ett_q932_PresentedNumberScreened ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2016-02-11 06:19:23 +00:00
const value_string q932_PresentedNumberUnscreened_vals [ ] = {
{ 0 , " presentationAllowedNumber " } ,
{ 1 , " presentationRestricted " } ,
{ 2 , " numberNotAvailableDueToInterworking " } ,
{ 3 , " presentationRestrictedNumber " } ,
{ 0 , NULL }
} ;
2007-06-05 12:15:52 +00:00
static const ber_choice_t PresentedNumberUnscreened_choice [ ] = {
{ 0 , & hf_q932_presentationAllowedNumber , BER_CLASS_CON , 0 , 0 , dissect_q932_PartyNumber } ,
{ 1 , & hf_q932_presentationRestricted , BER_CLASS_CON , 1 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 2 , & hf_q932_numberNotAvailableDueToInterworking , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_NULL } ,
{ 3 , & hf_q932_presentationRestrictedNumber , BER_CLASS_CON , 3 , 0 , dissect_q932_PartyNumber } ,
{ 0 , NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
int
2007-05-13 20:58:29 +00:00
dissect_q932_PresentedNumberUnscreened ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_choice ( actx , tree , tvb , offset ,
PresentedNumberUnscreened_choice , hf_index , ett_q932_PresentedNumberUnscreened ,
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
int
2007-05-13 20:58:29 +00:00
dissect_q932_PresentationAllowedIndicator ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2008-01-04 16:21:07 +00:00
offset = dissect_ber_boolean ( implicit_tag , actx , tree , tvb , offset , hf_index , NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static const value_string q932_EntityType_vals [ ] = {
{ 0 , " endPINX " } ,
{ 1 , " anyTypeOfPINX " } ,
{ 0 , NULL }
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_EntityType ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_AddressInformation ( 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_q932_PartyNumber ( implicit_tag , tvb , offset , actx , tree , hf_index ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
2007-06-05 12:15:52 +00:00
static const ber_sequence_t NetworkFacilityExtension_U_sequence [ ] = {
{ & hf_q932_sourceEntity , BER_CLASS_CON , 0 , BER_FLAGS_IMPLTAG , dissect_q932_EntityType } ,
{ & hf_q932_sourceEntityAddress , BER_CLASS_CON , 1 , BER_FLAGS_OPTIONAL | BER_FLAGS_NOTCHKTAG , dissect_q932_AddressInformation } ,
{ & hf_q932_destinationEntity , BER_CLASS_CON , 2 , BER_FLAGS_IMPLTAG , dissect_q932_EntityType } ,
{ & hf_q932_destinationEntityAddress , BER_CLASS_CON , 3 , BER_FLAGS_OPTIONAL | BER_FLAGS_NOTCHKTAG , dissect_q932_AddressInformation } ,
{ NULL , 0 , 0 , 0 , NULL }
2007-04-27 08:10:18 +00:00
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NetworkFacilityExtension_U ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-06-05 12:15:52 +00:00
offset = dissect_ber_sequence ( implicit_tag , actx , tree , tvb , offset ,
NetworkFacilityExtension_U_sequence , hf_index , ett_q932_NetworkFacilityExtension_U ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NetworkFacilityExtension ( 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_tagged_type ( implicit_tag , actx , tree , tvb , offset ,
2007-04-27 08:10:18 +00:00
hf_index , BER_CLASS_CON , 10 , TRUE , dissect_q932_NetworkFacilityExtension_U ) ;
return offset ;
}
static const value_string q932_NetworkProtocolProfile_U_vals [ ] = {
{ 19 , " acse " } ,
{ 32 , " dse " } ,
{ 0 , NULL }
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NetworkProtocolProfile_U ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2008-05-21 05:41:39 +00:00
NULL ) ;
2007-04-27 08:10:18 +00:00
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_NetworkProtocolProfile ( 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_tagged_type ( implicit_tag , actx , tree , tvb , offset ,
2007-04-27 08:10:18 +00:00
hf_index , BER_CLASS_CON , 18 , TRUE , dissect_q932_NetworkProtocolProfile_U ) ;
return offset ;
}
static const value_string q932_InterpretationComponent_U_vals [ ] = {
{ 0 , " discardAnyUnrecognisedInvokePdu " } ,
{ 1 , " clearCallIfAnyInvokePduNotRecognised " } ,
{ 2 , " rejectAnyUnrecognisedInvokePdu " } ,
{ 0 , NULL }
} ;
static int
2007-05-13 20:58:29 +00:00
dissect_q932_InterpretationComponent_U ( gboolean implicit_tag _U_ , tvbuff_t * tvb _U_ , int offset _U_ , asn1_ctx_t * actx _U_ , proto_tree * tree _U_ , int hf_index _U_ ) {
2007-05-15 05:49:43 +00:00
offset = dissect_ber_integer ( implicit_tag , actx , tree , tvb , offset , hf_index ,
2007-04-27 08:10:18 +00:00
NULL ) ;
return offset ;
}
static int
2007-05-13 20:58:29 +00:00
dissect_q932_InterpretationComponent ( 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_tagged_type ( implicit_tag , actx , tree , tvb , offset ,
2007-04-27 08:10:18 +00:00
hf_index , BER_CLASS_CON , 11 , TRUE , dissect_q932_InterpretationComponent_U ) ;
return offset ;
}
/*--- PDUs ---*/
2014-10-06 13:31:47 +00:00
static int dissect_NetworkFacilityExtension_PDU ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ ) {
int offset = 0 ;
2007-05-13 20:58:29 +00:00
asn1_ctx_t asn1_ctx ;
asn1_ctx_init ( & asn1_ctx , ASN1_ENC_BER , TRUE , pinfo ) ;
2014-10-06 13:31:47 +00:00
offset = dissect_q932_NetworkFacilityExtension ( FALSE , tvb , offset , & asn1_ctx , tree , hf_q932_NetworkFacilityExtension_PDU ) ;
return offset ;
2007-04-27 08:10:18 +00:00
}
2014-10-06 13:31:47 +00:00
static int dissect_NetworkProtocolProfile_PDU ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ ) {
int offset = 0 ;
2007-05-13 20:58:29 +00:00
asn1_ctx_t asn1_ctx ;
asn1_ctx_init ( & asn1_ctx , ASN1_ENC_BER , TRUE , pinfo ) ;
2014-10-06 13:31:47 +00:00
offset = dissect_q932_NetworkProtocolProfile ( FALSE , tvb , offset , & asn1_ctx , tree , hf_q932_NetworkProtocolProfile_PDU ) ;
return offset ;
2007-04-27 08:10:18 +00:00
}
2014-10-06 13:31:47 +00:00
static int dissect_InterpretationComponent_PDU ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ ) {
int offset = 0 ;
2007-05-13 20:58:29 +00:00
asn1_ctx_t asn1_ctx ;
asn1_ctx_init ( & asn1_ctx , ASN1_ENC_BER , TRUE , pinfo ) ;
2014-10-06 13:31:47 +00:00
offset = dissect_q932_InterpretationComponent ( FALSE , tvb , offset , & asn1_ctx , tree , hf_q932_InterpretationComponent_PDU ) ;
return offset ;
2007-04-27 08:10:18 +00:00
}
/*--- End of included file: packet-q932-fn.c ---*/
2016-03-09 03:17:51 +00:00
# line 143 ". / asn1 / q932 / packet-q932-template.c"
2007-04-27 08:10:18 +00:00
/*--- dissect_q932_facility_ie -------------------------------------------------------*/
2013-12-17 22:07:32 +00:00
static void
2007-04-27 08:10:18 +00:00
dissect_q932_facility_ie ( tvbuff_t * tvb , int offset , packet_info * pinfo , proto_tree * tree , int length ) {
2013-03-19 21:22:31 +00:00
gint8 appclass ;
2007-04-27 08:10:18 +00:00
gboolean pc ;
2008-07-26 15:28:04 +00:00
gint32 tag ;
2007-04-27 08:10:18 +00:00
guint32 len ;
int hoffset , eoffset ;
int ie_end ;
tvbuff_t * next_tvb ;
ie_end = offset + length ;
2011-09-27 12:05:32 +00:00
proto_tree_add_item ( tree , hf_q932_pp , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2007-04-27 08:10:18 +00:00
offset + + ;
while ( offset < ie_end ) {
hoffset = offset ;
2013-03-19 21:22:31 +00:00
offset = get_ber_identifier ( tvb , offset , & appclass , & pc , & tag ) ;
2007-08-24 07:12:04 +00:00
offset = get_ber_length ( tvb , offset , & len , NULL ) ;
2007-04-27 08:10:18 +00:00
eoffset = offset + len ;
2014-06-06 14:35:50 +00:00
next_tvb = tvb_new_subset_length ( tvb , hoffset , eoffset - hoffset ) ;
2013-03-19 21:22:31 +00:00
switch ( appclass ) {
2007-04-27 08:10:18 +00:00
case BER_CLASS_CON :
switch ( tag ) {
case 10 : /* Network Facility Extension */
2014-10-06 13:31:47 +00:00
dissect_NetworkFacilityExtension_PDU ( next_tvb , pinfo , tree , NULL ) ;
2007-04-27 08:10:18 +00:00
break ;
case 18 : /* Network Protocol Profile */
2014-10-06 13:31:47 +00:00
dissect_NetworkProtocolProfile_PDU ( next_tvb , pinfo , tree , NULL ) ;
2007-04-27 08:10:18 +00:00
break ;
case 11 : /* Interpretation Component */
2014-10-06 13:31:47 +00:00
dissect_InterpretationComponent_PDU ( next_tvb , pinfo , tree , NULL ) ;
2007-04-27 08:10:18 +00:00
break ;
/* ROSE APDU */
case 1 : /* invoke */
case 2 : /* returnResult */
case 3 : /* returnError */
case 4 : /* reject */
q932_rose_ctx . apdu_depth = 1 ;
2013-11-03 12:57:58 +00:00
call_dissector_with_data ( q932_ros_handle , next_tvb , pinfo , tree , & q932_rose_ctx ) ;
2007-04-27 08:10:18 +00:00
break ;
/* DSE APDU */
case 12 : /* begin */
case 14 : /* end */
case 15 : /* continue */
case 17 : /* abort */
offset = dissect_ber_identifier ( pinfo , tree , tvb , hoffset , NULL , NULL , NULL ) ;
offset = dissect_ber_length ( pinfo , tree , tvb , offset , NULL , NULL ) ;
2014-08-08 13:19:29 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_q932_dse_not_supported , tvb , offset , len ) ;
2007-04-27 08:10:18 +00:00
break ;
default :
offset = dissect_ber_identifier ( pinfo , tree , tvb , hoffset , NULL , NULL , NULL ) ;
offset = dissect_ber_length ( pinfo , tree , tvb , offset , NULL , NULL ) ;
2014-08-08 13:19:29 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_q932_unknown_component , tvb , offset , len ) ;
2007-04-27 08:10:18 +00:00
}
break ;
case BER_CLASS_APP :
switch ( tag ) {
/* ACSE APDU */
case 0 : /* aarq */
case 1 : /* aare */
case 2 : /* rlrq */
case 3 : /* rlre */
case 4 : /* abrt */
offset = dissect_ber_identifier ( pinfo , tree , tvb , hoffset , NULL , NULL , NULL ) ;
offset = dissect_ber_length ( pinfo , tree , tvb , offset , NULL , NULL ) ;
2014-08-08 13:19:29 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_q932_acse_not_supported , tvb , offset , len ) ;
2007-04-27 08:10:18 +00:00
break ;
default :
offset = dissect_ber_identifier ( pinfo , tree , tvb , hoffset , NULL , NULL , NULL ) ;
offset = dissect_ber_length ( pinfo , tree , tvb , offset , NULL , NULL ) ;
2014-08-08 13:19:29 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_q932_unknown_component , tvb , offset , len ) ;
2007-04-27 08:10:18 +00:00
}
break ;
default :
offset = dissect_ber_identifier ( pinfo , tree , tvb , hoffset , NULL , NULL , NULL ) ;
offset = dissect_ber_length ( pinfo , tree , tvb , offset , NULL , NULL ) ;
2014-08-08 13:19:29 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_q932_unknown_component , tvb , offset , len ) ;
2007-04-27 08:10:18 +00:00
}
offset = eoffset ;
}
}
/*--- dissect_q932_ni_ie -------------------------------------------------------*/
static void
2014-08-08 13:19:29 +00:00
dissect_q932_ni_ie ( tvbuff_t * tvb , int offset , packet_info * pinfo , proto_tree * tree , int length ) {
2007-04-27 08:10:18 +00:00
int remain = length ;
guint8 octet = 0 ;
guint32 value = 0 ;
2014-08-08 13:19:29 +00:00
proto_item * ti ;
2007-04-27 08:10:18 +00:00
while ( ( remain > 0 ) & & ! ( octet & 0x80 ) ) {
octet = tvb_get_guint8 ( tvb , offset + + ) ;
remain - - ;
value < < = 7 ;
value | = octet & 0x7F ;
}
2014-08-08 13:19:29 +00:00
ti = proto_tree_add_uint ( tree , hf_q932_nd , tvb , offset - ( length - remain ) , length - remain , value ) ;
2007-04-27 08:10:18 +00:00
if ( remain > 0 ) {
2014-08-08 13:19:29 +00:00
expert_add_info ( pinfo , ti , & ei_q932_asn1_encoded ) ;
2007-04-27 08:10:18 +00:00
}
}
/*--- dissect_q932_ie -------------------------------------------------------*/
2015-11-24 23:03:04 +00:00
static int
dissect_q932_ie ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , void * data _U_ ) {
2007-04-27 08:10:18 +00:00
gint offset ;
2014-06-21 01:35:40 +00:00
proto_item * ti ;
2007-04-27 08:10:18 +00:00
proto_tree * ie_tree ;
guint8 ie_type , ie_len ;
offset = 0 ;
2011-09-27 12:05:32 +00:00
ti = proto_tree_add_item ( tree , proto_q932 , tvb , offset , - 1 , ENC_NA ) ;
2008-05-21 05:41:39 +00:00
PROTO_ITEM_SET_HIDDEN ( ti ) ;
2007-04-27 08:10:18 +00:00
ie_type = tvb_get_guint8 ( tvb , offset ) ;
ie_len = tvb_get_guint8 ( tvb , offset + 1 ) ;
2014-06-21 01:35:40 +00:00
ie_tree = proto_tree_add_subtree ( tree , tvb , offset , - 1 , ett_q932_ie , NULL ,
2007-04-27 08:10:18 +00:00
val_to_str ( ie_type , VALS ( q932_str_ie_type ) , " unknown (0x%02X) " ) ) ;
2014-06-21 01:35:40 +00:00
2011-09-27 12:05:32 +00:00
proto_tree_add_item ( ie_tree , hf_q932_ie_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( ie_tree , hf_q932_ie_len , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
2007-04-27 08:10:18 +00:00
offset + = 2 ;
2015-04-08 08:03:08 +00:00
if ( tvb_reported_length_remaining ( tvb , offset ) < = 0 )
2015-11-24 23:03:04 +00:00
return offset ;
2007-04-27 08:10:18 +00:00
switch ( ie_type ) {
case Q932_IE_FACILITY :
dissect_q932_facility_ie ( tvb , offset , pinfo , ie_tree , ie_len ) ;
break ;
case Q932_IE_NOTIFICATION_INDICATOR :
dissect_q932_ni_ie ( tvb , offset , pinfo , ie_tree , ie_len ) ;
break ;
default :
if ( ie_len > 0 ) {
2014-06-21 01:35:40 +00:00
proto_tree_add_item ( ie_tree , hf_q932_ie_data , tvb , offset , ie_len , ENC_NA ) ;
2007-04-27 08:10:18 +00:00
}
}
2015-11-24 23:03:04 +00:00
return tvb_captured_length ( tvb ) ;
2007-04-27 08:10:18 +00:00
}
/*--- dissect_q932_apdu -----------------------------------------------------*/
2015-11-14 14:23:33 +00:00
static int
dissect_q932_apdu ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree , void * data _U_ ) {
return call_dissector ( q932_ros_handle , tvb , pinfo , tree ) ;
2007-04-27 08:10:18 +00:00
}
/*--- proto_register_q932 ---------------------------------------------------*/
void proto_register_q932 ( void ) {
/* List of fields */
static hf_register_info hf [ ] = {
{ & hf_q932_ie_type , { " Type " , " q932.ie.type " ,
FT_UINT8 , BASE_HEX , VALS ( q932_str_ie_type ) , 0x0 ,
" Information Element Type " , HFILL } } ,
{ & hf_q932_ie_len , { " Length " , " q932.ie.len " ,
FT_UINT8 , BASE_DEC , NULL , 0x0 ,
" Information Element Length " , HFILL } } ,
{ & hf_q932_ie_data , { " Data " , " q932.ie.data " ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
FT_BYTES , BASE_NONE , NULL , 0x0 ,
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_pp , { " Protocol profile " , " q932.pp " ,
FT_UINT8 , BASE_HEX , VALS ( str_pp ) , 0x1F ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_nd , { " Notification description " , " q932.nd " ,
FT_UINT8 , BASE_HEX , VALS ( str_nd ) , 0x0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
/*--- Included file: packet-q932-hfarr.c ---*/
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-hfarr.c"
2007-04-27 08:10:18 +00:00
{ & hf_q932_NetworkFacilityExtension_PDU ,
2013-05-27 20:26:49 +00:00
{ " NetworkFacilityExtension " , " q932.NetworkFacilityExtension_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_NetworkProtocolProfile_PDU ,
{ " NetworkProtocolProfile " , " q932.NetworkProtocolProfile " ,
2007-12-06 11:23:35 +00:00
FT_UINT32 , BASE_DEC , VALS ( q932_NetworkProtocolProfile_U_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_InterpretationComponent_PDU ,
{ " InterpretationComponent " , " q932.InterpretationComponent " ,
2007-12-06 11:23:35 +00:00
FT_UINT32 , BASE_DEC , VALS ( q932_InterpretationComponent_U_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationAlIowedAddress ,
2013-05-27 20:26:49 +00:00
{ " presentationAlIowedAddress " , " q932.presentationAlIowedAddress_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" AddressScreened " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationRestricted ,
2013-05-27 20:26:49 +00:00
{ " presentationRestricted " , " q932.presentationRestricted_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 03:53:31 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_numberNotAvailableDueTolnterworking ,
2013-05-27 20:26:49 +00:00
{ " numberNotAvailableDueTolnterworking " , " q932.numberNotAvailableDueTolnterworking_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 03:53:31 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationRestrictedAddressScreened ,
2013-05-27 20:26:49 +00:00
{ " presentationRestrictedAddress " , " q932.presentationRestrictedAddress_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" AddressScreened " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationAllowedAddress ,
2013-05-27 20:26:49 +00:00
{ " presentationAllowedAddress " , " q932.presentationAllowedAddress_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" Address " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationRestrictedAddress ,
2013-05-27 20:26:49 +00:00
{ " presentationRestrictedAddress " , " q932.presentationRestrictedAddress_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" Address " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationAllowedNumberScreened ,
2013-05-27 20:26:49 +00:00
{ " presentationAllowedNumber " , " q932.presentationAllowedNumber_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberScreened " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_numberNotAvailableDueToInterworking ,
2013-05-27 20:26:49 +00:00
{ " numberNotAvailableDueToInterworking " , " q932.numberNotAvailableDueToInterworking_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 03:53:31 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationRestrictedNumberScreened ,
2013-05-27 20:26:49 +00:00
{ " presentationRestrictedNumber " , " q932.presentationRestrictedNumber_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberScreened " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationAllowedNumber ,
{ " presentationAllowedNumber " , " q932.presentationAllowedNumber " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartyNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" PartyNumber " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_presentationRestrictedNumber ,
{ " presentationRestrictedNumber " , " q932.presentationRestrictedNumber " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartyNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" PartyNumber " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_partyNumber ,
{ " partyNumber " , " q932.partyNumber " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartyNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_screeninglndicator ,
{ " screeninglndicator " , " q932.screeninglndicator " ,
FT_UINT32 , BASE_DEC , VALS ( q932_ScreeningIndicator_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" ScreeningIndicator " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_partySubaddress ,
{ " partySubaddress " , " q932.partySubaddress " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartySubaddress_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_screeningIndicator ,
{ " screeningIndicator " , " q932.screeningIndicator " ,
FT_UINT32 , BASE_DEC , VALS ( q932_ScreeningIndicator_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_unknownPartyNumber ,
{ " unknownPartyNumber " , " q932.unknownPartyNumber " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_publicPartyNumber ,
2013-05-27 20:26:49 +00:00
{ " publicPartyNumber " , " q932.publicPartyNumber_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_nsapEncodedNumber ,
{ " nsapEncodedNumber " , " q932.nsapEncodedNumber " ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
FT_BYTES , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_dataPartyNumber ,
{ " dataPartyNumber " , " q932.dataPartyNumber " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_telexPartyNumber ,
{ " telexPartyNumber " , " q932.telexPartyNumber " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_privatePartyNumber ,
2013-05-27 20:26:49 +00:00
{ " privatePartyNumber " , " q932.privatePartyNumber_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_nationalStandardPartyNumber ,
{ " nationalStandardPartyNumber " , " q932.nationalStandardPartyNumber " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_publicTypeOfNumber ,
{ " publicTypeOfNumber " , " q932.publicTypeOfNumber " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PublicTypeOfNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_publicNumberDigits ,
{ " publicNumberDigits " , " q932.publicNumberDigits " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_privateTypeOfNumber ,
{ " privateTypeOfNumber " , " q932.privateTypeOfNumber " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PrivateTypeOfNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_privateNumberDigits ,
{ " privateNumberDigits " , " q932.privateNumberDigits " ,
FT_STRING , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" NumberDigits " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_userSpecifiedSubaddress ,
2013-05-27 20:26:49 +00:00
{ " userSpecifiedSubaddress " , " q932.userSpecifiedSubaddress_element " ,
2007-04-27 08:10:18 +00:00
FT_NONE , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_nSAPSubaddress ,
{ " nSAPSubaddress " , " q932.nSAPSubaddress " ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
FT_BYTES , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_subaddressInformation ,
{ " subaddressInformation " , " q932.subaddressInformation " ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
FT_BYTES , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
NULL , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_oddCountIndicator ,
{ " oddCountIndicator " , " q932.oddCountIndicator " ,
2009-06-26 03:59:01 +00:00
FT_BOOLEAN , BASE_NONE , NULL , 0 ,
2010-05-11 02:51:39 +00:00
" BOOLEAN " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_sourceEntity ,
{ " sourceEntity " , " q932.sourceEntity " ,
FT_UINT32 , BASE_DEC , VALS ( q932_EntityType_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" EntityType " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_sourceEntityAddress ,
{ " sourceEntityAddress " , " q932.sourceEntityAddress " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartyNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" AddressInformation " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_destinationEntity ,
{ " destinationEntity " , " q932.destinationEntity " ,
FT_UINT32 , BASE_DEC , VALS ( q932_EntityType_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" EntityType " , HFILL } } ,
2007-04-27 08:10:18 +00:00
{ & hf_q932_destinationEntityAddress ,
{ " destinationEntityAddress " , " q932.destinationEntityAddress " ,
FT_UINT32 , BASE_DEC , VALS ( q932_PartyNumber_vals ) , 0 ,
2010-05-11 02:51:39 +00:00
" AddressInformation " , HFILL } } ,
2007-04-27 08:10:18 +00:00
/*--- End of included file: packet-q932-hfarr.c ---*/
2016-03-09 03:17:51 +00:00
# line 313 ". / asn1 / q932 / packet-q932-template.c"
2007-04-27 08:10:18 +00:00
} ;
/* List of subtrees */
static gint * ett [ ] = {
& ett_q932 ,
& ett_q932_ie ,
/*--- Included file: packet-q932-ettarr.c ---*/
2016-03-09 03:17:51 +00:00
# line 1 ". / asn1 / q932 / packet-q932-ettarr.c"
2007-04-27 08:10:18 +00:00
& ett_q932_PresentedAddressScreened ,
& ett_q932_PresentedAddressUnscreened ,
& ett_q932_PresentedNumberScreened ,
& ett_q932_PresentedNumberUnscreened ,
& ett_q932_AddressScreened ,
& ett_q932_NumberScreened ,
& ett_q932_Address ,
& ett_q932_PartyNumber ,
& ett_q932_PublicPartyNumber ,
& ett_q932_PrivatePartyNumber ,
& ett_q932_PartySubaddress ,
& ett_q932_UserSpecifiedSubaddress ,
& ett_q932_NetworkFacilityExtension_U ,
/*--- End of included file: packet-q932-ettarr.c ---*/
2016-03-09 03:17:51 +00:00
# line 320 ". / asn1 / q932 / packet-q932-template.c"
2014-08-08 13:19:29 +00:00
} ;
static ei_register_info ei [ ] = {
{ & ei_q932_dse_not_supported , { " q932.dse_not_supported " , PI_UNDECODED , PI_WARN , " DSE APDU (not supported) " , EXPFILL } } ,
{ & ei_q932_acse_not_supported , { " q932.acse_not_supported " , PI_UNDECODED , PI_WARN , " ACSE APDU (not supported) " , EXPFILL } } ,
{ & ei_q932_unknown_component , { " q932.unknown_component " , PI_UNDECODED , PI_WARN , " Unknown Component " , EXPFILL } } ,
{ & ei_q932_asn1_encoded , { " q932.asn1_encoded " , PI_UNDECODED , PI_WARN , " ASN.1 Encoded Data Structure(NOT IMPLEMENTED) " , EXPFILL } } ,
2013-02-17 19:28:59 +00:00
} ;
2014-08-08 13:19:29 +00:00
module_t * q932_module ;
expert_module_t * expert_q932 ;
2013-02-17 19:28:59 +00:00
static const enum_val_t facility_encoding [ ] = {
2016-01-02 00:31:51 +00:00
{ " Facility as QSIG " , " Dissect facility as QSIG " , FACILITY_QSIG } ,
{ " Facility as ETSI " , " Dissect facility as ETSI " , FACILITY_ETSI } ,
2013-02-17 19:28:59 +00:00
{ NULL , NULL , - 1 }
2007-04-27 08:10:18 +00:00
} ;
/* Register protocol and dissector */
proto_q932 = proto_register_protocol ( PNAME , PSNAME , PFNAME ) ;
2015-12-09 02:06:20 +00:00
register_dissector ( " q932.apdu " , dissect_q932_apdu , proto_q932 ) ;
2007-04-27 08:10:18 +00:00
/* Register fields and subtrees */
proto_register_field_array ( proto_q932 , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
2014-08-08 13:19:29 +00:00
expert_q932 = expert_register_protocol ( proto_q932 ) ;
expert_register_field_array ( expert_q932 , ei , array_length ( ei ) ) ;
2007-04-27 08:10:18 +00:00
2007-07-18 13:15:36 +00:00
rose_ctx_init ( & q932_rose_ctx ) ;
2007-04-27 08:10:18 +00:00
/* Register dissector tables */
2016-08-30 22:51:54 +00:00
q932_rose_ctx . arg_global_dissector_table = register_dissector_table ( " q932.ros.global.arg " , " Q.932 Operation Argument (global opcode) " , proto_q932 , FT_STRING , BASE_NONE ) ;
q932_rose_ctx . res_global_dissector_table = register_dissector_table ( " q932.ros.global.res " , " Q.932 Operation Result (global opcode) " , proto_q932 , FT_STRING , BASE_NONE ) ;
q932_rose_ctx . err_global_dissector_table = register_dissector_table ( " q932.ros.global.err " , " Q.932 Error (global opcode) " , proto_q932 , FT_STRING , BASE_NONE ) ;
2013-02-17 19:28:59 +00:00
2016-08-30 22:51:54 +00:00
qsig_arg_local_dissector_table = register_dissector_table ( " q932.ros.local.arg " , " Q.932 Operation Argument (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
qsig_res_local_dissector_table = register_dissector_table ( " q932.ros.local.res " , " Q.932 Operation Result (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
qsig_err_local_dissector_table = register_dissector_table ( " q932.ros.local.err " , " Q.932 Error (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
2013-02-17 19:28:59 +00:00
2016-08-30 22:51:54 +00:00
etsi_arg_local_dissector_table = register_dissector_table ( " q932.ros.etsi.local.arg " , " Q.932 ETSI Operation Argument (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
etsi_res_local_dissector_table = register_dissector_table ( " q932.ros.etsi.local.res " , " Q.932 ETSI Operation Result (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
etsi_err_local_dissector_table = register_dissector_table ( " q932.ros.etsi.local.err " , " Q.932 ETSI Error (local opcode) " , proto_q932 , FT_UINT32 , BASE_HEX ) ;
2013-02-17 19:28:59 +00:00
q932_module = prefs_register_protocol ( proto_q932 , proto_reg_handoff_q932 ) ;
prefs_register_enum_preference ( q932_module , " facility_encoding " ,
" Type of Facility encoding " ,
" Type of Facility encoding " ,
& g_facility_encoding , facility_encoding , FALSE ) ;
2007-04-27 08:10:18 +00:00
}
/*--- proto_reg_handoff_q932 ------------------------------------------------*/
void proto_reg_handoff_q932 ( void ) {
dissector_handle_t q932_ie_handle ;
2013-02-17 19:28:59 +00:00
static gboolean q931_prefs_initialized = FALSE ;
2007-04-27 08:10:18 +00:00
2013-02-17 19:28:59 +00:00
if ( ! q931_prefs_initialized ) {
2015-12-09 02:06:20 +00:00
q932_ie_handle = create_dissector_handle ( dissect_q932_ie , proto_q932 ) ;
2013-02-17 19:28:59 +00:00
/* Facility */
2014-02-26 19:29:17 +00:00
dissector_add_uint ( " q931.ie " , ( 0x00 < < 8 ) | Q932_IE_FACILITY , q932_ie_handle ) ;
2013-02-17 19:28:59 +00:00
/* Notification indicator */
dissector_add_uint ( " q931.ie " , ( 0x00 < < 8 ) | Q932_IE_NOTIFICATION_INDICATOR , q932_ie_handle ) ;
2016-03-16 13:02:52 +00:00
q932_ros_handle = find_dissector_add_dependency ( " q932.ros " , proto_q932 ) ;
2013-02-17 19:28:59 +00:00
}
2016-01-02 00:31:51 +00:00
if ( g_facility_encoding = = FACILITY_QSIG ) {
2013-02-17 19:28:59 +00:00
q932_rose_ctx . arg_local_dissector_table = qsig_arg_local_dissector_table ;
q932_rose_ctx . res_local_dissector_table = qsig_res_local_dissector_table ;
q932_rose_ctx . err_local_dissector_table = qsig_err_local_dissector_table ;
} else {
q932_rose_ctx . arg_local_dissector_table = etsi_arg_local_dissector_table ;
q932_rose_ctx . res_local_dissector_table = etsi_res_local_dissector_table ;
q932_rose_ctx . err_local_dissector_table = etsi_err_local_dissector_table ;
}
2014-02-26 19:29:17 +00:00
2007-04-27 08:10:18 +00:00
}
2007-04-28 22:22:35 +00:00
/*---------------------------------------------------------------------------*/