From ac32510733f639531388f5ef83986f783e5a5b77 Mon Sep 17 00:00:00 2001 From: lego Date: Sat, 25 Aug 2007 01:14:24 +0000 Subject: get users of oid_resolv to use the new oids, rollout packet-snmp.c git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@22651 f5534014-38df-0310-8fa8-9805f1628bb7 --- asn1/acp133/packet-acp133-template.c | 2 +- asn1/acse/packet-acse-template.c | 2 +- asn1/camel/packet-camel-template.c | 2 +- asn1/cdt/packet-cdt-template.c | 2 +- asn1/cmip/packet-cmip-template.c | 4 +- asn1/cms/packet-cms-template.c | 2 +- asn1/dap/packet-dap-template.c | 2 +- asn1/disp/packet-disp-template.c | 2 +- asn1/dop/packet-dop-template.c | 2 +- asn1/dsp/packet-dsp-template.c | 2 +- asn1/ftam/packet-ftam-template.c | 2 +- asn1/gsmmap/packet-gsm_map-template.c | 2 +- asn1/h225/packet-h225-template.c | 2 +- asn1/h235/packet-h235-template.c | 2 +- asn1/h245/packet-h245-template.c | 2 +- asn1/inap/packet-inap-template.c | 2 +- asn1/ldap/packet-ldap-template.c | 2 +- asn1/pkcs12/packet-pkcs12-template.c | 2 +- asn1/pkixproxy/packet-pkixproxy-template.c | 2 +- asn1/snmp/packet-snmp-template.c | 25 +- asn1/tcap/packet-ansi_tcap-template.c | 2 +- asn1/tcap/packet-tcap-template.c | 2 +- asn1/wlancertextn/packet-wlancertextn-template.c | 2 +- asn1/x411/packet-x411-template.c | 2 +- asn1/x420/packet-x420-template.c | 2 +- asn1/x509af/packet-x509af-template.c | 2 +- asn1/x509if/packet-x509if-template.c | 2 +- asn1/x509sat/packet-x509sat-template.c | 2 +- epan/Makefile.common | 2 - epan/dissectors/Makefile.common | 1 - epan/dissectors/format-oid.h | 65 - epan/dissectors/packet-acp133.c | 6 +- epan/dissectors/packet-acp133.h | 4 +- epan/dissectors/packet-acse.c | 2 +- epan/dissectors/packet-ansi_map.c | 2 +- epan/dissectors/packet-ansi_map.h | 2 +- epan/dissectors/packet-ansi_tcap.c | 2 +- epan/dissectors/packet-ber.c | 9 +- epan/dissectors/packet-camel.c | 4 +- epan/dissectors/packet-camel.h | 2 +- epan/dissectors/packet-cdt.c | 2 +- epan/dissectors/packet-cmip.c | 2 +- epan/dissectors/packet-cms.c | 2 +- epan/dissectors/packet-cops.c | 7 +- epan/dissectors/packet-dap.c | 2 +- epan/dissectors/packet-disp.c | 2 +- epan/dissectors/packet-dop.c | 2 +- epan/dissectors/packet-dsp.c | 2 +- epan/dissectors/packet-ess.c | 2 +- epan/dissectors/packet-ess.h | 2 +- epan/dissectors/packet-ftam.c | 2 +- epan/dissectors/packet-gnm.c | 4 +- epan/dissectors/packet-gnm.h | 4 +- epan/dissectors/packet-gsm_map.c | 2 +- epan/dissectors/packet-h225.c | 2 +- epan/dissectors/packet-h235.c | 6 +- epan/dissectors/packet-h235.h | 4 +- epan/dissectors/packet-h245.c | 2 +- epan/dissectors/packet-h248.c | 2 +- epan/dissectors/packet-h248.h | 2 +- epan/dissectors/packet-inap.c | 536 +++++- epan/dissectors/packet-inap.h | 2 +- epan/dissectors/packet-ldap.c | 2 +- epan/dissectors/packet-logotypecertextn.c | 2 +- epan/dissectors/packet-logotypecertextn.h | 2 +- epan/dissectors/packet-ns_cert_exts.c | 2 +- epan/dissectors/packet-ocsp.c | 2 +- epan/dissectors/packet-ocsp.h | 2 +- epan/dissectors/packet-pkcs1.c | 2 +- epan/dissectors/packet-pkcs1.h | 2 +- epan/dissectors/packet-pkcs12.c | 2 +- epan/dissectors/packet-pkinit.c | 2 +- epan/dissectors/packet-pkinit.h | 2 +- epan/dissectors/packet-pkixproxy.c | 4 +- epan/dissectors/packet-pkixproxy.h | 2 +- epan/dissectors/packet-pkixqualified.c | 2 +- epan/dissectors/packet-pkixqualified.h | 2 +- epan/dissectors/packet-pkixtsp.c | 2 +- epan/dissectors/packet-pkixtsp.h | 2 +- epan/dissectors/packet-pres.h | 2 +- epan/dissectors/packet-rrc.c | 292 +--- epan/dissectors/packet-rrlp.c | 13 +- epan/dissectors/packet-s4406.h | 2 +- epan/dissectors/packet-smrse.c | 2 +- epan/dissectors/packet-smrse.h | 2 +- epan/dissectors/packet-snmp.c | 1945 +++++++--------------- epan/dissectors/packet-snmp.h | 2 +- epan/dissectors/packet-spnego.c | 2 +- epan/dissectors/packet-spnego.h | 2 +- epan/dissectors/packet-tcap.c | 2 +- epan/dissectors/packet-ulp.c | 2 +- epan/dissectors/packet-wlancertextn.c | 4 +- epan/dissectors/packet-wlancertextn.h | 2 +- epan/dissectors/packet-x411.c | 2 +- epan/dissectors/packet-x420.c | 2 +- epan/dissectors/packet-x509af.c | 2 +- epan/dissectors/packet-x509if.c | 2 +- epan/dissectors/packet-x509sat.c | 62 +- epan/epan.c | 4 +- epan/oid_resolv.c | 97 -- epan/oid_resolv.h | 50 - epan/oids.c | 166 +- epan/oids.h | 23 +- epan/proto.c | 2 +- plugins/asn1/asn1.c | 3 + plugins/asn1/asn1.h | 2 - plugins/asn1/packet-asn1.c | 1 + 107 files changed, 1401 insertions(+), 2102 deletions(-) delete mode 100644 epan/dissectors/format-oid.h delete mode 100644 epan/oid_resolv.c delete mode 100644 epan/oid_resolv.h diff --git a/asn1/acp133/packet-acp133-template.c b/asn1/acp133/packet-acp133-template.c index 57c270b470..75a19f7d37 100644 --- a/asn1/acp133/packet-acp133-template.c +++ b/asn1/acp133/packet-acp133-template.c @@ -30,8 +30,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/asn1/acse/packet-acse-template.c b/asn1/acse/packet-acse-template.c index 55df3ab10b..aeb2b6ee6a 100644 --- a/asn1/acse/packet-acse-template.c +++ b/asn1/acse/packet-acse-template.c @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c index dc7a159de3..fbe7336960 100644 --- a/asn1/camel/packet-camel-template.c +++ b/asn1/camel/packet-camel-template.c @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include "epan/expert.h" diff --git a/asn1/cdt/packet-cdt-template.c b/asn1/cdt/packet-cdt-template.c index 718c8e7b7f..0edfeeccbd 100644 --- a/asn1/cdt/packet-cdt-template.c +++ b/asn1/cdt/packet-cdt-template.c @@ -32,7 +32,7 @@ #endif #include -#include +#include #include #include diff --git a/asn1/cmip/packet-cmip-template.c b/asn1/cmip/packet-cmip-template.c index f151595eab..9fc6cb1d5e 100644 --- a/asn1/cmip/packet-cmip-template.c +++ b/asn1/cmip/packet-cmip-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include @@ -206,7 +206,7 @@ void proto_register_cmip(void) { proto_register_field_array(proto_cmip, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); #include "packet-cmip-dis-tab.c" - add_oid_str_name("2.9.3.2.7.1","discriminatorId(1) "); + add_oid_str_name("2.9.3.2.7.1","discriminatorId(1)"); } diff --git a/asn1/cms/packet-cms-template.c b/asn1/cms/packet-cms-template.c index 4a7dde850f..571d7e4ad3 100644 --- a/asn1/cms/packet-cms-template.c +++ b/asn1/cms/packet-cms-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/dap/packet-dap-template.c b/asn1/dap/packet-dap-template.c index 9ed91fff51..e1b496aefe 100644 --- a/asn1/dap/packet-dap-template.c +++ b/asn1/dap/packet-dap-template.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/disp/packet-disp-template.c b/asn1/disp/packet-disp-template.c index 97b7465c5d..5129c83339 100644 --- a/asn1/disp/packet-disp-template.c +++ b/asn1/disp/packet-disp-template.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/dop/packet-dop-template.c b/asn1/dop/packet-dop-template.c index f0733480ac..3bd7dc91f3 100644 --- a/asn1/dop/packet-dop-template.c +++ b/asn1/dop/packet-dop-template.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/dsp/packet-dsp-template.c b/asn1/dsp/packet-dsp-template.c index 56d2f358cb..a0ebb77d76 100644 --- a/asn1/dsp/packet-dsp-template.c +++ b/asn1/dsp/packet-dsp-template.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/ftam/packet-ftam-template.c b/asn1/ftam/packet-ftam-template.c index 7d8317cd98..e8af2164df 100644 --- a/asn1/ftam/packet-ftam-template.c +++ b/asn1/ftam/packet-ftam-template.c @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c index a9a95ee092..cc36902fcc 100644 --- a/asn1/gsmmap/packet-gsm_map-template.c +++ b/asn1/gsmmap/packet-gsm_map-template.c @@ -44,7 +44,7 @@ #include #include #include -#include +#include #include "epan/expert.h" #include diff --git a/asn1/h225/packet-h225-template.c b/asn1/h225/packet-h225-template.c index 3ee6bea2f5..88490d6bd9 100644 --- a/asn1/h225/packet-h225-template.c +++ b/asn1/h225/packet-h225-template.c @@ -44,7 +44,7 @@ #include #include -#include +#include #include #include #include "tap.h" diff --git a/asn1/h235/packet-h235-template.c b/asn1/h235/packet-h235-template.c index 4ff4cfa418..82f75869c2 100644 --- a/asn1/h235/packet-h235-template.c +++ b/asn1/h235/packet-h235-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/h245/packet-h245-template.c b/asn1/h245/packet-h245-template.c index 426ded262b..da6ee1a139 100644 --- a/asn1/h245/packet-h245-template.c +++ b/asn1/h245/packet-h245-template.c @@ -46,7 +46,7 @@ #include #include #include -#include +#include #include #include "tap.h" #include "packet-tpkt.h" diff --git a/asn1/inap/packet-inap-template.c b/asn1/inap/packet-inap-template.c index 3f241d3b04..ba323a5931 100644 --- a/asn1/inap/packet-inap-template.c +++ b/asn1/inap/packet-inap-template.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include "epan/expert.h" #include diff --git a/asn1/ldap/packet-ldap-template.c b/asn1/ldap/packet-ldap-template.c index 648c161f1c..c5ccac317c 100644 --- a/asn1/ldap/packet-ldap-template.c +++ b/asn1/ldap/packet-ldap-template.c @@ -82,7 +82,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/asn1/pkcs12/packet-pkcs12-template.c b/asn1/pkcs12/packet-pkcs12-template.c index 16989ca7e2..4176bb7f47 100644 --- a/asn1/pkcs12/packet-pkcs12-template.c +++ b/asn1/pkcs12/packet-pkcs12-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/pkixproxy/packet-pkixproxy-template.c b/asn1/pkixproxy/packet-pkixproxy-template.c index eb9b1a71bd..f3939ca0bd 100644 --- a/asn1/pkixproxy/packet-pkixproxy-template.c +++ b/asn1/pkixproxy/packet-pkixproxy-template.c @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include diff --git a/asn1/snmp/packet-snmp-template.c b/asn1/snmp/packet-snmp-template.c index 88bb9cb1e0..b57ee00454 100644 --- a/asn1/snmp/packet-snmp-template.c +++ b/asn1/snmp/packet-snmp-template.c @@ -14,6 +14,7 @@ * * See RFC 3414 for User-based Security Model for SNMPv3 * See RFC 3826 for (AES) Cipher Algorithm in the SNMP USM + * See RFC 2578 for Structure of Management Information Version 2 (SMIv2) * Copyright (C) 2007 Luis E. Garcia Ontanon * * $Id$ @@ -72,7 +73,6 @@ #include "packet-ber.h" #include "packet-snmp.h" -#include "format-oid.h" #include #include @@ -108,19 +108,6 @@ static int proto_snmp = -1; static int proto_smux = -1; -/* Default MIB modules to load */ -/* - * XXX - According to Wes Hardaker, we shouldn't do this: - * http://www.ethereal.com/lists/ethereal-dev/200412/msg00222.html - */ -#ifdef _WIN32 -# define DEF_MIB_MODULES "IP-MIB;IF-MIB;TCP-MIB;UDP-MIB;SNMPv2-MIB;RFC1213-MIB;UCD-SNMP-MIB" -# define IMPORT_SEPARATOR ":" -#else -# define DEF_MIB_MODULES "IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:UCD-SNMP-MIB" -# define IMPORT_SEPARATOR ";" -#endif /* _WIN32 */ - static gboolean display_oid = TRUE; static gboolean snmp_usm_auth_md5(snmp_usm_params_t* p, guint8**, guint*, gchar const**); @@ -782,16 +769,6 @@ expected_different: { } -gchar* format_oid(subid_t *oid, guint oid_length) { - return (void*)oid_resolved(oid_length,oid); -} - -void new_format_oid(subid_t *oid, guint oid_length, gchar **non_decoded, gchar **decoded) { - *decoded = (void*)oid_resolved(oid_length,oid); - *non_decoded = (void*)oid_subid2string(oid,oid_length); -} - - #define F_SNMP_ENGINEID_CONFORM 0x80 #define SNMP_ENGINEID_RFC1910 0x00 #define SNMP_ENGINEID_RFC3411 0x01 diff --git a/asn1/tcap/packet-ansi_tcap-template.c b/asn1/tcap/packet-ansi_tcap-template.c index 031e5eab17..8a575b8e18 100644 --- a/asn1/tcap/packet-ansi_tcap-template.c +++ b/asn1/tcap/packet-ansi_tcap-template.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/tcap/packet-tcap-template.c b/asn1/tcap/packet-tcap-template.c index 16bca252e5..d36d608e68 100644 --- a/asn1/tcap/packet-tcap-template.c +++ b/asn1/tcap/packet-tcap-template.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/wlancertextn/packet-wlancertextn-template.c b/asn1/wlancertextn/packet-wlancertextn-template.c index ab097af442..4fa18a8b73 100644 --- a/asn1/wlancertextn/packet-wlancertextn-template.c +++ b/asn1/wlancertextn/packet-wlancertextn-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/x411/packet-x411-template.c b/asn1/x411/packet-x411-template.c index 6658b128aa..3adbe6b8ae 100644 --- a/asn1/x411/packet-x411-template.c +++ b/asn1/x411/packet-x411-template.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/x420/packet-x420-template.c b/asn1/x420/packet-x420-template.c index 4bae685b41..41bb46932e 100644 --- a/asn1/x420/packet-x420-template.c +++ b/asn1/x420/packet-x420-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/x509af/packet-x509af-template.c b/asn1/x509af/packet-x509af-template.c index 74b9f949ad..c8954ebd16 100644 --- a/asn1/x509af/packet-x509af-template.c +++ b/asn1/x509af/packet-x509af-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/x509if/packet-x509if-template.c b/asn1/x509if/packet-x509if-template.c index 8cea032b31..4dfa66de08 100644 --- a/asn1/x509if/packet-x509if-template.c +++ b/asn1/x509if/packet-x509if-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/asn1/x509sat/packet-x509sat-template.c b/asn1/x509sat/packet-x509sat-template.c index 6f141f9c14..c16491f63e 100644 --- a/asn1/x509sat/packet-x509sat-template.c +++ b/asn1/x509sat/packet-x509sat-template.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/Makefile.common b/epan/Makefile.common index c4ccc9110e..a78c4707f0 100644 --- a/epan/Makefile.common +++ b/epan/Makefile.common @@ -64,7 +64,6 @@ LIBWIRESHARK_SRC = \ next_tvb.c \ nstime.c \ oids.c \ - oid_resolv.c \ osi-utils.c \ packet.c \ plugins.c \ @@ -191,7 +190,6 @@ LIBWIRESHARK_INCLUDES = \ nlpid.h \ nstime.h \ oids.h \ - oid_resolv.h \ osi-utils.h \ oui.h \ packet.h \ diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index d9ba062d4a..1453019b2d 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -765,7 +765,6 @@ DISSECTOR_SRC = \ # corresponding headers DISSECTOR_INCLUDES = \ $(PIDL_DISSECTOR_INCLUDES) \ - format-oid.h \ packet-acn.h \ packet-acp133.h \ packet-acse.h \ diff --git a/epan/dissectors/format-oid.h b/epan/dissectors/format-oid.h deleted file mode 100644 index 866b4f4e1b..0000000000 --- a/epan/dissectors/format-oid.h +++ /dev/null @@ -1,65 +0,0 @@ -/* format-oid.h - * Declare routine for formatting OIDs - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Didier Jorand - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef __FORMAT_OID_H__ -#define __FORMAT_OID_H__ - -/* - * Oh, this is hellish. - * - * The CMU SNMP library defines an OID as a sequence of "u_int"s, - * unless EIGHTBIT_SUBIDS is defined, in which case it defines - * an OID as a sequence of "u_char"s. None of its header files - * define EIGHTBIT_SUBIDS, and if a program defines it, that's - * not going to change the library to treat OIDs as sequences - * of "u_chars", so I'll assume that it'll be "u_int"s. - * - * The UCD SNMP library does the same, except it defines an OID - * as a sequence of "u_long"s, by default. - * - * "libsmi" defines it as a sequence of "unsigned int"s. - * - * I don't want to oblige all users of ASN.1 to include the SNMP - * library header files, so I'll assume none of the SNMP libraries - * will rudely surprise me by changing the definition; if they - * do, there will be compiler warnings, so we'll at least be able - * to catch it. - * - * This requires that, if you're going to use "asn1_subid_decode()", - * "asn1_oid_value_decode()", or "asn1_oid_decode()", you include - * "config.h", to get the right #defines defined, so that we properly - * typedef "subid_t". - */ -#if defined(HAVE_NET_SNMP) -typedef gulong subid_t; /* Net-SNMP */ -#else -typedef guint subid_t; /* CMU SNMP, UCD SNMP, libsmi, or nothing */ -#endif - -extern int oid_to_subid_buf(const guint8 *oid, gint oid_len, subid_t *buf, int buf_len); -extern gchar *format_oid(subid_t *oid, guint oid_length); -extern void new_format_oid(subid_t *oid, guint oid_length, - gchar **non_decoded, gchar **decoded); - -#endif diff --git a/epan/dissectors/packet-acp133.c b/epan/dissectors/packet-acp133.c index 2af93a87a6..0edbd82394 100644 --- a/epan/dissectors/packet-acp133.c +++ b/epan/dissectors/packet-acp133.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-acp133.c */ -/* ../../tools/asn2wrs.py -b -X -T -e -p acp133 -c acp133.cnf -s packet-acp133-template acp133.asn */ +/* ./packet-acp133.c */ +/* ../../tools/asn2wrs.py -b -e -X -T -p acp133 -c acp133.cnf -s packet-acp133-template acp133.asn */ /* Input file: packet-acp133-template.c */ @@ -38,8 +38,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/epan/dissectors/packet-acp133.h b/epan/dissectors/packet-acp133.h index f4aebe64ae..4310014663 100644 --- a/epan/dissectors/packet-acp133.h +++ b/epan/dissectors/packet-acp133.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-acp133.h */ -/* ../../tools/asn2wrs.py -b -X -T -e -p acp133 -c acp133.cnf -s packet-acp133-template acp133.asn */ +/* ./packet-acp133.h */ +/* ../../tools/asn2wrs.py -b -e -X -T -p acp133 -c acp133.cnf -s packet-acp133-template acp133.asn */ /* Input file: packet-acp133-template.h */ diff --git a/epan/dissectors/packet-acse.c b/epan/dissectors/packet-acse.c index 04c6b5e98c..096d08b1eb 100644 --- a/epan/dissectors/packet-acse.c +++ b/epan/dissectors/packet-acse.c @@ -50,7 +50,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c index 1b2ebeaea6..00e3381a64 100644 --- a/epan/dissectors/packet-ansi_map.c +++ b/epan/dissectors/packet-ansi_map.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ansi_map.c */ +/* ./packet-ansi_map.c */ /* ../../tools/asn2wrs.py -b -X -e -p ansi_map -c ansi_map.cnf -s packet-ansi_map-template ansi_map.asn */ /* Input file: packet-ansi_map-template.c */ diff --git a/epan/dissectors/packet-ansi_map.h b/epan/dissectors/packet-ansi_map.h index ac653a06a4..16c19dfef0 100644 --- a/epan/dissectors/packet-ansi_map.h +++ b/epan/dissectors/packet-ansi_map.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ansi_map.h */ +/* ./packet-ansi_map.h */ /* ../../tools/asn2wrs.py -b -X -e -p ansi_map -c ansi_map.cnf -s packet-ansi_map-template ansi_map.asn */ /* Input file: packet-ansi_map-template.h */ diff --git a/epan/dissectors/packet-ansi_tcap.c b/epan/dissectors/packet-ansi_tcap.c index b2653c96c3..55661bba3d 100644 --- a/epan/dissectors/packet-ansi_tcap.c +++ b/epan/dissectors/packet-ansi_tcap.c @@ -40,7 +40,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c index 67ae44ef0a..95c8bc3483 100644 --- a/epan/dissectors/packet-ber.c +++ b/epan/dissectors/packet-ber.c @@ -74,7 +74,7 @@ #include #include #include -#include +#include #include #include #include "packet-ber.h" @@ -4172,7 +4172,12 @@ proto_reg_handoff_ber(void) { dissector_handle_t ber_handle; - add_oid_str_name("2.1.1","joint-iso-itu-t(2) asn1(1) basic-encoding(1)"); + + oid_add_from_string("itu-t","0"); + oid_add_from_string("iso","1"); + oid_add_from_string("joint-iso-itu-t","2"); + oid_add_from_string("asn1","2.1"); + oid_add_from_string("basic-encoding","2.1.1"); ber_handle = create_dissector_handle(dissect_ber, proto_ber); dissector_add("wtap_encap", WTAP_ENCAP_BER, ber_handle); diff --git a/epan/dissectors/packet-camel.c b/epan/dissectors/packet-camel.c index be806ee7f1..c4eb3ed453 100644 --- a/epan/dissectors/packet-camel.c +++ b/epan/dissectors/packet-camel.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-camel.c */ +/* ./packet-camel.c */ /* ../../tools/asn2wrs.py -b -X -T -L -e -k -p camel -c camel.cnf -s packet-camel-template TCAPMessages.asn CAP-object-identifiers.asn CAP-classes.asn CAP-datatypes.asn CAP-errorcodes.asn CAP-errortypes.asn CAP-operationcodes.asn CAP-GPRS-ReferenceNumber.asn CAP-gsmSCF-gsmSRF-ops-args.asn CAP-gsmSSF-gsmSCF-ops-args.asn CAP-gprsSSF-gsmSCF-ops-args.asn CAP-SMS-ops-args.asn CAP-U-ABORT-Data.asn ../ros/Remote-Operations-Information-Objects.asn ../ros/Remote-Operations-Generic-ROS-PDUs.asn */ /* Input file: packet-camel-template.c */ @@ -49,7 +49,7 @@ #include #include #include -#include +#include #include #include #include "epan/expert.h" diff --git a/epan/dissectors/packet-camel.h b/epan/dissectors/packet-camel.h index dc4af31589..1a508ba088 100644 --- a/epan/dissectors/packet-camel.h +++ b/epan/dissectors/packet-camel.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-camel.h */ +/* ./packet-camel.h */ /* ../../tools/asn2wrs.py -b -X -T -L -e -k -p camel -c camel.cnf -s packet-camel-template TCAPMessages.asn CAP-object-identifiers.asn CAP-classes.asn CAP-datatypes.asn CAP-errorcodes.asn CAP-errortypes.asn CAP-operationcodes.asn CAP-GPRS-ReferenceNumber.asn CAP-gsmSCF-gsmSRF-ops-args.asn CAP-gsmSSF-gsmSCF-ops-args.asn CAP-gprsSSF-gsmSCF-ops-args.asn CAP-SMS-ops-args.asn CAP-U-ABORT-Data.asn ../ros/Remote-Operations-Information-Objects.asn ../ros/Remote-Operations-Generic-ROS-PDUs.asn */ /* Input file: packet-camel-template.h */ diff --git a/epan/dissectors/packet-cdt.c b/epan/dissectors/packet-cdt.c index a8a0b979c0..6e13cb0c48 100644 --- a/epan/dissectors/packet-cdt.c +++ b/epan/dissectors/packet-cdt.c @@ -40,7 +40,7 @@ #endif #include -#include +#include #include #include diff --git a/epan/dissectors/packet-cmip.c b/epan/dissectors/packet-cmip.c index ae1e5bb5b3..3312be8b07 100644 --- a/epan/dissectors/packet-cmip.c +++ b/epan/dissectors/packet-cmip.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-cms.c b/epan/dissectors/packet-cms.c index 8a70704264..0309363dd9 100644 --- a/epan/dissectors/packet-cms.c +++ b/epan/dissectors/packet-cms.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-cops.c b/epan/dissectors/packet-cops.c index 0e216c7e34..1e0177e53b 100644 --- a/epan/dissectors/packet-cops.c +++ b/epan/dissectors/packet-cops.c @@ -74,7 +74,7 @@ # include #endif /* HAVE_NET_SNMP */ -#include +#include #include #include #include @@ -1347,7 +1347,7 @@ static guchar*format_asn_value (struct variable_list *variable, subid_t *variabl size_t out_len=0; /*Get the ASN.1 type etc. from the PIB-MIB. If unsuccessful use the type from packet*/ - subtree = get_tree(variable_oid,variable_oid_length, subtree); + subtree = get_tree((void*)variable_oid,variable_oid_length, subtree); if (subtree->type == 0) variable->type= type_from_packet; @@ -1562,8 +1562,7 @@ static int decode_cops_pr_asn1_data(tvbuff_t *tvb,packet_info *pinfo, guint32 of offset = dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &ber_tag); offset = dissect_ber_length(pinfo, tree, tvb, offset, &vb_length, &ind); oid_buf = tvb_get_ptr(tvb, vb_value_start, vb_length); - vb_oid = ep_alloc((vb_length+1) * sizeof(gulong)); - vb_oid_length = oid_to_subid_buf(oid_buf, vb_length, vb_oid, ((vb_length+1) * sizeof(gulong))); + vb_oid_length = oid_encoded2subid(oid_buf, vb_length, &vb_oid); offset = offset + vb_length; length = offset - vb_value_start; diff --git a/epan/dissectors/packet-dap.c b/epan/dissectors/packet-dap.c index d54c09d81b..d0013acca5 100644 --- a/epan/dissectors/packet-dap.c +++ b/epan/dissectors/packet-dap.c @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-disp.c b/epan/dissectors/packet-disp.c index 3fcc50a10a..f731fabdea 100644 --- a/epan/dissectors/packet-disp.c +++ b/epan/dissectors/packet-disp.c @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-dop.c b/epan/dissectors/packet-dop.c index 4ef5153f0a..bbe9339a74 100644 --- a/epan/dissectors/packet-dop.c +++ b/epan/dissectors/packet-dop.c @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-dsp.c b/epan/dissectors/packet-dsp.c index 4f7d3037a6..2da8af7ecf 100644 --- a/epan/dissectors/packet-dsp.c +++ b/epan/dissectors/packet-dsp.c @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-ess.c b/epan/dissectors/packet-ess.c index 504e035b38..6a8c9aa595 100644 --- a/epan/dissectors/packet-ess.c +++ b/epan/dissectors/packet-ess.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ess.c */ +/* ./packet-ess.c */ /* ../../tools/asn2wrs.py -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn */ /* Input file: packet-ess-template.c */ diff --git a/epan/dissectors/packet-ess.h b/epan/dissectors/packet-ess.h index 3519f4b59e..c5ab7de176 100644 --- a/epan/dissectors/packet-ess.h +++ b/epan/dissectors/packet-ess.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ess.h */ +/* ./packet-ess.h */ /* ../../tools/asn2wrs.py -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn */ /* Input file: packet-ess-template.h */ diff --git a/epan/dissectors/packet-ftam.c b/epan/dissectors/packet-ftam.c index 0960baf1f8..14cee681cb 100644 --- a/epan/dissectors/packet-ftam.c +++ b/epan/dissectors/packet-ftam.c @@ -43,7 +43,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-gnm.c b/epan/dissectors/packet-gnm.c index 945df7ec9a..ecec6f8aec 100644 --- a/epan/dissectors/packet-gnm.c +++ b/epan/dissectors/packet-gnm.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-gnm.c */ -/* ../../tools/asn2wrs.py -b -X -T -e -p gnm -c gnm.cnf -s packet-gnm-template GNM.asn */ +/* ./packet-gnm.c */ +/* ../../tools/asn2wrs.py -b -e -X -T -p gnm -c gnm.cnf -s packet-gnm-template GNM.asn */ /* Input file: packet-gnm-template.c */ diff --git a/epan/dissectors/packet-gnm.h b/epan/dissectors/packet-gnm.h index 172b819538..cede0af5b8 100644 --- a/epan/dissectors/packet-gnm.h +++ b/epan/dissectors/packet-gnm.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-gnm.h */ -/* ../../tools/asn2wrs.py -b -X -T -e -p gnm -c gnm.cnf -s packet-gnm-template GNM.asn */ +/* ./packet-gnm.h */ +/* ../../tools/asn2wrs.py -b -e -X -T -p gnm -c gnm.cnf -s packet-gnm-template GNM.asn */ /* Input file: packet-gnm-template.h */ diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index 82aa3c96c7..dbd2cbdfab 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -52,7 +52,7 @@ #include #include #include -#include +#include #include "epan/expert.h" #include diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index 86ce9e2bdf..6c61ee39be 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -52,7 +52,7 @@ #include #include -#include +#include #include #include #include "tap.h" diff --git a/epan/dissectors/packet-h235.c b/epan/dissectors/packet-h235.c index b58af3cbf9..a42e8ace16 100644 --- a/epan/dissectors/packet-h235.c +++ b/epan/dissectors/packet-h235.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h235.c */ -/* ../../tools/asn2wrs.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ +/* ./packet-h235.c */ +/* ../../tools/asn2wrs.py -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ /* Input file: packet-h235-template.c */ @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-h235.h b/epan/dissectors/packet-h235.h index 14e55a563c..06be6de191 100644 --- a/epan/dissectors/packet-h235.h +++ b/epan/dissectors/packet-h235.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h235.h */ -/* ../../tools/asn2wrs.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ +/* ./packet-h235.h */ +/* ../../tools/asn2wrs.py -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */ /* Input file: packet-h235-template.h */ diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index d1ece50095..ab3737956a 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -54,7 +54,7 @@ #include #include #include -#include +#include #include #include "tap.h" #include "packet-tpkt.h" diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c index 8c88c0a140..58e3296ea5 100644 --- a/epan/dissectors/packet-h248.c +++ b/epan/dissectors/packet-h248.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h248.c */ +/* ./packet-h248.c */ /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template h248v3.asn */ /* Input file: packet-h248-template.c */ diff --git a/epan/dissectors/packet-h248.h b/epan/dissectors/packet-h248.h index 63a37b82aa..e9c237f6af 100644 --- a/epan/dissectors/packet-h248.h +++ b/epan/dissectors/packet-h248.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-h248.h */ +/* ./packet-h248.h */ /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template h248v3.asn */ /* Input file: packet-h248-template.h */ diff --git a/epan/dissectors/packet-inap.c b/epan/dissectors/packet-inap.c index bc22b7dd7a..14e695ee2c 100644 --- a/epan/dissectors/packet-inap.c +++ b/epan/dissectors/packet-inap.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-inap.c */ +/* ./packet-inap.c */ /* ../../tools/asn2wrs.py -b -X -e -p inap -c inap.cnf -s packet-inap-template ../ros/Remote-Operations-Information-Objects.asn IN-common-classes.asn IN-SSF-SCF-Classes.asn IN-SCF-SRF-Classes.asn inap.asn IN-object-identifiers.asn IN-common-datatypes.asn IN-SSF-SCF-datatypes.asn IN-SSF-SCF-ops-args.asn IN-SCF-SRF-datatypes.asn IN-SCF-SRF-ops-args.asn */ /* Input file: packet-inap-template.c */ @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include "epan/expert.h" #include @@ -72,49 +72,90 @@ static int hf_inap_AnalyseInformationArg_PDU = -1; /* AnalyseInformationArg */ static int hf_inap_ApplyChargingArg_PDU = -1; /* ApplyChargingArg */ static int hf_inap_ApplyChargingReportArg_PDU = -1; /* ApplyChargingReportArg */ static int hf_inap_AssistRequestInstructionsArg_PDU = -1; /* AssistRequestInstructionsArg */ +static int hf_inap_AuthorizeTerminationArg_PDU = -1; /* AuthorizeTerminationArg */ +static int hf_inap_CallFilteringArg_PDU = -1; /* CallFilteringArg */ static int hf_inap_CallGapArg_PDU = -1; /* CallGapArg */ static int hf_inap_CallInformationReportArg_PDU = -1; /* CallInformationReportArg */ static int hf_inap_CallInformationRequestArg_PDU = -1; /* CallInformationRequestArg */ static int hf_inap_CancelArg_PDU = -1; /* CancelArg */ +static int hf_inap_CancelStatusReportRequestArg_PDU = -1; /* CancelStatusReportRequestArg */ static int hf_inap_CollectedInformationArg_PDU = -1; /* CollectedInformationArg */ static int hf_inap_CollectInformationArg_PDU = -1; /* CollectInformationArg */ static int hf_inap_ConnectArg_PDU = -1; /* ConnectArg */ static int hf_inap_ConnectToResourceArg_PDU = -1; /* ConnectToResourceArg */ +static int hf_inap_ContinueWithArgumentArg_PDU = -1; /* ContinueWithArgumentArg */ +static int hf_inap_CreateCallSegmentAssociationArg_PDU = -1; /* CreateCallSegmentAssociationArg */ +static int hf_inap_CreateCallSegmentAssociationResultArg_PDU = -1; /* CreateCallSegmentAssociationResultArg */ +static int hf_inap_CreateOrRemoveTriggerDataArg_PDU = -1; /* CreateOrRemoveTriggerDataArg */ +static int hf_inap_CreateOrRemoveTriggerDataResultArg_PDU = -1; /* CreateOrRemoveTriggerDataResultArg */ +static int hf_inap_DisconnectForwardConnectionWithArgumentArg_PDU = -1; /* DisconnectForwardConnectionWithArgumentArg */ +static int hf_inap_DisconnectLegArg_PDU = -1; /* DisconnectLegArg */ +static int hf_inap_EntityReleasedArg_PDU = -1; /* EntityReleasedArg */ static int hf_inap_EstablishTemporaryConnectionArg_PDU = -1; /* EstablishTemporaryConnectionArg */ static int hf_inap_EventNotificationChargingArg_PDU = -1; /* EventNotificationChargingArg */ static int hf_inap_EventReportBCSMArg_PDU = -1; /* EventReportBCSMArg */ +static int hf_inap_EventReportFacilityArg_PDU = -1; /* EventReportFacilityArg */ +static int hf_inap_FacilitySelectedAndAvailableArg_PDU = -1; /* FacilitySelectedAndAvailableArg */ static int hf_inap_FurnishChargingInformationArg_PDU = -1; /* FurnishChargingInformationArg */ static int hf_inap_HoldCallInNetworkArg_PDU = -1; /* HoldCallInNetworkArg */ static int hf_inap_InitialDPArg_PDU = -1; /* InitialDPArg */ static int hf_inap_InitiateCallAttemptArg_PDU = -1; /* InitiateCallAttemptArg */ +static int hf_inap_ManageTriggerDataArg_PDU = -1; /* ManageTriggerDataArg */ +static int hf_inap_ManageTriggerDataResultArg_PDU = -1; /* ManageTriggerDataResultArg */ +static int hf_inap_MergeCallSegmentsArg_PDU = -1; /* MergeCallSegmentsArg */ +static int hf_inap_MonitorRouteReportArg_PDU = -1; /* MonitorRouteReportArg */ +static int hf_inap_MonitorRouteRequestArg_PDU = -1; /* MonitorRouteRequestArg */ +static int hf_inap_MoveCallSegmentsArg_PDU = -1; /* MoveCallSegmentsArg */ +static int hf_inap_MoveLegArg_PDU = -1; /* MoveLegArg */ +static int hf_inap_OAbandonArg_PDU = -1; /* OAbandonArg */ static int hf_inap_OAnswerArg_PDU = -1; /* OAnswerArg */ static int hf_inap_OCalledPartyBusyArg_PDU = -1; /* OCalledPartyBusyArg */ static int hf_inap_ODisconnectArg_PDU = -1; /* ODisconnectArg */ static int hf_inap_MidCallArg_PDU = -1; /* MidCallArg */ static int hf_inap_ONoAnswerArg_PDU = -1; /* ONoAnswerArg */ +static int hf_inap_OriginationAttemptArg_PDU = -1; /* OriginationAttemptArg */ static int hf_inap_OriginationAttemptAuthorizedArg_PDU = -1; /* OriginationAttemptAuthorizedArg */ +static int hf_inap_OSuspendedArg_PDU = -1; /* OSuspendedArg */ +static int hf_inap_ReconnectArg_PDU = -1; /* ReconnectArg */ static int hf_inap_ReleaseCallArg_PDU = -1; /* ReleaseCallArg */ +static int hf_inap_ReportUTSIArg_PDU = -1; /* ReportUTSIArg */ static int hf_inap_RequestCurrentStatusReportArg_PDU = -1; /* RequestCurrentStatusReportArg */ static int hf_inap_RequestCurrentStatusReportResultArg_PDU = -1; /* RequestCurrentStatusReportResultArg */ static int hf_inap_RequestEveryStatusChangeReportArg_PDU = -1; /* RequestEveryStatusChangeReportArg */ static int hf_inap_RequestFirstStatusMatchReportArg_PDU = -1; /* RequestFirstStatusMatchReportArg */ static int hf_inap_RequestNotificationChargingEventArg_PDU = -1; /* RequestNotificationChargingEventArg */ static int hf_inap_RequestReportBCSMEventArg_PDU = -1; /* RequestReportBCSMEventArg */ +static int hf_inap_RequestReportFacilityEventArg_PDU = -1; /* RequestReportFacilityEventArg */ +static int hf_inap_RequestReportUTSIArg_PDU = -1; /* RequestReportUTSIArg */ static int hf_inap_ResetTimerArg_PDU = -1; /* ResetTimerArg */ static int hf_inap_RouteSelectFailureArg_PDU = -1; /* RouteSelectFailureArg */ static int hf_inap_SelectFacilityArg_PDU = -1; /* SelectFacilityArg */ static int hf_inap_SelectRouteArg_PDU = -1; /* SelectRouteArg */ +static int hf_inap_SendChargingInformationArg_PDU = -1; /* SendChargingInformationArg */ +static int hf_inap_SendFacilityInformationArg_PDU = -1; /* SendFacilityInformationArg */ +static int hf_inap_SendSTUIArg_PDU = -1; /* SendSTUIArg */ static int hf_inap_ServiceFilteringResponseArg_PDU = -1; /* ServiceFilteringResponseArg */ +static int hf_inap_SetServiceProfileArg_PDU = -1; /* SetServiceProfileArg */ +static int hf_inap_SplitLegArg_PDU = -1; /* SplitLegArg */ static int hf_inap_StatusReportArg_PDU = -1; /* StatusReportArg */ static int hf_inap_TAnswerArg_PDU = -1; /* TAnswerArg */ static int hf_inap_TBusyArg_PDU = -1; /* TBusyArg */ static int hf_inap_TDisconnectArg_PDU = -1; /* TDisconnectArg */ static int hf_inap_TermAttemptAuthorizedArg_PDU = -1; /* TermAttemptAuthorizedArg */ +static int hf_inap_TerminationAttemptArg_PDU = -1; /* TerminationAttemptArg */ static int hf_inap_TNoAnswerArg_PDU = -1; /* TNoAnswerArg */ +static int hf_inap_TSuspendedArg_PDU = -1; /* TSuspendedArg */ static int hf_inap_PlayAnnouncementArg_PDU = -1; /* PlayAnnouncementArg */ static int hf_inap_PromptAndCollectUserInformationArg_PDU = -1; /* PromptAndCollectUserInformationArg */ static int hf_inap_ReceivedInformationArg_PDU = -1; /* ReceivedInformationArg */ +static int hf_inap_PromptAndReceiveMessageArg_PDU = -1; /* PromptAndReceiveMessageArg */ +static int hf_inap_MessageReceivedArg_PDU = -1; /* MessageReceivedArg */ +static int hf_inap_ScriptCloseArg_PDU = -1; /* ScriptCloseArg */ +static int hf_inap_ScriptEventArg_PDU = -1; /* ScriptEventArg */ +static int hf_inap_ScriptInformationArg_PDU = -1; /* ScriptInformationArg */ +static int hf_inap_ScriptRunArg_PDU = -1; /* ScriptRunArg */ static int hf_inap_SpecializedResourceReportArg_PDU = -1; /* SpecializedResourceReportArg */ +static int hf_inap_SRFCallGapArg_PDU = -1; /* SRFCallGapArg */ static int hf_inap_local = -1; /* INTEGER */ static int hf_inap_global = -1; /* OBJECT_IDENTIFIER */ static int hf_inap_invoke = -1; /* Invoke */ @@ -1032,7 +1073,7 @@ dissect_inap_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs static int dissect_inap_INAPOperationLocalvalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 113 "inap.cnf" +#line 158 "inap.cnf" offset = dissect_ber_integer(FALSE, actx, tree, tvb, offset, hf_index, &opcode); if (check_col(actx->pinfo->cinfo, COL_INFO)){ @@ -1079,7 +1120,7 @@ dissect_inap_INAP_OPERATION(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_inap_InvokeParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 97 "inap.cnf" +#line 142 "inap.cnf" offset = dissect_invokeData(tree, tvb, offset, actx); @@ -1108,7 +1149,7 @@ dissect_inap_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_ static int dissect_inap_ReturnResultParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 100 "inap.cnf" +#line 145 "inap.cnf" offset = dissect_returnResultData(tree, tvb, offset, actx); @@ -1150,7 +1191,7 @@ dissect_inap_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs static int dissect_inap_INAPLocalErrorcode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 106 "inap.cnf" +#line 151 "inap.cnf" offset = dissect_ber_integer(FALSE, actx, tree, tvb, offset, hf_index, &errorCode); if (check_col(actx->pinfo->cinfo, COL_INFO)){ @@ -1197,7 +1238,7 @@ dissect_inap_INAP_ERROR(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_inap_ReturnErrorParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 103 "inap.cnf" +#line 148 "inap.cnf" offset = dissect_returnErrorData(tree, tvb, offset, actx); @@ -1520,7 +1561,7 @@ dissect_inap_CriticalityType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_inap_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_) { -#line 93 "inap.cnf" +#line 138 "inap.cnf" offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -2180,7 +2221,7 @@ dissect_inap_BCSMEvent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_inap_T_bearerCap(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 141 "inap.cnf" +#line 186 "inap.cnf" tvbuff_t *parameter_tvb; @@ -2335,7 +2376,7 @@ dissect_inap_CalledPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tvb static int dissect_inap_CalledPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 120 "inap.cnf" +#line 165 "inap.cnf" tvbuff_t *parameter_tvb; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, @@ -2386,7 +2427,7 @@ dissect_inap_CallingPartyBusinessGroupID(gboolean implicit_tag _U_, tvbuff_t *tv static int dissect_inap_CallingPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 130 "inap.cnf" +#line 175 "inap.cnf" tvbuff_t *parameter_tvb; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, @@ -4664,7 +4705,7 @@ dissect_inap_NumberingPlan(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_inap_OriginalCalledPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 163 "inap.cnf" +#line 208 "inap.cnf" tvbuff_t *parameter_tvb; @@ -4727,7 +4768,7 @@ dissect_inap_Reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_ static int dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 173 "inap.cnf" +#line 218 "inap.cnf" tvbuff_t *parameter_tvb; @@ -4749,7 +4790,7 @@ dissect_inap_RedirectingPartyID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in int dissect_inap_RedirectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 152 "inap.cnf" +#line 197 "inap.cnf" tvbuff_t *parameter_tvb; @@ -5113,7 +5154,7 @@ dissect_inap_T_triggerId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse static int dissect_inap_T_triggerPar(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 78 "inap.cnf" +#line 123 "inap.cnf" /* FIX ME */ @@ -7691,7 +7732,7 @@ dissect_inap_MessageReceivedArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int dissect_inap_T_uIScriptSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 84 "inap.cnf" +#line 129 "inap.cnf" /* FIX ME */ @@ -7720,7 +7761,7 @@ dissect_inap_ScriptCloseArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_inap_T_uIScriptResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 81 "inap.cnf" +#line 126 "inap.cnf" /* FIX ME */ @@ -7750,7 +7791,7 @@ dissect_inap_ScriptEventArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_inap_T_uIScriptSpecificInfo_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 87 "inap.cnf" +#line 132 "inap.cnf" /* FIX ME */ @@ -7778,7 +7819,7 @@ dissect_inap_ScriptInformationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_inap_T_uIScriptSpecificInfo_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 89 "inap.cnf" +#line 134 "inap.cnf" /* FIX ME */ @@ -7868,6 +7909,20 @@ static void dissect_AssistRequestInstructionsArg_PDU(tvbuff_t *tvb _U_, packet_i asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_AssistRequestInstructionsArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_AssistRequestInstructionsArg_PDU); } +static int dissect_AuthorizeTerminationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_AuthorizeTerminationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_AuthorizeTerminationArg_PDU); + return offset; +} +static int dissect_CallFilteringArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CallFilteringArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CallFilteringArg_PDU); + return offset; +} static void dissect_CallGapArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -7888,6 +7943,13 @@ static void dissect_CancelArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_CancelArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_CancelArg_PDU); } +static int dissect_CancelStatusReportRequestArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CancelStatusReportRequestArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CancelStatusReportRequestArg_PDU); + return offset; +} static void dissect_CollectedInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -7908,6 +7970,62 @@ static void dissect_ConnectToResourceArg_PDU(tvbuff_t *tvb _U_, packet_info *pin asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ConnectToResourceArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ConnectToResourceArg_PDU); } +static int dissect_ContinueWithArgumentArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ContinueWithArgumentArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ContinueWithArgumentArg_PDU); + return offset; +} +static int dissect_CreateCallSegmentAssociationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CreateCallSegmentAssociationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CreateCallSegmentAssociationArg_PDU); + return offset; +} +static int dissect_CreateCallSegmentAssociationResultArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CreateCallSegmentAssociationResultArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CreateCallSegmentAssociationResultArg_PDU); + return offset; +} +static int dissect_CreateOrRemoveTriggerDataArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CreateOrRemoveTriggerDataArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CreateOrRemoveTriggerDataArg_PDU); + return offset; +} +static int dissect_CreateOrRemoveTriggerDataResultArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_CreateOrRemoveTriggerDataResultArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_CreateOrRemoveTriggerDataResultArg_PDU); + return offset; +} +static int dissect_DisconnectForwardConnectionWithArgumentArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_DisconnectForwardConnectionWithArgumentArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_DisconnectForwardConnectionWithArgumentArg_PDU); + return offset; +} +static int dissect_DisconnectLegArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_DisconnectLegArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_DisconnectLegArg_PDU); + return offset; +} +static int dissect_EntityReleasedArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_EntityReleasedArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_EntityReleasedArg_PDU); + return offset; +} static void dissect_EstablishTemporaryConnectionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -7923,6 +8041,20 @@ static void dissect_EventReportBCSMArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_EventReportBCSMArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_EventReportBCSMArg_PDU); } +static int dissect_EventReportFacilityArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_EventReportFacilityArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_EventReportFacilityArg_PDU); + return offset; +} +static int dissect_FacilitySelectedAndAvailableArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_FacilitySelectedAndAvailableArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_FacilitySelectedAndAvailableArg_PDU); + return offset; +} static void dissect_FurnishChargingInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -7943,6 +8075,62 @@ static void dissect_InitiateCallAttemptArg_PDU(tvbuff_t *tvb _U_, packet_info *p asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_InitiateCallAttemptArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_InitiateCallAttemptArg_PDU); } +static int dissect_ManageTriggerDataArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ManageTriggerDataArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ManageTriggerDataArg_PDU); + return offset; +} +static int dissect_ManageTriggerDataResultArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ManageTriggerDataResultArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ManageTriggerDataResultArg_PDU); + return offset; +} +static int dissect_MergeCallSegmentsArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MergeCallSegmentsArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MergeCallSegmentsArg_PDU); + return offset; +} +static int dissect_MonitorRouteReportArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MonitorRouteReportArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MonitorRouteReportArg_PDU); + return offset; +} +static int dissect_MonitorRouteRequestArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MonitorRouteRequestArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MonitorRouteRequestArg_PDU); + return offset; +} +static int dissect_MoveCallSegmentsArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MoveCallSegmentsArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MoveCallSegmentsArg_PDU); + return offset; +} +static int dissect_MoveLegArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MoveLegArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MoveLegArg_PDU); + return offset; +} +static int dissect_OAbandonArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_OAbandonArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_OAbandonArg_PDU); + return offset; +} static void dissect_OAnswerArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -7958,26 +8146,56 @@ static void dissect_ODisconnectArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ODisconnectArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ODisconnectArg_PDU); } -static void dissect_MidCallArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { +static int dissect_MidCallArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); - dissect_inap_MidCallArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_MidCallArg_PDU); + offset = dissect_inap_MidCallArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MidCallArg_PDU); + return offset; } static void dissect_ONoAnswerArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ONoAnswerArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ONoAnswerArg_PDU); } +static int dissect_OriginationAttemptArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_OriginationAttemptArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_OriginationAttemptArg_PDU); + return offset; +} static void dissect_OriginationAttemptAuthorizedArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_OriginationAttemptAuthorizedArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_OriginationAttemptAuthorizedArg_PDU); } +static int dissect_OSuspendedArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_OSuspendedArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_OSuspendedArg_PDU); + return offset; +} +static int dissect_ReconnectArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ReconnectArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ReconnectArg_PDU); + return offset; +} static void dissect_ReleaseCallArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ReleaseCallArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ReleaseCallArg_PDU); } +static int dissect_ReportUTSIArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ReportUTSIArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ReportUTSIArg_PDU); + return offset; +} static void dissect_RequestCurrentStatusReportArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -8008,6 +8226,20 @@ static void dissect_RequestReportBCSMEventArg_PDU(tvbuff_t *tvb _U_, packet_info asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_RequestReportBCSMEventArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_RequestReportBCSMEventArg_PDU); } +static int dissect_RequestReportFacilityEventArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_RequestReportFacilityEventArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_RequestReportFacilityEventArg_PDU); + return offset; +} +static int dissect_RequestReportUTSIArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_RequestReportUTSIArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_RequestReportUTSIArg_PDU); + return offset; +} static void dissect_ResetTimerArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -8028,11 +8260,46 @@ static void dissect_SelectRouteArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_SelectRouteArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_SelectRouteArg_PDU); } +static int dissect_SendChargingInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SendChargingInformationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SendChargingInformationArg_PDU); + return offset; +} +static int dissect_SendFacilityInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SendFacilityInformationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SendFacilityInformationArg_PDU); + return offset; +} +static int dissect_SendSTUIArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SendSTUIArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SendSTUIArg_PDU); + return offset; +} static void dissect_ServiceFilteringResponseArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ServiceFilteringResponseArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ServiceFilteringResponseArg_PDU); } +static int dissect_SetServiceProfileArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SetServiceProfileArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SetServiceProfileArg_PDU); + return offset; +} +static int dissect_SplitLegArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SplitLegArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SplitLegArg_PDU); + return offset; +} static void dissect_StatusReportArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -8058,11 +8325,25 @@ static void dissect_TermAttemptAuthorizedArg_PDU(tvbuff_t *tvb _U_, packet_info asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_TermAttemptAuthorizedArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_TermAttemptAuthorizedArg_PDU); } +static int dissect_TerminationAttemptArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_TerminationAttemptArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_TerminationAttemptArg_PDU); + return offset; +} static void dissect_TNoAnswerArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_TNoAnswerArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_TNoAnswerArg_PDU); } +static int dissect_TSuspendedArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_TSuspendedArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_TSuspendedArg_PDU); + return offset; +} static void dissect_PlayAnnouncementArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); @@ -8078,11 +8359,60 @@ static void dissect_ReceivedInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *p asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_ReceivedInformationArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_ReceivedInformationArg_PDU); } +static int dissect_PromptAndReceiveMessageArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_PromptAndReceiveMessageArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_PromptAndReceiveMessageArg_PDU); + return offset; +} +static int dissect_MessageReceivedArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_MessageReceivedArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_MessageReceivedArg_PDU); + return offset; +} +static int dissect_ScriptCloseArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ScriptCloseArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ScriptCloseArg_PDU); + return offset; +} +static int dissect_ScriptEventArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ScriptEventArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ScriptEventArg_PDU); + return offset; +} +static int dissect_ScriptInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ScriptInformationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ScriptInformationArg_PDU); + return offset; +} +static int dissect_ScriptRunArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_ScriptRunArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_ScriptRunArg_PDU); + return offset; +} static void dissect_SpecializedResourceReportArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); dissect_inap_SpecializedResourceReportArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_inap_SpecializedResourceReportArg_PDU); } +static int dissect_SRFCallGapArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_inap_SRFCallGapArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_inap_SRFCallGapArg_PDU); + return offset; +} /*--- End of included file: packet-inap-fn.c ---*/ @@ -8517,6 +8847,14 @@ void proto_register_inap(void) { { "AssistRequestInstructionsArg", "inap.AssistRequestInstructionsArg", FT_NONE, BASE_NONE, NULL, 0, "inap.AssistRequestInstructionsArg", HFILL }}, + { &hf_inap_AuthorizeTerminationArg_PDU, + { "AuthorizeTerminationArg", "inap.AuthorizeTerminationArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.AuthorizeTerminationArg", HFILL }}, + { &hf_inap_CallFilteringArg_PDU, + { "CallFilteringArg", "inap.CallFilteringArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CallFilteringArg", HFILL }}, { &hf_inap_CallGapArg_PDU, { "CallGapArg", "inap.CallGapArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8533,6 +8871,10 @@ void proto_register_inap(void) { { "CancelArg", "inap.CancelArg", FT_UINT32, BASE_DEC, VALS(inap_CancelArg_vals), 0, "inap.CancelArg", HFILL }}, + { &hf_inap_CancelStatusReportRequestArg_PDU, + { "CancelStatusReportRequestArg", "inap.CancelStatusReportRequestArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CancelStatusReportRequestArg", HFILL }}, { &hf_inap_CollectedInformationArg_PDU, { "CollectedInformationArg", "inap.CollectedInformationArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8549,6 +8891,38 @@ void proto_register_inap(void) { { "ConnectToResourceArg", "inap.ConnectToResourceArg", FT_NONE, BASE_NONE, NULL, 0, "inap.ConnectToResourceArg", HFILL }}, + { &hf_inap_ContinueWithArgumentArg_PDU, + { "ContinueWithArgumentArg", "inap.ContinueWithArgumentArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ContinueWithArgumentArg", HFILL }}, + { &hf_inap_CreateCallSegmentAssociationArg_PDU, + { "CreateCallSegmentAssociationArg", "inap.CreateCallSegmentAssociationArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CreateCallSegmentAssociationArg", HFILL }}, + { &hf_inap_CreateCallSegmentAssociationResultArg_PDU, + { "CreateCallSegmentAssociationResultArg", "inap.CreateCallSegmentAssociationResultArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CreateCallSegmentAssociationResultArg", HFILL }}, + { &hf_inap_CreateOrRemoveTriggerDataArg_PDU, + { "CreateOrRemoveTriggerDataArg", "inap.CreateOrRemoveTriggerDataArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CreateOrRemoveTriggerDataArg", HFILL }}, + { &hf_inap_CreateOrRemoveTriggerDataResultArg_PDU, + { "CreateOrRemoveTriggerDataResultArg", "inap.CreateOrRemoveTriggerDataResultArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.CreateOrRemoveTriggerDataResultArg", HFILL }}, + { &hf_inap_DisconnectForwardConnectionWithArgumentArg_PDU, + { "DisconnectForwardConnectionWithArgumentArg", "inap.DisconnectForwardConnectionWithArgumentArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.DisconnectForwardConnectionWithArgumentArg", HFILL }}, + { &hf_inap_DisconnectLegArg_PDU, + { "DisconnectLegArg", "inap.DisconnectLegArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.DisconnectLegArg", HFILL }}, + { &hf_inap_EntityReleasedArg_PDU, + { "EntityReleasedArg", "inap.EntityReleasedArg", + FT_UINT32, BASE_DEC, VALS(inap_EntityReleasedArg_vals), 0, + "inap.EntityReleasedArg", HFILL }}, { &hf_inap_EstablishTemporaryConnectionArg_PDU, { "EstablishTemporaryConnectionArg", "inap.EstablishTemporaryConnectionArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8561,6 +8935,14 @@ void proto_register_inap(void) { { "EventReportBCSMArg", "inap.EventReportBCSMArg", FT_NONE, BASE_NONE, NULL, 0, "inap.EventReportBCSMArg", HFILL }}, + { &hf_inap_EventReportFacilityArg_PDU, + { "EventReportFacilityArg", "inap.EventReportFacilityArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.EventReportFacilityArg", HFILL }}, + { &hf_inap_FacilitySelectedAndAvailableArg_PDU, + { "FacilitySelectedAndAvailableArg", "inap.FacilitySelectedAndAvailableArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.FacilitySelectedAndAvailableArg", HFILL }}, { &hf_inap_FurnishChargingInformationArg_PDU, { "FurnishChargingInformationArg", "inap.FurnishChargingInformationArg", FT_BYTES, BASE_HEX, NULL, 0, @@ -8577,6 +8959,38 @@ void proto_register_inap(void) { { "InitiateCallAttemptArg", "inap.InitiateCallAttemptArg", FT_NONE, BASE_NONE, NULL, 0, "inap.InitiateCallAttemptArg", HFILL }}, + { &hf_inap_ManageTriggerDataArg_PDU, + { "ManageTriggerDataArg", "inap.ManageTriggerDataArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ManageTriggerDataArg", HFILL }}, + { &hf_inap_ManageTriggerDataResultArg_PDU, + { "ManageTriggerDataResultArg", "inap.ManageTriggerDataResultArg", + FT_UINT32, BASE_DEC, VALS(inap_ManageTriggerDataResultArg_vals), 0, + "inap.ManageTriggerDataResultArg", HFILL }}, + { &hf_inap_MergeCallSegmentsArg_PDU, + { "MergeCallSegmentsArg", "inap.MergeCallSegmentsArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MergeCallSegmentsArg", HFILL }}, + { &hf_inap_MonitorRouteReportArg_PDU, + { "MonitorRouteReportArg", "inap.MonitorRouteReportArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MonitorRouteReportArg", HFILL }}, + { &hf_inap_MonitorRouteRequestArg_PDU, + { "MonitorRouteRequestArg", "inap.MonitorRouteRequestArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MonitorRouteRequestArg", HFILL }}, + { &hf_inap_MoveCallSegmentsArg_PDU, + { "MoveCallSegmentsArg", "inap.MoveCallSegmentsArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MoveCallSegmentsArg", HFILL }}, + { &hf_inap_MoveLegArg_PDU, + { "MoveLegArg", "inap.MoveLegArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MoveLegArg", HFILL }}, + { &hf_inap_OAbandonArg_PDU, + { "OAbandonArg", "inap.OAbandonArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.OAbandonArg", HFILL }}, { &hf_inap_OAnswerArg_PDU, { "OAnswerArg", "inap.OAnswerArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8597,14 +9011,30 @@ void proto_register_inap(void) { { "ONoAnswerArg", "inap.ONoAnswerArg", FT_NONE, BASE_NONE, NULL, 0, "inap.ONoAnswerArg", HFILL }}, + { &hf_inap_OriginationAttemptArg_PDU, + { "OriginationAttemptArg", "inap.OriginationAttemptArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.OriginationAttemptArg", HFILL }}, { &hf_inap_OriginationAttemptAuthorizedArg_PDU, { "OriginationAttemptAuthorizedArg", "inap.OriginationAttemptAuthorizedArg", FT_NONE, BASE_NONE, NULL, 0, "inap.OriginationAttemptAuthorizedArg", HFILL }}, + { &hf_inap_OSuspendedArg_PDU, + { "OSuspendedArg", "inap.OSuspendedArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.OSuspendedArg", HFILL }}, + { &hf_inap_ReconnectArg_PDU, + { "ReconnectArg", "inap.ReconnectArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ReconnectArg", HFILL }}, { &hf_inap_ReleaseCallArg_PDU, { "ReleaseCallArg", "inap.ReleaseCallArg", FT_UINT32, BASE_DEC, VALS(inap_ReleaseCallArg_vals), 0, "inap.ReleaseCallArg", HFILL }}, + { &hf_inap_ReportUTSIArg_PDU, + { "ReportUTSIArg", "inap.ReportUTSIArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ReportUTSIArg", HFILL }}, { &hf_inap_RequestCurrentStatusReportArg_PDU, { "RequestCurrentStatusReportArg", "inap.RequestCurrentStatusReportArg", FT_UINT32, BASE_DEC, VALS(inap_ResourceID_vals), 0, @@ -8629,6 +9059,14 @@ void proto_register_inap(void) { { "RequestReportBCSMEventArg", "inap.RequestReportBCSMEventArg", FT_NONE, BASE_NONE, NULL, 0, "inap.RequestReportBCSMEventArg", HFILL }}, + { &hf_inap_RequestReportFacilityEventArg_PDU, + { "RequestReportFacilityEventArg", "inap.RequestReportFacilityEventArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.RequestReportFacilityEventArg", HFILL }}, + { &hf_inap_RequestReportUTSIArg_PDU, + { "RequestReportUTSIArg", "inap.RequestReportUTSIArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.RequestReportUTSIArg", HFILL }}, { &hf_inap_ResetTimerArg_PDU, { "ResetTimerArg", "inap.ResetTimerArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8645,10 +9083,30 @@ void proto_register_inap(void) { { "SelectRouteArg", "inap.SelectRouteArg", FT_NONE, BASE_NONE, NULL, 0, "inap.SelectRouteArg", HFILL }}, + { &hf_inap_SendChargingInformationArg_PDU, + { "SendChargingInformationArg", "inap.SendChargingInformationArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SendChargingInformationArg", HFILL }}, + { &hf_inap_SendFacilityInformationArg_PDU, + { "SendFacilityInformationArg", "inap.SendFacilityInformationArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SendFacilityInformationArg", HFILL }}, + { &hf_inap_SendSTUIArg_PDU, + { "SendSTUIArg", "inap.SendSTUIArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SendSTUIArg", HFILL }}, { &hf_inap_ServiceFilteringResponseArg_PDU, { "ServiceFilteringResponseArg", "inap.ServiceFilteringResponseArg", FT_NONE, BASE_NONE, NULL, 0, "inap.ServiceFilteringResponseArg", HFILL }}, + { &hf_inap_SetServiceProfileArg_PDU, + { "SetServiceProfileArg", "inap.SetServiceProfileArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SetServiceProfileArg", HFILL }}, + { &hf_inap_SplitLegArg_PDU, + { "SplitLegArg", "inap.SplitLegArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SplitLegArg", HFILL }}, { &hf_inap_StatusReportArg_PDU, { "StatusReportArg", "inap.StatusReportArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8669,10 +9127,18 @@ void proto_register_inap(void) { { "TermAttemptAuthorizedArg", "inap.TermAttemptAuthorizedArg", FT_NONE, BASE_NONE, NULL, 0, "inap.TermAttemptAuthorizedArg", HFILL }}, + { &hf_inap_TerminationAttemptArg_PDU, + { "TerminationAttemptArg", "inap.TerminationAttemptArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.TerminationAttemptArg", HFILL }}, { &hf_inap_TNoAnswerArg_PDU, { "TNoAnswerArg", "inap.TNoAnswerArg", FT_NONE, BASE_NONE, NULL, 0, "inap.TNoAnswerArg", HFILL }}, + { &hf_inap_TSuspendedArg_PDU, + { "TSuspendedArg", "inap.TSuspendedArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.TSuspendedArg", HFILL }}, { &hf_inap_PlayAnnouncementArg_PDU, { "PlayAnnouncementArg", "inap.PlayAnnouncementArg", FT_NONE, BASE_NONE, NULL, 0, @@ -8685,10 +9151,38 @@ void proto_register_inap(void) { { "ReceivedInformationArg", "inap.ReceivedInformationArg", FT_UINT32, BASE_DEC, VALS(inap_ReceivedInformationArg_vals), 0, "inap.ReceivedInformationArg", HFILL }}, + { &hf_inap_PromptAndReceiveMessageArg_PDU, + { "PromptAndReceiveMessageArg", "inap.PromptAndReceiveMessageArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.PromptAndReceiveMessageArg", HFILL }}, + { &hf_inap_MessageReceivedArg_PDU, + { "MessageReceivedArg", "inap.MessageReceivedArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.MessageReceivedArg", HFILL }}, + { &hf_inap_ScriptCloseArg_PDU, + { "ScriptCloseArg", "inap.ScriptCloseArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ScriptCloseArg", HFILL }}, + { &hf_inap_ScriptEventArg_PDU, + { "ScriptEventArg", "inap.ScriptEventArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ScriptEventArg", HFILL }}, + { &hf_inap_ScriptInformationArg_PDU, + { "ScriptInformationArg", "inap.ScriptInformationArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ScriptInformationArg", HFILL }}, + { &hf_inap_ScriptRunArg_PDU, + { "ScriptRunArg", "inap.ScriptRunArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.ScriptRunArg", HFILL }}, { &hf_inap_SpecializedResourceReportArg_PDU, { "SpecializedResourceReportArg", "inap.SpecializedResourceReportArg", FT_NONE, BASE_NONE, NULL, 0, "inap.SpecializedResourceReportArg", HFILL }}, + { &hf_inap_SRFCallGapArg_PDU, + { "SRFCallGapArg", "inap.SRFCallGapArg", + FT_NONE, BASE_NONE, NULL, 0, + "inap.SRFCallGapArg", HFILL }}, { &hf_inap_local, { "local", "inap.local", FT_INT32, BASE_DEC, NULL, 0, diff --git a/epan/dissectors/packet-inap.h b/epan/dissectors/packet-inap.h index 80599f39c4..39cd1dcca4 100644 --- a/epan/dissectors/packet-inap.h +++ b/epan/dissectors/packet-inap.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-inap.h */ +/* ./packet-inap.h */ /* ../../tools/asn2wrs.py -b -X -e -p inap -c inap.cnf -s packet-inap-template ../ros/Remote-Operations-Information-Objects.asn IN-common-classes.asn IN-SSF-SCF-Classes.asn IN-SCF-SRF-Classes.asn inap.asn IN-object-identifiers.asn IN-common-datatypes.asn IN-SSF-SCF-datatypes.asn IN-SSF-SCF-ops-args.asn IN-SCF-SRF-datatypes.asn IN-SCF-SRF-ops-args.asn */ /* Input file: packet-inap-template.h */ diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c index cd2dfe7452..6f6fa91014 100644 --- a/epan/dissectors/packet-ldap.c +++ b/epan/dissectors/packet-ldap.c @@ -90,7 +90,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/epan/dissectors/packet-logotypecertextn.c b/epan/dissectors/packet-logotypecertextn.c index 729911d9f5..b20c10904b 100644 --- a/epan/dissectors/packet-logotypecertextn.c +++ b/epan/dissectors/packet-logotypecertextn.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-logotypecertextn.c */ +/* ./packet-logotypecertextn.c */ /* ../../tools/asn2wrs.py -b -e -p logotypecertextn -c logotype-cert-extn.cnf -s packet-logotype-cert-extn-template LogotypeCertExtn.asn */ /* Input file: packet-logotype-cert-extn-template.c */ diff --git a/epan/dissectors/packet-logotypecertextn.h b/epan/dissectors/packet-logotypecertextn.h index a0dbacea5b..73939b25b8 100644 --- a/epan/dissectors/packet-logotypecertextn.h +++ b/epan/dissectors/packet-logotypecertextn.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-logotypecertextn.h */ +/* ./packet-logotypecertextn.h */ /* ../../tools/asn2wrs.py -b -e -p logotypecertextn -c logotype-cert-extn.cnf -s packet-logotype-cert-extn-template LogotypeCertExtn.asn */ /* Input file: packet-logotype-cert-extn-template.h */ diff --git a/epan/dissectors/packet-ns_cert_exts.c b/epan/dissectors/packet-ns_cert_exts.c index ff5c005de3..05f70a61c0 100644 --- a/epan/dissectors/packet-ns_cert_exts.c +++ b/epan/dissectors/packet-ns_cert_exts.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ns_cert_exts.c */ +/* ./packet-ns_cert_exts.c */ /* ../../tools/asn2wrs.py -b -e -p ns_cert_exts -c ns_cert_exts.cnf -s packet-ns_cert_exts-template NETSCAPE-CERT-EXTS.asn */ /* Input file: packet-ns_cert_exts-template.c */ diff --git a/epan/dissectors/packet-ocsp.c b/epan/dissectors/packet-ocsp.c index 926b54dfe7..9f82228fc2 100644 --- a/epan/dissectors/packet-ocsp.c +++ b/epan/dissectors/packet-ocsp.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ocsp.c */ +/* ./packet-ocsp.c */ /* ../../tools/asn2wrs.py -b -e -p ocsp -c ocsp.cnf -s packet-ocsp-template OCSP.asn */ /* Input file: packet-ocsp-template.c */ diff --git a/epan/dissectors/packet-ocsp.h b/epan/dissectors/packet-ocsp.h index 28786484b0..d4b1ee9702 100644 --- a/epan/dissectors/packet-ocsp.h +++ b/epan/dissectors/packet-ocsp.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ocsp.h */ +/* ./packet-ocsp.h */ /* ../../tools/asn2wrs.py -b -e -p ocsp -c ocsp.cnf -s packet-ocsp-template OCSP.asn */ /* Input file: packet-ocsp-template.h */ diff --git a/epan/dissectors/packet-pkcs1.c b/epan/dissectors/packet-pkcs1.c index c256012511..76685a62d6 100644 --- a/epan/dissectors/packet-pkcs1.c +++ b/epan/dissectors/packet-pkcs1.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkcs1.c */ +/* ./packet-pkcs1.c */ /* ../../tools/asn2wrs.py -b -p pkcs1 -c pkcs1.cnf -s packet-pkcs1-template PKCS1.asn */ /* Input file: packet-pkcs1-template.c */ diff --git a/epan/dissectors/packet-pkcs1.h b/epan/dissectors/packet-pkcs1.h index e2917f38f0..8f2d67403a 100644 --- a/epan/dissectors/packet-pkcs1.h +++ b/epan/dissectors/packet-pkcs1.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkcs1.h */ +/* ./packet-pkcs1.h */ /* ../../tools/asn2wrs.py -b -p pkcs1 -c pkcs1.cnf -s packet-pkcs1-template PKCS1.asn */ /* Input file: packet-pkcs1-template.h */ diff --git a/epan/dissectors/packet-pkcs12.c b/epan/dissectors/packet-pkcs12.c index 94ae4bdd90..f8151f470b 100644 --- a/epan/dissectors/packet-pkcs12.c +++ b/epan/dissectors/packet-pkcs12.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-pkinit.c b/epan/dissectors/packet-pkinit.c index ebcc16f96a..f733819fc9 100644 --- a/epan/dissectors/packet-pkinit.c +++ b/epan/dissectors/packet-pkinit.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkinit.c */ +/* ./packet-pkinit.c */ /* ../../tools/asn2wrs.py -e -b -p pkinit -c pkinit.cnf -s packet-pkinit-template PKINIT.asn */ /* Input file: packet-pkinit-template.c */ diff --git a/epan/dissectors/packet-pkinit.h b/epan/dissectors/packet-pkinit.h index 5c397fa094..ce4ce1f74a 100644 --- a/epan/dissectors/packet-pkinit.h +++ b/epan/dissectors/packet-pkinit.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkinit.h */ +/* ./packet-pkinit.h */ /* ../../tools/asn2wrs.py -e -b -p pkinit -c pkinit.cnf -s packet-pkinit-template PKINIT.asn */ /* Input file: packet-pkinit-template.h */ diff --git a/epan/dissectors/packet-pkixproxy.c b/epan/dissectors/packet-pkixproxy.c index 51e6de2208..c1b40c0255 100644 --- a/epan/dissectors/packet-pkixproxy.c +++ b/epan/dissectors/packet-pkixproxy.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixproxy.c */ +/* ./packet-pkixproxy.c */ /* ../../tools/asn2wrs.py -b -e -p pkixproxy -c pkixproxy.cnf -s packet-pkixproxy-template PKIXProxy.asn */ /* Input file: packet-pkixproxy-template.c */ @@ -37,7 +37,7 @@ #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-pkixproxy.h b/epan/dissectors/packet-pkixproxy.h index 92c59e06a4..83637cbabf 100644 --- a/epan/dissectors/packet-pkixproxy.h +++ b/epan/dissectors/packet-pkixproxy.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixproxy.h */ +/* ./packet-pkixproxy.h */ /* ../../tools/asn2wrs.py -b -e -p pkixproxy -c pkixproxy.cnf -s packet-pkixproxy-template PKIXProxy.asn */ /* Input file: packet-pkixproxy-template.h */ diff --git a/epan/dissectors/packet-pkixqualified.c b/epan/dissectors/packet-pkixqualified.c index a8ca3b5373..d880b83518 100644 --- a/epan/dissectors/packet-pkixqualified.c +++ b/epan/dissectors/packet-pkixqualified.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixqualified.c */ +/* ./packet-pkixqualified.c */ /* ../../tools/asn2wrs.py -b -e -p pkixqualified -c pkixqualified.cnf -s packet-pkixqualified-template PKIXqualified.asn */ /* Input file: packet-pkixqualified-template.c */ diff --git a/epan/dissectors/packet-pkixqualified.h b/epan/dissectors/packet-pkixqualified.h index c1a0ab609f..398cbb9a63 100644 --- a/epan/dissectors/packet-pkixqualified.h +++ b/epan/dissectors/packet-pkixqualified.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixqualified.h */ +/* ./packet-pkixqualified.h */ /* ../../tools/asn2wrs.py -b -e -p pkixqualified -c pkixqualified.cnf -s packet-pkixqualified-template PKIXqualified.asn */ /* Input file: packet-pkixqualified-template.h */ diff --git a/epan/dissectors/packet-pkixtsp.c b/epan/dissectors/packet-pkixtsp.c index 724364e89d..0f1d72c2d3 100644 --- a/epan/dissectors/packet-pkixtsp.c +++ b/epan/dissectors/packet-pkixtsp.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixtsp.c */ +/* ./packet-pkixtsp.c */ /* ../../tools/asn2wrs.py -b -e -p pkixtsp -c pkixtsp.cnf -s packet-pkixtsp-template PKIXTSP.asn */ /* Input file: packet-pkixtsp-template.c */ diff --git a/epan/dissectors/packet-pkixtsp.h b/epan/dissectors/packet-pkixtsp.h index ad3c6a257c..0418a1b83e 100644 --- a/epan/dissectors/packet-pkixtsp.h +++ b/epan/dissectors/packet-pkixtsp.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pkixtsp.h */ +/* ./packet-pkixtsp.h */ /* ../../tools/asn2wrs.py -b -e -p pkixtsp -c pkixtsp.cnf -s packet-pkixtsp-template PKIXTSP.asn */ /* Input file: packet-pkixtsp-template.h */ diff --git a/epan/dissectors/packet-pres.h b/epan/dissectors/packet-pres.h index b94ed94acf..9b2eefc949 100644 --- a/epan/dissectors/packet-pres.h +++ b/epan/dissectors/packet-pres.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-pres.h */ +/* ./packet-pres.h */ /* ../../tools/asn2wrs.py -b -e -p pres -c pres.cnf -s packet-pres-template ISO8823-PRESENTATION.asn */ /* Input file: packet-pres-template.h */ diff --git a/epan/dissectors/packet-rrc.c b/epan/dissectors/packet-rrc.c index ed37f9ca64..99b7e2efd8 100644 --- a/epan/dissectors/packet-rrc.c +++ b/epan/dissectors/packet-rrc.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-rrc.c */ +/* ./packet-rrc.c */ /* ../../tools/asn2wrs.py -p rrc -c rrc.cnf -s packet-rrc-template Class-definitions.asn PDU-definitions.asn InformationElements.asn Constant-definitions.asn Internode-definitions.asn */ /* Input file: packet-rrc-template.c */ @@ -11387,25 +11387,6 @@ dissect_rrc_T_consecutive(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U } -static const asn_namedbit T_bitmap_bits[] = { - { 0, &hf_rrc_T_bitmap_chCode16_SF16, -1, -1, "chCode16-SF16", NULL }, - { 1, &hf_rrc_T_bitmap_chCode15_SF16, -1, -1, "chCode15-SF16", NULL }, - { 2, &hf_rrc_T_bitmap_chCode14_SF16, -1, -1, "chCode14-SF16", NULL }, - { 3, &hf_rrc_T_bitmap_chCode13_SF16, -1, -1, "chCode13-SF16", NULL }, - { 4, &hf_rrc_T_bitmap_chCode12_SF16, -1, -1, "chCode12-SF16", NULL }, - { 5, &hf_rrc_T_bitmap_chCode11_SF16, -1, -1, "chCode11-SF16", NULL }, - { 6, &hf_rrc_T_bitmap_chCode10_SF16, -1, -1, "chCode10-SF16", NULL }, - { 7, &hf_rrc_T_bitmap_chCode9_SF16, -1, -1, "chCode9-SF16", NULL }, - { 8, &hf_rrc_T_bitmap_chCode8_SF16, -1, -1, "chCode8-SF16", NULL }, - { 9, &hf_rrc_T_bitmap_chCode7_SF16, -1, -1, "chCode7-SF16", NULL }, - { 10, &hf_rrc_T_bitmap_chCode6_SF16, -1, -1, "chCode6-SF16", NULL }, - { 11, &hf_rrc_T_bitmap_chCode5_SF16, -1, -1, "chCode5-SF16", NULL }, - { 12, &hf_rrc_T_bitmap_chCode4_SF16, -1, -1, "chCode4-SF16", NULL }, - { 13, &hf_rrc_T_bitmap_chCode3_SF16, -1, -1, "chCode3-SF16", NULL }, - { 14, &hf_rrc_T_bitmap_chCode2_SF16, -1, -1, "chCode2-SF16", NULL }, - { 15, &hf_rrc_T_bitmap_chCode1_SF16, -1, -1, "chCode1-SF16", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_bitmap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -25531,17 +25512,6 @@ dissect_rrc_UL_SynchronisationParameters_r4(tvbuff_t *tvb _U_, int offset _U_, a } -static const asn_namedbit T_sync_UL_CodesBitmap_bits[] = { - { 0, &hf_rrc_T_sync_UL_CodesBitmap_code7, -1, -1, "code7", NULL }, - { 1, &hf_rrc_T_sync_UL_CodesBitmap_code6, -1, -1, "code6", NULL }, - { 2, &hf_rrc_T_sync_UL_CodesBitmap_code5, -1, -1, "code5", NULL }, - { 3, &hf_rrc_T_sync_UL_CodesBitmap_code4, -1, -1, "code4", NULL }, - { 4, &hf_rrc_T_sync_UL_CodesBitmap_code3, -1, -1, "code3", NULL }, - { 5, &hf_rrc_T_sync_UL_CodesBitmap_code2, -1, -1, "code2", NULL }, - { 6, &hf_rrc_T_sync_UL_CodesBitmap_code1, -1, -1, "code1", NULL }, - { 7, &hf_rrc_T_sync_UL_CodesBitmap_code0, -1, -1, "code0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_sync_UL_CodesBitmap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -33856,41 +33826,6 @@ dissect_rrc_T_consecutive_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } -static const asn_namedbit T_bitmap_01_bits[] = { - { 0, &hf_rrc_T_bitmap_01_chCode32_SF32, -1, -1, "chCode32-SF32", NULL }, - { 1, &hf_rrc_T_bitmap_01_chCode31_SF32, -1, -1, "chCode31-SF32", NULL }, - { 2, &hf_rrc_T_bitmap_01_chCode30_SF32, -1, -1, "chCode30-SF32", NULL }, - { 3, &hf_rrc_T_bitmap_01_chCode29_SF32, -1, -1, "chCode29-SF32", NULL }, - { 4, &hf_rrc_T_bitmap_01_chCode28_SF32, -1, -1, "chCode28-SF32", NULL }, - { 5, &hf_rrc_T_bitmap_01_chCode27_SF32, -1, -1, "chCode27-SF32", NULL }, - { 6, &hf_rrc_T_bitmap_01_chCode26_SF32, -1, -1, "chCode26-SF32", NULL }, - { 7, &hf_rrc_T_bitmap_01_chCode25_SF32, -1, -1, "chCode25-SF32", NULL }, - { 8, &hf_rrc_T_bitmap_01_chCode24_SF32, -1, -1, "chCode24-SF32", NULL }, - { 9, &hf_rrc_T_bitmap_01_chCode23_SF32, -1, -1, "chCode23-SF32", NULL }, - { 10, &hf_rrc_T_bitmap_01_chCode22_SF32, -1, -1, "chCode22-SF32", NULL }, - { 11, &hf_rrc_T_bitmap_01_chCode21_SF32, -1, -1, "chCode21-SF32", NULL }, - { 12, &hf_rrc_T_bitmap_01_chCode20_SF32, -1, -1, "chCode20-SF32", NULL }, - { 13, &hf_rrc_T_bitmap_01_chCode19_SF32, -1, -1, "chCode19-SF32", NULL }, - { 14, &hf_rrc_T_bitmap_01_chCode18_SF32, -1, -1, "chCode18-SF32", NULL }, - { 15, &hf_rrc_T_bitmap_01_chCode17_SF32, -1, -1, "chCode17-SF32", NULL }, - { 16, &hf_rrc_T_bitmap_01_chCode16_SF32, -1, -1, "chCode16-SF32", NULL }, - { 17, &hf_rrc_T_bitmap_01_chCode15_SF32, -1, -1, "chCode15-SF32", NULL }, - { 18, &hf_rrc_T_bitmap_01_chCode14_SF32, -1, -1, "chCode14-SF32", NULL }, - { 19, &hf_rrc_T_bitmap_01_chCode13_SF32, -1, -1, "chCode13-SF32", NULL }, - { 20, &hf_rrc_T_bitmap_01_chCode12_SF32, -1, -1, "chCode12-SF32", NULL }, - { 21, &hf_rrc_T_bitmap_01_chCode11_SF32, -1, -1, "chCode11-SF32", NULL }, - { 22, &hf_rrc_T_bitmap_01_chCode10_SF32, -1, -1, "chCode10-SF32", NULL }, - { 23, &hf_rrc_T_bitmap_01_chCode9_SF32, -1, -1, "chCode9-SF32", NULL }, - { 24, &hf_rrc_T_bitmap_01_chCode8_SF32, -1, -1, "chCode8-SF32", NULL }, - { 25, &hf_rrc_T_bitmap_01_chCode7_SF32, -1, -1, "chCode7-SF32", NULL }, - { 26, &hf_rrc_T_bitmap_01_chCode6_SF32, -1, -1, "chCode6-SF32", NULL }, - { 27, &hf_rrc_T_bitmap_01_chCode5_SF32, -1, -1, "chCode5-SF32", NULL }, - { 28, &hf_rrc_T_bitmap_01_chCode4_SF32, -1, -1, "chCode4-SF32", NULL }, - { 29, &hf_rrc_T_bitmap_01_chCode3_SF32, -1, -1, "chCode3-SF32", NULL }, - { 30, &hf_rrc_T_bitmap_01_chCode2_SF32, -1, -1, "chCode2-SF32", NULL }, - { 31, &hf_rrc_T_bitmap_01_chCode1_SF32, -1, -1, "chCode1-SF32", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_bitmap_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -49210,25 +49145,6 @@ dissect_rrc_RRCConnectionRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * } -static const asn_namedbit T_cipheringAlgorithmCap_bits[] = { - { 0, &hf_rrc_T_cipheringAlgorithmCap_spare15, -1, -1, "spare15", NULL }, - { 1, &hf_rrc_T_cipheringAlgorithmCap_spare14, -1, -1, "spare14", NULL }, - { 2, &hf_rrc_T_cipheringAlgorithmCap_spare13, -1, -1, "spare13", NULL }, - { 3, &hf_rrc_T_cipheringAlgorithmCap_spare12, -1, -1, "spare12", NULL }, - { 4, &hf_rrc_T_cipheringAlgorithmCap_spare11, -1, -1, "spare11", NULL }, - { 5, &hf_rrc_T_cipheringAlgorithmCap_spare10, -1, -1, "spare10", NULL }, - { 6, &hf_rrc_T_cipheringAlgorithmCap_spare9, -1, -1, "spare9", NULL }, - { 7, &hf_rrc_T_cipheringAlgorithmCap_spare8, -1, -1, "spare8", NULL }, - { 8, &hf_rrc_T_cipheringAlgorithmCap_spare7, -1, -1, "spare7", NULL }, - { 9, &hf_rrc_T_cipheringAlgorithmCap_spare6, -1, -1, "spare6", NULL }, - { 10, &hf_rrc_T_cipheringAlgorithmCap_spare5, -1, -1, "spare5", NULL }, - { 11, &hf_rrc_T_cipheringAlgorithmCap_spare4, -1, -1, "spare4", NULL }, - { 12, &hf_rrc_T_cipheringAlgorithmCap_spare3, -1, -1, "spare3", NULL }, - { 13, &hf_rrc_T_cipheringAlgorithmCap_uea2, -1, -1, "uea2", NULL }, - { 14, &hf_rrc_T_cipheringAlgorithmCap_uea1, -1, -1, "uea1", NULL }, - { 15, &hf_rrc_T_cipheringAlgorithmCap_uea0, -1, -1, "uea0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_cipheringAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -49239,25 +49155,6 @@ dissect_rrc_T_cipheringAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ } -static const asn_namedbit T_integrityProtectionAlgorithmCap_bits[] = { - { 0, &hf_rrc_T_integrityProtectionAlgorithmCap_spare15, -1, -1, "spare15", NULL }, - { 1, &hf_rrc_T_integrityProtectionAlgorithmCap_spare14, -1, -1, "spare14", NULL }, - { 2, &hf_rrc_T_integrityProtectionAlgorithmCap_spare13, -1, -1, "spare13", NULL }, - { 3, &hf_rrc_T_integrityProtectionAlgorithmCap_spare12, -1, -1, "spare12", NULL }, - { 4, &hf_rrc_T_integrityProtectionAlgorithmCap_spare11, -1, -1, "spare11", NULL }, - { 5, &hf_rrc_T_integrityProtectionAlgorithmCap_spare10, -1, -1, "spare10", NULL }, - { 6, &hf_rrc_T_integrityProtectionAlgorithmCap_spare9, -1, -1, "spare9", NULL }, - { 7, &hf_rrc_T_integrityProtectionAlgorithmCap_spare8, -1, -1, "spare8", NULL }, - { 8, &hf_rrc_T_integrityProtectionAlgorithmCap_spare7, -1, -1, "spare7", NULL }, - { 9, &hf_rrc_T_integrityProtectionAlgorithmCap_spare6, -1, -1, "spare6", NULL }, - { 10, &hf_rrc_T_integrityProtectionAlgorithmCap_spare5, -1, -1, "spare5", NULL }, - { 11, &hf_rrc_T_integrityProtectionAlgorithmCap_spare4, -1, -1, "spare4", NULL }, - { 12, &hf_rrc_T_integrityProtectionAlgorithmCap_spare3, -1, -1, "spare3", NULL }, - { 13, &hf_rrc_T_integrityProtectionAlgorithmCap_uia2, -1, -1, "uia2", NULL }, - { 14, &hf_rrc_T_integrityProtectionAlgorithmCap_uia1, -1, -1, "uia1", NULL }, - { 15, &hf_rrc_T_integrityProtectionAlgorithmCap_spare0, -1, -1, "spare0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_integrityProtectionAlgorithmCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -49283,16 +49180,6 @@ dissect_rrc_SecurityCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } -static const asn_namedbit GsmSecurityCapability_bits[] = { - { 0, &hf_rrc_GsmSecurityCapability_a5_7, -1, -1, "a5-7", NULL }, - { 1, &hf_rrc_GsmSecurityCapability_a5_6, -1, -1, "a5-6", NULL }, - { 2, &hf_rrc_GsmSecurityCapability_a5_5, -1, -1, "a5-5", NULL }, - { 3, &hf_rrc_GsmSecurityCapability_a5_4, -1, -1, "a5-4", NULL }, - { 4, &hf_rrc_GsmSecurityCapability_a5_3, -1, -1, "a5-3", NULL }, - { 5, &hf_rrc_GsmSecurityCapability_a5_2, -1, -1, "a5-2", NULL }, - { 6, &hf_rrc_GsmSecurityCapability_a5_1, -1, -1, "a5-1", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_GsmSecurityCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -74901,13 +74788,6 @@ dissect_rrc_AC_To_ASC_MappingTable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t } -static const asn_namedbit T_assignedSubChannelNumber_bits[] = { - { 0, &hf_rrc_T_assignedSubChannelNumber_b3, -1, -1, "b3", NULL }, - { 1, &hf_rrc_T_assignedSubChannelNumber_b2, -1, -1, "b2", NULL }, - { 2, &hf_rrc_T_assignedSubChannelNumber_b1, -1, -1, "b1", NULL }, - { 3, &hf_rrc_T_assignedSubChannelNumber_b0, -1, -1, "b0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_assignedSubChannelNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -74934,17 +74814,6 @@ dissect_rrc_AccessServiceClass_FDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t } -static const asn_namedbit T_channelisationCodeIndices_bits[] = { - { 0, &hf_rrc_T_channelisationCodeIndices_chCodeIndex7, -1, -1, "chCodeIndex7", NULL }, - { 1, &hf_rrc_T_channelisationCodeIndices_chCodeIndex6, -1, -1, "chCodeIndex6", NULL }, - { 2, &hf_rrc_T_channelisationCodeIndices_chCodeIndex5, -1, -1, "chCodeIndex5", NULL }, - { 3, &hf_rrc_T_channelisationCodeIndices_chCodeIndex4, -1, -1, "chCodeIndex4", NULL }, - { 4, &hf_rrc_T_channelisationCodeIndices_chCodeIndex3, -1, -1, "chCodeIndex3", NULL }, - { 5, &hf_rrc_T_channelisationCodeIndices_chCodeIndex2, -1, -1, "chCodeIndex2", NULL }, - { 6, &hf_rrc_T_channelisationCodeIndices_chCodeIndex1, -1, -1, "chCodeIndex1", NULL }, - { 7, &hf_rrc_T_channelisationCodeIndices_chCodeIndex0, -1, -1, "chCodeIndex0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_channelisationCodeIndices(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -74985,13 +74854,6 @@ dissect_rrc_T_size2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro } -static const asn_namedbit T_subchannels_01_bits[] = { - { 0, &hf_rrc_T_subchannels_01_subCh3, -1, -1, "subCh3", NULL }, - { 1, &hf_rrc_T_subchannels_01_subCh2, -1, -1, "subCh2", NULL }, - { 2, &hf_rrc_T_subchannels_01_subCh1, -1, -1, "subCh1", NULL }, - { 3, &hf_rrc_T_subchannels_01_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75016,17 +74878,6 @@ dissect_rrc_T_size4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro } -static const asn_namedbit T_subchannels_02_bits[] = { - { 0, &hf_rrc_T_subchannels_02_subCh7, -1, -1, "subCh7", NULL }, - { 1, &hf_rrc_T_subchannels_02_subCh6, -1, -1, "subCh6", NULL }, - { 2, &hf_rrc_T_subchannels_02_subCh5, -1, -1, "subCh5", NULL }, - { 3, &hf_rrc_T_subchannels_02_subCh4, -1, -1, "subCh4", NULL }, - { 4, &hf_rrc_T_subchannels_02_subCh3, -1, -1, "subCh3", NULL }, - { 5, &hf_rrc_T_subchannels_02_subCh2, -1, -1, "subCh2", NULL }, - { 6, &hf_rrc_T_subchannels_02_subCh1, -1, -1, "subCh1", NULL }, - { 7, &hf_rrc_T_subchannels_02_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75092,25 +74943,6 @@ dissect_rrc_AccessServiceClass_TDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t } -static const asn_namedbit T_channelisationCodeIndices_01_bits[] = { - { 0, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex15, -1, -1, "chCodeIndex15", NULL }, - { 1, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex14, -1, -1, "chCodeIndex14", NULL }, - { 2, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex13, -1, -1, "chCodeIndex13", NULL }, - { 3, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex12, -1, -1, "chCodeIndex12", NULL }, - { 4, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex11, -1, -1, "chCodeIndex11", NULL }, - { 5, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex10, -1, -1, "chCodeIndex10", NULL }, - { 6, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex9, -1, -1, "chCodeIndex9", NULL }, - { 7, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex8, -1, -1, "chCodeIndex8", NULL }, - { 8, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex7, -1, -1, "chCodeIndex7", NULL }, - { 9, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex6, -1, -1, "chCodeIndex6", NULL }, - { 10, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex5, -1, -1, "chCodeIndex5", NULL }, - { 11, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex4, -1, -1, "chCodeIndex4", NULL }, - { 12, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex3, -1, -1, "chCodeIndex3", NULL }, - { 13, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex2, -1, -1, "chCodeIndex2", NULL }, - { 14, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex1, -1, -1, "chCodeIndex1", NULL }, - { 15, &hf_rrc_T_channelisationCodeIndices_01_chCodeIndex0, -1, -1, "chCodeIndex0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_channelisationCodeIndices_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75151,13 +74983,6 @@ dissect_rrc_T_size2_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_subchannels_04_bits[] = { - { 0, &hf_rrc_T_subchannels_04_subCh3, -1, -1, "subCh3", NULL }, - { 1, &hf_rrc_T_subchannels_04_subCh2, -1, -1, "subCh2", NULL }, - { 2, &hf_rrc_T_subchannels_04_subCh1, -1, -1, "subCh1", NULL }, - { 3, &hf_rrc_T_subchannels_04_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_04(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75182,17 +75007,6 @@ dissect_rrc_T_size4_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_subchannels_05_bits[] = { - { 0, &hf_rrc_T_subchannels_05_subCh7, -1, -1, "subCh7", NULL }, - { 1, &hf_rrc_T_subchannels_05_subCh6, -1, -1, "subCh6", NULL }, - { 2, &hf_rrc_T_subchannels_05_subCh5, -1, -1, "subCh5", NULL }, - { 3, &hf_rrc_T_subchannels_05_subCh4, -1, -1, "subCh4", NULL }, - { 4, &hf_rrc_T_subchannels_05_subCh3, -1, -1, "subCh3", NULL }, - { 5, &hf_rrc_T_subchannels_05_subCh2, -1, -1, "subCh2", NULL }, - { 6, &hf_rrc_T_subchannels_05_subCh1, -1, -1, "subCh1", NULL }, - { 7, &hf_rrc_T_subchannels_05_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_05(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75217,25 +75031,6 @@ dissect_rrc_T_size8_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_subchannels_06_bits[] = { - { 0, &hf_rrc_T_subchannels_06_subCh15, -1, -1, "subCh15", NULL }, - { 1, &hf_rrc_T_subchannels_06_subCh14, -1, -1, "subCh14", NULL }, - { 2, &hf_rrc_T_subchannels_06_subCh13, -1, -1, "subCh13", NULL }, - { 3, &hf_rrc_T_subchannels_06_subCh12, -1, -1, "subCh12", NULL }, - { 4, &hf_rrc_T_subchannels_06_subCh11, -1, -1, "subCh11", NULL }, - { 5, &hf_rrc_T_subchannels_06_subCh10, -1, -1, "subCh10", NULL }, - { 6, &hf_rrc_T_subchannels_06_subCh9, -1, -1, "subCh9", NULL }, - { 7, &hf_rrc_T_subchannels_06_subCh8, -1, -1, "subCh8", NULL }, - { 8, &hf_rrc_T_subchannels_06_subCh7, -1, -1, "subCh7", NULL }, - { 9, &hf_rrc_T_subchannels_06_subCh6, -1, -1, "subCh6", NULL }, - { 10, &hf_rrc_T_subchannels_06_subCh5, -1, -1, "subCh5", NULL }, - { 11, &hf_rrc_T_subchannels_06_subCh4, -1, -1, "subCh4", NULL }, - { 12, &hf_rrc_T_subchannels_06_subCh3, -1, -1, "subCh3", NULL }, - { 13, &hf_rrc_T_subchannels_06_subCh2, -1, -1, "subCh2", NULL }, - { 14, &hf_rrc_T_subchannels_06_subCh1, -1, -1, "subCh1", NULL }, - { 15, &hf_rrc_T_subchannels_06_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_06(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75303,17 +75098,6 @@ dissect_rrc_AccessServiceClass_TDD_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ct } -static const asn_namedbit T_availableSYNC_UlCodesIndics_bits[] = { - { 0, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex7, -1, -1, "sulCodeIndex7", NULL }, - { 1, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex6, -1, -1, "sulCodeIndex6", NULL }, - { 2, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex5, -1, -1, "sulCodeIndex5", NULL }, - { 3, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex4, -1, -1, "sulCodeIndex4", NULL }, - { 4, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex3, -1, -1, "sulCodeIndex3", NULL }, - { 5, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex2, -1, -1, "sulCodeIndex2", NULL }, - { 6, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex1, -1, -1, "sulCodeIndex1", NULL }, - { 7, &hf_rrc_T_availableSYNC_UlCodesIndics_sulCodeIndex0, -1, -1, "sulCodeIndex0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_availableSYNC_UlCodesIndics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75354,13 +75138,6 @@ dissect_rrc_T_size2_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_subchannels_08_bits[] = { - { 0, &hf_rrc_T_subchannels_08_subCh3, -1, -1, "subCh3", NULL }, - { 1, &hf_rrc_T_subchannels_08_subCh2, -1, -1, "subCh2", NULL }, - { 2, &hf_rrc_T_subchannels_08_subCh1, -1, -1, "subCh1", NULL }, - { 3, &hf_rrc_T_subchannels_08_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_08(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75385,17 +75162,6 @@ dissect_rrc_T_size4_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_subchannels_09_bits[] = { - { 0, &hf_rrc_T_subchannels_09_subCh7, -1, -1, "subCh7", NULL }, - { 1, &hf_rrc_T_subchannels_09_subCh6, -1, -1, "subCh6", NULL }, - { 2, &hf_rrc_T_subchannels_09_subCh5, -1, -1, "subCh5", NULL }, - { 3, &hf_rrc_T_subchannels_09_subCh4, -1, -1, "subCh4", NULL }, - { 4, &hf_rrc_T_subchannels_09_subCh3, -1, -1, "subCh3", NULL }, - { 5, &hf_rrc_T_subchannels_09_subCh2, -1, -1, "subCh2", NULL }, - { 6, &hf_rrc_T_subchannels_09_subCh1, -1, -1, "subCh1", NULL }, - { 7, &hf_rrc_T_subchannels_09_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_subchannels_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75616,25 +75382,6 @@ dissect_rrc_ASCSetting_TDD_LCR_r4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t } -static const asn_namedbit AvailableSignatures_bits[] = { - { 0, &hf_rrc_AvailableSignatures_signature15, -1, -1, "signature15", NULL }, - { 1, &hf_rrc_AvailableSignatures_signature14, -1, -1, "signature14", NULL }, - { 2, &hf_rrc_AvailableSignatures_signature13, -1, -1, "signature13", NULL }, - { 3, &hf_rrc_AvailableSignatures_signature12, -1, -1, "signature12", NULL }, - { 4, &hf_rrc_AvailableSignatures_signature11, -1, -1, "signature11", NULL }, - { 5, &hf_rrc_AvailableSignatures_signature10, -1, -1, "signature10", NULL }, - { 6, &hf_rrc_AvailableSignatures_signature9, -1, -1, "signature9", NULL }, - { 7, &hf_rrc_AvailableSignatures_signature8, -1, -1, "signature8", NULL }, - { 8, &hf_rrc_AvailableSignatures_signature7, -1, -1, "signature7", NULL }, - { 9, &hf_rrc_AvailableSignatures_signature6, -1, -1, "signature6", NULL }, - { 10, &hf_rrc_AvailableSignatures_signature5, -1, -1, "signature5", NULL }, - { 11, &hf_rrc_AvailableSignatures_signature4, -1, -1, "signature4", NULL }, - { 12, &hf_rrc_AvailableSignatures_signature3, -1, -1, "signature3", NULL }, - { 13, &hf_rrc_AvailableSignatures_signature2, -1, -1, "signature2", NULL }, - { 14, &hf_rrc_AvailableSignatures_signature1, -1, -1, "signature1", NULL }, - { 15, &hf_rrc_AvailableSignatures_signature0, -1, -1, "signature0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_AvailableSignatures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -75645,21 +75392,6 @@ dissect_rrc_AvailableSignatures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a } -static const asn_namedbit AvailableSubChannelNumbers_bits[] = { - { 0, &hf_rrc_AvailableSubChannelNumbers_subCh11, -1, -1, "subCh11", NULL }, - { 1, &hf_rrc_AvailableSubChannelNumbers_subCh10, -1, -1, "subCh10", NULL }, - { 2, &hf_rrc_AvailableSubChannelNumbers_subCh9, -1, -1, "subCh9", NULL }, - { 3, &hf_rrc_AvailableSubChannelNumbers_subCh8, -1, -1, "subCh8", NULL }, - { 4, &hf_rrc_AvailableSubChannelNumbers_subCh7, -1, -1, "subCh7", NULL }, - { 5, &hf_rrc_AvailableSubChannelNumbers_subCh6, -1, -1, "subCh6", NULL }, - { 6, &hf_rrc_AvailableSubChannelNumbers_subCh5, -1, -1, "subCh5", NULL }, - { 7, &hf_rrc_AvailableSubChannelNumbers_subCh4, -1, -1, "subCh4", NULL }, - { 8, &hf_rrc_AvailableSubChannelNumbers_subCh3, -1, -1, "subCh3", NULL }, - { 9, &hf_rrc_AvailableSubChannelNumbers_subCh2, -1, -1, "subCh2", NULL }, - { 10, &hf_rrc_AvailableSubChannelNumbers_subCh1, -1, -1, "subCh1", NULL }, - { 11, &hf_rrc_AvailableSubChannelNumbers_subCh0, -1, -1, "subCh0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_AvailableSubChannelNumbers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -77063,17 +76795,6 @@ dissect_rrc_T_tdd768_09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } -static const asn_namedbit T_e_RUCCH_Sync_UL_Codes_Bitmap_bits[] = { - { 0, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code7, -1, -1, "code7", NULL }, - { 1, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code6, -1, -1, "code6", NULL }, - { 2, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code5, -1, -1, "code5", NULL }, - { 3, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code4, -1, -1, "code4", NULL }, - { 4, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code3, -1, -1, "code3", NULL }, - { 5, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code2, -1, -1, "code2", NULL }, - { 6, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code1, -1, -1, "code1", NULL }, - { 7, &hf_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap_code0, -1, -1, "code0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_e_RUCCH_Sync_UL_Codes_Bitmap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -77138,17 +76859,6 @@ dissect_rrc_PRACH_RACH_Info_r7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } -static const asn_namedbit T_sync_UL_Codes_Bitmap_bits[] = { - { 0, &hf_rrc_T_sync_UL_Codes_Bitmap_code7, -1, -1, "code7", NULL }, - { 1, &hf_rrc_T_sync_UL_Codes_Bitmap_code6, -1, -1, "code6", NULL }, - { 2, &hf_rrc_T_sync_UL_Codes_Bitmap_code5, -1, -1, "code5", NULL }, - { 3, &hf_rrc_T_sync_UL_Codes_Bitmap_code4, -1, -1, "code4", NULL }, - { 4, &hf_rrc_T_sync_UL_Codes_Bitmap_code3, -1, -1, "code3", NULL }, - { 5, &hf_rrc_T_sync_UL_Codes_Bitmap_code2, -1, -1, "code2", NULL }, - { 6, &hf_rrc_T_sync_UL_Codes_Bitmap_code1, -1, -1, "code1", NULL }, - { 7, &hf_rrc_T_sync_UL_Codes_Bitmap_code0, -1, -1, "code0", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrc_T_sync_UL_Codes_Bitmap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { diff --git a/epan/dissectors/packet-rrlp.c b/epan/dissectors/packet-rrlp.c index 54eff7432d..9a23767f55 100644 --- a/epan/dissectors/packet-rrlp.c +++ b/epan/dissectors/packet-rrlp.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-rrlp.c */ +/* ./packet-rrlp.c */ /* ../../tools/asn2wrs.py -p rrlp -c rrlp.cnf -s packet-rrlp-template RRLP-Messages.asn RRLP-Components.asn ../gsmmap/MAP-ExtensionDataTypes.asn ../gsmmap/MAP-LCS-DataTypes.asn */ /* Input file: packet-rrlp-template.c */ @@ -2280,11 +2280,6 @@ dissect_rrlp_Rel5_MsrPosition_Req_Extension(tvbuff_t *tvb _U_, int offset _U_, a } -static const asn_namedbit GANSSPositioningMethod_bits[] = { - { 0, &hf_rrlp_GANSSPositioningMethod_gps, -1, -1, "gps", NULL }, - { 1, &hf_rrlp_GANSSPositioningMethod_galileo, -1, -1, "galileo", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrlp_GANSSPositioningMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -4202,12 +4197,6 @@ dissect_rrlp_INTEGER_0_16384(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx } -static const asn_namedbit PositionData_bits[] = { - { 0, &hf_rrlp_PositionData_e_otd, -1, -1, "e-otd", NULL }, - { 1, &hf_rrlp_PositionData_gps, -1, -1, "gps", NULL }, - { 2, &hf_rrlp_PositionData_galileo, -1, -1, "galileo", NULL }, - { 0, NULL, 0, 0, NULL, NULL } -}; static int dissect_rrlp_PositionData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { diff --git a/epan/dissectors/packet-s4406.h b/epan/dissectors/packet-s4406.h index a656514101..796db38f74 100644 --- a/epan/dissectors/packet-s4406.h +++ b/epan/dissectors/packet-s4406.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-s4406.h */ +/* ./packet-s4406.h */ /* ../../tools/asn2wrs.py -b -e -p s4406 -c s4406.cnf -s packet-s4406-template s4406.asn */ /* Input file: packet-s4406-template.h */ diff --git a/epan/dissectors/packet-smrse.c b/epan/dissectors/packet-smrse.c index cec69e21be..1c2eddcf4e 100644 --- a/epan/dissectors/packet-smrse.c +++ b/epan/dissectors/packet-smrse.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-smrse.c */ +/* ./packet-smrse.c */ /* ../../tools/asn2wrs.py -b -e -p smrse -c smrse.cnf -s packet-smrse-template SMRSE.asn */ /* Input file: packet-smrse-template.c */ diff --git a/epan/dissectors/packet-smrse.h b/epan/dissectors/packet-smrse.h index 4aa873625b..387b09f0c3 100644 --- a/epan/dissectors/packet-smrse.h +++ b/epan/dissectors/packet-smrse.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-smrse.h */ +/* ./packet-smrse.h */ /* ../../tools/asn2wrs.py -b -e -p smrse -c smrse.cnf -s packet-smrse-template SMRSE.asn */ /* Input file: packet-smrse-template.h */ diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index ac506c833d..543e6b6b2f 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -22,6 +22,7 @@ * * See RFC 3414 for User-based Security Model for SNMPv3 * See RFC 3826 for (AES) Cipher Algorithm in the SNMP USM + * See RFC 2578 for Structure of Management Information Version 2 (SMIv2) * Copyright (C) 2007 Luis E. Garcia Ontanon * * $Id$ @@ -51,6 +52,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#define D(args) do {printf args; fflush(stdout); } while(0) + #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -77,39 +80,13 @@ #include "packet-ber.h" -#ifdef HAVE_NET_SNMP -# include -# include -# include -# include - -#ifdef _WIN32 -# include -#endif /* _WIN32 */ - - /* - * Define values "sprint_realloc_value()" expects. - */ -# define VALTYPE_INTEGER ASN_INTEGER -# define VALTYPE_COUNTER ASN_COUNTER -# define VALTYPE_GAUGE ASN_GAUGE -# define VALTYPE_TIMETICKS ASN_TIMETICKS -# define VALTYPE_STRING ASN_OCTET_STR -# define VALTYPE_IPADDR ASN_IPADDRESS -# define VALTYPE_OPAQUE ASN_OPAQUE -# define VALTYPE_NSAP ASN_NSAP -# define VALTYPE_OBJECTID ASN_OBJECT_ID -# define VALTYPE_BITSTR ASN_BIT_STR -# define VALTYPE_COUNTER64 ASN_COUNTER64 - -#endif /* HAVE_NET_SNMP */ #include "packet-snmp.h" -#include "format-oid.h" #include #include #include #include +#include #ifdef _WIN32 #include @@ -119,7 +96,6 @@ #include #endif - /* Take a pointer that may be null and return a pointer that's not null by turning null pointers into pointers to the above null string, and, if the argument pointer wasn't null, make sure we handle @@ -140,23 +116,7 @@ static int proto_snmp = -1; static int proto_smux = -1; -/* Default MIB modules to load */ -/* - * XXX - According to Wes Hardaker, we shouldn't do this: - * http://www.ethereal.com/lists/ethereal-dev/200412/msg00222.html - */ -#ifdef _WIN32 -# define DEF_MIB_MODULES "IP-MIB;IF-MIB;TCP-MIB;UDP-MIB;SNMPv2-MIB;RFC1213-MIB;UCD-SNMP-MIB" -# define IMPORT_SEPARATOR ":" -#else -# define DEF_MIB_MODULES "IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:UCD-SNMP-MIB" -# define IMPORT_SEPARATOR ";" -#endif /* _WIN32 */ - -static const gchar *mib_modules = DEF_MIB_MODULES; static gboolean display_oid = TRUE; -static gboolean snmp_var_in_tree = TRUE; - static gboolean snmp_usm_auth_md5(snmp_usm_params_t* p, guint8**, guint*, gchar const**); static gboolean snmp_usm_auth_sha1(snmp_usm_params_t* p, guint8**, guint*, gchar const**); @@ -198,9 +158,6 @@ static snmp_ue_assoc_t* unlocalized_ues = NULL; static snmp_usm_params_t usm_p = {FALSE,FALSE,0,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE}; -/* Subdissector tables */ -static dissector_table_t variable_oid_dissector_table; - #define TH_AUTH 0x01 #define TH_CRYPT 0x02 #define TH_REPORT 0x04 @@ -232,29 +189,38 @@ static int hf_snmp_engineid_mac = -1; static int hf_snmp_engineid_text = -1; static int hf_snmp_engineid_time = -1; static int hf_snmp_engineid_data = -1; -static int hf_snmp_counter64 = -1; static int hf_snmp_decryptedPDU = -1; static int hf_snmp_msgAuthentication = -1; -static int hf_snmp_internet_ipv6 = -1; -static int hf_snmp_internet_other = -1; + +static int hf_snmp_noSuchObject = -1; +static int hf_snmp_noSuchInstance = -1; +static int hf_snmp_endOfMibView = -1; +static int hf_snmp_unSpecified = -1; + +static int hf_snmp_integer32_value = -1; +static int hf_snmp_octestring_value = -1; +static int hf_snmp_oid_value = -1; +static int hf_snmp_null_value = -1; +static int hf_snmp_ipv4_value = -1; +static int hf_snmp_ipv6_value = -1; +static int hf_snmp_anyaddress_value = -1; +static int hf_snmp_unsigned32_value = -1; +static int hf_snmp_unknown_value = -1; +static int hf_snmp_opaque_value = -1; +static int hf_snmp_nsap_value = -1; +static int hf_snmp_counter_value = -1; +static int hf_snmp_timeticks_value = -1; +static int hf_snmp_big_counter_value = -1; +static int hf_snmp_gauge32_value = -1; + +static int hf_snmp_objectname = -1; +static int hf_snmp_scalar_instance_index = -1; + /*--- Included file: packet-snmp-hf.c ---*/ #line 1 "packet-snmp-hf.c" static int hf_snmp_SMUX_PDUs_PDU = -1; /* SMUX_PDUs */ -static int hf_snmp_simple = -1; /* SimpleSyntax */ -static int hf_snmp_application_wide = -1; /* ApplicationSyntax */ -static int hf_snmp_integer_value = -1; /* Integer_value */ -static int hf_snmp_string_value = -1; /* String_value */ -static int hf_snmp_objectID_value = -1; /* ObjectID_value */ -static int hf_snmp_empty = -1; /* Empty */ -static int hf_snmp_ipAddress_value = -1; /* IpAddress */ -static int hf_snmp_counter_value = -1; /* Counter32 */ -static int hf_snmp_timeticks_value = -1; /* TimeTicks */ -static int hf_snmp_arbitrary_value = -1; /* Opaque */ -static int hf_snmp_big_counter_value = -1; /* Counter64 */ -static int hf_snmp_unsigned_integer_value = -1; /* Unsigned32 */ -static int hf_snmp_internet = -1; /* T_internet */ static int hf_snmp_version = -1; /* Version */ static int hf_snmp_community = -1; /* OCTET_STRING */ static int hf_snmp_data = -1; /* PDUs */ @@ -302,12 +268,7 @@ static int hf_snmp_generic_trap = -1; /* T_generic_trap */ static int hf_snmp_specific_trap = -1; /* INTEGER */ static int hf_snmp_time_stamp = -1; /* TimeTicks */ static int hf_snmp_name = -1; /* ObjectName */ -static int hf_snmp_valueType = -1; /* ValueType */ -static int hf_snmp_value = -1; /* ObjectSyntax */ -static int hf_snmp_unSpecified = -1; /* NULL */ -static int hf_snmp_noSuchObject = -1; /* NULL */ -static int hf_snmp_noSuchInstance = -1; /* NULL */ -static int hf_snmp_endOfMibView = -1; /* NULL */ +static int hf_snmp_valueType = -1; /* NULL */ static int hf_snmp_VarBindList_item = -1; /* VarBind */ static int hf_snmp_open = -1; /* OpenPDU */ static int hf_snmp_close = -1; /* ClosePDU */ @@ -326,7 +287,7 @@ static int hf_snmp_priority = -1; /* INTEGER_M1_2147483647 */ static int hf_snmp_operation = -1; /* T_operation */ /*--- End of included file: packet-snmp-hf.c ---*/ -#line 234 "packet-snmp-template.c" +#line 213 "packet-snmp-template.c" static int hf_smux_version = -1; static int hf_smux_pdutype = -1; @@ -340,14 +301,13 @@ static gint ett_encryptedPDU = -1; static gint ett_decrypted = -1; static gint ett_authParameters = -1; static gint ett_internet = -1; +static gint ett_varbind = -1; +static gint ett_name = -1; +static gint ett_decoding_error = -1; /*--- Included file: packet-snmp-ett.c ---*/ #line 1 "packet-snmp-ett.c" -static gint ett_snmp_ObjectSyntax = -1; -static gint ett_snmp_SimpleSyntax = -1; -static gint ett_snmp_ApplicationSyntax = -1; -static gint ett_snmp_NetworkAddress = -1; static gint ett_snmp_Message = -1; static gint ett_snmp_Messagev2u = -1; static gint ett_snmp_T_datav2u = -1; @@ -361,7 +321,6 @@ static gint ett_snmp_PDU = -1; static gint ett_snmp_BulkPDU = -1; static gint ett_snmp_Trap_PDU = -1; static gint ett_snmp_VarBind = -1; -static gint ett_snmp_ValueType = -1; static gint ett_snmp_VarBindList = -1; static gint ett_snmp_SMUX_PDUs = -1; static gint ett_snmp_RegisterResponse = -1; @@ -370,11 +329,7 @@ static gint ett_snmp_SimpleOpen = -1; static gint ett_snmp_RReqPDU = -1; /*--- End of included file: packet-snmp-ett.c ---*/ -#line 249 "packet-snmp-template.c" - - -static int dissect_snmp_IpAddressIpv6(gboolean, tvbuff_t* ,int , asn1_ctx_t* , proto_tree*, int); -static int dissect_snmp_IpAddressOther(gboolean, tvbuff_t* ,int , asn1_ctx_t* , proto_tree*, int); +#line 231 "packet-snmp-template.c" static const true_false_string auth_flags = { "OK", @@ -426,7 +381,6 @@ static const value_string smux_types[] = { { 0, NULL } }; -/* SNMP Tags */ #define SNMP_IPA 0 /* IP Address */ #define SNMP_CNT 1 /* Counter (Counter32) */ @@ -441,367 +395,480 @@ static const value_string smux_types[] = { #define SERR_NSI 1 #define SERR_EOM 2 -/* SNMPv1 Types */ - -#define SNMP_NULL 0 -#define SNMP_INTEGER 1 /* l */ -#define SNMP_OCTETSTR 2 /* c */ -#define SNMP_DISPLAYSTR 2 /* c */ -#define SNMP_OBJECTID 3 /* ul */ -#define SNMP_IPADDR 4 /* uc */ -#define SNMP_COUNTER 5 /* ul */ -#define SNMP_GAUGE 6 /* ul */ -#define SNMP_TIMETICKS 7 /* ul */ -#define SNMP_OPAQUE 8 /* c */ - -/* additional SNMPv2 Types */ - -#define SNMP_UINTEGER 5 /* ul */ -#define SNMP_BITSTR 9 /* uc */ -#define SNMP_NSAP 10 /* uc */ -#define SNMP_COUNTER64 11 /* ul */ -#define SNMP_NOSUCHOBJECT 12 -#define SNMP_NOSUCHINSTANCE 13 -#define SNMP_ENDOFMIBVIEW 14 - - -typedef struct _SNMP_CNV SNMP_CNV; - -struct _SNMP_CNV -{ - guint class; - guint tag; - gint syntax; - const gchar *name; -}; - -static SNMP_CNV SnmpCnv [] = -{ - {BER_CLASS_UNI, BER_UNI_TAG_NULL, SNMP_NULL, "NULL"}, - {BER_CLASS_UNI, BER_UNI_TAG_INTEGER, SNMP_INTEGER, "INTEGER"}, - {BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, SNMP_OCTETSTR, "OCTET STRING"}, - {BER_CLASS_UNI, BER_UNI_TAG_OID, SNMP_OBJECTID, "OBJECTID"}, - {BER_CLASS_APP, SNMP_IPA, SNMP_IPADDR, "IPADDR"}, - {BER_CLASS_APP, SNMP_CNT, SNMP_COUNTER, "COUNTER"}, /* Counter32 */ - {BER_CLASS_APP, SNMP_GGE, SNMP_GAUGE, "GAUGE"}, /* Gauge32 == Unsigned32 */ - {BER_CLASS_APP, SNMP_TIT, SNMP_TIMETICKS, "TIMETICKS"}, - {BER_CLASS_APP, SNMP_OPQ, SNMP_OPAQUE, "OPAQUE"}, - -/* SNMPv2 data types and errors */ - - {BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, SNMP_BITSTR, "BITSTR"}, - {BER_CLASS_APP, SNMP_C64, SNMP_COUNTER64, "COUNTER64"}, - {BER_CLASS_CON, SERR_NSO, SNMP_NOSUCHOBJECT, "NOSUCHOBJECT"}, - {BER_CLASS_CON, SERR_NSI, SNMP_NOSUCHINSTANCE, "NOSUCHINSTANCE"}, - {BER_CLASS_CON, SERR_EOM, SNMP_ENDOFMIBVIEW, "ENDOFMIBVIEW"}, - {0, 0, -1, NULL} -}; - /* - * NAME: g_snmp_tag_cls2syntax - * SYNOPSIS: gboolean g_snmp_tag_cls2syntax - * ( - * guint tag, - * guint cls, - * gushort *syntax - * ) - * DESCRIPTION: Converts ASN1 tag and class to Syntax tag and name. - * See SnmpCnv for conversion. - * RETURNS: name on success, NULL on failure - */ - -static const gchar * -snmp_tag_cls2syntax ( guint tag, guint cls, gushort *syntax) -{ - SNMP_CNV *cnv; - - cnv = SnmpCnv; - while (cnv->syntax != -1) - { - if (cnv->tag == tag && cnv->class == cls) - { - *syntax = cnv->syntax; - return cnv->name; - } - cnv++; - } - return NULL; -} - -int oid_to_subid_buf(const guint8 *oid, gint oid_len, subid_t *buf, int buf_len) { - int i, out_len; - guint8 byte; - guint32 value; - gboolean is_first; - - value=0; out_len = 0; byte =0; is_first = TRUE; - for (i=0; i= buf_len) - break; - byte = oid[i]; - value = (value << 7) | (byte & 0x7F); - if (byte & 0x80) { - continue; - } - if (is_first) { - if ( value<40 ){ - buf[0] = 0; - buf[1] = value; - }else if ( value < 80 ){ - buf[0] = 1; - buf[1] = value - 40; - }else { - buf[0] = 2; - buf[1] = value - 80; - } - out_len= out_len+2; - is_first = FALSE; - }else{ - buf[out_len++] = value; - } - value = 0; - } - - return out_len; -} - -gchar * -format_oid(subid_t *oid, guint oid_length) -{ - char *result; - int result_len; - int len; - unsigned int i; - char *buf; -#ifdef HAVE_NET_SNMP - guchar *oid_string; - size_t oid_string_len; - size_t oid_out_len; -#endif - - result_len = oid_length * 22; - -#ifdef HAVE_NET_SNMP - /* - * Get the decoded form of the OID, and add its length to the - * length of the result string. - * - * XXX - check for "sprint_realloc_objid()" failure. - */ - oid_string_len = 1024; - oid_string = ep_alloc(oid_string_len); - *oid_string = '\0'; - oid_out_len = 0; - /* We pass an ep allocated block here, NOT a malloced block - * so we MUST NOT allow reallocation, hence the fourth - * parameter MUST be 0/FALSE - */ - sprint_realloc_objid(&oid_string, &oid_string_len, &oid_out_len, FALSE, - oid, oid_length); - result_len += strlen(oid_string) + 3; -#endif - - result = ep_alloc(result_len + 1); - buf = result; - len = g_snprintf(buf, result_len + 1 - (buf-result), "%lu", (unsigned long)oid[0]); - buf += len; - for (i = 1; i < oid_length;i++) { - len = g_snprintf(buf, result_len + 1 - (buf-result), ".%lu", (unsigned long)oid[i]); - buf += len; + * dissect_snmp_VarBind + * this routine dissects variable bindings, looking for the oid information in our oid reporsitory + * to format and add the value adequatelly. + * + * The choice to handwrite this code instead of using the asn compiler is to avoid having tons + * of uses of global variables distributed in very different parts of the code. + * Other than that there's a cosmetic thing: the tree from ASN generated code would be so + * convoluted due to the nesting of CHOICEs in the definition of VarBind/value. + * + * XXX: the length of this function (~400 lines) is an aberration! + * oid_key_t:key_type could become a series of callbacks instead of an enum + * the (! oid_info_is_ok) switch could be made into an array (would be slower) + * + + NetworkAddress ::= CHOICE { internet IpAddress } + IpAddress ::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) + TimeTicks ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) + Integer32 ::= INTEGER (-2147483648..2147483647) + ObjectName ::= OBJECT IDENTIFIER + Counter32 ::= [APPLICATION 1] IMPLICIT INTEGER (0..4294967295) + Gauge32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) + Unsigned32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) + Integer-value ::= INTEGER (-2147483648..2147483647) + Integer32 ::= INTEGER (-2147483648..2147483647) + ObjectID-value ::= OBJECT IDENTIFIER + Empty ::= NULL + TimeTicks ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) + Opaque ::= [APPLICATION 4] IMPLICIT OCTET STRING + Counter64 ::= [APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615) + + ObjectSyntax ::= CHOICE { + simple SimpleSyntax, + application-wide ApplicationSyntax } -#ifdef HAVE_NET_SNMP - /* - * Append the decoded form of the OID. - */ - g_snprintf(buf, result_len + 1 -(buf-result), " (%s)", oid_string); -#endif - - return result; -} - -/* returns the decoded (can be NULL) and non_decoded OID strings */ -void -new_format_oid(subid_t *oid, guint oid_length, - gchar **non_decoded, gchar **decoded) -{ - int non_decoded_len; - int len; - unsigned int i; - char *buf; -#ifdef HAVE_NET_SNMP - guchar *oid_string; - size_t oid_string_len; - size_t oid_out_len; -#endif - - if (oid == NULL || oid_length < 1) { - *decoded = NULL; - return; + SimpleSyntax ::= CHOICE { + integer-value Integer-value, + string-value String-value, + objectID-value ObjectID-value, + empty Empty } -#ifdef HAVE_NET_SNMP - /* - * Get the decoded form of the OID, and add its length to the - * length of the result string. - */ - - /* - * XXX - if we convert this to ep_alloc(), make sure the fourth - * argument to sprint_realloc_objid() is FALSE. - */ - - oid_string_len = 1024; - oid_string = ep_alloc(oid_string_len); - if (oid_string != NULL) { - *oid_string = '\0'; - oid_out_len = 0; - /* We pass an ep allocated block here, NOT a malloced block - * so we MUST NOT allow reallocation, hence the fourth - * parameter MUST be 0/FALSE - */ - sprint_realloc_objid(&oid_string, &oid_string_len, &oid_out_len, FALSE, - oid, oid_length); + ApplicationSyntax ::= CHOICE { + ipAddress-value IpAddress, + counter-value Counter32, + timeticks-value TimeTicks, + arbitrary-value Opaque, + big-counter-value Counter64, + unsigned-integer-value Unsigned32 } - *decoded = oid_string; -#else - *decoded = NULL; -#endif - non_decoded_len = oid_length * 22 + 1; - *non_decoded = ep_alloc(non_decoded_len); - buf = *non_decoded; - len = g_snprintf(buf, non_decoded_len-(buf-*non_decoded), "%lu", (unsigned long)oid[0]); - buf += len; - for (i = 1; i < oid_length; i++) { - len = g_snprintf(buf, non_decoded_len-(buf-*non_decoded), ".%lu", (unsigned long)oid[i]); - buf += len; + ValueType ::= CHOICE { + value ObjectSyntax, + unSpecified NULL, + noSuchObject[0] IMPLICIT NULL, + noSuchInstance[1] IMPLICIT NULL, + endOfMibView[2] IMPLICIT NULL } -} -#ifdef HAVE_NET_SNMP -static gboolean -check_var_length(guint vb_length, guint required_length, guchar **errmsg) -{ - gchar *buf; - static const char badlen_fmt[] = "Length is %u, should be %u"; - - if (vb_length != required_length) { - /* Enough room for the largest "Length is XXX, - should be XXX" message - 10 digits for each - XXX. */ - buf = ep_alloc(sizeof badlen_fmt + 10 + 10); - if (buf != NULL) { - g_snprintf(buf, sizeof badlen_fmt + 10 + 10, - badlen_fmt, vb_length, required_length); - } - *errmsg = buf; - return FALSE; + VarBind ::= SEQUENCE { + name ObjectName, + valueType ValueType } - return TRUE; /* length is OK */ -} - -static gchar * -format_var(struct variable_list *variable, subid_t *variable_oid, - guint variable_oid_length, gushort vb_type, guint val_len) -{ - guchar *buf; - size_t buf_len; - size_t out_len; - - if (variable_oid == NULL || variable_oid_length == 0) - return NULL; - - switch (vb_type) { - - case SNMP_IPADDR: - /* Length has to be 4 bytes. */ - if (!check_var_length(val_len, 4, &buf)) - return buf; /* it's not 4 bytes */ - break; - -#ifdef REMOVED - /* not all counters are encoded as a full 64bit integer */ - case SNMP_COUNTER64: - /* Length has to be 8 bytes. */ - if (!check_var_length(val_len, 8, &buf)) - return buf; /* it's not 8 bytes */ - break; -#endif - default: - break; + + */ +extern int dissect_snmp_VarBind(gboolean implicit_tag _U_, + tvbuff_t *tvb, + int offset, + asn1_ctx_t *actx, + proto_tree *tree, + int hf_index _U_) { + int seq_offset, name_offset, value_offset, value_start; + guint32 seq_len, name_len, value_len; + gint8 ber_class; + gboolean pc; + gint32 tag; + gboolean ind; + guint32* subids; + guint8* oid_bytes; + oid_info_t* oid_info; + guint oid_matched, oid_left; + proto_item *pi_name, *pi_varbind, *pi_value = NULL; + proto_tree *pt, *pt_varbind, *pt_name; + char label[ITEM_LABEL_LENGTH]; + char* repr = NULL; + char* valstr; + int hfid = -1; + int min_len = 0, max_len = 0; + gboolean oid_info_is_ok; + + seq_offset = offset; + + /* first have the VarBind's sequence header */ + offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag); + offset = get_ber_length(tvb, offset, &seq_len, &ind); + + seq_len += offset - seq_offset; + + if (!pc && ber_class==BER_CLASS_UNI && tag==BER_UNI_TAG_SEQUENCE) { + proto_item* pi = proto_tree_add_text(tree, tvb, seq_offset, seq_len,"VarBind must be an universal class sequence"); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "VarBind is not an universal class sequence"); + return dissect_unknown_ber(actx->pinfo, tvb, seq_offset, pt); + } + + if (ind){ + proto_item* pi = proto_tree_add_text(tree, tvb, seq_offset, seq_len,"Indicator must be clear in VarBind"); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "VarBind has indicator set"); + return dissect_unknown_ber(actx->pinfo, tvb, seq_offset, pt); + } + + /* then we have the ObjectName's header */ + + offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag); + name_offset = offset = get_ber_length(tvb, offset, &name_len, &ind); + + if (! ( !pc && ber_class==BER_CLASS_UNI && tag==BER_UNI_TAG_OID) ) { + proto_item* pi = proto_tree_add_text(tree, tvb, seq_offset, seq_len,"ObjectName must be an OID in primitive encoding"); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "ObjectName not an OID"); + return dissect_unknown_ber(actx->pinfo, tvb, seq_offset, pt); + } + + if (ind){ + proto_item* pi = proto_tree_add_text(tree, tvb, seq_offset, seq_len,"Indicator must be clear in ObjectName"); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "ObjectName has indicator set"); + return dissect_unknown_ber(actx->pinfo, tvb, seq_offset, pt); + } + + offset += name_len; + value_start = offset; + + /* then we have the value's header */ + offset = get_ber_identifier(tvb, offset, &ber_class, &pc, &tag); + value_offset = offset = get_ber_length(tvb, offset, &value_len, &ind); + + if (! (!pc) ) { + proto_item* pi = proto_tree_add_text(tree, tvb, seq_offset, seq_len,"the value must be in primitive encoding"); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "value not in primitive encoding"); + return dissect_unknown_ber(actx->pinfo, tvb, seq_offset, pt); } - variable->next_variable = NULL; - variable->name = variable_oid; - variable->name_length = variable_oid_length; - switch (vb_type) { - - case SNMP_INTEGER: - variable->type = VALTYPE_INTEGER; - break; - - case SNMP_COUNTER: - variable->type = VALTYPE_COUNTER; - break; - - case SNMP_GAUGE: - variable->type = VALTYPE_GAUGE; - break; - - case SNMP_TIMETICKS: - variable->type = VALTYPE_TIMETICKS; - break; - - case SNMP_OCTETSTR: - variable->type = VALTYPE_STRING; - break; - - case SNMP_IPADDR: - variable->type = VALTYPE_IPADDR; - break; - - case SNMP_OPAQUE: - variable->type = VALTYPE_OPAQUE; - break; - - case SNMP_NSAP: - variable->type = VALTYPE_NSAP; - break; - - case SNMP_OBJECTID: - variable->type = VALTYPE_OBJECTID; - break; + /* Now, we know where everithing is */ + + /* fetch ObjectName and its relative oid_info */ + oid_bytes = ep_tvb_memdup(tvb, name_offset, name_len); + oid_info = oid_get_from_encoded(oid_bytes, name_len, &subids, &oid_matched, &oid_left); - case SNMP_BITSTR: - variable->type = VALTYPE_BITSTR; - break; - case SNMP_COUNTER64: - variable->type = VALTYPE_COUNTER64; + /* we add the varbind tree root with a dummy label we'll fill later on */ + pi_varbind = proto_tree_add_text(tree,tvb,seq_offset,seq_len,"VarBind"); + pt_varbind = proto_item_add_subtree(pi_varbind,ett_varbind); + *label = '\0'; + + pi_name = proto_tree_add_item(pt_varbind,hf_snmp_objectname,tvb,name_offset,name_len,FALSE); + pt_name = proto_item_add_subtree(pi_name,ett_name); + + if (ber_class == BER_CLASS_CON) { + /* if we have an error value just add it and get out the way ASAP */ + proto_item* pi; + const char* note; + + if (value_len != 0) + goto expected_other_size; + + switch (tag) { + case SERR_NSO: + hfid = hf_snmp_noSuchObject; + note = "noSuchObject"; + break; + case SERR_NSI: + hfid = hf_snmp_noSuchInstance; + note = "noSuchInstance"; + break; + case SERR_EOM: + hfid = hf_snmp_endOfMibView; + note = "endOfMibView"; + break; + default: { + pi = proto_tree_add_text(pt_varbind,tvb,0,0,"Wrong tag for Error Value: expected 0, 1, or 2 but got: %d",tag); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong tag for SNMP VarBind error value"); + return dissect_unknown_ber(actx->pinfo, tvb, value_start, tree); + } + } + + pi = proto_tree_add_item(pt_varbind,hfid,tvb,value_offset,value_len,FALSE); + expert_add_info_format(actx->pinfo, pi, PI_RESPONSE_CODE, PI_NOTE, "%s",note); + goto set_label; + } + + /* now we'll try to figure out which are the indexing sub-oids and whether the oid we know about is the one oid we have to use */ + switch (oid_info->kind) { + case OID_KIND_SCALAR: + if (oid_left == 1) { + /* OK: we got the instance sub-id */ + proto_tree_add_uint64(pt_name,hf_snmp_scalar_instance_index,tvb,name_offset,name_len,subids[oid_matched]); + oid_info_is_ok = TRUE; + goto indexing_done; + } else if (oid_left == 0) { + if (ber_class == BER_CLASS_UNI && tag == BER_UNI_TAG_NULL) { + /* unSpecified does not require an instance sub-id add the new value and get off the way! */ + pi_value = proto_tree_add_item(pt_varbind,hf_snmp_unSpecified,tvb,value_offset,value_len,FALSE); + goto set_label; + } else { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"A scalar should have one instance sub-id this one has none"); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "No instance sub-id in scalar value"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + } else { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"A scalar should have only one instance sub-id this has: %d",oid_left); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong number of instance sub-ids in scalar value"); + oid_info_is_ok = FALSE; + goto indexing_done; + } break; + case OID_KIND_COLUMN: + if ( oid_info->parent->kind == OID_KIND_ROW) { + oid_key_t* k = oid_info->parent->key; + guint key_start = oid_matched; + guint key_len = oid_left; + oid_info_is_ok = TRUE; + + if ( key_len == 0 && ber_class == BER_CLASS_UNI && tag == BER_UNI_TAG_NULL) { + /* unSpecified does not require an instance sub-id add the new value and get off the way! */ + pi_value = proto_tree_add_item(pt_varbind,hf_snmp_unSpecified,tvb,value_offset,value_len,FALSE); + goto set_label; + } + + if (k) { + for (;k;k = k->next) { + if (key_start >= oid_matched+oid_left) { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index sub-oid shorter than expected"); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "index sub-oid shorter than expected"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + + switch(k->key_type) { + case OID_KEY_TYPE_WRONG: { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"OID instaces not handled, if you want this implemented please contact the wireshark developpers"); + expert_add_info_format(actx->pinfo, pi, PI_UNDECODED, PI_WARN, "Unimplemented instance index"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + case OID_KEY_TYPE_INTEGER: { + proto_tree_add_int(pt_name,k->hfid,tvb,name_offset,name_len,(guint)subids[key_start]); + key_start++; + key_len--; + continue; /* k->next*/ + } + case OID_KEY_TYPE_OID: { + guint suboid_len = subids[key_start++]; + guint32* suboid = &(subids[key_start]); + guint8* suboid_buf; + guint suboid_buf_len; + + if( suboid_len < key_len-1) { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index sub-oid should be longer than remaining oid size"); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "index sub-oid longer than remaining oid size"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + + suboid_buf_len = oid_subid2encoded(suboid_len, suboid, &suboid_buf); + proto_tree_add_oid(pt_name,k->hfid,tvb,name_offset, suboid_buf_len, suboid_buf); + + key_start += suboid_len; + key_len -= suboid_len + 1; + continue; /* k->next*/ + } + default: { + guint8* buf; + guint buf_len = k->num_subids; + guint32* suboid = &(subids[key_start]); + guint i; + + if(!buf_len) { + buf_len = *suboid; + suboid++; + } + + if( key_len < buf_len ) { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"index sub-oid should not be longer than remaining oid size"); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "index sub-oid longer than remaining oid size"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + + buf = ep_alloc(buf_len+1); + for (i = 0; i < buf_len; i++) + buf[i] = (guint8)suboid[i]; + buf[i] = '\0'; + + switch(k->key_type) { + case OID_KEY_TYPE_STRING: + case OID_KEY_TYPE_FIXED_STRING: + proto_tree_add_string(pt_name,k->hfid,tvb,name_offset,buf_len, buf); + break; + case OID_KEY_TYPE_BYTES: + case OID_KEY_TYPE_NSAP: + case OID_KEY_TYPE_FIXED_BYTES: + proto_tree_add_bytes(pt_name,k->hfid,tvb,name_offset,buf_len, buf); + break; + case OID_KEY_TYPE_IPADDR: { + guint32* ipv4_p = (void*)buf; + proto_tree_add_ipv4(pt_name,k->hfid,tvb,name_offset,buf_len, *ipv4_p); + break; + default: + DISSECTOR_ASSERT_NOT_REACHED(); + break; + } + } + + key_start += buf_len; + key_len -= buf_len; + continue; /* k->next*/ + } + } + } + goto indexing_done; + } else { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"we do not know how to handle this OID, if you want this implemented please contact the wireshark developers"); + expert_add_info_format(actx->pinfo, pi, PI_UNDECODED, PI_WARN, "Unimplemented instance index"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + } else { + proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"The COLUMS's parent is not a ROW. This is a BUG! please contact the wireshark developers."); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_ERROR, "COLUMS's parent is not a ROW"); + oid_info_is_ok = FALSE; + goto indexing_done; + } + default: { +/* proto_item* pi = proto_tree_add_text(pt_name,tvb,0,0,"This kind OID should have no value"); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "This kind OID should have no value"); */ + oid_info_is_ok = FALSE; + goto indexing_done; + } } - variable->val_len = val_len; +indexing_done: + + if (oid_info_is_ok) { + if (ber_class == BER_CLASS_UNI && tag == BER_UNI_TAG_NULL) { + pi_value = proto_tree_add_item(pt_varbind,hf_snmp_unSpecified,tvb,value_offset,value_len,FALSE); + } else { + if ((oid_info->value_type->ber_class != BER_CLASS_ANY) && + (ber_class != oid_info->value_type->ber_class)) + goto expected_different; + + if ((oid_info->value_type->ber_tag != BER_TAG_ANY) && + (tag != oid_info->value_type->ber_tag)) + goto expected_different; + + max_len = oid_info->value_type->max_len == -1 ? 0xffffff : oid_info->value_type->max_len; + min_len = oid_info->value_type->min_len; + + if ((int)value_len < min_len || (int)value_len > max_len) + goto expected_other_size; + + + pi_value = proto_tree_add_item(pt_varbind,oid_info->value_hfid,tvb,value_offset,value_len,FALSE); + } + } else { + switch(ber_class|(tag<<4)) { + case BER_CLASS_UNI|(BER_UNI_TAG_INTEGER<<4): + max_len = 4; min_len = 1; + if (value_len > (guint)max_len && value_len < (guint)min_len) goto expected_other_size; + hfid = hf_snmp_integer32_value; + break; + case BER_CLASS_UNI|(BER_UNI_TAG_OCTETSTRING<<4): + hfid = hf_snmp_octestring_value; + break; + case BER_CLASS_UNI|(BER_UNI_TAG_OID<<4): + max_len = -1; min_len = 2; + if (value_len < (guint)min_len) goto expected_other_size; + hfid = hf_snmp_oid_value; + break; + case BER_CLASS_UNI|(BER_UNI_TAG_NULL<<4): + max_len = 0; min_len = 0; + if (value_len != 0) goto expected_other_size; + hfid = hf_snmp_null_value; + break; + case BER_CLASS_APP: /* | (SNMP_IPA<<4)*/ + switch(value_len) { + case 4: hfid = hf_snmp_ipv4_value; break; + case 16: hfid = hf_snmp_ipv6_value; break; + default: hfid = hf_snmp_anyaddress_value; break; + } + break; + case BER_CLASS_APP|(SNMP_U32<<4): + hfid = hf_snmp_unsigned32_value; + break; + case BER_CLASS_APP|(SNMP_GGE<<4): + hfid = hf_snmp_gauge32_value; + break; + case BER_CLASS_APP|(SNMP_CNT<<4): + hfid = hf_snmp_counter_value; + break; + case BER_CLASS_APP|(SNMP_TIT<<4): + hfid = hf_snmp_timeticks_value; + break; + case BER_CLASS_APP|(SNMP_OPQ<<4): + hfid = hf_snmp_opaque_value; + break; + case BER_CLASS_APP|(SNMP_NSP<<4): + hfid = hf_snmp_nsap_value; + break; + case BER_CLASS_APP|(SNMP_C64<<4): + hfid = hf_snmp_big_counter_value; + break; + default: + hfid = hf_snmp_unknown_value; + break; + } + + pi_value = proto_tree_add_item(pt_varbind,hfid,tvb,value_offset,value_len,FALSE); + expert_add_info_format(actx->pinfo, pi_value, PI_UNDECODED, PI_NOTE, "Unresolved value, Missing MIB"); + oid_info_is_ok = FALSE; + } + - /* - * XXX - check for "sprint_realloc_objid()" failure. - */ +set_label: + if (pi_value) proto_item_fill_label(pi_value->finfo, label); + + if (oid_info->name) { + if (oid_left >= 1) { + repr = ep_strdup_printf("%s.%s (%s)", + oid_info->name, + oid_subid2string(&(subids[oid_matched]),oid_left), + oid_subid2string(subids,oid_matched+oid_left)); + } else { + repr = ep_strdup_printf("%s (%s)", + oid_info->name, + oid_subid2string(subids,oid_matched)); + } + } else { + repr = ep_strdup_printf("%s", oid_subid2string(subids,oid_matched+oid_left)); + } + + valstr = strstr(label,": "); + valstr = valstr ? valstr+2 : label; + + proto_item_set_text(pi_varbind,"%s: %s",repr,valstr); + + return seq_offset + seq_len; + +expected_other_size: { + proto_item* pi = proto_tree_add_text(tree,tvb,0,0,"Wrong value length: %u expecting: %u <= len <= %u", + value_len, + min_len, + max_len == -1 ? 0xFFFFFF : max_len); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong length for SNMP VarBind/value"); + return dissect_unknown_ber(actx->pinfo, tvb, value_start, pt); + } - buf_len = 1024; - buf = ep_alloc(buf_len); - if (buf != NULL) { - *buf = '\0'; - out_len = 0; - /* We pass an ep allocated block here, NOT a malloced block - * so we MUST NOT allow reallocation, hence the fourth - * parameter MUST be 0/FALSE - */ - sprint_realloc_value(&buf, &buf_len, &out_len, FALSE, - variable_oid, variable_oid_length, variable); +expected_different: { + proto_item* pi = proto_tree_add_text(tree,tvb,0,0,"Wrong class/tag for Value expected: %d,%d got: %d,%d", + oid_info->value_type->ber_class, + oid_info->value_type->ber_tag, + ber_class, + tag); + pt = proto_item_add_subtree(pi,ett_decoding_error); + expert_add_info_format(actx->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong class/tag for SNMP VarBind/value"); + return dissect_unknown_ber(actx->pinfo, tvb, value_start, tree); } - return buf; + } -#endif #define F_SNMP_ENGINEID_CONFORM 0x80 @@ -949,279 +1016,6 @@ dissect_snmp_engineid(proto_tree *tree, tvbuff_t *tvb, int offset, int len) return offset; } -/* This code is copied from the original SNMP dissector with minor changes to adapt it to use packet-ber.c routines - * TODO: - * - Rewrite it completly as OID as subid_t could be returned from dissect_ber_objectidentifier - * - vb_type_name is known when calling this routine(?) - * - All branches not needed(?) - * ... - */ - -static void -snmp_variable_decode(tvbuff_t *tvb, proto_tree *snmp_tree, asn1_ctx_t *actx,tvbuff_t *oid_tvb, - int offset, guint *lengthp, tvbuff_t **out_tvb) -{ - int start, vb_value_start; - guint length; - guint vb_length; - gushort vb_type; - const gchar *vb_type_name; - gint32 vb_integer_value; - guint32 vb_uinteger_value; - guint8 *vb_octet_string; - const guint8 *oid_buf; - subid_t *vb_oid; - guint vb_oid_length; - gchar *vb_display_string = NULL; - subid_t *variable_oid = NULL; - gint oid_len; - guint variable_oid_length = 0; - const guint8 *var_oid_buf; -#ifdef HAVE_NET_SNMP - struct variable_list variable; - long value; -#endif - unsigned int i; - gchar *buf; - int len; - gint8 class; - gboolean pc, ind = 0; - gint32 ber_tag; - - start = offset; - /* parse the type of the object */ - offset = dissect_ber_identifier(actx->pinfo, snmp_tree, tvb, start, &class, &pc, &ber_tag); - offset = dissect_ber_length(actx->pinfo, snmp_tree, tvb, offset, &vb_length, &ind); - - if(vb_length == 0){ - length = offset - start; - *lengthp = length; - return; - } - - vb_value_start = offset; - - /* Convert the class, constructed flag, and tag to a type. */ - vb_type_name = snmp_tag_cls2syntax(ber_tag, class, &vb_type); - - if (vb_type_name == NULL) { - /* - * Unsupported type. - * Dissect the value as an opaque string of octets. - */ - vb_type_name = "unsupported type"; - vb_type = SNMP_OPAQUE; - } - /* construct subid_t variable_oid from oid_tvb */ - if (oid_tvb){ - oid_len = tvb_length_remaining(oid_tvb,0); - var_oid_buf = tvb_get_ptr(oid_tvb, 0, oid_len); - variable_oid = ep_alloc((oid_len+1) * sizeof(gulong)); - variable_oid_length = oid_to_subid_buf(var_oid_buf, oid_len, variable_oid, ((oid_len+1) * sizeof(gulong))); - } - /* parse the value */ - switch (vb_type) { - - case SNMP_INTEGER: - offset = dissect_ber_integer(FALSE, actx, NULL, tvb, start, -1, (void*)&(vb_integer_value)); - length = offset - vb_value_start; - if (snmp_tree) { -#ifdef HAVE_NET_SNMP - value = vb_integer_value; - variable.val.integer = &value; - vb_display_string = format_var(&variable, - variable_oid, variable_oid_length, vb_type, - vb_length); -#else - vb_display_string = NULL; -#endif - if (vb_display_string != NULL) { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s", vb_display_string); - } else { - proto_tree_add_text(snmp_tree,tvb, - vb_value_start, length, - "Value: %s: %d (%#x)", vb_type_name, - vb_integer_value, vb_integer_value); - } - } - break; - - case SNMP_COUNTER: - case SNMP_GAUGE: - case SNMP_TIMETICKS: - offset = dissect_ber_integer(FALSE, actx, NULL, tvb, start, -1, &vb_uinteger_value); - length = offset - vb_value_start; - if (snmp_tree) { -#ifdef HAVE_NET_SNMP - value = vb_uinteger_value; - variable.val.integer = &value; - vb_display_string = format_var(&variable, - variable_oid, variable_oid_length, vb_type, - vb_length); -#else - vb_display_string = NULL; -#endif - if (vb_display_string != NULL) { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s", vb_display_string); - } else { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s: %u (%#x)", vb_type_name, - vb_uinteger_value, vb_uinteger_value); - } - } - break; - case SNMP_COUNTER64: - offset=dissect_ber_integer64(TRUE, actx, snmp_tree, tvb, offset, hf_snmp_counter64, NULL); - break; - case SNMP_OCTETSTR: - case SNMP_IPADDR: - case SNMP_OPAQUE: - case SNMP_NSAP: - case SNMP_BITSTR: - offset = dissect_ber_octet_string(FALSE, actx, NULL, tvb, start, -1, out_tvb); - vb_octet_string = ep_tvb_memdup(tvb, vb_value_start, vb_length); - - length = offset - vb_value_start; - if (snmp_tree) { -#ifdef HAVE_NET_SNMP - variable.val.string = vb_octet_string; - vb_display_string = format_var(&variable, - variable_oid, variable_oid_length, vb_type, - vb_length); -#else - vb_display_string = NULL; -#endif - if (vb_display_string != NULL) { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s", vb_display_string); - } else { - /* - * If some characters are not printable, - * display the string as bytes. - */ - for (i = 0; i < vb_length; i++) { - if (!(isprint(vb_octet_string[i]) - || isspace(vb_octet_string[i]))) - break; - } - if (i < vb_length) { - /* - * We stopped, due to a non-printable - * character, before we got to the end - * of the string. - */ - vb_display_string = ep_alloc(4*vb_length); - buf = vb_display_string; - len = g_snprintf(buf, 4*vb_length, "%03u", vb_octet_string[0]); - buf += len; - for (i = 1; i < vb_length; i++) { - len = g_snprintf(buf, 4*vb_length-(buf-vb_display_string), ".%03u", - vb_octet_string[i]); - buf += len; - } - proto_tree_add_text(snmp_tree, tvb, vb_value_start, - length, - "Value: %s: %s", vb_type_name, - vb_display_string); - } else { - proto_tree_add_text(snmp_tree, tvb, vb_value_start, - length, - "Value: %s: %s", vb_type_name, - SAFE_STRING(vb_octet_string, vb_length)); - } - } - } - break; - - case SNMP_NULL: - dissect_ber_null(FALSE, actx, NULL, tvb, start, -1); - length = offset - vb_value_start; - if (snmp_tree) { - proto_tree_add_text(snmp_tree, tvb, vb_value_start, length, - "Value: %s", vb_type_name); - } - break; - - case SNMP_OBJECTID: - /* XXX Redo this using dissect_ber_object_identifier when - it returns tvb or some other binary form of an OID */ - oid_buf = tvb_get_ptr(tvb, vb_value_start, vb_length); - vb_oid = ep_alloc((vb_length+1) * sizeof(gulong)); - vb_oid_length = oid_to_subid_buf(oid_buf, vb_length, vb_oid, ((vb_length+1) * sizeof(gulong))); - - offset = offset + vb_length; - length = offset - vb_value_start; - if (snmp_tree) { -#ifdef HAVE_NET_SNMP - variable.val.objid = vb_oid; - vb_display_string = format_var(&variable, - variable_oid, variable_oid_length, vb_type, - vb_oid_length * sizeof (subid_t)); - if (vb_display_string != NULL) { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s", vb_display_string); - } else { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s: [Out of memory]", vb_type_name); - } -#else /* HAVE_NET_SNMP */ - vb_display_string = format_oid(vb_oid, vb_oid_length); - if (vb_display_string != NULL) { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s: %s", vb_type_name, - vb_display_string); - } else { - proto_tree_add_text(snmp_tree, tvb, - vb_value_start, length, - "Value: %s: [Out of memory]", vb_type_name); - } -#endif /* HAVE_NET_SNMP */ - } - break; - - case SNMP_NOSUCHOBJECT: - length = offset - start; - if (snmp_tree) { - proto_tree_add_text(snmp_tree, tvb, offset, length, - "Value: %s: no such object", vb_type_name); - } - break; - - case SNMP_NOSUCHINSTANCE: - length = offset - start; - if (snmp_tree) { - proto_tree_add_text(snmp_tree, tvb, offset, length, - "Value: %s: no such instance", vb_type_name); - } - break; - - case SNMP_ENDOFMIBVIEW: - length = offset - start; - if (snmp_tree) { - proto_tree_add_text(snmp_tree, tvb, offset, length, - "Value: %s: end of mib view", vb_type_name); - } - break; - - default: - DISSECTOR_ASSERT_NOT_REACHED(); - return; - } - length = offset - start; - *lengthp = length; - return; -} - - static void set_ue_keys(snmp_ue_assoc_t* n ) { guint key_size = n->user.authModel->key_size; @@ -1576,324 +1370,95 @@ static tvbuff_t* snmp_usm_priv_aes(snmp_usm_params_t* p _U_, tvbuff_t* encrypted err = gcry_cipher_setiv(hd, iv, 16); if (err != GPG_ERR_NO_ERROR) goto on_gcry_error; - err = gcry_cipher_setkey(hd,aes_key,16); - if (err != GPG_ERR_NO_ERROR) goto on_gcry_error; - - err = gcry_cipher_decrypt(hd, cleartext, cryptgrm_len, cryptgrm, cryptgrm_len); - if (err != GPG_ERR_NO_ERROR) goto on_gcry_error; - - gcry_cipher_close(hd); - - clear_tvb = tvb_new_real_data(cleartext, cryptgrm_len, cryptgrm_len); - - return clear_tvb; - -on_gcry_error: - *error = (void*)gpg_strerror(err); - if (hd) gcry_cipher_close(hd); - return NULL; -#else - *error = "libgcrypt not present, cannot decrypt"; - return NULL; -#endif -} - - -gboolean check_ScopedPdu(tvbuff_t* tvb) { - int offset; - gint8 class; - gboolean pc; - gint32 tag; - int hoffset, eoffset; - guint32 len; - - offset = get_ber_identifier(tvb, 0, &class, &pc, &tag); - offset = get_ber_length(tvb, offset, NULL, NULL); - - if ( ! (((class!=BER_CLASS_APP) && (class!=BER_CLASS_PRI) ) - && ( (!pc) || (class!=BER_CLASS_UNI) || (tag!=BER_UNI_TAG_ENUMERATED) ) - )) return FALSE; - - if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)) - return TRUE; - - hoffset = offset; - - offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); - offset = get_ber_length(tvb, offset, &len, NULL); - eoffset = offset + len; - - if (eoffset <= hoffset) return FALSE; - - if ((class!=BER_CLASS_APP)&&(class!=BER_CLASS_PRI)) - if( (class!=BER_CLASS_UNI) - ||((tagpinfo, pi, PI_MALFORMED, PI_ERROR, - "Corrupt and Invalid packet" ); - } - - - - - return offset; -} -static int dissect_internet(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_T_internet(FALSE, tvb, offset, actx, tree, hf_snmp_internet); -} - - -static const value_string snmp_NetworkAddress_vals[] = { - { 0, "internet" }, - { 0, NULL } -}; - -static const ber_old_choice_t NetworkAddress_choice[] = { - { 0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_internet }, - { 0, 0, 0, 0, NULL } -}; - -static int -dissect_snmp_NetworkAddress(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_old_choice(actx, tree, tvb, offset, - NetworkAddress_choice, hf_index, ett_snmp_NetworkAddress, - NULL); +dissect_snmp_ObjectName(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_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); return offset; } -static int dissect_agent_addr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_NetworkAddress(FALSE, tvb, offset, actx, tree, hf_snmp_agent_addr); -} - - - -static int -dissect_snmp_IpAddressIpv6(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 int dissect_name(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { + return dissect_snmp_ObjectName(FALSE, tvb, offset, actx, tree, hf_snmp_name); } - - - -static int -dissect_snmp_IpAddressOther(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 int dissect_subtree(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { + return dissect_snmp_ObjectName(FALSE, tvb, offset, actx, tree, hf_snmp_subtree); } - static const value_string snmp_Version_vals[] = { { 0, "version-1" }, { 1, "v2c" }, @@ -2112,75 +1604,10 @@ dissect_snmp_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, return offset; } -static int dissect_unSpecified(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_NULL(FALSE, tvb, offset, actx, tree, hf_snmp_unSpecified); -} -static int dissect_noSuchObject_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_NULL(TRUE, tvb, offset, actx, tree, hf_snmp_noSuchObject); -} -static int dissect_noSuchInstance_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_NULL(TRUE, tvb, offset, actx, tree, hf_snmp_noSuchInstance); -} -static int dissect_endOfMibView_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_NULL(TRUE, tvb, offset, actx, tree, hf_snmp_endOfMibView); -} - - -static const value_string snmp_ValueType_vals[] = { - { 0, "value" }, - { 1, "unSpecified" }, - { 2, "noSuchObject" }, - { 3, "noSuchInstance" }, - { 4, "endOfMibView" }, - { 0, NULL } -}; - -static const ber_old_choice_t ValueType_choice[] = { - { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_value }, - { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_unSpecified }, - { 2, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_noSuchObject_impl }, - { 3, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_noSuchInstance_impl }, - { 4, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_endOfMibView_impl }, - { 0, 0, 0, 0, NULL } -}; - -static int -dissect_snmp_ValueType(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_old_choice(actx, tree, tvb, offset, - ValueType_choice, hf_index, ett_snmp_ValueType, - NULL); - - return offset; -} static int dissect_valueType(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { - return dissect_snmp_ValueType(FALSE, tvb, offset, actx, tree, hf_snmp_valueType); + return dissect_snmp_NULL(FALSE, tvb, offset, actx, tree, hf_snmp_valueType); } - -static const ber_old_sequence_t VarBind_sequence[] = { - { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_name }, - { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_valueType }, - { 0, 0, 0, NULL } -}; - -static int -dissect_snmp_VarBind(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 323 "snmp.cnf" - oid_tvb = NULL; - value_tvb = NULL; - offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, - VarBind_sequence, hf_index, ett_snmp_VarBind); - - if (oid_tvb && value_tvb) { - next_tvb_add_string(&var_list, value_tvb, (snmp_var_in_tree) ? tree : NULL, - variable_oid_dissector_table, - oid_to_str(tvb_get_ptr(oid_tvb, 0, tvb_length(oid_tvb)), tvb_length(oid_tvb))); - } - - - - return offset; -} static int dissect_VarBindList_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { return dissect_snmp_VarBind(FALSE, tvb, offset, actx, tree, hf_snmp_VarBindList_item); } @@ -2373,7 +1800,7 @@ static int dissect_generic_trap(proto_tree *tree _U_, tvbuff_t *tvb _U_, int off static const ber_old_sequence_t Trap_PDU_sequence[] = { { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_enterprise }, - { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_agent_addr }, + { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_agent_addr }, { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_generic_trap }, { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_specific_trap }, { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_time_stamp }, @@ -2835,7 +2262,7 @@ static int dissect_msgMaxSize(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offse static int dissect_snmp_T_msgFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 307 "snmp.cnf" +#line 317 "snmp.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, @@ -2855,6 +2282,7 @@ dissect_snmp_T_msgFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset + return offset; } static int dissect_msgFlags(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) { @@ -2898,7 +2326,7 @@ static int dissect_msgGlobalData(proto_tree *tree _U_, tvbuff_t *tvb _U_, int of static int dissect_snmp_T_msgSecurityParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 250 "snmp.cnf" +#line 260 "snmp.cnf" switch(MsgSecurityModel){ case SNMP_SEC_USM: /* 3 */ @@ -2964,6 +2392,9 @@ dissect_snmp_T_encryptedPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Failed to decrypt encryptedPDU: %s", error); + + if (check_col(actx->pinfo->cinfo, COL_INFO)) + col_add_str(actx->pinfo->cinfo, COL_INFO, "encryptedPDU: Failed to decrypt"); return offset; } else { @@ -2976,10 +2407,14 @@ dissect_snmp_T_encryptedPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Decrypted data not formated as expected"); + + if (check_col(actx->pinfo->cinfo, COL_INFO)) + col_add_str(actx->pinfo->cinfo, COL_INFO, "encryptedPDU: Decrypted data not formated as expected"); return offset; } + add_new_data_source(actx->pinfo, cleartext_tvb, "Decrypted ScopedPDU"); tvb_set_child_real_data_tvbuff(tvb, cleartext_tvb); @@ -2987,6 +2422,9 @@ dissect_snmp_T_encryptedPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of decrypted_tree = proto_item_add_subtree(decrypted_item,ett_decrypted); dissect_snmp_ScopedPDU(FALSE, cleartext_tvb, 0, actx, decrypted_tree, -1); } + } else { + if (check_col(actx->pinfo->cinfo, COL_INFO)) + col_add_str(actx->pinfo->cinfo, COL_INFO, "encryptedPDU: privKey Unknown"); } @@ -3036,7 +2474,7 @@ dissect_snmp_SNMPv3Message(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off offset = dissect_ber_old_sequence(implicit_tag, actx, tree, tvb, offset, SNMPv3Message_sequence, hf_index, ett_snmp_SNMPv3Message); -#line 265 "snmp.cnf" +#line 275 "snmp.cnf" if( usm_p.authenticated && usm_p.user_assoc @@ -3327,7 +2765,7 @@ static void dissect_SMUX_PDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro /*--- End of included file: packet-snmp-fn.c ---*/ -#line 1513 "packet-snmp-template.c" +#line 1330 "packet-snmp-template.c" guint @@ -3697,62 +3135,7 @@ static void snmp_usm_password_to_key_sha1(const guint8 *password, } -static void -process_prefs(void) -{ -#ifdef HAVE_NET_SNMP - gchar *tmp_mib_modules; - static gboolean mibs_loaded = FALSE; - - if (mibs_loaded) { - /* - * Unload the MIBs, as we'll be reloading them based on - * the current preference setting. - */ - shutdown_mib(); /* unload MIBs */ - } - - /* - * Cannot check if MIBS is already set, as it could be set by Wireshark. - * - * If we have a list of modules to load, put that list in MIBS, - * otherwise clear MIBS. - */ - if (mib_modules != NULL) { - tmp_mib_modules = g_strconcat("MIBS=", mib_modules, NULL); - /* - * Try to be clever and replace colons for semicolons under - * Windows. Do the converse on non-Windows systems. This - * handles cases where we've copied a preferences file - * between a non-Windows box and a Windows box or upgraded - * from an older version of Wireshark under Windows. - */ - g_strdelimit(tmp_mib_modules, IMPORT_SEPARATOR, ENV_SEPARATOR_CHAR); - -#ifdef _WIN32 - _putenv(tmp_mib_modules); -#else - putenv(tmp_mib_modules); -#endif /*_WIN32*/ - } else { -#ifdef _WIN32 - _putenv("MIBS"); -#else - putenv("MIBS"); -#endif /* _WIN32 */ - } - - /* - * Load the MIBs. - */ - register_mib_handlers(); - read_premib_configs(); - init_mib(); - read_configs(); - mibs_loaded = TRUE; -#endif /* HAVE_NET_SNMP */ - -} +static void process_prefs(void) {} static void* snmp_users_copy_cb(void* dest, const void* orig, unsigned len _U_) { const snmp_ue_assoc_t* o = orig; @@ -3824,16 +3207,8 @@ UAT_BUFFER_CB_DEF(snmp_users,engine_id,snmp_ue_assoc_t,engine.data,engine.len) UAT_VS_DEF(snmp_users,auth_model,snmp_ue_assoc_t,0,"MD5") UAT_VS_DEF(snmp_users,priv_proto,snmp_ue_assoc_t,0,"DES") - /*--- proto_register_snmp -------------------------------------------*/ void proto_register_snmp(void) { -#if defined(_WIN32) && defined(HAVE_NET_SNMP) - char *mib_path; - int mib_path_len; -#define MIB_PATH_APPEND "snmp\\mibs" -#endif - gchar *tmp_mib_modules; - /* List of fields */ static hf_register_info hf[] = { { &hf_snmp_v3_flags_auth, @@ -3872,21 +3247,35 @@ void proto_register_snmp(void) { { &hf_snmp_engineid_data, { "Engine ID Data", "snmp.engineid.data", FT_BYTES, BASE_HEX, NULL, 0, "Engine ID Data", HFILL }}, - { &hf_snmp_counter64, { - "Value", "snmp.counter64", FT_INT64, BASE_DEC, - NULL, 0, "A counter64 value", HFILL }}, { &hf_snmp_msgAuthentication, { "Authentication", "snmp.v3.auth", FT_BOOLEAN, 8, TFS(&auth_flags), 0, "", HFILL }}, { &hf_snmp_decryptedPDU, { "Decrypted ScopedPDU", "snmp.decrypted_pdu", FT_BYTES, BASE_HEX, NULL, 0, "Decrypted PDU", HFILL }}, - { &hf_snmp_internet_ipv6, { - "internet", "snmp.internet", FT_IPv6, BASE_NONE, - NULL, 0, "", HFILL }}, - { &hf_snmp_internet_other, { - "internet", "snmp.internet", FT_BYTES, BASE_NONE, - NULL, 0, "", HFILL }}, + { &hf_snmp_noSuchObject, { "noSuchObject", "snmp.noSuchObject", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_noSuchInstance, { "noSuchInstance", "snmp.noSuchInstance", FT_NONE, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_endOfMibView, { "endOfMibView", "snmp.endOfMibView", FT_NONE, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_unSpecified, { "unSpecified", "snmp.unSpecified", FT_NONE, BASE_DEC, NULL, 0, "", HFILL }}, + + { &hf_snmp_integer32_value, { "Value (Integer32)", "snmp.value.int", FT_INT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_octestring_value, { "Value (OctetString)", "snmp.value.octets", FT_BYTES, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_oid_value, { "Value (OID)", "snmp.value.oid", FT_OID, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_null_value, { "Value (Null)", "snmp.value.null", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_ipv4_value, { "Value (IpAddress)", "snmp.value.ipv4", FT_IPv4, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_ipv6_value, { "Value (IpAddress)", "snmp.value.ipv6", FT_IPv6, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_anyaddress_value, { "Value (IpAddress)", "snmp.value.addr", FT_BYTES, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_unsigned32_value, { "Value (Unsigned32)", "snmp.value.u32", FT_INT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_gauge32_value, { "Value (Gauge32)", "snmp.value.g32", FT_INT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_unknown_value, { "Value (Unknown)", "snmp.value.unk", FT_BYTES, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_counter_value, { "Value (Counter32)", "snmp.value.counter", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_nsap_value, { "Value (NSAP)", "snmp.value.nsap", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_timeticks_value, { "Value (Timeticks)", "snmp.value.timeticks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_snmp_opaque_value, { "Value (Opaque)", "snmp.value.opaque", FT_BYTES, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_objectname, { "Object Name", "snmp.name", FT_OID, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_snmp_scalar_instance_index, { "Scalar Instance Index", "snmp.name.index", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + + /*--- Included file: packet-snmp-hfarr.c ---*/ #line 1 "packet-snmp-hfarr.c" @@ -3894,58 +3283,6 @@ void proto_register_snmp(void) { { "SMUX-PDUs", "snmp.SMUX_PDUs", FT_UINT32, BASE_DEC, VALS(snmp_SMUX_PDUs_vals), 0, "snmp.SMUX_PDUs", HFILL }}, - { &hf_snmp_simple, - { "simple", "snmp.simple", - FT_UINT32, BASE_DEC, VALS(snmp_SimpleSyntax_vals), 0, - "snmp.SimpleSyntax", HFILL }}, - { &hf_snmp_application_wide, - { "application-wide", "snmp.application_wide", - FT_UINT32, BASE_DEC, VALS(snmp_ApplicationSyntax_vals), 0, - "snmp.ApplicationSyntax", HFILL }}, - { &hf_snmp_integer_value, - { "integer-value", "snmp.integer_value", - FT_INT32, BASE_DEC, NULL, 0, - "snmp.Integer_value", HFILL }}, - { &hf_snmp_string_value, - { "string-value", "snmp.string_value", - FT_BYTES, BASE_HEX, NULL, 0, - "snmp.String_value", HFILL }}, - { &hf_snmp_objectID_value, - { "objectID-value", "snmp.objectID_value", - FT_OID, BASE_NONE, NULL, 0, - "snmp.ObjectID_value", HFILL }}, - { &hf_snmp_empty, - { "empty", "snmp.empty", - FT_NONE, BASE_NONE, NULL, 0, - "snmp.Empty", HFILL }}, - { &hf_snmp_ipAddress_value, - { "ipAddress-value", "snmp.ipAddress_value", - FT_IPv4, BASE_NONE, NULL, 0, - "snmp.IpAddress", HFILL }}, - { &hf_snmp_counter_value, - { "counter-value", "snmp.counter_value", - FT_UINT32, BASE_DEC, NULL, 0, - "snmp.Counter32", HFILL }}, - { &hf_snmp_timeticks_value, - { "timeticks-value", "snmp.timeticks_value", - FT_UINT32, BASE_DEC, NULL, 0, - "snmp.TimeTicks", HFILL }}, - { &hf_snmp_arbitrary_value, - { "arbitrary-value", "snmp.arbitrary_value", - FT_BYTES, BASE_HEX, NULL, 0, - "snmp.Opaque", HFILL }}, - { &hf_snmp_big_counter_value, - { "big-counter-value", "snmp.big_counter_value", - FT_UINT64, BASE_DEC, NULL, 0, - "snmp.Counter64", HFILL }}, - { &hf_snmp_unsigned_integer_value, - { "unsigned-integer-value", "snmp.unsigned_integer_value", - FT_UINT32, BASE_DEC, NULL, 0, - "snmp.Unsigned32", HFILL }}, - { &hf_snmp_internet, - { "internet", "snmp.internet", - FT_IPv4, BASE_NONE, NULL, 0, - "snmp.T_internet", HFILL }}, { &hf_snmp_version, { "version", "snmp.version", FT_INT32, BASE_DEC, VALS(snmp_Version_vals), 0, @@ -4116,7 +3453,7 @@ void proto_register_snmp(void) { "snmp.OBJECT_IDENTIFIER", HFILL }}, { &hf_snmp_agent_addr, { "agent-addr", "snmp.agent_addr", - FT_UINT32, BASE_DEC, VALS(snmp_NetworkAddress_vals), 0, + FT_BYTES, BASE_HEX, NULL, 0, "snmp.NetworkAddress", HFILL }}, { &hf_snmp_generic_trap, { "generic-trap", "snmp.generic_trap", @@ -4136,26 +3473,6 @@ void proto_register_snmp(void) { "snmp.ObjectName", HFILL }}, { &hf_snmp_valueType, { "valueType", "snmp.valueType", - FT_UINT32, BASE_DEC, VALS(snmp_ValueType_vals), 0, - "snmp.ValueType", HFILL }}, - { &hf_snmp_value, - { "value", "snmp.value", - FT_UINT32, BASE_DEC, VALS(snmp_ObjectSyntax_vals), 0, - "snmp.ObjectSyntax", HFILL }}, - { &hf_snmp_unSpecified, - { "unSpecified", "snmp.unSpecified", - FT_NONE, BASE_NONE, NULL, 0, - "snmp.NULL", HFILL }}, - { &hf_snmp_noSuchObject, - { "noSuchObject", "snmp.noSuchObject", - FT_NONE, BASE_NONE, NULL, 0, - "snmp.NULL", HFILL }}, - { &hf_snmp_noSuchInstance, - { "noSuchInstance", "snmp.noSuchInstance", - FT_NONE, BASE_NONE, NULL, 0, - "snmp.NULL", HFILL }}, - { &hf_snmp_endOfMibView, - { "endOfMibView", "snmp.endOfMibView", FT_NONE, BASE_NONE, NULL, 0, "snmp.NULL", HFILL }}, { &hf_snmp_VarBindList_item, @@ -4224,7 +3541,7 @@ void proto_register_snmp(void) { "snmp.T_operation", HFILL }}, /*--- End of included file: packet-snmp-hfarr.c ---*/ -#line 2073 "packet-snmp-template.c" +#line 1841 "packet-snmp-template.c" }; /* List of subtrees */ @@ -4236,14 +3553,12 @@ void proto_register_snmp(void) { &ett_decrypted, &ett_authParameters, &ett_internet, - + &ett_varbind, + &ett_name, + &ett_decoding_error, /*--- Included file: packet-snmp-ettarr.c ---*/ #line 1 "packet-snmp-ettarr.c" - &ett_snmp_ObjectSyntax, - &ett_snmp_SimpleSyntax, - &ett_snmp_ApplicationSyntax, - &ett_snmp_NetworkAddress, &ett_snmp_Message, &ett_snmp_Messagev2u, &ett_snmp_T_datav2u, @@ -4257,7 +3572,6 @@ void proto_register_snmp(void) { &ett_snmp_BulkPDU, &ett_snmp_Trap_PDU, &ett_snmp_VarBind, - &ett_snmp_ValueType, &ett_snmp_VarBindList, &ett_snmp_SMUX_PDUs, &ett_snmp_RegisterResponse, @@ -4266,10 +3580,10 @@ void proto_register_snmp(void) { &ett_snmp_RReqPDU, /*--- End of included file: packet-snmp-ettarr.c ---*/ -#line 2086 "packet-snmp-template.c" +#line 1856 "packet-snmp-template.c" }; module_t *snmp_module; - static uat_field_t fields[] = { + static uat_field_t users_fields[] = { UAT_FLD_BUFFER(snmp_users,engine_id,"Engine-id for this entry (empty = any)"), UAT_FLD_LSTRING(snmp_users,userName,"The username"), UAT_FLD_VS(snmp_users,auth_model,auth_types,"Algorithm to be used for authentication."), @@ -4278,7 +3592,7 @@ void proto_register_snmp(void) { UAT_FLD_LSTRING(snmp_users,privPassword,"The password used for encrypting packets for this entry"), UAT_END_FIELDS }; - + assocs_uat = uat_new("SNMP Users", sizeof(snmp_ue_assoc_t), "snmp_users", @@ -4289,37 +3603,8 @@ void proto_register_snmp(void) { snmp_users_copy_cb, snmp_users_update_cb, snmp_users_free_cb, - fields); - -#ifdef HAVE_NET_SNMP - -#ifdef _WIN32 - /* Set MIBDIRS so that the SNMP library can find its mibs. */ - /* XXX - Should we set MIBS or MIBFILES as well? */ - mib_path_len=strlen(get_datafile_dir()) + strlen(MIB_PATH_APPEND) + 20; - mib_path = ep_alloc (mib_path_len); - g_snprintf (mib_path, mib_path_len, "MIBDIRS=%s\\%s", get_datafile_dir(), MIB_PATH_APPEND); - /* Amazingly enough, Windows does not provide setenv(). */ - if (getenv("MIBDIRS") == NULL) - _putenv(mib_path); - -#endif /* _WIN32 */ - - /* - * Suppress warnings about unknown tokens - we aren't initializing - * Net-SNMP in its entirety, we're just initializing the - * MIB-handling part because that's all we're using, which - * means that entries in the configuration file for other - * pars of the library will not be handled, and we don't want - * the config file reading code to whine about that. - */ - netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, - NETSNMP_DS_LIB_NO_TOKEN_WARNINGS, TRUE); - netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, - NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY, 2); -#endif /* HAVE_NET_SNMP */ - - + users_fields); + /* Register protocol */ proto_snmp = proto_register_protocol(PNAME, PSNAME, PFNAME); new_register_dissector("snmp", dissect_snmp, proto_snmp); @@ -4336,43 +3621,23 @@ void proto_register_snmp(void) { "Whether the SNMP OID should be shown in the info column", &display_oid); - /* - * Set the default value of "mib_modules". - * - * If the MIBS environment variable is set, make its value - * the value of "mib_modules", otherwise, set "mib_modules" - * to DEF_MIB_MODULES. - */ - tmp_mib_modules = getenv("MIBS"); - if (tmp_mib_modules != NULL) - mib_modules = tmp_mib_modules; - prefs_register_string_preference(snmp_module, "mib_modules", - "MIB modules to load", - "List of MIB modules to load (the list is set to environment variable MIBS if the variable is not already set)" - "The list must be separated by colons (:) on non-Windows systems and semicolons (;) on Windows systems", - &mib_modules); + prefs_register_obsolete_preference(snmp_module, "mib_modules"); + prefs_register_obsolete_preference(snmp_module, "var_in_tree"); + prefs_register_obsolete_preference(snmp_module, "users_file"); + prefs_register_bool_preference(snmp_module, "desegment", "Reassemble SNMP-over-TCP messages\nspanning multiple TCP segments", "Whether the SNMP dissector should reassemble messages spanning multiple TCP segments." " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.", &snmp_desegment); - prefs_register_bool_preference(snmp_module, "var_in_tree", - "Display dissected variables inside SNMP tree", - "ON - display dissected variables inside SNMP tree, OFF - display dissected variables in root tree after SNMP", - &snmp_var_in_tree); - - prefs_register_obsolete_preference(snmp_module, "users_file"); prefs_register_uat_preference(snmp_module, "users_table", "Users Table", "Table of engine-user associations used for authentication and decryption", assocs_uat); - - variable_oid_dissector_table = - register_dissector_table("snmp.variable_oid", - "SNMP Variable OID", FT_STRING, BASE_NONE); - + + register_init_routine(renew_ue_cache); } diff --git a/epan/dissectors/packet-snmp.h b/epan/dissectors/packet-snmp.h index 046e5e66e7..2dc98d1248 100644 --- a/epan/dissectors/packet-snmp.h +++ b/epan/dissectors/packet-snmp.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-snmp.h */ +/* ./packet-snmp.h */ /* ../../tools/asn2wrs.py -b -e -p snmp -c snmp.cnf -s packet-snmp-template snmp.asn */ /* Input file: packet-snmp-template.h */ diff --git a/epan/dissectors/packet-spnego.c b/epan/dissectors/packet-spnego.c index 6ada42ffab..96277544a6 100644 --- a/epan/dissectors/packet-spnego.c +++ b/epan/dissectors/packet-spnego.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-spnego.c */ +/* ./packet-spnego.c */ /* ../../tools/asn2wrs.py -b -e -p spnego -c spnego.cnf -s packet-spnego-template spnego.asn */ /* Input file: packet-spnego-template.c */ diff --git a/epan/dissectors/packet-spnego.h b/epan/dissectors/packet-spnego.h index 804173fb2f..b4b4bc73cd 100644 --- a/epan/dissectors/packet-spnego.h +++ b/epan/dissectors/packet-spnego.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-spnego.h */ +/* ./packet-spnego.h */ /* ../../tools/asn2wrs.py -b -e -p spnego -c spnego.cnf -s packet-spnego-template spnego.asn */ /* Input file: packet-spnego-template.h */ diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c index 7642d465b8..7a4d67a0db 100644 --- a/epan/dissectors/packet-tcap.c +++ b/epan/dissectors/packet-tcap.c @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-ulp.c b/epan/dissectors/packet-ulp.c index d8c10522c8..340c734c71 100644 --- a/epan/dissectors/packet-ulp.c +++ b/epan/dissectors/packet-ulp.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-ulp.c */ +/* ./packet-ulp.c */ /* ../../tools/asn2wrs.py -p ulp -c ulp.cnf -s packet-ulp-template ULP.asn SUPL.asn ULP-Components.asn */ /* Input file: packet-ulp-template.c */ diff --git a/epan/dissectors/packet-wlancertextn.c b/epan/dissectors/packet-wlancertextn.c index 442e593105..389c232720 100644 --- a/epan/dissectors/packet-wlancertextn.c +++ b/epan/dissectors/packet-wlancertextn.c @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-wlancertextn.c */ +/* ./packet-wlancertextn.c */ /* ../../tools/asn2wrs.py -b -e -p wlancertextn -c wlancertextn.cnf -s packet-wlancertextn-template WLANCERTEXTN.asn */ /* Input file: packet-wlancertextn-template.c */ @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-wlancertextn.h b/epan/dissectors/packet-wlancertextn.h index 9a0528cc90..9fd8beebcc 100644 --- a/epan/dissectors/packet-wlancertextn.h +++ b/epan/dissectors/packet-wlancertextn.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* .\packet-wlancertextn.h */ +/* ./packet-wlancertextn.h */ /* ../../tools/asn2wrs.py -b -e -p wlancertextn -c wlancertextn.cnf -s packet-wlancertextn-template WLANCERTEXTN.asn */ /* Input file: packet-wlancertextn-template.h */ diff --git a/epan/dissectors/packet-x411.c b/epan/dissectors/packet-x411.c index bd0606b683..c1b4209286 100644 --- a/epan/dissectors/packet-x411.c +++ b/epan/dissectors/packet-x411.c @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-x420.c b/epan/dissectors/packet-x420.c index a25c5cce57..963eb64065 100644 --- a/epan/dissectors/packet-x420.c +++ b/epan/dissectors/packet-x420.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-x509af.c b/epan/dissectors/packet-x509af.c index b86eaa65ef..2b90f12d39 100644 --- a/epan/dissectors/packet-x509af.c +++ b/epan/dissectors/packet-x509af.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-x509if.c b/epan/dissectors/packet-x509if.c index 84e699d4b1..729d0d57a2 100644 --- a/epan/dissectors/packet-x509if.c +++ b/epan/dissectors/packet-x509if.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include diff --git a/epan/dissectors/packet-x509sat.c b/epan/dissectors/packet-x509sat.c index e855c358d9..2d169cc1cd 100644 --- a/epan/dissectors/packet-x509sat.c +++ b/epan/dissectors/packet-x509sat.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include @@ -2231,65 +2231,65 @@ void proto_register_x509sat(void) { FT_BOOLEAN, 8, NULL, 0, "x509sat.Boolean", HFILL }}, { &hf_x509sat_SyntaxGeneralizedTime_PDU, - { "SyntaxGeneralizedTime", "x509sat.SyntaxGeneralizedTime", + { "GeneralizedTime", "x509sat.GeneralizedTime", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxGeneralizedTime", HFILL }}, + "x509sat.GeneralizedTime", HFILL }}, { &hf_x509sat_SyntaxUTCTime_PDU, - { "SyntaxUTCTime", "x509sat.SyntaxUTCTime", + { "UTCTime", "x509sat.UTCTime", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxUTCTime", HFILL }}, + "x509sat.UTCTime", HFILL }}, { &hf_x509sat_SyntaxNumericString_PDU, - { "SyntaxNumericString", "x509sat.SyntaxNumericString", + { "NumericString", "x509sat.NumericString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxNumericString", HFILL }}, + "x509sat.NumericString", HFILL }}, { &hf_x509sat_SyntaxPrintableString_PDU, - { "SyntaxPrintableString", "x509sat.SyntaxPrintableString", + { "PrintableString", "x509sat.PrintableString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxPrintableString", HFILL }}, + "x509sat.PrintableString", HFILL }}, { &hf_x509sat_SyntaxIA5String_PDU, - { "SyntaxIA5String", "x509sat.SyntaxIA5String", + { "IA5String", "x509sat.IA5String", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxIA5String", HFILL }}, + "x509sat.IA5String", HFILL }}, { &hf_x509sat_SyntaxBMPString_PDU, - { "SyntaxBMPString", "x509sat.SyntaxBMPString", + { "BMPString", "x509sat.BMPString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxBMPString", HFILL }}, + "x509sat.BMPString", HFILL }}, { &hf_x509sat_SyntaxUniversalString_PDU, - { "SyntaxUniversalString", "x509sat.SyntaxUniversalString", + { "UniversalString", "x509sat.UniversalString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxUniversalString", HFILL }}, + "x509sat.UniversalString", HFILL }}, { &hf_x509sat_SyntaxUTF8String_PDU, - { "SyntaxUTF8String", "x509sat.SyntaxUTF8String", + { "UTF8String", "x509sat.UTF8String", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxUTF8String", HFILL }}, + "x509sat.UTF8String", HFILL }}, { &hf_x509sat_SyntaxTeletexString_PDU, - { "SyntaxTeletexString", "x509sat.SyntaxTeletexString", + { "TeletexString", "x509sat.TeletexString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxTeletexString", HFILL }}, + "x509sat.TeletexString", HFILL }}, { &hf_x509sat_SyntaxT61String_PDU, - { "SyntaxT61String", "x509sat.SyntaxT61String", + { "T61String", "x509sat.T61String", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxT61String", HFILL }}, + "x509sat.T61String", HFILL }}, { &hf_x509sat_SyntaxVideotexString_PDU, - { "SyntaxVideotexString", "x509sat.SyntaxVideotexString", + { "VideotexString", "x509sat.VideotexString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxVideotexString", HFILL }}, + "x509sat.VideotexString", HFILL }}, { &hf_x509sat_SyntaxGraphicString_PDU, - { "SyntaxGraphicString", "x509sat.SyntaxGraphicString", + { "GraphicString", "x509sat.GraphicString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxGraphicString", HFILL }}, + "x509sat.GraphicString", HFILL }}, { &hf_x509sat_SyntaxISO646String_PDU, - { "SyntaxISO646String", "x509sat.SyntaxISO646String", + { "ISO646String", "x509sat.ISO646String", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxISO646String", HFILL }}, + "x509sat.ISO646String", HFILL }}, { &hf_x509sat_SyntaxVisibleString_PDU, - { "SyntaxVisibleString", "x509sat.SyntaxVisibleString", + { "VisibleString", "x509sat.VisibleString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxVisibleString", HFILL }}, + "x509sat.VisibleString", HFILL }}, { &hf_x509sat_SyntaxGeneralString_PDU, - { "SyntaxGeneralString", "x509sat.SyntaxGeneralString", + { "GeneralString", "x509sat.GeneralString", FT_STRING, BASE_NONE, NULL, 0, - "x509sat.SyntaxGeneralString", HFILL }}, + "x509sat.GeneralString", HFILL }}, { &hf_x509sat_teletexString, { "teletexString", "x509sat.teletexString", FT_STRING, BASE_NONE, NULL, 0, diff --git a/epan/epan.c b/epan/epan.c index e6c8b5d414..5814f852ae 100644 --- a/epan/epan.c +++ b/epan/epan.c @@ -50,7 +50,7 @@ #include "column-utils.h" #include "tap.h" #include "addr_resolv.h" -#include "oid_resolv.h" +#include "oids.h" #include "emem.h" #include "expert.h" @@ -88,7 +88,6 @@ epan_init(void (*register_all_protocols)(register_cb cb, gpointer client_data), gcry_check_version(NULL); #endif tvbuff_init(); - oid_resolv_init(); tap_init(); proto_init(register_all_protocols, register_all_handoffs, cb, client_data); packet_init(); @@ -96,6 +95,7 @@ epan_init(void (*register_all_protocols)(register_cb cb, gpointer client_data), final_registration_all_protocols(); host_name_lookup_init(); expert_init(); + oids_init(); #ifdef HAVE_LUA_5_1 wslua_init(NULL); #endif diff --git a/epan/oid_resolv.c b/epan/oid_resolv.c deleted file mode 100644 index c3de5e620f..0000000000 --- a/epan/oid_resolv.c +++ /dev/null @@ -1,97 +0,0 @@ -/* oid_resolv.c - * Routines for OBJECT IDENTIFIER name resolution - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include "oid_resolv.h" -#include "to_str.h" -#include "strutil.h" -#include "epan/dissectors/format-oid.h" - -static GHashTable *oid_table = NULL; - -void oid_resolv_init(void) { - oid_table = g_hash_table_new(g_str_hash, g_str_equal); -} - -static void free_oid_str(gpointer key, gpointer value _U_, - gpointer user_data _U_) { - g_free(key); -} - -void oid_resolv_cleanup(void) { - g_hash_table_foreach(oid_table, free_oid_str, NULL); - g_hash_table_destroy(oid_table); - oid_table = NULL; -} - -gboolean oid_resolv_enabled(void) { - return TRUE; -} - -const gchar *get_oid_name(const guint8 *oid, gint oid_len) { - const gchar *name; - subid_t *subid_oid; - guint subid_oid_length; - gchar *decoded_oid; - gchar *non_decoded_oid; - - name = g_hash_table_lookup(oid_table, oid_to_str(oid, oid_len)); - if (name) return name; - subid_oid = g_malloc((oid_len+1) * sizeof(gulong)); - subid_oid_length = oid_to_subid_buf(oid, oid_len, subid_oid, ((oid_len+1) * sizeof(gulong))); - new_format_oid(subid_oid, subid_oid_length, &non_decoded_oid, &decoded_oid); - g_free(subid_oid); - return decoded_oid; -} - -const gchar *get_oid_str_name(const gchar *oid_str) { - const gchar *name; - GByteArray *bytes; - gboolean res; - - bytes = g_byte_array_new(); - res = oid_str_to_bytes(oid_str, bytes); - if (!res) { - /* just try a direct lookup - this allows backward compatibility - with non-OIDs used for X.411 standard extensions and DISP initiators */ - return g_hash_table_lookup(oid_table, oid_str); - } - name = get_oid_name(bytes->data, bytes->len); - g_byte_array_free(bytes, TRUE); - return name; -} - - -extern void add_oid_name(const guint8 *oid, gint oid_len, const gchar *name) { - add_oid_str_name(oid_to_str(oid, oid_len), name); -} - -extern void add_oid_str_name(const gchar *oid_str, const gchar *name) { - g_hash_table_insert(oid_table, (gpointer)g_strdup(oid_str), (gpointer)name); -} diff --git a/epan/oid_resolv.h b/epan/oid_resolv.h deleted file mode 100644 index d770bebb93..0000000000 --- a/epan/oid_resolv.h +++ /dev/null @@ -1,50 +0,0 @@ -/* oid_resolv.h - * Definitions for OBJECT IDENTIFIER name resolution - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1998 Gerald Combs - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -/* The buffers returned by these functions are all allocated with a - * packet lifetime or are static buffers and does not have have to be freed. - * However, take into account that when the packet dissection - * completes, these buffers will be automatically reclaimed/freed. - * If you need the buffer to remain for a longer scope than packet lifetime - * you must copy the content to an se_alloc() buffer. - */ - -#ifndef __OID_RESOLV_H__ -#define __OID_RESOLV_H__ - -/* init and clenup funcions called from epan.h */ -extern void oid_resolv_init(void); -extern void oid_resolv_cleanup(void); - -extern gboolean oid_resolv_enabled(void); - -/* get_oid_name returns OID name from oid_table or MIBs database */ -extern const gchar *get_oid_name(const guint8 *oid, gint oid_len); -extern const gchar *get_oid_str_name(const gchar *oid_str); - -/* add OID name into oid_table */ -extern void add_oid_name(const guint8 *oid, gint oid_len, const gchar *name); -extern void add_oid_str_name(const gchar *oid_str, const gchar *name); - - -#endif /* __OID_RESOLV_H__ */ diff --git a/epan/oids.c b/epan/oids.c index a50e302032..01c473b646 100644 --- a/epan/oids.c +++ b/epan/oids.c @@ -49,10 +49,7 @@ #include "oids.h" -#ifdef HAVE_SMI -/* debuglevel is (currently) only used if HAVE_SMI is defined */ static int debuglevel = 0; -#endif static const oid_value_type_t integer_type = { FT_INT32, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, 1, 4, OID_KEY_TYPE_INTEGER, OID_KEY_TYPE_INTEGER, 1}; static const oid_value_type_t bytes_type = { FT_BYTES, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 0, -1, OID_KEY_TYPE_BYTES, OID_KEY_TYPE_WRONG, 0}; @@ -72,12 +69,19 @@ static const oid_value_type_t string_type = { FT_STRING, BASE_NONE, BER_CLAS static const oid_value_type_t unknown_type = { FT_BYTES, BASE_NONE, BER_CLASS_ANY, BER_TAG_ANY, 0, -1, OID_KEY_TYPE_WRONG, OID_KEY_TYPE_WRONG, 0}; static oid_info_t oid_root = { 0, NULL, OID_KIND_UNKNOWN, NULL, &unknown_type, -2, NULL, NULL, NULL}; -static emem_tree_t* oids_by_name = NULL; -static oid_info_t* add_oid(char* name, oid_kind_t kind, const oid_value_type_t* type, oid_key_t* key, guint oid_len, guint32 *subids) { +static oid_info_t* add_oid(const char* name, oid_kind_t kind, const oid_value_type_t* type, oid_key_t* key, guint oid_len, guint32 *subids) { guint i = 0; oid_info_t* c = &oid_root; + + if (!oid_root.children) { + char* debug_env = getenv("WIRESHARK_DEBUG_MIBS"); + debuglevel = debug_env ? strtoul(debug_env,NULL,10) : 0; + + oid_root.children = pe_tree_create(EMEM_TREE_TYPE_RED_BLACK,"oid_root"); + } + oid_len--; do { @@ -85,10 +89,13 @@ static oid_info_t* add_oid(char* name, oid_kind_t kind, const oid_value_type_t* if(n) { if (i == oid_len) { - if (! n->name) { - n->name = g_strdup(name); + if (n->name) { + D(0,("RENAMING %s -> %s",n->name,name)); + g_free(n->name); } + n->name = g_strdup(name); + if (! n->value_type) { n->value_type = type; } @@ -113,7 +120,7 @@ static oid_info_t* add_oid(char* name, oid_kind_t kind, const oid_value_type_t* n->kind = kind; return n; } else { - n->name = g_strdup(name); + n->name = NULL; n->value_type = NULL; n->kind = OID_KIND_UNKNOWN; } @@ -125,8 +132,37 @@ static oid_info_t* add_oid(char* name, oid_kind_t kind, const oid_value_type_t* return NULL; } -extern void oid_add(char* name, guint oid_len, guint32 *subids) { - add_oid(name,OID_KIND_UNKNOWN,&unknown_type,NULL,oid_len,subids); +void oid_add(const char* name, guint oid_len, guint32 *subids) { + if (oid_len) { + D(3,("\tOid (from subids): %s %s ",name?name:"NULL", oid_subid2string(subids,oid_len))); + add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,oid_len,subids); + } else { + D(1,("Failed to add Oid: %s (from subids)",name?name:"NULL")); + } +} + +void oid_add_from_string(const char* name, const gchar *oid_str) { + guint32* subids; + guint oid_len = oid_string2subid(oid_str, &subids); + + if (oid_len) { + D(3,("\tOid (from string): %s %s ",name?name:"NULL", oid_subid2string(subids,oid_len))); + add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,oid_len,subids); + } else { + D(1,("Failed to add Oid: %s %s ",name?name:"NULL", oid_str?oid_str:NULL)); + } +} + +extern void oid_add_from_encoded(const char* name, const guint8 *oid, gint oid_len) { + guint32* subids; + guint subids_len = oid_encoded2subid(oid, oid_len, &subids); + + if (subids_len) { + D(3,("\tOid (from encoded): %s %s ",name, oid_subid2string(subids,subids_len))); + add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,subids_len,subids); + } else { + D(1,("Failed to add Oid: %s [%d]%s ",name?name:"NULL", oid_len,bytestring_to_str(oid, oid_len, ':'))); + } } #ifdef HAVE_SMI @@ -262,6 +298,14 @@ static inline oid_kind_t smikind(SmiNode* sN, oid_key_t** key_p) { SmiNode* elNode = smiGetElementNode(sE) ; SmiType* elType = smiGetNodeType(elNode); oid_key_t* k; + guint non_implicit_size = 0; + + if (elType) { + non_implicit_size = smiGetMinSize(elType); + if (non_implicit_size == smiGetMaxSize(elType)) { + non_implicit_size = 0; + } + } typedata = get_typedata(elType); @@ -283,11 +327,11 @@ static inline oid_kind_t smikind(SmiNode* sN, oid_key_t** key_p) { if (elType) { switch (elType->basetype) { case SMI_BASETYPE_BITS: - case SMI_BASETYPE_OCTETSTRING: + case SMI_BASETYPE_OCTETSTRING: { k->key_type = OID_KEY_TYPE_BYTES; - /* XXX find out how to fetch k->num_subids */ - k->num_subids = 0; + k->num_subids = non_implicit_size; break; + } case SMI_BASETYPE_ENUM: case SMI_BASETYPE_OBJECTIDENTIFIER: case SMI_BASETYPE_INTEGER32: @@ -318,9 +362,17 @@ static inline oid_kind_t smikind(SmiNode* sN, oid_key_t** key_p) { if (sN->implied) { if (typedata) { kl->key_type = typedata->keytype_implicit; - } else { - /* XXX: what should we do ? */ - kl->key_type = kl->key_type; + } else switch (kl->key_type) { + case OID_KEY_TYPE_BYTES: + if (k->num_subids) + kl->key_type = OID_KEY_TYPE_FIXED_BYTES; + break; + case OID_KEY_TYPE_STRING: + if (k->num_subids) + kl->key_type = OID_KEY_TYPE_FIXED_STRING; + break; + default: + } } @@ -360,9 +412,6 @@ void register_mibs(void) { }; char* smi_load_error = NULL; GString* path_str; - char* debug_env = getenv("WIRESHARK_DEBUG_MIBS"); - - debuglevel = debug_env ? strtoul(debug_env,NULL,10) : 0; smi_modules_uat = uat_new("SMI Modules", sizeof(smi_module_t), @@ -404,13 +453,13 @@ void register_mibs(void) { } path_str = g_string_new(get_datafile_path("mibs")); - g_string_sprintfa(path_str,":%s",get_persconffile_path("mibs", FALSE)); + g_string_sprintfa(path_str,PATH_SEPARATOR "%s",get_persconffile_path("mibs", FALSE)); for(i=0;istr)); @@ -576,12 +625,11 @@ void register_mibs(void) { #endif -void oid_init(void) { - oid_root.children = pe_tree_create(EMEM_TREE_TYPE_RED_BLACK,"oid_root"); - oids_by_name = pe_tree_create(EMEM_TREE_TYPE_RED_BLACK,"oid_names"); - +void oids_init(void) { #ifdef HAVE_SMI register_mibs(); +#else + D(1,("libsmi disabled oid resolution not enabled")); #endif } @@ -603,10 +651,12 @@ guint check_num_oid(const char* str) { char c = '\0'; guint n = 0; - if (*r == '.') return 0; + D(8,("check_num_oid: '%s'",str)); + if (*r == '.' || *r == '\0') return 0; do { - switch(*r++) { + D(9,("\tcheck_num_oid: '%c' %d",*r,n)); + switch(*r) { case '.': n++; if (c == '.') return 0; @@ -614,12 +664,12 @@ guint check_num_oid(const char* str) { case '6' : case '7' : case '8' : case '9' : case '0' : continue; case '\0': + n++; break; default: return 0; } - c = *r; - } while(1); + } while((c = *r++)); if (c == '.') return 0; @@ -631,15 +681,20 @@ guint oid_string2subid(const char* str, guint32** subids_p) { guint32* subids; guint n = check_num_oid(str); + D(6,("oid_string2subid: str='%s'",str)); + if (!n) { *subids_p = NULL; return 0; } - + + D(7,("\toid_string2subid: n=%d",n)); + *subids_p = subids = ep_alloc_array(guint32,n); do switch(*r) { case '.': + D(7,("\toid_string2subid: subid: %p %u",subids,*subids)); subids++; continue; case '1' : case '2' : case '3' : case '4' : case '5' : @@ -651,8 +706,9 @@ guint oid_string2subid(const char* str, guint32** subids_p) { break; default: return 0; - } while(1); + } while(*r++); + D(7,("\toid_string2subid: ret %u",n)); return n; } @@ -726,18 +782,8 @@ oid_info_t* oid_get_from_string(const gchar *oid_str, guint32** subids_p, guint* const gchar *oid_resolved_from_encoded(const guint8 *oid, gint oid_len) { guint32 *subid_oid; guint subid_oid_length = oid_encoded2subid(oid, oid_len, &subid_oid); - guint matched; - guint left; - oid_info_t* curr_oid = oid_get(subid_oid_length, subid_oid, &matched, &left); - - if (matched == subid_oid_length) { - return curr_oid->name; - } else { - return ep_strdup_printf("%s.%s", - curr_oid->name, - oid_subid2string(&(subid_oid[matched]),left) ); - } + return oid_resolved(subid_oid_length, subid_oid); } @@ -836,17 +882,10 @@ char* oid2str(oid_info_t* oid, guint32* subids, guint len, guint left) { } const gchar *oid_resolved_from_string(const gchar *oid_str) { - guint32* subids; - guint num_subids = oid_string2subid(oid_str, &subids); + guint32 *subid_oid; + guint subid_oid_length = oid_string2subid(oid_str, &subid_oid); - if (num_subids) { - guint matched; - guint left; - oid_info_t* oid = oid_get(num_subids, subids, &matched, &left); - return oid2str(oid, subids, num_subids, left); - } else { - return emem_tree_lookup_string(oids_by_name, oid_str); - } + return oid_resolved(subid_oid_length, subid_oid); } extern char* oid_test_a2b(guint32 num_subids, guint32* subids); @@ -893,10 +932,29 @@ const gchar *oid_resolved(guint32 num_subids, guint32* subids) { if (left) { return ep_strdup_printf("%s.%s", - oid->name, + oid->name ? oid->name : oid_subid2string(subids,matched), oid_subid2string(&(subids[matched]),left)); } else { - return oid->name; + return oid->name ? oid->name : oid_subid2string(subids,matched); } } +extern void oid_both(guint oid_len, guint32 *subids, char** resolved_p, char** numeric_p) { + *resolved_p = (void*)oid_resolved(oid_len,subids); + *numeric_p = (void*)oid_subid2string(subids,oid_len); +} + +extern void oid_both_from_encoded(const guint8 *oid, gint oid_len, char** resolved_p, char** numeric_p) { + guint32* subids; + guint subids_len = oid_encoded2subid(oid, oid_len, &subids); + *resolved_p = (void*)oid_resolved(subids_len,subids); + *numeric_p = (void*)oid_subid2string(subids,subids_len); +} + +extern void oid_both_from_string(const gchar *oid_str, char** resolved_p, char** numeric_p) { + guint32* subids; + guint subids_len = oid_string2subid(oid_str, &subids); + *resolved_p = (void*)oid_resolved(subids_len,subids); + *numeric_p = (void*)oid_subid2string(subids,subids_len); +} + diff --git a/epan/oids.h b/epan/oids.h index 5d63b3b79e..7e9c9eafa5 100644 --- a/epan/oids.h +++ b/epan/oids.h @@ -100,7 +100,7 @@ typedef struct _oid_info_t { } oid_info_t; /* init funcion called from epan.h */ -extern void oid_init(void); +extern void oids_init(void); /* * The objects returned by all these functions are all allocated with a @@ -149,9 +149,24 @@ extern oid_info_t* oid_get_from_encoded(const guint8 *oid, gint oid_len, guint32 extern oid_info_t* oid_get_from_string(const gchar *oid_str, guint32 **subids, guint* matched, guint* left); /* these are used to add oids to the collection */ - extern void oid_add(char* name, guint oid_len, guint32 *subids); - extern void oid_add_from_encoded(char* name, const guint8 *oid, gint oid_len); - extern void oid_add_from_string(char* name, const gchar *oid_str); +extern void oid_add(const char* name, guint oid_len, guint32 *subids); +extern void oid_add_from_encoded(const char* name, const guint8 *oid, gint oid_len); +extern void oid_add_from_string(const char* name, const gchar *oid_str); +/* macros for legacy oid functions */ +/* from former oid_resolv.h */ +#define add_oid_str_name(oidstr,oidname) oid_add_from_string(oidname, oidstr) +#define add_oid_name(oid, oid_len, name) oid_add_from_encoded(name,oid,oid_len) +#define get_oid_str_name(oidstr) oid_resolved_from_string(oidstr) +#define get_oid_name(encoid, encoid_len) oid_resolved_from_encoded(encoid, encoid_len) +#define oid_resolv_enabled() (1) +#define oid_resolv_cleanup() ((void)0) + +/* from former dissectors/format_oid.h */ +#define format_oid(oid, oid_length) ((void*)oid_resolved(oid_length,oid)) +#define new_format_oid(oid, oid_length, non_decoded, decoded) oid_both(oid_length, oid, non_decoded, decoded) + +#define subid_t guint32 + #endif diff --git a/epan/proto.c b/epan/proto.c index 6af3f9efb5..e112b7fb95 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -36,7 +36,7 @@ #include "ptvcursor.h" #include "strutil.h" #include "addr_resolv.h" -#include "oid_resolv.h" +#include "oids.h" #include "plugins.h" #include "proto.h" #include "epan_dissect.h" diff --git a/plugins/asn1/asn1.c b/plugins/asn1/asn1.c index 394d14b63a..3c711f7ef8 100644 --- a/plugins/asn1/asn1.c +++ b/plugins/asn1/asn1.c @@ -66,10 +66,13 @@ #include +#define subid_t guint32 /* ugly hack to get it to compile this symbol should be suppressed! */ + #include #include #include + /* * NAME: asn1_open [API] * SYNOPSIS: void asn1_open diff --git a/plugins/asn1/asn1.h b/plugins/asn1/asn1.h index e07783fa19..880575930f 100644 --- a/plugins/asn1/asn1.h +++ b/plugins/asn1/asn1.h @@ -125,8 +125,6 @@ struct _ASN1_SCK int offset; /* Current offset in tvbuff */ }; -#include - extern void asn1_open (ASN1_SCK *asn1, tvbuff_t *tvb, int offset); extern void asn1_close (ASN1_SCK *asn1, int *offset); extern int asn1_octet_decode (ASN1_SCK *asn1, guchar *ch); diff --git a/plugins/asn1/packet-asn1.c b/plugins/asn1/packet-asn1.c index aebb63eda9..85fed297e8 100644 --- a/plugins/asn1/packet-asn1.c +++ b/plugins/asn1/packet-asn1.c @@ -82,6 +82,7 @@ #include #include #include +#include #include #include -- cgit v1.2.3