ISUP - Export functions used by INAP and Camel

Gsmmap - Export asn1 structs used by Camel
Camel - Use functions from GSMMAp and ISUP
INAP - Rewrite of the asn1 code to correspond more to CS1 data types
          Let ISUP and Q931 dissect apropriate stuff.

svn path=/trunk/; revision=16624
This commit is contained in:
Anders Broman 2005-11-29 17:23:50 +00:00
parent 37df4d6886
commit f082fe8ecf
12 changed files with 6807 additions and 3603 deletions

View File

@ -440,10 +440,11 @@ BCSM-Failure ::= SEQUENCE {
-- locally refd 2 times, import refd 0 times
BearerCapability ::= CHOICE
{
bearerCap [0]
OCTET STRING (SIZE (2..cAPSpecificBoundSetmaxBearerCapabilityLength ))
bearerCap [0] BearerCap
}
BearerCap ::= OCTET STRING (SIZE (2..cAPSpecificBoundSetmaxBearerCapabilityLength ))
-- Indicates the type of bearer capability connection to the user. For bearerCap, the ISUP User
-- Service Information, ETSI EN 300 356-1 [23]
-- encoding shall be used.

View File

@ -216,6 +216,67 @@ tvbuff_t *parameter_tvb;
return 7; /* 7 octets eaten*/
#.FN_PARS BearerCap
VAL_PTR = &parameter_tvb
#.FN_BODY BearerCap
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), tree);
#.FN_PARS RedirectionInformation
VAL_PTR = &parameter_tvb
#.FN_BODY RedirectionInformation
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_redirection_information_parameter(parameter_tvb, tree, NULL);
#.FN_PARS OriginalCalledPartyID
VAL_PTR = &parameter_tvb
#.FN_BODY OriginalCalledPartyID
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_original_called_number_parameter(parameter_tvb, tree, NULL);
#.FN_PARS RedirectingPartyID
VAL_PTR = &parameter_tvb
#.FN_BODY RedirectingPartyID
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_redirecting_number_parameter(parameter_tvb, tree, NULL);
#.TYPE_ATTR
CallingPartysCategory TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(isup_calling_partys_category_value)
#.END

View File

@ -1,11 +1,27 @@
#.IMPORT_TAG
SupportedCamelPhases BER_CLASS_UNI BER_UNI_TAG_BITSTRING
ISDN-AddressString BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
QoS-Subscribed BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
Ext-QoS-Subscribed BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
Ext2-QoS-Subscribed BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
LSAIdentity BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
SS-Status BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
CUG-Info BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
CUG-Index BER_CLASS_UNI BER_UNI_TAG_INTEGER
CUG-Interlock BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
NotificationToMSUser BER_CLASS_UNI BER_UNI_TAG_ENUMERATED
AlertingPattern BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
IMSI BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
IMEI BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
LCSClientExternalID BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
LCSServiceTypeID BER_CLASS_UNI BER_UNI_TAG_INTEGER
CellGlobalIdOrServiceAreaIdFixedLength BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
LocationInformation BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
RAIdentity BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
GeographicalInformation BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
SubscriberState BER_CLASS_ANY/*choice*/ -1/*choice*/
GPRSChargingID BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
UU-Data BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
RegisterSS-Arg BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
SS-Info BER_CLASS_ANY/*choice*/ -1/*choice*/
InterrogateSS-Res BER_CLASS_ANY/*choice*/ -1/*choice*/
@ -20,9 +36,12 @@ CurrentPassword BER_CLASS_UNI BER_UNI_TAG_NumericString
RegisterCC-EntryRes BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
EraseCC-EntryArg BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
EraseCC-EntryRes BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
MS-Classmark2 BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
OfferedCamel4Functionalities BER_CLASS_UNI BER_UNI_TAG_BITSTRING
SS-ForBS-Code BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
CCBS-Feature BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
AgeOfLocationInformation BER_CLASS_UNI BER_UNI_TAG_INTEGER
Ext-BasicServiceCode BER_CLASS_ANY/*choice*/ -1/*choice*/
AddressString BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
ISDN-SubaddressString BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
GSN-Address BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING
@ -43,13 +62,29 @@ ExtensionContainer BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
#.END
#.TYPE_ATTR
SupportedCamelPhases TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
ISDN-AddressString TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
QoS-Subscribed TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
Ext-QoS-Subscribed TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
Ext2-QoS-Subscribed TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
LSAIdentity TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
SS-Status TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
CUG-Info TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
CUG-Index TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
CUG-Interlock TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
NotificationToMSUser TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_NotificationToMSUser_vals) BITMASK = 0
AlertingPattern TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
IMSI TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
IMEI TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
LCSClientExternalID TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
LCSServiceTypeID TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
CellGlobalIdOrServiceAreaIdFixedLength TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
LocationInformation TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
RAIdentity TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
GeographicalInformation TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
SubscriberState TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_SubscriberState_vals) BITMASK = 0
GPRSChargingID TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
UU-Data TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
RegisterSS-Arg TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
SS-Info TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_SS_Info_vals) BITMASK = 0
InterrogateSS-Res TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_InterrogateSS_Res_vals) BITMASK = 0
@ -64,9 +99,12 @@ CurrentPassword TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
RegisterCC-EntryRes TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
EraseCC-EntryArg TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
EraseCC-EntryRes TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
MS-Classmark2 TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
OfferedCamel4Functionalities TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
SS-ForBS-Code TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
CCBS-Feature TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
AgeOfLocationInformation TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
Ext-BasicServiceCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_Ext_BasicServiceCode_vals) BITMASK = 0
AddressString TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
ISDN-SubaddressString TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
GSN-Address TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0

