aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packet-spnego.c42
1 files changed, 36 insertions, 6 deletions
diff --git a/packet-spnego.c b/packet-spnego.c
index 07aba0de4d..4579854b4e 100644
--- a/packet-spnego.c
+++ b/packet-spnego.c
@@ -4,7 +4,7 @@
* Copyright 2002, Tim Potter <tpot@samba.org>
* Copyright 2002, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-spnego.c,v 1.24 2002/09/04 05:46:02 sharpe Exp $
+ * $Id: packet-spnego.c,v 1.25 2002/09/04 06:54:45 sharpe Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -64,6 +64,7 @@ static int hf_spnego_mechtoken = -1;
static int hf_spnego_negtokentarg_negresult = -1;
static int hf_spnego_mechlistmic = -1;
static int hf_spnego_responsetoken = -1;
+static int hf_spnego_reqflags = -1;
static gint ett_spnego = -1;
static gint ett_spnego_negtokeninit = -1;
@@ -73,10 +74,6 @@ static gint ett_spnego_mechtoken = -1;
static gint ett_spnego_mechlistmic = -1;
static gint ett_spnego_responsetoken = -1;
-/*
- * XXX: Fixme. This thould be made global ...
- */
-
static const value_string spnego_negResult_vals[] = {
{ SPNEGO_negResult_accept_completed, "Accept Completed" },
{ SPNEGO_negResult_accept_incomplete, "Accept Incomplete" },
@@ -185,9 +182,37 @@ static int
dissect_spnego_reqFlags(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree, ASN1_SCK *hnd)
{
+ gboolean def;
+ guint len1, cls, con, tag;
+ int ret;
+
+ ret = asn1_header_decode(hnd, &cls, &con, &tag, &def, &len1);
+
+ if (ret != ASN1_ERR_NOERROR) {
+ dissect_parse_error(tvb, offset, pinfo, tree,
+ "SPNEGO reqFlags header", ret);
+ goto done;
+ }
+ if (!(cls == ASN1_UNI && con == ASN1_PRI && tag == ASN1_BTS)) {
+ proto_tree_add_text(
+ tree, tvb, offset, 0,
+ "Unknown header (cls=%d, con=%d, tag=%d)",
+ cls, con, tag);
+ goto done;
+ }
- return offset;
+ /* We must have a Bit String ... insert it */
+
+ offset = hnd->offset;
+
+ proto_tree_add_item(tree, hf_spnego_reqflags, tvb, offset, len1,
+ FALSE);
+
+ hnd->offset += len1;
+
+ done:
+ return offset + len1;
}
@@ -399,6 +424,8 @@ dissect_spnego_negTokenInit(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
case SPNEGO_reqFlags:
+ offset = dissect_spnego_reqFlags(tvb, offset, pinfo, subtree, hnd);
+
break;
case SPNEGO_mechToken:
@@ -855,6 +882,9 @@ proto_register_spnego(void)
{ &hf_spnego_negtokentarg_negresult,
{ "negResult", "spnego.negtokeninit.negresult", FT_UINT16,
BASE_HEX, VALS(spnego_negResult_vals), 0, "negResult", HFILL}},
+ { &hf_spnego_reqflags,
+ { "reqFlags", "spnego.negtokeninit.reqflags", FT_BYTES,
+ BASE_HEX, NULL, 0, "reqFlags", HFILL}},
};
static gint *ett[] = {