diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-01-13 16:08:30 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-01-13 16:08:30 +0000 |
commit | 2ddd0fdf0a0353d1f44fbe4fdf8444570bf2a88c (patch) | |
tree | 353e923b5157ecadb1fb2746a08fab76797beefe /asn1/ansi_map | |
parent | 6fd190ecec3c8f14594f8468ef8c5a3638ef7287 (diff) |
Handle zero length invokes and some asn1 fixes.
svn path=/trunk/; revision=20418
Diffstat (limited to 'asn1/ansi_map')
-rw-r--r-- | asn1/ansi_map/ansi_map.asn | 14 | ||||
-rw-r--r-- | asn1/ansi_map/ansi_map.cnf | 40 |
2 files changed, 42 insertions, 12 deletions
diff --git a/asn1/ansi_map/ansi_map.asn b/asn1/ansi_map/ansi_map.asn index 5a98e4117c..caa9f4fbd0 100644 --- a/asn1/ansi_map/ansi_map.asn +++ b/asn1/ansi_map/ansi_map.asn @@ -1677,7 +1677,7 @@ LocationRequest ::= [PRIVATE 18] SET { -- O 6.5.2.i h transactionCapability [123] IMPLICIT TransactionCapability OPTIONAL, -- O 6.5.2.160 e - triggerType [279] IMPLICIT TriggerType, + triggerType [279] IMPLICIT TriggerType OPTIONAL, -- O 6.5.2.dh f winCapability [280] IMPLICIT WINCapability OPTIONAL, -- O 6.5.2.di @@ -2510,7 +2510,9 @@ SMSDeliveryPointToPoint ::= [PRIVATE 18] SET { -- mobileIdentificationNumber [8] IMPLICIT MobileIdentificationNumber OPTIONAL, -- O 6.5.2.81 a -- Exchanged by MSID - msid MSID OPTIONAL, +-- msid MSID OPTIONAL, + imsi [242] IMPLICIT IMSI OPTIONAL, + mobileIdentificationNumber [8] IMPLICIT MobileIdentificationNumber OPTIONAL, --6.5.2.bv newlyAssignedMIN [187] IMPLICIT NewlyAssignedMIN OPTIONAL, -- O 6.5.2.rB j @@ -2552,7 +2554,7 @@ SMSDeliveryPointToPointRes ::= [PRIVATE 18] SET { -- O 6.5.2.63 d mobileStationMSID MobileStationMSID OPTIONAL, -- O 6.5.2.oC e - mscid [21] IMPLICIT MSCID, + mscid [21] IMPLICIT MSCID OPTIONAL, -- O 6.5.2.82 f sms-BearerData [105] IMPLICIT SMS-BearerData OPTIONAL, -- O 6.5.2.124 a @@ -2634,7 +2636,7 @@ TransferToNumberRequest ::= [PRIVATE 18] SET { -- (MSC) M 6.5.2.147 acgencountered [340] IMPLICIT ACGEncountered OPTIONAL, -- O 6.5.2.fv h - billingID [1] IMPLICIT BillingID, + billingID [1] IMPLICIT BillingID OPTIONAL, -- (Originating) O 6.5.2.16 a callingPartyName [243] IMPLICIT CallingPartyName OPTIONAL, -- O 6.5.2.bw r, u, v @@ -5382,8 +5384,8 @@ SMS-OriginationRestrictions ::= OCTET STRING -- N.S0005-0 v 1.0 -- 1 0 0 1 1 1 1 1 (0x9f) -- 0 1 1 1 0 1 0 0 (0x74)(116) --- SMS-TeleserviceIdentifier ::= OCTET STRING -SMS-TeleserviceIdentifier ::= INTEGER +SMS-TeleserviceIdentifier ::= OCTET STRING +-- SMS-TeleserviceIdentifier ::= INTEGER -- 6.5.2.138 -- 1 0 0 1 1 1 1 1 (0x9f) diff --git a/asn1/ansi_map/ansi_map.cnf b/asn1/ansi_map/ansi_map.cnf index 0a51315348..c8b0c77bd5 100644 --- a/asn1/ansi_map/ansi_map.cnf +++ b/asn1/ansi_map/ansi_map.cnf @@ -20,6 +20,29 @@ OriginationRequestRes #.FIELD_RENAME #.FN_BODY InvokeParameters + gint *opcode; + struct tcap_private_t * p_private_tcap; + + /* Data from the TCAP dissector */ + if (pinfo->private_data != NULL){ + p_private_tcap=pinfo->private_data; + opcode = g_malloc(sizeof(gint)); + OperationCode = OperationCode&0x00ff; + *opcode = OperationCode; + if (!pinfo->fd->flags.visited) + /* Only do this once XXX I hope its the right thing to do */ + g_hash_table_insert(TransactionId_table, g_strdup(p_private_tcap->TransactionID_str), opcode); + } + + ansi_map_is_invoke = TRUE; + if (check_col(pinfo->cinfo, COL_INFO)){ + col_set_str(pinfo->cinfo, COL_INFO, val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)")); + } + /* No Data */ + if(tvb_length_remaining(tvb, offset)<=0){ + return offset; + + } proto_tree_add_item(tree, hf_ansi_map_invokeParameters, tvb, offset,-1,FALSE); offset = dissect_invokeData(pinfo, tree, tvb, offset); @@ -301,14 +324,19 @@ OriginationRequestRes # 6.5.2.137 # N.S0005-0 v 1.0 -#.FN_BODY SMS-TeleserviceIdentifier VAL_PTR = &ansi_map_sms_tele_id +#.FN_BODY SMS-TeleserviceIdentifier VAL_PTR = ¶meter_tvb + +tvbuff_t *parameter_tvb = NULL; static gint32 ansi_map_sms_tele_id = -1; %(DEFAULT_BODY)s - if ((ansi_map_sms_tele_id != -1)&&(SMS_BearerData_tvb !=NULL)) - { - dissector_try_port(is637_tele_id_dissector_table, ansi_map_sms_tele_id, SMS_BearerData_tvb, g_pinfo, g_tree); - ansi_map_sms_tele_id = -1; + if (parameter_tvb){ + ansi_map_sms_tele_id = tvb_get_ntohs(tvb,0); + if ((ansi_map_sms_tele_id != -1)&&(SMS_BearerData_tvb !=NULL)) + { + dissector_try_port(is637_tele_id_dissector_table, ansi_map_sms_tele_id, SMS_BearerData_tvb, g_pinfo, g_tree); + ansi_map_sms_tele_id = -1; + } } # 6.5.2.146 SystemCapabilities */ @@ -418,7 +446,7 @@ SMS-AccessDeniedReason TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi SMS-CauseCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_SMS_CauseCode_vals) SMS-ChargeIndicator TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_SMS_ChargeIndicator_vals) SMS-NotificationIndicator TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_SMS_NotificationIndicator_vals) -SMS-TeleserviceIdentifier TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_SMS_TeleserviceIdentifier_vals) +#SMS-TeleserviceIdentifier TYPE = FT_UINT16 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_SMS_TeleserviceIdentifier_vals) TDMABandwidth TYPE = FT_UINT8 DISPLAY = BASE_DEC BITMASK = 0x0f STRINGS = VALS(ansi_map_TDMABandwidth_vals) TDMAServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_TDMAServiceCode_vals) OTASP-ResultCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_OTASP_ResultCode_vals) |