aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xncp2222.py233
-rw-r--r--packet-ncp2222.inc280
2 files changed, 429 insertions, 84 deletions
diff --git a/ncp2222.py b/ncp2222.py
index 60d7e07894..506f6c6096 100755
--- a/ncp2222.py
+++ b/ncp2222.py
@@ -25,7 +25,7 @@ http://developer.novell.com/ndk/doc/ncp/
for a badly-formatted HTML version of the same PDF.
-$Id: ncp2222.py,v 1.53 2003/02/11 08:47:22 guy Exp $
+$Id: ncp2222.py,v 1.54 2003/02/19 21:47:45 guy Exp $
Copyright (c) 2000-2002 by Gilbert Ramirez <gram@alumni.rice.edu>
@@ -5217,7 +5217,7 @@ def define_errors():
errors[0x9804] = "Disk Map Error"
errors[0x9900] = "The file server has run out of directory space on the affected volume"
- errors[0x9a00] = "The request attempted to rename the affected file to another volume"
+ errors[0x9a00] = "Invalid request to rename the affected file to another volume"
errors[0x9b00] = "DirHandle is not associated with a valid directory path"
errors[0x9b01] = "A resulting directory handle is not associated with a valid directory path"
@@ -5250,6 +5250,7 @@ def define_errors():
errors[0xa800] = "Invalid Support Module ID"
errors[0xa801] = "No Auditing Access Rights"
+ errors[0xa802] = "No Access Rights"
errors[0xbe00] = "Invalid Data Stream"
errors[0xbf00] = "Requests for this name space are not valid on this volume"
@@ -5301,6 +5302,7 @@ def define_errors():
errors[0xd501] = "No queue job"
errors[0xd502] = "The job associated with JobNumber does not exist in this queue"
errors[0xd503] = "Inspect Failure"
+ errors[0xd504] = "Unknown NCP Extension Number"
errors[0xd600] = "The file server does not allow unencrypted passwords"
errors[0xd601] = "No job right"
@@ -5399,8 +5401,9 @@ def define_errors():
errors[0xfb06] = "Unknown Request"
errors[0xfb07] = "Invalid Subfunction Request"
errors[0xfb08] = "Attempt to use an invalid parameter (drive number, path, or flag value) during a set drive path call"
- errors[0xfb09] = "NMAS not installed on this server, NCP NOT Supported"
+ errors[0xfb09] = "NMAS not running on this server, NCP NOT Supported"
errors[0xfb0a] = "Station Not Logged In"
+ errors[0xfb0b] = "Secret Store not running on this server, NCP Not supported"
errors[0xfc00] = "The message queue cannot accept another message"
errors[0xfc01] = "The trustee associated with ObjectId does not exist"
@@ -5518,6 +5521,7 @@ def produce_code():
#include <epan/conversation.h>
#include "ptvcursor.h"
#include "packet-ncp-int.h"
+#include <epan/strutil.h>
/* Function declarations for functions used in proto_register_ncp2222() */
static void ncp_init_protocol(void);
@@ -5964,6 +5968,24 @@ static int hf_nds_os_ver = -1;
static int hf_nds_lic_flags = -1;
static int hf_nds_ds_time = -1;
static int hf_nds_ping_version = -1;
+static int hf_nds_search_scope = -1;
+static int hf_nds_num_objects = -1;
+static int hf_bit1siflags = -1;
+static int hf_bit2siflags = -1;
+static int hf_bit3siflags = -1;
+static int hf_bit4siflags = -1;
+static int hf_bit5siflags = -1;
+static int hf_bit6siflags = -1;
+static int hf_bit7siflags = -1;
+static int hf_bit8siflags = -1;
+static int hf_bit9siflags = -1;
+static int hf_bit10siflags = -1;
+static int hf_bit11siflags = -1;
+static int hf_bit12siflags = -1;
+static int hf_bit13siflags = -1;
+static int hf_bit14siflags = -1;
+static int hf_bit15siflags = -1;
+static int hf_bit16siflags = -1;
"""
@@ -7617,8 +7639,63 @@ proto_register_ncp2222(void)
{ &hf_nds_ping_version,
{ "Ping Version", "ncp.nds_ping_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }},
+ { &hf_nds_search_scope,
+ { "Search Scope", "ncp.nds_search_scope", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }},
+
+ { &hf_nds_num_objects,
+ { "Number of Objects to Search", "ncp.nds_num_objects", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }},
+
+
+ { &hf_bit1siflags,
+ { "Names", "ncp.bit1siflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }},
+
+ { &hf_bit2siflags,
+ { "Names and Values", "ncp.bit2siflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }},
+
+ { &hf_bit3siflags,
+ { "Effective Privileges", "ncp.bit3siflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }},
+
+ { &hf_bit4siflags,
+ { "Value Info", "ncp.bit4siflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }},
+
+ { &hf_bit5siflags,
+ { "Abbreviated Value", "ncp.bit5siflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }},
+
+ { &hf_bit6siflags,
+ { "Not Defined", "ncp.bit6siflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }},
+
+ { &hf_bit7siflags,
+ { "Not Defined", "ncp.bit7siflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }},
+
+ { &hf_bit8siflags,
+ { "Not Defined", "ncp.bit8siflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }},
+
+ { &hf_bit9siflags,
+ { "Expanded Class", "ncp.bit9siflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }},
+
+ { &hf_bit10siflags,
+ { "Not Defined", "ncp.bit10siflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }},
+
+ { &hf_bit11siflags,
+ { "Not Defined", "ncp.bit11siflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }},
+
+ { &hf_bit12siflags,
+ { "Not Defined", "ncp.bit12siflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }},
+
+ { &hf_bit13siflags,
+ { "Not Defined", "ncp.bit13siflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }},
+
+ { &hf_bit14siflags,
+ { "Not Defined", "ncp.bit14siflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }},
+
+ { &hf_bit15siflags,
+ { "Not Defined", "ncp.bit15siflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }},
+
+ { &hf_bit16siflags,
+ { "Not Defined", "ncp.bit16siflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }},
+
+
-
"""
# Print the registration code for the hf variables
for var in sorted_vars:
@@ -7990,7 +8067,7 @@ def define_ncp2222():
pkt = NCP(0x1502, "Disable Broadcasts", 'message')
pkt.Request(10)
pkt.Reply(8)
- pkt.CompletionCodes([0x0000])
+ pkt.CompletionCodes([0x0000, 0xfb0a])
# 2222/1503, 21/03
pkt = NCP(0x1503, "Enable Broadcasts", 'message')
@@ -9425,7 +9502,7 @@ def define_ncp2222():
rec( -1, (1,255), Path ),
], info_str=(QueueName, "Create Queue: %s", ", %s"))
pkt.Reply(12, [
- rec( 8, 4, QueueID, BE ),
+ rec( 8, 4, QueueID ),
])
pkt.CompletionCodes([0x0000, 0x9600, 0x9900, 0xd000, 0xd100,
0xd200, 0xd300, 0xd400, 0xd500, 0xd601,
@@ -9434,7 +9511,7 @@ def define_ncp2222():
# 2222/1765, 23/101
pkt = NCP(0x1765, "Destroy Queue", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
@@ -9443,10 +9520,10 @@ def define_ncp2222():
# 2222/1766, 23/102
pkt = NCP(0x1766, "Read Queue Current Status", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(20, [
- rec( 8, 4, QueueID, BE ),
+ rec( 8, 4, QueueID ),
rec( 12, 1, QueueStatus ),
rec( 13, 1, CurrentEntries ),
rec( 14, 1, CurrentServers, var="x" ),
@@ -9459,7 +9536,7 @@ def define_ncp2222():
# 2222/1767, 23/103
pkt = NCP(0x1767, "Set Queue Current Status", 'qms')
pkt.Request(15, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 1, QueueStatus ),
])
pkt.Reply(8)
@@ -9470,7 +9547,7 @@ def define_ncp2222():
# 2222/1768, 23/104
pkt = NCP(0x1768, "Create Queue Job And File", 'qms')
pkt.Request(264, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 250, JobStruct ),
])
pkt.Reply(62, [
@@ -9497,7 +9574,7 @@ def define_ncp2222():
# 2222/1769, 23/105
pkt = NCP(0x1769, "Close File And Start Queue Job", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(8)
@@ -9507,7 +9584,7 @@ def define_ncp2222():
# 2222/176A, 23/106
pkt = NCP(0x176A, "Remove Job From Queue", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(8)
@@ -9517,7 +9594,7 @@ def define_ncp2222():
# 2222/176B, 23/107
pkt = NCP(0x176B, "Get Queue Job List", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(12, [
rec( 8, 2, JobCount, BE, var="x" ),
@@ -9529,7 +9606,7 @@ def define_ncp2222():
# 2222/176C, 23/108
pkt = NCP(0x176C, "Read Queue Job Entry", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(258, [
@@ -9550,7 +9627,7 @@ def define_ncp2222():
# 2222/176E, 23/110
pkt = NCP(0x176E, "Change Queue Job Position", 'qms')
pkt.Request(17, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
rec( 16, 1, NewPosition ),
])
@@ -9560,7 +9637,7 @@ def define_ncp2222():
# 2222/176F, 23/111
pkt = NCP(0x176F, "Attach Queue Server To Queue", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
@@ -9570,7 +9647,7 @@ def define_ncp2222():
# 2222/1770, 23/112
pkt = NCP(0x1770, "Detach Queue Server From Queue", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
@@ -9579,7 +9656,7 @@ def define_ncp2222():
# 2222/1771, 23/113
pkt = NCP(0x1771, "Service Queue Job", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, ServiceType, BE ),
])
pkt.Reply(62, [
@@ -9605,7 +9682,7 @@ def define_ncp2222():
# 2222/1772, 23/114
pkt = NCP(0x1772, "Finish Servicing Queue Job", 'qms')
pkt.Request(20, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
rec( 16, 4, ChargeInformation, BE ),
])
@@ -9616,7 +9693,7 @@ def define_ncp2222():
# 2222/1773, 23/115
pkt = NCP(0x1773, "Abort Servicing Queue Job", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(8)
@@ -9626,7 +9703,7 @@ def define_ncp2222():
# 2222/1774, 23/116
pkt = NCP(0x1774, "Change To Client Rights", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(8)
@@ -9643,7 +9720,7 @@ def define_ncp2222():
# 2222/1776, 23/118
pkt = NCP(0x1776, "Read Queue Server Current Status", 'qms')
pkt.Request(19, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, ServerID, BE ),
rec( 18, 1, ServerStation ),
])
@@ -9656,7 +9733,7 @@ def define_ncp2222():
# 2222/1777, 23/119
pkt = NCP(0x1777, "Set Queue Server Current Status", 'qms')
pkt.Request(78, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 64, ServerStatusRecord ),
])
pkt.Reply(8)
@@ -9666,11 +9743,11 @@ def define_ncp2222():
# 2222/1778, 23/120
pkt = NCP(0x1778, "Get Queue Job File Size", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, JobNumber, BE ),
])
pkt.Reply(20, [
- rec( 8, 4, QueueID, BE ),
+ rec( 8, 4, QueueID ),
rec( 12, 4, JobNumberLong ),
rec( 16, 4, FileSize, BE ),
])
@@ -9680,7 +9757,7 @@ def define_ncp2222():
# 2222/1779, 23/121
pkt = NCP(0x1779, "Create Queue Job And File", 'qms')
pkt.Request(264, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 250, JobStruct ),
])
pkt.Reply(94, [
@@ -9692,7 +9769,7 @@ def define_ncp2222():
# 2222/177A, 23/122
pkt = NCP(0x177A, "Read Queue Job Entry", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(258, [
@@ -9704,7 +9781,7 @@ def define_ncp2222():
# 2222/177B, 23/123
pkt = NCP(0x177B, "Change Queue Job Entry", 'qms')
pkt.Request(264, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 250, JobStruct ),
])
pkt.Reply(8)
@@ -9714,7 +9791,7 @@ def define_ncp2222():
# 2222/177C, 23/124
pkt = NCP(0x177C, "Service Queue Job", 'qms')
pkt.Request(16, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 2, ServiceType ),
])
pkt.Reply(94, [
@@ -9726,10 +9803,10 @@ def define_ncp2222():
# 2222/177D, 23/125
pkt = NCP(0x177D, "Read Queue Current Status", 'qms')
pkt.Request(14, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
])
pkt.Reply(32, [
- rec( 8, 4, QueueID, BE ),
+ rec( 8, 4, QueueID ),
rec( 12, 1, QueueStatus ),
rec( 13, 3, Reserved3 ),
rec( 16, 4, CurrentEntries ),
@@ -9743,7 +9820,7 @@ def define_ncp2222():
# 2222/177E, 23/126
pkt = NCP(0x177E, "Set Queue Current Status", 'qms')
pkt.Request(15, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 1, QueueStatus ),
])
pkt.Reply(8)
@@ -9753,7 +9830,7 @@ def define_ncp2222():
# 2222/177F, 23/127
pkt = NCP(0x177F, "Close File And Start Queue Job", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(8)
@@ -9763,7 +9840,7 @@ def define_ncp2222():
# 2222/1780, 23/128
pkt = NCP(0x1780, "Remove Job From Queue", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(8)
@@ -9773,7 +9850,7 @@ def define_ncp2222():
# 2222/1781, 23/129
pkt = NCP(0x1781, "Get Queue Job List", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(20, [
@@ -9787,7 +9864,7 @@ def define_ncp2222():
# 2222/1782, 23/130
pkt = NCP(0x1782, "Change Job Priority", 'qms')
pkt.Request(22, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
rec( 18, 4, Priority ),
])
@@ -9798,7 +9875,7 @@ def define_ncp2222():
# 2222/1783, 23/131
pkt = NCP(0x1783, "Finish Servicing Queue Job", 'qms')
pkt.Request(22, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
rec( 18, 4, ChargeInformation ),
])
@@ -9809,7 +9886,7 @@ def define_ncp2222():
# 2222/1784, 23/132
pkt = NCP(0x1784, "Abort Servicing Queue Job", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(8)
@@ -9819,7 +9896,7 @@ def define_ncp2222():
# 2222/1785, 23/133
pkt = NCP(0x1785, "Change To Client Rights", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(8)
@@ -9829,7 +9906,7 @@ def define_ncp2222():
# 2222/1786, 23/134
pkt = NCP(0x1786, "Read Queue Server Current Status", 'qms')
pkt.Request(22, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, ServerID, BE ),
rec( 18, 4, ServerStation ),
])
@@ -9842,11 +9919,11 @@ def define_ncp2222():
# 2222/1787, 23/135
pkt = NCP(0x1787, "Get Queue Job File Size", 'qms')
pkt.Request(18, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
])
pkt.Reply(20, [
- rec( 8, 4, QueueID, BE ),
+ rec( 8, 4, QueueID ),
rec( 12, 4, JobNumberLong ),
rec( 16, 4, FileSize, BE ),
])
@@ -9856,9 +9933,9 @@ def define_ncp2222():
# 2222/1788, 23/136
pkt = NCP(0x1788, "Move Queue Job From Src Q to Dst Q", 'qms')
pkt.Request(22, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, JobNumberLong ),
- rec( 18, 4, DstQueueID, BE ),
+ rec( 18, 4, DstQueueID ),
])
pkt.Reply(12, [
rec( 8, 4, JobNumberLong ),
@@ -9867,7 +9944,7 @@ def define_ncp2222():
# 2222/1789, 23/137
pkt = NCP(0x1789, "Get Queue Jobs From Form List", 'qms')
pkt.Request(24, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, QueueStartPosition ),
rec( 18, 4, FormTypeCnt, var="x" ),
rec( 22, 2, FormType, repeat="x" ),
@@ -9881,7 +9958,7 @@ def define_ncp2222():
# 2222/178A, 23/138
pkt = NCP(0x178A, "Service Queue Job By Form List", 'qms')
pkt.Request(24, [
- rec( 10, 4, QueueID, BE ),
+ rec( 10, 4, QueueID ),
rec( 14, 4, QueueStartPosition ),
rec( 18, 4, FormTypeCnt, var= "x" ),
rec( 22, 2, FormType, repeat="x" ),
@@ -11223,13 +11300,13 @@ def define_ncp2222():
pkt.Reply(8)
# The following value is Unicode
#[ 8, (1, 255), ReplyBuffer ],
- pkt.CompletionCodes([0x0000, 0xee00, 0xfe00])
+ pkt.CompletionCodes([0x0000, 0xd504, 0xee00, 0xfe00])
# 2222/3B, 59
pkt = NCP(0x3B, "Commit File", 'file', has_length=0 )
pkt.Request(14, [
rec( 7, 1, Reserved ),
rec( 8, 6, FileHandle ),
- ])
+ ], info_str=(FileHandle, "Commit File - 0x%s", ", %s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8800, 0x9804, 0xff00])
# 2222/3E, 62
@@ -11318,7 +11395,7 @@ def define_ncp2222():
pkt.Request(14, [
rec( 7, 1, Reserved ),
rec( 8, 6, FileHandle ),
- ])
+ ], info_str=(FileHandle, "Close File - 0x%s", ", %s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8800, 0xff1a])
# 2222/43, 67
@@ -11383,9 +11460,10 @@ def define_ncp2222():
0xff16])
# 2222/47, 71
pkt = NCP(0x47, "Get Current Size of File", 'file')
- pkt.Request(13, [
- rec( 7, 6, FileHandle ),
- ])
+ pkt.Request(14, [
+ rec(7, 1, Reserved ),
+ rec( 8, 6, FileHandle ),
+ ], info_str=(FileHandle, "Get Current Size of File - 0x%s", ", %s"))
pkt.Reply(12, [
rec( 8, 4, FileSize, BE ),
])
@@ -11396,12 +11474,12 @@ def define_ncp2222():
rec( 7, 1, Reserved ),
rec( 8, 6, FileHandle ),
rec( 14, 4, FileOffset, BE ),
- rec( 18, 2, MaxBytes, BE ),
- ])
+ rec( 18, 2, MaxBytes, BE ),
+ ], info_str=(FileHandle, "Read From File - 0x%s", ", %s"))
pkt.Reply(10, [
rec( 8, 2, NumBytes, BE ),
])
- pkt.CompletionCodes([0x0000, 0x8300, 0x8800, 0x9300, 0xff00])
+ pkt.CompletionCodes([0x0000, 0x8300, 0x8800, 0x9300, 0xff1b])
# 2222/49, 73
pkt = NCP(0x49, "Write to a File", 'file')
pkt.Request(20, [
@@ -11409,7 +11487,7 @@ def define_ncp2222():
rec( 8, 6, FileHandle ),
rec( 14, 4, FileOffset, BE ),
rec( 18, 2, MaxBytes, BE ),
- ])
+ ], info_str=(FileHandle, "Write to a File - 0x%s", ", %s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x0104, 0x8300, 0x8800, 0x9400, 0x9500, 0xa201, 0xff1b])
# 2222/4A, 74
@@ -11434,7 +11512,7 @@ def define_ncp2222():
rec( 8, 6, FileHandle ),
rec( 14, 2, FileTime, BE ),
rec( 16, 2, FileDate, BE ),
- ])
+ ], info_str=(FileHandle, "Set Time and Date Stamp for File - 0x%s", ", %s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8800, 0x9600])
# 2222/4C, 76
@@ -11524,7 +11602,7 @@ def define_ncp2222():
pkt.Request(17, [
rec( 7, 6, FileHandle ),
rec( 13, 4, FileOffset ),
- ])
+ ], info_str=(FileHandle, "Get Sparse File Data Block Bitmap for File - 0x%s", ", %s"))
pkt.Reply(528, [
rec( 8, 4, AllocationBlockSize ),
rec( 12, 4, Reserved4 ),
@@ -11684,7 +11762,7 @@ def define_ncp2222():
pkt.ReqCondSizeVariable()
pkt.CompletionCodes([0x0000, 0x8001, 0x8101, 0x8401, 0x8501,
0x8701, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9600,
- 0x9804, 0x9b03, 0x9c03, 0xa500, 0xbf00, 0xfd00, 0xff16])
+ 0x9804, 0x9b03, 0x9c03, 0xa500, 0xa802, 0xbf00, 0xfd00, 0xff16])
# 2222/5702, 87/02
pkt = NCP(0x5702, "Initialize Search", 'file', has_length=0)
pkt.Request( (18,272), [
@@ -11790,7 +11868,7 @@ def define_ncp2222():
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
0x8701, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9200, 0x9600,
- 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
+ 0x9804, 0x9a00, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
# 2222/5705, 87/05
pkt = NCP(0x5705, "Scan File or Subdirectory for Trustees", 'file', has_length=0)
pkt.Request((24, 278), [
@@ -11878,7 +11956,7 @@ def define_ncp2222():
pkt.ReqCondSizeVariable()
pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
0x8701, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9600,
- 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
+ 0x9804, 0x9b03, 0x9c03, 0xa802, 0xbf00, 0xfd00, 0xff16])
# 2222/5707, 87/07
pkt = NCP(0x5707, "Modify File or Subdirectory DOS Information", 'file', has_length=0)
pkt.Request((62,316), [
@@ -11911,7 +11989,7 @@ def define_ncp2222():
], info_str=(Path, "Modify DOS Information for: %s", "/%s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
- 0x8701, 0x8c01, 0x8d00, 0x8f00, 0x9001, 0x9600,
+ 0x8701, 0x8c01, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
# 2222/5708, 87/08
pkt = NCP(0x5708, "Delete a File or Subdirectory", 'file', has_length=0)
@@ -11927,7 +12005,7 @@ def define_ncp2222():
], info_str=(Path, "Delete: %s", "/%s"))
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
- 0x8701, 0x8a00, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
+ 0x8701, 0x8900, 0x8a00, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
# 2222/5709, 87/09
pkt = NCP(0x5709, "Set Short Directory Handle", 'file', has_length=0)
@@ -13206,17 +13284,24 @@ def define_ncp2222():
pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
+ # 2222/5C, 91
+ pkt = NCP(0x5B, "NMAS Graded Authentication", 'comm')
+ #Need info on this packet structure
+ pkt.Request(7)
+ pkt.Reply(8)
+ pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
+ 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
+ 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
# 2222/5C, 92
pkt = NCP(0x5C, "SecretStore Services", 'file')
#Need info on this packet structure and SecretStore Verbs
pkt.Request(7)
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
- 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
+ 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
-
# 2222/5E, 94
- pkt = NCP(0x5e, "NMAS Communications Packet", 'comm')
+ pkt = NCP(0x5E, "NMAS Communications Packet", 'comm')
pkt.Request(7)
pkt.Reply(8)
pkt.CompletionCodes([0x0000, 0xfb09])
@@ -13245,15 +13330,15 @@ def define_ncp2222():
# 2222/65, 101
pkt = NCP(0x65, "Packet Burst Connection Request", 'comm')
pkt.Request(25, [
- rec( 7, 4, LocalConnectionID ),
- rec( 11, 4, LocalMaxPacketSize ),
- rec( 15, 2, LocalTargetSocket ),
- rec( 17, 4, LocalMaxSendSize ),
- rec( 21, 4, LocalMaxRecvSize ),
+ rec( 7, 4, LocalConnectionID, BE ),
+ rec( 11, 4, LocalMaxPacketSize, BE ),
+ rec( 15, 2, LocalTargetSocket, BE ),
+ rec( 17, 4, LocalMaxSendSize, BE ),
+ rec( 21, 4, LocalMaxRecvSize, BE ),
])
pkt.Reply(16, [
- rec( 8, 4, RemoteTargetID ),
- rec( 12, 4, RemoteMaxPacketSize ),
+ rec( 8, 4, RemoteTargetID, BE ),
+ rec( 12, 4, RemoteMaxPacketSize, BE ),
])
pkt.CompletionCodes([0x0000])
# 2222/66, 102
diff --git a/packet-ncp2222.inc b/packet-ncp2222.inc
index febed027d3..ff4978dd7d 100644
--- a/packet-ncp2222.inc
+++ b/packet-ncp2222.inc
@@ -8,7 +8,7 @@
* Gilbert Ramirez <gram@alumni.rice.edu>
* Modified to decode NDS packets by Greg Morris <gmorris@novell.com>
*
- * $Id: packet-ncp2222.inc,v 1.50 2003/02/08 03:06:06 guy Exp $
+ * $Id: packet-ncp2222.inc,v 1.51 2003/02/19 21:47:46 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -177,6 +177,14 @@ static const value_string class_def_type[] = {
{ 0, NULL }
};
+static const value_string nds_search_scope[] = {
+ { 0x0000, "Examine the base object only" },
+ { 0x0001, "Search the immediate subordinates of the base object" },
+ { 0x0002, "Search the base object and all its subordinates" },
+ { 0x0003, "Search the base objects and all objects in its partition (Implemented in NDS 8)" },
+ { 0, NULL }
+};
+
static const value_string nds_reply_errors[] = {
{ 0xffffffff, "(-1) Insufficient Space" },
{ 0xffffff89, "(-119) Buffer too Small" },
@@ -495,7 +503,7 @@ static const value_string nds_reply_errors[] = {
{ 0xfffffd0d, "(-755) Invalid Synchronization Data" },
{ 0xfffffd0c, "(-756) Stream Exists" },
{ 0xfffffd0b, "(-757) Auxiliary Has Containment" },
- { 0xfffffd0a, "(-758) Auxiliary Not Containere" },
+ { 0xfffffd0a, "(-758) Auxiliary Not Container" },
{ 0xfffffd09, "(-759) Auxiliary Not Effective" },
{ 0xfffffd08, "(-760) Auxiliary On Alias" },
{ 0xfffffd07, "(-761) Have Seen State" },
@@ -513,6 +521,60 @@ static const value_string nds_reply_errors[] = {
{ 0xfffffcfb, "(-773) Iterator Syntax" },
{ 0xfffffcfa, "(-774) Repairing DIB" },
{ 0xfffffcf9, "(-775) Invalid OID Format" },
+ { 0xfffffcf8, "(-776) Attempted to perform an NDS operation, and the DS agent on this server is closing" },
+ { 0xfffffcf7, "(-777) Attempted to modify an object's attribute that is not stored on the sparse replica" },
+ { 0xfffffcf6, "(-778) VpVector and VpvUser which must be correlated, are out of sync" },
+ { 0xfffffcf5, "(-779) Error Cannot Go Remote" },
+ { 0xfffffcf4, "(-780) Request not Supported" },
+ { 0xfffffcf3, "(-781) Entry Not Local" },
+ { 0xfffffcf2, "(-782) Root Unreachable" },
+ { 0xfffffcf1, "(-783) VRDIM Not Initialized" },
+ { 0xfffffcf0, "(-784) Wait Timeout" },
+ { 0xfffffcef, "(-785) DIB Error" },
+ { 0xfffffcee, "(-786) DIB IO Failure" },
+ { 0xfffffced, "(-787) Illegal Schema Attribute" },
+ { 0xfffffcec, "(-788) Error Schema Partition" },
+ { 0xfffffceb, "(-789) Invalid Template" },
+ { 0xfffffcea, "(-790) Error Opening File" },
+ { 0xfffffce9, "(-791) Error Direct Opening File" },
+ { 0xfffffce8, "(-792) Error Creating File" },
+ { 0xfffffce7, "(-793) Error Direct Creating File" },
+ { 0xfffffce6, "(-794) Error Reading File" },
+ { 0xfffffce5, "(-795) Error Direct Reading File" },
+ { 0xfffffce4, "(-796) Error Writing File" },
+ { 0xfffffce3, "(-797) Error Direct Writing File" },
+ { 0xfffffce2, "(-798) Error Positioning in File" },
+ { 0xfffffce1, "(-799) Error Getting File Size" },
+ { 0xffffe88f, "(-6001) Error Truncating File" },
+ { 0xffffe88e, "(-6002) Error Parsing File Name" },
+ { 0xffffe88d, "(-6003) Error Closing File" },
+ { 0xffffe88c, "(-6004) Error Getting File Info" },
+ { 0xffffe88b, "(-6005) Error Expanding File" },
+ { 0xffffe88a, "(-6006) Error Getting Free Blocks" },
+ { 0xffffe889, "(-6007) Error Checking File Existence" },
+ { 0xffffe888, "(-6008) Error Deleting File" },
+ { 0xffffe887, "(-6009) Error Renaming File" },
+ { 0xffffe886, "(-6010) Error Initializing IO System" },
+ { 0xffffe885, "(-6011) Error Flushing File" },
+ { 0xffffe884, "(-6012) Error Setting Up for Read" },
+ { 0xffffe883, "(-6013) Error Setting up for Write" },
+ { 0xffffe882, "(-6014) Error Old View" },
+ { 0xffffe881, "(-6015) Server in Skulk" },
+ { 0xffffe880, "(-6016) Error Returning Partial Results" },
+ { 0xffffe87f, "(-6017) No Such Schema" },
+ { 0xffffe87e, "(-6018) Serial Number Mismatch" },
+ { 0xffffe87d, "(-6019) Bad Referal Database Serial Number" },
+ { 0xffffe87c, "(-6020) Bad Referal Serial Number" },
+ { 0xffffe87b, "(-6021) Invalid File Sequence" },
+ { 0xffffe87a, "(-6022) Error Referal Trans Gap" },
+ { 0xffffe879, "(-6023) Bad Referal File Number" },
+ { 0xffffe878, "(-6024) Referal File Not Found" },
+ { 0xffffe877, "(-6025) Error Backup Active" },
+ { 0xffffe876, "(-6026) Referal Device Full" },
+ { 0xffffe875, "(-6027) Unsupported Version" },
+ { 0xffffe874, "(-6028) Error Must Wait Checkpoint" },
+ { 0xffffe873, "(-6029) Attribute Maintenance in Progress" },
+ { 0xffffe872, "(-6030) Error Abort Transaction" },
{ 0xffff0000, "Ok" },
{ 0x0000, "Ok" },
{ 0, NULL }
@@ -1429,14 +1491,14 @@ get_info_type(const gchar* check_string)
for (i = 0 ; i < length-1 ; i++ ) {
char_val = check_string[i+1];
- if (check_string[i] == 0x25 && check_string[i+1] == 0x64) {
+ if (check_string[i] == 0x25 && check_string[i+1] == 0x64) { /* %d Digits*/
return 0;
}
- if ( check_string[i] == 0x25 && check_string[i+1] == 0x78) {
+ if ( check_string[i] == 0x78 && check_string[i+1] == 0x25 && check_string[i+2] == 0x73) { /* x%s Bytes*/
return 1;
}
}
- return 2;
+ return 2; /* Normal String */
}
static void
@@ -1741,6 +1803,10 @@ print_nds_values(proto_tree *vtree, tvbuff_t *tvb, guint32 syntax_type, nds_val
proto_tree_add_ipv4(nvtree, hf_add_ref_tcp, tvb, voffset+2, 4, value4);
break;
case 0x00000001:
+ proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
+ value4 = tvb_get_letohl(tvb, voffset+2);
+ proto_tree_add_ipv4(nvtree, hf_add_ref_ip, tvb, voffset+2, 4, value4);
+ break;
case 0x0000000d:
get_string(tvb, voffset, value3, vvalues->vstring);
proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
@@ -4188,6 +4254,7 @@ dissect_ncp_request(tvbuff_t *tvb, packet_info *pinfo,
/* Construct the info string if necessary */
if (run_info_str) {
GPtrArray *parray;
+ char* byte_string;
int i, len;
field_info *finfo;
int info_type;
@@ -4204,11 +4271,21 @@ dissect_ncp_request(tvbuff_t *tvb, packet_info *pinfo,
info_type = get_info_type((const gchar*) ncp_rec->req_info_str->first_string);
- if (info_type == 2) { /* Is this a string or not? */
-
+ if (info_type != 0) { /* Is this a string or not? */
+
+ if (info_type == 1) { /* Is this bytes? */
+ byte_string = bytes_to_str(fvalue_get(finfo->value), fvalue_length(finfo->value));
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ (const gchar*) ncp_rec->req_info_str->first_string,
+ byte_string);
+ }
+ else
+ {
+
col_append_fstr(pinfo->cinfo, COL_INFO,
(const gchar*) ncp_rec->req_info_str->first_string,
fvalue_get(finfo->value));
+ }
}
else
{
@@ -4223,11 +4300,21 @@ dissect_ncp_request(tvbuff_t *tvb, packet_info *pinfo,
finfo = g_ptr_array_index(parray, i);
info_type = get_info_type((const gchar*) ncp_rec->req_info_str->repeat_string);
- if (info_type == 2) { /* Is this a string or not? */
-
+ if (info_type != 0) { /* Is this a string or not? */
+ if (info_type == 1)
+ { /* Is this bytes? */
+ byte_string = bytes_to_str(fvalue_get(finfo->value), fvalue_length(finfo->value));
+ col_append_fstr(pinfo->cinfo, COL_INFO,
+ (const gchar*) ncp_rec->req_info_str->repeat_string,
+ byte_string);
+ }
+ else
+ {
+
col_append_fstr(pinfo->cinfo, COL_INFO,
(const gchar*) ncp_rec->req_info_str->repeat_string,
fvalue_get(finfo->value));
+ }
}
else
{
@@ -6467,7 +6554,180 @@ dissect_nds_request(tvbuff_t *tvb, packet_info *pinfo,
break;
case 0x06:
verb_string = "Search Entries";
- pvalues[0].vtype = VTYPE_NONE; /* Not Defined */
+ pvalues[0].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[0].vstring = "";
+ pvalues[0].vtype = VTYPE_UINT32;
+ pvalues[0].vdesc = "Version: %u";
+ pvalues[0].vlength = 4;
+ pvalues[0].voffset = foffset;
+ pvalues[0].hfname= hf_nds_ver;
+ foffset = foffset+pvalues[0].vlength;
+ pvalues[1].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[1].vtype = VTYPE_UINT32;
+ pvalues[1].vstring = "";
+ pvalues[1].vdesc = "Request Flags: 0x%08x";
+ pvalues[1].vlength = 4;
+ pvalues[1].hfname= hf_nds_rflags;
+ pvalues[1].voffset = foffset;
+ foffset = foffset+4;
+ pvalues[2].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[2].vtype = VTYPE_UINT32;
+ pvalues[2].vdesc = "Iteration Handle: 0x%08x";
+ pvalues[2].vlength = 4;
+ pvalues[2].voffset = foffset;
+ pvalues[2].hfname= hf_nds_iteration;
+ foffset = foffset+pvalues[2].vlength;
+ pvalues[3].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[3].vstring = "";
+ pvalues[3].vtype = VTYPE_UINT32;
+ pvalues[3].vdesc = "Base Entry ID: 0x%08x";
+ pvalues[3].vlength = 4;
+ resolve_eid = FALSE;
+ global_eid = pvalues[3].vvalue;
+ pvalues[3].voffset = foffset;
+ pvalues[3].hfname= hf_nds_eid;
+ foffset = foffset+pvalues[3].vlength;
+ pvalues[4].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[4].vstring = match_strval(pvalues[4].vvalue, nds_search_scope);
+ if(pvalues[4].vstring == NULL)
+ {
+ pvalues[4].vstring = "No Search Scope Defined";
+ }
+ pvalues[4].vtype = VTYPE_STRING;
+ pvalues[4].vdesc = "Replica Type: %s";
+ pvalues[4].vlength = 4;
+ pvalues[4].voffset = foffset;
+ pvalues[4].mvtype = 0;
+ pvalues[4].hfname= hf_nds_search_scope;
+ foffset = foffset + pvalues[4].vlength;
+ pvalues[5].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[5].vtype = VTYPE_UINT32;
+ pvalues[5].vdesc = "Number of Objects to Search: 0x%08x";
+ pvalues[5].vlength = 4;
+ pvalues[5].voffset = foffset;
+ pvalues[5].hfname= hf_nds_num_objects;
+ foffset = foffset+pvalues[5].vlength;
+ pvalues[6].vvalue = tvb_get_letohl(tvb, foffset);
+ pvalues[6].vtype = VTYPE_BITFIELD;
+ pvalues[6].vdesc = "Information Types:";
+ pvalues[6].vlength = 2;
+ pvalues[6].hfname= hf_nds_nflags;
+ pvalues[6].voffset = foffset;
+ pvalues[6].bit1 = "Names";
+ pvalues[6].bit1hfname = hf_bit1siflags;
+ pvalues[6].bit2 = "Names and Values";
+ pvalues[6].bit2hfname = hf_bit2siflags;
+ pvalues[6].bit3 = "Effective Privileges";
+ pvalues[6].bit3hfname = hf_bit3siflags;
+ pvalues[6].bit4 = "Value Info";
+ pvalues[6].bit4hfname = hf_bit4siflags;
+ pvalues[6].bit5 = "Abbreviated Value";
+ pvalues[6].bit5hfname = hf_bit5siflags;
+ pvalues[6].bit6 = "Not Defined";
+ pvalues[6].bit6hfname = hf_bit6siflags;
+ pvalues[6].bit7 = "Not Defined";
+ pvalues[6].bit7hfname = hf_bit7siflags;
+ pvalues[6].bit8 = "Not Defined";
+ pvalues[6].bit8hfname = hf_bit8siflags;
+ pvalues[6].bit9 = "Expanded Class";
+ pvalues[6].bit9hfname = hf_bit9siflags;
+ pvalues[6].bit10 = "Not Defined";
+ pvalues[6].bit10hfname = hf_bit10siflags;
+ pvalues[6].bit11= "Not Defined";
+ pvalues[6].bit11hfname = hf_bit11siflags;
+ pvalues[6].bit12 = "Not Defined";
+ pvalues[6].bit12hfname = hf_bit12siflags;
+ pvalues[6].bit13 = "Not Defined";
+ pvalues[6].bit13hfname = hf_bit13siflags;
+ pvalues[6].bit14 = "Not Defined";
+ pvalues[6].bit14hfname = hf_bit14siflags;
+ pvalues[6].bit15 = "Not Defined";
+ pvalues[6].bit15hfname = hf_bit15siflags;
+ pvalues[6].bit16 = "Not Defined";
+ pvalues[6].bit16hfname = hf_bit16siflags;
+ foffset = foffset+4;
+ if(pvalues[0].vvalue != 2)
+ {
+ pvalues[7].vvalue = tvb_get_letohs(tvb, foffset);
+ global_flags = tvb_get_letohl(tvb, foffset);
+ pvalues[7].vtype = VTYPE_BITFIELD;
+ pvalues[7].vdesc = "Information Flags (low) Byte:";
+ pvalues[7].vlength = 2;
+ pvalues[7].hfname= hf_nds_rflags;
+ pvalues[7].voffset = foffset;
+ pvalues[7].bit1 = "Output Flags";
+ pvalues[7].bit1hfname = hf_bit1infoflagsl;
+ pvalues[7].bit2 = "Entry ID";
+ pvalues[7].bit2hfname = hf_bit2infoflagsl;
+ pvalues[7].bit3 = "Entry Flags";
+ pvalues[7].bit3hfname = hf_bit3infoflagsl;
+ pvalues[7].bit4 = "Subordinate Count";
+ pvalues[7].bit4hfname = hf_bit4infoflagsl;
+ pvalues[7].bit5 = "Modification Time";
+ pvalues[7].bit5hfname = hf_bit5infoflagsl;
+ pvalues[7].bit6 = "Modification Timestamp";
+ pvalues[7].bit6hfname = hf_bit6infoflagsl;
+ pvalues[7].bit7 = "Creation Timestamp";
+ pvalues[7].bit7hfname = hf_bit7infoflagsl;
+ pvalues[7].bit8 = "Partition Root ID";
+ pvalues[7].bit8hfname = hf_bit8infoflagsl;
+ pvalues[7].bit9 = "Parent ID";
+ pvalues[7].bit9hfname = hf_bit9infoflagsl;
+ pvalues[7].bit10 = "Revision Count";
+ pvalues[7].bit10hfname = hf_bit10infoflagsl;
+ pvalues[7].bit11 = "Replica Type";
+ pvalues[7].bit11hfname = hf_bit11infoflagsl;
+ pvalues[7].bit12 = "Base Class";
+ pvalues[7].bit12hfname = hf_bit12infoflagsl;
+ pvalues[7].bit13 = "Relative Distinguished Name";
+ pvalues[7].bit13hfname = hf_bit13infoflagsl;
+ pvalues[7].bit14 = "Distinguished Name";
+ pvalues[7].bit14hfname = hf_bit14infoflagsl;
+ pvalues[7].bit15 = "Root Distinguished Name";
+ pvalues[7].bit15hfname = hf_bit15infoflagsl;
+ pvalues[7].bit16 = "Parent Distinguished Name";
+ pvalues[7].bit16hfname = hf_bit16infoflagsl;
+ foffset = foffset+2;
+ pvalues[8].vvalue = tvb_get_letohs(tvb, foffset);
+ pvalues[8].vtype = VTYPE_BITFIELD;
+ pvalues[8].vdesc = "Information Flags (high) Byte:";
+ pvalues[8].vlength = 2;
+ pvalues[8].hfname= hf_nds_rflags;
+ pvalues[8].voffset = foffset;
+ pvalues[8].bit1 = "Purge Time";
+ pvalues[8].bit1hfname = hf_bit1infoflagsh;
+ pvalues[8].bit2 = "Dereference Base Class";
+ pvalues[8].bit2hfname = hf_bit2infoflagsh;
+ pvalues[8].bit3 = "Not Defined";
+ pvalues[8].bit3hfname = hf_bit3infoflagsh;
+ pvalues[8].bit4 = "Not Defined";
+ pvalues[8].bit4hfname = hf_bit4infoflagsh;
+ pvalues[8].bit5 = "Not Defined";
+ pvalues[8].bit5hfname = hf_bit5infoflagsh;
+ pvalues[8].bit6 = "Not Defined";
+ pvalues[8].bit6hfname = hf_bit6infoflagsh;
+ pvalues[8].bit7 = "Not Defined";
+ pvalues[8].bit7hfname = hf_bit7infoflagsh;
+ pvalues[8].bit8 = "Not Defined";
+ pvalues[8].bit8hfname = hf_bit8infoflagsh;
+ pvalues[8].bit9 = "Not Defined";
+ pvalues[8].bit9hfname = hf_bit9infoflagsh;
+ pvalues[8].bit10 = "Not Defined";
+ pvalues[8].bit10hfname = hf_bit10infoflagsh;
+ pvalues[8].bit11 = "Not Defined";
+ pvalues[8].bit11hfname = hf_bit11infoflagsh;
+ pvalues[8].bit12 = "Not Defined";
+ pvalues[8].bit12hfname = hf_bit12infoflagsh;
+ pvalues[8].bit13 = "Not Defined";
+ pvalues[8].bit13hfname = hf_bit13infoflagsh;
+ pvalues[8].bit14 = "Not Defined";
+ pvalues[8].bit14hfname = hf_bit14infoflagsh;
+ pvalues[8].bit15 = "Not Defined";
+ pvalues[8].bit15hfname = hf_bit15infoflagsh;
+ pvalues[8].bit16 = "Not Defined";
+ pvalues[8].bit16hfname = hf_bit16infoflagsh;
+ foffset = foffset+2;
+ }
break;
case 0x07:
verb_string = "Add Entry ->";