File diff suppressed because it is too large Load Diff

View File

@ -17,35 +17,95 @@
#.FIELD_RENAME
#.FN_BODY Connectarg/redirectingPartyIDXX
#.FN_PARS CalledPartyNumber
VAL_PTR = &parameter_tvb
proto_item* parameter_item;
guint8 class;
gboolean pc, ind;
guint32 tag;
guint32 len;
tvbuff_t *cgpn_tvb;
#.FN_BODY CalledPartyNumber
tvbuff_t *parameter_tvb;
offset = dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag);
offset = dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind);
cgpn_tvb = tvb_new_subset(tvb, 2, len, len );
parameter_item = proto_tree_add_text(tree, cgpn_tvb, offset,-1,"");
dissect_isup_called_party_number_parameter(cgpn_tvb, tree, parameter_item);
offset+=len;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_called_party_number_parameter(parameter_tvb, tree, NULL);
#.FN_PARS CallingPartyNumber
VAL_PTR = &parameter_tvb
#.FN_BODY CallingPartyNumber
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_calling_party_number_parameter(parameter_tvb, tree, NULL);
#.FN_PARS BearerCap
VAL_PTR = &parameter_tvb
#.FN_BODY BearerCap
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_q931_bearer_capability_ie(parameter_tvb, 0, tvb_length_remaining(parameter_tvb,0), tree);
#.FN_PARS RedirectionInformation
VAL_PTR = &parameter_tvb
#.FN_BODY RedirectionInformation
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_redirection_information_parameter(parameter_tvb, tree, NULL);
#.FN_PARS OriginalCalledPartyID
VAL_PTR = &parameter_tvb
#.FN_BODY OriginalCalledPartyID
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_original_called_number_parameter(parameter_tvb, tree, NULL);
#.FN_PARS RedirectingPartyID
VAL_PTR = &parameter_tvb
#.FN_BODY RedirectingPartyID
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
if (!parameter_tvb)
return offset;
dissect_isup_redirecting_number_parameter(parameter_tvb, tree, NULL);
#.FN_BODY InitialDP/dialledDigitsxxx
proto_item* parameter_item;
proto_item* parameter_tree;
guint8 class;
tvbuff_t *cgpn_tvb;
parameter_item = proto_tree_add_item(tree, hf_index, tvb, offset, -1, FALSE);
parameter_tree = proto_item_add_subtree(parameter_item, ett_inapisup_parameter);
cgpn_tvb = tvb_new_subset(tvb, offset,-1 , -1 );
dissect_isup_called_party_number_parameter(cgpn_tvb, parameter_tree, parameter_item);
#.TYPE_ATTR
#Ss-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals)
#Teleservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals)
CallingPartysCategory TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(isup_calling_partys_category_value)
#.END

View File

@ -22,6 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* References: ETSI 300 374
* ITU Q.1218
*/
#ifdef HAVE_CONFIG_H
@ -40,8 +41,9 @@
#include "packet-inap.h"
#include "packet-q931.h"
#include "packet-e164.h"
#include "packet-isup.h"
#define PNAME "INAP"
#define PNAME "Intelligent Network Application Protocol"
#define PSNAME "INAP"
#define PFNAME "inap"
@ -53,8 +55,8 @@ static int hf_inap_linkedid = -1; /* INTEGER */
static int hf_inap_absent = -1; /* NULL */
static int hf_inap_invokeId = -1; /* InvokeId */
static int hf_inap_invoke = -1; /* InvokePDU */
static int hf_inap_ReturnError = -1; /* InvokePDU */
static int hf_inap_returnResult = -1; /* InvokePDU */
static int hf_inap_ReturnError = -1; /* InvokePDU */
static int hf_inap_returnResult = -1; /* InvokePDU */
static int hf_inap_returnResult_result = -1;
static int hf_inap_getPassword = -1;
static int hf_inap_currentPassword = -1;
@ -86,25 +88,61 @@ static int dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
const value_string inap_opr_code_strings[] = {
{16, "AssistRequestInstructions"},
{44, "CallInformationReport"},
{45, "CallInformationRequest"},
{53, "Cancel"},
{20, "Connect"},
{18, "DisconnectForwardConnection"},
{19,"ConnectToResource"},
{17,"EstablishTemporaryConnection"},
{24,"EventReportBCSM"},
{34,"FurnishChargingInformation"},
{0,"InitialDP"},
{1, "OriginationAttemptAuthorized"},
{2, "CollectedInformation"},
{3, "AnalysedInformation"},
{4, "RouteSelectFailure"},
{5, "oCalledPartyBusy"},
{6, "oNoAnswer"},
{7, "oAnswer"},
{8, "oDisconnect"},
{9, "TermAttemptAuthorized"},
{10, "tBusy"},
{11, "tNoAnswer"},
{12, "tAnswer"},
{13, "tDisconnect"},
{14, "oMidCall"},
{15, "tMidCall"},
{16, "AssistRequestInstructions"},
{17,"EstablishTemporaryConnection"},
{18, "DisconnectForwardConnection"},
{19,"ConnectToResource"},
{20, "Connect"},
{21,"HoldCallInNetwork"},
{22, "ReleaseCall"},
{23, "RequestReportBCSMEven"},
{23,"RequestReportBCSMEvent"},
{24,"EventReportBCSM"},
{25, "RequestNotificationChargingEvent"},
{26, "EventNotificationCharging"},
{27, "CollectInformation"},
{28, "AnalyseInformation"},
{29, "SelectRoute"},
{30, "SelectFacility"},
{31, "Continue"},
{32, "InitiateCallAttempt"},
{33,"ResetTimer"},
{34,"FurnishChargingInformation"},
{35, "ApplyCharging"},
{36, "ApplyChargingReport"},
{37, "RequestCurrentStatusReport"},
{38, "RequestEveryStatusChangeReport"},
{39, "RequestFirstStatusMatchReport"},
{40, "StatusReport"},
{41, "CallGap"},
{42, "ActivateServiceFiltering"},
{43, "ServiceFilteringResponse"},
{44, "CallInformationReport"},
{45, "CallInformationRequest"},
{46, "SendChargingInformation"},
{47,"PlayAnnouncement"},
{48,"PromptAndCollectUserInformation"},
{99,"ReceivedInformation"}, /*???????*/
{33,"ResetTimer"},
{23,"RequestReportBCSMEvent"},
{49,"SpecializedResourceReport"},
{22,"ReleaseCall"},
{0, NULL}
{53, "Cancel"},
{55, "ActivityTest"},
{99,"ReceivedInformation"}, /*???????*/
{0, NULL}
};
const value_string inap_error_code_strings[] = {
@ -124,6 +162,7 @@ const value_string inap_error_code_strings[] = {
{15,"UnexpectedDataValue"},
{16,"UnexpectedParameter"},
{17,"UnknownLegID"},
{18,"UnknownResource"},
{0, NULL}
};
@ -162,59 +201,114 @@ dissect_inap_errorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac
return offset;
}
/*
TC-Invokable OPERATION ::=
{activateServiceFiltering | activityTest | analysedInformation |
analyseInformation | applyCharging | applyChargingReport |
assistRequestInstructions | callGap | callInformationReport |
callInformationRequest | cancel | cancelStatusReportRequest |
collectedInformation | collectInformation | connect | connectToResource |
continue | disconnectForwardConnection | establishTemporaryConnection |
eventNotificationCharging | eventReportBCSM | furnishChargingInformation |
holdCallInNetwork | initialDP | initiateCallAttempt | oAnswer |
oCalledPartyBusy | oDisconnect | oMidCall | oNoAnswer |
originationAttemptAuthorized | releaseCall | requestCurrentStatusReport |
requestEveryStatusChangeReport | requestFirstStatusMatchReport |
requestNotificationChargingEvent | requestReportBCSMEvent | resetTimer |
routeSelectFailure | selectFacility | selectRoute | sendChargingInformation
| serviceFilteringResponse | statusReport | tAnswer | tBusy | tDisconnect |
termAttemptAuthorized | tMidCall | tNoAnswer | playAnnouncement |
promptAndCollectUserInformation}
*/
static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
switch(opcode){
case 0: /*InitialDP*/
offset=dissect_inap_InitialDP(FALSE, tvb, offset, pinfo, tree, -1);
break;
/*1 OriginationAttemptAuthorized */
/*2 CollectedInformation */
/*3 AnalysedInformation */
/*4 RouteSelectFailure */
/*5 oCalledPartyBusy */
/*6 oNoAnswer */
/*7 oAnswer */
/*8 oDisconnect */
/*9 TermAttemptAuthorized */
/*10 tBusy */
/*11 tNoAnswer */
/*12 tAnswer */
/*13 tDisconnect */
/*14 oMidCall */
/*15 tMidCall */
case 16: /*AssistRequestInstructions*/
offset=dissect_inap_AssistRequestInstructionsarg(FALSE, tvb, offset, pinfo, tree, -1);
offset=dissect_inap_AssistRequestInstructionsArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 44: /*CallInformationReport*/
offset=dissect_inap_CallInformationReportarg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 45: /*CallInformationRequest*/
offset=dissect_inap_CallInformationRequestarg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 53: /*Cancel*/
offset=dissect_inap_Cancelarg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 20: /*Connect*/
offset=dissect_inap_Connectarg(FALSE, tvb, offset, pinfo, tree, -1);
case 17: /*EstablishTemporaryConnection*/
offset=dissect_inap_EstablishTemporaryConnectionArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 18: /*DisconnectForwardConnections*/
proto_tree_add_text(tree, tvb, offset, -1, "Disconnect Forward Connection");
break;
case 19: /*ConnectToResource*/
offset=dissect_inap_ConnectToResource(FALSE, tvb, offset, pinfo, tree, -1);
offset=dissect_inap_ConnectToResourceArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 17: /*EstablishTemporaryConnection*/
offset=dissect_inap_EstablishTemporaryConnection(FALSE, tvb, offset, pinfo, tree, -1);
case 20: /*Connect*/
offset=dissect_inap_ConnectArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 24: /*EventReportBCSM*/
offset=dissect_inap_EventReportBCSM(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 34: /*FurnishChargingInformation*/
offset=dissect_inap_FurnishChargingInformationarg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 0: /*InitialDP*/
offset=dissect_inap_InitialDP(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 23: /*InitialDP*/
offset=dissect_inap_RequestReportBCSMEvent(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 47: /*PlayAnnouncement*/
offset=dissect_inap_PlayAnnouncement(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 48: /*PromptAndCollectUserInformation*/
offset=dissect_inap_PromptAndCollectUserInformationarg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 33: /*ResetTimer*/
offset=dissect_inap_ResetTimer(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 22: /*ResetTimer*/
/* 21 HoldCallInNetwork */
case 22: /*ReleaseCall*/
offset=dissect_inap_ReleaseCallArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 23: /*InitialDP*/
offset=dissect_inap_RequestReportBCSMEventArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 24: /*EventReportBCSM*/
offset=dissect_inap_EventReportBCSMArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
/*24,"EventReportBCSM */
/*25, "RequestNotificationChargingEvent */
/*26, "EventNotificationCharging */
/*27, "CollectInformation */
/*28, "AnalyseInformation */
/*29, "SelectRoute */
/*30, "SelectFacility */
/*31, "Continue */
/*32, "InitiateCallAttempt*/
case 33: /*ResetTimer*/
offset=dissect_inap_ResetTimerArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 34: /*FurnishChargingInformation*/
offset=dissect_inap_FurnishChargingInformationArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
/*35, "ApplyCharging */
/*36, "ApplyChargingReport */
/*37, "RequestCurrentStatusReport */
/*38, "RequestEveryStatusChangeReport */
/*39, "RequestFirstStatusMatchReport */
/*40, "StatusReport */
/*41, "CallGap */
/*42, "ActivateServiceFiltering */
/*43, "ServiceFilteringResponse */
case 44: /*CallInformationReport*/
offset=dissect_inap_CallInformationReportArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 45: /*CallInformationRequest*/
offset=dissect_inap_CallInformationRequestArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 47: /*PlayAnnouncement*/
offset=dissect_inap_PlayAnnouncementArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 48: /*PromptAndCollectUserInformation*/
offset=dissect_inap_PromptAndCollectUserInformationArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
/* 49 SpecializedResourceReport */
case 53: /*Cancel*/
offset=dissect_inap_CancelArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
/*55 ActivityTest*/
default:
proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
/* todo call the asn.1 dissector */
@ -222,11 +316,27 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
return offset;
}
/*
TC-Returnable OPERATION ::=
{activateServiceFiltering | activityTest | requestCurrentStatusReport |
requestEveryStatusChangeReport | requestFirstStatusMatchReport |
promptAndCollectUserInformation}
activateServiceFiltering - No arg
activityTest - No Arg
requestCurrentStatusReport - RESULT RequestCurrentStatusReportResultArg
requestEveryStatusChangeReport - No arg
requestFirstStatusMatchReport - No Arg
promptAndCollectUserInformation - RESULT ReceivedInformationArg
*/
static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
switch(opcode){
case 37: /*requestCurrentStatusReport*/
offset=dissect_inap_RequestCurrentStatusReportResultArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
case 48: /*PromptAndCollectUserInformation*/
offset=dissect_inap_PromptAndCollectUserInformationres(FALSE, tvb, offset, pinfo, tree, -1);
offset=dissect_inap_ReceivedInformationArg(FALSE, tvb, offset, pinfo, tree, -1);
break;
default:
proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");

File diff suppressed because it is too large Load Diff

View File

@ -1563,7 +1563,7 @@ static const asn_namedbit SupportedCamelPhases_bits[] = {
{ 0, NULL, 0, 0, NULL, NULL }
};
static int
int
dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
SupportedCamelPhases_bits, hf_index, ett_gsm_map_SupportedCamelPhases,
@ -1595,7 +1595,7 @@ static int dissect_supportedCAMELPhases_impl(packet_info *pinfo, proto_tree *tre
static int
int
dissect_gsm_map_IMSI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *parameter_tvb;
@ -2322,7 +2322,7 @@ dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
static int
int
dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@ -4610,7 +4610,7 @@ static int dissect_SS_EventList_item(packet_info *pinfo, proto_tree *tree, tvbuf
}
static const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
{ 2, "ext-BearerService" },
{ 3, "ext-Teleservice" },
{ 0, NULL }
@ -4622,7 +4622,7 @@ static const ber_choice_t Ext_BasicServiceCode_choice[] = {
{ 0, 0, 0, 0, NULL }
};
static int
int
dissect_gsm_map_Ext_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode,
@ -4934,7 +4934,7 @@ static int dissect_preferentialCUG_Indicator(packet_info *pinfo, proto_tree *tre
static int
int
dissect_gsm_map_CUG_Interlock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -5075,7 +5075,7 @@ static const ber_sequence_t CUG_Info_sequence[] = {
{ 0, 0, 0, NULL }
};
static int
int
dissect_gsm_map_CUG_Info(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
CUG_Info_sequence, hf_index, ett_gsm_map_CUG_Info);
@ -6197,7 +6197,7 @@ static int dissect_pdp_Address_impl(packet_info *pinfo, proto_tree *tree, tvbuff
static int
int
dissect_gsm_map_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *parameter_tvb;
@ -6242,7 +6242,7 @@ static int dissect_lcsAPN_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *t
static int
int
dissect_gsm_map_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
tvbuff_t *parameter_tvb;
@ -6290,7 +6290,7 @@ static int dissect_pdp_ChargingCharacteristics_impl(packet_info *pinfo, proto_tr
static int
int
dissect_gsm_map_Ext2_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -6412,7 +6412,7 @@ static int dissect_lsaOnlyAccessIndicator_impl(packet_info *pinfo, proto_tree *t
static int
int
dissect_gsm_map_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8206,7 +8206,7 @@ static int dissect_ageOfLocationEstimate_impl(packet_info *pinfo, proto_tree *tr
static int
int
dissect_gsm_map_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8235,7 +8235,7 @@ static int dissect_locationNumber_impl(packet_info *pinfo, proto_tree *tree, tvb
static int
int
dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8309,7 +8309,7 @@ static const ber_sequence_t LocationInformation_sequence[] = {
{ 0, 0, 0, NULL }
};
static int
int
dissect_gsm_map_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
LocationInformation_sequence, hf_index, ett_gsm_map_LocationInformation);
@ -8321,7 +8321,7 @@ static int dissect_locationInformation_impl(packet_info *pinfo, proto_tree *tree
}
static const value_string gsm_map_SubscriberState_vals[] = {
const value_string gsm_map_SubscriberState_vals[] = {
{ 0, "assumedIdle" },
{ 1, "camelBusy" },
{ 2, "notProvidedFromVLR" },
@ -8335,7 +8335,7 @@ static const ber_choice_t SubscriberState_choice[] = {
{ 0, 0, 0, 0, NULL }
};
static int
int
dissect_gsm_map_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
SubscriberState_choice, hf_index, ett_gsm_map_SubscriberState,
@ -8349,7 +8349,7 @@ static int dissect_subscriberState(packet_info *pinfo, proto_tree *tree, tvbuff_
static int
int
dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8433,7 +8433,7 @@ static int dissect_teid_ForIu_impl(packet_info *pinfo, proto_tree *tree, tvbuff_
static int
int
dissect_gsm_map_GPRSChargingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8558,7 +8558,7 @@ static int dissect_ps_SubscriberState_impl(packet_info *pinfo, proto_tree *tree,
static int
int
dissect_gsm_map_MS_Classmark2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@ -8991,7 +8991,7 @@ static const ber_sequence_t UU_Data_sequence[] = {
{ 0, 0, 0, NULL }
};
static int
int
dissect_gsm_map_UU_Data(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
UU_Data_sequence, hf_index, ett_gsm_map_UU_Data);
@ -10858,7 +10858,7 @@ static const asn_namedbit OfferedCamel4Functionalities_bits[] = {
{ 0, NULL, 0, 0, NULL, NULL }
};
static int
int
dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_OfferedCamel4Functionalities,

View File

@ -50,16 +50,34 @@ extern const value_string ssCode_vals[];
/*--- Included file: packet-gsm_map-exp.h ---*/
extern const value_string gsm_map_NotificationToMSUser_vals[];
extern const value_string gsm_map_SubscriberState_vals[];
extern const value_string gsm_map_SS_Info_vals[];
extern const value_string gsm_map_InterrogateSS_Res_vals[];
extern const value_string gsm_map_GetPasswordArg_vals[];
extern const value_string gsm_map_Ext_BasicServiceCode_vals[];
int dissect_gsm_map_SupportedCamelPhases(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_ISDN_AddressString(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_QoS_Subscribed(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_Ext_QoS_Subscribed(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_Ext2_QoS_Subscribed(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_LSAIdentity(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_SS_Status(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_CUG_Info(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_CUG_Index(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_CUG_Interlock(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_NotificationToMSUser(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_AlertingPattern(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_IMSI(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_IMEI(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_LocationInformation(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_RAIdentity(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_GeographicalInformation(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_SubscriberState(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_GPRSChargingID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_UU_Data(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_RegisterSS_Arg(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_SS_Info(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_InterrogateSS_Res(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
@ -74,9 +92,12 @@ int dissect_gsm_map_CurrentPassword(gboolean implicit_tag, tvbuff_t *tvb, int of
int dissect_gsm_map_RegisterCC_EntryRes(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_EraseCC_EntryArg(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_EraseCC_EntryRes(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_MS_Classmark2(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_OfferedCamel4Functionalities(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_SS_ForBS_Code(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_CCBS_Feature(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_AgeOfLocationInformation(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_Ext_BasicServiceCode(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_AddressString(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_ISDN_SubaddressString(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_gsm_map_GSN_Address(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);

File diff suppressed because it is too large Load Diff

View File

@ -477,7 +477,7 @@ static const value_string isup_SCCP_method_ind_value[] = {
#define DATA_CALL 12
#define TEST_CALL 13
#define PAYPHONE 15
static const value_string isup_calling_partys_category_value[] = {
const value_string isup_calling_partys_category_value[] = {
{ UNKNOWN_AT_THIS_TIME, "Category unknown at this time (national use)"},
{ OPERATOR_FRENCH, "operator, language French"},
{ OPERATOR_ENGLISH, "operator, language English"},
@ -1462,7 +1462,7 @@ dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *
"Called Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 1){
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
@ -2942,6 +2942,9 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
offset = offset + octet - 2;
}
}
if ( offset == (gint)length)
/* No data */
return;
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "APM-user information field" );
/* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
@ -3049,7 +3052,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
/* ------------------------------------------------------------------
Dissector Parameter Original called number
*/
static void
void
dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
@ -3106,7 +3109,7 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
/* ------------------------------------------------------------------
Dissector Parameter Redirecting number
*/
static void
void
dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
proto_item *address_digits_item;
@ -3244,7 +3247,7 @@ dissect_isup_connection_request_parameter(tvbuff_t *parameter_tvb, proto_tree *p
/* ------------------------------------------------------------------
Dissector Parameter Redirection information
*/
static void
void
dissect_isup_redirection_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
if (tvb_length(parameter_tvb) == 2){

View File

@ -133,6 +133,7 @@ ETH_VAR_IMPORT const value_string q850_cause_code_vals[];
extern const value_string isup_parameter_type_value[];
extern const value_string isup_transmission_medium_requirement_value[];
extern const value_string isup_calling_partys_category_value[];
/*
* Export dissection of some parameters
@ -141,5 +142,8 @@ void dissect_nsap(tvbuff_t *parameter_tvb,gint offset,gint len, proto_tree *para
void dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
void dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
void dissect_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
void dissect_isup_redirection_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
void dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
void dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item);
extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int len);