From Holger Hans Peter Freyther:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 5 Feb 2012 09:09:51 +0000 (09:09 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 5 Feb 2012 09:09:51 +0000 (09:09 +0000)
Begin new dissector for DVB/ETSI IP Data Cast (IPDC) Electronic Service Guide (ESG) dissector.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4178

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@40849 f5534014-38df-0310-8fa8-9805f1628bb7

AUTHORS
epan/CMakeLists.txt
epan/dissectors/Makefile.common
epan/dissectors/packet-dvb-ipdc.c [new file with mode: 0644]
epan/dissectors/packet-rmt-alc.c

diff --git a/AUTHORS b/AUTHORS
index e0eeca2..7a5697a 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -3383,6 +3383,10 @@ Gaurav Tungatkar <gauravstt [AT] gmail.com> {
        and Extension for Interface and Next-Hop
 }
 
+Holger Hans Peter Freyther <zecke [AT] selfish.org> {
+       DVB-H IPDC ESG
+}
+
 and by:
 
 Pavel Roskin            <proski [AT] gnu.org>
index f38c49c..e910e44 100644 (file)
@@ -528,6 +528,7 @@ set(DISSECTOR_SRC
        dissectors/packet-dtp.c
        dissectors/packet-dtpt.c
        dissectors/packet-dua.c
+       dissectors/packet-dvb-ipdc.c
        dissectors/packet-dvbci.c
        dissectors/packet-dvmrp.c
        dissectors/packet-e100.c
index 3cb199a..65993eb 100644 (file)
@@ -446,6 +446,7 @@ DISSECTOR_SRC = \
        packet-dtp.c            \
        packet-dtpt.c           \
        packet-dua.c            \
+       packet-dvb-ipdc.c       \
        packet-dvbci.c          \
        packet-dvmrp.c          \
        packet-e100.c           \
diff --git a/epan/dissectors/packet-dvb-ipdc.c b/epan/dissectors/packet-dvb-ipdc.c
new file mode 100644 (file)
index 0000000..43b4747
--- /dev/null
@@ -0,0 +1,130 @@
+/* packet-dvb-ipdc.c
+ * Routines for ETSI IP Datacast ESG Bootstrap parsing
+ * Copyright 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+
+#include <epan/packet.h>
+
+
+/* Initialize the protocol and registered fields */
+static int proto_ipdc = -1;
+
+static int hf_ipdc_esg_bootstrap_xml = -1;
+
+/* Initialize the subtree pointers */
+static gint ett_ipdc = -1;
+
+
+enum {
+       SUB_FLUTE,
+       SUB_MAX,
+};
+
+static dissector_handle_t sub_handles[SUB_MAX];
+
+#define UDP_PORT_IPDC_ESG_BOOTSTRAP 9214
+
+
+/* Code to actually dissect the packets */
+static void
+dissect_ipdc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+       tvbuff_t *next_tvb;
+       guint16 len;
+
+       col_set_str(pinfo->cinfo, COL_PROTOCOL, "IPDC");
+       col_clear(pinfo->cinfo, COL_INFO);
+
+       /* call into flute */
+       len = tvb_reported_length_remaining(tvb, 0);
+
+       if (tree) {
+               proto_item *ti;
+               proto_tree *esg_tree;
+
+               ti = proto_tree_add_protocol_format(tree, proto_ipdc,
+                               tvb, 0, len,
+                               "ESG Bootstrap");
+               esg_tree = proto_item_add_subtree(ti, ett_ipdc);
+       }
+
+
+       next_tvb = tvb_new_subset(tvb, 0, len, len);
+       call_dissector(sub_handles[SUB_FLUTE], next_tvb, pinfo, tree);
+}
+
+void
+proto_register_dvb_ipdc(void)
+{
+       static hf_register_info hf[] = {
+               {&hf_ipdc_esg_bootstrap_xml,
+                {"ESG Provider Discovery", "ipdc.bootstrap",
+                 FT_STRING, BASE_NONE, NULL, 0x0,
+                 "List of ESG Providers", HFILL}
+               },
+       };
+
+       static gint *ett[] = {
+               &ett_ipdc,
+       };
+
+       proto_ipdc =
+           proto_register_protocol("ETSI IPDC Bootstrap",
+                                   "ESG Bootstrap", "dvb_ipdc");
+       proto_register_field_array(proto_ipdc, hf, array_length(hf));
+       proto_register_subtree_array(ett, array_length(ett));
+
+       register_dissector("dvb_ipdc", dissect_ipdc, proto_ipdc);
+}
+
+void
+proto_reg_handoff_dvb_ipdc(void)
+{
+       dissector_handle_t ipdc_handle;
+
+       sub_handles[SUB_FLUTE] = find_dissector("alc");
+
+       ipdc_handle = create_dissector_handle(dissect_ipdc, proto_ipdc);
+       dissector_add_uint("udp.port", UDP_PORT_IPDC_ESG_BOOTSTRAP, ipdc_handle);
+
+}
+
+/*
+ * Editor modelines  -  http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */
+
index dea9229..09b44e0 100644 (file)
@@ -284,4 +284,5 @@ void proto_register_alc(void)
        module = prefs_register_protocol(proto, proto_reg_handoff_alc);
        alc_prefs_register(&preferences, module);
 
+       register_dissector("alc", dissect_alc, proto);
 }