Updates from Greg Morris:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 19 Feb 2003 21:47:46 +0000 (21:47 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 19 Feb 2003 21:47:46 +0000 (21:47 +0000)
1. Added a number of NCP Error return values.
2. Added ability to pass byte strings to summary window.
3. Modified file NCP's to reflect file handle in summary window.
4. Changed all NCP's using QueueID from big endian to little endian.
This is different from Novell's NCP documentation but matches same
information obtained from NDS dissector.
5. Added over 50 more NDS error return values.
6. Partially fixed NDS Request verb 6 (Search Entries)

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

ncp2222.py
packet-ncp2222.inc

index 60d7e07894abb5ae84a40103ff8d49abf44b7362..506f6c60963341da066bfa96a56655c93e22831d 100755 (executable)
@@ -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
index febed027d36acaf7c233d89b17830bfe15e84d51..ff4978dd7d79d2355e3b66aef34c3e0482246358 100644 (file)
@@ -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 ->";