diff options
Diffstat (limited to 'epan/dissectors/asn1/h501')
-rw-r--r-- | epan/dissectors/asn1/h501/CMakeLists.txt | 52 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/H501-MESSAGES.asn | 656 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/Makefile.am | 23 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/Makefile.common | 48 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/Makefile.nmake | 26 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/h501.cnf | 26 | ||||
-rw-r--r-- | epan/dissectors/asn1/h501/packet-h501-template.c | 156 |
7 files changed, 987 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h501/CMakeLists.txt b/epan/dissectors/asn1/h501/CMakeLists.txt new file mode 100644 index 0000000000..dc4e5a02eb --- /dev/null +++ b/epan/dissectors/asn1/h501/CMakeLists.txt @@ -0,0 +1,52 @@ +# 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 h501 ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + H501-MESSAGES.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" +) + +ASN2WRS() + diff --git a/epan/dissectors/asn1/h501/H501-MESSAGES.asn b/epan/dissectors/asn1/h501/H501-MESSAGES.asn new file mode 100644 index 0000000000..a33dfd8bfe --- /dev/null +++ b/epan/dissectors/asn1/h501/H501-MESSAGES.asn @@ -0,0 +1,656 @@ +-- H501-MESSAGES.asn +-- +-- Taken from ITU ASN.1 database +-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h501/2002/H501-MESSAGES.asn +-- + +-- Module H501-MESSAGES (H.501:03/2002) +H501-MESSAGES DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +IMPORTS + AuthenticationMechanism, TimeStamp, ClearToken + FROM H235-SECURITY-MESSAGES + AliasAddress, TransportAddress, ReleaseCompleteReason, ConferenceIdentifier, + CallIdentifier, CryptoH323Token, CryptoToken, EndpointType, + GatekeeperIdentifier, GloballyUniqueID, NonStandardParameter, NumberDigits, + PartyNumber, SupportedProtocols, TransportQOS, VendorIdentifier, + IntegrityMechanism, ICV, FeatureSet, GenericData, EnumeratedParameter, + ServiceControlSession, CircuitInfo, CircuitIdentifier + FROM H323-MESSAGES; + +Message ::= SEQUENCE {body MessageBody, + common MessageCommonInfo, + ... +} + +MessageBody ::= CHOICE { + serviceRequest ServiceRequest, + serviceConfirmation ServiceConfirmation, + serviceRejection ServiceRejection, + serviceRelease ServiceRelease, + descriptorRequest DescriptorRequest, + descriptorConfirmation DescriptorConfirmation, + descriptorRejection DescriptorRejection, + descriptorIDRequest DescriptorIDRequest, + descriptorIDConfirmation DescriptorIDConfirmation, + descriptorIDRejection DescriptorIDRejection, + descriptorUpdate DescriptorUpdate, + descriptorUpdateAck DescriptorUpdateAck, + accessRequest AccessRequest, + accessConfirmation AccessConfirmation, + accessRejection AccessRejection, + requestInProgress RequestInProgress, + nonStandardRequest NonStandardRequest, + nonStandardConfirmation NonStandardConfirmation, + nonStandardRejection NonStandardRejection, + unknownMessageResponse UnknownMessageResponse, + usageRequest UsageRequest, + usageConfirmation UsageConfirmation, + usageIndication UsageIndication, + usageIndicationConfirmation UsageIndicationConfirmation, + usageIndicationRejection UsageIndicationRejection, + usageRejection UsageRejection, + validationRequest ValidationRequest, + validationConfirmation ValidationConfirmation, + validationRejection ValidationRejection, + ..., + authenticationRequest AuthenticationRequest, + authenticationConfirmation AuthenticationConfirmation, + authenticationRejection AuthenticationRejection +} + +MessageCommonInfo ::= SEQUENCE { + sequenceNumber INTEGER(0..65535), + annexGversion ProtocolVersion, -- set to "H.225.0 Annex G V2" + hopCount INTEGER(1..255), + replyAddress SEQUENCE OF TransportAddress OPTIONAL, + -- Must be present in request + integrityCheckValue ICV OPTIONAL, + tokens SEQUENCE OF ClearToken OPTIONAL, + cryptoTokens SEQUENCE OF CryptoH323Token OPTIONAL, + nonStandard SEQUENCE OF NonStandardParameter OPTIONAL, + ..., + serviceID ServiceID OPTIONAL, + genericData SEQUENCE OF GenericData OPTIONAL, + featureSet FeatureSet OPTIONAL, + version ProtocolVersion -- current H.501 protocol version +} + +ServiceID ::= GloballyUniqueID + +-- +-- H.501 messages +-- +ServiceRequest ::= SEQUENCE { + elementIdentifier ElementIdentifier OPTIONAL, + domainIdentifier AliasAddress OPTIONAL, + securityMode SEQUENCE OF SecurityMode OPTIONAL, + timeToLive INTEGER(1..4294967295) OPTIONAL, + ..., + usageSpec UsageSpecification OPTIONAL +} + +SecurityMode ::= SEQUENCE { + authentication AuthenticationMechanism OPTIONAL, + integrity IntegrityMechanism OPTIONAL, + algorithmOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, + ... +} + +ServiceConfirmation ::= SEQUENCE { + elementIdentifier ElementIdentifier, + domainIdentifier AliasAddress, + alternates AlternatePEInfo OPTIONAL, + securityMode SecurityMode OPTIONAL, + timeToLive INTEGER(1..4294967295) OPTIONAL, + ..., + usageSpec UsageSpecification OPTIONAL +} + +ServiceRejection ::= SEQUENCE { + reason ServiceRejectionReason, + alternates AlternatePEInfo OPTIONAL, + ... +} + +ServiceRejectionReason ::= CHOICE { + serviceUnavailable NULL, + serviceRedirected NULL, + security NULL, + continue NULL, + undefined NULL, + ..., + unknownServiceID NULL, + cannotSupportUsageSpec NULL, -- Cannot comply with proposed spec + neededFeature NULL, + genericDataReason NULL, + usageUnavailable NULL, -- Usage reporting not supported + unknownUsageSendTo NULL -- Usage sendTo could not be resolved +} + +ServiceRelease ::= SEQUENCE { + reason ServiceReleaseReason, + alternates AlternatePEInfo OPTIONAL, + ... +} + +ServiceReleaseReason ::= CHOICE { + outOfService NULL, + maintenance NULL, + terminated NULL, + expired NULL, + ... +} + +DescriptorRequest ::= SEQUENCE {descriptorID SEQUENCE OF DescriptorID, + ... +} + +DescriptorConfirmation ::= SEQUENCE {descriptor SEQUENCE OF Descriptor, + ... +} + +DescriptorRejection ::= SEQUENCE { + reason DescriptorRejectionReason, + descriptorID DescriptorID OPTIONAL, + ... +} + +DescriptorRejectionReason ::= CHOICE { + packetSizeExceeded NULL, -- use other transport type + illegalID NULL, -- no descriptor for provided descriptorID + security NULL, -- request did not meet security requirements + hopCountExceeded NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +DescriptorIDRequest ::= SEQUENCE {... +} + +DescriptorIDConfirmation ::= SEQUENCE { + descriptorInfo SEQUENCE OF DescriptorInfo, + ... +} + +DescriptorIDRejection ::= SEQUENCE {reason DescriptorIDRejectionReason, + ... +} + +DescriptorIDRejectionReason ::= CHOICE { + noDescriptors NULL, -- no descriptors to report + security NULL, -- request did not meet security requirements + hopCountExceeded NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +DescriptorUpdate ::= SEQUENCE { + sender AliasAddress, + updateInfo SEQUENCE OF UpdateInformation, + ... +} + +UpdateInformation ::= SEQUENCE { + descriptorInfo + CHOICE {descriptorID DescriptorID, + descriptor Descriptor, + ...}, + updateType CHOICE {added NULL, + deleted NULL, + changed NULL, + ...}, + ... +} + +DescriptorUpdateAck ::= SEQUENCE {... +} + +AccessRequest ::= SEQUENCE { + destinationInfo PartyInformation, + sourceInfo PartyInformation OPTIONAL, + callInfo CallInformation OPTIONAL, + usageSpec UsageSpecification OPTIONAL, + ..., + desiredProtocols SEQUENCE OF SupportedProtocols OPTIONAL +} + +AccessConfirmation ::= SEQUENCE { + templates SEQUENCE OF AddressTemplate, + partialResponse BOOLEAN, + ..., + supportedProtocols SEQUENCE OF SupportedProtocols OPTIONAL, + serviceControl SEQUENCE OF ServiceControlSession OPTIONAL +} + +AccessRejection ::= SEQUENCE { + reason AccessRejectionReason, + ..., + serviceControl SEQUENCE OF ServiceControlSession OPTIONAL +} + +AccessRejectionReason ::= CHOICE { + noMatch NULL, -- no template matched the destinationInfo + packetSizeExceeded NULL, -- use other transport type + security NULL, -- request did not meet security requirements + hopCountExceeded NULL, + needCallInformation NULL, -- Call Information must be specified + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + destinationUnavailable NULL, -- Destination was resolved but is + + -- unavailable + aliasesInconsistent NULL, -- Multiple aliases identify distinct + + -- destinations + resourceUnavailable NULL, -- One or more required resources are + + -- unavailable + incompleteAddress NULL, -- Destination cannot be distinctly + + -- identified + unknownServiceID NULL, -- The serviceID is not recognized by + + -- the peer element + usageUnavailable NULL, -- Usage reporting not supported + cannotSupportUsageSpec NULL, -- Cannot comply with proposed spec + unknownUsageSendTo NULL -- Usage sendTo could not be resolved +} + +UsageRequest ::= SEQUENCE { + callInfo CallInformation, + usageSpec UsageSpecification, + ... +} + +UsageConfirmation ::= SEQUENCE {... +} + +UsageRejection ::= SEQUENCE {reason UsageRejectReason, + ... +} + +UsageIndication ::= SEQUENCE { + callInfo CallInformation, + accessTokens SEQUENCE OF AccessToken OPTIONAL, + senderRole Role, + usageCallStatus UsageCallStatus, + srcInfo PartyInformation OPTIONAL, + destAddress PartyInformation, + startTime TimeStamp OPTIONAL, + endTime TimeStamp OPTIONAL, + terminationCause TerminationCause OPTIONAL, + usageFields SEQUENCE OF UsageField, + ... +} + +UsageField ::= SEQUENCE {id OBJECT IDENTIFIER, + value OCTET STRING, + ... +} + +UsageRejectReason ::= CHOICE { + invalidCall NULL, + unavailable NULL, + security NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +UsageIndicationConfirmation ::= SEQUENCE {... +} + +UsageIndicationRejection ::= SEQUENCE { + reason UsageIndicationRejectionReason, + ... +} + +UsageIndicationRejectionReason ::= CHOICE { + unknownCall NULL, + incomplete NULL, + security NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +ValidationRequest ::= SEQUENCE { + accessToken SEQUENCE OF AccessToken OPTIONAL, + destinationInfo PartyInformation OPTIONAL, + sourceInfo PartyInformation OPTIONAL, + callInfo CallInformation, + usageSpec UsageSpecification OPTIONAL, + ... +} + +ValidationConfirmation ::= SEQUENCE { + destinationInfo PartyInformation OPTIONAL, + usageSpec UsageSpecification OPTIONAL, + ... +} + +ValidationRejection ::= SEQUENCE {reason ValidationRejectionReason, + ... +} + +ValidationRejectionReason ::= CHOICE { + tokenNotValid NULL, + security NULL, -- request did not meet security requirements + hopCountExceeded NULL, + missingSourceInfo NULL, + missingDestInfo NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +RequestInProgress ::= SEQUENCE { + delay INTEGER(1..65535), + ..., + serviceControl SEQUENCE OF ServiceControlSession OPTIONAL +} + +NonStandardRequest ::= SEQUENCE {... +} + +NonStandardConfirmation ::= SEQUENCE {... +} + +NonStandardRejection ::= SEQUENCE {reason NonStandardRejectionReason, + ... +} + +NonStandardRejectionReason ::= CHOICE { + notSupported NULL, + noServiceRelationship NULL, + undefined NULL, + ..., + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL-- The serviceID is not recognized by-- + -- the peer element +} + +UnknownMessageResponse ::= SEQUENCE { + unknownMessage OCTET STRING, + reason UnknownMessageReason, + ... +} + +UnknownMessageReason ::= CHOICE {notUnderstood NULL, + undefined NULL, + ... +} + +AuthenticationRequest ::= SEQUENCE { + applicationMessage ApplicationMessage, -- e.g. RAS message in + + -- ITU-T Rec. H.323 + ... +} + +ApplicationMessage ::= OCTET STRING + +AuthenticationConfirmation ::= SEQUENCE {... +} + +AuthenticationRejection ::= SEQUENCE { + reason AuthenticationRejectionReason, + ... +} + +AuthenticationRejectionReason ::= CHOICE { + security NULL, + hopCountExceeded NULL, + noServiceRelationship NULL, + undefined NULL, + neededFeature NULL, + genericDataReason NULL, + unknownServiceID NULL, + securityWrongSyncTime NULL, -- time server problem or network delay + securityReplay NULL, -- replay attack encountered + securityWrongGeneralID NULL, -- wrong general ID + securityWrongSendersID NULL, -- wrong senders ID + securityIntegrityFailed NULL, -- integrity check failed + securityWrongOID NULL, -- wrong token OIDs or crypto alg OIDs + ... +} + +-- +-- structures common to multiple messages +-- +AddressTemplate ::= SEQUENCE { + pattern SEQUENCE OF Pattern, + routeInfo SEQUENCE OF RouteInformation, + timeToLive INTEGER(1..4294967295), + ..., + supportedProtocols SEQUENCE OF SupportedProtocols OPTIONAL, + featureSet FeatureSet OPTIONAL +} + +Pattern ::= CHOICE { + specific AliasAddress, + wildcard AliasAddress, + range SEQUENCE {startOfRange PartyNumber, + endOfRange PartyNumber}, + ... +} + +RouteInformation ::= SEQUENCE { + messageType + CHOICE {sendAccessRequest NULL, + sendSetup NULL, + nonExistent NULL, + ...}, + callSpecific BOOLEAN, + usageSpec UsageSpecification OPTIONAL, + priceInfo SEQUENCE OF PriceInfoSpec OPTIONAL, + contacts SEQUENCE OF ContactInformation, + type EndpointType OPTIONAL, + -- must be present if messageType = sendSetup + ..., + featureSet FeatureSet OPTIONAL, + circuitID CircuitInfo OPTIONAL, + supportedCircuits SEQUENCE OF CircuitIdentifier OPTIONAL +} + +ContactInformation ::= SEQUENCE { + transportAddress AliasAddress, + priority INTEGER(0..127), + transportQoS TransportQOS OPTIONAL, + security SEQUENCE OF SecurityMode OPTIONAL, + accessTokens SEQUENCE OF AccessToken OPTIONAL, + ..., + multipleCalls BOOLEAN OPTIONAL, + featureSet FeatureSet OPTIONAL, + circuitID CircuitInfo OPTIONAL, + supportedCircuits SEQUENCE OF CircuitIdentifier OPTIONAL +} + +PriceInfoSpec ::= SEQUENCE { + currency IA5String(SIZE (3)), -- e.g. "USD" + currencyScale INTEGER(-127..127), + validFrom GlobalTimeStamp OPTIONAL, + validUntil GlobalTimeStamp OPTIONAL, + hoursFrom IA5String(SIZE (6)) OPTIONAL, -- "HHMMSS" UTC + hoursUntil IA5String(SIZE (6)) OPTIONAL, -- "HHMMSS" UTC + priceElement SEQUENCE OF PriceElement OPTIONAL, + priceFormula IA5String(SIZE (1..2048)) OPTIONAL, + ... +} + +PriceElement ::= SEQUENCE { + amount INTEGER(0..4294967295), -- meter increment + quantum INTEGER(0..4294967295), -- each or part thereof + units + CHOICE {seconds NULL, + packets NULL, + bytes NULL, + initial NULL, + minimum NULL, + maximum NULL, + ...}, + ... +} + +Descriptor ::= SEQUENCE { + descriptorInfo DescriptorInfo, + templates SEQUENCE OF AddressTemplate, + gatekeeperID GatekeeperIdentifier OPTIONAL, + ... +} + +DescriptorInfo ::= SEQUENCE { + descriptorID DescriptorID, + lastChanged GlobalTimeStamp, + ... +} + +AlternatePEInfo ::= SEQUENCE { + alternatePE SEQUENCE OF AlternatePE, + alternateIsPermanent BOOLEAN, + ... +} + +AlternatePE ::= SEQUENCE { + contactAddress AliasAddress, + priority INTEGER(1..127), + elementIdentifier ElementIdentifier OPTIONAL, + ... +} + +AccessToken ::= CHOICE { + token ClearToken, + cryptoToken CryptoH323Token, + ..., + genericData GenericData +} + +CallInformation ::= SEQUENCE { + callIdentifier CallIdentifier, + conferenceID ConferenceIdentifier, + ..., + circuitID CircuitInfo OPTIONAL +} + +UsageCallStatus ::= CHOICE { + preConnect NULL, -- Call has not started + callInProgress NULL, -- Call is in progress + callEnded NULL, -- Call ended + ..., + registrationLost NULL -- Uncertain if call ended or not +} + +UserInformation ::= SEQUENCE { + userIdentifier AliasAddress, + userAuthenticator SEQUENCE OF CryptoH323Token OPTIONAL, + ... +} + +UsageSpecification ::= SEQUENCE { + sendTo ElementIdentifier, + when + SEQUENCE {never NULL OPTIONAL, + start NULL OPTIONAL, + end NULL OPTIONAL, + period INTEGER(1..65535) OPTIONAL, -- in seconds-- + failures NULL OPTIONAL, + ...}, + required SEQUENCE OF OBJECT IDENTIFIER, + preferred SEQUENCE OF OBJECT IDENTIFIER, + ..., + sendToPEAddress AliasAddress OPTIONAL +} + +PartyInformation ::= SEQUENCE { + logicalAddresses SEQUENCE OF AliasAddress, + domainIdentifier AliasAddress OPTIONAL, + transportAddress AliasAddress OPTIONAL, + endpointType EndpointType OPTIONAL, + userInfo UserInformation OPTIONAL, + timeZone TimeZone OPTIONAL, + ... +} + +Role ::= CHOICE { + originator NULL, + destination NULL, + nonStandardData NonStandardParameter, + ... +} + +TimeZone ::= INTEGER(-43200..43200) -- number of seconds relative to UTC + + +-- including DST if appropriate +TerminationCause ::= SEQUENCE { + releaseCompleteReason ReleaseCompleteReason, + causeIE INTEGER(1..65535) OPTIONAL, + nonStandardData NonStandardParameter OPTIONAL, + ... +} + +ProtocolVersion ::= OBJECT IDENTIFIER + +-- shall be set to +-- {itu-t(0) recommendation(0) h(8) h-225-0(2250) annex(1) g(7) +-- version(0) 2} in field annexGversion; +-- {itu-t(0) recommendation(0) h(8) 501 version(0) 1} +-- in field version +DescriptorID ::= + GloballyUniqueID + +ElementIdentifier ::= BMPString(SIZE (1..128)) + +GlobalTimeStamp ::= IA5String(SIZE (14)) + +-- UTC, in the form YYYYMMDDHHmmSS +-- where YYYY = year, MM = month, DD = day, +-- HH = hour, mm = minute, SS = second +-- (for example, 19981219120000 for noon +-- 19 December 1998) +-- +-- REPOSITORY FOR APPLICATION SPECIFIC DATA +-- +-- H.225.0 Annex-G profile data +-- +idAnnexGProfiles INTEGER ::= + 0 + +idAnnexGProfileA INTEGER ::= 1 + +--annexGProfileA EnumeratedParameter ::= +--{ +-- id standard:idAnnexGProfileA +--} +END -- of H501-MESSAGES + +-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/epan/dissectors/asn1/h501/Makefile.am b/epan/dissectors/asn1/h501/Makefile.am new file mode 100644 index 0000000000..72d28e600b --- /dev/null +++ b/epan/dissectors/asn1/h501/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/h501/Makefile.common b/epan/dissectors/asn1/h501/Makefile.common new file mode 100644 index 0000000000..2bb469357a --- /dev/null +++ b/epan/dissectors/asn1/h501/Makefile.common @@ -0,0 +1,48 @@ +# 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 = h501 + +EXT_ASN_FILE_LIST = + +ASN_FILE_LIST = \ + H501-MESSAGES.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) + +A2W_FLAGS = + +EXTRA_CNF = \ + $(builddir)/../h225/h225-exp.cnf \ + $(builddir)/../h235/h235-exp.cnf + +$(builddir)/../h225/h225-exp.cnf: + (cd $(builddir)/../h225 && $(MAKE_CNF_EXPORT)) + +$(builddir)/../h235/h235-exp.cnf: + (cd $(builddir)/../h235 && $(MAKE_CNF_EXPORT)) + diff --git a/epan/dissectors/asn1/h501/Makefile.nmake b/epan/dissectors/asn1/h501/Makefile.nmake new file mode 100644 index 0000000000..d296638ddd --- /dev/null +++ b/epan/dissectors/asn1/h501/Makefile.nmake @@ -0,0 +1,26 @@ +## 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/h501/h501.cnf b/epan/dissectors/asn1/h501/h501.cnf new file mode 100644 index 0000000000..0664c39596 --- /dev/null +++ b/epan/dissectors/asn1/h501/h501.cnf @@ -0,0 +1,26 @@ +# h501.cnf +# H.501 conformation file +# 2007 Tomas Kukosa + +#.INCLUDE ../h225/h225-exp.cnf +#.INCLUDE ../h235/h235-exp.cnf + +#.OPT +PER +ALIGNED +#.END + +#.PDU +Message +#.END + +#.FN_PARS MessageBody + VAL_PTR = &msg_type +#.FN_HDR + gint32 msg_type = -1; + const gchar *p = NULL; +#.FN_FTR + p = try_val_to_str(msg_type, VALS(h501_MessageBody_vals)); + if (p ) + col_set_str(actx->pinfo->cinfo, COL_INFO, p); +#.END diff --git a/epan/dissectors/asn1/h501/packet-h501-template.c b/epan/dissectors/asn1/h501/packet-h501-template.c new file mode 100644 index 0000000000..f4ee5e2c50 --- /dev/null +++ b/epan/dissectors/asn1/h501/packet-h501-template.c @@ -0,0 +1,156 @@ +/* packet-h501.c + * Routines for H.501 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/prefs.h> +#include <epan/oids.h> +#include <epan/asn1.h> + +#include "packet-tpkt.h" +#include "packet-per.h" +#include "packet-h225.h" +#include "packet-h235.h" + +#define PNAME "H.501 Mobility" +#define PSNAME "H.501" +#define PFNAME "h501" + +void proto_register_h501(void); + +/* Initialize the protocol and registered fields */ +static int proto_h501 = -1; +#include "packet-h501-hf.c" + +/* Initialize the subtree pointers */ +static int ett_h501 = -1; +#include "packet-h501-ett.c" + +/* Dissectors */ +static dissector_handle_t h501_pdu_handle; + +/* Preferences */ +static guint h501_udp_port = 2099; +static guint h501_tcp_port = 2099; +static gboolean h501_desegment_tcp = TRUE; + +void proto_reg_handoff_h501(void); + +#include "packet-h501-fn.c" + +static int +dissect_h501_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + proto_item *ti = NULL; + proto_tree *h501_tree = NULL; + + col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME); + + ti = proto_tree_add_item(tree, proto_h501, tvb, 0, -1, ENC_NA); + h501_tree = proto_item_add_subtree(ti, ett_h501); + + return dissect_Message_PDU(tvb, pinfo, h501_tree, NULL); +} + +static int +dissect_h501_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + dissect_tpkt_encap(tvb, pinfo, tree, FALSE, h501_pdu_handle); + return tvb_captured_length(tvb); +} + +static int +dissect_h501_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +{ + dissect_tpkt_encap(tvb, pinfo, tree, h501_desegment_tcp, h501_pdu_handle); + return tvb_captured_length(tvb); +} + +/*--- proto_register_h501 ----------------------------------------------*/ +void proto_register_h501(void) { + module_t *h501_module; + + /* List of fields */ + static hf_register_info hf[] = { +#include "packet-h501-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_h501, +#include "packet-h501-ettarr.c" + }; + + /* Register protocol */ + proto_h501 = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_h501, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + register_dissector(PFNAME, dissect_h501_pdu, proto_h501); + + h501_module = prefs_register_protocol(proto_h501, proto_reg_handoff_h501); + prefs_register_uint_preference(h501_module, "udp.port", + "UDP port", + "Port to be decoded as h501", + 10, &h501_udp_port); + prefs_register_uint_preference(h501_module, "tcp.port", + "TCP port", + "Port to be decoded as h501", + 10, &h501_tcp_port); + prefs_register_bool_preference(h501_module, "desegment", + "Desegment H.501 over TCP", + "Desegment H.501 messages that span more TCP segments", + &h501_desegment_tcp); + +} + +/*--- proto_reg_handoff_h501 -------------------------------------------*/ +void proto_reg_handoff_h501(void) +{ + static gboolean h501_prefs_initialized = FALSE; + static dissector_handle_t h501_udp_handle; + static dissector_handle_t h501_tcp_handle; + static guint saved_h501_udp_port; + static guint saved_h501_tcp_port; + + if (!h501_prefs_initialized) { + h501_pdu_handle = find_dissector(PFNAME); + h501_udp_handle = create_dissector_handle(dissect_h501_udp, proto_h501); + h501_tcp_handle = create_dissector_handle(dissect_h501_tcp, proto_h501); + h501_prefs_initialized = TRUE; + } else { + dissector_delete_uint("udp.port", saved_h501_udp_port, h501_udp_handle); + dissector_delete_uint("tcp.port", saved_h501_tcp_port, h501_tcp_handle); + } + + /* Set our port number for future use */ + saved_h501_udp_port = h501_udp_port; + dissector_add_uint("udp.port", saved_h501_udp_port, h501_udp_handle); + saved_h501_tcp_port = h501_tcp_port; + dissector_add_uint("tcp.port", saved_h501_tcp_port, h501_tcp_handle); + +} + |