aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/h460
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-03-09 03:17:51 +0000
committerJoão Valverde <j@v6e.pt>2016-03-13 21:30:24 +0000
commit54a520d4a1151c68d0b4e5f09a8d82466fa499f3 (patch)
tree7aacae160382098ce651ac862a5dfd5de4beff94 /epan/dissectors/asn1/h460
parentc1f3c935bdd33090c87f0d2f84842ce9729b747a (diff)
Move /asn1 to /epan/dissectors
Change-Id: I1208fe3c2ba428995526f561e8f792b8d871e9a9 Reviewed-on: https://code.wireshark.org/review/14388 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan/dissectors/asn1/h460')
-rw-r--r--epan/dissectors/asn1/h460/CALL-PARTY-CATEGORY.asn23
-rw-r--r--epan/dissectors/asn1/h460/CALL-PRIORITY.asn55
-rw-r--r--epan/dissectors/asn1/h460/CIRCUIT-STATUS-MAP.asn36
-rw-r--r--epan/dissectors/asn1/h460/CMakeLists.txt63
-rw-r--r--epan/dissectors/asn1/h460/MEDIA-TRAVERSAL.asn30
-rw-r--r--epan/dissectors/asn1/h460/MESSAGE-BROADCAST.asn50
-rw-r--r--epan/dissectors/asn1/h460/MLPP.asn62
-rw-r--r--epan/dissectors/asn1/h460/Makefile.am23
-rw-r--r--epan/dissectors/asn1/h460/Makefile.common65
-rw-r--r--epan/dissectors/asn1/h460/Makefile.nmake25
-rw-r--r--epan/dissectors/asn1/h460/NUMBER-PORTABILITY.asn62
-rw-r--r--epan/dissectors/asn1/h460/QOS-MONITORING-EXTENDED-VOIP-REPORT.asn70
-rw-r--r--epan/dissectors/asn1/h460/QOS-MONITORING-REPORT.asn99
-rw-r--r--epan/dissectors/asn1/h460/SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn56
-rw-r--r--epan/dissectors/asn1/h460/SIGNALLING-TRAVERSAL.asn28
-rw-r--r--epan/dissectors/asn1/h460/h460.cnf64
-rw-r--r--epan/dissectors/asn1/h460/packet-h460-template.c294
17 files changed, 1105 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h460/CALL-PARTY-CATEGORY.asn b/epan/dissectors/asn1/h460/CALL-PARTY-CATEGORY.asn
new file mode 100644
index 0000000000..2bddb58629
--- /dev/null
+++ b/epan/dissectors/asn1/h460/CALL-PARTY-CATEGORY.asn
@@ -0,0 +1,23 @@
+-- CALL-PARTY-CATEGORY.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.10/2004/CALL-PARTY-CATEGORY.asn
+--
+
+-- Module CALL-PARTY-CATEGORY (H.460.10:03/2004)
+CALL-PARTY-CATEGORY DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+CallPartyCategoryInfo ::= SEQUENCE {
+ callPartyCategory CallPartyCategory OPTIONAL,
+ originatingLineInfo OriginatingLineInfo OPTIONAL,
+ ...
+}
+
+CallPartyCategory ::= INTEGER(0..255)
+
+OriginatingLineInfo ::= INTEGER(0..255)
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/CALL-PRIORITY.asn b/epan/dissectors/asn1/h460/CALL-PRIORITY.asn
new file mode 100644
index 0000000000..e83014591d
--- /dev/null
+++ b/epan/dissectors/asn1/h460/CALL-PRIORITY.asn
@@ -0,0 +1,55 @@
+-- CALL-PRIORITY.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.4/2007/CALL-PRIORITY.asn
+--
+
+-- Module CALL-PRIORITY (H.460.4:01/2007)
+CALL-PRIORITY {itu-t(0) recommendation(0) h(8) 460 4 version(1)} DEFINITIONS
+AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS ClearToken, CryptoToken
+ FROM H235-SECURITY-MESSAGES;
+
+CallPriorityInfo ::= SEQUENCE -- root for Call Priority related asn.1
+ {
+ priorityValue
+ CHOICE {emergencyAuthorized NULL,
+ emergencyPublic NULL,
+ high NULL,
+ normal NULL,
+ ...},
+ priorityExtension INTEGER(0..255) OPTIONAL,
+ tokens SEQUENCE OF ClearToken OPTIONAL,
+ cryptoTokens SEQUENCE OF CryptoToken OPTIONAL,
+ rejectReason
+ CHOICE {priorityUnavailable NULL,
+ priorityUnauthorized NULL,
+ priorityValueUnknown NULL,
+ ...} OPTIONAL, -- Only used in CallPriorityConfirm
+ ...
+}
+
+CountryInternationalNetworkCallOriginationIdentification ::=
+ SEQUENCE
+ -- root for Country/International Network
+ -- of Call Origination Identification related asn.1
+ {
+ numberingPlan
+ CHOICE {x121
+ SEQUENCE {countryCode IA5String(SIZE (3))(FROM ("0123456789")),
+ ...},
+ e164
+ SEQUENCE {countryCode
+ IA5String(SIZE (3))(FROM ("0123456789")),
+ identificationCode
+ IA5String(SIZE (1..4))(FROM ("0123456789")),
+ ...},
+ ...},
+ ...
+}
+
+END -- of ASN.1
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/CIRCUIT-STATUS-MAP.asn b/epan/dissectors/asn1/h460/CIRCUIT-STATUS-MAP.asn
new file mode 100644
index 0000000000..27b037810f
--- /dev/null
+++ b/epan/dissectors/asn1/h460/CIRCUIT-STATUS-MAP.asn
@@ -0,0 +1,36 @@
+-- CIRCUIT-STATUS-MAP.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.3/2002/CIRCUIT-STATUS-MAP.asn
+--
+
+-- Module CIRCUIT-STATUS-MAP (H.460.3:11/2002)
+CIRCUIT-STATUS-MAP DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS CircuitIdentifier
+ FROM H323-MESSAGES;
+
+CircuitStatus ::= SEQUENCE -- root for Circuit Status Map ASN.1
+ {
+ circuitStatusMap SEQUENCE OF CircuitStatusMap OPTIONAL,
+ ...
+}
+
+CircuitStatusMap ::= SEQUENCE {
+ statusType CircuitStatusType,
+ baseCircuitID CircuitIdentifier,
+ range INTEGER(0..4095),
+ status OCTET STRING,
+ ...
+}
+
+CircuitStatusType ::= CHOICE {
+ serviceStatus NULL, -- status: 0 = out-of-service, 1 = in-service
+ busyStatus NULL, -- status: 0 = free, 1 = in-use
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/CMakeLists.txt b/epan/dissectors/asn1/h460/CMakeLists.txt
new file mode 100644
index 0000000000..0205c4fefc
--- /dev/null
+++ b/epan/dissectors/asn1/h460/CMakeLists.txt
@@ -0,0 +1,63 @@
+# CMakeLists.txt
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+set( PROTOCOL_NAME h460 )
+
+set( PROTO_OPT _EMPTY_ )
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ NUMBER-PORTABILITY.asn
+ CIRCUIT-STATUS-MAP.asn
+ CALL-PRIORITY.asn
+ QOS-MONITORING-REPORT.asn
+ QOS-MONITORING-EXTENDED-VOIP-REPORT.asn
+ CALL-PARTY-CATEGORY.asn
+ MLPP.asn
+ SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn
+ SIGNALLING-TRAVERSAL.asn
+ MEDIA-TRAVERSAL.asn
+ MESSAGE-BROADCAST.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+set( EXTRA_CNF
+ "${CMAKE_CURRENT_BINARY_DIR}/../h225/h225-exp.cnf"
+ "${CMAKE_CURRENT_BINARY_DIR}/../h235/h235-exp.cnf"
+ "${CMAKE_CURRENT_BINARY_DIR}/../h245/h245-exp.cnf"
+)
+
+ASN2WRS()
+
diff --git a/epan/dissectors/asn1/h460/MEDIA-TRAVERSAL.asn b/epan/dissectors/asn1/h460/MEDIA-TRAVERSAL.asn
new file mode 100644
index 0000000000..39648dd3cc
--- /dev/null
+++ b/epan/dissectors/asn1/h460/MEDIA-TRAVERSAL.asn
@@ -0,0 +1,30 @@
+-- MEDIA-TRAVERSAL.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.19/2005/MEDIA-TRAVERSAL.asn
+--
+
+-- Module MEDIA-TRAVERSAL (H.460.19:09/2005)
+MEDIA-TRAVERSAL {itu-t(0) recommendation(0) h(8) 460 19 version(0) 1}
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ TimeToLive
+ FROM H323-MESSAGES
+ TransportAddress
+ FROM MULTIMEDIA-SYSTEM-CONTROL;
+
+TraversalParameters ::= SEQUENCE {
+ multiplexedMediaChannel TransportAddress OPTIONAL,
+ multiplexedMediaControlChannel TransportAddress OPTIONAL,
+ multiplexID INTEGER(0..4294967295) OPTIONAL,
+ keepAliveChannel TransportAddress OPTIONAL,
+ keepAlivePayloadType INTEGER(0..127) OPTIONAL,
+ keepAliveInterval TimeToLive OPTIONAL,
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/MESSAGE-BROADCAST.asn b/epan/dissectors/asn1/h460/MESSAGE-BROADCAST.asn
new file mode 100644
index 0000000000..ec2e761dc7
--- /dev/null
+++ b/epan/dissectors/asn1/h460/MESSAGE-BROADCAST.asn
@@ -0,0 +1,50 @@
+-- MESSAGE-BROADCAST.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.21/2006/MESSAGE-BROADCAST.asn
+--
+
+-- Module MESSAGE-BROADCAST (H.460.21:05/2006)
+MESSAGE-BROADCAST DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ MulticastAddress, UnicastAddress, Capability
+ FROM MULTIMEDIA-SYSTEM-CONTROL;
+
+CapabilityAdvertisement ::= SEQUENCE {
+ receiveCapabilities ReceiveCapabilities OPTIONAL,
+ transmitCapabilities SEQUENCE SIZE (1..256) OF TransmitCapabilities OPTIONAL,
+ ...
+}
+
+ReceiveCapabilities ::= SEQUENCE {
+ capabilities SEQUENCE SIZE (1..256) OF Capability,
+ maxGroups INTEGER(1..65535),
+ ...
+}
+
+GloballyUniqueID ::= OCTET STRING(SIZE (16))
+
+TransmitCapabilities ::= SEQUENCE {
+ groupIdentifer GloballyUniqueID,
+ capability Capability,
+ sourceAddress UnicastAddress,
+ ...
+}
+
+MessageBroadcastGroups ::= SEQUENCE SIZE (1..256) OF GroupAttributes
+
+GroupAttributes ::= SEQUENCE {
+ priority INTEGER(0..255), -- 0 = high, 255 = low
+ groupIdentifer GloballyUniqueID OPTIONAL,
+ capability Capability,
+ groupAddress MulticastAddress,
+ sourceAddress UnicastAddress OPTIONAL,
+ alertUser BOOLEAN,
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/MLPP.asn b/epan/dissectors/asn1/h460/MLPP.asn
new file mode 100644
index 0000000000..e3b84c673d
--- /dev/null
+++ b/epan/dissectors/asn1/h460/MLPP.asn
@@ -0,0 +1,62 @@
+-- MLPP.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.14/2004/MLPP.asn
+--
+
+-- Module MLPP (H.460.14:03/2004)
+MLPP DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ CallIdentifier, AliasAddress
+ FROM H323-MESSAGES; -- defined in H.225.0, Annex H
+
+MLPPInfo ::= SEQUENCE -- root for MLPP data ASN.1
+ {
+ precedence MlppPrecedence OPTIONAL,
+ mlppReason MlppReason OPTIONAL,
+ mlppNotification MlppNotification OPTIONAL,
+ alternateParty AlternateParty OPTIONAL,
+ releaseCall ReleaseCall OPTIONAL,
+ ...
+}
+
+MlppPrecedence ::= ENUMERATED {
+ flashOveride(0), flash(1), immediate(2), priority(3), routine(4), ...
+ }
+
+MlppReason ::=
+ ENUMERATED -- Indicates reasons that call is refused or released.
+ {preemptionNoReservation(8), preemptionReservation(9), callBlocked(46), ...
+ }
+
+MlppNotification ::=
+ CHOICE
+ -- Provides various notification events in Call Signalling messages
+ {
+ preemptionPending NULL,
+ preemptionInProgress NULL,
+ preemptionEnd NULL,
+ preemptionComplete NULL,
+ ...
+}
+
+AlternateParty ::= SEQUENCE {
+ altID AliasAddress,
+ altTimer INTEGER(0..255) OPTIONAL, --seconds
+ ...
+}
+
+ReleaseCall ::= SEQUENCE
+ -- Identifies other call to be preempted first
+ {
+ preemptCallID CallIdentifier,
+ releaseReason MlppReason,
+ releaseDelay INTEGER(0..255) OPTIONAL, --seconds to wait
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/Makefile.am b/epan/dissectors/asn1/h460/Makefile.am
new file mode 100644
index 0000000000..72d28e600b
--- /dev/null
+++ b/epan/dissectors/asn1/h460/Makefile.am
@@ -0,0 +1,23 @@
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+include ../Makefile.preinc
+include Makefile.common
+include ../Makefile.inc
+
diff --git a/epan/dissectors/asn1/h460/Makefile.common b/epan/dissectors/asn1/h460/Makefile.common
new file mode 100644
index 0000000000..357b37a4a7
--- /dev/null
+++ b/epan/dissectors/asn1/h460/Makefile.common
@@ -0,0 +1,65 @@
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+
+PROTOCOL_NAME = h460
+
+EXT_ASN_FILE_LIST =
+
+ASN_FILE_LIST = \
+ NUMBER-PORTABILITY.asn \
+ CIRCUIT-STATUS-MAP.asn \
+ CALL-PRIORITY.asn \
+ QOS-MONITORING-REPORT.asn \
+ QOS-MONITORING-EXTENDED-VOIP-REPORT.asn \
+ CALL-PARTY-CATEGORY.asn \
+ MLPP.asn \
+ SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn \
+ SIGNALLING-TRAVERSAL.asn \
+ MEDIA-TRAVERSAL.asn \
+ MESSAGE-BROADCAST.asn
+
+EXTRA_DIST = \
+ $(EXTRA_DIST_COMMON) \
+ $(ASN_FILE_LIST) \
+ packet-$(PROTOCOL_NAME)-template.c \
+ $(PROTOCOL_NAME).cnf
+
+SRC_FILES = \
+ $(EXTRA_DIST) \
+ $(EXT_ASN_FILE_LIST)
+
+# need empty -p <proto> option, default is -p $(PROTOCOL_NAME)
+PROTO_OPT =
+A2W_FLAGS =
+
+EXTRA_CNF = \
+ $(builddir)/../h225/h225-exp.cnf \
+ $(builddir)/../h235/h235-exp.cnf \
+ $(builddir)/../h245/h245-exp.cnf
+
+$(builddir)/../h225/h225-exp.cnf:
+ (cd $(builddir)/../h225 && $(MAKE_CNF_EXPORT))
+
+$(builddir)/../h235/h235-exp.cnf:
+ (cd $(builddir)/../h235 && $(MAKE_CNF_EXPORT))
+
+$(builddir)/../h245/h245-exp.cnf:
+ (cd $(builddir)/../h245 && $(MAKE_CNF_EXPORT))
+
diff --git a/epan/dissectors/asn1/h460/Makefile.nmake b/epan/dissectors/asn1/h460/Makefile.nmake
new file mode 100644
index 0000000000..89e6811e7d
--- /dev/null
+++ b/epan/dissectors/asn1/h460/Makefile.nmake
@@ -0,0 +1,25 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+include ../../../../config.nmake
+include ../Makefile.preinc.nmake
+include Makefile.common
+include ../Makefile.inc.nmake
diff --git a/epan/dissectors/asn1/h460/NUMBER-PORTABILITY.asn b/epan/dissectors/asn1/h460/NUMBER-PORTABILITY.asn
new file mode 100644
index 0000000000..892813fb1f
--- /dev/null
+++ b/epan/dissectors/asn1/h460/NUMBER-PORTABILITY.asn
@@ -0,0 +1,62 @@
+-- NUMBER-PORTABILITY.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.2/2001/NUMBER-PORTABILITY.asn
+--
+
+-- Module NUMBER-PORTABILITY (H.460.2:07/2001)
+NUMBER-PORTABILITY DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ PublicTypeOfNumber, PrivateTypeOfNumber, AliasAddress
+ FROM H323-MESSAGES;
+
+NumberPortabilityInfo ::= CHOICE {
+ numberPortabilityRejectReason NumberPortabilityRejectReason,
+ nUMBERPORTABILITYDATA
+ SEQUENCE {addressTranslated NULL OPTIONAL,
+ portedAddress PortabilityAddress OPTIONAL,
+ routingAddress PortabilityAddress OPTIONAL,
+ regionalParams RegionalParameters OPTIONAL,
+ ...},
+ ...
+}
+
+NumberPortabilityRejectReason ::= CHOICE {
+ unspecified NULL,
+ qorPortedNumber NULL,
+ ...
+}
+
+PortabilityAddress ::= SEQUENCE {
+ aliasAddress AliasAddress,
+ typeOfAddress NumberPortabilityTypeOfNumber OPTIONAL,
+ ...
+}
+
+NumberPortabilityTypeOfNumber ::= CHOICE {
+ publicTypeOfNumber PublicTypeOfNumber,
+ privateTypeOfNumber PrivateTypeOfNumber,
+ portabilityTypeOfNumber PortabilityTypeOfNumber,
+ ...
+}
+
+PortabilityTypeOfNumber ::= CHOICE {
+ portedNumber NULL,
+ routingNumber NULL,
+ concatenatedNumber NULL,
+ ...
+}
+
+RegionalParameters ::= SEQUENCE {
+ t35CountryCode INTEGER(0..255),
+ t35Extension INTEGER(0..255),
+ variantIdentifier INTEGER(1..255) OPTIONAL,
+ regionalData OCTET STRING,
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/QOS-MONITORING-EXTENDED-VOIP-REPORT.asn b/epan/dissectors/asn1/h460/QOS-MONITORING-EXTENDED-VOIP-REPORT.asn
new file mode 100644
index 0000000000..bcbf3f8bcf
--- /dev/null
+++ b/epan/dissectors/asn1/h460/QOS-MONITORING-EXTENDED-VOIP-REPORT.asn
@@ -0,0 +1,70 @@
+-- QOS-MONITORING-EXTENDED-VOIP-REPORT.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.9/2002/QOS-MONITORING-EXTENDED-VOIP-REPORT.asn
+--
+
+-- Module QOS-MONITORING-EXTENDED-VOIP-REPORT (H.460.9:11/2002)
+QOS-MONITORING-EXTENDED-VOIP-REPORT DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS GenericIdentifier
+ FROM H323-MESSAGES;
+
+ExtendedRTPMetrics ::= SEQUENCE {
+ networkPacketLossRate INTEGER(0..255) OPTIONAL,
+ jitterBufferDiscardRate INTEGER(0..255) OPTIONAL,
+ burstMetrics BurstMetrics OPTIONAL,
+ rtcpRoundTripDelay INTEGER(0..65535) OPTIONAL,
+ endSystemDelay INTEGER(0..65535) OPTIONAL,
+ signalLevel INTEGER(-127..10) OPTIONAL,
+ noiseLevel INTEGER(-127..0) OPTIONAL,
+ residualEchoReturnLoss INTEGER(0..127) OPTIONAL,
+ rFactor INTEGER(0..100) OPTIONAL,
+ extRFactor INTEGER(0..100) OPTIONAL,
+ estimatedMOSLQ INTEGER(10..50) OPTIONAL,
+ estimatedMOSCQ INTEGER(10..50) OPTIONAL,
+ plcType PLCtypes OPTIONAL,
+ jitterBufferParms JitterBufferParms OPTIONAL,
+ ...
+}
+
+BurstMetrics ::= SEQUENCE {
+ gmin INTEGER(0..255) OPTIONAL,
+ burstLossDensity INTEGER(0..255) OPTIONAL,
+ gapLossDensity INTEGER(0..255) OPTIONAL,
+ burstDuration INTEGER(0..65535) OPTIONAL,
+ gapDuration INTEGER(0..65535) OPTIONAL,
+ ...
+}
+
+PLCtypes ::= CHOICE {
+ unspecified NULL,
+ disabled NULL,
+ enhanced NULL,
+ standard NULL,
+ ...
+}
+
+JitterBufferParms ::= SEQUENCE {
+ jitterBufferType JitterBufferTypes OPTIONAL,
+ jitterBufferAdaptRate INTEGER(0..15) OPTIONAL,
+ jitterBufferNominalSize INTEGER(0..65535) OPTIONAL,
+ jitterBufferMaxSize INTEGER(0..65535) OPTIONAL,
+ jitterBufferAbsoluteMax INTEGER(0..65535) OPTIONAL,
+ ...
+}
+
+JitterBufferTypes ::= CHOICE {
+ unknown NULL,
+ reserved NULL,
+ nonadaptive NULL,
+ adaptive NULL,
+ ...
+}
+
+qosMonitoringExtendedRTPMetrics GenericIdentifier ::= standard:2
+
+END -- of QOS-MONITORING-EXTENDED-VOIP-REPORT
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/QOS-MONITORING-REPORT.asn b/epan/dissectors/asn1/h460/QOS-MONITORING-REPORT.asn
new file mode 100644
index 0000000000..d5bd5023d7
--- /dev/null
+++ b/epan/dissectors/asn1/h460/QOS-MONITORING-REPORT.asn
@@ -0,0 +1,99 @@
+-- QOS-MONITORING-REPORT.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.9/2002/QOS-MONITORING-REPORT.asn
+--
+
+-- Module QOS-MONITORING-REPORT (H.460.9:11/2002)
+QOS-MONITORING-REPORT DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS
+ NonStandardParameter, TransportChannelInfo, CallIdentifier,
+ CallReferenceValue, ConferenceIdentifier, BandWidth, GenericIdentifier
+ FROM H323-MESSAGES;
+
+EstimatedEnd2EndDelay ::= INTEGER(0..4294967295)
+
+-- middle 32 bits of 64 bit NTP timestamp
+CalculatedJitter ::= INTEGER(0..4294967295)
+
+-- measured in timestamp units
+Extension ::= SEQUENCE {
+ extensionId GenericIdentifier,
+ extensionContent OCTET STRING OPTIONAL,
+ ...
+}
+
+RTCPMeasures ::= SEQUENCE {
+ rtpAddress TransportChannelInfo,
+ rtcpAddress TransportChannelInfo,
+ sessionId INTEGER(1..255),
+ nonStandardData NonStandardParameter OPTIONAL,
+ mediaSenderMeasures
+ SEQUENCE {worstEstimatedEnd2EndDelay EstimatedEnd2EndDelay OPTIONAL,
+ meanEstimatedEnd2EndDelay EstimatedEnd2EndDelay OPTIONAL,
+ ...} OPTIONAL,
+ mediaReceiverMeasures
+ SEQUENCE {cumulativeNumberOfPacketsLost INTEGER(0..4294967295) OPTIONAL,
+ packetLostRate INTEGER(0..65535) OPTIONAL,
+ worstJitter CalculatedJitter OPTIONAL,
+ estimatedThroughput BandWidth OPTIONAL, -- in 100s of bits--
+ fractionLostRate INTEGER(0..65535) OPTIONAL,
+ meanJitter CalculatedJitter OPTIONAL,
+ ...} OPTIONAL,
+ extensions SEQUENCE OF Extension OPTIONAL,
+ ...
+}
+
+PerCallQoSReport ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ callReferenceValue CallReferenceValue,
+ conferenceID ConferenceIdentifier,
+ callIdentifier CallIdentifier,
+ mediaChannelsQoS SEQUENCE OF RTCPMeasures OPTIONAL,
+ -- one element per media channel
+ extensions SEQUENCE OF Extension OPTIONAL,
+ ...
+}
+
+QosMonitoringReportData ::= CHOICE {
+ periodic PeriodicQoSMonReport, -- included in IRR messages
+ final FinalQosMonReport, -- included in DRQ/DCF message
+ interGK InterGKQosMonReport, -- included in usageIndication message
+ ...
+}
+
+PeriodicQoSMonReport ::= SEQUENCE {
+ perCallInfo SEQUENCE OF PerCallQoSReport, -- one element per call
+ extensions SEQUENCE OF Extension OPTIONAL,
+ ...
+}
+
+FinalQosMonReport ::= SEQUENCE {
+ mediaInfo SEQUENCE OF RTCPMeasures, -- one element per channel
+ nonStandardData NonStandardParameter OPTIONAL,
+ extensions SEQUENCE OF Extension OPTIONAL,
+ ...
+}
+
+InterGKQosMonReport ::= SEQUENCE {
+ mediaInfo SEQUENCE OF RTCPMeasures, -- one element per channel
+ nonStandardData NonStandardParameter OPTIONAL,
+ extensions SEQUENCE OF Extension OPTIONAL,
+ ...
+}
+
+--
+-- H.460.9 Identifiers:
+--
+qosMonitoringReportID GenericIdentifier ::=
+ standard:9
+
+qosMonitoringFinalOnly GenericIdentifier ::= standard:0
+
+qosMonitoringReportData GenericIdentifier ::= standard:1
+
+END -- of ASN.1
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn b/epan/dissectors/asn1/h460/SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn
new file mode 100644
index 0000000000..aa85572f6f
--- /dev/null
+++ b/epan/dissectors/asn1/h460/SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn
@@ -0,0 +1,56 @@
+-- SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.15/2004/SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn
+--
+
+-- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT (H.460.15:03/2004)
+SIGNALLING-CHANNEL-SUSPEND-REDIRECT DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS TransportAddress
+ FROM H323-MESSAGES;
+
+SignallingChannelData ::= SEQUENCE {
+ signallingChannelData
+ CHOICE {channelSuspendRequest ChannelSuspendRequest,
+ channelSuspendResponse ChannelSuspendResponse,
+ channelSuspendConfirm ChannelSuspendConfirm,
+ channelSuspendCancel ChannelSuspendCancel,
+ channelResumeRequest ChannelResumeRequest,
+ channelResumeResponse ChannelResumeResponse,
+ ...},
+ ...
+}
+
+ChannelSuspendRequest ::= SEQUENCE {
+ channelResumeAddress SEQUENCE OF TransportAddress,
+ immediateResume BOOLEAN,
+ resetH245 NULL OPTIONAL,
+ ...
+}
+
+ChannelSuspendResponse ::= SEQUENCE {
+ okToSuspend BOOLEAN,
+ channelResumeAddress SEQUENCE OF TransportAddress,
+ ...
+}
+
+ChannelSuspendConfirm ::= SEQUENCE {...
+}
+
+ChannelSuspendCancel ::= SEQUENCE {...
+}
+
+ChannelResumeRequest ::= SEQUENCE {
+ randomNumber INTEGER(0..4294967295),
+ resetH245 NULL OPTIONAL,
+ ...
+}
+
+ChannelResumeResponse ::= SEQUENCE {...
+}
+
+END -- of ASN.1
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/SIGNALLING-TRAVERSAL.asn b/epan/dissectors/asn1/h460/SIGNALLING-TRAVERSAL.asn
new file mode 100644
index 0000000000..33fbbab51e
--- /dev/null
+++ b/epan/dissectors/asn1/h460/SIGNALLING-TRAVERSAL.asn
@@ -0,0 +1,28 @@
+-- SIGNALLING-TRAVERSAL.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h460.18/2005/SIGNALLING-TRAVERSAL.asn
+--
+
+-- Module SIGNALLING-TRAVERSAL (H.460.18:09/2005)
+SIGNALLING-TRAVERSAL {itu-t(0) recommendation(0) h(8) 460 18 version(0) 1}
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS CallIdentifier, TimeToLive, TransportAddress
+ FROM H323-MESSAGES;
+
+IncomingCallIndication ::= SEQUENCE {
+ callSignallingAddress TransportAddress,
+ callID CallIdentifier,
+ ...
+}
+
+LRQKeepAliveData ::= SEQUENCE {
+ lrqKeepAliveInterval TimeToLive, -- keep-alive interval (seconds)
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/epan/dissectors/asn1/h460/h460.cnf b/epan/dissectors/asn1/h460/h460.cnf
new file mode 100644
index 0000000000..2d8c8793db
--- /dev/null
+++ b/epan/dissectors/asn1/h460/h460.cnf
@@ -0,0 +1,64 @@
+# h460.cnf
+# H.460.x conformation file
+# 2007 Tomas Kukosa
+
+#.INCLUDE ../h225/h225-exp.cnf
+#.INCLUDE ../h235/h235-exp.cnf
+#.INCLUDE ../h245/h245-exp.cnf
+
+#.OPT
+PER
+ALIGNED
+GROUP_BY_PROT
+-o h460
+#.END
+
+#.OMIT_ASSIGNMENT
+MessageBroadcastGroups
+GroupAttributes
+#.END
+
+#.MODULE
+NUMBER-PORTABILITY h460.2
+CIRCUIT-STATUS-MAP h460.3
+CALL-PRIORITY h460.4
+QOS-MONITORING-REPORT h460.9
+QOS-MONITORING-EXTENDED-VOIP-REPORT h460.9
+CALL-PARTY-CATEGORY h460.10
+MLPP h460.14
+SIGNALLING-CHANNEL-SUSPEND-REDIRECT h460.15
+SIGNALLING-TRAVERSAL h460.18
+MEDIA-TRAVERSAL h460.19
+MESSAGE-BROADCAST h460.21
+#.END
+
+#.PDU
+# H.460.2
+NumberPortabilityInfo
+# H.460.3
+CircuitStatus
+# H.460.4
+CallPriorityInfo
+CountryInternationalNetworkCallOriginationIdentification
+# H.460.9
+QosMonitoringReportData
+ExtendedRTPMetrics
+# H.460.10
+CallPartyCategoryInfo
+# H.460.14
+MLPPInfo
+# H.460.15
+SignallingChannelData
+# H.460.18
+IncomingCallIndication
+LRQKeepAliveData
+# H.460.19
+TraversalParameters
+# H.460.21
+CapabilityAdvertisement
+#.END
+
+#.TF_RENAME
+CountryInternationalNetworkCallOriginationIdentification/numberingPlan/x121/countryCode x121CountryCode
+CountryInternationalNetworkCallOriginationIdentification/numberingPlan/e164/countryCode e164CountryCode
+#.END
diff --git a/epan/dissectors/asn1/h460/packet-h460-template.c b/epan/dissectors/asn1/h460/packet-h460-template.c
new file mode 100644
index 0000000000..586cec4ab1
--- /dev/null
+++ b/epan/dissectors/asn1/h460/packet-h460-template.c
@@ -0,0 +1,294 @@
+/* packet-h460.c
+ * Routines for H.460.x packet dissection
+ * 2007 Tomas Kukosa
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+
+#include "packet-per.h"
+#include "packet-h225.h"
+#include "packet-h235.h"
+#include "packet-h245.h"
+
+#define PNAME "H.460 Supplementary Services"
+#define PSNAME "H.460"
+#define PFNAME "h460"
+
+void proto_register_h460(void);
+void proto_reg_handoff_h460(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_h460 = -1;
+#include "packet-h460-hf.c"
+
+/* Initialize the subtree pointers */
+#include "packet-h460-ett.c"
+
+/* Subdissectors */
+static dissector_handle_t q931_ie_handle = NULL;
+static dissector_handle_t h225_ras_handle = NULL;
+
+#include "packet-h460-fn.c"
+
+static int
+dissect_ies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
+ int offset = 0;
+
+ if (q931_ie_handle) {
+ call_dissector(q931_ie_handle, tvb, pinfo, tree);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ }
+ return offset;
+}
+
+static int
+dissect_ras(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
+ int offset = 0;
+
+ if (h225_ras_handle) {
+ call_dissector(h225_ras_handle, tvb, pinfo, tree);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ }
+ return offset;
+}
+
+typedef struct _h460_feature_t {
+ guint32 opt;
+ const gchar *id;
+ const gchar *name;
+ dissector_t content_pdu;
+ /*---*/
+ const gchar *key_gd;
+ const gchar *key_fd;
+ const gchar *key_gm;
+ const gchar *key_gi;
+ dissector_handle_t content_hnd;
+} h460_feature_t;
+
+/* Fill in the items after content_pdu */
+#define FFILL NULL, NULL, NULL, NULL, NULL
+
+/* options */
+#define GD 0x01 /* present in H.225 GenericData */
+#define FD 0x02 /* present in H.225 FeatureDescriptor */
+#define GM 0x04 /* present in H.245 GenericMessage */
+#define GI 0x08 /* present in H.245 GenericInformation */
+
+static h460_feature_t h460_feature_tab[] = {
+ /* H.460.3 */
+ { GD|FD, "2", "Number Portability", NULL, FFILL },
+ { GD|FD, "2/1", "NumberPortabilityData", dissect_h460_2_NumberPortabilityInfo_PDU, FFILL },
+ /* H.460.3 */
+ { GD|FD, "3", "Circuit Status", NULL, FFILL },
+ { GD|FD, "3/1", "Circuit Status Map", dissect_h460_3_CircuitStatus_PDU, FFILL },
+ /* H.460.4 */
+ { GD|FD, "4", "CallPriorityDesignation", NULL, FFILL },
+ { GD|FD, "4/1", "CallPriorityRequest", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
+ { GD|FD, "4/2", "CallPriorityConfirm", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
+ { GD|FD, "4/3", "Country/InternationalNetworkCallOriginationRequest", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
+ { GD|FD, "4/4", "Country/InternationalNetworkCallOriginationConfirm", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
+ /* H.460.5 */
+ { GD|FD, "5", "DuplicateIEs", NULL, FFILL },
+ { GD|FD, "5/1", "IEsString", dissect_ies, FFILL },
+ /* H.460.6 */
+ { GD|FD, "6", "Extended Fast Connect", NULL, FFILL },
+ { GD|FD, "6/1", "EFC Proposal", NULL, FFILL },
+ { GD|FD, "6/2", "EFC Close All Media Channels", NULL, FFILL },
+ { GD|FD, "6/3", "EFC Request New Proposals", NULL, FFILL },
+ { GD|FD, "6/4", "EFC Require Symmetric Operation", NULL, FFILL },
+ /* H.460.7 */
+ { GD|FD, "7", "Digit Maps", NULL, FFILL },
+ { FD, "7/1", "Digit Maps Length", NULL, FFILL },
+ { FD, "7/2", "Digit Map Length for Overlapped Sending", NULL, FFILL },
+ { FD, "7/3", "HTTP Digit Maps Download Capability", NULL, FFILL },
+ { GD , "7/1", "Start Timer", NULL, FFILL },
+ { GD , "7/2", "Short Timer", NULL, FFILL },
+ { GD , "7/3", "Long Timer", NULL, FFILL },
+ { GD , "7/4", "Digit Map String", NULL, FFILL },
+ { GD , "7/5", "ToN Associated Digit Map", NULL, FFILL },
+ { GD , "7/5/1", "Type of Number", NULL, FFILL },
+ { GD , "7/5/2", "Digit Map Strings for ToN", NULL, FFILL },
+ { GD , "7/6", "Digit Map URL", NULL, FFILL },
+ /* H.460.8 */
+ { GD|FD, "8", "Querying for Alternate Routes", NULL, FFILL },
+ { GD|FD, "8/1", "Query Count", NULL, FFILL },
+ { GD|FD, "8/2", "Call Termination Cause", NULL, FFILL },
+ /* H.460.9 */
+ { GD|FD, "9", "QoS-monitoring Reporting", NULL, FFILL },
+ { GD|FD, "9/0", "qosMonitoringFinalOnly", NULL, FFILL },
+ { GD|FD, "9/1", "qosMonitoringReportData", dissect_h460_9_QosMonitoringReportData_PDU, FFILL },
+ { GD|FD, "9/2", "qosMonitoringExtendedRTPMetrics", dissect_h460_9_ExtendedRTPMetrics_PDU, FFILL },
+ /* H.460.10 */
+ { GD|FD, "10", "Call Party Category", NULL, FFILL },
+ { GD|FD, "10/1", "Call party category info", dissect_h460_10_CallPartyCategoryInfo_PDU, FFILL },
+ /* H.460.11 */
+ { GD|FD, "11", "Delayed Call Establishment", NULL, FFILL },
+ { GD|FD, "11/1", "Delay Point Indicator", NULL, FFILL },
+ { GD|FD, "11/2", "Implicit DCE Release", NULL, FFILL },
+ { GD|FD, "11/3", "Delay Point Reached", NULL, FFILL },
+ { GD|FD, "11/4", "DCE Release", NULL, FFILL },
+ /* H.460.12 */
+ { GD|FD, "12", "Glare Control Indicator", NULL, FFILL },
+ { GD|FD, "12/1", "Glare Control Indicator Parameter", NULL, FFILL },
+ /* H.460.13 */
+ { GD|FD, "13", "Called User Release Control", NULL, FFILL },
+ { GD|FD, "13/1", "Called User Release Control", NULL, FFILL },
+ /* H.460.14 */
+ { GD|FD, "14", "Multi-Level Precedence and Preemption", NULL, FFILL },
+ { GD|FD, "14/1", "MLPP Information", dissect_h460_14_MLPPInfo_PDU, FFILL },
+ /* H.460.15 */
+ { GD|FD, "15", "Call signalling transport channel suspension and redirection", NULL, FFILL },
+ { GD|FD, "15/1", "Signalling channel suspend and redirect", dissect_h460_15_SignallingChannelData_PDU, FFILL },
+ /* H.460.16 */
+ { GD|FD, "16", "Multiple-message Release Sequence", NULL, FFILL },
+ { GD|FD, "16/1", "MMRS use required", NULL, FFILL },
+ { GD|FD, "16/2", "MMRS procedure", NULL, FFILL },
+ { GD|FD, "16/3", "MMRS additional IEs", dissect_ies, FFILL },
+ /* H.460.17 */
+ { GD|FD, "17", "RAS over H.225.0", NULL, FFILL },
+ { GD|FD, "17/1", "RAS message", dissect_ras, FFILL },
+ /* H.460.18 */
+ { GD|FD , "18", "Signalling Traversal", NULL, FFILL },
+ { GD|FD , "18/1", "IncomingCallIndication", dissect_h460_18_IncomingCallIndication_PDU, FFILL },
+ { GD|FD , "18/2", "LRQKeepAliveData", dissect_h460_18_LRQKeepAliveData_PDU, FFILL },
+ { GM, "0.0.8.460.18.0.1", "Signalling Traversal", NULL, FFILL },
+ { GM, "0.0.8.460.18.0.1-1", "connectionCorrelation", NULL, FFILL },
+ { GM, "0.0.8.460.18.0.1-1/1", "callIdentifier", NULL, FFILL },
+ { GM, "0.0.8.460.18.0.1-1/2", "answerCall", NULL, FFILL },
+ /* H.460.19 */
+ { GD|FD , "19", "mediaNATFWTraversal", NULL, FFILL },
+ { GD|FD , "19/1", "supportTransmitMultiplexedMedia", NULL, FFILL },
+ { GD|FD , "19/2", "mediaTraversalServer", NULL, FFILL },
+ { GI, "0.0.8.460.19.0.1", "mediaNATFWTraversal", NULL, FFILL },
+ { GI, "0.0.8.460.19.0.1/1", "Traversal Parameters", dissect_h460_19_TraversalParameters_PDU, FFILL },
+ /* H.460.20 */
+ { GD|FD, "20", "LocationSourceAddress", NULL, FFILL },
+ { GD|FD, "20/1", "LocationSourceAddress", dissect_h225_ExtendedAliasAddress_PDU, FFILL },
+ /* H.460.21 */
+ { GD|FD, "21", "Message Broadcast", NULL, FFILL },
+ { GD|FD, "21/1", "MessageBroadcastParameter", dissect_h460_21_CapabilityAdvertisement_PDU, FFILL },
+ /* H.460.22 */
+ { GD|FD, "22", "securityProtocolNegotiation", NULL, FFILL },
+ { GD|FD, "22/1", "tlsSecurityProtocol", NULL, FFILL },
+ { GD|FD, "22/1/1", "priority", NULL, FFILL },
+ { GD|FD, "22/1/2", "connectionAddress", NULL, FFILL },
+ { GD|FD, "22/2", "ipsecSecurityProtocol", NULL, FFILL },
+ { GD|FD, "22/2/1", "priority", NULL, FFILL },
+ { 0, NULL, NULL, NULL, FFILL },
+};
+
+static h460_feature_t *find_ftr(const gchar *key) {
+ h460_feature_t *ftr = NULL;
+ h460_feature_t *f;
+
+ for (f=h460_feature_tab; f->id; f++) {
+ if (f->key_gd && !strcmp(key, f->key_gd)) { ftr = f; break; }
+ if (f->key_fd && !strcmp(key, f->key_fd)) { ftr = f; break; }
+ if (f->key_gm && !strcmp(key, f->key_gm)) { ftr = f; break; }
+ if (f->key_gi && !strcmp(key, f->key_gi)) { ftr = f; break; }
+ }
+ return ftr;
+}
+
+/*--- dissect_h460_name -------------------------------------------*/
+static int
+dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data) {
+ int offset = 0;
+ asn1_ctx_t *actx;
+ h460_feature_t *ftr;
+
+ /* Reject the packet if data is NULL */
+ if (data == NULL)
+ return 0;
+ actx = get_asn1_ctx(data);
+ DISSECTOR_ASSERT(actx);
+
+ if (tree) {
+ ftr = find_ftr(pinfo->match_string);
+ if (ftr) {
+ proto_item_append_text(actx->created_item, " - %s", ftr->name);
+ proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), ": %s", ftr->name);
+ } else {
+ proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
+ }
+ }
+
+ return offset;
+}
+
+/*--- proto_register_h460 ----------------------------------------------*/
+void proto_register_h460(void) {
+ h460_feature_t *ftr;
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+#include "packet-h460-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+#include "packet-h460-ettarr.c"
+ };
+
+ /* Register protocol */
+ proto_h460 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_h460, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ for (ftr=h460_feature_tab; ftr->id; ftr++) {
+ if (ftr->opt & GD) ftr->key_gd = g_strdup_printf("GenericData/%s", ftr->id);
+ if (ftr->opt & FD) ftr->key_fd = g_strdup_printf("FeatureDescriptor/%s", ftr->id);
+ if (ftr->opt & GM) ftr->key_gm = g_strdup_printf("GenericMessage/%s", ftr->id);
+ if (ftr->opt & GI) ftr->key_gi = g_strdup_printf("GenericInformation/%s", ftr->id);
+ if (ftr->content_pdu) ftr->content_hnd = create_dissector_handle(ftr->content_pdu, proto_h460);
+ }
+}
+
+/*--- proto_reg_handoff_h460 -------------------------------------------*/
+void proto_reg_handoff_h460(void)
+{
+ h460_feature_t *ftr;
+ dissector_handle_t h460_name_handle;
+
+ q931_ie_handle = find_dissector("q931.ie");
+ h225_ras_handle = find_dissector("h225.ras");
+
+ h460_name_handle = create_dissector_handle(dissect_h460_name, proto_h460);
+ for (ftr=h460_feature_tab; ftr->id; ftr++) {
+ if (ftr->key_gd) dissector_add_string("h225.gef.name", ftr->key_gd, h460_name_handle);
+ if (ftr->key_fd) dissector_add_string("h225.gef.name", ftr->key_fd, h460_name_handle);
+ if (ftr->key_gm) dissector_add_string("h245.gef.name", ftr->key_gm, h460_name_handle);
+ if (ftr->key_gi) dissector_add_string("h245.gef.name", ftr->key_gi, h460_name_handle);
+ if (ftr->content_hnd) {
+ if (ftr->key_gd) dissector_add_string("h225.gef.content", ftr->key_gd, ftr->content_hnd);
+ if (ftr->key_fd) dissector_add_string("h225.gef.content", ftr->key_fd, ftr->content_hnd);
+ if (ftr->key_gm) dissector_add_string("h245.gef.content", ftr->key_gm, ftr->content_hnd);
+ if (ftr->key_gi) dissector_add_string("h245.gef.content", ftr->key_gi, ftr->content_hnd);
+ }
+ }
+
+}