forked from osmocom/wireshark
Add dissection of Charging ASE in ISUP APM messages.
svn path=/trunk/; revision=27405
This commit is contained in:
parent
3f533b4038
commit
cb231972f1
|
@ -29,6 +29,7 @@ SUBDIRS = \
|
|||
ansi-tcap \
|
||||
camel \
|
||||
cdt \
|
||||
charging_ase \
|
||||
cmip \
|
||||
cms \
|
||||
dap \
|
||||
|
|
|
@ -32,6 +32,7 @@ ber: \
|
|||
ansi-tcap \
|
||||
camel \
|
||||
cdt \
|
||||
charging_ase \
|
||||
cmip \
|
||||
cms \
|
||||
dap \
|
||||
|
@ -123,6 +124,9 @@ clean:
|
|||
cd cdt
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
cd charging_ase
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
cd cmip
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
|
@ -377,6 +381,11 @@ cdt::
|
|||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
cd ..
|
||||
|
||||
charging_ase::
|
||||
cd charging_ase
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
cd ..
|
||||
|
||||
cmip::
|
||||
cd cmip
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# 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
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../Makefile.preinc
|
||||
include Makefile.common
|
||||
include ../Makefile.inc
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# 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
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
PROTOCOL_NAME=charging_ase
|
||||
|
||||
DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c \
|
||||
packet-$(PROTOCOL_NAME).h
|
||||
|
||||
NEED_PACKET_PROTO_H = 1
|
||||
|
||||
|
||||
ASN_FILE_LIST = \
|
||||
Tariffing-Data-Types.asn \
|
||||
|
||||
# The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn
|
||||
# files do not exist for all protocols: Please add/remove as required.
|
||||
EXTRA_DIST = \
|
||||
Makefile.nmake \
|
||||
$(ASN_FILE_LIST) \
|
||||
packet-$(PROTOCOL_NAME)-template.c \
|
||||
packet-$(PROTOCOL_NAME)-template.h \
|
||||
$(PROTOCOL_NAME).cnf
|
||||
|
||||
SRC_FILES = \
|
||||
$(EXT_ASN_FILE_LIST) \
|
||||
$(EXTRA_DIST)
|
||||
|
||||
A2W_FLAGS= -b -e
|
||||
|
||||
EXTRA_CNF = \
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
#
|
||||
# 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
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../../config.nmake
|
||||
include ../Makefile.preinc.nmake
|
||||
include Makefile.common
|
||||
include ../Makefile.inc.nmake
|
||||
|
|
@ -0,0 +1,447 @@
|
|||
-- ETSI ES 201 296 V1.3.1 (2003-04)
|
||||
-- $Id$
|
||||
Tariffing-Data-Types {itu-t(0) identified-organization(4) etsi (0) 1296 version3(4)}
|
||||
|
||||
DEFINITIONS IMPLICIT TAGS ::= BEGIN
|
||||
|
||||
-- This module contains the common data type definitions for the charging information used in the
|
||||
-- new ISUP APM application "Charging ASE" and in the INAP charging operations.
|
||||
--
|
||||
--
|
||||
|
||||
EXPORTS
|
||||
|
||||
-- Charging Common Data Types
|
||||
ChargingAcknowledgementInformation ,
|
||||
AddOnChargingInformation ,
|
||||
ChargingTariffInformation ,
|
||||
StartCharging ,
|
||||
StopCharging ,
|
||||
ChargingMessageType
|
||||
|
||||
;
|
||||
|
||||
-- ChargingMessageType Type
|
||||
|
||||
ChargingMessageType ::= CHOICE {
|
||||
crgt [0] ChargingTariffInformation,
|
||||
aocrg [1] AddOnChargingInformation ,
|
||||
crga [2] ChargingAcknowledgementInformation ,
|
||||
start [3] StartCharging ,
|
||||
stop [4] StopCharging }
|
||||
|
||||
-- ChargeUnitTimeInterval Type
|
||||
|
||||
ChargeUnitTimeInterval ::= OCTET STRING (SIZE(2))
|
||||
|
||||
-- The ChargeUnitTimeInterval is binary coded and has the value range from 0 to 35997. It begins with 200 milliseconds and
|
||||
-- then in steps of 50 milliseconds.
|
||||
-- the LSBit is the least significant bit of the first octet
|
||||
-- the MSBit is the most significant bit of the last octet
|
||||
-- the coding of the ChargeUnitTimeInterval is the following:
|
||||
-- 0 : no periodic metering
|
||||
-- 1 : 200 msec
|
||||
-- 2 : 250 msec
|
||||
-- ..
|
||||
-- 35997 : 30 minutes
|
||||
-- All other values are spare.
|
||||
|
||||
-- ChargingAcknowledgementInformation Type
|
||||
|
||||
ChargingAcknowledgementInformation ::= SEQUENCE {
|
||||
acknowledgementIndicators [0] BIT STRING {
|
||||
accepted (0) }
|
||||
(SIZE(minAcknowledgementIndicatorsLen..maxAcknowledgementIndicatorsLen)), extensions [1]
|
||||
SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
|
||||
originationIdentification [2] ChargingReferenceIdentification,
|
||||
destinationIdentification [3] ChargingReferenceIdentification
|
||||
}
|
||||
|
||||
-- Coding of "accepted":
|
||||
-- 0: not accepted.
|
||||
-- 1: accepted.
|
||||
-- The "extensions" is a SEQUENCE for possible extensions.
|
||||
|
||||
-- ChargingControlIndicators Type
|
||||
|
||||
ChargingControlIndicators ::= BIT STRING {
|
||||
subscriberCharge (0),
|
||||
immediateChangeOfActuallyAppliedTariff (1),
|
||||
delayUntilStart (2) }
|
||||
(SIZE(minChargingControlIndicatorsLen..maxChargingControlIndicatorsLen))
|
||||
|
||||
-- Coding of "subscriberCharge":
|
||||
-- 0 - advice-of-charge: charging information only to be used by the advice of charge service.
|
||||
-- 1 - subscriber-charge: charging information to be used by the subscriber charging program.
|
||||
-- Coding of "immediateChangeOfActuallyAppliedTariff":
|
||||
-- 0 - immediate tariff change without restart
|
||||
-- 1 - immediate tariff change with restart
|
||||
-- It is only used to change the actually applied tariff.
|
||||
-- Coding of 'delayUntilStart':
|
||||
-- 0 - start tariffing, if it is not already started, without waiting for the 'start' signal
|
||||
-- 1 – delay start of tariffing up to the receipt of the 'start' signal
|
||||
|
||||
-- AddOnChargingInformation Type
|
||||
|
||||
AddOnChargingInformation ::= SEQUENCE {
|
||||
chargingControlIndicators [0] ChargingControlIndicators ,
|
||||
addOncharge [1] CHOICE {
|
||||
addOnChargeCurrency [0] CurrencyFactorScale ,
|
||||
addOnChargePulse [1] PulseUnits
|
||||
},
|
||||
extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
|
||||
originationIdentification [3] ChargingReferenceIdentification,
|
||||
destinationIdentification [4] ChargingReferenceIdentification OPTIONAL,
|
||||
currency [5] Currency
|
||||
}
|
||||
|
||||
-- This message is used to add an amount of charge for the call and does not alter the current tariff.
|
||||
-- The destinationIdentification is not available in an initial AddOnChargingInformation, in all subsequent ones it is included, see
|
||||
-- "Handling of Identifiers".
|
||||
-- In the message the
|
||||
-- add-on charge has either the pulse or currency format.
|
||||
-- ChargingTariffInformation Type
|
||||
|
||||
ChargingTariffInformation ::= SEQUENCE {
|
||||
chargingControlIndicators [0] ChargingControlIndicators,
|
||||
chargingTariff [1] CHOICE {
|
||||
tariffCurrency [0] TariffCurrency,
|
||||
tariffPulse [1] TariffPulse
|
||||
},
|
||||
extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
|
||||
originationIdentification [3] ChargingReferenceIdentification,
|
||||
destinationIdentification [4] ChargingReferenceIdentification OPTIONAL,
|
||||
currency [5] Currency
|
||||
}
|
||||
|
||||
--This message is used
|
||||
-- to transfer explicit tariff data to the originating subscriber exchange and the charge registration exchange during call
|
||||
-- set-up and also in the active phase of a call.
|
||||
-- The destinationIdentification is not available in an initial ChargingTariffInformation, in all subsequent ones it is included, see
|
||||
-- "Handling of Identifiers".
|
||||
Code ::= CHOICE
|
||||
{
|
||||
local INTEGER,
|
||||
global OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
-- CommunicationChargeCurrency Type
|
||||
|
||||
CommunicationChargeCurrency ::= SEQUENCE {
|
||||
currencyFactorScale [0] CurrencyFactorScale ,
|
||||
tariffDuration [1] TariffDuration ,
|
||||
subTariffControl [2] SubTariffControl }
|
||||
|
||||
-- CommunicationChargePulse Type
|
||||
|
||||
CommunicationChargePulse ::= SEQUENCE {
|
||||
pulseUnits [0] PulseUnits ,
|
||||
chargeUnitTimeInterval [1] ChargeUnitTimeInterval ,
|
||||
tariffDuration [2] TariffDuration }
|
||||
|
||||
-- Criticality Type
|
||||
CriticalityType ::= ENUMERATED {
|
||||
ignore(0),
|
||||
abort(1) }
|
||||
|
||||
-- Currency Type
|
||||
Currency ::= ENUMERATED {
|
||||
noIndication (0),
|
||||
australianDollar (1),
|
||||
austrianSchilling (2),
|
||||
belgianFranc (3),
|
||||
britishPound (4),
|
||||
czechKoruna (5),
|
||||
danishKrone (6),
|
||||
dutchGuilder (7),
|
||||
euro (8),
|
||||
finnishMarkka (9),
|
||||
frenchFranc (10),
|
||||
germanMark (11),
|
||||
greekDrachma (12),
|
||||
hungarianForint (13),
|
||||
irishPunt (14),
|
||||
italianLira (15),
|
||||
japaneseYen (16),
|
||||
luxembourgian-Franc (17),
|
||||
norwegianKrone (18),
|
||||
polishZloty (19),
|
||||
portugeseEscudo (20),
|
||||
russianRouble (21),
|
||||
slovakKoruna (22),
|
||||
spanishPeseta (23),
|
||||
swedishKrone (24),
|
||||
swissFranc (25),
|
||||
turkishLira (26),
|
||||
uSDollar (27),
|
||||
...}
|
||||
|
||||
-- CurrencyFactor Type
|
||||
|
||||
CurrencyFactor ::= INTEGER (0..999999)
|
||||
|
||||
-- Value 0 indicates "no charge".
|
||||
-- CurrencyFactorScale Type
|
||||
|
||||
CurrencyFactorScale ::= SEQUENCE {
|
||||
currencyFactor [0] CurrencyFactor DEFAULT noCharge ,
|
||||
currencyScale [1] CurrencyScale DEFAULT noScale }
|
||||
|
||||
-- The charge amount is indicated by the currency factor multiplied with the currency scale.
|
||||
-- "no charge" indicates CurrencyFactorScale has the value 0.
|
||||
-- CurrencyScale Type
|
||||
|
||||
CurrencyScale ::= INTEGER (-7..3)
|
||||
|
||||
-- The actual value for currency scale is given by 10x, where x is the value of the CurrencyScale.
|
||||
--
|
||||
-- the coding of CurrencyScale is as follows, all other values are spare:
|
||||
-- -7 (249): 0,0000001
|
||||
-- -6 (250): 0,000001
|
||||
-- -5 (251): 0,00001
|
||||
-- -4 (252): 0,0001
|
||||
-- -3 (253): 0,001
|
||||
-- -2 (254): 0,01
|
||||
-- -1 (255): 0,1
|
||||
-- 0 : 1
|
||||
-- 1 : 10
|
||||
-- 2 : 100
|
||||
-- 3 : 1000
|
||||
|
||||
-- Definition of the extension class
|
||||
|
||||
EXTENSION ::= CLASS {
|
||||
&ExtensionType,
|
||||
&criticality CriticalityType DEFAULT ignore,
|
||||
&id Code
|
||||
}
|
||||
WITH SYNTAX {
|
||||
EXTENSION-SYNTAX &ExtensionType
|
||||
CRITICALITY &criticality
|
||||
IDENTIFIED BY &id
|
||||
}
|
||||
-- Example of addition of an extension named 'Some Network Specific Indicator' of type
|
||||
-- BOOLEAN, with criticality 'abort' and to be identified as extension number 1
|
||||
-- Example of definition using the above information object class:
|
||||
--
|
||||
-- SomeNetworkSpecificIndicator EXTENSION ::= {
|
||||
-- EXTENSION-SYNTAX BOOLEAN
|
||||
-- CRITICALITY abort
|
||||
-- IDENTIFIED BY local : 1
|
||||
-- }
|
||||
-- Example of transfer syntax, using the ExtensionField datatype as specified in section 4.1.
|
||||
-- Assuming the value of the extension is set to TRUE, the extensions parameter
|
||||
-- becomes a Sequence of type INTEGER ::= 1, criticality ENUMERATED ::= 1 and value [1]
|
||||
-- EXPLICIT BOOLEAN ::= TRUE.
|
||||
--
|
||||
-- Use of Q.1400 defined Extension is ffs
|
||||
-- In addition the extension mechanism marker is used to identify the future minor additions to INAP.
|
||||
firstExtension EXTENSION ::= {
|
||||
EXTENSION-SYNTAX NULL
|
||||
CRITICALITY ignore
|
||||
IDENTIFIED BY local:1
|
||||
}
|
||||
|
||||
-- firstExtension is just an example.
|
||||
|
||||
SupportedExtensions EXTENSION ::= {firstExtension , ...
|
||||
-- full set of network operator extensions --}
|
||||
-- SupportedExtension is the full set of the network operator extensions.
|
||||
-- ExtensionField Type
|
||||
|
||||
ExtensionField ::= SEQUENCE {
|
||||
type EXTENSION.&id ({SupportedExtensions}),
|
||||
-- shall identify the value of an EXTENSION type
|
||||
criticality CriticalityType DEFAULT ignore,
|
||||
value [1] EXTENSION.&ExtensionType
|
||||
({SupportedExtensions}{@type})
|
||||
}
|
||||
-- This parameter indicates an extension of an argument data type. Its contents is network operator specific.
|
||||
-- PulseUnits Type
|
||||
|
||||
PulseUnits ::= OCTET STRING (SIZE(1))
|
||||
-- the PulseUnits is binary coded and has the value range from 0 to 255
|
||||
-- StartCharging Type
|
||||
StartCharging ::= SEQUENCE {
|
||||
networkOperators [0] SEQUENCE SIZE (1..maxNetworkOperators) OF NetworkIdentification OPTIONAL,
|
||||
extensions [1] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
|
||||
originationIdentification [2] ChargingReferenceIdentification
|
||||
}
|
||||
|
||||
--This message is used
|
||||
-- to start charge generation/registration for one that belongs to one network operator or
|
||||
-- to start charge generation/registration for more tariffs that belong to several network
|
||||
-- operators.
|
||||
-- The corresponding network operator(s) are listed within sub-parameter 'networkOperators'.
|
||||
-- The sub-parameter 'networkOperators' is mandatory in configurations of multiple charge
|
||||
-- determination points.
|
||||
-- If sub-parameter 'networkOperators' is not present in a configuration with only one charge
|
||||
-- determination point, the corresponding tariff is started.
|
||||
-- The 'extensions' is a SEQUENCE for possible extensions.
|
||||
-- StopCharging Type
|
||||
|
||||
StopCharging ::= SEQUENCE {
|
||||
stopIndicators [0] BIT STRING {
|
||||
callAttemptChargesApplicable (0) }
|
||||
(SIZE(minStopIndicatorsLen.. maxStopIndicatorsLen)),
|
||||
networkOperators [1] SEQUENCE SIZE (1..maxNetworkOperators) OF NetworkIdentification OPTIONAL,
|
||||
extensions [2] SEQUENCE SIZE(1..numOfExtensions) OF ExtensionField OPTIONAL,
|
||||
originationIdentification [3] ChargingReferenceIdentification
|
||||
}
|
||||
|
||||
--This message is used to stop charge generation/registration
|
||||
-- for one that belongs to one network operator or
|
||||
-- to stop charge generation/registration for more tariffs that belong to several network operators.
|
||||
-- The corresponding network operator(s) are listed within sub-parameter 'networkOperators'.
|
||||
-- The sub-parameter 'networkOperators' is mandatory in configurations of multiple charge
|
||||
-- determination points.
|
||||
-- If sub-parameter 'networkOperators' is not present in a configuration with only one charge
|
||||
-- determination point, the corresponding tariff is stopped.
|
||||
-- Coding of 'callAttemptChargesApplicable':
|
||||
-- 0 - stop tariffing, call attempt charges are not applicable
|
||||
-- 1 - stop tariffing, call attempt charges are applicable
|
||||
-- The 'extensions' is a SEQUENCE for possible extensions.
|
||||
|
||||
-- SubTariffControl Type
|
||||
|
||||
SubTariffControl ::= BIT STRING {oneTimeCharge (0)}
|
||||
(SIZE(minSubTariffControlLen..maxSubTariffControlLen))
|
||||
-- The coding of the oneTimeCharge is as follows:
|
||||
-- 0 – Periodic charge
|
||||
-- 1 – One time charge
|
||||
minSubTariffControlLen INTEGER ::= 1
|
||||
maxSubTariffControlLen INTEGER ::= 8
|
||||
|
||||
-- TariffCurrency Type
|
||||
|
||||
TariffCurrency ::= SEQUENCE {
|
||||
currentTariffCurrency [0] TariffCurrencyFormat OPTIONAL ,
|
||||
tariffSwitchCurrency [1] TariffSwitchCurrency OPTIONAL
|
||||
}
|
||||
-- TariffSwitchCurrency Type
|
||||
|
||||
TariffSwitchCurrency ::= SEQUENCE {
|
||||
nextTariffCurrency [0] TariffCurrencyFormat ,
|
||||
tariffSwitchoverTime [1] TariffSwitchoverTime
|
||||
}
|
||||
|
||||
-- TariffCurrencyFormat Type
|
||||
|
||||
TariffCurrencyFormat ::= SEQUENCE {
|
||||
communicationChargeSequenceCurrency [0] SEQUENCE
|
||||
SIZE(minCommunicationTariffNum..maxCommunicationTariffNum)
|
||||
OF CommunicationChargeCurrency OPTIONAL ,
|
||||
tariffControlIndicators [1] BIT STRING {
|
||||
non-cyclicTariff (0) }
|
||||
(SIZE(minTariffIndicatorsLen..maxTariffIndicatorsLen)) ,
|
||||
callAttemptChargeCurrency [2] CurrencyFactorScale OPTIONAL ,
|
||||
callSetupChargeCurrency [3] CurrencyFactorScale OPTIONAL }
|
||||
|
||||
-- The communication charge sequence currency is a direct charge in currency per time unit. Only one fixed time unit is used.
|
||||
-- This time unit has
|
||||
-- to be agreed between all cooperating networks, e.g. one second. Being fixed, the time unit is not transferred over
|
||||
-- ISUP/INAP.
|
||||
-- The call attempt charge is a direct charge, to be charged only for unsuccessful calls.
|
||||
-- The call set-up charge is a direct charge, to be charged once at start of charging.
|
||||
--
|
||||
-- The coding of the non-cyclicTariff is as follows:
|
||||
-- 0 - Cyclic tariff ( at expiration of the tariff duration of the last communication tariff of the communication charge sequence,
|
||||
-- the communication charge sequence is re-applied.
|
||||
-- 1 - Non-cyclic tariff ( at expiration of the tariff duration of the last communication tariff of the communication charge
|
||||
-- sequence, do not re-apply the communication charge sequence)
|
||||
|
||||
-- TariffDuration Type
|
||||
|
||||
TariffDuration ::= INTEGER (0..36000)
|
||||
|
||||
-- TariffDuration identifies with 0 unlimited duration and else in seconds unit.
|
||||
-- 0 = unlimited
|
||||
-- 1 = 1 second
|
||||
-- 2 = 2 seconds
|
||||
-- ...
|
||||
-- 36000 = 10 hours
|
||||
--
|
||||
-- The duration indicates for how long time the communication charge component is valid. Expiration of the tariff duration
|
||||
-- timer leads to the activation of the next communication charge (if present).
|
||||
-- In the case where there is no next communication charge in the communication charge sequence, the action to be performed
|
||||
-- is indicated by the tariffControlIndicators.
|
||||
-- TariffPulse Type
|
||||
|
||||
TariffPulse ::= SEQUENCE {
|
||||
currentTariffPulse [0] TariffPulseFormat OPTIONAL ,
|
||||
tariffSwitchPulse [1] TariffSwitchPulse OPTIONAL }
|
||||
|
||||
-- TariffSwitchPulse Type
|
||||
|
||||
TariffSwitchPulse ::= SEQUENCE {
|
||||
nextTariffPulse [0] TariffPulseFormat ,
|
||||
tariffSwitchoverTime [1] TariffSwitchoverTime }
|
||||
|
||||
-- TariffPulseFormat Type
|
||||
|
||||
TariffPulseFormat ::= SEQUENCE {
|
||||
communicationChargeSequencePulse [0] SEQUENCE
|
||||
SIZE(minCommunicationTariffNum.. maxCommunicationTariffNum)
|
||||
OF CommunicationChargePulse OPTIONAL ,
|
||||
tariffControlIndicators [1] BIT STRING {
|
||||
non-cyclicTariff (0) }
|
||||
(SIZE(minTariffIndicatorsLen..maxTariffIndicatorsLen)) ,
|
||||
callAttemptChargePulse [2] PulseUnits OPTIONAL ,
|
||||
callSetupChargePulse [3] PulseUnits OPTIONAL }
|
||||
|
||||
-- The communication charges are meter-pulse units, which are to be applied per charge unit time interval.
|
||||
-- The call attempt pulse units are to be charged only for unsuccessful calls.
|
||||
-- The call set-up pulse units are to be charged once at start of charging.
|
||||
|
||||
-- TariffSwitchoverTime Type
|
||||
|
||||
TariffSwitchoverTime ::= OCTET STRING (SIZE(1))
|
||||
|
||||
-- This time is the absolute time at which the next tariff has to become active. It is represented in steps of 15 minutes.
|
||||
-- The coding is the following:
|
||||
-- 0 : spare
|
||||
-- 1 : 0 hour 15 minutes
|
||||
-- 2 : 0 hour 30 minutes
|
||||
-- 3 : 0 hour 45 minutes
|
||||
-- 4 : 1 hour 0 minutes
|
||||
-- ..
|
||||
-- 96 : 24 hours 0 minutes
|
||||
-- 97-255 : spare
|
||||
|
||||
minAcknowledgementIndicatorsLen INTEGER ::= 1
|
||||
maxAcknowledgementIndicatorsLen INTEGER ::= 8
|
||||
minChargingControlIndicatorsLen INTEGER ::= 1
|
||||
maxChargingControlIndicatorsLen INTEGER ::= 8
|
||||
maxNetworkOperators INTEGER ::= 6
|
||||
minStopIndicatorsLen INTEGER ::= 1
|
||||
maxStopIndicatorsLen INTEGER ::= 8
|
||||
minTariffIndicatorsLen INTEGER ::= 1
|
||||
maxTariffIndicatorsLen INTEGER ::= 8
|
||||
minCommunicationTariffNum INTEGER ::= 1
|
||||
maxCommunicationTariffNum INTEGER ::= 4
|
||||
noCharge INTEGER ::= 0
|
||||
noScale INTEGER ::= 0
|
||||
numOfExtensions INTEGER ::= 1 --network specific
|
||||
|
||||
-- ChargingReferenceIdentification Type
|
||||
|
||||
ChargingReferenceIdentification ::= SEQUENCE {
|
||||
networkIdentification [0] NetworkIdentification,
|
||||
referenceID [1] ReferenceID}
|
||||
|
||||
-- NetworkIdentification Type
|
||||
|
||||
NetworkIdentification ::= OBJECT IDENTIFIER
|
||||
|
||||
-- Following structure of the networkIdentification value shall be used:
|
||||
-- {itu-t (0) administration (2) <national regulation authority> (x) network (y) node identification (z)}
|
||||
-- The value for x is the value of the national regulation authority, the value for y is under the control of the national
|
||||
-- regulation authority concerned, the value for z is under the control of the network concerned.
|
||||
|
||||
-- ReferenceID Type
|
||||
|
||||
ReferenceID ::= INTEGER (0..4294967295)
|
||||
-- maximum value 232 - 1
|
||||
|
||||
END
|
||||
-- of Tariffing-Data Types
|
|
@ -0,0 +1,17 @@
|
|||
# charging ase.cnf
|
||||
# charging ase conformation file
|
||||
# Anders Broman 2009
|
||||
# $Id$
|
||||
|
||||
#.EXPORTS
|
||||
ChargingMessageType
|
||||
ChargingMessageType_PDU
|
||||
|
||||
#.PDU_NEW
|
||||
ChargingMessageType
|
||||
|
||||
#.FN_BODY ExtensionField/value
|
||||
|
||||
proto_tree_add_text(tree, tvb, offset, -1, "Extensions not dissected");
|
||||
return tvb_length(tvb);
|
||||
#.END
|
|
@ -0,0 +1,109 @@
|
|||
/* packet-charging_ase-template.c
|
||||
* Copyright 2009 , Anders Broman <anders.broman [AT] ericsson.com>
|
||||
*
|
||||
* $Id$
|
||||
* 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
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* References: ETSI ES 201 296 V1.3.1 (2003-04)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <epan/packet.h>
|
||||
#include <epan/asn1.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "packet-ber.h"
|
||||
#include "packet-charging_ase.h"
|
||||
|
||||
|
||||
#define PNAME "Charging ASE"
|
||||
#define PSNAME "ChargingASE"
|
||||
#define PFNAME "chargingase"
|
||||
|
||||
/* Define the Charging ASE proto */
|
||||
static int proto_charging_ase = -1;
|
||||
|
||||
#include "packet-charging_ase-hf.c"
|
||||
|
||||
static int ett_charging_ase = -1;
|
||||
#include "packet-charging_ase-ett.c"
|
||||
|
||||
static dissector_handle_t charging_ase_handle;
|
||||
|
||||
|
||||
#include "packet-charging_ase-fn.c"
|
||||
|
||||
static void
|
||||
dissect_charging_ase(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_item *it;
|
||||
proto_tree *tr;
|
||||
guint32 offset=0;
|
||||
|
||||
it=proto_tree_add_protocol_format(tree, proto_charging_ase, tvb, 0, tvb_length(tvb), "Charging ASE");
|
||||
tr=proto_item_add_subtree(it, ett_charging_ase);
|
||||
|
||||
if(tvb_length(tvb)>0)
|
||||
{
|
||||
dissect_charging_ase_ChargingMessageType_PDU(tvb , pinfo, tr);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* Register all the bits needed with the filtering engine */
|
||||
|
||||
void
|
||||
proto_register_charging_ase(void)
|
||||
{
|
||||
/* List of fields */
|
||||
static hf_register_info hf[] = {
|
||||
#include "packet-charging_ase-hfarr.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
static gint *ett[] = {
|
||||
&ett_charging_ase,
|
||||
#include "packet-charging_ase-ettarr.c"
|
||||
};
|
||||
|
||||
|
||||
proto_charging_ase = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
||||
|
||||
proto_register_field_array(proto_charging_ase, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
}
|
||||
|
||||
/* The registration hand-off routine */
|
||||
void
|
||||
proto_reg_handoff_charging_ase(void)
|
||||
{
|
||||
|
||||
charging_ase_handle = create_dissector_handle(dissect_charging_ase, proto_charging_ase);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/* packet-charging_ase-template.h
|
||||
* Copyright 2009, Anders Broman <anders.broman@ericsson.com>
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
* 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
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef PACKET_CHARGING_ASE_H
|
||||
#define PACKET_CHARGING_ASE_H
|
||||
|
||||
#include "packet-charging_ase-exp.h"
|
||||
|
||||
#endif /* PACKET_CHARGING_ASE_H */
|
|
@ -157,6 +157,7 @@ ASN1_DISSECTOR_SRC = \
|
|||
#
|
||||
DIRTY_ASN1_DISSECTOR_SRC = \
|
||||
packet-ansi_map.c \
|
||||
packet-charging_ase.c \
|
||||
packet-gnm.c \
|
||||
packet-gsm_map.c \
|
||||
packet-inap.c \
|
||||
|
@ -910,6 +911,7 @@ DISSECTOR_INCLUDES = \
|
|||
packet-chdlc.h \
|
||||
packet-cdt.h \
|
||||
packet-cfm.h \
|
||||
packet-charging_ase.h \
|
||||
packet-cimd.h \
|
||||
packet-cip.h \
|
||||
packet-clearcase.h \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,46 @@
|
|||
/* Do not modify this file. */
|
||||
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
|
||||
/* packet-charging_ase.h */
|
||||
/* ../../tools/asn2wrs.py -b -e -k -p charging_ase -c charging_ase.cnf -s packet-charging_ase-template Tariffing-Data-Types.asn */
|
||||
|
||||
/* Input file: packet-charging_ase-template.h */
|
||||
|
||||
#line 1 "packet-charging_ase-template.h"
|
||||
/* packet-charging_ase-template.h
|
||||
* Copyright 2009, Anders Broman <anders.broman@ericsson.com>
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
* 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
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef PACKET_CHARGING_ASE_H
|
||||
#define PACKET_CHARGING_ASE_H
|
||||
|
||||
|
||||
/*--- Included file: packet-charging_ase-exp.h ---*/
|
||||
#line 1 "packet-charging_ase-exp.h"
|
||||
extern const value_string charging_ase_ChargingMessageType_vals[];
|
||||
int dissect_charging_ase_ChargingMessageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
|
||||
int dissect_charging_ase_ChargingMessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
|
||||
|
||||
/*--- End of included file: packet-charging_ase-exp.h ---*/
|
||||
#line 29 "packet-charging_ase-template.h"
|
||||
|
||||
#endif /* PACKET_CHARGING_ASE_H */
|
|
@ -50,10 +50,12 @@
|
|||
|
||||
#include <epan/packet.h>
|
||||
#include <epan/stats_tree.h>
|
||||
#include <epan/asn1.h>
|
||||
#include <prefs.h>
|
||||
#include "packet-q931.h"
|
||||
#include "packet-isup.h"
|
||||
#include "packet-e164.h"
|
||||
#include "packet-charging_ase.h"
|
||||
#include <epan/sctpppids.h>
|
||||
#include <epan/emem.h>
|
||||
#include <epan/circuit.h>
|
||||
|
@ -3473,14 +3475,20 @@ dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_inf
|
|||
|
||||
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1,
|
||||
"APM-user information field (%u Bytes)",tvb_length_remaining(parameter_tvb, offset));
|
||||
|
||||
/* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
|
||||
if ((aci16 & 0x7fff) != 5) {
|
||||
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "No further dissection of APM-user information field");
|
||||
return;
|
||||
|
||||
switch(aci16 & 0x7fff){
|
||||
case 3:
|
||||
/* Charging ASE */
|
||||
dissect_charging_ase_ChargingMessageType_PDU(next_tvb, pinfo, parameter_tree);
|
||||
break;
|
||||
case 5:
|
||||
/* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
|
||||
dissect_bat_ase_Encapsulated_Application_Information(next_tvb, pinfo, parameter_tree, 0);
|
||||
break;
|
||||
default:
|
||||
proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "No further dissection of APM-user information field");
|
||||
break;
|
||||
}
|
||||
|
||||
dissect_bat_ase_Encapsulated_Application_Information(next_tvb, pinfo, parameter_tree, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue