Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-bugs: [Wireshark-bugs] [Bug 8311] New: Dissection of Q.763 ISUP Generic Notification

Date: Mon, 11 Feb 2013 09:57:41 +0000
Bug ID 8311
Summary Dissection of Q.763 ISUP Generic Notification
Classification Unclassified
Product Wireshark
Version SVN
Hardware All
OS All
Status UNCONFIRMED
Severity Enhancement
Priority Low
Component Dissection engine (libwireshark)
Assignee [email protected]
Reporter [email protected]

Created attachment 9969 [details]
Test Case - 1

Build Information:
wireshark 1.9.0 (SVN Rev 47627 from /trunk)

Copyright 1998-2013 Gerald Combs <[email protected]> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (32-bit) with GTK+ 2.22.0, with Cairo 1.10.0, with Pango 1.28.2, with
GLib 2.26.1, with libpcap, with libz 1.2.3.4, without POSIX capabilities,
without libnl, without SMI, without c-ares, without ADNS, without Lua, without
Python, without GnuTLS, without Gcrypt, without Kerberos, without GeoIP,
without
PortAudio, with AirPcap.

Running on Linux 2.6.35-22-generic, with locale en_IN, with libpcap version
1.1.1, with libz 1.2.3.4, without AirPcap.

Built using gcc 4.4.5.
--
Is there any reason why the dissection for ISUP Generic notification hasn't
been implemented? The cause codes are actually present (as comments) in the
packet-isup.c.

Currently the message "Refer Q.763 for detailed documentation" is being
displayed.

Attached are some traces for the case.

The following changes in packet-isup.c is correcting the dissection:

--- packet-isup.c_original      2013-02-11 11:13:52.504090818 +0530
+++ packet-isup.c       2013-02-11 15:09:15.526544577 +0530
@@ -3730,6 +3730,31 @@
 };
 static value_string_ext ansi_isup_cause_code_vals_ext =
VALUE_STRING_EXT_INIT(ansi_isup_cause_code_vals);

+static const value_string q763_generic_notification_indicator_vals[] = {
+{ 0x0 , "User Suspended" },
+{ 0x1 , "User Resumed" },
+{ 0x2 , "Bearer service change" },
+{ 0x3 , "Discriminator for extension to ASN.1 encoded component (used in
DSS1)" },
+{ 0x4 , "Call completion delay" },
+{ 0x42 , "Conference established" },
+{ 0x43 , "Conference disconnected" },
+{ 0x44 , "Other party added" },
+{ 0x45 , "Isolated" },
+{ 0x46 , "Reattached" },
+{ 0x47 , "Other party isolated" },
+{ 0x48 , "Other party reattached" },
+{ 0x49 , "Other party split" },
+{ 0x4A , "Other party disconnected" },
+{ 0x4B , "Conference floating" },
+{ 0x60 , "Call is a waiting call" },
+{ 0x68 , "Diversion activated (used in DSS1)" },
+{ 0x69 , "Call transfer, alerting" },
+{ 0x6A , "Call transfer, active" },
+{ 0x79 , "Remote hold" },
+{ 0x7A , "Remote retrieval" },
+{ 0x7B , "Call is diverting" },
+};
+
 static const value_string ansi_isup_coding_standard_vals[] = {
   { 0, "CCITT Standard" },
   { 1, "Reserved for other international standards" },
@@ -5752,11 +5777,28 @@
 dissect_isup_generic_notification_indicator_parameter(tvbuff_t *parameter_tvb,
proto_tree *parameter_tree, proto_item *parameter_item)
 {
   guint8 indicators;
-
+  guint8 actual_indicator;
+  int offset = 0;
+  guint length = tvb_reported_length(parameter_tvb);
+
   indicators = tvb_get_guint8(parameter_tvb, 0);
+  actual_indicator = indicators & 0x7F;
   proto_tree_add_text(parameter_tree, parameter_tvb, 0,
GENERIC_NOTIFICATION_IND_LENGTH,
-                      "Generic notification indicator: 0x%x (refer to
3.25/Q.763 for detailed decoding)", indicators);
-  proto_item_set_text(parameter_item,"Generic notification indicator: 0x%x",
indicators);
+                      "Generic notification indicator:
%s",val_to_str(actual_indicator,q763_generic_notification_indicator_vals,"Reserved
(0x%X)"));
+
+   proto_item_set_text(parameter_item,"Generic notification indicator: 0x%x",
indicators);
+
+   length--;
+   offset++;
+  if (length==0)
+   {
+     return;
+   }
+   proto_tree_add_text(parameter_tree, parameter_tvb, offset,
+                          length, "Diagnostic: %s",
+                          tvb_bytes_to_str(parameter_tvb, offset, length));
+      return;
+
 }
 /* ------------------------------------------------------------------


You are receiving this mail because:
  • You are watching all bug changes.