From 027f6a02e82b7978750b4661de43cb18ac03e9df Mon Sep 17 00:00:00 2001 From: Damir Franusic Date: Thu, 27 Jan 2022 15:50:54 +0100 Subject: [PATCH] GDT: add dissector for SCTP PPID 49 protocol --- epan/dissectors/CMakeLists.txt | 2 + epan/dissectors/asn1/CMakeLists.txt | 1 + epan/dissectors/asn1/gdt/CMakeLists.txt | 34 + epan/dissectors/asn1/gdt/gdt.asn | 770 ++++++++++ epan/dissectors/asn1/gdt/gdt.cnf | 30 + .../dissectors/asn1/gdt/packet-gdt-template.c | 92 ++ .../dissectors/asn1/gdt/packet-gdt-template.h | 19 + epan/dissectors/packet-gdt.c | 1316 +++++++++++++++++ epan/dissectors/packet-gdt.h | 27 + epan/sctpppids.c | 2 +- epan/sctpppids.h | 2 +- 11 files changed, 2293 insertions(+), 2 deletions(-) create mode 100644 epan/dissectors/asn1/gdt/CMakeLists.txt create mode 100644 epan/dissectors/asn1/gdt/gdt.asn create mode 100644 epan/dissectors/asn1/gdt/gdt.cnf create mode 100644 epan/dissectors/asn1/gdt/packet-gdt-template.c create mode 100644 epan/dissectors/asn1/gdt/packet-gdt-template.h create mode 100644 epan/dissectors/packet-gdt.c create mode 100644 epan/dissectors/packet-gdt.h diff --git a/epan/dissectors/CMakeLists.txt b/epan/dissectors/CMakeLists.txt index 79bfa17e30..bcfbb2c43d 100644 --- a/epan/dissectors/CMakeLists.txt +++ b/epan/dissectors/CMakeLists.txt @@ -96,6 +96,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC ${CMAKE_CURRENT_SOURCE_DIR}/packet-ess.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-f1ap.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-ftam.c + ${CMAKE_CURRENT_SOURCE_DIR}/packet-gdt.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-glow.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-goose.c ${CMAKE_CURRENT_SOURCE_DIR}/packet-gsm_map.c @@ -634,6 +635,7 @@ set(DISSECTOR_PUBLIC_HEADERS packet-xmpp-other.h packet-xmpp-utils.h packet-xnap.h + packet-gdt.h packet-ypbind.h packet-yppasswd.h packet-ypserv.h diff --git a/epan/dissectors/asn1/CMakeLists.txt b/epan/dissectors/asn1/CMakeLists.txt index f1b9fae734..5aec3bcb4c 100644 --- a/epan/dissectors/asn1/CMakeLists.txt +++ b/epan/dissectors/asn1/CMakeLists.txt @@ -39,6 +39,7 @@ set(ASN1_SRC_DIRS ess f1ap ftam + gdt glow goose gprscdr diff --git a/epan/dissectors/asn1/gdt/CMakeLists.txt b/epan/dissectors/asn1/gdt/CMakeLists.txt new file mode 100644 index 0000000000..a44ded160a --- /dev/null +++ b/epan/dissectors/asn1/gdt/CMakeLists.txt @@ -0,0 +1,34 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME gdt ) + +set( PROTO_OPT ) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + ${PROTOCOL_NAME}.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 -b ) + +ASN2WRS() diff --git a/epan/dissectors/asn1/gdt/gdt.asn b/epan/dissectors/asn1/gdt/gdt.asn new file mode 100644 index 0000000000..cdf1c12304 --- /dev/null +++ b/epan/dissectors/asn1/gdt/gdt.asn @@ -0,0 +1,770 @@ +-- =================================================================================================================== +-- GDT protocol definition +-- =================================================================================================================== +GDT {iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 57805} + +DEFINITIONS +IMPLICIT TAGS +::= + + +BEGIN + +-- =========== +-- GDT Header +-- =========== +-- version - GDT version +-- source - source information +-- destination - destination information +-- uuid - universally unique identifier (UUID) +-- sequence-num - sequence number +-- sequence-flag - packet sequence information (stateful/stateless/etc.) +-- enc-info - encryption information +-- hop-info - hop counter +-- status - error code +Header ::= SEQUENCE { + version [0] INTEGER, + source [1] EndPointDescriptor, + destination [2] EndPointDescriptor, + uuid [3] OCTET STRING, + sequence-num [4] INTEGER, + sequence-flag [5] SequenceFlag, + enc-info [6] EncryptionInfo OPTIONAL, + hop-info [7] HopInfo OPTIONAL, + status [8] ErrorCode OPTIONAL, + ... +} + +-- ====================================================== +-- SequenceFlag - stateful/stateless sequence information +-- ====================================================== +-- sf-start - stateful start of sequence +-- sf-continue - stateful sequence continuation +-- sf-end - stateful end of sequence / stateless reply +-- sf-stateless-no-reply - stateless packet, no reply is received to confirm successful delivery, reliability is sctp dependant +-- sf-stateless - stateless packet, sf-end reply is received to confirm successful delivery +-- sf-stream-complete - stream complete +SequenceFlag ::= INTEGER { + sf-start (0), + sf-continue (1), + sf-end (2), + sf-stateless-no-reply (3), + sf-stateless (4), + sf-stream-complete (5), + sf-continue-wait (6), + sf-heartbeat (7) +} + + +-- ================== +-- EndPointDescriptor +-- ================== +-- type - daemon type +-- id - daemon id +EndPointDescriptor ::= SEQUENCE { + type [1] IA5String, + id [2] IA5String OPTIONAL, + ... +} + + +-- ========= +-- GDT Body +-- ========= +-- encrypted-data - Encrypted GDT body, used only when content is encrypted (header.encryption) +-- packet-fwd - General packet forwarding, used for routing and failovers +-- filter - Filtering service, mostly used but not limited to SMS +-- data-retention - Data retention service, used for DB storage +-- general - Reserved for custom daemons and/or future use +-- conf - Configuration daemon service +-- stats - Statistical data exchange +-- auth - Authentication messages, used for daemon authentication +-- reg - Registration messages, used for daemon discovery and various registration procedures (daemons, events, etc.) +-- ntfy - Various notification/alarm/etc. messages +-- data - payload data exchange +-- routing - routing related messages +-- service-msg - service related messages +-- state-msg - statefulness related messages +Body ::= CHOICE { + encrypted-data [1] OCTET STRING, + packet-fwd [2] PacketFwdMessage, + filter [3] FilterMessage, + data-retention [4] DataRetentionMessage, + --general [5] EXPLICIT GeneralMessage, + conf [6] ConfigMessage, + stats [7] StatsMessage, + auth [8] AuthMessage, + reg [9] RegistrationMessage, + ntfy [10] NotifyMessage, + data [11] DataMessage, + routing [12] RoutingMessage, + service-msg [13] ServiceMessage, + state-msg [14] StateMessage, + ... +} + + +-- ================================================= +-- StateMessage - used by MINK statefulness library +-- ================================================= +StateMessage ::= SEQUENCE { + stmch-id OCTET STRING, + state-action StateAction, + params Parameters OPTIONAL, + ... +} + + +-- =========== +-- StateAction +-- =========== +StateAction ::= INTEGER { + sta-update (0) + +} + + +-- ================================================== +-- ServiceMessage - used for service related messages +-- ================================================== +ServiceMessage ::= SEQUENCE { + service-id ServiceId, + service-action ServiceAction, + params Parameters OPTIONAL, + ... +} + +-- ========= +-- ServiceId +-- ========= +ServiceId ::= INTEGER { + sid-stp-routing (42), + sid-sgn-forward (43), + sid-fgn-filtering (44), + sid-security (45), + sid-pdn-filtering (46), + sid-sysagent (47) +} + + +-- ============= +-- ServiceAction +-- ============= +ServiceAction ::= INTEGER { + srvca-request (0), -- generic request + srvca-result (1), -- generic result + srvca-default (2), -- default action + srvca-na (3) -- n/a +} + + +-- ================================================== +-- RoutingMessage - used for routing related messages +-- ================================================== +RoutingMessage ::= SEQUENCE { + routing-action RoutingAction, + params Parameters OPTIONAL, + ... +} + +-- ============= +-- RoutingAction +-- ============= +RoutingAction ::= INTEGER { + roua-route-set (0), + roua-route-get (1), + roua-route-result (2) +} + + +-- ================================================================ +-- RegistrationMessage - used for daemon discovery and registration +-- ================================================================ +-- reg-action - registration action +-- params - registration parameters +RegistrationMessage ::= SEQUENCE { + reg-action RegistrationAction, + params Parameters OPTIONAL, + ... +} + +-- ================== +-- RegistrationAction +-- ================== +RegistrationAction ::= INTEGER { + ra-reg-request (0), + ra-reg-result (1) +} + +-- ======================================== +-- StatsMessage - Statistical data exchange +-- ======================================== +-- stats-action - stats action +-- params - stats parameters +StatsMessage ::= SEQUENCE { + stats-action StatsAction, + params Parameters OPTIONAL, + ... +} + +-- =========== +-- StatsAction +-- =========== +StatsAction ::= INTEGER { + sa-request (0), + sa-result (1) +} + +-- ============================================ +-- AuthMessage - used for daemon authentication +-- ============================================ +-- auth-action - authentication action +-- params - authentication parameters +AuthMessage ::= SEQUENCE { + auth-action AuthAction, + params Parameters OPTIONAL, + ... +} + +-- ========== +-- AuthAction +-- ========== +AuthAction ::= INTEGER { + aa-auth-request (0), + aa-auth-result (1) +} + +-- ========================================== +-- DataRetentionMessage - used for DB storage +-- ========================================== +-- payload-type - payload type +-- payload - payload +-- dr-action - data retention action +-- params - data retention parameters +DataRetentionMessage ::= SEQUENCE { + payload-type PayloadType OPTIONAL, + payload OCTET STRING OPTIONAL, + dr-action DataRetentionAction, + params Parameters OPTIONAL, + ... +} + +-- =================== +-- DataRetentionAction +-- =================== +DataRetentionAction ::= INTEGER { + ra-store (0), + ra-delete (1), + ra-fetch (2), + ra-result (3) +} + +-- ================================= +-- FilterMessage - filtering service +-- ================================= +-- filter-action - filter action +-- params - filter parameters +FilterMessage ::= SEQUENCE { + filter-action FilterAction, + params Parameters OPTIONAL, + ... +} + +-- ============ +-- FilterAction +-- ============ +FilterAction ::= INTEGER { + fa-filter-request (0), + fa-filter-result (1) +} + + + +-- ================================================= +-- PacketFwdMessage - used for routing and failovers +-- ================================================= +-- payload-type - payload type +-- payload - payload +-- params - extra parameters +PacketFwdMessage ::= SEQUENCE { + payload-type PayloadType, + payload OCTET STRING OPTIONAL, + params Parameters OPTIONAL, + ... +} + + +-- ================================================================= +-- NotifyMessage - used for various notification/alarm/etc. messages +-- ================================================================= +-- message-type - notification message type +-- message - notification message +-- params - extra notification parameters +NotifyMessage ::= SEQUENCE { + message-type NotifyMessageType, + message OCTET STRING OPTIONAL, + params Parameters OPTIONAL, + ... +} + +-- ================= +-- NotifyMessageType +-- ================= +NotifyMessageType ::= INTEGER + + +-- ============================================ +-- DataMessage - used for payload data exchange +-- ============================================ +-- type - payload type +-- payload - actual payload +-- params - extra parameters (used instead of payload or as an extra payload information) +DataMessage ::= SEQUENCE { + payload-type PayloadType, + payload OCTET STRING OPTIONAL, + params Parameters OPTIONAL, + ... +} + +-- =========== +-- PayloadType +-- =========== +PayloadType ::= INTEGER { + dmt-unknown (1000), -- UNKNOWN + dmt-r14p (2000), -- GDT + dmt-layer2 (0), -- General layer 2 + dmt-ip (1), -- Internet Protocol (IP) + dmt-sctp (2), -- Stream Control Transmission Protocol (SCTP) + dmt-tcp (3), -- Transmission Control Protocol (TCP) + dmt-udp (4), -- User Datagram Protocol (UDP) + dmt-m3ua (5), -- MTP Level 3 (MTP3) User Adaptation Layer + dmt-m2ua (6), -- Message Transfer Part 2 User Adaptation Layer (M2UA) + dmt-mtp3 (7), -- MTP Level 3 (MTP3) + dmt-isup (8), -- ISDN User Part (ISUP) + dmt-h248 (9), -- H.248 or Megaco or Gateway Control Protocol + dmt-sccp (10), -- Signalling Connection Control Part (SCCP) + dmt-smstpdu (11), -- SMS TPDU 3GPP TS 23.040 + dmt-smpp (12), -- Short Message Peer-to-Peer (SMPP) + dmt-tcap (13), -- Transaction Capabilities Application Part (TCAP) + dmt-rtp (14), -- Real-time Transport Protocol (RTP) + dmt-sip (15), -- Session Initiation Protocol (SIP) + dmt-pop3 (16), -- Post Office Protocol (POP3) + dmt-imap (17), -- Internet message access protocol (IMAP) + dmt-http (18), -- Hypertext Transfer Protocol (HTTP) + dmt-radius (19), -- Remote Authentication Dial In User Service (RADIUS) + dmt-dhcp (20), -- Dynamic Host Configuration Protocol (DHCP) + dmt-smtp (21), -- Simple Mail Transfer Protocol (SMTP) + dmt-m2pa (22), -- Message Transfer Part 2 (MTP) User Peer-to-Peer Adaptation Layer (M2PA) + dmt-mtp2 (23) -- MTP Level 2 (MTP2) +} + + +-- ==================================================== +-- ConfigMessage - used for configuration data exchange +-- ==================================================== +-- action - action required from config daemon +-- payload - result generated by config daemon, action dependant +-- params - extra parameters, optional +ConfigMessage ::= SEQUENCE { + action ConfigAction, + payload OCTET STRING OPTIONAL, + params Parameters OPTIONAL, + ... +} + +-- ============ +-- ConfigAction +-- ============ +-- ca-cfg-get - get configuration item +-- ca-cfg-set - set configuration item +-- ca-cfg-replicate - replicate to other config daemon +-- ca-cfg-ac - auto complete configuration item (mostly used by CLI service) +-- ca-cfg-user-login - user login +-- ca-cfg-user-logout - user logout +ConfigAction ::= INTEGER { + ca-cfg-get (0), + ca-cfg-set (1), + ca-cfg-replicate (2), + ca-cfg-ac (3), + ca-cfg-result (4), + ca-cfg-user-login (5), + ca-cfg-user-logout (6) +} + +-- ===================================== +-- Parameter - general purpose parameter +-- ===================================== +-- id - parameter id +-- value - parameter value(s) +-- +-- Parameter values +-- ================ +-- [0] - parameter data +-- [1] - fragmentation flag (1 byte) +-- [2] - variant parameter id index (1 byte) +-- [3] - variant parameter type (1 byte) +Parameter ::= SEQUENCE { + id ParameterType, + value SEQUENCE OF OCTET STRING OPTIONAL, + ... +} + +-- ========== +-- Parameters +-- ========== +Parameters ::= SEQUENCE OF Parameter + +-- ============== +-- PD Command Id +-- ============== +-- values specific for PD, used in pt-mink-command-id +PdCommandId ::= INTEGER { + pdci-add (1), -- add item to list + pdci-del (2), -- delete item from list + pdci-match (3) -- math item in list +} + +-- ================== +-- Filter Result Type +-- ================== +FilterResultType ::= INTEGER { + frt-accept (1), -- ACCEPT + frt-drop (2) -- DROP +} + + +-- ============= +-- ParameterType +-- ============= +ParameterType ::= INTEGER { + -- User parameters (9000 - 4294967295) + + -- MINK general (6000 - 6100) + pt-mink-daemon-type (6000), -- daemon type + pt-mink-daemon-id (6001), -- daemon id + pt-mink-auth-id (6002), -- authentication identification + pt-mink-auth-password (6003), -- authentication password + pt-mink-daemon-ip (6004), -- daemon ip address + pt-mink-daemon-port (6005), -- daemon port + pt-mink-daemon-description (6006), -- daemon description + pt-mink-action (6007), -- extra action + pt-mink-dpi (6008), -- deep packet inspection (DPI) flag + pt-mink-spi (6009), -- shallow/stateful packet inspection (SPI) flag + pt-mink-timestamp (6010), -- unix timestamp + pt-mink-timestamp-nsec (6011), -- unix timestamp nsec part + pt-mink-security-phase (6012), -- mink security phase + pt-mink-loop-count (6013), -- packet loop count + pt-mink-checksum (6014), -- checksum + pt-mink-timeout (6015), -- timeout + pt-mink-error (6016), -- error code + pt-mink-error-msg (6017), -- error message + pt-mink-status (6018), -- status code + pt-mink-status-msg (6019), -- status message + pt-mink-persistent-correlation (6020), -- persistent GUID + + -- MINK routing (6100 - 6200) + pt-mink-routing-destination (6100), -- routing destination address + pt-mink-routing-source (6101), -- routing source address + pt-mink-routing-gateway (6102), -- routing gateway address + pt-mink-routing-interface (6103), -- routing network interface + pt-mink-routing-priority (6104), -- routing priority + pt-mink-router-status (6105), -- routing capabilities status (0/1) + pt-mink-routing-destination-type (6106), -- routing destination type + pt-mink-routing-index (6107), -- routing index + pt-mink-trunk-label (6108), -- trunk label + pt-mink-connection-type (6109), -- connection type + pt-mink-service-id (6110), -- service id + pt-mink-command-id (6111), -- command id + pt-mink-routing-sub-destination (6112), -- routing sub destination + pt-mink-routing-sub-destination-type (6113), -- routing sub destination type + pt-mink-correlation-notification (6114), -- correlation notification request + pt-mink-guid (6115), -- correlation guid + pt-mink-routing-service-id (6116), -- routing destination service id + + -- MINK events (6200 - 6300) + pt-mink-event-id (6200), -- daemon event identification + pt-mink-event-description (6201), -- daemon event description + pt-mink-event-callback-id (6202), -- daemon event callback identification + pt-mink-event-callback-priority (6203), -- daemon event callback priority + + -- MINK encryption (6300 - 6400) + pt-mink-enc-public-key (6300), -- public encryption key + pt-mink-enc-private-key (6301), -- private encryption key + pt-mink-enc-type (6302), -- encryption type + + -- MINK statistics (6400 - 7400) + pt-mink-stats-id (6400), -- stats id + pt-mink-stats-description (6401), -- stats description + pt-mink-stats-value (6402), -- stats value + pt-mink-stats-count (6403), -- stats item count + + -- MINK configuration (7400 - 7500) + pt-mink-config-param-name (7400), -- configiration parameter name + pt-mink-config-param-value (7401), -- configuration parameter value + pt-mink-config-ac-line (7402), -- line for auto completion + pt-mink-config-cfg-item-name (7403), -- config item name + pt-mink-config-cfg-item-desc (7404), -- config item description + pt-mink-config-cfg-item-ns (7405), -- config item node state + pt-mink-config-cfg-item-value (7406), -- config item committed value + pt-mink-config-cfg-item-nvalue (7407), -- config item uncommitted value + pt-mink-config-cfg-item-nt (7408), -- config item node type + pt-mink-config-cfg-cm-mode (7409), -- config mode + pt-mink-config-cfg-ac-err (7410), -- config auto completion error + pt-mink-config-cli-path (7411), -- config current cli path + pt-mink-config-cfg-line (7412), -- config line result + pt-mink-config-ac-err-count (7413), -- config auto completion error count + pt-mink-config-cfg-line-count (7414), -- config line result count + pt-mink-config-cfg-item-path (7415), -- config item path + pt-mink-config-cfg-item-notify (7416), -- config item on_change notification + pt-mink-config-cfg-item-count (7417), -- config item count + pt-mink-config-replication-line (7418), -- replication command + + -- MINK sms related (7500 - 7600) + pt-mink-sms-status (7500), -- sms status + pt-mink-sms-uuid (7501), -- sms uuid + + -- MINK filtering related (7600 - 7700) + pt-mink-filter-result (7600), -- filter result + pt-mink-filter-exit (7601), -- filter exit rule + pt-mink-filter-list-id (7602), -- list id + pt-mink-filter-list-label (7603), -- list label + pt-mink-filter-data (7604), -- generic filter input/output data + pt-mink-filter-data-size (7605), -- generic filter input/output data size + + -- ETH header (6xx) + pt-eth-destination-mac (600), -- ETH header destination mac address + pt-eth-source-mac (601), -- ETH header source mac address + + -- IP header (7xx) + pt-ip-destination-ip (700), -- IP header destination ip address + pt-ip-source-ip (701), -- IP header source ip address + + -- TCP header (8xx) + pt-tcp-destination-port (800), -- TCP header destination port + pt-tcp-source-port (801), -- TCP header source port + + -- UDP header (9xx) + pt-udp-destination-port (900), -- UDP header destination port + pt-udp-source-port (901), -- UDP header source port + + -- SCTP header (1xxx) + pt-sctp-destination-port (1000), -- SCTP header destination port + pt-sctp-source-port (1001), -- SCTP header source port + + -- TCAP and GSM MAP related (5xx) + pt-gsmmap-scoa-digits (500), -- serviceCentreAddressOA digits + pt-gsmmap-scoa-type-of-number (501), -- serviceCentreAddressOA type of number + pt-gsmmap-scoa-numbering-plan (502), -- serviceCentreAddressOA numbering plan + pt-gsmmap-scda-digits (503), -- serviceCentreAddressDA digits + pt-gsmmap-scda-type-of-number (504), -- serviceCentreAddressDA type of number + pt-gsmmap-scda-numbering-plan (505), -- serviceCentreAddressDA numbering plan + pt-gsmmap-imsi (506), -- IMSI + pt-gsmmap-msisdn-digits (507), -- MSISDN digits + pt-gsmmap-msisdn-type-of-number (508), -- MSISDN type of number + pt-gsmmap-msisdn-numbering-plan (509), -- MSISDN numbering plan + pt-tcap-source-transaction-id (510), -- TCAP Source Transaction Id + pt-tcap-destination-transaction-id (511), -- TCAP Destination Transaction Id + pt-tcap-opcode (512), -- TCAP Operation code + pt-tcap-component-type (513), -- TCAP Component type + pt-tcap-component-invoke-id (514), -- TCAP Invoke Id + pt-tcap-error-type (515), -- TCAP Error Type + pt-tcap-error-code (516), -- TCAP Error code + pt-tcap-dialogue-context-oid (517), -- TCAP Dialogue application context oid + pt-tcap-message-type (518), -- TCAP Message type + pt-gsmmap-nnn-digits (519), -- GSM MAP network node number digits + pt-gsmmap-nnn-type-of-number (520), -- GSM MAP nn type of number + pt-gsmmap-nnn-numbering-plan (521), -- GSM MAP nn numbering plan + pt-gsmmap-an-digits (522), -- GSM MAP additional number digits + pt-gsmmap-an-type-of-number (523), -- GSM MAP an type of number + pt-gsmmap-an-numbering-plan (524), -- GSM MAP an numbering plan + pt-gsmmap-sca-digits (525), -- GSM MAP service centre address digits + pt-gsmmap-sca-type-of-number (526), -- GSM MAP SCA type of number + pt-gsmmap-sca-numbering-plan (527), -- GSM MAP SCA numbering plan + pt-tcap-component-count (528), -- TCAP Component count + pt-tcap-dialogue-context-supported (529), -- TCAP Dialogue context supported + pt-tcap-component-index (530), -- TCAP Compoonent index currently processed + pt-tcap-source-transaction-id-length (531), -- TCAP Source Transaction Id length + pt-tcap-destination-transaction-id-length (532), -- TCAP Destination Transaction Id length + pt-gsmmap-version (533), -- GSM MAP version + + -- GSM SMS TPDU (GSM 03.40) related (4xx) + pt-smstpdu-tp-udhi (400), -- 9.2.3.23 TP-User-Data-Header-Indicator (TP-UDHI) + pt-smstpdu-tp-sri (401), -- 9.2.3.4 TP-Status-Report-Indication (TP-SRI) + pt-smstpdu-tp-mms (402), -- 9.2.3.2 TP-More-Messages-to-Send (TP-MMS) + pt-smstpdu-tp-mti (403), -- 9.2.3.1 TP-Message-Type-Indicator (TP-MTI) + pt-smstpdu-tp-oa-type-of-number (404), -- 9.2.3.7 TP-Originating-Address (TP-OA) type of number + pt-smstpdu-tp-oa-numbering-plan (405), -- 9.2.3.7 TP-Originating-Address (TP-OA) numbering plan + pt-smstpdu-tp-oa-digits (406), -- 9.2.3.7 TP-Originating-Address (TP-OA) digits + pt-smstpdu-tp-pid (407), -- 9.2.3.9 TP-Protocol-Identifier (TP-PID) + pt-smstpdu-tp-dcs (408), -- 9.2.3.10 TP-Data-Coding-Scheme (TP-DCS) + pt-smstpdu-tp-scts (409), -- 9.2.3.11 TP-Service-Centre-Time-Stamp (TP-SCTS) + pt-smstpdu-tp-udl (410), -- 9.2.3.16 TP-User-Data-Length (TP-UDL) + pt-smstpdu-tp-ud (411), -- 9.2.3.24 TP-User Data (TP-UD) + pt-smstpdu-tp-rp (412), -- 9.2.3.17 TP-Reply-Path (TP-RP) + pt-smstpdu-tp-srr (413), -- 9.2.3.5 TP-Status-Report-Request (TP-SRR) + pt-smstpdu-tp-vpf (414), -- 9.2.3.3 TP-Validity-Period-Format (TP-VPF) + pt-smstpdu-tp-rd (415), -- 9.2.3.25 TP-Reject-Duplicates (TP-RD) + pt-smstpdu-tp-da-type-of-number (416), -- 9.2.3.8 TP-Destination-Address (TP-DA) type of number + pt-smstpdu-tp-da-numbering-plan (417), -- 9.2.3.8 TP-Destination-Address (TP-DA) numbering plan + pt-smstpdu-tp-da-digits (418), -- 9.2.3.8 TP-Destination-Address (TP-DA) digits + pt-smstpdu-tp-vp (419), -- 9.2.3.12 TP-Validity-Period (TP-VP) + pt-smstpdu-msg-id (420), -- Message Id + pt-smstpdu-msg-parts (421), -- Message parts + pt-smstpdu-msg-part (422), -- Message part + pt-smstpdu-tp-mr (423), -- Message reference + pt-smstpdu-message-class (424), -- Message class + + -- SCCP related (3xx) + pt-sccp-destination-local-reference (300), -- Destination local reference + pt-sccp-source-local-reference (301), -- Source local reference + pt-sccp-called-party (302), -- Called party address + pt-sccp-calling-party (303), -- Calling party address + pt-sccp-protocol-class (304), -- Protocol class + pt-sccp-segmenting-reassembling (305), -- Segmenting/reassembling + pt-sccp-receive-sequence-number (306), -- Receive sequence number + pt-sccp-sequencing-segmenting (307), -- Sequencing/segmenting + pt-sccp-credit (308), -- Credit + pt-sccp-release-cause (309), -- Release cause + pt-sccp-return-cause (310), -- Return cause + pt-sccp-reset-cause (311), -- Reset cause + pt-sccp-error-cause (312), -- Error cause + pt-sccp-refusal-cause (313), -- Refusal cause + pt-sccp-data (314), -- Data + pt-sccp-segmentation (315), -- Segmentation + pt-sccp-hop-counter (316), -- Hop counter + pt-sccp-importance (317), -- Importance + pt-sccp-long-data (318), -- Long data + pt-sccp-called-pa-routing-indicator (319), -- Called party routing indicator + pt-sccp-called-pa-global-title-indicator (320), -- Called party global title indicator + pt-sccp-called-pa-ssn-indicator (321), -- Called party subsystem number indicator + pt-sccp-called-pa-point-code-indicator (322), -- Called party point code indicator + pt-sccp-called-pa-point-code-number (323), -- Called party point code number + pt-sccp-called-pa-subsystem-number (324), -- Called party subsystem number + pt-sccp-called-pa-gt-numbering-plan (325), -- Called party GT numbering plan + pt-sccp-called-pa-gt-encoding-scheme (326), -- Called party GT encoding scheme + pt-sccp-called-pa-gt-nature-of-address (327), -- Called party GT nature of address + pt-sccp-called-pa-gt-address (328), -- Called party GT address + pt-sccp-called-pa-gt-translation-type (329), -- Called party GT translation type + pt-sccp-calling-pa-routing-indicator (330), -- Calling party routing indicator + pt-sccp-calling-pa-global-title-indicator (331), -- Calling party global title indicator + pt-sccp-calling-pa-ssn-indicator (332), -- Calling party subsystem number indicator + pt-sccp-calling-pa-point-code-indicator (333), -- Calling party point code indicator + pt-sccp-calling-pa-point-code-number (334), -- Calling party point code number + pt-sccp-calling-pa-subsystem-number (335), -- Calling party subsystem number + pt-sccp-calling-pa-gt-numbering-plan (336), -- Calling party GT numbering plan + pt-sccp-calling-pa-gt-encoding-scheme (337), -- Calling party GT encoding scheme + pt-sccp-calling-pa-gt-nature-of-address (338), -- Calling party GT nature of address + pt-sccp-calling-pa-gt-address (339), -- Calling party GT address + pt-sccp-calling-pa-gt-translation-type (340), -- Calling party GT translation type + pt-sccp-message-type (341), -- SCCP Message type + + -- M3UA related (2xx) + pt-m3ua-info-string (200), -- INFO String + pt-m3ua-routing-context (201), -- Routing Context + pt-m3ua-diagnostic-info (202), -- Diagnostic Information + pt-m3ua-heartbeat (203), -- Heartbeat Data + pt-m3ua-traffic-mode-type (204), -- Traffic Mode Type + pt-m3ua-error-code (205), -- Error Code + pt-m3ua-status (206), -- Status + pt-m3ua-asp-identifier (207), -- ASP Identifier + pt-m3ua-affected-point-code (208), -- Affected Point Code + pt-m3ua-correlation-id (209), -- Correlation ID + pt-m3ua-network-appearance (210), -- Network Appearance + pt-m3ua-user-cause (211), -- User/Cause + pt-m3ua-congestion-indications (212), -- Congestion Indications + pt-m3ua-concerned-destination (213), -- Concerned Destination + pt-m3ua-routing-key (214), -- Routing Key + pt-m3ua-registration-result (215), -- Registration Result + pt-m3ua-deregistration-result (216), -- Deregistration Result + pt-m3ua-local-routing-key-identifier (217), -- Local-Routing Key Identifier + pt-m3ua-destination-point-code (218), -- Destination Point Code + pt-m3ua-service-indicators (219), -- Service Indicators + pt-m3ua-origination-point-code-list (220), -- Originating Point Code List + pt-m3ua-circuit-range (221), -- Circuit Range + pt-m3ua-protocol-data (222), -- Protocol Data + pt-m3ua-protocol-data-service-indicator (223), -- Protocol Data service indicator (SI) + pt-m3ua-protocol-data-network-indicator (224), -- Protocol Data network indicator (NI) + pt-m3ua-protocol-data-message-priority (225), -- Protocol Data message priority (MP) + pt-m3ua-protocol-data-destination-point-code (226), -- Protocol Data destination point code (DPC) + pt-m3ua-protocol-data-originating-point-code (227), -- Protocol Data originating point code (OPC) + pt-m3ua-protocol-data-signalling-link-selection-code (228), -- Protocol Data signalling link selection code (SLS) + pt-m3ua-registration-status (229), -- Registration Status + pt-m3ua-deregistration-status (230), -- Deregistration Status + pt-m3ua-header-data (231), -- M3UA header raw data + pt-m3ua-as-label (232), -- Application server (AS) label + pt-m3ua-asp-label (233) -- Application server process (ASP) label +} + + +-- ============================================================== +-- GeneralMessage - reserved for custom daemons and/or future use +-- ============================================================== +-- reserved for future use and/or custom daemons +GeneralMessage ::= ANY + +-- ======= +-- HopInfo +-- ======= +-- current-hop - current hop +-- max-hops - max hops +HopInfo ::= SEQUENCE { + current-hop [1] INTEGER, + max-hops [2] INTEGER, + ... +} + +-- ========= +-- ErrorCode +-- ========= +ErrorCode ::= INTEGER { + err-ok (0), + err-out-of-sequence (1), + err-unknown-sequence (2), + err-unsupported-version (3), + err-timeout (4), + err-unknown-route (5), + err-routing-not-supported (6), + err-max-hops-exceeded (7), + err-unknown-error (255) +} + +-- ============ +-- GDT Message +-- ============ +-- header - packet header +-- body - packet body +GDTMessage ::= SEQUENCE { + header Header, + body Body OPTIONAL, + ... +} + + +-- ================================================================================================================ +-- EncryptionInfo +-- ================================================================================================================ +-- enc-type - cipher type +------------------------------------------------------------------------------------------------------------------- +-- base64 - Base64 Encoding +-- bf bf-cbc bf-cfb bf-ecb bf-ofb - Blowfish Cipher +-- cast cast-cbc - CAST Cipher +-- cast5-cbc cast5-cfb cast5-ecb cast5-ofb - CAST5 Cipher +-- des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ofb - DES Cipher +-- des3 desx des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb - Triple-DES Cipher +-- idea idea-cbc idea-cfb idea-ecb idea-ofb - IDEA Cipher +-- rc2 rc2-cbc rc2-cfb rc2-ecb rc2-ofb - RC2 Cipher +-- rc4 - RC4 Cipher +-- rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb - RC5 Cipher +------------------------------------------------------------------------------------------------------------------- +-- params - cipher related parameters +------------------------------------------------------------------------------------------------------------------- + +EncryptionInfo ::= SEQUENCE { + enc-type OCTET STRING, + params Parameters OPTIONAL, + ... +} + + + +END diff --git a/epan/dissectors/asn1/gdt/gdt.cnf b/epan/dissectors/asn1/gdt/gdt.cnf new file mode 100644 index 0000000000..c5910e3ee8 --- /dev/null +++ b/epan/dissectors/asn1/gdt/gdt.cnf @@ -0,0 +1,30 @@ +# gdt.cnf +# GDT conformation file + +# $Id$ + +#.MODULE_IMPORT + +#.EXPORTS + +#.PDU +GDTMessage + +#.NO_EMIT + +#.OMIT_ASSIGNMENT +GeneralMessage +FilterResultType +PdCommandId + +#.TYPE_RENAME + +#.FIELD_RENAME +EndPointDescriptor/id end_point_id +Parameter/id parameter_type_id + +#.FIELD_ATTR +EndPointDescriptor/id ABBREV=end_point_id +Parameter/id ABBREV=parameter_type_id + +#.END diff --git a/epan/dissectors/asn1/gdt/packet-gdt-template.c b/epan/dissectors/asn1/gdt/packet-gdt-template.c new file mode 100644 index 0000000000..9a828ae46b --- /dev/null +++ b/epan/dissectors/asn1/gdt/packet-gdt-template.c @@ -0,0 +1,92 @@ +/* packet-gdt-template.c + * + * Copyright 2022, Damir Franusic + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +# include "config.h" + +#include +#include +#include +#include + +#include +#include + +#include "packet-ber.h" +#include "packet-gdt.h" + +#define PNAME "Generic Data Transfer Protocol" +#define PSNAME "GDT" +#define PFNAME "gdt" + +/* Initialize the protocol and registered fields */ +static int proto_gdt = -1; +static dissector_handle_t gdt_handle = NULL; + +#include "packet-gdt-hf.c" + +/* Initialize the subtree pointers */ +static int ett_gdt = -1; +#include "packet-gdt-ett.c" + +#include "packet-gdt-fn.c" + +static int dissect_gdt(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + void *data _U_) { + proto_item *gdt_item = NULL; + proto_tree *gdt_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME); + + /* create the gdt protocol tree */ + if (tree) { + gdt_item = proto_tree_add_item(tree, proto_gdt, tvb, 0, -1, FALSE); + gdt_tree = proto_item_add_subtree(gdt_item, ett_gdt); + dissect_GDTMessage_PDU(tvb, pinfo, gdt_tree, 0); + } + return tvb_captured_length(tvb); +} + +/*--- proto_register_gdt ----------------------------------------------*/ +void proto_register_gdt(void) { + /* List of fields */ + static hf_register_info hf[] = { +#include "packet-gdt-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_gdt, +#include "packet-gdt-ettarr.c" + }; + + /* Register protocol */ + proto_gdt = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_gdt, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); +} + +/*--- proto_reg_handoff_gdt -------------------------------------------*/ +void proto_reg_handoff_gdt(void) { + static gboolean initialized = FALSE; + + if (!initialized) { + gdt_handle = create_dissector_handle(dissect_gdt, proto_gdt); + dissector_add_for_decode_as("sctp.ppi", gdt_handle); + dissector_add_uint("sctp.ppi", GDT_PROTOCOL_ID, gdt_handle); + initialized = TRUE; + } +} diff --git a/epan/dissectors/asn1/gdt/packet-gdt-template.h b/epan/dissectors/asn1/gdt/packet-gdt-template.h new file mode 100644 index 0000000000..a24ba44667 --- /dev/null +++ b/epan/dissectors/asn1/gdt/packet-gdt-template.h @@ -0,0 +1,19 @@ +/* packet-gdt-template.h + * + * Copyright 2022, Damir Franusic + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +#ifndef PACKET_GDT_H +#define PACKET_GDT_H + +void proto_register_gdt(void); +void proto_reg_handoff_gdt(void); + +#endif /* PACKET_GDT_H */ diff --git a/epan/dissectors/packet-gdt.c b/epan/dissectors/packet-gdt.c new file mode 100644 index 0000000000..14a600cbe4 --- /dev/null +++ b/epan/dissectors/packet-gdt.c @@ -0,0 +1,1316 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-gdt.c */ +/* asn2wrs.py -b -p gdt -c ./gdt.cnf -s ./packet-gdt-template -D . -O ../.. gdt.asn */ + +/* Input file: packet-gdt-template.c */ + +#line 1 "./asn1/gdt/packet-gdt-template.c" +/* packet-gdt-template.c + * + * Copyright 2022, Damir Franusic + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +# include "config.h" + +#include +#include +#include +#include + +#include +#include + +#include "packet-ber.h" +#include "packet-gdt.h" + +#define PNAME "Generic Data Transfer Protocol" +#define PSNAME "GDT" +#define PFNAME "gdt" + +/* Initialize the protocol and registered fields */ +static int proto_gdt = -1; +static dissector_handle_t gdt_handle = NULL; + + +/*--- Included file: packet-gdt-hf.c ---*/ +#line 1 "./asn1/gdt/packet-gdt-hf.c" +static int hf_gdt_GDTMessage_PDU = -1; /* GDTMessage */ +static int hf_gdt_version = -1; /* INTEGER */ +static int hf_gdt_source = -1; /* EndPointDescriptor */ +static int hf_gdt_destination = -1; /* EndPointDescriptor */ +static int hf_gdt_uuid = -1; /* OCTET_STRING */ +static int hf_gdt_sequence_num = -1; /* INTEGER */ +static int hf_gdt_sequence_flag = -1; /* SequenceFlag */ +static int hf_gdt_enc_info = -1; /* EncryptionInfo */ +static int hf_gdt_hop_info = -1; /* HopInfo */ +static int hf_gdt_status = -1; /* ErrorCode */ +static int hf_gdt_type = -1; /* IA5String */ +static int hf_gdt_end_point_id = -1; /* IA5String */ +static int hf_gdt_encrypted_data = -1; /* OCTET_STRING */ +static int hf_gdt_packet_fwd = -1; /* PacketFwdMessage */ +static int hf_gdt_filter = -1; /* FilterMessage */ +static int hf_gdt_data_retention = -1; /* DataRetentionMessage */ +static int hf_gdt_conf = -1; /* ConfigMessage */ +static int hf_gdt_stats = -1; /* StatsMessage */ +static int hf_gdt_auth = -1; /* AuthMessage */ +static int hf_gdt_reg = -1; /* RegistrationMessage */ +static int hf_gdt_ntfy = -1; /* NotifyMessage */ +static int hf_gdt_data = -1; /* DataMessage */ +static int hf_gdt_routing = -1; /* RoutingMessage */ +static int hf_gdt_service_msg = -1; /* ServiceMessage */ +static int hf_gdt_state_msg = -1; /* StateMessage */ +static int hf_gdt_stmch_id = -1; /* OCTET_STRING */ +static int hf_gdt_state_action = -1; /* StateAction */ +static int hf_gdt_params = -1; /* Parameters */ +static int hf_gdt_service_id = -1; /* ServiceId */ +static int hf_gdt_service_action = -1; /* ServiceAction */ +static int hf_gdt_routing_action = -1; /* RoutingAction */ +static int hf_gdt_reg_action = -1; /* RegistrationAction */ +static int hf_gdt_stats_action = -1; /* StatsAction */ +static int hf_gdt_auth_action = -1; /* AuthAction */ +static int hf_gdt_payload_type = -1; /* PayloadType */ +static int hf_gdt_payload = -1; /* OCTET_STRING */ +static int hf_gdt_dr_action = -1; /* DataRetentionAction */ +static int hf_gdt_filter_action = -1; /* FilterAction */ +static int hf_gdt_message_type = -1; /* NotifyMessageType */ +static int hf_gdt_message = -1; /* OCTET_STRING */ +static int hf_gdt_action = -1; /* ConfigAction */ +static int hf_gdt_parameter_type_id = -1; /* ParameterType */ +static int hf_gdt_value = -1; /* T_value */ +static int hf_gdt_value_item = -1; /* OCTET_STRING */ +static int hf_gdt_Parameters_item = -1; /* Parameter */ +static int hf_gdt_current_hop = -1; /* INTEGER */ +static int hf_gdt_max_hops = -1; /* INTEGER */ +static int hf_gdt_header = -1; /* Header */ +static int hf_gdt_body = -1; /* Body */ +static int hf_gdt_enc_type = -1; /* OCTET_STRING */ + +/*--- End of included file: packet-gdt-hf.c ---*/ +#line 35 "./asn1/gdt/packet-gdt-template.c" + +/* Initialize the subtree pointers */ +static int ett_gdt = -1; + +/*--- Included file: packet-gdt-ett.c ---*/ +#line 1 "./asn1/gdt/packet-gdt-ett.c" +static gint ett_gdt_Header = -1; +static gint ett_gdt_EndPointDescriptor = -1; +static gint ett_gdt_Body = -1; +static gint ett_gdt_StateMessage = -1; +static gint ett_gdt_ServiceMessage = -1; +static gint ett_gdt_RoutingMessage = -1; +static gint ett_gdt_RegistrationMessage = -1; +static gint ett_gdt_StatsMessage = -1; +static gint ett_gdt_AuthMessage = -1; +static gint ett_gdt_DataRetentionMessage = -1; +static gint ett_gdt_FilterMessage = -1; +static gint ett_gdt_PacketFwdMessage = -1; +static gint ett_gdt_NotifyMessage = -1; +static gint ett_gdt_DataMessage = -1; +static gint ett_gdt_ConfigMessage = -1; +static gint ett_gdt_Parameter = -1; +static gint ett_gdt_T_value = -1; +static gint ett_gdt_Parameters = -1; +static gint ett_gdt_HopInfo = -1; +static gint ett_gdt_GDTMessage = -1; +static gint ett_gdt_EncryptionInfo = -1; + +/*--- End of included file: packet-gdt-ett.c ---*/ +#line 39 "./asn1/gdt/packet-gdt-template.c" + + +/*--- Included file: packet-gdt-fn.c ---*/ +#line 1 "./asn1/gdt/packet-gdt-fn.c" + + +static int +dissect_gdt_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gdt_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t EndPointDescriptor_sequence[] = { + { &hf_gdt_type , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gdt_IA5String }, + { &hf_gdt_end_point_id , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gdt_IA5String }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_EndPointDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + EndPointDescriptor_sequence, hf_index, ett_gdt_EndPointDescriptor); + + return offset; +} + + + +static int +dissect_gdt_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gdt_SequenceFlag_vals[] = { + { 0, "sf-start" }, + { 1, "sf-continue" }, + { 2, "sf-end" }, + { 3, "sf-stateless-no-reply" }, + { 4, "sf-stateless" }, + { 5, "sf-stream-complete" }, + { 6, "sf-continue-wait" }, + { 7, "sf-heartbeat" }, + { 0, NULL } +}; + + +static int +dissect_gdt_SequenceFlag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gdt_ParameterType_vals[] = { + { 6000, "pt-mink-daemon-type" }, + { 6001, "pt-mink-daemon-id" }, + { 6002, "pt-mink-auth-id" }, + { 6003, "pt-mink-auth-password" }, + { 6004, "pt-mink-daemon-ip" }, + { 6005, "pt-mink-daemon-port" }, + { 6006, "pt-mink-daemon-description" }, + { 6007, "pt-mink-action" }, + { 6008, "pt-mink-dpi" }, + { 6009, "pt-mink-spi" }, + { 6010, "pt-mink-timestamp" }, + { 6011, "pt-mink-timestamp-nsec" }, + { 6012, "pt-mink-security-phase" }, + { 6013, "pt-mink-loop-count" }, + { 6014, "pt-mink-checksum" }, + { 6015, "pt-mink-timeout" }, + { 6016, "pt-mink-error" }, + { 6017, "pt-mink-error-msg" }, + { 6018, "pt-mink-status" }, + { 6019, "pt-mink-status-msg" }, + { 6020, "pt-mink-persistent-correlation" }, + { 6100, "pt-mink-routing-destination" }, + { 6101, "pt-mink-routing-source" }, + { 6102, "pt-mink-routing-gateway" }, + { 6103, "pt-mink-routing-interface" }, + { 6104, "pt-mink-routing-priority" }, + { 6105, "pt-mink-router-status" }, + { 6106, "pt-mink-routing-destination-type" }, + { 6107, "pt-mink-routing-index" }, + { 6108, "pt-mink-trunk-label" }, + { 6109, "pt-mink-connection-type" }, + { 6110, "pt-mink-service-id" }, + { 6111, "pt-mink-command-id" }, + { 6112, "pt-mink-routing-sub-destination" }, + { 6113, "pt-mink-routing-sub-destination-type" }, + { 6114, "pt-mink-correlation-notification" }, + { 6115, "pt-mink-guid" }, + { 6116, "pt-mink-routing-service-id" }, + { 6200, "pt-mink-event-id" }, + { 6201, "pt-mink-event-description" }, + { 6202, "pt-mink-event-callback-id" }, + { 6203, "pt-mink-event-callback-priority" }, + { 6300, "pt-mink-enc-public-key" }, + { 6301, "pt-mink-enc-private-key" }, + { 6302, "pt-mink-enc-type" }, + { 6400, "pt-mink-stats-id" }, + { 6401, "pt-mink-stats-description" }, + { 6402, "pt-mink-stats-value" }, + { 6403, "pt-mink-stats-count" }, + { 7400, "pt-mink-config-param-name" }, + { 7401, "pt-mink-config-param-value" }, + { 7402, "pt-mink-config-ac-line" }, + { 7403, "pt-mink-config-cfg-item-name" }, + { 7404, "pt-mink-config-cfg-item-desc" }, + { 7405, "pt-mink-config-cfg-item-ns" }, + { 7406, "pt-mink-config-cfg-item-value" }, + { 7407, "pt-mink-config-cfg-item-nvalue" }, + { 7408, "pt-mink-config-cfg-item-nt" }, + { 7409, "pt-mink-config-cfg-cm-mode" }, + { 7410, "pt-mink-config-cfg-ac-err" }, + { 7411, "pt-mink-config-cli-path" }, + { 7412, "pt-mink-config-cfg-line" }, + { 7413, "pt-mink-config-ac-err-count" }, + { 7414, "pt-mink-config-cfg-line-count" }, + { 7415, "pt-mink-config-cfg-item-path" }, + { 7416, "pt-mink-config-cfg-item-notify" }, + { 7417, "pt-mink-config-cfg-item-count" }, + { 7418, "pt-mink-config-replication-line" }, + { 7500, "pt-mink-sms-status" }, + { 7501, "pt-mink-sms-uuid" }, + { 7600, "pt-mink-filter-result" }, + { 7601, "pt-mink-filter-exit" }, + { 7602, "pt-mink-filter-list-id" }, + { 7603, "pt-mink-filter-list-label" }, + { 7604, "pt-mink-filter-data" }, + { 7605, "pt-mink-filter-data-size" }, + { 600, "pt-eth-destination-mac" }, + { 601, "pt-eth-source-mac" }, + { 700, "pt-ip-destination-ip" }, + { 701, "pt-ip-source-ip" }, + { 800, "pt-tcp-destination-port" }, + { 801, "pt-tcp-source-port" }, + { 900, "pt-udp-destination-port" }, + { 901, "pt-udp-source-port" }, + { 1000, "pt-sctp-destination-port" }, + { 1001, "pt-sctp-source-port" }, + { 500, "pt-gsmmap-scoa-digits" }, + { 501, "pt-gsmmap-scoa-type-of-number" }, + { 502, "pt-gsmmap-scoa-numbering-plan" }, + { 503, "pt-gsmmap-scda-digits" }, + { 504, "pt-gsmmap-scda-type-of-number" }, + { 505, "pt-gsmmap-scda-numbering-plan" }, + { 506, "pt-gsmmap-imsi" }, + { 507, "pt-gsmmap-msisdn-digits" }, + { 508, "pt-gsmmap-msisdn-type-of-number" }, + { 509, "pt-gsmmap-msisdn-numbering-plan" }, + { 510, "pt-tcap-source-transaction-id" }, + { 511, "pt-tcap-destination-transaction-id" }, + { 512, "pt-tcap-opcode" }, + { 513, "pt-tcap-component-type" }, + { 514, "pt-tcap-component-invoke-id" }, + { 515, "pt-tcap-error-type" }, + { 516, "pt-tcap-error-code" }, + { 517, "pt-tcap-dialogue-context-oid" }, + { 518, "pt-tcap-message-type" }, + { 519, "pt-gsmmap-nnn-digits" }, + { 520, "pt-gsmmap-nnn-type-of-number" }, + { 521, "pt-gsmmap-nnn-numbering-plan" }, + { 522, "pt-gsmmap-an-digits" }, + { 523, "pt-gsmmap-an-type-of-number" }, + { 524, "pt-gsmmap-an-numbering-plan" }, + { 525, "pt-gsmmap-sca-digits" }, + { 526, "pt-gsmmap-sca-type-of-number" }, + { 527, "pt-gsmmap-sca-numbering-plan" }, + { 528, "pt-tcap-component-count" }, + { 529, "pt-tcap-dialogue-context-supported" }, + { 530, "pt-tcap-component-index" }, + { 531, "pt-tcap-source-transaction-id-length" }, + { 532, "pt-tcap-destination-transaction-id-length" }, + { 533, "pt-gsmmap-version" }, + { 400, "pt-smstpdu-tp-udhi" }, + { 401, "pt-smstpdu-tp-sri" }, + { 402, "pt-smstpdu-tp-mms" }, + { 403, "pt-smstpdu-tp-mti" }, + { 404, "pt-smstpdu-tp-oa-type-of-number" }, + { 405, "pt-smstpdu-tp-oa-numbering-plan" }, + { 406, "pt-smstpdu-tp-oa-digits" }, + { 407, "pt-smstpdu-tp-pid" }, + { 408, "pt-smstpdu-tp-dcs" }, + { 409, "pt-smstpdu-tp-scts" }, + { 410, "pt-smstpdu-tp-udl" }, + { 411, "pt-smstpdu-tp-ud" }, + { 412, "pt-smstpdu-tp-rp" }, + { 413, "pt-smstpdu-tp-srr" }, + { 414, "pt-smstpdu-tp-vpf" }, + { 415, "pt-smstpdu-tp-rd" }, + { 416, "pt-smstpdu-tp-da-type-of-number" }, + { 417, "pt-smstpdu-tp-da-numbering-plan" }, + { 418, "pt-smstpdu-tp-da-digits" }, + { 419, "pt-smstpdu-tp-vp" }, + { 420, "pt-smstpdu-msg-id" }, + { 421, "pt-smstpdu-msg-parts" }, + { 422, "pt-smstpdu-msg-part" }, + { 423, "pt-smstpdu-tp-mr" }, + { 424, "pt-smstpdu-message-class" }, + { 300, "pt-sccp-destination-local-reference" }, + { 301, "pt-sccp-source-local-reference" }, + { 302, "pt-sccp-called-party" }, + { 303, "pt-sccp-calling-party" }, + { 304, "pt-sccp-protocol-class" }, + { 305, "pt-sccp-segmenting-reassembling" }, + { 306, "pt-sccp-receive-sequence-number" }, + { 307, "pt-sccp-sequencing-segmenting" }, + { 308, "pt-sccp-credit" }, + { 309, "pt-sccp-release-cause" }, + { 310, "pt-sccp-return-cause" }, + { 311, "pt-sccp-reset-cause" }, + { 312, "pt-sccp-error-cause" }, + { 313, "pt-sccp-refusal-cause" }, + { 314, "pt-sccp-data" }, + { 315, "pt-sccp-segmentation" }, + { 316, "pt-sccp-hop-counter" }, + { 317, "pt-sccp-importance" }, + { 318, "pt-sccp-long-data" }, + { 319, "pt-sccp-called-pa-routing-indicator" }, + { 320, "pt-sccp-called-pa-global-title-indicator" }, + { 321, "pt-sccp-called-pa-ssn-indicator" }, + { 322, "pt-sccp-called-pa-point-code-indicator" }, + { 323, "pt-sccp-called-pa-point-code-number" }, + { 324, "pt-sccp-called-pa-subsystem-number" }, + { 325, "pt-sccp-called-pa-gt-numbering-plan" }, + { 326, "pt-sccp-called-pa-gt-encoding-scheme" }, + { 327, "pt-sccp-called-pa-gt-nature-of-address" }, + { 328, "pt-sccp-called-pa-gt-address" }, + { 329, "pt-sccp-called-pa-gt-translation-type" }, + { 330, "pt-sccp-calling-pa-routing-indicator" }, + { 331, "pt-sccp-calling-pa-global-title-indicator" }, + { 332, "pt-sccp-calling-pa-ssn-indicator" }, + { 333, "pt-sccp-calling-pa-point-code-indicator" }, + { 334, "pt-sccp-calling-pa-point-code-number" }, + { 335, "pt-sccp-calling-pa-subsystem-number" }, + { 336, "pt-sccp-calling-pa-gt-numbering-plan" }, + { 337, "pt-sccp-calling-pa-gt-encoding-scheme" }, + { 338, "pt-sccp-calling-pa-gt-nature-of-address" }, + { 339, "pt-sccp-calling-pa-gt-address" }, + { 340, "pt-sccp-calling-pa-gt-translation-type" }, + { 341, "pt-sccp-message-type" }, + { 200, "pt-m3ua-info-string" }, + { 201, "pt-m3ua-routing-context" }, + { 202, "pt-m3ua-diagnostic-info" }, + { 203, "pt-m3ua-heartbeat" }, + { 204, "pt-m3ua-traffic-mode-type" }, + { 205, "pt-m3ua-error-code" }, + { 206, "pt-m3ua-status" }, + { 207, "pt-m3ua-asp-identifier" }, + { 208, "pt-m3ua-affected-point-code" }, + { 209, "pt-m3ua-correlation-id" }, + { 210, "pt-m3ua-network-appearance" }, + { 211, "pt-m3ua-user-cause" }, + { 212, "pt-m3ua-congestion-indications" }, + { 213, "pt-m3ua-concerned-destination" }, + { 214, "pt-m3ua-routing-key" }, + { 215, "pt-m3ua-registration-result" }, + { 216, "pt-m3ua-deregistration-result" }, + { 217, "pt-m3ua-local-routing-key-identifier" }, + { 218, "pt-m3ua-destination-point-code" }, + { 219, "pt-m3ua-service-indicators" }, + { 220, "pt-m3ua-origination-point-code-list" }, + { 221, "pt-m3ua-circuit-range" }, + { 222, "pt-m3ua-protocol-data" }, + { 223, "pt-m3ua-protocol-data-service-indicator" }, + { 224, "pt-m3ua-protocol-data-network-indicator" }, + { 225, "pt-m3ua-protocol-data-message-priority" }, + { 226, "pt-m3ua-protocol-data-destination-point-code" }, + { 227, "pt-m3ua-protocol-data-originating-point-code" }, + { 228, "pt-m3ua-protocol-data-signalling-link-selection-code" }, + { 229, "pt-m3ua-registration-status" }, + { 230, "pt-m3ua-deregistration-status" }, + { 231, "pt-m3ua-header-data" }, + { 232, "pt-m3ua-as-label" }, + { 233, "pt-m3ua-asp-label" }, + { 0, NULL } +}; + + +static int +dissect_gdt_ParameterType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t T_value_sequence_of[1] = { + { &hf_gdt_value_item , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, +}; + +static int +dissect_gdt_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + T_value_sequence_of, hf_index, ett_gdt_T_value); + + return offset; +} + + +static const ber_sequence_t Parameter_sequence[] = { + { &hf_gdt_parameter_type_id, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_ParameterType }, + { &hf_gdt_value , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_T_value }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_Parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + Parameter_sequence, hf_index, ett_gdt_Parameter); + + return offset; +} + + +static const ber_sequence_t Parameters_sequence_of[1] = { + { &hf_gdt_Parameters_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gdt_Parameter }, +}; + +static int +dissect_gdt_Parameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + Parameters_sequence_of, hf_index, ett_gdt_Parameters); + + return offset; +} + + +static const ber_sequence_t EncryptionInfo_sequence[] = { + { &hf_gdt_enc_type , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_EncryptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + EncryptionInfo_sequence, hf_index, ett_gdt_EncryptionInfo); + + return offset; +} + + +static const ber_sequence_t HopInfo_sequence[] = { + { &hf_gdt_current_hop , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gdt_INTEGER }, + { &hf_gdt_max_hops , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gdt_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_HopInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + HopInfo_sequence, hf_index, ett_gdt_HopInfo); + + return offset; +} + + +static const value_string gdt_ErrorCode_vals[] = { + { 0, "err-ok" }, + { 1, "err-out-of-sequence" }, + { 2, "err-unknown-sequence" }, + { 3, "err-unsupported-version" }, + { 4, "err-timeout" }, + { 5, "err-unknown-route" }, + { 6, "err-routing-not-supported" }, + { 7, "err-max-hops-exceeded" }, + { 255, "err-unknown-error" }, + { 0, NULL } +}; + + +static int +dissect_gdt_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t Header_sequence[] = { + { &hf_gdt_version , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gdt_INTEGER }, + { &hf_gdt_source , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gdt_EndPointDescriptor }, + { &hf_gdt_destination , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gdt_EndPointDescriptor }, + { &hf_gdt_uuid , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_sequence_num , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gdt_INTEGER }, + { &hf_gdt_sequence_flag , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gdt_SequenceFlag }, + { &hf_gdt_enc_info , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gdt_EncryptionInfo }, + { &hf_gdt_hop_info , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gdt_HopInfo }, + { &hf_gdt_status , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gdt_ErrorCode }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_Header(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + Header_sequence, hf_index, ett_gdt_Header); + + return offset; +} + + +static const value_string gdt_PayloadType_vals[] = { + { 1000, "dmt-unknown" }, + { 2000, "dmt-r14p" }, + { 0, "dmt-layer2" }, + { 1, "dmt-ip" }, + { 2, "dmt-sctp" }, + { 3, "dmt-tcp" }, + { 4, "dmt-udp" }, + { 5, "dmt-m3ua" }, + { 6, "dmt-m2ua" }, + { 7, "dmt-mtp3" }, + { 8, "dmt-isup" }, + { 9, "dmt-h248" }, + { 10, "dmt-sccp" }, + { 11, "dmt-smstpdu" }, + { 12, "dmt-smpp" }, + { 13, "dmt-tcap" }, + { 14, "dmt-rtp" }, + { 15, "dmt-sip" }, + { 16, "dmt-pop3" }, + { 17, "dmt-imap" }, + { 18, "dmt-http" }, + { 19, "dmt-radius" }, + { 20, "dmt-dhcp" }, + { 21, "dmt-smtp" }, + { 22, "dmt-m2pa" }, + { 23, "dmt-mtp2" }, + { 0, NULL } +}; + + +static int +dissect_gdt_PayloadType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t PacketFwdMessage_sequence[] = { + { &hf_gdt_payload_type , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_PayloadType }, + { &hf_gdt_payload , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_PacketFwdMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + PacketFwdMessage_sequence, hf_index, ett_gdt_PacketFwdMessage); + + return offset; +} + + +static const value_string gdt_FilterAction_vals[] = { + { 0, "fa-filter-request" }, + { 1, "fa-filter-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_FilterAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t FilterMessage_sequence[] = { + { &hf_gdt_filter_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_FilterAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_FilterMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + FilterMessage_sequence, hf_index, ett_gdt_FilterMessage); + + return offset; +} + + +static const value_string gdt_DataRetentionAction_vals[] = { + { 0, "ra-store" }, + { 1, "ra-delete" }, + { 2, "ra-fetch" }, + { 3, "ra-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_DataRetentionAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t DataRetentionMessage_sequence[] = { + { &hf_gdt_payload_type , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_PayloadType }, + { &hf_gdt_payload , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_dr_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_DataRetentionAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_DataRetentionMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + DataRetentionMessage_sequence, hf_index, ett_gdt_DataRetentionMessage); + + return offset; +} + + +static const value_string gdt_ConfigAction_vals[] = { + { 0, "ca-cfg-get" }, + { 1, "ca-cfg-set" }, + { 2, "ca-cfg-replicate" }, + { 3, "ca-cfg-ac" }, + { 4, "ca-cfg-result" }, + { 5, "ca-cfg-user-login" }, + { 6, "ca-cfg-user-logout" }, + { 0, NULL } +}; + + +static int +dissect_gdt_ConfigAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t ConfigMessage_sequence[] = { + { &hf_gdt_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_ConfigAction }, + { &hf_gdt_payload , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_ConfigMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ConfigMessage_sequence, hf_index, ett_gdt_ConfigMessage); + + return offset; +} + + +static const value_string gdt_StatsAction_vals[] = { + { 0, "sa-request" }, + { 1, "sa-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_StatsAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t StatsMessage_sequence[] = { + { &hf_gdt_stats_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_StatsAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_StatsMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + StatsMessage_sequence, hf_index, ett_gdt_StatsMessage); + + return offset; +} + + +static const value_string gdt_AuthAction_vals[] = { + { 0, "aa-auth-request" }, + { 1, "aa-auth-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_AuthAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t AuthMessage_sequence[] = { + { &hf_gdt_auth_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_AuthAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_AuthMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + AuthMessage_sequence, hf_index, ett_gdt_AuthMessage); + + return offset; +} + + +static const value_string gdt_RegistrationAction_vals[] = { + { 0, "ra-reg-request" }, + { 1, "ra-reg-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_RegistrationAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t RegistrationMessage_sequence[] = { + { &hf_gdt_reg_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_RegistrationAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_RegistrationMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + RegistrationMessage_sequence, hf_index, ett_gdt_RegistrationMessage); + + return offset; +} + + + +static int +dissect_gdt_NotifyMessageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t NotifyMessage_sequence[] = { + { &hf_gdt_message_type , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_NotifyMessageType }, + { &hf_gdt_message , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_NotifyMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + NotifyMessage_sequence, hf_index, ett_gdt_NotifyMessage); + + return offset; +} + + +static const ber_sequence_t DataMessage_sequence[] = { + { &hf_gdt_payload_type , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_PayloadType }, + { &hf_gdt_payload , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_DataMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + DataMessage_sequence, hf_index, ett_gdt_DataMessage); + + return offset; +} + + +static const value_string gdt_RoutingAction_vals[] = { + { 0, "roua-route-set" }, + { 1, "roua-route-get" }, + { 2, "roua-route-result" }, + { 0, NULL } +}; + + +static int +dissect_gdt_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t RoutingMessage_sequence[] = { + { &hf_gdt_routing_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_RoutingAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_RoutingMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + RoutingMessage_sequence, hf_index, ett_gdt_RoutingMessage); + + return offset; +} + + +static const value_string gdt_ServiceId_vals[] = { + { 42, "sid-stp-routing" }, + { 43, "sid-sgn-forward" }, + { 44, "sid-fgn-filtering" }, + { 45, "sid-security" }, + { 46, "sid-pdn-filtering" }, + { 47, "sid-sysagent" }, + { 0, NULL } +}; + + +static int +dissect_gdt_ServiceId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gdt_ServiceAction_vals[] = { + { 0, "srvca-request" }, + { 1, "srvca-result" }, + { 2, "srvca-default" }, + { 3, "srvca-na" }, + { 0, NULL } +}; + + +static int +dissect_gdt_ServiceAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t ServiceMessage_sequence[] = { + { &hf_gdt_service_id , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_ServiceId }, + { &hf_gdt_service_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_ServiceAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_ServiceMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ServiceMessage_sequence, hf_index, ett_gdt_ServiceMessage); + + return offset; +} + + +static const value_string gdt_StateAction_vals[] = { + { 0, "sta-update" }, + { 0, NULL } +}; + + +static int +dissect_gdt_StateAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t StateMessage_sequence[] = { + { &hf_gdt_stmch_id , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gdt_OCTET_STRING }, + { &hf_gdt_state_action , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gdt_StateAction }, + { &hf_gdt_params , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gdt_Parameters }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_StateMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + StateMessage_sequence, hf_index, ett_gdt_StateMessage); + + return offset; +} + + +static const value_string gdt_Body_vals[] = { + { 1, "encrypted-data" }, + { 2, "packet-fwd" }, + { 3, "filter" }, + { 4, "data-retention" }, + { 6, "conf" }, + { 7, "stats" }, + { 8, "auth" }, + { 9, "reg" }, + { 10, "ntfy" }, + { 11, "data" }, + { 12, "routing" }, + { 13, "service-msg" }, + { 14, "state-msg" }, + { 0, NULL } +}; + +static const ber_choice_t Body_choice[] = { + { 1, &hf_gdt_encrypted_data , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gdt_OCTET_STRING }, + { 2, &hf_gdt_packet_fwd , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gdt_PacketFwdMessage }, + { 3, &hf_gdt_filter , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gdt_FilterMessage }, + { 4, &hf_gdt_data_retention , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gdt_DataRetentionMessage }, + { 6, &hf_gdt_conf , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gdt_ConfigMessage }, + { 7, &hf_gdt_stats , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gdt_StatsMessage }, + { 8, &hf_gdt_auth , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gdt_AuthMessage }, + { 9, &hf_gdt_reg , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gdt_RegistrationMessage }, + { 10, &hf_gdt_ntfy , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gdt_NotifyMessage }, + { 11, &hf_gdt_data , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gdt_DataMessage }, + { 12, &hf_gdt_routing , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gdt_RoutingMessage }, + { 13, &hf_gdt_service_msg , BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gdt_ServiceMessage }, + { 14, &hf_gdt_state_msg , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gdt_StateMessage }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_Body(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + Body_choice, hf_index, ett_gdt_Body, + NULL); + + return offset; +} + + +static const ber_sequence_t GDTMessage_sequence[] = { + { &hf_gdt_header , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gdt_Header }, + { &hf_gdt_body , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gdt_Body }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gdt_GDTMessage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + GDTMessage_sequence, hf_index, ett_gdt_GDTMessage); + + return offset; +} + +/*--- PDUs ---*/ + +static int dissect_GDTMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gdt_GDTMessage(FALSE, tvb, offset, &asn1_ctx, tree, hf_gdt_GDTMessage_PDU); + return offset; +} + + +/*--- End of included file: packet-gdt-fn.c ---*/ +#line 41 "./asn1/gdt/packet-gdt-template.c" + +static int dissect_gdt(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + void *data _U_) { + proto_item *gdt_item = NULL; + proto_tree *gdt_tree = NULL; + + /* make entry in the Protocol column on summary display */ + col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME); + + /* create the gdt protocol tree */ + if (tree) { + gdt_item = proto_tree_add_item(tree, proto_gdt, tvb, 0, -1, FALSE); + gdt_tree = proto_item_add_subtree(gdt_item, ett_gdt); + dissect_GDTMessage_PDU(tvb, pinfo, gdt_tree, 0); + } + return tvb_captured_length(tvb); +} + +/*--- proto_register_gdt ----------------------------------------------*/ +void proto_register_gdt(void) { + /* List of fields */ + static hf_register_info hf[] = { + +/*--- Included file: packet-gdt-hfarr.c ---*/ +#line 1 "./asn1/gdt/packet-gdt-hfarr.c" + { &hf_gdt_GDTMessage_PDU, + { "GDTMessage", "gdt.GDTMessage_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gdt_version, + { "version", "gdt.version", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gdt_source, + { "source", "gdt.source_element", + FT_NONE, BASE_NONE, NULL, 0, + "EndPointDescriptor", HFILL }}, + { &hf_gdt_destination, + { "destination", "gdt.destination_element", + FT_NONE, BASE_NONE, NULL, 0, + "EndPointDescriptor", HFILL }}, + { &hf_gdt_uuid, + { "uuid", "gdt.uuid", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_sequence_num, + { "sequence-num", "gdt.sequence_num", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gdt_sequence_flag, + { "sequence-flag", "gdt.sequence_flag", + FT_INT32, BASE_DEC, VALS(gdt_SequenceFlag_vals), 0, + "SequenceFlag", HFILL }}, + { &hf_gdt_enc_info, + { "enc-info", "gdt.enc_info_element", + FT_NONE, BASE_NONE, NULL, 0, + "EncryptionInfo", HFILL }}, + { &hf_gdt_hop_info, + { "hop-info", "gdt.hop_info_element", + FT_NONE, BASE_NONE, NULL, 0, + "HopInfo", HFILL }}, + { &hf_gdt_status, + { "status", "gdt.status", + FT_INT32, BASE_DEC, VALS(gdt_ErrorCode_vals), 0, + "ErrorCode", HFILL }}, + { &hf_gdt_type, + { "type", "gdt.type", + FT_STRING, BASE_NONE, NULL, 0, + "IA5String", HFILL }}, + { &hf_gdt_end_point_id, + { "id", "gdt.end_point_id", + FT_STRING, BASE_NONE, NULL, 0, + "IA5String", HFILL }}, + { &hf_gdt_encrypted_data, + { "encrypted-data", "gdt.encrypted_data", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_packet_fwd, + { "packet-fwd", "gdt.packet_fwd_element", + FT_NONE, BASE_NONE, NULL, 0, + "PacketFwdMessage", HFILL }}, + { &hf_gdt_filter, + { "filter", "gdt.filter_element", + FT_NONE, BASE_NONE, NULL, 0, + "FilterMessage", HFILL }}, + { &hf_gdt_data_retention, + { "data-retention", "gdt.data_retention_element", + FT_NONE, BASE_NONE, NULL, 0, + "DataRetentionMessage", HFILL }}, + { &hf_gdt_conf, + { "conf", "gdt.conf_element", + FT_NONE, BASE_NONE, NULL, 0, + "ConfigMessage", HFILL }}, + { &hf_gdt_stats, + { "stats", "gdt.stats_element", + FT_NONE, BASE_NONE, NULL, 0, + "StatsMessage", HFILL }}, + { &hf_gdt_auth, + { "auth", "gdt.auth_element", + FT_NONE, BASE_NONE, NULL, 0, + "AuthMessage", HFILL }}, + { &hf_gdt_reg, + { "reg", "gdt.reg_element", + FT_NONE, BASE_NONE, NULL, 0, + "RegistrationMessage", HFILL }}, + { &hf_gdt_ntfy, + { "ntfy", "gdt.ntfy_element", + FT_NONE, BASE_NONE, NULL, 0, + "NotifyMessage", HFILL }}, + { &hf_gdt_data, + { "data", "gdt.data_element", + FT_NONE, BASE_NONE, NULL, 0, + "DataMessage", HFILL }}, + { &hf_gdt_routing, + { "routing", "gdt.routing_element", + FT_NONE, BASE_NONE, NULL, 0, + "RoutingMessage", HFILL }}, + { &hf_gdt_service_msg, + { "service-msg", "gdt.service_msg_element", + FT_NONE, BASE_NONE, NULL, 0, + "ServiceMessage", HFILL }}, + { &hf_gdt_state_msg, + { "state-msg", "gdt.state_msg_element", + FT_NONE, BASE_NONE, NULL, 0, + "StateMessage", HFILL }}, + { &hf_gdt_stmch_id, + { "stmch-id", "gdt.stmch_id", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_state_action, + { "state-action", "gdt.state_action", + FT_INT32, BASE_DEC, VALS(gdt_StateAction_vals), 0, + "StateAction", HFILL }}, + { &hf_gdt_params, + { "params", "gdt.params", + FT_UINT32, BASE_DEC, NULL, 0, + "Parameters", HFILL }}, + { &hf_gdt_service_id, + { "service-id", "gdt.service_id", + FT_INT32, BASE_DEC, VALS(gdt_ServiceId_vals), 0, + "ServiceId", HFILL }}, + { &hf_gdt_service_action, + { "service-action", "gdt.service_action", + FT_INT32, BASE_DEC, VALS(gdt_ServiceAction_vals), 0, + "ServiceAction", HFILL }}, + { &hf_gdt_routing_action, + { "routing-action", "gdt.routing_action", + FT_INT32, BASE_DEC, VALS(gdt_RoutingAction_vals), 0, + "RoutingAction", HFILL }}, + { &hf_gdt_reg_action, + { "reg-action", "gdt.reg_action", + FT_INT32, BASE_DEC, VALS(gdt_RegistrationAction_vals), 0, + "RegistrationAction", HFILL }}, + { &hf_gdt_stats_action, + { "stats-action", "gdt.stats_action", + FT_INT32, BASE_DEC, VALS(gdt_StatsAction_vals), 0, + "StatsAction", HFILL }}, + { &hf_gdt_auth_action, + { "auth-action", "gdt.auth_action", + FT_INT32, BASE_DEC, VALS(gdt_AuthAction_vals), 0, + "AuthAction", HFILL }}, + { &hf_gdt_payload_type, + { "payload-type", "gdt.payload_type", + FT_INT32, BASE_DEC, VALS(gdt_PayloadType_vals), 0, + "PayloadType", HFILL }}, + { &hf_gdt_payload, + { "payload", "gdt.payload", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_dr_action, + { "dr-action", "gdt.dr_action", + FT_INT32, BASE_DEC, VALS(gdt_DataRetentionAction_vals), 0, + "DataRetentionAction", HFILL }}, + { &hf_gdt_filter_action, + { "filter-action", "gdt.filter_action", + FT_INT32, BASE_DEC, VALS(gdt_FilterAction_vals), 0, + "FilterAction", HFILL }}, + { &hf_gdt_message_type, + { "message-type", "gdt.message_type", + FT_INT32, BASE_DEC, NULL, 0, + "NotifyMessageType", HFILL }}, + { &hf_gdt_message, + { "message", "gdt.message", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_action, + { "action", "gdt.action", + FT_INT32, BASE_DEC, VALS(gdt_ConfigAction_vals), 0, + "ConfigAction", HFILL }}, + { &hf_gdt_parameter_type_id, + { "id", "gdt.parameter_type_id", + FT_INT32, BASE_DEC, VALS(gdt_ParameterType_vals), 0, + "ParameterType", HFILL }}, + { &hf_gdt_value, + { "value", "gdt.value", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gdt_value_item, + { "value item", "gdt.value_item", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gdt_Parameters_item, + { "Parameter", "gdt.Parameter_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gdt_current_hop, + { "current-hop", "gdt.current_hop", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gdt_max_hops, + { "max-hops", "gdt.max_hops", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gdt_header, + { "header", "gdt.header_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gdt_body, + { "body", "gdt.body", + FT_UINT32, BASE_DEC, VALS(gdt_Body_vals), 0, + NULL, HFILL }}, + { &hf_gdt_enc_type, + { "enc-type", "gdt.enc_type", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + +/*--- End of included file: packet-gdt-hfarr.c ---*/ +#line 66 "./asn1/gdt/packet-gdt-template.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_gdt, + +/*--- Included file: packet-gdt-ettarr.c ---*/ +#line 1 "./asn1/gdt/packet-gdt-ettarr.c" + &ett_gdt_Header, + &ett_gdt_EndPointDescriptor, + &ett_gdt_Body, + &ett_gdt_StateMessage, + &ett_gdt_ServiceMessage, + &ett_gdt_RoutingMessage, + &ett_gdt_RegistrationMessage, + &ett_gdt_StatsMessage, + &ett_gdt_AuthMessage, + &ett_gdt_DataRetentionMessage, + &ett_gdt_FilterMessage, + &ett_gdt_PacketFwdMessage, + &ett_gdt_NotifyMessage, + &ett_gdt_DataMessage, + &ett_gdt_ConfigMessage, + &ett_gdt_Parameter, + &ett_gdt_T_value, + &ett_gdt_Parameters, + &ett_gdt_HopInfo, + &ett_gdt_GDTMessage, + &ett_gdt_EncryptionInfo, + +/*--- End of included file: packet-gdt-ettarr.c ---*/ +#line 72 "./asn1/gdt/packet-gdt-template.c" + }; + + /* Register protocol */ + proto_gdt = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_gdt, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); +} + +/*--- proto_reg_handoff_gdt -------------------------------------------*/ +void proto_reg_handoff_gdt(void) { + static gboolean initialized = FALSE; + + if (!initialized) { + gdt_handle = create_dissector_handle(dissect_gdt, proto_gdt); + dissector_add_for_decode_as("sctp.ppi", gdt_handle); + dissector_add_uint("sctp.ppi", GDT_PROTOCOL_ID, gdt_handle); + initialized = TRUE; + } +} diff --git a/epan/dissectors/packet-gdt.h b/epan/dissectors/packet-gdt.h new file mode 100644 index 0000000000..d2a4b1c9fd --- /dev/null +++ b/epan/dissectors/packet-gdt.h @@ -0,0 +1,27 @@ +/* Do not modify this file. Changes will be overwritten. */ +/* Generated automatically by the ASN.1 to Wireshark dissector compiler */ +/* packet-gdt.h */ +/* asn2wrs.py -b -p gdt -c ./gdt.cnf -s ./packet-gdt-template -D . -O ../.. gdt.asn */ + +/* Input file: packet-gdt-template.h */ + +#line 1 "./asn1/gdt/packet-gdt-template.h" +/* packet-gdt-template.h + * + * Copyright 2022, Damir Franusic + * + * Wireshark - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + + +#ifndef PACKET_GDT_H +#define PACKET_GDT_H + +void proto_register_gdt(void); +void proto_reg_handoff_gdt(void); + +#endif /* PACKET_GDT_H */ diff --git a/epan/sctpppids.c b/epan/sctpppids.c index e0b01ac9f7..63009d738e 100644 --- a/epan/sctpppids.c +++ b/epan/sctpppids.c @@ -73,7 +73,7 @@ static const value_string sctp_payload_proto_id_values[] = { { DIAMETER_PROTOCOL_ID, "DIAMETER" }, { DIAMETER_DTLS_PROTOCOL_ID, "DIAMETER over DTLS" }, { R14P_BER_PROTOCOL_ID, "R14P" }, - { 49, "Unassigned" }, /* Unassigned 49 */ + { GDT_PROTOCOL_ID, "Generic Data Transfer Protocol (GDT)" }, { WEBRTC_DCEP_PROTOCOL_ID, "WebRTC Control" }, { WEBRTC_STRING_PAYLOAD_PROTOCOL_ID, "WebRTC String" }, { WEBRTC_BINARY_PARTIAL_PAYLOAD_PROTOCOL_ID, "WebRTC Binary Partial (Deprecated)" }, diff --git a/epan/sctpppids.h b/epan/sctpppids.h index 005e5c2452..bb1d1628a2 100644 --- a/epan/sctpppids.h +++ b/epan/sctpppids.h @@ -70,7 +70,7 @@ #define DIAMETER_PROTOCOL_ID 46 #define DIAMETER_DTLS_PROTOCOL_ID 47 #define R14P_BER_PROTOCOL_ID 48 -/* Unassigned 49 */ +#define GDT_PROTOCOL_ID 49 #define WEBRTC_DCEP_PROTOCOL_ID 50 #define WEBRTC_STRING_PAYLOAD_PROTOCOL_ID 51 #define WEBRTC_BINARY_PARTIAL_PAYLOAD_PROTOCOL_ID 52