Add dissection of Charging ASE in ISUP APM messages.

svn path=/trunk/; revision=27405
This commit is contained in:
Anders Broman 2009-02-09 20:46:59 +00:00
parent 3f533b4038
commit cb231972f1
13 changed files with 1968 additions and 7 deletions

View File

@ -29,6 +29,7 @@ SUBDIRS = \
ansi-tcap \
camel \
cdt \
charging_ase \
cmip \
cms \
dap \

View File

@ -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

View File

@ -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

View File

@ -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 = \

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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);
}