* Routines for SSCOP (Q.2110, Q.SAAL) frame disassembly
* Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-sscop.c,v 1.14 2001/05/27 04:50:51 guy Exp $
+ * $Id: packet-sscop.c,v 1.18 2002/01/21 07:36:43 guy Exp $
*
* Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@zing.org>
+ * By Gerald Combs <gerald@ethereal.com>
* Copyright 1998
*
*
#include <stdio.h>
#include <glib.h>
#include <string.h>
-#include "packet.h"
-#include "packet-q2931.h"
+#include <epan/packet.h>
static int proto_sscop = -1;
static gint ett_sscop = -1;
+static dissector_handle_t q2931_handle;
+static dissector_handle_t data_handle;
+
/*
* See
*
reported_length = tvb_reported_length(tvb); /* frame length */
sscop_pdu_type = tvb_get_guint8(tvb, SSCOP_PDU_TYPE);
pdu_type = sscop_pdu_type & SSCOP_TYPE_MASK;
- if (check_col(pinfo->fd, COL_PROTOCOL))
- col_set_str(pinfo->fd, COL_PROTOCOL, "SSCOP");
- if (check_col(pinfo->fd, COL_INFO))
- col_add_str(pinfo->fd, COL_INFO, val_to_str(pdu_type, sscop_type_vals,
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "SSCOP");
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str(pdu_type, sscop_type_vals,
"Unknown PDU type (0x%02x)"));
/*
*/
next_tvb = tvb_new_subset(tvb, 0, reported_length, reported_length);
if (pdu_type == SSCOP_SD)
- dissect_q2931(next_tvb, pinfo, tree);
+ call_dissector(q2931_handle, next_tvb, pinfo, tree);
else
- dissect_data(next_tvb, 0, pinfo, tree);
+ call_dissector(data_handle,next_tvb, pinfo, tree);
}
break;
}
void
proto_register_sscop(void)
{
- static gint *ett[] = {
- &ett_sscop,
- };
- proto_sscop = proto_register_protocol("SSCOP", "SSCOP", "sscop");
- proto_register_subtree_array(ett, array_length(ett));
- register_dissector("sscop", dissect_sscop, proto_sscop);
+ static gint *ett[] = {
+ &ett_sscop,
+ };
+ proto_sscop = proto_register_protocol("SSCOP", "SSCOP", "sscop");
+ proto_register_subtree_array(ett, array_length(ett));
+ register_dissector("sscop", dissect_sscop, proto_sscop);
+}
+
+void
+proto_reg_handoff_sscop(void)
+{
+ /*
+ * Get handle for the Q.2931 dissector.
+ */
+ q2931_handle = find_dissector("q2931");
+ data_handle = find_dissector("data");
}