nexmon – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 #!/usr/bin/env python
2  
3 """
4 Creates C code from a table of NCP type 0x2222 packet types.
5 (And 0x3333, which are the replies, but the packets are more commonly
6 refered to as type 0x2222; the 0x3333 replies are understood to be
7 part of the 0x2222 "family")
8  
9 The data-munging code was written by Gilbert Ramirez.
10 The NCP data comes from Greg Morris <GMORRIS@novell.com>.
11 Many thanks to Novell for letting him work on this.
12  
13 Additional data sources:
14 "Programmer's Guide to the NetWare Core Protocol" by Steve Conner and Dianne Conner.
15  
16 Novell provides info at:
17  
18 http://developer.novell.com/ndk/ncp.htm (where you can download an
19 *.exe file which installs a PDF, although you may have to create a login
20 to do this)
21  
22 or
23  
24 http://developer.novell.com/ndk/doc/ncp/
25 for a badly-formatted HTML version of the same PDF.
26  
27  
28 Portions Copyright (c) 2000-2002 by Gilbert Ramirez <gram@alumni.rice.edu>.
29 Portions Copyright (c) Novell, Inc. 2000-2003.
30  
31 This program is free software; you can redistribute it and/or
32 modify it under the terms of the GNU General Public License
33 as published by the Free Software Foundation; either version 2
34 of the License, or (at your option) any later version.
35  
36 This program is distributed in the hope that it will be useful,
37 but WITHOUT ANY WARRANTY; without even the implied warranty of
38 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39 GNU General Public License for more details.
40  
41 You should have received a copy of the GNU General Public License
42 along with this program; if not, write to the Free Software
43 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
44 """
45  
46 import os
47 import sys
48 import string
49 import getopt
50 import traceback
51  
52 errors = {}
53 groups = {}
54 packets = []
55 compcode_lists = None
56 ptvc_lists = None
57 msg = None
58 reply_var = None
59 #ensure unique expert function declarations
60 expert_hash = {}
61  
62 REC_START = 0
63 REC_LENGTH = 1
64 REC_FIELD = 2
65 REC_ENDIANNESS = 3
66 REC_VAR = 4
67 REC_REPEAT = 5
68 REC_REQ_COND = 6
69 REC_INFO_STR = 7
70  
71 NO_VAR = -1
72 NO_REPEAT = -1
73 NO_REQ_COND = -1
74 NO_LENGTH_CHECK = -2
75  
76  
77 PROTO_LENGTH_UNKNOWN = -1
78  
79 global_highest_var = -1
80 global_req_cond = {}
81  
82  
83 REQ_COND_SIZE_VARIABLE = "REQ_COND_SIZE_VARIABLE"
84 REQ_COND_SIZE_CONSTANT = "REQ_COND_SIZE_CONSTANT"
85  
86 ##############################################################################
87 # Global containers
88 ##############################################################################
89  
90 class UniqueCollection:
91 """The UniqueCollection class stores objects which can be compared to other
92 objects of the same class. If two objects in the collection are equivalent,
93 only one is stored."""
94  
95 def __init__(self, name):
96 "Constructor"
97 self.name = name
98 self.members = []
99 self.member_reprs = {}
100  
101 def Add(self, object):
102 """Add an object to the members lists, if a comparable object
103 doesn't already exist. The object that is in the member list, that is
104 either the object that was added or the comparable object that was
105 already in the member list, is returned."""
106  
107 r = repr(object)
108 # Is 'object' a duplicate of some other member?
109 if r in self.member_reprs:
110 return self.member_reprs[r]
111 else:
112 self.member_reprs[r] = object
113 self.members.append(object)
114 return object
115  
116 def Members(self):
117 "Returns the list of members."
118 return self.members
119  
120 def HasMember(self, object):
121 "Does the list of members contain the object?"
122 if repr(object) in self.member_reprs:
123 return 1
124 else:
125 return 0
126  
127 # This list needs to be defined before the NCP types are defined,
128 # because the NCP types are defined in the global scope, not inside
129 # a function's scope.
130 ptvc_lists = UniqueCollection('PTVC Lists')
131  
132 ##############################################################################
133  
134 class NamedList:
135 "NamedList's keep track of PTVC's and Completion Codes"
136 def __init__(self, name, list):
137 "Constructor"
138 self.name = name
139 self.list = list
140  
141 def __cmp__(self, other):
142 "Compare this NamedList to another"
143  
144 if isinstance(other, NamedList):
145 return cmp(self.list, other.list)
146 else:
147 return 0
148  
149  
150 def Name(self, new_name = None):
151 "Get/Set name of list"
152 if new_name != None:
153 self.name = new_name
154 return self.name
155  
156 def Records(self):
157 "Returns record lists"
158 return self.list
159  
160 def Null(self):
161 "Is there no list (different from an empty list)?"
162 return self.list == None
163  
164 def Empty(self):
165 "It the list empty (different from a null list)?"
166 assert(not self.Null())
167  
168 if self.list:
169 return 0
170 else:
171 return 1
172  
173 def __repr__(self):
174 return repr(self.list)
175  
176 class PTVC(NamedList):
177 """ProtoTree TVBuff Cursor List ("PTVC List") Class"""
178  
179 def __init__(self, name, records, code):
180 "Constructor"
181 NamedList.__init__(self, name, [])
182  
183 global global_highest_var
184  
185 expected_offset = None
186 highest_var = -1
187  
188 named_vars = {}
189  
190 # Make a PTVCRecord object for each list in 'records'
191 for record in records:
192 offset = record[REC_START]
193 length = record[REC_LENGTH]
194 field = record[REC_FIELD]
195 endianness = record[REC_ENDIANNESS]
196 info_str = record[REC_INFO_STR]
197  
198 # Variable
199 var_name = record[REC_VAR]
200 if var_name:
201 # Did we already define this var?
202 if var_name in named_vars:
203 sys.exit("%s has multiple %s vars." % \
204 (name, var_name))
205  
206 highest_var = highest_var + 1
207 var = highest_var
208 if highest_var > global_highest_var:
209 global_highest_var = highest_var
210 named_vars[var_name] = var
211 else:
212 var = NO_VAR
213  
214 # Repeat
215 repeat_name = record[REC_REPEAT]
216 if repeat_name:
217 # Do we have this var?
218 if repeat_name not in named_vars:
219 sys.exit("%s does not have %s var defined." % \
220 (name, repeat_name))
221 repeat = named_vars[repeat_name]
222 else:
223 repeat = NO_REPEAT
224  
225 # Request Condition
226 req_cond = record[REC_REQ_COND]
227 if req_cond != NO_REQ_COND:
228 global_req_cond[req_cond] = None
229  
230 ptvc_rec = PTVCRecord(field, length, endianness, var, repeat, req_cond, info_str, code)
231  
232 if expected_offset == None:
233 expected_offset = offset
234  
235 elif expected_offset == -1:
236 pass
237  
238 elif expected_offset != offset and offset != -1:
239 msg.write("Expected offset in %s for %s to be %d\n" % \
240 (name, field.HFName(), expected_offset))
241 sys.exit(1)
242  
243 # We can't make a PTVC list from a variable-length
244 # packet, unless the fields can tell us at run time
245 # how long the packet is. That is, nstring8 is fine, since
246 # the field has an integer telling us how long the string is.
247 # Fields that don't have a length determinable at run-time
248 # cannot be variable-length.
249 if type(ptvc_rec.Length()) == type(()):
250 if isinstance(ptvc_rec.Field(), nstring):
251 expected_offset = -1
252 pass
253 elif isinstance(ptvc_rec.Field(), nbytes):
254 expected_offset = -1
255 pass
256 elif isinstance(ptvc_rec.Field(), struct):
257 expected_offset = -1
258 pass
259 else:
260 field = ptvc_rec.Field()
261 assert 0, "Cannot make PTVC from %s, type %s" % \
262 (field.HFName(), field)
263  
264 elif expected_offset > -1:
265 if ptvc_rec.Length() < 0:
266 expected_offset = -1
267 else:
268 expected_offset = expected_offset + ptvc_rec.Length()
269  
270  
271 self.list.append(ptvc_rec)
272  
273 def ETTName(self):
274 return "ett_%s" % (self.Name(),)
275  
276  
277 def Code(self):
278 x = "static const ptvc_record %s[] = {\n" % (self.Name())
279 for ptvc_rec in self.list:
280 x = x + " %s,\n" % (ptvc_rec.Code())
281 x = x + " { NULL, 0, NULL, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND }\n"
282 x = x + "};\n"
283 return x
284  
285 def __repr__(self):
286 x = ""
287 for ptvc_rec in self.list:
288 x = x + repr(ptvc_rec)
289 return x
290  
291  
292 class PTVCBitfield(PTVC):
293 def __init__(self, name, vars):
294 NamedList.__init__(self, name, [])
295  
296 for var in vars:
297 ptvc_rec = PTVCRecord(var, var.Length(), var.Endianness(),
298 NO_VAR, NO_REPEAT, NO_REQ_COND, None, 0)
299 self.list.append(ptvc_rec)
300  
301 def Code(self):
302 ett_name = self.ETTName()
303 x = "static gint %s = -1;\n" % (ett_name,)
304  
305 x = x + "static const ptvc_record ptvc_%s[] = {\n" % (self.Name())
306 for ptvc_rec in self.list:
307 x = x + " %s,\n" % (ptvc_rec.Code())
308 x = x + " { NULL, 0, NULL, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND }\n"
309 x = x + "};\n"
310  
311 x = x + "static const sub_ptvc_record %s = {\n" % (self.Name(),)
312 x = x + " &%s,\n" % (ett_name,)
313 x = x + " NULL,\n"
314 x = x + " ptvc_%s,\n" % (self.Name(),)
315 x = x + "};\n"
316 return x
317  
318  
319 class PTVCRecord:
320 def __init__(self, field, length, endianness, var, repeat, req_cond, info_str, code):
321 "Constructor"
322 self.field = field
323 self.length = length
324 self.endianness = endianness
325 self.var = var
326 self.repeat = repeat
327 self.req_cond = req_cond
328 self.req_info_str = info_str
329 self.__code__ = code
330  
331 def __cmp__(self, other):
332 "Comparison operator"
333 if self.field != other.field:
334 return 1
335 elif self.length < other.length:
336 return -1
337 elif self.length > other.length:
338 return 1
339 elif self.endianness != other.endianness:
340 return 1
341 else:
342 return 0
343  
344 def Code(self):
345 # Nice textual representations
346 if self.var == NO_VAR:
347 var = "NO_VAR"
348 else:
349 var = self.var
350  
351 if self.repeat == NO_REPEAT:
352 repeat = "NO_REPEAT"
353 else:
354 repeat = self.repeat
355  
356 if self.req_cond == NO_REQ_COND:
357 req_cond = "NO_REQ_COND"
358 else:
359 req_cond = global_req_cond[self.req_cond]
360 assert req_cond != None
361  
362 if isinstance(self.field, struct):
363 return self.field.ReferenceString(var, repeat, req_cond)
364 else:
365 return self.RegularCode(var, repeat, req_cond)
366  
367 def InfoStrName(self):
368 "Returns a C symbol based on the NCP function code, for the info_str"
369 return "info_str_0x%x" % (self.__code__)
370  
371 def RegularCode(self, var, repeat, req_cond):
372 "String representation"
373 endianness = 'ENC_BIG_ENDIAN'
374 if self.endianness == ENC_LITTLE_ENDIAN:
375 endianness = 'ENC_LITTLE_ENDIAN'
376  
377 length = None
378  
379 if type(self.length) == type(0):
380 length = self.length
381 else:
382 # This is for cases where a length is needed
383 # in order to determine a following variable-length,
384 # like nstring8, where 1 byte is needed in order
385 # to determine the variable length.
386 var_length = self.field.Length()
387 if var_length > 0:
388 length = var_length
389  
390 if length == PROTO_LENGTH_UNKNOWN:
391 # XXX length = "PROTO_LENGTH_UNKNOWN"
392 pass
393  
394 assert length, "Length not handled for %s" % (self.field.HFName(),)
395  
396 sub_ptvc_name = self.field.PTVCName()
397 if sub_ptvc_name != "NULL":
398 sub_ptvc_name = "&%s" % (sub_ptvc_name,)
399  
400 if self.req_info_str:
401 req_info_str = "&" + self.InfoStrName() + "_req"
402 else:
403 req_info_str = "NULL"
404  
405 return "{ &%s, %s, %s, %s, %s, %s, %s, %s }" % \
406 (self.field.HFName(), length, sub_ptvc_name,
407 req_info_str, endianness, var, repeat, req_cond)
408  
409 def Offset(self):
410 return self.offset
411  
412 def Length(self):
413 return self.length
414  
415 def Field(self):
416 return self.field
417  
418 def __repr__(self):
419 if self.req_info_str:
420 return "{%s len=%s end=%s var=%s rpt=%s rqc=%s info=%s}" % \
421 (self.field.HFName(), self.length,
422 self.endianness, self.var, self.repeat, self.req_cond, self.req_info_str[1])
423 else:
424 return "{%s len=%s end=%s var=%s rpt=%s rqc=%s}" % \
425 (self.field.HFName(), self.length,
426 self.endianness, self.var, self.repeat, self.req_cond)
427  
428 ##############################################################################
429  
430 class NCP:
431 "NCP Packet class"
432 def __init__(self, func_code, description, group, has_length=1):
433 "Constructor"
434 self.__code__ = func_code
435 self.description = description
436 self.group = group
437 self.codes = None
438 self.request_records = None
439 self.reply_records = None
440 self.has_length = has_length
441 self.req_cond_size = None
442 self.req_info_str = None
443 self.expert_func = None
444  
445 if group not in groups:
446 msg.write("NCP 0x%x has invalid group '%s'\n" % \
447 (self.__code__, group))
448 sys.exit(1)
449  
450 if self.HasSubFunction():
451 # NCP Function with SubFunction
452 self.start_offset = 10
453 else:
454 # Simple NCP Function
455 self.start_offset = 7
456  
457 def ReqCondSize(self):
458 return self.req_cond_size
459  
460 def ReqCondSizeVariable(self):
461 self.req_cond_size = REQ_COND_SIZE_VARIABLE
462  
463 def ReqCondSizeConstant(self):
464 self.req_cond_size = REQ_COND_SIZE_CONSTANT
465  
466 def FunctionCode(self, part=None):
467 "Returns the function code for this NCP packet."
468 if part == None:
469 return self.__code__
470 elif part == 'high':
471 if self.HasSubFunction():
472 return (self.__code__ & 0xff00) >> 8
473 else:
474 return self.__code__
475 elif part == 'low':
476 if self.HasSubFunction():
477 return self.__code__ & 0x00ff
478 else:
479 return 0x00
480 else:
481 msg.write("Unknown directive '%s' for function_code()\n" % (part))
482 sys.exit(1)
483  
484 def HasSubFunction(self):
485 "Does this NPC packet require a subfunction field?"
486 if self.__code__ <= 0xff:
487 return 0
488 else:
489 return 1
490  
491 def HasLength(self):
492 return self.has_length
493  
494 def Description(self):
495 return self.description
496  
497 def Group(self):
498 return self.group
499  
500 def PTVCRequest(self):
501 return self.ptvc_request
502  
503 def PTVCReply(self):
504 return self.ptvc_reply
505  
506 def Request(self, size, records=[], **kwargs):
507 self.request_size = size
508 self.request_records = records
509 if self.HasSubFunction():
510 if self.HasLength():
511 self.CheckRecords(size, records, "Request", 10)
512 else:
513 self.CheckRecords(size, records, "Request", 8)
514 else:
515 self.CheckRecords(size, records, "Request", 7)
516 self.ptvc_request = self.MakePTVC(records, "request", self.__code__)
517  
518 if "info_str" in kwargs:
519 self.req_info_str = kwargs["info_str"]
520  
521 def Reply(self, size, records=[]):
522 self.reply_size = size
523 self.reply_records = records
524 self.CheckRecords(size, records, "Reply", 8)
525 self.ptvc_reply = self.MakePTVC(records, "reply", self.__code__)
526  
527 def CheckRecords(self, size, records, descr, min_hdr_length):
528 "Simple sanity check"
529 if size == NO_LENGTH_CHECK:
530 return
531 min = size
532 max = size
533 if type(size) == type(()):
534 min = size[0]
535 max = size[1]
536  
537 lower = min_hdr_length
538 upper = min_hdr_length
539  
540 for record in records:
541 rec_size = record[REC_LENGTH]
542 rec_lower = rec_size
543 rec_upper = rec_size
544 if type(rec_size) == type(()):
545 rec_lower = rec_size[0]
546 rec_upper = rec_size[1]
547  
548 lower = lower + rec_lower
549 upper = upper + rec_upper
550  
551 error = 0
552 if min != lower:
553 msg.write("%s records for 2222/0x%x sum to %d bytes minimum, but param1 shows %d\n" \
554 % (descr, self.FunctionCode(), lower, min))
555 error = 1
556 if max != upper:
557 msg.write("%s records for 2222/0x%x sum to %d bytes maximum, but param1 shows %d\n" \
558 % (descr, self.FunctionCode(), upper, max))
559 error = 1
560  
561 if error == 1:
562 sys.exit(1)
563  
564  
565 def MakePTVC(self, records, name_suffix, code):
566 """Makes a PTVC out of a request or reply record list. Possibly adds
567 it to the global list of PTVCs (the global list is a UniqueCollection,
568 so an equivalent PTVC may already be in the global list)."""
569  
570 name = "%s_%s" % (self.CName(), name_suffix)
571 #if any individual record has an info_str, bubble it up to the top
572 #so an info_string_t can be created for it
573 for record in records:
574 if record[REC_INFO_STR]:
575 self.req_info_str = record[REC_INFO_STR]
576  
577 ptvc = PTVC(name, records, code)
578  
579 #if the record is a duplicate, remove the req_info_str so
580 #that an unused info_string isn't generated
581 remove_info = 0
582 if ptvc_lists.HasMember(ptvc):
583 if 'info' in repr(ptvc):
584 remove_info = 1
585  
586 ptvc_test = ptvc_lists.Add(ptvc)
587  
588 if remove_info:
589 self.req_info_str = None
590  
591 return ptvc_test
592  
593 def CName(self):
594 "Returns a C symbol based on the NCP function code"
595 return "ncp_0x%x" % (self.__code__)
596  
597 def InfoStrName(self):
598 "Returns a C symbol based on the NCP function code, for the info_str"
599 return "info_str_0x%x" % (self.__code__)
600  
601 def MakeExpert(self, func):
602 self.expert_func = func
603 expert_hash[func] = func
604  
605 def Variables(self):
606 """Returns a list of variables used in the request and reply records.
607 A variable is listed only once, even if it is used twice (once in
608 the request, once in the reply)."""
609  
610 variables = {}
611 if self.request_records:
612 for record in self.request_records:
613 var = record[REC_FIELD]
614 variables[var.HFName()] = var
615  
616 sub_vars = var.SubVariables()
617 for sv in sub_vars:
618 variables[sv.HFName()] = sv
619  
620 if self.reply_records:
621 for record in self.reply_records:
622 var = record[REC_FIELD]
623 variables[var.HFName()] = var
624  
625 sub_vars = var.SubVariables()
626 for sv in sub_vars:
627 variables[sv.HFName()] = sv
628  
629 return list(variables.values())
630  
631 def CalculateReqConds(self):
632 """Returns a list of request conditions (dfilter text) used
633 in the reply records. A request condition is listed only once,"""
634 texts = {}
635 if self.reply_records:
636 for record in self.reply_records:
637 text = record[REC_REQ_COND]
638 if text != NO_REQ_COND:
639 texts[text] = None
640  
641 if len(texts) == 0:
642 self.req_conds = None
643 return None
644  
645 dfilter_texts = list(texts.keys())
646 dfilter_texts.sort()
647 name = "%s_req_cond_indexes" % (self.CName(),)
648 return NamedList(name, dfilter_texts)
649  
650 def GetReqConds(self):
651 return self.req_conds
652  
653 def SetReqConds(self, new_val):
654 self.req_conds = new_val
655  
656  
657 def CompletionCodes(self, codes=None):
658 """Sets or returns the list of completion
659 codes. Internally, a NamedList is used to store the
660 completion codes, but the caller of this function never
661 realizes that because Python lists are the input and
662 output."""
663  
664 if codes == None:
665 return self.codes
666  
667 # Sanity check
668 okay = 1
669 for code in codes:
670 if code not in errors:
671 msg.write("Errors table does not have key 0x%04x for NCP=0x%x\n" % (code,
672 self.__code__))
673 okay = 0
674  
675 # Delay the exit until here so that the programmer can get
676 # the complete list of missing error codes
677 if not okay:
678 sys.exit(1)
679  
680 # Create CompletionCode (NamedList) object and possible
681 # add it to the global list of completion code lists.
682 name = "%s_errors" % (self.CName(),)
683 codes.sort()
684 codes_list = NamedList(name, codes)
685 self.codes = compcode_lists.Add(codes_list)
686  
687 self.Finalize()
688  
689 def Finalize(self):
690 """Adds the NCP object to the global collection of NCP
691 objects. This is done automatically after setting the
692 CompletionCode list. Yes, this is a shortcut, but it makes
693 our list of NCP packet definitions look neater, since an
694 explicit "add to global list of packets" is not needed."""
695  
696 # Add packet to global collection of packets
697 packets.append(self)
698  
699 def rec(start, length, field, endianness=None, **kw):
700 return _rec(start, length, field, endianness, kw)
701  
702 def srec(field, endianness=None, **kw):
703 return _rec(-1, -1, field, endianness, kw)
704  
705 def _rec(start, length, field, endianness, kw):
706 # If endianness not explicitly given, use the field's
707 # default endiannes.
708 if endianness == None:
709 endianness = field.Endianness()
710  
711 # Setting a var?
712 if "var" in kw:
713 # Is the field an INT ?
714 if not isinstance(field, CountingNumber):
715 sys.exit("Field %s used as count variable, but not integer." \
716 % (field.HFName()))
717 var = kw["var"]
718 else:
719 var = None
720  
721 # If 'var' not used, 'repeat' can be used.
722 if not var and "repeat" in kw:
723 repeat = kw["repeat"]
724 else:
725 repeat = None
726  
727 # Request-condition ?
728 if "req_cond" in kw:
729 req_cond = kw["req_cond"]
730 else:
731 req_cond = NO_REQ_COND
732  
733 if "info_str" in kw:
734 req_info_str = kw["info_str"]
735 else:
736 req_info_str = None
737  
738 return [start, length, field, endianness, var, repeat, req_cond, req_info_str]
739  
740  
741  
742 ##############################################################################
743  
744 ENC_LITTLE_ENDIAN = 1 # Little-Endian
745 ENC_BIG_ENDIAN = 0 # Big-Endian
746 NA = -1 # Not Applicable
747  
748 class Type:
749 " Virtual class for NCP field types"
750 type = "Type"
751 ftype = None
752 disp = "BASE_DEC"
753 custom_func = None
754 endianness = NA
755 values = []
756  
757 def __init__(self, abbrev, descr, bytes, endianness = NA):
758 self.abbrev = abbrev
759 self.descr = descr
760 self.bytes = bytes
761 self.endianness = endianness
762 self.hfname = "hf_ncp_" + self.abbrev
763  
764 def Length(self):
765 return self.bytes
766  
767 def Abbreviation(self):
768 return self.abbrev
769  
770 def Description(self):
771 return self.descr
772  
773 def HFName(self):
774 return self.hfname
775  
776 def DFilter(self):
777 return "ncp." + self.abbrev
778  
779 def WiresharkFType(self):
780 return self.ftype
781  
782 def Display(self, newval=None):
783 if newval != None:
784 self.disp = newval
785 return self.disp
786  
787 def ValuesName(self):
788 if self.custom_func:
789 return "CF_FUNC(" + self.custom_func + ")"
790 else:
791 return "NULL"
792  
793 def Mask(self):
794 return 0
795  
796 def Endianness(self):
797 return self.endianness
798  
799 def SubVariables(self):
800 return []
801  
802 def PTVCName(self):
803 return "NULL"
804  
805 def NWDate(self):
806 self.disp = "BASE_CUSTOM"
807 self.custom_func = "padd_date"
808  
809 def NWTime(self):
810 self.disp = "BASE_CUSTOM"
811 self.custom_func = "padd_time"
812  
813 #def __cmp__(self, other):
814 # return cmp(self.hfname, other.hfname)
815  
816 def __lt__(self, other):
817 return (self.hfname < other.hfname)
818  
819 class struct(PTVC, Type):
820 def __init__(self, name, items, descr=None):
821 name = "struct_%s" % (name,)
822 NamedList.__init__(self, name, [])
823  
824 self.bytes = 0
825 self.descr = descr
826 for item in items:
827 if isinstance(item, Type):
828 field = item
829 length = field.Length()
830 endianness = field.Endianness()
831 var = NO_VAR
832 repeat = NO_REPEAT
833 req_cond = NO_REQ_COND
834 elif type(item) == type([]):
835 field = item[REC_FIELD]
836 length = item[REC_LENGTH]
837 endianness = item[REC_ENDIANNESS]
838 var = item[REC_VAR]
839 repeat = item[REC_REPEAT]
840 req_cond = item[REC_REQ_COND]
841 else:
842 assert 0, "Item %s item not handled." % (item,)
843  
844 ptvc_rec = PTVCRecord(field, length, endianness, var,
845 repeat, req_cond, None, 0)
846 self.list.append(ptvc_rec)
847 self.bytes = self.bytes + field.Length()
848  
849 self.hfname = self.name
850  
851 def Variables(self):
852 vars = []
853 for ptvc_rec in self.list:
854 vars.append(ptvc_rec.Field())
855 return vars
856  
857 def ReferenceString(self, var, repeat, req_cond):
858 return "{ PTVC_STRUCT, NO_LENGTH, &%s, NULL, NO_ENDIANNESS, %s, %s, %s }" % \
859 (self.name, var, repeat, req_cond)
860  
861 def Code(self):
862 ett_name = self.ETTName()
863 x = "static gint %s = -1;\n" % (ett_name,)
864 x = x + "static const ptvc_record ptvc_%s[] = {\n" % (self.name,)
865 for ptvc_rec in self.list:
866 x = x + " %s,\n" % (ptvc_rec.Code())
867 x = x + " { NULL, NO_LENGTH, NULL, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND }\n"
868 x = x + "};\n"
869  
870 x = x + "static const sub_ptvc_record %s = {\n" % (self.name,)
871 x = x + " &%s,\n" % (ett_name,)
872 if self.descr:
873 x = x + ' "%s",\n' % (self.descr,)
874 else:
875 x = x + " NULL,\n"
876 x = x + " ptvc_%s,\n" % (self.Name(),)
877 x = x + "};\n"
878 return x
879  
880 def __cmp__(self, other):
881 return cmp(self.HFName(), other.HFName())
882  
883  
884 class byte(Type):
885 type = "byte"
886 ftype = "FT_UINT8"
887 def __init__(self, abbrev, descr):
888 Type.__init__(self, abbrev, descr, 1)
889  
890 class CountingNumber:
891 pass
892  
893 # Same as above. Both are provided for convenience
894 class uint8(Type, CountingNumber):
895 type = "uint8"
896 ftype = "FT_UINT8"
897 bytes = 1
898 def __init__(self, abbrev, descr):
899 Type.__init__(self, abbrev, descr, 1)
900  
901 class uint16(Type, CountingNumber):
902 type = "uint16"
903 ftype = "FT_UINT16"
904 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
905 Type.__init__(self, abbrev, descr, 2, endianness)
906  
907 class uint24(Type, CountingNumber):
908 type = "uint24"
909 ftype = "FT_UINT24"
910 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
911 Type.__init__(self, abbrev, descr, 3, endianness)
912  
913 class uint32(Type, CountingNumber):
914 type = "uint32"
915 ftype = "FT_UINT32"
916 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
917 Type.__init__(self, abbrev, descr, 4, endianness)
918  
919 class uint64(Type, CountingNumber):
920 type = "uint64"
921 ftype = "FT_UINT64"
922 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
923 Type.__init__(self, abbrev, descr, 8, endianness)
924  
925 class eptime(Type, CountingNumber):
926 type = "eptime"
927 ftype = "FT_ABSOLUTE_TIME"
928 disp = "ABSOLUTE_TIME_LOCAL"
929 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
930 Type.__init__(self, abbrev, descr, 4, endianness)
931  
932 class boolean8(uint8):
933 type = "boolean8"
934 ftype = "FT_BOOLEAN"
935 disp = "BASE_NONE"
936  
937 class boolean16(uint16):
938 type = "boolean16"
939 ftype = "FT_BOOLEAN"
940 disp = "BASE_NONE"
941  
942 class boolean24(uint24):
943 type = "boolean24"
944 ftype = "FT_BOOLEAN"
945 disp = "BASE_NONE"
946  
947 class boolean32(uint32):
948 type = "boolean32"
949 ftype = "FT_BOOLEAN"
950 disp = "BASE_NONE"
951  
952 class nstring:
953 pass
954  
955 class nstring8(Type, nstring):
956 """A string of up to (2^8)-1 characters. The first byte
957 gives the string length."""
958  
959 type = "nstring8"
960 ftype = "FT_UINT_STRING"
961 disp = "BASE_NONE"
962 def __init__(self, abbrev, descr):
963 Type.__init__(self, abbrev, descr, 1)
964  
965 class nstring16(Type, nstring):
966 """A string of up to (2^16)-2 characters. The first 2 bytes
967 gives the string length."""
968  
969 type = "nstring16"
970 ftype = "FT_UINT_STRING"
971 disp = "BASE_NONE"
972 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
973 Type.__init__(self, abbrev, descr, 2, endianness)
974  
975 class nstring32(Type, nstring):
976 """A string of up to (2^32)-4 characters. The first 4 bytes
977 gives the string length."""
978  
979 type = "nstring32"
980 ftype = "FT_UINT_STRING"
981 disp = "BASE_NONE"
982 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
983 Type.__init__(self, abbrev, descr, 4, endianness)
984  
985 class fw_string(Type):
986 """A fixed-width string of n bytes."""
987  
988 type = "fw_string"
989 disp = "BASE_NONE"
990 ftype = "FT_STRING"
991  
992 def __init__(self, abbrev, descr, bytes):
993 Type.__init__(self, abbrev, descr, bytes)
994  
995  
996 class stringz(Type):
997 "NUL-terminated string, with a maximum length"
998  
999 type = "stringz"
1000 disp = "BASE_NONE"
1001 ftype = "FT_STRINGZ"
1002 def __init__(self, abbrev, descr):
1003 Type.__init__(self, abbrev, descr, PROTO_LENGTH_UNKNOWN)
1004  
1005 class val_string(Type):
1006 """Abstract class for val_stringN, where N is number
1007 of bits that key takes up."""
1008  
1009 type = "val_string"
1010 disp = 'BASE_HEX'
1011  
1012 def __init__(self, abbrev, descr, val_string_array, endianness = ENC_LITTLE_ENDIAN):
1013 Type.__init__(self, abbrev, descr, self.bytes, endianness)
1014 self.values = val_string_array
1015  
1016 def Code(self):
1017 result = "static const value_string %s[] = {\n" \
1018 % (self.ValuesCName())
1019 for val_record in self.values:
1020 value = val_record[0]
1021 text = val_record[1]
1022 value_repr = self.value_format % value
1023 result = result + ' { %s, "%s" },\n' \
1024 % (value_repr, text)
1025  
1026 value_repr = self.value_format % 0
1027 result = result + " { %s, NULL },\n" % (value_repr)
1028 result = result + "};\n"
1029 REC_VAL_STRING_RES = self.value_format % value
1030 return result
1031  
1032 def ValuesCName(self):
1033 return "ncp_%s_vals" % (self.abbrev)
1034  
1035 def ValuesName(self):
1036 return "VALS(%s)" % (self.ValuesCName())
1037  
1038 class val_string8(val_string):
1039 type = "val_string8"
1040 ftype = "FT_UINT8"
1041 bytes = 1
1042 value_format = "0x%02x"
1043  
1044 class val_string16(val_string):
1045 type = "val_string16"
1046 ftype = "FT_UINT16"
1047 bytes = 2
1048 value_format = "0x%04x"
1049  
1050 class val_string32(val_string):
1051 type = "val_string32"
1052 ftype = "FT_UINT32"
1053 bytes = 4
1054 value_format = "0x%08x"
1055  
1056 class bytes(Type):
1057 type = 'bytes'
1058 disp = "BASE_NONE"
1059 ftype = 'FT_BYTES'
1060  
1061 def __init__(self, abbrev, descr, bytes):
1062 Type.__init__(self, abbrev, descr, bytes, NA)
1063  
1064 class nbytes:
1065 pass
1066  
1067 class nbytes8(Type, nbytes):
1068 """A series of up to (2^8)-1 bytes. The first byte
1069 gives the byte-string length."""
1070  
1071 type = "nbytes8"
1072 ftype = "FT_UINT_BYTES"
1073 disp = "BASE_NONE"
1074 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
1075 Type.__init__(self, abbrev, descr, 1, endianness)
1076  
1077 class nbytes16(Type, nbytes):
1078 """A series of up to (2^16)-2 bytes. The first 2 bytes
1079 gives the byte-string length."""
1080  
1081 type = "nbytes16"
1082 ftype = "FT_UINT_BYTES"
1083 disp = "BASE_NONE"
1084 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
1085 Type.__init__(self, abbrev, descr, 2, endianness)
1086  
1087 class nbytes32(Type, nbytes):
1088 """A series of up to (2^32)-4 bytes. The first 4 bytes
1089 gives the byte-string length."""
1090  
1091 type = "nbytes32"
1092 ftype = "FT_UINT_BYTES"
1093 disp = "BASE_NONE"
1094 def __init__(self, abbrev, descr, endianness = ENC_LITTLE_ENDIAN):
1095 Type.__init__(self, abbrev, descr, 4, endianness)
1096  
1097 class bf_uint(Type):
1098 type = "bf_uint"
1099 disp = None
1100  
1101 def __init__(self, bitmask, abbrev, descr, endianness=ENC_LITTLE_ENDIAN):
1102 Type.__init__(self, abbrev, descr, self.bytes, endianness)
1103 self.bitmask = bitmask
1104  
1105 def Mask(self):
1106 return self.bitmask
1107  
1108 class bf_val_str(bf_uint):
1109 type = "bf_uint"
1110 disp = None
1111  
1112 def __init__(self, bitmask, abbrev, descr, val_string_array, endiannes=ENC_LITTLE_ENDIAN):
1113 bf_uint.__init__(self, bitmask, abbrev, descr, endiannes)
1114 self.values = val_string_array
1115  
1116 def ValuesName(self):
1117 return "VALS(%s)" % (self.ValuesCName())
1118  
1119 class bf_val_str8(bf_val_str, val_string8):
1120 type = "bf_val_str8"
1121 ftype = "FT_UINT8"
1122 disp = "BASE_HEX"
1123 bytes = 1
1124  
1125 class bf_val_str16(bf_val_str, val_string16):
1126 type = "bf_val_str16"
1127 ftype = "FT_UINT16"
1128 disp = "BASE_HEX"
1129 bytes = 2
1130  
1131 class bf_val_str32(bf_val_str, val_string32):
1132 type = "bf_val_str32"
1133 ftype = "FT_UINT32"
1134 disp = "BASE_HEX"
1135 bytes = 4
1136  
1137 class bf_boolean:
1138 disp = "BASE_NONE"
1139  
1140 class bf_boolean8(bf_uint, boolean8, bf_boolean):
1141 type = "bf_boolean8"
1142 ftype = "FT_BOOLEAN"
1143 disp = "8"
1144 bytes = 1
1145  
1146 class bf_boolean16(bf_uint, boolean16, bf_boolean):
1147 type = "bf_boolean16"
1148 ftype = "FT_BOOLEAN"
1149 disp = "16"
1150 bytes = 2
1151  
1152 class bf_boolean24(bf_uint, boolean24, bf_boolean):
1153 type = "bf_boolean24"
1154 ftype = "FT_BOOLEAN"
1155 disp = "24"
1156 bytes = 3
1157  
1158 class bf_boolean32(bf_uint, boolean32, bf_boolean):
1159 type = "bf_boolean32"
1160 ftype = "FT_BOOLEAN"
1161 disp = "32"
1162 bytes = 4
1163  
1164 class bitfield(Type):
1165 type = "bitfield"
1166 disp = 'BASE_HEX'
1167  
1168 def __init__(self, vars):
1169 var_hash = {}
1170 for var in vars:
1171 if isinstance(var, bf_boolean):
1172 if not isinstance(var, self.bf_type):
1173 print("%s must be of type %s" % \
1174 (var.Abbreviation(),
1175 self.bf_type))
1176 sys.exit(1)
1177 var_hash[var.bitmask] = var
1178  
1179 bitmasks = list(var_hash.keys())
1180 bitmasks.sort()
1181 bitmasks.reverse()
1182  
1183 ordered_vars = []
1184 for bitmask in bitmasks:
1185 var = var_hash[bitmask]
1186 ordered_vars.append(var)
1187  
1188 self.vars = ordered_vars
1189 self.ptvcname = "ncp_%s_bitfield" % (self.abbrev,)
1190 self.hfname = "hf_ncp_%s" % (self.abbrev,)
1191 self.sub_ptvc = PTVCBitfield(self.PTVCName(), self.vars)
1192  
1193 def SubVariables(self):
1194 return self.vars
1195  
1196 def SubVariablesPTVC(self):
1197 return self.sub_ptvc
1198  
1199 def PTVCName(self):
1200 return self.ptvcname
1201  
1202  
1203 class bitfield8(bitfield, uint8):
1204 type = "bitfield8"
1205 ftype = "FT_UINT8"
1206 bf_type = bf_boolean8
1207  
1208 def __init__(self, abbrev, descr, vars):
1209 uint8.__init__(self, abbrev, descr)
1210 bitfield.__init__(self, vars)
1211  
1212 class bitfield16(bitfield, uint16):
1213 type = "bitfield16"
1214 ftype = "FT_UINT16"
1215 bf_type = bf_boolean16
1216  
1217 def __init__(self, abbrev, descr, vars, endianness=ENC_LITTLE_ENDIAN):
1218 uint16.__init__(self, abbrev, descr, endianness)
1219 bitfield.__init__(self, vars)
1220  
1221 class bitfield24(bitfield, uint24):
1222 type = "bitfield24"
1223 ftype = "FT_UINT24"
1224 bf_type = bf_boolean24
1225  
1226 def __init__(self, abbrev, descr, vars, endianness=ENC_LITTLE_ENDIAN):
1227 uint24.__init__(self, abbrev, descr, endianness)
1228 bitfield.__init__(self, vars)
1229  
1230 class bitfield32(bitfield, uint32):
1231 type = "bitfield32"
1232 ftype = "FT_UINT32"
1233 bf_type = bf_boolean32
1234  
1235 def __init__(self, abbrev, descr, vars, endianness=ENC_LITTLE_ENDIAN):
1236 uint32.__init__(self, abbrev, descr, endianness)
1237 bitfield.__init__(self, vars)
1238  
1239 #
1240 # Force the endianness of a field to a non-default value; used in
1241 # the list of fields of a structure.
1242 #
1243 def endian(field, endianness):
1244 return [-1, field.Length(), field, endianness, NO_VAR, NO_REPEAT, NO_REQ_COND]
1245  
1246 ##############################################################################
1247 # NCP Field Types. Defined in Appendix A of "Programmer's Guide..."
1248 ##############################################################################
1249  
1250 AbortQueueFlag = val_string8("abort_q_flag", "Abort Queue Flag", [
1251 [ 0x00, "Place at End of Queue" ],
1252 [ 0x01, "Do Not Place Spool File, Examine Flags" ],
1253 ])
1254 AcceptedMaxSize = uint16("accepted_max_size", "Accepted Max Size")
1255 AccessControl = val_string8("access_control", "Access Control", [
1256 [ 0x00, "Open for read by this client" ],
1257 [ 0x01, "Open for write by this client" ],
1258 [ 0x02, "Deny read requests from other stations" ],
1259 [ 0x03, "Deny write requests from other stations" ],
1260 [ 0x04, "File detached" ],
1261 [ 0x05, "TTS holding detach" ],
1262 [ 0x06, "TTS holding open" ],
1263 ])
1264 AccessDate = uint16("access_date", "Access Date")
1265 AccessDate.NWDate()
1266 AccessMode = bitfield8("access_mode", "Access Mode", [
1267 bf_boolean8(0x01, "acc_mode_read", "Read Access"),
1268 bf_boolean8(0x02, "acc_mode_write", "Write Access"),
1269 bf_boolean8(0x04, "acc_mode_deny_read", "Deny Read Access"),
1270 bf_boolean8(0x08, "acc_mode_deny_write", "Deny Write Access"),
1271 bf_boolean8(0x10, "acc_mode_comp", "Compatibility Mode"),
1272 ])
1273 AccessPrivileges = bitfield8("access_privileges", "Access Privileges", [
1274 bf_boolean8(0x01, "acc_priv_read", "Read Privileges (files only)"),
1275 bf_boolean8(0x02, "acc_priv_write", "Write Privileges (files only)"),
1276 bf_boolean8(0x04, "acc_priv_open", "Open Privileges (files only)"),
1277 bf_boolean8(0x08, "acc_priv_create", "Create Privileges (files only)"),
1278 bf_boolean8(0x10, "acc_priv_delete", "Delete Privileges (files only)"),
1279 bf_boolean8(0x20, "acc_priv_parent", "Parental Privileges (directories only for creating, deleting, and renaming)"),
1280 bf_boolean8(0x40, "acc_priv_search", "Search Privileges (directories only)"),
1281 bf_boolean8(0x80, "acc_priv_modify", "Modify File Status Flags Privileges (files and directories)"),
1282 ])
1283 AccessRightsMask = bitfield8("access_rights_mask", "Access Rights", [
1284 bf_boolean8(0x0001, "acc_rights_read", "Read Rights"),
1285 bf_boolean8(0x0002, "acc_rights_write", "Write Rights"),
1286 bf_boolean8(0x0004, "acc_rights_open", "Open Rights"),
1287 bf_boolean8(0x0008, "acc_rights_create", "Create Rights"),
1288 bf_boolean8(0x0010, "acc_rights_delete", "Delete Rights"),
1289 bf_boolean8(0x0020, "acc_rights_parent", "Parental Rights"),
1290 bf_boolean8(0x0040, "acc_rights_search", "Search Rights"),
1291 bf_boolean8(0x0080, "acc_rights_modify", "Modify Rights"),
1292 ])
1293 AccessRightsMaskWord = bitfield16("access_rights_mask_word", "Access Rights", [
1294 bf_boolean16(0x0001, "acc_rights1_read", "Read Rights"),
1295 bf_boolean16(0x0002, "acc_rights1_write", "Write Rights"),
1296 bf_boolean16(0x0004, "acc_rights1_open", "Open Rights"),
1297 bf_boolean16(0x0008, "acc_rights1_create", "Create Rights"),
1298 bf_boolean16(0x0010, "acc_rights1_delete", "Delete Rights"),
1299 bf_boolean16(0x0020, "acc_rights1_parent", "Parental Rights"),
1300 bf_boolean16(0x0040, "acc_rights1_search", "Search Rights"),
1301 bf_boolean16(0x0080, "acc_rights1_modify", "Modify Rights"),
1302 bf_boolean16(0x0100, "acc_rights1_supervisor", "Supervisor Access Rights"),
1303 ])
1304 AccountBalance = uint32("account_balance", "Account Balance")
1305 AccountVersion = uint8("acct_version", "Acct Version")
1306 ActionFlag = bitfield8("action_flag", "Action Flag", [
1307 bf_boolean8(0x01, "act_flag_open", "Open"),
1308 bf_boolean8(0x02, "act_flag_replace", "Replace"),
1309 bf_boolean8(0x10, "act_flag_create", "Create"),
1310 ])
1311 ActiveConnBitList = fw_string("active_conn_bit_list", "Active Connection List", 512)
1312 ActiveIndexedFiles = uint16("active_indexed_files", "Active Indexed Files")
1313 ActualMaxBinderyObjects = uint16("actual_max_bindery_objects", "Actual Max Bindery Objects")
1314 ActualMaxIndexedFiles = uint16("actual_max_indexed_files", "Actual Max Indexed Files")
1315 ActualMaxOpenFiles = uint16("actual_max_open_files", "Actual Max Open Files")
1316 ActualMaxSimultaneousTransactions = uint16("actual_max_sim_trans", "Actual Max Simultaneous Transactions")
1317 ActualMaxUsedDirectoryEntries = uint16("actual_max_used_directory_entries", "Actual Max Used Directory Entries")
1318 ActualMaxUsedRoutingBuffers = uint16("actual_max_used_routing_buffers", "Actual Max Used Routing Buffers")
1319 ActualResponseCount = uint16("actual_response_count", "Actual Response Count")
1320 AddNameSpaceAndVol = stringz("add_nm_spc_and_vol", "Add Name Space and Volume")
1321 AFPEntryID = uint32("afp_entry_id", "AFP Entry ID", ENC_BIG_ENDIAN)
1322 AFPEntryID.Display("BASE_HEX")
1323 AllocAvailByte = uint32("alloc_avail_byte", "Bytes Available for Allocation")
1324 AllocateMode = bitfield16("alloc_mode", "Allocate Mode", [
1325 bf_val_str16(0x0001, "alloc_dir_hdl", "Dir Handle Type",[
1326 [0x00, "Permanent"],
1327 [0x01, "Temporary"],
1328 ]),
1329 bf_boolean16(0x0002, "alloc_spec_temp_dir_hdl","Special Temporary Directory Handle"),
1330 bf_boolean16(0x4000, "alloc_reply_lvl2","Reply Level 2"),
1331 bf_boolean16(0x8000, "alloc_dst_name_spc","Destination Name Space Input Parameter"),
1332 ])
1333 AllocationBlockSize = uint32("allocation_block_size", "Allocation Block Size")
1334 AllocFreeCount = uint32("alloc_free_count", "Reclaimable Free Bytes")
1335 ApplicationNumber = uint16("application_number", "Application Number")
1336 ArchivedTime = uint16("archived_time", "Archived Time")
1337 ArchivedTime.NWTime()
1338 ArchivedDate = uint16("archived_date", "Archived Date")
1339 ArchivedDate.NWDate()
1340 ArchiverID = uint32("archiver_id", "Archiver ID", ENC_BIG_ENDIAN)
1341 ArchiverID.Display("BASE_HEX")
1342 AssociatedNameSpace = uint8("associated_name_space", "Associated Name Space")
1343 AttachDuringProcessing = uint16("attach_during_processing", "Attach During Processing")
1344 AttachedIndexedFiles = uint8("attached_indexed_files", "Attached Indexed Files")
1345 AttachWhileProcessingAttach = uint16("attach_while_processing_attach", "Attach While Processing Attach")
1346 Attributes = uint32("attributes", "Attributes")
1347 AttributesDef = bitfield8("attr_def", "Attributes", [
1348 bf_boolean8(0x01, "att_def_ro", "Read Only"),
1349 bf_boolean8(0x02, "att_def_hidden", "Hidden"),
1350 bf_boolean8(0x04, "att_def_system", "System"),
1351 bf_boolean8(0x08, "att_def_execute", "Execute"),
1352 bf_boolean8(0x10, "att_def_sub_only", "Subdirectory"),
1353 bf_boolean8(0x20, "att_def_archive", "Archive"),
1354 bf_boolean8(0x80, "att_def_shareable", "Shareable"),
1355 ])
1356 AttributesDef16 = bitfield16("attr_def_16", "Attributes", [
1357 bf_boolean16(0x0001, "att_def16_ro", "Read Only"),
1358 bf_boolean16(0x0002, "att_def16_hidden", "Hidden"),
1359 bf_boolean16(0x0004, "att_def16_system", "System"),
1360 bf_boolean16(0x0008, "att_def16_execute", "Execute"),
1361 bf_boolean16(0x0010, "att_def16_sub_only", "Subdirectory"),
1362 bf_boolean16(0x0020, "att_def16_archive", "Archive"),
1363 bf_boolean16(0x0080, "att_def16_shareable", "Shareable"),
1364 bf_boolean16(0x1000, "att_def16_transaction", "Transactional"),
1365 bf_boolean16(0x4000, "att_def16_read_audit", "Read Audit"),
1366 bf_boolean16(0x8000, "att_def16_write_audit", "Write Audit"),
1367 ])
1368 AttributesDef32 = bitfield32("attr_def_32", "Attributes", [
1369 bf_boolean32(0x00000001, "att_def32_ro", "Read Only"),
1370 bf_boolean32(0x00000002, "att_def32_hidden", "Hidden"),
1371 bf_boolean32(0x00000004, "att_def32_system", "System"),
1372 bf_boolean32(0x00000008, "att_def32_execute", "Execute"),
1373 bf_boolean32(0x00000010, "att_def32_sub_only", "Subdirectory"),
1374 bf_boolean32(0x00000020, "att_def32_archive", "Archive"),
1375 bf_boolean32(0x00000040, "att_def32_execute_confirm", "Execute Confirm"),
1376 bf_boolean32(0x00000080, "att_def32_shareable", "Shareable"),
1377 bf_val_str32(0x00000700, "att_def32_search", "Search Mode",[
1378 [0, "Search on all Read Only Opens"],
1379 [1, "Search on Read Only Opens with no Path"],
1380 [2, "Shell Default Search Mode"],
1381 [3, "Search on all Opens with no Path"],
1382 [4, "Do not Search"],
1383 [5, "Reserved - Do not Use"],
1384 [6, "Search on All Opens"],
1385 [7, "Reserved - Do not Use"],
1386 ]),
1387 bf_boolean32(0x00000800, "att_def32_no_suballoc", "No Suballoc"),
1388 bf_boolean32(0x00001000, "att_def32_transaction", "Transactional"),
1389 bf_boolean32(0x00004000, "att_def32_read_audit", "Read Audit"),
1390 bf_boolean32(0x00008000, "att_def32_write_audit", "Write Audit"),
1391 bf_boolean32(0x00010000, "att_def32_purge", "Immediate Purge"),
1392 bf_boolean32(0x00020000, "att_def32_reninhibit", "Rename Inhibit"),
1393 bf_boolean32(0x00040000, "att_def32_delinhibit", "Delete Inhibit"),
1394 bf_boolean32(0x00080000, "att_def32_cpyinhibit", "Copy Inhibit"),
1395 bf_boolean32(0x00100000, "att_def32_file_audit", "File Audit"),
1396 bf_boolean32(0x00200000, "att_def32_reserved", "Reserved"),
1397 bf_boolean32(0x00400000, "att_def32_data_migrate", "Data Migrated"),
1398 bf_boolean32(0x00800000, "att_def32_inhibit_dm", "Inhibit Data Migration"),
1399 bf_boolean32(0x01000000, "att_def32_dm_save_key", "Data Migration Save Key"),
1400 bf_boolean32(0x02000000, "att_def32_im_comp", "Immediate Compress"),
1401 bf_boolean32(0x04000000, "att_def32_comp", "Compressed"),
1402 bf_boolean32(0x08000000, "att_def32_comp_inhibit", "Inhibit Compression"),
1403 bf_boolean32(0x10000000, "att_def32_reserved2", "Reserved"),
1404 bf_boolean32(0x20000000, "att_def32_cant_compress", "Can't Compress"),
1405 bf_boolean32(0x40000000, "att_def32_attr_archive", "Archive Attributes"),
1406 bf_boolean32(0x80000000, "att_def32_reserved3", "Reserved"),
1407 ])
1408 AttributeValidFlag = uint32("attribute_valid_flag", "Attribute Valid Flag")
1409 AuditFileVersionDate = uint16("audit_file_ver_date", "Audit File Version Date")
1410 AuditFileVersionDate.NWDate()
1411 AuditFlag = val_string8("audit_flag", "Audit Flag", [
1412 [ 0x00, "Do NOT audit object" ],
1413 [ 0x01, "Audit object" ],
1414 ])
1415 AuditHandle = uint32("audit_handle", "Audit File Handle")
1416 AuditHandle.Display("BASE_HEX")
1417 AuditID = uint32("audit_id", "Audit ID", ENC_BIG_ENDIAN)
1418 AuditID.Display("BASE_HEX")
1419 AuditIDType = val_string16("audit_id_type", "Audit ID Type", [
1420 [ 0x0000, "Volume" ],
1421 [ 0x0001, "Container" ],
1422 ])
1423 AuditVersionDate = uint16("audit_ver_date", "Auditing Version Date")
1424 AuditVersionDate.NWDate()
1425 AvailableBlocks = uint32("available_blocks", "Available Blocks")
1426 AvailableBlocks64 = uint64("available_blocks64", "Available Blocks")
1427 AvailableClusters = uint16("available_clusters", "Available Clusters")
1428 AvailableDirectorySlots = uint16("available_directory_slots", "Available Directory Slots")
1429 AvailableDirEntries = uint32("available_dir_entries", "Available Directory Entries")
1430 AvailableDirEntries64 = uint64("available_dir_entries64", "Available Directory Entries")
1431 AvailableIndexedFiles = uint16("available_indexed_files", "Available Indexed Files")
1432  
1433 BackgroundAgedWrites = uint32("background_aged_writes", "Background Aged Writes")
1434 BackgroundDirtyWrites = uint32("background_dirty_writes", "Background Dirty Writes")
1435 BadLogicalConnectionCount = uint16("bad_logical_connection_count", "Bad Logical Connection Count")
1436 BannerName = fw_string("banner_name", "Banner Name", 14)
1437 BaseDirectoryID = uint32("base_directory_id", "Base Directory ID", ENC_BIG_ENDIAN)
1438 BaseDirectoryID.Display("BASE_HEX")
1439 binderyContext = nstring8("bindery_context", "Bindery Context")
1440 BitMap = bytes("bit_map", "Bit Map", 512)
1441 BlockNumber = uint32("block_number", "Block Number")
1442 BlockSize = uint16("block_size", "Block Size")
1443 BlockSizeInSectors = uint32("block_size_in_sectors", "Block Size in Sectors")
1444 BoardInstalled = uint8("board_installed", "Board Installed")
1445 BoardNumber = uint32("board_number", "Board Number")
1446 BoardNumbers = uint32("board_numbers", "Board Numbers")
1447 BufferSize = uint16("buffer_size", "Buffer Size")
1448 BusString = stringz("bus_string", "Bus String")
1449 BusType = val_string8("bus_type", "Bus Type", [
1450 [0x00, "ISA"],
1451 [0x01, "Micro Channel" ],
1452 [0x02, "EISA"],
1453 [0x04, "PCI"],
1454 [0x08, "PCMCIA"],
1455 [0x10, "ISA"],
1456 [0x14, "ISA/PCI"],
1457 ])
1458 BytesActuallyTransferred = uint32("bytes_actually_transferred", "Bytes Actually Transferred")
1459 BytesActuallyTransferred64bit = uint64("bytes_actually_transferred_64", "Bytes Actually Transferred", ENC_LITTLE_ENDIAN)
1460 BytesActuallyTransferred64bit.Display("BASE_DEC")
1461 BytesRead = fw_string("bytes_read", "Bytes Read", 6)
1462 BytesToCopy = uint32("bytes_to_copy", "Bytes to Copy")
1463 BytesToCopy64bit = uint64("bytes_to_copy_64", "Bytes to Copy")
1464 BytesToCopy64bit.Display("BASE_DEC")
1465 BytesWritten = fw_string("bytes_written", "Bytes Written", 6)
1466  
1467 CacheAllocations = uint32("cache_allocations", "Cache Allocations")
1468 CacheBlockScrapped = uint16("cache_block_scrapped", "Cache Block Scrapped")
1469 CacheBufferCount = uint16("cache_buffer_count", "Cache Buffer Count")
1470 CacheBufferSize = uint16("cache_buffer_size", "Cache Buffer Size")
1471 CacheFullWriteRequests = uint32("cache_full_write_requests", "Cache Full Write Requests")
1472 CacheGetRequests = uint32("cache_get_requests", "Cache Get Requests")
1473 CacheHitOnUnavailableBlock = uint16("cache_hit_on_unavailable_block", "Cache Hit On Unavailable Block")
1474 CacheHits = uint32("cache_hits", "Cache Hits")
1475 CacheMisses = uint32("cache_misses", "Cache Misses")
1476 CachePartialWriteRequests = uint32("cache_partial_write_requests", "Cache Partial Write Requests")
1477 CacheReadRequests = uint32("cache_read_requests", "Cache Read Requests")
1478 CacheWriteRequests = uint32("cache_write_requests", "Cache Write Requests")
1479 CategoryName = stringz("category_name", "Category Name")
1480 CCFileHandle = uint32("cc_file_handle", "File Handle")
1481 CCFileHandle.Display("BASE_HEX")
1482 CCFunction = val_string8("cc_function", "OP-Lock Flag", [
1483 [ 0x01, "Clear OP-Lock" ],
1484 [ 0x02, "Acknowledge Callback" ],
1485 [ 0x03, "Decline Callback" ],
1486 [ 0x04, "Level 2" ],
1487 ])
1488 ChangeBits = bitfield16("change_bits", "Change Bits", [
1489 bf_boolean16(0x0001, "change_bits_modify", "Modify Name"),
1490 bf_boolean16(0x0002, "change_bits_fatt", "File Attributes"),
1491 bf_boolean16(0x0004, "change_bits_cdate", "Creation Date"),
1492 bf_boolean16(0x0008, "change_bits_ctime", "Creation Time"),
1493 bf_boolean16(0x0010, "change_bits_owner", "Owner ID"),
1494 bf_boolean16(0x0020, "change_bits_adate", "Archive Date"),
1495 bf_boolean16(0x0040, "change_bits_atime", "Archive Time"),
1496 bf_boolean16(0x0080, "change_bits_aid", "Archiver ID"),
1497 bf_boolean16(0x0100, "change_bits_udate", "Update Date"),
1498 bf_boolean16(0x0200, "change_bits_utime", "Update Time"),
1499 bf_boolean16(0x0400, "change_bits_uid", "Update ID"),
1500 bf_boolean16(0x0800, "change_bits_acc_date", "Access Date"),
1501 bf_boolean16(0x1000, "change_bits_max_acc_mask", "Maximum Access Mask"),
1502 bf_boolean16(0x2000, "change_bits_max_space", "Maximum Space"),
1503 ])
1504 ChannelState = val_string8("channel_state", "Channel State", [
1505 [ 0x00, "Channel is running" ],
1506 [ 0x01, "Channel is stopping" ],
1507 [ 0x02, "Channel is stopped" ],
1508 [ 0x03, "Channel is not functional" ],
1509 ])
1510 ChannelSynchronizationState = val_string8("channel_synchronization_state", "Channel Synchronization State", [
1511 [ 0x00, "Channel is not being used" ],
1512 [ 0x02, "NetWare is using the channel; no one else wants it" ],
1513 [ 0x04, "NetWare is using the channel; someone else wants it" ],
1514 [ 0x06, "Someone else is using the channel; NetWare does not need it" ],
1515 [ 0x08, "Someone else is using the channel; NetWare needs it" ],
1516 [ 0x0A, "Someone else has released the channel; NetWare should use it" ],
1517 ])
1518 ChargeAmount = uint32("charge_amount", "Charge Amount")
1519 ChargeInformation = uint32("charge_information", "Charge Information")
1520 ClientCompFlag = val_string16("client_comp_flag", "Completion Flag", [
1521 [ 0x0000, "Successful" ],
1522 [ 0x0001, "Illegal Station Number" ],
1523 [ 0x0002, "Client Not Logged In" ],
1524 [ 0x0003, "Client Not Accepting Messages" ],
1525 [ 0x0004, "Client Already has a Message" ],
1526 [ 0x0096, "No Alloc Space for the Message" ],
1527 [ 0x00fd, "Bad Station Number" ],
1528 [ 0x00ff, "Failure" ],
1529 ])
1530 ClientIDNumber = uint32("client_id_number", "Client ID Number", ENC_BIG_ENDIAN)
1531 ClientIDNumber.Display("BASE_HEX")
1532 ClientList = uint32("client_list", "Client List")
1533 ClientListCount = uint16("client_list_cnt", "Client List Count")
1534 ClientListLen = uint8("client_list_len", "Client List Length")
1535 ClientName = nstring8("client_name", "Client Name")
1536 ClientRecordArea = fw_string("client_record_area", "Client Record Area", 152)
1537 ClientStation = uint8("client_station", "Client Station")
1538 ClientStationLong = uint32("client_station_long", "Client Station")
1539 ClientTaskNumber = uint8("client_task_number", "Client Task Number")
1540 ClientTaskNumberLong = uint32("client_task_number_long", "Client Task Number")
1541 ClusterCount = uint16("cluster_count", "Cluster Count")
1542 ClustersUsedByDirectories = uint32("clusters_used_by_directories", "Clusters Used by Directories")
1543 ClustersUsedByExtendedDirectories = uint32("clusters_used_by_extended_dirs", "Clusters Used by Extended Directories")
1544 ClustersUsedByFAT = uint32("clusters_used_by_fat", "Clusters Used by FAT")
1545 CodePage = uint32("code_page", "Code Page")
1546 ComCnts = uint16("com_cnts", "Communication Counters")
1547 Comment = nstring8("comment", "Comment")
1548 CommentType = uint16("comment_type", "Comment Type")
1549 CompletionCode = uint32("ncompletion_code", "Completion Code")
1550 CompressedDataStreamsCount = uint32("compressed_data_streams_count", "Compressed Data Streams Count")
1551 CompressedLimboDataStreamsCount = uint32("compressed_limbo_data_streams_count", "Compressed Limbo Data Streams Count")
1552 CompressedSectors = uint32("compressed_sectors", "Compressed Sectors")
1553 compressionStage = uint32("compression_stage", "Compression Stage")
1554 compressVolume = uint32("compress_volume", "Volume Compression")
1555 ConfigMajorVN = uint8("config_major_vn", "Configuration Major Version Number")
1556 ConfigMinorVN = uint8("config_minor_vn", "Configuration Minor Version Number")
1557 ConfigurationDescription = fw_string("configuration_description", "Configuration Description", 80)
1558 ConfigurationText = fw_string("configuration_text", "Configuration Text", 160)
1559 ConfiguredMaxBinderyObjects = uint16("configured_max_bindery_objects", "Configured Max Bindery Objects")
1560 ConfiguredMaxOpenFiles = uint16("configured_max_open_files", "Configured Max Open Files")
1561 ConfiguredMaxRoutingBuffers = uint16("configured_max_routing_buffers", "Configured Max Routing Buffers")
1562 ConfiguredMaxSimultaneousTransactions = uint16("cfg_max_simultaneous_transactions", "Configured Max Simultaneous Transactions")
1563 ConnectedLAN = uint32("connected_lan", "LAN Adapter")
1564 ConnectionControlBits = bitfield8("conn_ctrl_bits", "Connection Control", [
1565 bf_boolean8(0x01, "enable_brdcasts", "Enable Broadcasts"),
1566 bf_boolean8(0x02, "enable_personal_brdcasts", "Enable Personal Broadcasts"),
1567 bf_boolean8(0x04, "enable_wdog_messages", "Enable Watchdog Message"),
1568 bf_boolean8(0x10, "disable_brdcasts", "Disable Broadcasts"),
1569 bf_boolean8(0x20, "disable_personal_brdcasts", "Disable Personal Broadcasts"),
1570 bf_boolean8(0x40, "disable_wdog_messages", "Disable Watchdog Message"),
1571 ])
1572 ConnectionListCount = uint32("conn_list_count", "Connection List Count")
1573 ConnectionList = uint32("connection_list", "Connection List")
1574 ConnectionNumber = uint32("connection_number", "Connection Number", ENC_BIG_ENDIAN)
1575 ConnectionNumberList = nstring8("connection_number_list", "Connection Number List")
1576 ConnectionNumberWord = uint16("conn_number_word", "Connection Number")
1577 ConnectionNumberByte = uint8("conn_number_byte", "Connection Number")
1578 ConnectionServiceType = val_string8("connection_service_type","Connection Service Type",[
1579 [ 0x01, "CLIB backward Compatibility" ],
1580 [ 0x02, "NCP Connection" ],
1581 [ 0x03, "NLM Connection" ],
1582 [ 0x04, "AFP Connection" ],
1583 [ 0x05, "FTAM Connection" ],
1584 [ 0x06, "ANCP Connection" ],
1585 [ 0x07, "ACP Connection" ],
1586 [ 0x08, "SMB Connection" ],
1587 [ 0x09, "Winsock Connection" ],
1588 ])
1589 ConnectionsInUse = uint16("connections_in_use", "Connections In Use")
1590 ConnectionsMaxUsed = uint16("connections_max_used", "Connections Max Used")
1591 ConnectionsSupportedMax = uint16("connections_supported_max", "Connections Supported Max")
1592 ConnectionType = val_string8("connection_type", "Connection Type", [
1593 [ 0x00, "Not in use" ],
1594 [ 0x02, "NCP" ],
1595 [ 0x0b, "UDP (for IP)" ],
1596 ])
1597 ConnListLen = uint8("conn_list_len", "Connection List Length")
1598 connList = uint32("conn_list", "Connection List")
1599 ControlFlags = val_string8("control_flags", "Control Flags", [
1600 [ 0x00, "Forced Record Locking is Off" ],
1601 [ 0x01, "Forced Record Locking is On" ],
1602 ])
1603 ControllerDriveNumber = uint8("controller_drive_number", "Controller Drive Number")
1604 ControllerNumber = uint8("controller_number", "Controller Number")
1605 ControllerType = uint8("controller_type", "Controller Type")
1606 Cookie1 = uint32("cookie_1", "Cookie 1")
1607 Cookie2 = uint32("cookie_2", "Cookie 2")
1608 Copies = uint8( "copies", "Copies" )
1609 CoprocessorFlag = uint32("co_processor_flag", "CoProcessor Present Flag")
1610 CoProcessorString = stringz("co_proc_string", "CoProcessor String")
1611 CounterMask = val_string8("counter_mask", "Counter Mask", [
1612 [ 0x00, "Counter is Valid" ],
1613 [ 0x01, "Counter is not Valid" ],
1614 ])
1615 CPUNumber = uint32("cpu_number", "CPU Number")
1616 CPUString = stringz("cpu_string", "CPU String")
1617 CPUType = val_string8("cpu_type", "CPU Type", [
1618 [ 0x00, "80386" ],
1619 [ 0x01, "80486" ],
1620 [ 0x02, "Pentium" ],
1621 [ 0x03, "Pentium Pro" ],
1622 ])
1623 CreationDate = uint16("creation_date", "Creation Date")
1624 CreationDate.NWDate()
1625 CreationTime = uint16("creation_time", "Creation Time")
1626 CreationTime.NWTime()
1627 CreatorID = uint32("creator_id", "Creator ID", ENC_BIG_ENDIAN)
1628 CreatorID.Display("BASE_HEX")
1629 CreatorNameSpaceNumber = val_string8("creator_name_space_number", "Creator Name Space Number", [
1630 [ 0x00, "DOS Name Space" ],
1631 [ 0x01, "MAC Name Space" ],
1632 [ 0x02, "NFS Name Space" ],
1633 [ 0x04, "Long Name Space" ],
1634 ])
1635 CreditLimit = uint32("credit_limit", "Credit Limit")
1636 CtrlFlags = val_string16("ctrl_flags", "Control Flags", [
1637 [ 0x0000, "Do Not Return File Name" ],
1638 [ 0x0001, "Return File Name" ],
1639 ])
1640 curCompBlks = uint32("cur_comp_blks", "Current Compression Blocks")
1641 curInitialBlks = uint32("cur_initial_blks", "Current Initial Blocks")
1642 curIntermediateBlks = uint32("cur_inter_blks", "Current Intermediate Blocks")
1643 CurNumOfRTags = uint32("cur_num_of_r_tags", "Current Number of Resource Tags")
1644 CurrentBlockBeingDecompressed = uint32("cur_blk_being_dcompress", "Current Block Being Decompressed")
1645 CurrentChangedFATs = uint16("current_changed_fats", "Current Changed FAT Entries")
1646 CurrentEntries = uint32("current_entries", "Current Entries")
1647 CurrentFormType = uint8( "current_form_type", "Current Form Type" )
1648 CurrentLFSCounters = uint32("current_lfs_counters", "Current LFS Counters")
1649 CurrentlyUsedRoutingBuffers = uint16("currently_used_routing_buffers", "Currently Used Routing Buffers")
1650 CurrentOpenFiles = uint16("current_open_files", "Current Open Files")
1651 CurrentReferenceID = uint16("curr_ref_id", "Current Reference ID")
1652 CurrentServers = uint32("current_servers", "Current Servers")
1653 CurrentServerTime = uint32("current_server_time", "Time Elapsed Since Server Was Brought Up")
1654 CurrentSpace = uint32("current_space", "Current Space")
1655 CurrentTransactionCount = uint32("current_trans_count", "Current Transaction Count")
1656 CurrentUsedBinderyObjects = uint16("current_used_bindery_objects", "Current Used Bindery Objects")
1657 CurrentUsedDynamicSpace = uint32("current_used_dynamic_space", "Current Used Dynamic Space")
1658 CustomCnts = uint32("custom_cnts", "Custom Counters")
1659 CustomCount = uint32("custom_count", "Custom Count")
1660 CustomCounters = uint32("custom_counters", "Custom Counters")
1661 CustomString = nstring8("custom_string", "Custom String")
1662 CustomVariableValue = uint32("custom_var_value", "Custom Variable Value")
1663  
1664 Data = nstring8("data", "Data")
1665 Data64 = stringz("data64", "Data")
1666 DataForkFirstFAT = uint32("data_fork_first_fat", "Data Fork First FAT Entry")
1667 DataForkLen = uint32("data_fork_len", "Data Fork Len")
1668 DataForkSize = uint32("data_fork_size", "Data Fork Size")
1669 DataSize = uint32("data_size", "Data Size")
1670 DataStream = val_string8("data_stream", "Data Stream", [
1671 [ 0x00, "Resource Fork or DOS" ],
1672 [ 0x01, "Data Fork" ],
1673 ])
1674 DataStreamFATBlocks = uint32("data_stream_fat_blks", "Data Stream FAT Blocks")
1675 DataStreamName = nstring8("data_stream_name", "Data Stream Name")
1676 DataStreamNumber = uint8("data_stream_number", "Data Stream Number")
1677 DataStreamNumberLong = uint32("data_stream_num_long", "Data Stream Number")
1678 DataStreamsCount = uint32("data_streams_count", "Data Streams Count")
1679 DataStreamSize = uint32("data_stream_size", "Size")
1680 DataStreamSize64 = uint64("data_stream_size_64", "Size")
1681 DataStreamSpaceAlloc = uint32( "data_stream_space_alloc", "Space Allocated for Data Stream" )
1682 DataTypeFlag = val_string8("data_type_flag", "Data Type Flag", [
1683 [ 0x00, "ASCII Data" ],
1684 [ 0x01, "UTF8 Data" ],
1685 ])
1686 Day = uint8("s_day", "Day")
1687 DayOfWeek = val_string8("s_day_of_week", "Day of Week", [
1688 [ 0x00, "Sunday" ],
1689 [ 0x01, "Monday" ],
1690 [ 0x02, "Tuesday" ],
1691 [ 0x03, "Wednesday" ],
1692 [ 0x04, "Thursday" ],
1693 [ 0x05, "Friday" ],
1694 [ 0x06, "Saturday" ],
1695 ])
1696 DeadMirrorTable = bytes("dead_mirror_table", "Dead Mirror Table", 32)
1697 DefinedDataStreams = uint8("defined_data_streams", "Defined Data Streams")
1698 DefinedNameSpaces = uint8("defined_name_spaces", "Defined Name Spaces")
1699 DeletedDate = uint16("deleted_date", "Deleted Date")
1700 DeletedDate.NWDate()
1701 DeletedFileTime = uint32( "deleted_file_time", "Deleted File Time")
1702 DeletedFileTime.Display("BASE_HEX")
1703 DeletedTime = uint16("deleted_time", "Deleted Time")
1704 DeletedTime.NWTime()
1705 DeletedID = uint32( "delete_id", "Deleted ID", ENC_BIG_ENDIAN)
1706 DeletedID.Display("BASE_HEX")
1707 DeleteExistingFileFlag = val_string8("delete_existing_file_flag", "Delete Existing File Flag", [
1708 [ 0x00, "Do Not Delete Existing File" ],
1709 [ 0x01, "Delete Existing File" ],
1710 ])
1711 DenyReadCount = uint16("deny_read_count", "Deny Read Count")
1712 DenyWriteCount = uint16("deny_write_count", "Deny Write Count")
1713 DescriptionStrings = fw_string("description_string", "Description", 100)
1714 DesiredAccessRights = bitfield16("desired_access_rights", "Desired Access Rights", [
1715 bf_boolean16(0x0001, "dsired_acc_rights_read_o", "Read Only"),
1716 bf_boolean16(0x0002, "dsired_acc_rights_write_o", "Write Only"),
1717 bf_boolean16(0x0004, "dsired_acc_rights_deny_r", "Deny Read"),
1718 bf_boolean16(0x0008, "dsired_acc_rights_deny_w", "Deny Write"),
1719 bf_boolean16(0x0010, "dsired_acc_rights_compat", "Compatibility"),
1720 bf_boolean16(0x0040, "dsired_acc_rights_w_thru", "File Write Through"),
1721 bf_boolean16(0x0400, "dsired_acc_rights_del_file_cls", "Delete File Close"),
1722 ])
1723 DesiredResponseCount = uint16("desired_response_count", "Desired Response Count")
1724 DestDirHandle = uint8("dest_dir_handle", "Destination Directory Handle")
1725 DestNameSpace = val_string8("dest_name_space", "Destination Name Space", [
1726 [ 0x00, "DOS Name Space" ],
1727 [ 0x01, "MAC Name Space" ],
1728 [ 0x02, "NFS Name Space" ],
1729 [ 0x04, "Long Name Space" ],
1730 ])
1731 DestPathComponentCount = uint8("dest_component_count", "Destination Path Component Count")
1732 DestPath = nstring8("dest_path", "Destination Path")
1733 DestPath16 = nstring16("dest_path_16", "Destination Path")
1734 DetachDuringProcessing = uint16("detach_during_processing", "Detach During Processing")
1735 DetachForBadConnectionNumber = uint16("detach_for_bad_connection_number", "Detach For Bad Connection Number")
1736 DirHandle = uint8("dir_handle", "Directory Handle")
1737 DirHandleName = uint8("dir_handle_name", "Handle Name")
1738 DirHandleLong = uint32("dir_handle_long", "Directory Handle")
1739 DirHandle64 = uint64("dir_handle64", "Directory Handle")
1740 DirectoryAccessRights = uint8("directory_access_rights", "Directory Access Rights")
1741 #
1742 # XXX - what do the bits mean here?
1743 #
1744 DirectoryAttributes = uint8("directory_attributes", "Directory Attributes")
1745 DirectoryBase = uint32("dir_base", "Directory Base")
1746 DirectoryBase.Display("BASE_HEX")
1747 DirectoryCount = uint16("dir_count", "Directory Count")
1748 DirectoryEntryNumber = uint32("directory_entry_number", "Directory Entry Number")
1749 DirectoryEntryNumber.Display('BASE_HEX')
1750 DirectoryEntryNumberWord = uint16("directory_entry_number_word", "Directory Entry Number")
1751 DirectoryID = uint16("directory_id", "Directory ID", ENC_BIG_ENDIAN)
1752 DirectoryID.Display("BASE_HEX")
1753 DirectoryName = fw_string("directory_name", "Directory Name",12)
1754 DirectoryName14 = fw_string("directory_name_14", "Directory Name", 14)
1755 DirectoryNameLen = uint8("directory_name_len", "Directory Name Length")
1756 DirectoryNumber = uint32("directory_number", "Directory Number")
1757 DirectoryNumber.Display("BASE_HEX")
1758 DirectoryPath = fw_string("directory_path", "Directory Path", 16)
1759 DirectoryServicesObjectID = uint32("directory_services_object_id", "Directory Services Object ID")
1760 DirectoryServicesObjectID.Display("BASE_HEX")
1761 DirectoryStamp = uint16("directory_stamp", "Directory Stamp (0xD1D1)")
1762 DirtyCacheBuffers = uint16("dirty_cache_buffers", "Dirty Cache Buffers")
1763 DiskChannelNumber = uint8("disk_channel_number", "Disk Channel Number")
1764 DiskChannelTable = val_string8("disk_channel_table", "Disk Channel Table", [
1765 [ 0x01, "XT" ],
1766 [ 0x02, "AT" ],
1767 [ 0x03, "SCSI" ],
1768 [ 0x04, "Disk Coprocessor" ],
1769 ])
1770 DiskSpaceLimit = uint32("disk_space_limit", "Disk Space Limit")
1771 DiskSpaceLimit64 = uint64("data_stream_size_64", "Size")
1772 DMAChannelsUsed = uint32("dma_channels_used", "DMA Channels Used")
1773 DMInfoEntries = uint32("dm_info_entries", "DM Info Entries")
1774 DMInfoLevel = val_string8("dm_info_level", "DM Info Level", [
1775 [ 0x00, "Return Detailed DM Support Module Information" ],
1776 [ 0x01, "Return Number of DM Support Modules" ],
1777 [ 0x02, "Return DM Support Modules Names" ],
1778 ])
1779 DMFlags = val_string8("dm_flags", "DM Flags", [
1780 [ 0x00, "OnLine Media" ],
1781 [ 0x01, "OffLine Media" ],
1782 ])
1783 DMmajorVersion = uint32("dm_major_version", "DM Major Version")
1784 DMminorVersion = uint32("dm_minor_version", "DM Minor Version")
1785 DMPresentFlag = val_string8("dm_present_flag", "Data Migration Present Flag", [
1786 [ 0x00, "Data Migration NLM is not loaded" ],
1787 [ 0x01, "Data Migration NLM has been loaded and is running" ],
1788 ])
1789 DOSDirectoryBase = uint32("dos_directory_base", "DOS Directory Base")
1790 DOSDirectoryBase.Display("BASE_HEX")
1791 DOSDirectoryEntry = uint32("dos_directory_entry", "DOS Directory Entry")
1792 DOSDirectoryEntry.Display("BASE_HEX")
1793 DOSDirectoryEntryNumber = uint32("dos_directory_entry_number", "DOS Directory Entry Number")
1794 DOSDirectoryEntryNumber.Display('BASE_HEX')
1795 DOSFileAttributes = uint8("dos_file_attributes", "DOS File Attributes")
1796 DOSParentDirectoryEntry = uint32("dos_parent_directory_entry", "DOS Parent Directory Entry")
1797 DOSParentDirectoryEntry.Display('BASE_HEX')
1798 DOSSequence = uint32("dos_sequence", "DOS Sequence")
1799 DriveCylinders = uint16("drive_cylinders", "Drive Cylinders")
1800 DriveDefinitionString = fw_string("drive_definition_string", "Drive Definition", 64)
1801 DriveHeads = uint8("drive_heads", "Drive Heads")
1802 DriveMappingTable = bytes("drive_mapping_table", "Drive Mapping Table", 32)
1803 DriveMirrorTable = bytes("drive_mirror_table", "Drive Mirror Table", 32)
1804 DriverBoardName = stringz("driver_board_name", "Driver Board Name")
1805 DriveRemovableFlag = val_string8("drive_removable_flag", "Drive Removable Flag", [
1806 [ 0x00, "Nonremovable" ],
1807 [ 0xff, "Removable" ],
1808 ])
1809 DriverLogicalName = stringz("driver_log_name", "Driver Logical Name")
1810 DriverShortName = stringz("driver_short_name", "Driver Short Name")
1811 DriveSize = uint32("drive_size", "Drive Size")
1812 DstEAFlags = val_string16("dst_ea_flags", "Destination EA Flags", [
1813 [ 0x0000, "Return EAHandle,Information Level 0" ],
1814 [ 0x0001, "Return NetWareHandle,Information Level 0" ],
1815 [ 0x0002, "Return Volume/Directory Number,Information Level 0" ],
1816 [ 0x0004, "Return EAHandle,Close Handle on Error,Information Level 0" ],
1817 [ 0x0005, "Return NetWareHandle,Close Handle on Error,Information Level 0" ],
1818 [ 0x0006, "Return Volume/Directory Number,Close Handle on Error,Information Level 0" ],
1819 [ 0x0010, "Return EAHandle,Information Level 1" ],
1820 [ 0x0011, "Return NetWareHandle,Information Level 1" ],
1821 [ 0x0012, "Return Volume/Directory Number,Information Level 1" ],
1822 [ 0x0014, "Return EAHandle,Close Handle on Error,Information Level 1" ],
1823 [ 0x0015, "Return NetWareHandle,Close Handle on Error,Information Level 1" ],
1824 [ 0x0016, "Return Volume/Directory Number,Close Handle on Error,Information Level 1" ],
1825 [ 0x0020, "Return EAHandle,Information Level 2" ],
1826 [ 0x0021, "Return NetWareHandle,Information Level 2" ],
1827 [ 0x0022, "Return Volume/Directory Number,Information Level 2" ],
1828 [ 0x0024, "Return EAHandle,Close Handle on Error,Information Level 2" ],
1829 [ 0x0025, "Return NetWareHandle,Close Handle on Error,Information Level 2" ],
1830 [ 0x0026, "Return Volume/Directory Number,Close Handle on Error,Information Level 2" ],
1831 [ 0x0030, "Return EAHandle,Information Level 3" ],
1832 [ 0x0031, "Return NetWareHandle,Information Level 3" ],
1833 [ 0x0032, "Return Volume/Directory Number,Information Level 3" ],
1834 [ 0x0034, "Return EAHandle,Close Handle on Error,Information Level 3" ],
1835 [ 0x0035, "Return NetWareHandle,Close Handle on Error,Information Level 3" ],
1836 [ 0x0036, "Return Volume/Directory Number,Close Handle on Error,Information Level 3" ],
1837 [ 0x0040, "Return EAHandle,Information Level 4" ],
1838 [ 0x0041, "Return NetWareHandle,Information Level 4" ],
1839 [ 0x0042, "Return Volume/Directory Number,Information Level 4" ],
1840 [ 0x0044, "Return EAHandle,Close Handle on Error,Information Level 4" ],
1841 [ 0x0045, "Return NetWareHandle,Close Handle on Error,Information Level 4" ],
1842 [ 0x0046, "Return Volume/Directory Number,Close Handle on Error,Information Level 4" ],
1843 [ 0x0050, "Return EAHandle,Information Level 5" ],
1844 [ 0x0051, "Return NetWareHandle,Information Level 5" ],
1845 [ 0x0052, "Return Volume/Directory Number,Information Level 5" ],
1846 [ 0x0054, "Return EAHandle,Close Handle on Error,Information Level 5" ],
1847 [ 0x0055, "Return NetWareHandle,Close Handle on Error,Information Level 5" ],
1848 [ 0x0056, "Return Volume/Directory Number,Close Handle on Error,Information Level 5" ],
1849 [ 0x0060, "Return EAHandle,Information Level 6" ],
1850 [ 0x0061, "Return NetWareHandle,Information Level 6" ],
1851 [ 0x0062, "Return Volume/Directory Number,Information Level 6" ],
1852 [ 0x0064, "Return EAHandle,Close Handle on Error,Information Level 6" ],
1853 [ 0x0065, "Return NetWareHandle,Close Handle on Error,Information Level 6" ],
1854 [ 0x0066, "Return Volume/Directory Number,Close Handle on Error,Information Level 6" ],
1855 [ 0x0070, "Return EAHandle,Information Level 7" ],
1856 [ 0x0071, "Return NetWareHandle,Information Level 7" ],
1857 [ 0x0072, "Return Volume/Directory Number,Information Level 7" ],
1858 [ 0x0074, "Return EAHandle,Close Handle on Error,Information Level 7" ],
1859 [ 0x0075, "Return NetWareHandle,Close Handle on Error,Information Level 7" ],
1860 [ 0x0076, "Return Volume/Directory Number,Close Handle on Error,Information Level 7" ],
1861 [ 0x0080, "Return EAHandle,Information Level 0,Immediate Close Handle" ],
1862 [ 0x0081, "Return NetWareHandle,Information Level 0,Immediate Close Handle" ],
1863 [ 0x0082, "Return Volume/Directory Number,Information Level 0,Immediate Close Handle" ],
1864 [ 0x0084, "Return EAHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
1865 [ 0x0085, "Return NetWareHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
1866 [ 0x0086, "Return Volume/Directory Number,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
1867 [ 0x0090, "Return EAHandle,Information Level 1,Immediate Close Handle" ],
1868 [ 0x0091, "Return NetWareHandle,Information Level 1,Immediate Close Handle" ],
1869 [ 0x0092, "Return Volume/Directory Number,Information Level 1,Immediate Close Handle" ],
1870 [ 0x0094, "Return EAHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
1871 [ 0x0095, "Return NetWareHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
1872 [ 0x0096, "Return Volume/Directory Number,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
1873 [ 0x00a0, "Return EAHandle,Information Level 2,Immediate Close Handle" ],
1874 [ 0x00a1, "Return NetWareHandle,Information Level 2,Immediate Close Handle" ],
1875 [ 0x00a2, "Return Volume/Directory Number,Information Level 2,Immediate Close Handle" ],
1876 [ 0x00a4, "Return EAHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
1877 [ 0x00a5, "Return NetWareHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
1878 [ 0x00a6, "Return Volume/Directory Number,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
1879 [ 0x00b0, "Return EAHandle,Information Level 3,Immediate Close Handle" ],
1880 [ 0x00b1, "Return NetWareHandle,Information Level 3,Immediate Close Handle" ],
1881 [ 0x00b2, "Return Volume/Directory Number,Information Level 3,Immediate Close Handle" ],
1882 [ 0x00b4, "Return EAHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
1883 [ 0x00b5, "Return NetWareHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
1884 [ 0x00b6, "Return Volume/Directory Number,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
1885 [ 0x00c0, "Return EAHandle,Information Level 4,Immediate Close Handle" ],
1886 [ 0x00c1, "Return NetWareHandle,Information Level 4,Immediate Close Handle" ],
1887 [ 0x00c2, "Return Volume/Directory Number,Information Level 4,Immediate Close Handle" ],
1888 [ 0x00c4, "Return EAHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
1889 [ 0x00c5, "Return NetWareHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
1890 [ 0x00c6, "Return Volume/Directory Number,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
1891 [ 0x00d0, "Return EAHandle,Information Level 5,Immediate Close Handle" ],
1892 [ 0x00d1, "Return NetWareHandle,Information Level 5,Immediate Close Handle" ],
1893 [ 0x00d2, "Return Volume/Directory Number,Information Level 5,Immediate Close Handle" ],
1894 [ 0x00d4, "Return EAHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
1895 [ 0x00d5, "Return NetWareHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
1896 [ 0x00d6, "Return Volume/Directory Number,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
1897 [ 0x00e0, "Return EAHandle,Information Level 6,Immediate Close Handle" ],
1898 [ 0x00e1, "Return NetWareHandle,Information Level 6,Immediate Close Handle" ],
1899 [ 0x00e2, "Return Volume/Directory Number,Information Level 6,Immediate Close Handle" ],
1900 [ 0x00e4, "Return EAHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
1901 [ 0x00e5, "Return NetWareHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
1902 [ 0x00e6, "Return Volume/Directory Number,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
1903 [ 0x00f0, "Return EAHandle,Information Level 7,Immediate Close Handle" ],
1904 [ 0x00f1, "Return NetWareHandle,Information Level 7,Immediate Close Handle" ],
1905 [ 0x00f2, "Return Volume/Directory Number,Information Level 7,Immediate Close Handle" ],
1906 [ 0x00f4, "Return EAHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
1907 [ 0x00f5, "Return NetWareHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
1908 [ 0x00f6, "Return Volume/Directory Number,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
1909 ])
1910 dstNSIndicator = val_string16("dst_ns_indicator", "Destination Name Space Indicator", [
1911 [ 0x0000, "Return Source Name Space Information" ],
1912 [ 0x0001, "Return Destination Name Space Information" ],
1913 ])
1914 DstQueueID = uint32("dst_queue_id", "Destination Queue ID")
1915 DuplicateRepliesSent = uint16("duplicate_replies_sent", "Duplicate Replies Sent")
1916  
1917 EAAccessFlag = bitfield16("ea_access_flag", "EA Access Flag", [
1918 bf_boolean16(0x0001, "ea_permanent_memory", "Permanent Memory"),
1919 bf_boolean16(0x0002, "ea_deep_freeze", "Deep Freeze"),
1920 bf_boolean16(0x0004, "ea_in_progress", "In Progress"),
1921 bf_boolean16(0x0008, "ea_header_being_enlarged", "Header Being Enlarged"),
1922 bf_boolean16(0x0010, "ea_new_tally_used", "New Tally Used"),
1923 bf_boolean16(0x0020, "ea_tally_need_update", "Tally Need Update"),
1924 bf_boolean16(0x0040, "ea_score_card_present", "Score Card Present"),
1925 bf_boolean16(0x0080, "ea_need_bit_flag", "EA Need Bit Flag"),
1926 bf_boolean16(0x0100, "ea_write_privileges", "Write Privileges"),
1927 bf_boolean16(0x0200, "ea_read_privileges", "Read Privileges"),
1928 bf_boolean16(0x0400, "ea_delete_privileges", "Delete Privileges"),
1929 bf_boolean16(0x0800, "ea_system_ea_only", "System EA Only"),
1930 bf_boolean16(0x1000, "ea_write_in_progress", "Write In Progress"),
1931 ])
1932 EABytesWritten = uint32("ea_bytes_written", "Bytes Written")
1933 EACount = uint32("ea_count", "Count")
1934 EADataSize = uint32("ea_data_size", "Data Size")
1935 EADataSizeDuplicated = uint32("ea_data_size_duplicated", "Data Size Duplicated")
1936 EADuplicateCount = uint32("ea_duplicate_count", "Duplicate Count")
1937 EAErrorCodes = val_string16("ea_error_codes", "EA Error Codes", [
1938 [ 0x0000, "SUCCESSFUL" ],
1939 [ 0x00c8, "ERR_MISSING_EA_KEY" ],
1940 [ 0x00c9, "ERR_EA_NOT_FOUND" ],
1941 [ 0x00ca, "ERR_INVALID_EA_HANDLE_TYPE" ],
1942 [ 0x00cb, "ERR_EA_NO_KEY_NO_DATA" ],
1943 [ 0x00cc, "ERR_EA_NUMBER_MISMATCH" ],
1944 [ 0x00cd, "ERR_EXTENT_NUMBER_OUT_OF_RANGE" ],
1945 [ 0x00ce, "ERR_EA_BAD_DIR_NUM" ],
1946 [ 0x00cf, "ERR_INVALID_EA_HANDLE" ],
1947 [ 0x00d0, "ERR_EA_POSITION_OUT_OF_RANGE" ],
1948 [ 0x00d1, "ERR_EA_ACCESS_DENIED" ],
1949 [ 0x00d2, "ERR_DATA_PAGE_ODD_SIZE" ],
1950 [ 0x00d3, "ERR_EA_VOLUME_NOT_MOUNTED" ],
1951 [ 0x00d4, "ERR_BAD_PAGE_BOUNDARY" ],
1952 [ 0x00d5, "ERR_INSPECT_FAILURE" ],
1953 [ 0x00d6, "ERR_EA_ALREADY_CLAIMED" ],
1954 [ 0x00d7, "ERR_ODD_BUFFER_SIZE" ],
1955 [ 0x00d8, "ERR_NO_SCORECARDS" ],
1956 [ 0x00d9, "ERR_BAD_EDS_SIGNATURE" ],
1957 [ 0x00da, "ERR_EA_SPACE_LIMIT" ],
1958 [ 0x00db, "ERR_EA_KEY_CORRUPT" ],
1959 [ 0x00dc, "ERR_EA_KEY_LIMIT" ],
1960 [ 0x00dd, "ERR_TALLY_CORRUPT" ],
1961 ])
1962 EAFlags = val_string16("ea_flags", "EA Flags", [
1963 [ 0x0000, "Return EAHandle,Information Level 0" ],
1964 [ 0x0001, "Return NetWareHandle,Information Level 0" ],
1965 [ 0x0002, "Return Volume/Directory Number,Information Level 0" ],
1966 [ 0x0004, "Return EAHandle,Close Handle on Error,Information Level 0" ],
1967 [ 0x0005, "Return NetWareHandle,Close Handle on Error,Information Level 0" ],
1968 [ 0x0006, "Return Volume/Directory Number,Close Handle on Error,Information Level 0" ],
1969 [ 0x0010, "Return EAHandle,Information Level 1" ],
1970 [ 0x0011, "Return NetWareHandle,Information Level 1" ],
1971 [ 0x0012, "Return Volume/Directory Number,Information Level 1" ],
1972 [ 0x0014, "Return EAHandle,Close Handle on Error,Information Level 1" ],
1973 [ 0x0015, "Return NetWareHandle,Close Handle on Error,Information Level 1" ],
1974 [ 0x0016, "Return Volume/Directory Number,Close Handle on Error,Information Level 1" ],
1975 [ 0x0020, "Return EAHandle,Information Level 2" ],
1976 [ 0x0021, "Return NetWareHandle,Information Level 2" ],
1977 [ 0x0022, "Return Volume/Directory Number,Information Level 2" ],
1978 [ 0x0024, "Return EAHandle,Close Handle on Error,Information Level 2" ],
1979 [ 0x0025, "Return NetWareHandle,Close Handle on Error,Information Level 2" ],
1980 [ 0x0026, "Return Volume/Directory Number,Close Handle on Error,Information Level 2" ],
1981 [ 0x0030, "Return EAHandle,Information Level 3" ],
1982 [ 0x0031, "Return NetWareHandle,Information Level 3" ],
1983 [ 0x0032, "Return Volume/Directory Number,Information Level 3" ],
1984 [ 0x0034, "Return EAHandle,Close Handle on Error,Information Level 3" ],
1985 [ 0x0035, "Return NetWareHandle,Close Handle on Error,Information Level 3" ],
1986 [ 0x0036, "Return Volume/Directory Number,Close Handle on Error,Information Level 3" ],
1987 [ 0x0040, "Return EAHandle,Information Level 4" ],
1988 [ 0x0041, "Return NetWareHandle,Information Level 4" ],
1989 [ 0x0042, "Return Volume/Directory Number,Information Level 4" ],
1990 [ 0x0044, "Return EAHandle,Close Handle on Error,Information Level 4" ],
1991 [ 0x0045, "Return NetWareHandle,Close Handle on Error,Information Level 4" ],
1992 [ 0x0046, "Return Volume/Directory Number,Close Handle on Error,Information Level 4" ],
1993 [ 0x0050, "Return EAHandle,Information Level 5" ],
1994 [ 0x0051, "Return NetWareHandle,Information Level 5" ],
1995 [ 0x0052, "Return Volume/Directory Number,Information Level 5" ],
1996 [ 0x0054, "Return EAHandle,Close Handle on Error,Information Level 5" ],
1997 [ 0x0055, "Return NetWareHandle,Close Handle on Error,Information Level 5" ],
1998 [ 0x0056, "Return Volume/Directory Number,Close Handle on Error,Information Level 5" ],
1999 [ 0x0060, "Return EAHandle,Information Level 6" ],
2000 [ 0x0061, "Return NetWareHandle,Information Level 6" ],
2001 [ 0x0062, "Return Volume/Directory Number,Information Level 6" ],
2002 [ 0x0064, "Return EAHandle,Close Handle on Error,Information Level 6" ],
2003 [ 0x0065, "Return NetWareHandle,Close Handle on Error,Information Level 6" ],
2004 [ 0x0066, "Return Volume/Directory Number,Close Handle on Error,Information Level 6" ],
2005 [ 0x0070, "Return EAHandle,Information Level 7" ],
2006 [ 0x0071, "Return NetWareHandle,Information Level 7" ],
2007 [ 0x0072, "Return Volume/Directory Number,Information Level 7" ],
2008 [ 0x0074, "Return EAHandle,Close Handle on Error,Information Level 7" ],
2009 [ 0x0075, "Return NetWareHandle,Close Handle on Error,Information Level 7" ],
2010 [ 0x0076, "Return Volume/Directory Number,Close Handle on Error,Information Level 7" ],
2011 [ 0x0080, "Return EAHandle,Information Level 0,Immediate Close Handle" ],
2012 [ 0x0081, "Return NetWareHandle,Information Level 0,Immediate Close Handle" ],
2013 [ 0x0082, "Return Volume/Directory Number,Information Level 0,Immediate Close Handle" ],
2014 [ 0x0084, "Return EAHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
2015 [ 0x0085, "Return NetWareHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
2016 [ 0x0086, "Return Volume/Directory Number,Close Handle on Error,Information Level 0,Immediate Close Handle" ],
2017 [ 0x0090, "Return EAHandle,Information Level 1,Immediate Close Handle" ],
2018 [ 0x0091, "Return NetWareHandle,Information Level 1,Immediate Close Handle" ],
2019 [ 0x0092, "Return Volume/Directory Number,Information Level 1,Immediate Close Handle" ],
2020 [ 0x0094, "Return EAHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
2021 [ 0x0095, "Return NetWareHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
2022 [ 0x0096, "Return Volume/Directory Number,Close Handle on Error,Information Level 1,Immediate Close Handle" ],
2023 [ 0x00a0, "Return EAHandle,Information Level 2,Immediate Close Handle" ],
2024 [ 0x00a1, "Return NetWareHandle,Information Level 2,Immediate Close Handle" ],
2025 [ 0x00a2, "Return Volume/Directory Number,Information Level 2,Immediate Close Handle" ],
2026 [ 0x00a4, "Return EAHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
2027 [ 0x00a5, "Return NetWareHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
2028 [ 0x00a6, "Return Volume/Directory Number,Close Handle on Error,Information Level 2,Immediate Close Handle" ],
2029 [ 0x00b0, "Return EAHandle,Information Level 3,Immediate Close Handle" ],
2030 [ 0x00b1, "Return NetWareHandle,Information Level 3,Immediate Close Handle" ],
2031 [ 0x00b2, "Return Volume/Directory Number,Information Level 3,Immediate Close Handle" ],
2032 [ 0x00b4, "Return EAHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
2033 [ 0x00b5, "Return NetWareHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
2034 [ 0x00b6, "Return Volume/Directory Number,Close Handle on Error,Information Level 3,Immediate Close Handle" ],
2035 [ 0x00c0, "Return EAHandle,Information Level 4,Immediate Close Handle" ],
2036 [ 0x00c1, "Return NetWareHandle,Information Level 4,Immediate Close Handle" ],
2037 [ 0x00c2, "Return Volume/Directory Number,Information Level 4,Immediate Close Handle" ],
2038 [ 0x00c4, "Return EAHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
2039 [ 0x00c5, "Return NetWareHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
2040 [ 0x00c6, "Return Volume/Directory Number,Close Handle on Error,Information Level 4,Immediate Close Handle" ],
2041 [ 0x00d0, "Return EAHandle,Information Level 5,Immediate Close Handle" ],
2042 [ 0x00d1, "Return NetWareHandle,Information Level 5,Immediate Close Handle" ],
2043 [ 0x00d2, "Return Volume/Directory Number,Information Level 5,Immediate Close Handle" ],
2044 [ 0x00d4, "Return EAHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
2045 [ 0x00d5, "Return NetWareHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
2046 [ 0x00d6, "Return Volume/Directory Number,Close Handle on Error,Information Level 5,Immediate Close Handle" ],
2047 [ 0x00e0, "Return EAHandle,Information Level 6,Immediate Close Handle" ],
2048 [ 0x00e1, "Return NetWareHandle,Information Level 6,Immediate Close Handle" ],
2049 [ 0x00e2, "Return Volume/Directory Number,Information Level 6,Immediate Close Handle" ],
2050 [ 0x00e4, "Return EAHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
2051 [ 0x00e5, "Return NetWareHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
2052 [ 0x00e6, "Return Volume/Directory Number,Close Handle on Error,Information Level 6,Immediate Close Handle" ],
2053 [ 0x00f0, "Return EAHandle,Information Level 7,Immediate Close Handle" ],
2054 [ 0x00f1, "Return NetWareHandle,Information Level 7,Immediate Close Handle" ],
2055 [ 0x00f2, "Return Volume/Directory Number,Information Level 7,Immediate Close Handle" ],
2056 [ 0x00f4, "Return EAHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
2057 [ 0x00f5, "Return NetWareHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
2058 [ 0x00f6, "Return Volume/Directory Number,Close Handle on Error,Information Level 7,Immediate Close Handle" ],
2059 ])
2060 EAHandle = uint32("ea_handle", "EA Handle")
2061 EAHandle.Display("BASE_HEX")
2062 EAHandleOrNetWareHandleOrVolume = uint32("ea_handle_or_netware_handle_or_volume", "EAHandle or NetWare Handle or Volume (see EAFlags)")
2063 EAHandleOrNetWareHandleOrVolume.Display("BASE_HEX")
2064 EAKey = nstring16("ea_key", "EA Key")
2065 EAKeySize = uint32("ea_key_size", "Key Size")
2066 EAKeySizeDuplicated = uint32("ea_key_size_duplicated", "Key Size Duplicated")
2067 EAValue = nstring16("ea_value", "EA Value")
2068 EAValueRep = fw_string("ea_value_rep", "EA Value", 1)
2069 EAValueLength = uint16("ea_value_length", "Value Length")
2070 EchoSocket = uint16("echo_socket", "Echo Socket")
2071 EchoSocket.Display('BASE_HEX')
2072 EffectiveRights = bitfield8("effective_rights", "Effective Rights", [
2073 bf_boolean8(0x01, "effective_rights_read", "Read Rights"),
2074 bf_boolean8(0x02, "effective_rights_write", "Write Rights"),
2075 bf_boolean8(0x04, "effective_rights_open", "Open Rights"),
2076 bf_boolean8(0x08, "effective_rights_create", "Create Rights"),
2077 bf_boolean8(0x10, "effective_rights_delete", "Delete Rights"),
2078 bf_boolean8(0x20, "effective_rights_parental", "Parental Rights"),
2079 bf_boolean8(0x40, "effective_rights_search", "Search Rights"),
2080 bf_boolean8(0x80, "effective_rights_modify", "Modify Rights"),
2081 ])
2082 EnumInfoMask = bitfield8("enum_info_mask", "Return Information Mask", [
2083 bf_boolean8(0x01, "enum_info_transport", "Transport Information"),
2084 bf_boolean8(0x02, "enum_info_time", "Time Information"),
2085 bf_boolean8(0x04, "enum_info_name", "Name Information"),
2086 bf_boolean8(0x08, "enum_info_lock", "Lock Information"),
2087 bf_boolean8(0x10, "enum_info_print", "Print Information"),
2088 bf_boolean8(0x20, "enum_info_stats", "Statistical Information"),
2089 bf_boolean8(0x40, "enum_info_account", "Accounting Information"),
2090 bf_boolean8(0x80, "enum_info_auth", "Authentication Information"),
2091 ])
2092  
2093 eventOffset = bytes("event_offset", "Event Offset", 8)
2094 eventTime = uint32("event_time", "Event Time")
2095 eventTime.Display("BASE_HEX")
2096 ExpirationTime = uint32("expiration_time", "Expiration Time")
2097 ExpirationTime.Display('BASE_HEX')
2098 ExtAttrDataSize = uint32("ext_attr_data_size", "Extended Attributes Data Size")
2099 ExtAttrCount = uint32("ext_attr_count", "Extended Attributes Count")
2100 ExtAttrKeySize = uint32("ext_attr_key_size", "Extended Attributes Key Size")
2101 ExtendedAttributesDefined = uint32("extended_attributes_defined", "Extended Attributes Defined")
2102 ExtendedAttributeExtentsUsed = uint32("extended_attribute_extents_used", "Extended Attribute Extents Used")
2103 ExtendedInfo = bitfield16("ext_info", "Extended Return Information", [
2104 bf_boolean16(0x0001, "ext_info_update", "Last Update"),
2105 bf_boolean16(0x0002, "ext_info_dos_name", "DOS Name"),
2106 bf_boolean16(0x0004, "ext_info_flush", "Flush Time"),
2107 bf_boolean16(0x0008, "ext_info_parental", "Parental"),
2108 bf_boolean16(0x0010, "ext_info_mac_finder", "MAC Finder"),
2109 bf_boolean16(0x0020, "ext_info_sibling", "Sibling"),
2110 bf_boolean16(0x0040, "ext_info_effective", "Effective"),
2111 bf_boolean16(0x0080, "ext_info_mac_date", "MAC Date"),
2112 bf_boolean16(0x0100, "ext_info_access", "Last Access"),
2113 bf_boolean16(0x0400, "ext_info_64_bit_fs", "64 Bit File Sizes"),
2114 bf_boolean16(0x8000, "ext_info_newstyle", "New Style"),
2115 ])
2116  
2117 ExtentListFormat = uint8("ext_lst_format", "Extent List Format")
2118 RetExtentListCount = uint8("ret_ext_lst_count", "Extent List Count")
2119 EndingOffset = bytes("end_offset", "Ending Offset", 8)
2120 #ExtentLength = bytes("extent_length", "Length", 8),
2121 ExtentList = bytes("ext_lst", "Extent List", 512)
2122 ExtRouterActiveFlag = boolean8("ext_router_active_flag", "External Router Active Flag")
2123  
2124 FailedAllocReqCnt = uint32("failed_alloc_req", "Failed Alloc Request Count")
2125 FatalFATWriteErrors = uint16("fatal_fat_write_errors", "Fatal FAT Write Errors")
2126 FATScanErrors = uint16("fat_scan_errors", "FAT Scan Errors")
2127 FATWriteErrors = uint16("fat_write_errors", "FAT Write Errors")
2128 FieldsLenTable = bytes("fields_len_table", "Fields Len Table", 32)
2129 FileCount = uint16("file_count", "File Count")
2130 FileDate = uint16("file_date", "File Date")
2131 FileDate.NWDate()
2132 FileDirWindow = uint16("file_dir_win", "File/Dir Window")
2133 FileDirWindow.Display("BASE_HEX")
2134 FileExecuteType = uint8("file_execute_type", "File Execute Type")
2135 FileExtendedAttributes = val_string8("file_ext_attr", "File Extended Attributes", [
2136 [ 0x00, "Search On All Read Only Opens" ],
2137 [ 0x01, "Search On Read Only Opens With No Path" ],
2138 [ 0x02, "Shell Default Search Mode" ],
2139 [ 0x03, "Search On All Opens With No Path" ],
2140 [ 0x04, "Do Not Search" ],
2141 [ 0x05, "Reserved" ],
2142 [ 0x06, "Search On All Opens" ],
2143 [ 0x07, "Reserved" ],
2144 [ 0x08, "Search On All Read Only Opens/Indexed" ],
2145 [ 0x09, "Search On Read Only Opens With No Path/Indexed" ],
2146 [ 0x0a, "Shell Default Search Mode/Indexed" ],
2147 [ 0x0b, "Search On All Opens With No Path/Indexed" ],
2148 [ 0x0c, "Do Not Search/Indexed" ],
2149 [ 0x0d, "Indexed" ],
2150 [ 0x0e, "Search On All Opens/Indexed" ],
2151 [ 0x0f, "Indexed" ],
2152 [ 0x10, "Search On All Read Only Opens/Transactional" ],
2153 [ 0x11, "Search On Read Only Opens With No Path/Transactional" ],
2154 [ 0x12, "Shell Default Search Mode/Transactional" ],
2155 [ 0x13, "Search On All Opens With No Path/Transactional" ],
2156 [ 0x14, "Do Not Search/Transactional" ],
2157 [ 0x15, "Transactional" ],
2158 [ 0x16, "Search On All Opens/Transactional" ],
2159 [ 0x17, "Transactional" ],
2160 [ 0x18, "Search On All Read Only Opens/Indexed/Transactional" ],
2161 [ 0x19, "Search On Read Only Opens With No Path/Indexed/Transactional" ],
2162 [ 0x1a, "Shell Default Search Mode/Indexed/Transactional" ],
2163 [ 0x1b, "Search On All Opens With No Path/Indexed/Transactional" ],
2164 [ 0x1c, "Do Not Search/Indexed/Transactional" ],
2165 [ 0x1d, "Indexed/Transactional" ],
2166 [ 0x1e, "Search On All Opens/Indexed/Transactional" ],
2167 [ 0x1f, "Indexed/Transactional" ],
2168 [ 0x40, "Search On All Read Only Opens/Read Audit" ],
2169 [ 0x41, "Search On Read Only Opens With No Path/Read Audit" ],
2170 [ 0x42, "Shell Default Search Mode/Read Audit" ],
2171 [ 0x43, "Search On All Opens With No Path/Read Audit" ],
2172 [ 0x44, "Do Not Search/Read Audit" ],
2173 [ 0x45, "Read Audit" ],
2174 [ 0x46, "Search On All Opens/Read Audit" ],
2175 [ 0x47, "Read Audit" ],
2176 [ 0x48, "Search On All Read Only Opens/Indexed/Read Audit" ],
2177 [ 0x49, "Search On Read Only Opens With No Path/Indexed/Read Audit" ],
2178 [ 0x4a, "Shell Default Search Mode/Indexed/Read Audit" ],
2179 [ 0x4b, "Search On All Opens With No Path/Indexed/Read Audit" ],
2180 [ 0x4c, "Do Not Search/Indexed/Read Audit" ],
2181 [ 0x4d, "Indexed/Read Audit" ],
2182 [ 0x4e, "Search On All Opens/Indexed/Read Audit" ],
2183 [ 0x4f, "Indexed/Read Audit" ],
2184 [ 0x50, "Search On All Read Only Opens/Transactional/Read Audit" ],
2185 [ 0x51, "Search On Read Only Opens With No Path/Transactional/Read Audit" ],
2186 [ 0x52, "Shell Default Search Mode/Transactional/Read Audit" ],
2187 [ 0x53, "Search On All Opens With No Path/Transactional/Read Audit" ],
2188 [ 0x54, "Do Not Search/Transactional/Read Audit" ],
2189 [ 0x55, "Transactional/Read Audit" ],
2190 [ 0x56, "Search On All Opens/Transactional/Read Audit" ],
2191 [ 0x57, "Transactional/Read Audit" ],
2192 [ 0x58, "Search On All Read Only Opens/Indexed/Transactional/Read Audit" ],
2193 [ 0x59, "Search On Read Only Opens With No Path/Indexed/Transactional/Read Audit" ],
2194 [ 0x5a, "Shell Default Search Mode/Indexed/Transactional/Read Audit" ],
2195 [ 0x5b, "Search On All Opens With No Path/Indexed/Transactional/Read Audit" ],
2196 [ 0x5c, "Do Not Search/Indexed/Transactional/Read Audit" ],
2197 [ 0x5d, "Indexed/Transactional/Read Audit" ],
2198 [ 0x5e, "Search On All Opens/Indexed/Transactional/Read Audit" ],
2199 [ 0x5f, "Indexed/Transactional/Read Audit" ],
2200 [ 0x80, "Search On All Read Only Opens/Write Audit" ],
2201 [ 0x81, "Search On Read Only Opens With No Path/Write Audit" ],
2202 [ 0x82, "Shell Default Search Mode/Write Audit" ],
2203 [ 0x83, "Search On All Opens With No Path/Write Audit" ],
2204 [ 0x84, "Do Not Search/Write Audit" ],
2205 [ 0x85, "Write Audit" ],
2206 [ 0x86, "Search On All Opens/Write Audit" ],
2207 [ 0x87, "Write Audit" ],
2208 [ 0x88, "Search On All Read Only Opens/Indexed/Write Audit" ],
2209 [ 0x89, "Search On Read Only Opens With No Path/Indexed/Write Audit" ],
2210 [ 0x8a, "Shell Default Search Mode/Indexed/Write Audit" ],
2211 [ 0x8b, "Search On All Opens With No Path/Indexed/Write Audit" ],
2212 [ 0x8c, "Do Not Search/Indexed/Write Audit" ],
2213 [ 0x8d, "Indexed/Write Audit" ],
2214 [ 0x8e, "Search On All Opens/Indexed/Write Audit" ],
2215 [ 0x8f, "Indexed/Write Audit" ],
2216 [ 0x90, "Search On All Read Only Opens/Transactional/Write Audit" ],
2217 [ 0x91, "Search On Read Only Opens With No Path/Transactional/Write Audit" ],
2218 [ 0x92, "Shell Default Search Mode/Transactional/Write Audit" ],
2219 [ 0x93, "Search On All Opens With No Path/Transactional/Write Audit" ],
2220 [ 0x94, "Do Not Search/Transactional/Write Audit" ],
2221 [ 0x95, "Transactional/Write Audit" ],
2222 [ 0x96, "Search On All Opens/Transactional/Write Audit" ],
2223 [ 0x97, "Transactional/Write Audit" ],
2224 [ 0x98, "Search On All Read Only Opens/Indexed/Transactional/Write Audit" ],
2225 [ 0x99, "Search On Read Only Opens With No Path/Indexed/Transactional/Write Audit" ],
2226 [ 0x9a, "Shell Default Search Mode/Indexed/Transactional/Write Audit" ],
2227 [ 0x9b, "Search On All Opens With No Path/Indexed/Transactional/Write Audit" ],
2228 [ 0x9c, "Do Not Search/Indexed/Transactional/Write Audit" ],
2229 [ 0x9d, "Indexed/Transactional/Write Audit" ],
2230 [ 0x9e, "Search On All Opens/Indexed/Transactional/Write Audit" ],
2231 [ 0x9f, "Indexed/Transactional/Write Audit" ],
2232 [ 0xa0, "Search On All Read Only Opens/Read Audit/Write Audit" ],
2233 [ 0xa1, "Search On Read Only Opens With No Path/Read Audit/Write Audit" ],
2234 [ 0xa2, "Shell Default Search Mode/Read Audit/Write Audit" ],
2235 [ 0xa3, "Search On All Opens With No Path/Read Audit/Write Audit" ],
2236 [ 0xa4, "Do Not Search/Read Audit/Write Audit" ],
2237 [ 0xa5, "Read Audit/Write Audit" ],
2238 [ 0xa6, "Search On All Opens/Read Audit/Write Audit" ],
2239 [ 0xa7, "Read Audit/Write Audit" ],
2240 [ 0xa8, "Search On All Read Only Opens/Indexed/Read Audit/Write Audit" ],
2241 [ 0xa9, "Search On Read Only Opens With No Path/Indexed/Read Audit/Write Audit" ],
2242 [ 0xaa, "Shell Default Search Mode/Indexed/Read Audit/Write Audit" ],
2243 [ 0xab, "Search On All Opens With No Path/Indexed/Read Audit/Write Audit" ],
2244 [ 0xac, "Do Not Search/Indexed/Read Audit/Write Audit" ],
2245 [ 0xad, "Indexed/Read Audit/Write Audit" ],
2246 [ 0xae, "Search On All Opens/Indexed/Read Audit/Write Audit" ],
2247 [ 0xaf, "Indexed/Read Audit/Write Audit" ],
2248 [ 0xb0, "Search On All Read Only Opens/Transactional/Read Audit/Write Audit" ],
2249 [ 0xb1, "Search On Read Only Opens With No Path/Transactional/Read Audit/Write Audit" ],
2250 [ 0xb2, "Shell Default Search Mode/Transactional/Read Audit/Write Audit" ],
2251 [ 0xb3, "Search On All Opens With No Path/Transactional/Read Audit/Write Audit" ],
2252 [ 0xb4, "Do Not Search/Transactional/Read Audit/Write Audit" ],
2253 [ 0xb5, "Transactional/Read Audit/Write Audit" ],
2254 [ 0xb6, "Search On All Opens/Transactional/Read Audit/Write Audit" ],
2255 [ 0xb7, "Transactional/Read Audit/Write Audit" ],
2256 [ 0xb8, "Search On All Read Only Opens/Indexed/Transactional/Read Audit/Write Audit" ],
2257 [ 0xb9, "Search On Read Only Opens With No Path/Indexed/Transactional/Read Audit/Write Audit" ],
2258 [ 0xba, "Shell Default Search Mode/Indexed/Transactional/Read Audit/Write Audit" ],
2259 [ 0xbb, "Search On All Opens With No Path/Indexed/Transactional/Read Audit/Write Audit" ],
2260 [ 0xbc, "Do Not Search/Indexed/Transactional/Read Audit/Write Audit" ],
2261 [ 0xbd, "Indexed/Transactional/Read Audit/Write Audit" ],
2262 [ 0xbe, "Search On All Opens/Indexed/Transactional/Read Audit/Write Audit" ],
2263 [ 0xbf, "Indexed/Transactional/Read Audit/Write Audit" ],
2264 ])
2265 fileFlags = uint32("file_flags", "File Flags")
2266 FileHandle = bytes("file_handle", "File Handle", 6)
2267 FileLimbo = uint32("file_limbo", "File Limbo")
2268 FileListCount = uint32("file_list_count", "File List Count")
2269 FileLock = val_string8("file_lock", "File Lock", [
2270 [ 0x00, "Not Locked" ],
2271 [ 0xfe, "Locked by file lock" ],
2272 [ 0xff, "Unknown" ],
2273 ])
2274 FileLockCount = uint16("file_lock_count", "File Lock Count")
2275 FileMigrationState = val_string8("file_mig_state", "File Migration State", [
2276 [ 0x00, "Mark file ineligible for file migration" ],
2277 [ 0x01, "Mark file eligible for file migration" ],
2278 [ 0x02, "Mark file as migrated and delete fat chains" ],
2279 [ 0x03, "Reset file status back to normal" ],
2280 [ 0x04, "Get file data back and reset file status back to normal" ],
2281 ])
2282 FileMode = uint8("file_mode", "File Mode")
2283 FileName = nstring8("file_name", "Filename")
2284 FileName12 = fw_string("file_name_12", "Filename", 12)
2285 FileName14 = fw_string("file_name_14", "Filename", 14)
2286 FileName16 = nstring16("file_name_16", "Filename")
2287 FileNameLen = uint8("file_name_len", "Filename Length")
2288 FileOffset = uint32("file_offset", "File Offset")
2289 FilePath = nstring8("file_path", "File Path")
2290 FileSize = uint32("file_size", "File Size", ENC_BIG_ENDIAN)
2291 FileSize64bit = uint64("f_size_64bit", "64bit File Size")
2292 FileSystemID = uint8("file_system_id", "File System ID")
2293 FileTime = uint16("file_time", "File Time")
2294 FileTime.NWTime()
2295 FileUseCount = uint16("file_use_count", "File Use Count")
2296 FileWriteFlags = val_string8("file_write_flags", "File Write Flags", [
2297 [ 0x01, "Writing" ],
2298 [ 0x02, "Write aborted" ],
2299 ])
2300 FileWriteState = val_string8("file_write_state", "File Write State", [
2301 [ 0x00, "Not Writing" ],
2302 [ 0x01, "Write in Progress" ],
2303 [ 0x02, "Write Being Stopped" ],
2304 ])
2305 Filler = uint8("filler", "Filler")
2306 FinderAttr = bitfield16("finder_attr", "Finder Info Attributes", [
2307 bf_boolean16(0x0001, "finder_attr_desktop", "Object on Desktop"),
2308 bf_boolean16(0x2000, "finder_attr_invisible", "Object is Invisible"),
2309 bf_boolean16(0x4000, "finder_attr_bundle", "Object Has Bundle"),
2310 ])
2311 FixedBitMask = uint32("fixed_bit_mask", "Fixed Bit Mask")
2312 FixedBitsDefined = uint16("fixed_bits_defined", "Fixed Bits Defined")
2313 FlagBits = uint8("flag_bits", "Flag Bits")
2314 Flags = uint8("flags", "Flags")
2315 FlagsDef = uint16("flags_def", "Flags")
2316 FlushTime = uint32("flush_time", "Flush Time")
2317 FolderFlag = val_string8("folder_flag", "Folder Flag", [
2318 [ 0x00, "Not a Folder" ],
2319 [ 0x01, "Folder" ],
2320 ])
2321 ForkCount = uint8("fork_count", "Fork Count")
2322 ForkIndicator = val_string8("fork_indicator", "Fork Indicator", [
2323 [ 0x00, "Data Fork" ],
2324 [ 0x01, "Resource Fork" ],
2325 ])
2326 ForceFlag = val_string8("force_flag", "Force Server Down Flag", [
2327 [ 0x00, "Down Server if No Files Are Open" ],
2328 [ 0xff, "Down Server Immediately, Auto-Close Open Files" ],
2329 ])
2330 ForgedDetachedRequests = uint16("forged_detached_requests", "Forged Detached Requests")
2331 FormType = uint16( "form_type", "Form Type" )
2332 FormTypeCnt = uint32("form_type_count", "Form Types Count")
2333 FoundSomeMem = uint32("found_some_mem", "Found Some Memory")
2334 FractionalSeconds = eptime("fractional_time", "Fractional Time in Seconds")
2335 FraggerHandle = uint32("fragger_handle", "Fragment Handle")
2336 FraggerHandle.Display('BASE_HEX')
2337 FragmentWriteOccurred = uint16("fragment_write_occurred", "Fragment Write Occurred")
2338 FragSize = uint32("frag_size", "Fragment Size")
2339 FreeableLimboSectors = uint32("freeable_limbo_sectors", "Freeable Limbo Sectors")
2340 FreeBlocks = uint32("free_blocks", "Free Blocks")
2341 FreedClusters = uint32("freed_clusters", "Freed Clusters")
2342 FreeDirectoryEntries = uint16("free_directory_entries", "Free Directory Entries")
2343 FSEngineFlag = boolean8("fs_engine_flag", "FS Engine Flag")
2344 FullName = fw_string("full_name", "Full Name", 39)
2345  
2346 GetSetFlag = val_string8("get_set_flag", "Get Set Flag", [
2347 [ 0x00, "Get the default support module ID" ],
2348 [ 0x01, "Set the default support module ID" ],
2349 ])
2350 GUID = bytes("guid", "GUID", 16)
2351  
2352 HandleFlag = val_string8("handle_flag", "Handle Flag", [
2353 [ 0x00, "Short Directory Handle" ],
2354 [ 0x01, "Directory Base" ],
2355 [ 0xFF, "No Handle Present" ],
2356 ])
2357 HandleInfoLevel = val_string8("handle_info_level", "Handle Info Level", [
2358 [ 0x00, "Get Limited Information from a File Handle" ],
2359 [ 0x01, "Get Limited Information from a File Handle Using a Name Space" ],
2360 [ 0x02, "Get Information from a File Handle" ],
2361 [ 0x03, "Get Information from a Directory Handle" ],
2362 [ 0x04, "Get Complete Information from a Directory Handle" ],
2363 [ 0x05, "Get Complete Information from a File Handle" ],
2364 ])
2365 HeldBytesRead = bytes("held_bytes_read", "Held Bytes Read", 6)
2366 HeldBytesWritten = bytes("held_bytes_write", "Held Bytes Written", 6)
2367 HeldConnectTimeInMinutes = uint32("held_conn_time", "Held Connect Time in Minutes")
2368 HeldRequests = uint32("user_info_held_req", "Held Requests")
2369 HoldAmount = uint32("hold_amount", "Hold Amount")
2370 HoldCancelAmount = uint32("hold_cancel_amount", "Hold Cancel Amount")
2371 HolderID = uint32("holder_id", "Holder ID")
2372 HolderID.Display("BASE_HEX")
2373 HoldTime = uint32("hold_time", "Hold Time")
2374 HopsToNet = uint16("hops_to_net", "Hop Count")
2375 HorizLocation = uint16("horiz_location", "Horizontal Location")
2376 HostAddress = bytes("host_address", "Host Address", 6)
2377 HotFixBlocksAvailable = uint16("hot_fix_blocks_available", "Hot Fix Blocks Available")
2378 HotFixDisabled = val_string8("hot_fix_disabled", "Hot Fix Disabled", [
2379 [ 0x00, "Enabled" ],
2380 [ 0x01, "Disabled" ],
2381 ])
2382 HotFixTableSize = uint16("hot_fix_table_size", "Hot Fix Table Size")
2383 HotFixTableStart = uint32("hot_fix_table_start", "Hot Fix Table Start")
2384 Hour = uint8("s_hour", "Hour")
2385 HugeBitMask = uint32("huge_bit_mask", "Huge Bit Mask")
2386 HugeBitsDefined = uint16("huge_bits_defined", "Huge Bits Defined")
2387 HugeData = nstring8("huge_data", "Huge Data")
2388 HugeDataUsed = uint32("huge_data_used", "Huge Data Used")
2389 HugeStateInfo = bytes("huge_state_info", "Huge State Info", 16)
2390  
2391 IdentificationNumber = uint32("identification_number", "Identification Number")
2392 IgnoredRxPkts = uint32("ignored_rx_pkts", "Ignored Receive Packets")
2393 IncomingPacketDiscardedNoDGroup = uint16("incoming_packet_discarded_no_dgroup", "Incoming Packet Discarded No DGroup")
2394 IndexNumber = uint8("index_number", "Index Number")
2395 InfoCount = uint16("info_count", "Info Count")
2396 InfoFlags = bitfield32("info_flags", "Info Flags", [
2397 bf_boolean32(0x10000000, "info_flags_security", "Return Object Security"),
2398 bf_boolean32(0x20000000, "info_flags_flags", "Return Object Flags"),
2399 bf_boolean32(0x40000000, "info_flags_type", "Return Object Type"),
2400 bf_boolean32(0x80000000, "info_flags_name", "Return Object Name"),
2401 ])
2402 InfoLevelNumber = val_string8("info_level_num", "Information Level Number", [
2403 [ 0x0, "Single Directory Quota Information" ],
2404 [ 0x1, "Multi-Level Directory Quota Information" ],
2405 ])
2406 InfoMask = bitfield32("info_mask", "Information Mask", [
2407 bf_boolean32(0x00000001, "info_flags_dos_time", "DOS Time"),
2408 bf_boolean32(0x00000002, "info_flags_ref_count", "Reference Count"),
2409 bf_boolean32(0x00000004, "info_flags_dos_attr", "DOS Attributes"),
2410 bf_boolean32(0x00000008, "info_flags_ids", "ID's"),
2411 bf_boolean32(0x00000010, "info_flags_ds_sizes", "Data Stream Sizes"),
2412 bf_boolean32(0x00000020, "info_flags_ns_attr", "Name Space Attributes"),
2413 bf_boolean32(0x00000040, "info_flags_ea_present", "EA Present Flag"),
2414 bf_boolean32(0x00000080, "info_flags_all_attr", "All Attributes"),
2415 bf_boolean32(0x00000100, "info_flags_all_dirbase_num", "All Directory Base Numbers"),
2416 bf_boolean32(0x00000200, "info_flags_max_access_mask", "Maximum Access Mask"),
2417 bf_boolean32(0x00000400, "info_flags_flush_time", "Flush Time"),
2418 bf_boolean32(0x00000800, "info_flags_prnt_base_id", "Parent Base ID"),
2419 bf_boolean32(0x00001000, "info_flags_mac_finder", "Mac Finder Information"),
2420 bf_boolean32(0x00002000, "info_flags_sibling_cnt", "Sibling Count"),
2421 bf_boolean32(0x00004000, "info_flags_effect_rights", "Effective Rights"),
2422 bf_boolean32(0x00008000, "info_flags_mac_time", "Mac Time"),
2423 bf_boolean32(0x20000000, "info_mask_dosname", "DOS Name"),
2424 bf_boolean32(0x40000000, "info_mask_c_name_space", "Creator Name Space & Name"),
2425 bf_boolean32(0x80000000, "info_mask_name", "Name"),
2426 ])
2427 InheritedRightsMask = bitfield16("inherited_rights_mask", "Inherited Rights Mask", [
2428 bf_boolean16(0x0001, "inh_rights_read", "Read Rights"),
2429 bf_boolean16(0x0002, "inh_rights_write", "Write Rights"),
2430 bf_boolean16(0x0004, "inh_rights_open", "Open Rights"),
2431 bf_boolean16(0x0008, "inh_rights_create", "Create Rights"),
2432 bf_boolean16(0x0010, "inh_rights_delete", "Delete Rights"),
2433 bf_boolean16(0x0020, "inh_rights_parent", "Change Access"),
2434 bf_boolean16(0x0040, "inh_rights_search", "See Files Flag"),
2435 bf_boolean16(0x0080, "inh_rights_modify", "Modify Rights"),
2436 bf_boolean16(0x0100, "inh_rights_supervisor", "Supervisor"),
2437 ])
2438 InheritanceRevokeMask = bitfield16("inheritance_revoke_mask", "Revoke Rights Mask", [
2439 bf_boolean16(0x0001, "inh_revoke_read", "Read Rights"),
2440 bf_boolean16(0x0002, "inh_revoke_write", "Write Rights"),
2441 bf_boolean16(0x0004, "inh_revoke_open", "Open Rights"),
2442 bf_boolean16(0x0008, "inh_revoke_create", "Create Rights"),
2443 bf_boolean16(0x0010, "inh_revoke_delete", "Delete Rights"),
2444 bf_boolean16(0x0020, "inh_revoke_parent", "Change Access"),
2445 bf_boolean16(0x0040, "inh_revoke_search", "See Files Flag"),
2446 bf_boolean16(0x0080, "inh_revoke_modify", "Modify Rights"),
2447 bf_boolean16(0x0100, "inh_revoke_supervisor", "Supervisor"),
2448 ])
2449 InitialSemaphoreValue = uint8("initial_semaphore_value", "Initial Semaphore Value")
2450 InpInfotype = uint32("inp_infotype", "Information Type")
2451 Inpld = uint32("inp_ld", "Volume Number or Directory Handle")
2452 InspectSize = uint32("inspect_size", "Inspect Size")
2453 InternetBridgeVersion = uint8("internet_bridge_version", "Internet Bridge Version")
2454 InterruptNumbersUsed = uint32("interrupt_numbers_used", "Interrupt Numbers Used")
2455 InUse = uint32("in_use", "Blocks in Use")
2456 InUse64 = uint64("in_use64", "Blocks in Use")
2457 IOAddressesUsed = bytes("io_addresses_used", "IO Addresses Used", 8)
2458 IOErrorCount = uint16("io_error_count", "IO Error Count")
2459 IOEngineFlag = boolean8("io_engine_flag", "IO Engine Flag")
2460 IPXNotMyNetwork = uint16("ipx_not_my_network", "IPX Not My Network")
2461 ItemsChanged = uint32("items_changed", "Items Changed")
2462 ItemsChecked = uint32("items_checked", "Items Checked")
2463 ItemsCount = uint32("items_count", "Items Count")
2464 itemsInList = uint32("items_in_list", "Items in List")
2465 ItemsInPacket = uint32("items_in_packet", "Items in Packet")
2466  
2467 JobControlFlags = bitfield8("job_control_flags", "Job Control Flags", [
2468 bf_boolean8(0x08, "job_control_job_recovery", "Job Recovery"),
2469 bf_boolean8(0x10, "job_control_reservice", "ReService Job"),
2470 bf_boolean8(0x20, "job_control_file_open", "File Open"),
2471 bf_boolean8(0x40, "job_control_user_hold", "User Hold"),
2472 bf_boolean8(0x80, "job_control_operator_hold", "Operator Hold"),
2473  
2474 ])
2475 JobControlFlagsWord = bitfield16("job_control_flags_word", "Job Control Flags", [
2476 bf_boolean16(0x0008, "job_control1_job_recovery", "Job Recovery"),
2477 bf_boolean16(0x0010, "job_control1_reservice", "ReService Job"),
2478 bf_boolean16(0x0020, "job_control1_file_open", "File Open"),
2479 bf_boolean16(0x0040, "job_control1_user_hold", "User Hold"),
2480 bf_boolean16(0x0080, "job_control1_operator_hold", "Operator Hold"),
2481  
2482 ])
2483 JobCount = uint32("job_count", "Job Count")
2484 JobFileHandle = bytes("job_file_handle", "Job File Handle", 6)
2485 JobFileHandleLong = uint32("job_file_handle_long", "Job File Handle", ENC_BIG_ENDIAN)
2486 JobFileHandleLong.Display("BASE_HEX")
2487 JobFileName = fw_string("job_file_name", "Job File Name", 14)
2488 JobPosition = uint8("job_position", "Job Position")
2489 JobPositionWord = uint16("job_position_word", "Job Position")
2490 JobNumber = uint16("job_number", "Job Number", ENC_BIG_ENDIAN )
2491 JobNumberLong = uint32("job_number_long", "Job Number", ENC_BIG_ENDIAN )
2492 JobNumberLong.Display("BASE_HEX")
2493 JobType = uint16("job_type", "Job Type", ENC_BIG_ENDIAN )
2494  
2495 LANCustomVariablesCount = uint32("lan_cust_var_count", "LAN Custom Variables Count")
2496 LANdriverBoardInstance = uint16("lan_drv_bd_inst", "LAN Driver Board Instance")
2497 LANdriverBoardNumber = uint16("lan_drv_bd_num", "LAN Driver Board Number")
2498 LANdriverCardID = uint16("lan_drv_card_id", "LAN Driver Card ID")
2499 LANdriverCardName = fw_string("lan_drv_card_name", "LAN Driver Card Name", 28)
2500 LANdriverCFG_MajorVersion = uint8("lan_dvr_cfg_major_vrs", "LAN Driver Config - Major Version")
2501 LANdriverCFG_MinorVersion = uint8("lan_dvr_cfg_minor_vrs", "LAN Driver Config - Minor Version")
2502 LANdriverDMAUsage1 = uint8("lan_drv_dma_usage1", "Primary DMA Channel")
2503 LANdriverDMAUsage2 = uint8("lan_drv_dma_usage2", "Secondary DMA Channel")
2504 LANdriverFlags = uint16("lan_drv_flags", "LAN Driver Flags")
2505 LANdriverFlags.Display("BASE_HEX")
2506 LANdriverInterrupt1 = uint8("lan_drv_interrupt1", "Primary Interrupt Vector")
2507 LANdriverInterrupt2 = uint8("lan_drv_interrupt2", "Secondary Interrupt Vector")
2508 LANdriverIOPortsAndRanges1 = uint16("lan_drv_io_ports_and_ranges_1", "Primary Base I/O Port")
2509 LANdriverIOPortsAndRanges2 = uint16("lan_drv_io_ports_and_ranges_2", "Number of I/O Ports")
2510 LANdriverIOPortsAndRanges3 = uint16("lan_drv_io_ports_and_ranges_3", "Secondary Base I/O Port")
2511 LANdriverIOPortsAndRanges4 = uint16("lan_drv_io_ports_and_ranges_4", "Number of I/O Ports")
2512 LANdriverIOReserved = bytes("lan_drv_io_reserved", "LAN Driver IO Reserved", 14)
2513 LANdriverLineSpeed = uint16("lan_drv_line_speed", "LAN Driver Line Speed")
2514 LANdriverLink = uint32("lan_drv_link", "LAN Driver Link")
2515 LANdriverLogicalName = bytes("lan_drv_log_name", "LAN Driver Logical Name", 18)
2516 LANdriverMajorVersion = uint8("lan_drv_major_ver", "LAN Driver Major Version")
2517 LANdriverMaximumSize = uint32("lan_drv_max_size", "LAN Driver Maximum Size")
2518 LANdriverMaxRecvSize = uint32("lan_drv_max_rcv_size", "LAN Driver Maximum Receive Size")
2519 LANdriverMediaID = uint16("lan_drv_media_id", "LAN Driver Media ID")
2520 LANdriverMediaType = fw_string("lan_drv_media_type", "LAN Driver Media Type", 40)
2521 LANdriverMemoryDecode0 = uint32("lan_drv_mem_decode_0", "LAN Driver Memory Decode 0")
2522 LANdriverMemoryDecode1 = uint32("lan_drv_mem_decode_1", "LAN Driver Memory Decode 1")
2523 LANdriverMemoryLength0 = uint16("lan_drv_mem_length_0", "LAN Driver Memory Length 0")
2524 LANdriverMemoryLength1 = uint16("lan_drv_mem_length_1", "LAN Driver Memory Length 1")
2525 LANdriverMinorVersion = uint8("lan_drv_minor_ver", "LAN Driver Minor Version")
2526 LANdriverModeFlags = val_string8("lan_dvr_mode_flags", "LAN Driver Mode Flags", [
2527 [0x80, "Canonical Address" ],
2528 [0x81, "Canonical Address" ],
2529 [0x82, "Canonical Address" ],
2530 [0x83, "Canonical Address" ],
2531 [0x84, "Canonical Address" ],
2532 [0x85, "Canonical Address" ],
2533 [0x86, "Canonical Address" ],
2534 [0x87, "Canonical Address" ],
2535 [0x88, "Canonical Address" ],
2536 [0x89, "Canonical Address" ],
2537 [0x8a, "Canonical Address" ],
2538 [0x8b, "Canonical Address" ],
2539 [0x8c, "Canonical Address" ],
2540 [0x8d, "Canonical Address" ],
2541 [0x8e, "Canonical Address" ],
2542 [0x8f, "Canonical Address" ],
2543 [0x90, "Canonical Address" ],
2544 [0x91, "Canonical Address" ],
2545 [0x92, "Canonical Address" ],
2546 [0x93, "Canonical Address" ],
2547 [0x94, "Canonical Address" ],
2548 [0x95, "Canonical Address" ],
2549 [0x96, "Canonical Address" ],
2550 [0x97, "Canonical Address" ],
2551 [0x98, "Canonical Address" ],
2552 [0x99, "Canonical Address" ],
2553 [0x9a, "Canonical Address" ],
2554 [0x9b, "Canonical Address" ],
2555 [0x9c, "Canonical Address" ],
2556 [0x9d, "Canonical Address" ],
2557 [0x9e, "Canonical Address" ],
2558 [0x9f, "Canonical Address" ],
2559 [0xa0, "Canonical Address" ],
2560 [0xa1, "Canonical Address" ],
2561 [0xa2, "Canonical Address" ],
2562 [0xa3, "Canonical Address" ],
2563 [0xa4, "Canonical Address" ],
2564 [0xa5, "Canonical Address" ],
2565 [0xa6, "Canonical Address" ],
2566 [0xa7, "Canonical Address" ],
2567 [0xa8, "Canonical Address" ],
2568 [0xa9, "Canonical Address" ],
2569 [0xaa, "Canonical Address" ],
2570 [0xab, "Canonical Address" ],
2571 [0xac, "Canonical Address" ],
2572 [0xad, "Canonical Address" ],
2573 [0xae, "Canonical Address" ],
2574 [0xaf, "Canonical Address" ],
2575 [0xb0, "Canonical Address" ],
2576 [0xb1, "Canonical Address" ],
2577 [0xb2, "Canonical Address" ],
2578 [0xb3, "Canonical Address" ],
2579 [0xb4, "Canonical Address" ],
2580 [0xb5, "Canonical Address" ],
2581 [0xb6, "Canonical Address" ],
2582 [0xb7, "Canonical Address" ],
2583 [0xb8, "Canonical Address" ],
2584 [0xb9, "Canonical Address" ],
2585 [0xba, "Canonical Address" ],
2586 [0xbb, "Canonical Address" ],
2587 [0xbc, "Canonical Address" ],
2588 [0xbd, "Canonical Address" ],
2589 [0xbe, "Canonical Address" ],
2590 [0xbf, "Canonical Address" ],
2591 [0xc0, "Non-Canonical Address" ],
2592 [0xc1, "Non-Canonical Address" ],
2593 [0xc2, "Non-Canonical Address" ],
2594 [0xc3, "Non-Canonical Address" ],
2595 [0xc4, "Non-Canonical Address" ],
2596 [0xc5, "Non-Canonical Address" ],
2597 [0xc6, "Non-Canonical Address" ],
2598 [0xc7, "Non-Canonical Address" ],
2599 [0xc8, "Non-Canonical Address" ],
2600 [0xc9, "Non-Canonical Address" ],
2601 [0xca, "Non-Canonical Address" ],
2602 [0xcb, "Non-Canonical Address" ],
2603 [0xcc, "Non-Canonical Address" ],
2604 [0xcd, "Non-Canonical Address" ],
2605 [0xce, "Non-Canonical Address" ],
2606 [0xcf, "Non-Canonical Address" ],
2607 [0xd0, "Non-Canonical Address" ],
2608 [0xd1, "Non-Canonical Address" ],
2609 [0xd2, "Non-Canonical Address" ],
2610 [0xd3, "Non-Canonical Address" ],
2611 [0xd4, "Non-Canonical Address" ],
2612 [0xd5, "Non-Canonical Address" ],
2613 [0xd6, "Non-Canonical Address" ],
2614 [0xd7, "Non-Canonical Address" ],
2615 [0xd8, "Non-Canonical Address" ],
2616 [0xd9, "Non-Canonical Address" ],
2617 [0xda, "Non-Canonical Address" ],
2618 [0xdb, "Non-Canonical Address" ],
2619 [0xdc, "Non-Canonical Address" ],
2620 [0xdd, "Non-Canonical Address" ],
2621 [0xde, "Non-Canonical Address" ],
2622 [0xdf, "Non-Canonical Address" ],
2623 [0xe0, "Non-Canonical Address" ],
2624 [0xe1, "Non-Canonical Address" ],
2625 [0xe2, "Non-Canonical Address" ],
2626 [0xe3, "Non-Canonical Address" ],
2627 [0xe4, "Non-Canonical Address" ],
2628 [0xe5, "Non-Canonical Address" ],
2629 [0xe6, "Non-Canonical Address" ],
2630 [0xe7, "Non-Canonical Address" ],
2631 [0xe8, "Non-Canonical Address" ],
2632 [0xe9, "Non-Canonical Address" ],
2633 [0xea, "Non-Canonical Address" ],
2634 [0xeb, "Non-Canonical Address" ],
2635 [0xec, "Non-Canonical Address" ],
2636 [0xed, "Non-Canonical Address" ],
2637 [0xee, "Non-Canonical Address" ],
2638 [0xef, "Non-Canonical Address" ],
2639 [0xf0, "Non-Canonical Address" ],
2640 [0xf1, "Non-Canonical Address" ],
2641 [0xf2, "Non-Canonical Address" ],
2642 [0xf3, "Non-Canonical Address" ],
2643 [0xf4, "Non-Canonical Address" ],
2644 [0xf5, "Non-Canonical Address" ],
2645 [0xf6, "Non-Canonical Address" ],
2646 [0xf7, "Non-Canonical Address" ],
2647 [0xf8, "Non-Canonical Address" ],
2648 [0xf9, "Non-Canonical Address" ],
2649 [0xfa, "Non-Canonical Address" ],
2650 [0xfb, "Non-Canonical Address" ],
2651 [0xfc, "Non-Canonical Address" ],
2652 [0xfd, "Non-Canonical Address" ],
2653 [0xfe, "Non-Canonical Address" ],
2654 [0xff, "Non-Canonical Address" ],
2655 ])
2656 LANDriverNumber = uint8("lan_driver_number", "LAN Driver Number")
2657 LANdriverNodeAddress = bytes("lan_dvr_node_addr", "LAN Driver Node Address", 6)
2658 LANdriverRecvSize = uint32("lan_drv_rcv_size", "LAN Driver Receive Size")
2659 LANdriverReserved = uint16("lan_drv_reserved", "LAN Driver Reserved")
2660 LANdriverSendRetries = uint16("lan_drv_snd_retries", "LAN Driver Send Retries")
2661 LANdriverSharingFlags = uint16("lan_drv_share", "LAN Driver Sharing Flags")
2662 LANdriverShortName = fw_string("lan_drv_short_name", "LAN Driver Short Name", 40)
2663 LANdriverSlot = uint16("lan_drv_slot", "LAN Driver Slot")
2664 LANdriverSrcRouting = uint32("lan_drv_src_route", "LAN Driver Source Routing")
2665 LANdriverTransportTime = uint16("lan_drv_trans_time", "LAN Driver Transport Time")
2666 LastAccessedDate = uint16("last_access_date", "Last Accessed Date")
2667 LastAccessedDate.NWDate()
2668 LastAccessedTime = uint16("last_access_time", "Last Accessed Time")
2669 LastAccessedTime.NWTime()
2670 LastGarbCollect = uint32("last_garbage_collect", "Last Garbage Collection")
2671 LastInstance = uint32("last_instance", "Last Instance")
2672 LastRecordSeen = uint16("last_record_seen", "Last Record Seen")
2673 LastSearchIndex = uint16("last_search_index", "Search Index")
2674 LastSeen = uint32("last_seen", "Last Seen")
2675 LastSequenceNumber = uint16("last_sequence_number", "Sequence Number")
2676 Length64bit = bytes("length_64bit", "64bit Length", 64)
2677 Level = uint8("level", "Level")
2678 LFSCounters = uint32("lfs_counters", "LFS Counters")
2679 LimboDataStreamsCount = uint32("limbo_data_streams_count", "Limbo Data Streams Count")
2680 limbCount = uint32("limb_count", "Limb Count")
2681 limbFlags = bitfield32("limb_flags", "Limb Flags", [
2682 bf_boolean32(0x00000002, "scan_entire_folder", "Wild Search"),
2683 bf_boolean32(0x00000004, "scan_files_only", "Scan Files Only"),
2684 bf_boolean32(0x00000008, "scan_folders_only", "Scan Folders Only"),
2685 bf_boolean32(0x00000010, "allow_system", "Allow System Files and Folders"),
2686 bf_boolean32(0x00000020, "allow_hidden", "Allow Hidden Files and Folders"),
2687 ])
2688  
2689 limbScanNum = uint32("limb_scan_num", "Limb Scan Number")
2690 LimboUsed = uint32("limbo_used", "Limbo Used")
2691 LoadedNameSpaces = uint8("loaded_name_spaces", "Loaded Name Spaces")
2692 LocalConnectionID = uint32("local_connection_id", "Local Connection ID")
2693 LocalConnectionID.Display("BASE_HEX")
2694 LocalMaxPacketSize = uint32("local_max_packet_size", "Local Max Packet Size")
2695 LocalMaxSendSize = uint32("local_max_send_size", "Local Max Send Size")
2696 LocalMaxRecvSize = uint32("local_max_recv_size", "Local Max Recv Size")
2697 LocalLoginInfoCcode = uint8("local_login_info_ccode", "Local Login Info C Code")
2698 LocalTargetSocket = uint32("local_target_socket", "Local Target Socket")
2699 LocalTargetSocket.Display("BASE_HEX")
2700 LockAreaLen = uint32("lock_area_len", "Lock Area Length")
2701 LockAreasStartOffset = uint32("lock_areas_start_offset", "Lock Areas Start Offset")
2702 LockTimeout = uint16("lock_timeout", "Lock Timeout")
2703 Locked = val_string8("locked", "Locked Flag", [
2704 [ 0x00, "Not Locked Exclusively" ],
2705 [ 0x01, "Locked Exclusively" ],
2706 ])
2707 LockFlag = val_string8("lock_flag", "Lock Flag", [
2708 [ 0x00, "Not Locked, Log for Future Exclusive Lock" ],
2709 [ 0x01, "Exclusive Lock (Read/Write)" ],
2710 [ 0x02, "Log for Future Shared Lock"],
2711 [ 0x03, "Shareable Lock (Read-Only)" ],
2712 [ 0xfe, "Locked by a File Lock" ],
2713 [ 0xff, "Locked by Begin Share File Set" ],
2714 ])
2715 LockName = nstring8("lock_name", "Lock Name")
2716 LockStatus = val_string8("lock_status", "Lock Status", [
2717 [ 0x00, "Locked Exclusive" ],
2718 [ 0x01, "Locked Shareable" ],
2719 [ 0x02, "Logged" ],
2720 [ 0x06, "Lock is Held by TTS"],
2721 ])
2722 ConnLockStatus = val_string8("conn_lock_status", "Lock Status", [
2723 [ 0x00, "Normal (connection free to run)" ],
2724 [ 0x01, "Waiting on physical record lock" ],
2725 [ 0x02, "Waiting on a file lock" ],
2726 [ 0x03, "Waiting on a logical record lock"],
2727 [ 0x04, "Waiting on a semaphore"],
2728 ])
2729 LockType = val_string8("lock_type", "Lock Type", [
2730 [ 0x00, "Locked" ],
2731 [ 0x01, "Open Shareable" ],
2732 [ 0x02, "Logged" ],
2733 [ 0x03, "Open Normal" ],
2734 [ 0x06, "TTS Holding Lock" ],
2735 [ 0x07, "Transaction Flag Set on This File" ],
2736 ])
2737 LogFileFlagHigh = bitfield8("log_file_flag_high", "Log File Flag (byte 2)", [
2738 bf_boolean8(0x80, "log_flag_call_back", "Call Back Requested" ),
2739 ])
2740 LogFileFlagLow = bitfield8("log_file_flag_low", "Log File Flag", [
2741 bf_boolean8(0x01, "log_flag_lock_file", "Lock File Immediately" ),
2742 ])
2743 LoggedObjectID = uint32("logged_object_id", "Logged in Object ID")
2744 LoggedObjectID.Display("BASE_HEX")
2745 LoggedCount = uint16("logged_count", "Logged Count")
2746 LogicalConnectionNumber = uint16("logical_connection_number", "Logical Connection Number", ENC_BIG_ENDIAN)
2747 LogicalDriveCount = uint8("logical_drive_count", "Logical Drive Count")
2748 LogicalDriveNumber = uint8("logical_drive_number", "Logical Drive Number")
2749 LogicalLockThreshold = uint8("logical_lock_threshold", "LogicalLockThreshold")
2750 LogicalRecordName = nstring8("logical_record_name", "Logical Record Name")
2751 LoginKey = bytes("login_key", "Login Key", 8)
2752 LogLockType = uint8("log_lock_type", "Log Lock Type")
2753 LogTtlRxPkts = uint32("log_ttl_rx_pkts", "Total Received Packets")
2754 LogTtlTxPkts = uint32("log_ttl_tx_pkts", "Total Transmitted Packets")
2755 LongName = fw_string("long_name", "Long Name", 32)
2756 LRUBlockWasDirty = uint16("lru_block_was_dirty", "LRU Block Was Dirty")
2757  
2758 MacAttr = bitfield16("mac_attr", "Attributes", [
2759 bf_boolean16(0x0001, "mac_attr_smode1", "Search Mode"),
2760 bf_boolean16(0x0002, "mac_attr_smode2", "Search Mode"),
2761 bf_boolean16(0x0004, "mac_attr_smode3", "Search Mode"),
2762 bf_boolean16(0x0010, "mac_attr_transaction", "Transaction"),
2763 bf_boolean16(0x0020, "mac_attr_index", "Index"),
2764 bf_boolean16(0x0040, "mac_attr_r_audit", "Read Audit"),
2765 bf_boolean16(0x0080, "mac_attr_w_audit", "Write Audit"),
2766 bf_boolean16(0x0100, "mac_attr_r_only", "Read Only"),
2767 bf_boolean16(0x0200, "mac_attr_hidden", "Hidden"),
2768 bf_boolean16(0x0400, "mac_attr_system", "System"),
2769 bf_boolean16(0x0800, "mac_attr_execute_only", "Execute Only"),
2770 bf_boolean16(0x1000, "mac_attr_subdirectory", "Subdirectory"),
2771 bf_boolean16(0x2000, "mac_attr_archive", "Archive"),
2772 bf_boolean16(0x8000, "mac_attr_share", "Shareable File"),
2773 ])
2774 MACBackupDate = uint16("mac_backup_date", "Mac Backup Date")
2775 MACBackupDate.NWDate()
2776 MACBackupTime = uint16("mac_backup_time", "Mac Backup Time")
2777 MACBackupTime.NWTime()
2778 MacBaseDirectoryID = uint32("mac_base_directory_id", "Mac Base Directory ID", ENC_BIG_ENDIAN)
2779 MacBaseDirectoryID.Display("BASE_HEX")
2780 MACCreateDate = uint16("mac_create_date", "Mac Create Date")
2781 MACCreateDate.NWDate()
2782 MACCreateTime = uint16("mac_create_time", "Mac Create Time")
2783 MACCreateTime.NWTime()
2784 MacDestinationBaseID = uint32("mac_destination_base_id", "Mac Destination Base ID")
2785 MacDestinationBaseID.Display("BASE_HEX")
2786 MacFinderInfo = bytes("mac_finder_info", "Mac Finder Information", 32)
2787 MacLastSeenID = uint32("mac_last_seen_id", "Mac Last Seen ID")
2788 MacLastSeenID.Display("BASE_HEX")
2789 MacSourceBaseID = uint32("mac_source_base_id", "Mac Source Base ID")
2790 MacSourceBaseID.Display("BASE_HEX")
2791 MajorVersion = uint32("major_version", "Major Version")
2792 MaxBytes = uint16("max_bytes", "Maximum Number of Bytes")
2793 MaxDataStreams = uint32("max_data_streams", "Maximum Data Streams")
2794 MaxDirDepth = uint32("max_dir_depth", "Maximum Directory Depth")
2795 MaximumSpace = uint16("max_space", "Maximum Space")
2796 MaxNumOfConn = uint32("max_num_of_conn", "Maximum Number of Connections")
2797 MaxNumOfLANS = uint32("max_num_of_lans", "Maximum Number Of LAN's")
2798 MaxNumOfMedias = uint32("max_num_of_medias", "Maximum Number Of Media's")
2799 MaxNumOfNmeSps = uint32("max_num_of_nme_sps", "Maximum Number Of Name Spaces")
2800 MaxNumOfSpoolPr = uint32("max_num_of_spool_pr", "Maximum Number Of Spool Printers")
2801 MaxNumOfStacks = uint32("max_num_of_stacks", "Maximum Number Of Stacks")
2802 MaxNumOfUsers = uint32("max_num_of_users", "Maximum Number Of Users")
2803 MaxNumOfVol = uint32("max_num_of_vol", "Maximum Number of Volumes")
2804 MaxReadDataReplySize = uint16("max_read_data_reply_size", "Max Read Data Reply Size")
2805 MaxSpace = uint32("maxspace", "Maximum Space")
2806 MaxSpace64 = uint64("maxspace64", "Maximum Space")
2807 MaxUsedDynamicSpace = uint32("max_used_dynamic_space", "Max Used Dynamic Space")
2808 MediaList = uint32("media_list", "Media List")
2809 MediaListCount = uint32("media_list_count", "Media List Count")
2810 MediaName = nstring8("media_name", "Media Name")
2811 MediaNumber = uint32("media_number", "Media Number")
2812 MaxReplyObjectIDCount = uint8("max_reply_obj_id_count", "Max Reply Object ID Count")
2813 MediaObjectType = val_string8("media_object_type", "Object Type", [
2814 [ 0x00, "Adapter" ],
2815 [ 0x01, "Changer" ],
2816 [ 0x02, "Removable Device" ],
2817 [ 0x03, "Device" ],
2818 [ 0x04, "Removable Media" ],
2819 [ 0x05, "Partition" ],
2820 [ 0x06, "Slot" ],
2821 [ 0x07, "Hotfix" ],
2822 [ 0x08, "Mirror" ],
2823 [ 0x09, "Parity" ],
2824 [ 0x0a, "Volume Segment" ],
2825 [ 0x0b, "Volume" ],
2826 [ 0x0c, "Clone" ],
2827 [ 0x0d, "Fixed Media" ],
2828 [ 0x0e, "Unknown" ],
2829 ])
2830 MemberName = nstring8("member_name", "Member Name")
2831 MemberType = val_string16("member_type", "Member Type", [
2832 [ 0x0000, "Unknown" ],
2833 [ 0x0001, "User" ],
2834 [ 0x0002, "User group" ],
2835 [ 0x0003, "Print queue" ],
2836 [ 0x0004, "NetWare file server" ],
2837 [ 0x0005, "Job server" ],
2838 [ 0x0006, "Gateway" ],
2839 [ 0x0007, "Print server" ],
2840 [ 0x0008, "Archive queue" ],
2841 [ 0x0009, "Archive server" ],
2842 [ 0x000a, "Job queue" ],
2843 [ 0x000b, "Administration" ],
2844 [ 0x0021, "NAS SNA gateway" ],
2845 [ 0x0026, "Remote bridge server" ],
2846 [ 0x0027, "TCP/IP gateway" ],
2847 ])
2848 MessageLanguage = uint32("message_language", "NLM Language")
2849 MigratedFiles = uint32("migrated_files", "Migrated Files")
2850 MigratedSectors = uint32("migrated_sectors", "Migrated Sectors")
2851 MinorVersion = uint32("minor_version", "Minor Version")
2852 MinSpaceLeft64 = uint64("min_space_left64", "Minimum Space Left")
2853 Minute = uint8("s_minute", "Minutes")
2854 MixedModePathFlag = val_string8("mixed_mode_path_flag", "Mixed Mode Path Flag", [
2855 [ 0x00, "Mixed mode path handling is not available"],
2856 [ 0x01, "Mixed mode path handling is available"],
2857 ])
2858 ModifiedDate = uint16("modified_date", "Modified Date")
2859 ModifiedDate.NWDate()
2860 ModifiedTime = uint16("modified_time", "Modified Time")
2861 ModifiedTime.NWTime()
2862 ModifierID = uint32("modifier_id", "Modifier ID", ENC_BIG_ENDIAN)
2863 ModifierID.Display("BASE_HEX")
2864 ModifyDOSInfoMask = bitfield16("modify_dos_info_mask", "Modify DOS Info Mask", [
2865 bf_boolean16(0x0002, "modify_dos_read", "Attributes"),
2866 bf_boolean16(0x0004, "modify_dos_write", "Creation Date"),
2867 bf_boolean16(0x0008, "modify_dos_open", "Creation Time"),
2868 bf_boolean16(0x0010, "modify_dos_create", "Creator ID"),
2869 bf_boolean16(0x0020, "modify_dos_delete", "Archive Date"),
2870 bf_boolean16(0x0040, "modify_dos_parent", "Archive Time"),
2871 bf_boolean16(0x0080, "modify_dos_search", "Archiver ID"),
2872 bf_boolean16(0x0100, "modify_dos_mdate", "Modify Date"),
2873 bf_boolean16(0x0200, "modify_dos_mtime", "Modify Time"),
2874 bf_boolean16(0x0400, "modify_dos_mid", "Modifier ID"),
2875 bf_boolean16(0x0800, "modify_dos_laccess", "Last Access"),
2876 bf_boolean16(0x1000, "modify_dos_inheritance", "Inheritance"),
2877 bf_boolean16(0x2000, "modify_dos_max_space", "Maximum Space"),
2878 ])
2879 Month = val_string8("s_month", "Month", [
2880 [ 0x01, "January"],
2881 [ 0x02, "February"],
2882 [ 0x03, "March"],
2883 [ 0x04, "April"],
2884 [ 0x05, "May"],
2885 [ 0x06, "June"],
2886 [ 0x07, "July"],
2887 [ 0x08, "August"],
2888 [ 0x09, "September"],
2889 [ 0x0a, "October"],
2890 [ 0x0b, "November"],
2891 [ 0x0c, "December"],
2892 ])
2893  
2894 MoreFlag = val_string8("more_flag", "More Flag", [
2895 [ 0x00, "No More Segments/Entries Available" ],
2896 [ 0x01, "More Segments/Entries Available" ],
2897 [ 0xff, "More Segments/Entries Available" ],
2898 ])
2899 MoreProperties = val_string8("more_properties", "More Properties", [
2900 [ 0x00, "No More Properties Available" ],
2901 [ 0x01, "No More Properties Available" ],
2902 [ 0xff, "More Properties Available" ],
2903 ])
2904  
2905 Name = nstring8("name", "Name")
2906 Name12 = fw_string("name12", "Name", 12)
2907 NameLen = uint8("name_len", "Name Space Length")
2908 NameLength = uint8("name_length", "Name Length")
2909 NameList = uint32("name_list", "Name List")
2910 #
2911 # XXX - should this value be used to interpret the characters in names,
2912 # search patterns, and the like?
2913 #
2914 # We need to handle character sets better, e.g. translating strings
2915 # from whatever character set they are in the packet (DOS/Windows code
2916 # pages, ISO character sets, UNIX EUC character sets, UTF-8, UCS-2/Unicode,
2917 # Mac character sets, etc.) into UCS-4 or UTF-8 and storing them as such
2918 # in the protocol tree, and displaying them as best we can.
2919 #
2920 NameSpace = val_string8("name_space", "Name Space", [
2921 [ 0x00, "DOS" ],
2922 [ 0x01, "MAC" ],
2923 [ 0x02, "NFS" ],
2924 [ 0x03, "FTAM" ],
2925 [ 0x04, "OS/2, Long" ],
2926 ])
2927 NamesSpaceInfoMask = bitfield16("ns_info_mask", "Names Space Info Mask", [
2928 bf_boolean16(0x0001, "ns_info_mask_modify", "Modify Name"),
2929 bf_boolean16(0x0002, "ns_info_mask_fatt", "File Attributes"),
2930 bf_boolean16(0x0004, "ns_info_mask_cdate", "Creation Date"),
2931 bf_boolean16(0x0008, "ns_info_mask_ctime", "Creation Time"),
2932 bf_boolean16(0x0010, "ns_info_mask_owner", "Owner ID"),
2933 bf_boolean16(0x0020, "ns_info_mask_adate", "Archive Date"),
2934 bf_boolean16(0x0040, "ns_info_mask_atime", "Archive Time"),
2935 bf_boolean16(0x0080, "ns_info_mask_aid", "Archiver ID"),
2936 bf_boolean16(0x0100, "ns_info_mask_udate", "Update Date"),
2937 bf_boolean16(0x0200, "ns_info_mask_utime", "Update Time"),
2938 bf_boolean16(0x0400, "ns_info_mask_uid", "Update ID"),
2939 bf_boolean16(0x0800, "ns_info_mask_acc_date", "Access Date"),
2940 bf_boolean16(0x1000, "ns_info_mask_max_acc_mask", "Inheritance"),
2941 bf_boolean16(0x2000, "ns_info_mask_max_space", "Maximum Space"),
2942 ])
2943 NameSpaceName = nstring8("name_space_name", "Name Space Name")
2944 nameType = uint32("name_type", "nameType")
2945 NCPdataSize = uint32("ncp_data_size", "NCP Data Size")
2946 NCPEncodedStringsBits = uint32("ncp_encoded_strings_bits", "NCP Encoded Strings Bits")
2947 NCPextensionMajorVersion = uint8("ncp_extension_major_version", "NCP Extension Major Version")
2948 NCPextensionMinorVersion = uint8("ncp_extension_minor_version", "NCP Extension Minor Version")
2949 NCPextensionName = nstring8("ncp_extension_name", "NCP Extension Name")
2950 NCPextensionNumber = uint32("ncp_extension_number", "NCP Extension Number")
2951 NCPextensionNumber.Display("BASE_HEX")
2952 NCPExtensionNumbers = uint32("ncp_extension_numbers", "NCP Extension Numbers")
2953 NCPextensionRevisionNumber = uint8("ncp_extension_revision_number", "NCP Extension Revision Number")
2954 NCPPeakStaInUse = uint32("ncp_peak_sta_in_use", "Peak Number of Connections since Server was brought up")
2955 NCPStaInUseCnt = uint32("ncp_sta_in_use", "Number of Workstations Connected to Server")
2956 NDSRequestFlags = bitfield16("nds_request_flags", "NDS Request Flags", [
2957 bf_boolean16(0x0001, "nds_request_flags_output", "Output Fields"),
2958 bf_boolean16(0x0002, "nds_request_flags_no_such_entry", "No Such Entry"),
2959 bf_boolean16(0x0004, "nds_request_flags_local_entry", "Local Entry"),
2960 bf_boolean16(0x0008, "nds_request_flags_type_ref", "Type Referral"),
2961 bf_boolean16(0x0010, "nds_request_flags_alias_ref", "Alias Referral"),
2962 bf_boolean16(0x0020, "nds_request_flags_req_cnt", "Request Count"),
2963 bf_boolean16(0x0040, "nds_request_flags_req_data_size", "Request Data Size"),
2964 bf_boolean16(0x0080, "nds_request_flags_reply_data_size", "Reply Data Size"),
2965 bf_boolean16(0x0100, "nds_request_flags_trans_ref", "Transport Referral"),
2966 bf_boolean16(0x0200, "nds_request_flags_trans_ref2", "Transport Referral"),
2967 bf_boolean16(0x0400, "nds_request_flags_up_ref", "Up Referral"),
2968 bf_boolean16(0x0800, "nds_request_flags_dn_ref", "Down Referral"),
2969 ])
2970 NDSStatus = uint32("nds_status", "NDS Status")
2971 NetBIOSBroadcastWasPropogated = uint32("netbios_broadcast_was_propogated", "NetBIOS Broadcast Was Propogated")
2972 NetIDNumber = uint32("net_id_number", "Net ID Number")
2973 NetIDNumber.Display("BASE_HEX")
2974 NetAddress = nbytes32("address", "Address")
2975 NetStatus = uint16("net_status", "Network Status")
2976 NetWareAccessHandle = bytes("netware_access_handle", "NetWare Access Handle", 6)
2977 NetworkAddress = uint32("network_address", "Network Address")
2978 NetworkAddress.Display("BASE_HEX")
2979 NetworkNodeAddress = bytes("network_node_address", "Network Node Address", 6)
2980 NetworkNumber = uint32("network_number", "Network Number")
2981 NetworkNumber.Display("BASE_HEX")
2982 #
2983 # XXX - this should have the "ipx_socket_vals" value_string table
2984 # from "packet-ipx.c".
2985 #
2986 NetworkSocket = uint16("network_socket", "Network Socket")
2987 NetworkSocket.Display("BASE_HEX")
2988 NewAccessRights = bitfield16("new_access_rights_mask", "New Access Rights", [
2989 bf_boolean16(0x0001, "new_access_rights_read", "Read"),
2990 bf_boolean16(0x0002, "new_access_rights_write", "Write"),
2991 bf_boolean16(0x0004, "new_access_rights_open", "Open"),
2992 bf_boolean16(0x0008, "new_access_rights_create", "Create"),
2993 bf_boolean16(0x0010, "new_access_rights_delete", "Delete"),
2994 bf_boolean16(0x0020, "new_access_rights_parental", "Parental"),
2995 bf_boolean16(0x0040, "new_access_rights_search", "Search"),
2996 bf_boolean16(0x0080, "new_access_rights_modify", "Modify"),
2997 bf_boolean16(0x0100, "new_access_rights_supervisor", "Supervisor"),
2998 ])
2999 NewDirectoryID = uint32("new_directory_id", "New Directory ID", ENC_BIG_ENDIAN)
3000 NewDirectoryID.Display("BASE_HEX")
3001 NewEAHandle = uint32("new_ea_handle", "New EA Handle")
3002 NewEAHandle.Display("BASE_HEX")
3003 NewFileName = fw_string("new_file_name", "New File Name", 14)
3004 NewFileNameLen = nstring8("new_file_name_len", "New File Name")
3005 NewFileSize = uint32("new_file_size", "New File Size")
3006 NewPassword = nstring8("new_password", "New Password")
3007 NewPath = nstring8("new_path", "New Path")
3008 NewPosition = uint8("new_position", "New Position")
3009 NewObjectName = nstring8("new_object_name", "New Object Name")
3010 NextCntBlock = uint32("next_cnt_block", "Next Count Block")
3011 NextHugeStateInfo = bytes("next_huge_state_info", "Next Huge State Info", 16)
3012 nextLimbScanNum = uint32("next_limb_scan_num", "Next Limb Scan Number")
3013 NextObjectID = uint32("next_object_id", "Next Object ID", ENC_BIG_ENDIAN)
3014 NextObjectID.Display("BASE_HEX")
3015 NextRecord = uint32("next_record", "Next Record")
3016 NextRequestRecord = uint16("next_request_record", "Next Request Record")
3017 NextSearchIndex = uint16("next_search_index", "Next Search Index")
3018 NextSearchNumber = uint16("next_search_number", "Next Search Number")
3019 NextSearchNum = uint32("nxt_search_num", "Next Search Number")
3020 nextStartingNumber = uint32("next_starting_number", "Next Starting Number")
3021 NextTrusteeEntry = uint32("next_trustee_entry", "Next Trustee Entry")
3022 NextVolumeNumber = uint32("next_volume_number", "Next Volume Number")
3023 NLMBuffer = nstring8("nlm_buffer", "Buffer")
3024 NLMcount = uint32("nlm_count", "NLM Count")
3025 NLMFlags = bitfield8("nlm_flags", "Flags", [
3026 bf_boolean8(0x01, "nlm_flags_reentrant", "ReEntrant"),
3027 bf_boolean8(0x02, "nlm_flags_multiple", "Can Load Multiple Times"),
3028 bf_boolean8(0x04, "nlm_flags_synchronize", "Synchronize Start"),
3029 bf_boolean8(0x08, "nlm_flags_pseudo", "PseudoPreemption"),
3030 ])
3031 NLMLoadOptions = uint32("nlm_load_options", "NLM Load Options")
3032 NLMName = stringz("nlm_name_stringz", "NLM Name")
3033 NLMNumber = uint32("nlm_number", "NLM Number")
3034 NLMNumbers = uint32("nlm_numbers", "NLM Numbers")
3035 NLMsInList = uint32("nlms_in_list", "NLM's in List")
3036 NLMStartNumber = uint32("nlm_start_num", "NLM Start Number")
3037 NLMType = val_string8("nlm_type", "NLM Type", [
3038 [ 0x00, "Generic NLM (.NLM)" ],
3039 [ 0x01, "LAN Driver (.LAN)" ],
3040 [ 0x02, "Disk Driver (.DSK)" ],
3041 [ 0x03, "Name Space Support Module (.NAM)" ],
3042 [ 0x04, "Utility or Support Program (.NLM)" ],
3043 [ 0x05, "Mirrored Server Link (.MSL)" ],
3044 [ 0x06, "OS NLM (.NLM)" ],
3045 [ 0x07, "Paged High OS NLM (.NLM)" ],
3046 [ 0x08, "Host Adapter Module (.HAM)" ],
3047 [ 0x09, "Custom Device Module (.CDM)" ],
3048 [ 0x0a, "File System Engine (.NLM)" ],
3049 [ 0x0b, "Real Mode NLM (.NLM)" ],
3050 [ 0x0c, "Hidden NLM (.NLM)" ],
3051 [ 0x15, "NICI Support (.NLM)" ],
3052 [ 0x16, "NICI Support (.NLM)" ],
3053 [ 0x17, "Cryptography (.NLM)" ],
3054 [ 0x18, "Encryption (.NLM)" ],
3055 [ 0x19, "NICI Support (.NLM)" ],
3056 [ 0x1c, "NICI Support (.NLM)" ],
3057 ])
3058 nodeFlags = uint32("node_flags", "Node Flags")
3059 nodeFlags.Display("BASE_HEX")
3060 NoMoreMemAvlCnt = uint32("no_more_mem_avail", "No More Memory Available Count")
3061 NonDedFlag = boolean8("non_ded_flag", "Non Dedicated Flag")
3062 NonFreeableAvailableSubAllocSectors = uint32("non_freeable_avail_sub_alloc_sectors", "Non Freeable Available Sub Alloc Sectors")
3063 NonFreeableLimboSectors = uint32("non_freeable_limbo_sectors", "Non Freeable Limbo Sectors")
3064 NotUsableSubAllocSectors = uint32("not_usable_sub_alloc_sectors", "Not Usable Sub Alloc Sectors")
3065 NotYetPurgeableBlocks = uint32("not_yet_purgeable_blocks", "Not Yet Purgeable Blocks")
3066 NSInfoBitMask = uint32("ns_info_bit_mask", "Name Space Info Bit Mask")
3067 NSSOAllInFlags = bitfield32("nsso_all_in_flags", "SecretStore All Input Flags",[
3068 bf_boolean32(0x00000010, "nsso_all_unicode", "Unicode Data"),
3069 bf_boolean32(0x00000080, "nsso_set_tree", "Set Tree"),
3070 bf_boolean32(0x00000200, "nsso_destroy_ctx", "Destroy Context"),
3071 ])
3072 NSSOGetServiceInFlags = bitfield32("nsso_get_svc_in_flags", "SecretStore Get Service Flags",[
3073 bf_boolean32(0x00000100, "nsso_get_ctx", "Get Context"),
3074 ])
3075 NSSOReadInFlags = bitfield32("nsso_read_in_flags", "SecretStore Read Flags",[
3076 bf_boolean32(0x00000001, "nsso_rw_enh_prot", "Read/Write Enhanced Protection"),
3077 bf_boolean32(0x00000008, "nsso_repair", "Repair SecretStore"),
3078 ])
3079 NSSOReadOrUnlockInFlags = bitfield32("nsso_read_or_unlock_in_flags", "SecretStore Read or Unlock Flags",[
3080 bf_boolean32(0x00000004, "nsso_ep_master_pwd", "Master Password used instead of ENH Password"),
3081 ])
3082 NSSOUnlockInFlags = bitfield32("nsso_unlock_in_flags", "SecretStore Unlock Flags",[
3083 bf_boolean32(0x00000004, "nsso_rmv_lock", "Remove Lock from Store"),
3084 ])
3085 NSSOWriteInFlags = bitfield32("nsso_write_in_flags", "SecretStore Write Flags",[
3086 bf_boolean32(0x00000001, "nsso_enh_prot", "Enhanced Protection"),
3087 bf_boolean32(0x00000002, "nsso_create_id", "Create ID"),
3088 bf_boolean32(0x00000040, "nsso_ep_pwd_used", "Enhanced Protection Password Used"),
3089 ])
3090 NSSOContextOutFlags = bitfield32("nsso_cts_out_flags", "Type of Context",[
3091 bf_boolean32(0x00000001, "nsso_ds_ctx", "DSAPI Context"),
3092 bf_boolean32(0x00000080, "nsso_ldap_ctx", "LDAP Context"),
3093 bf_boolean32(0x00000200, "nsso_dc_ctx", "Reserved"),
3094 ])
3095 NSSOGetServiceOutFlags = bitfield32("nsso_get_svc_out_flags", "SecretStore Status Flags",[
3096 bf_boolean32(0x00400000, "nsso_mstr_pwd", "Master Password Present"),
3097 ])
3098 NSSOGetServiceReadOutFlags = bitfield32("nsso_get_svc_read_out_flags", "SecretStore Status Flags",[
3099 bf_boolean32(0x00800000, "nsso_mp_disabled", "Master Password Disabled"),
3100 ])
3101 NSSOReadOutFlags = bitfield32("nsso_read_out_flags", "SecretStore Read Flags",[
3102 bf_boolean32(0x00010000, "nsso_secret_locked", "Enhanced Protection Lock on Secret"),
3103 bf_boolean32(0x00020000, "nsso_secret_not_init", "Secret Not Yet Initialized"),
3104 bf_boolean32(0x00040000, "nsso_secret_marked", "Secret Marked for Enhanced Protection"),
3105 bf_boolean32(0x00080000, "nsso_secret_not_sync", "Secret Not Yet Synchronized in NDS"),
3106 bf_boolean32(0x00200000, "nsso_secret_enh_pwd", "Enhanced Protection Password on Secret"),
3107 ])
3108 NSSOReadOutStatFlags = bitfield32("nsso_read_out_stat_flags", "SecretStore Read Status Flags",[
3109 bf_boolean32(0x00100000, "nsso_admin_mod", "Admin Modified Secret Last"),
3110 ])
3111 NSSOVerb = val_string8("nsso_verb", "SecretStore Verb", [
3112 [ 0x00, "Query Server" ],
3113 [ 0x01, "Read App Secrets" ],
3114 [ 0x02, "Write App Secrets" ],
3115 [ 0x03, "Add Secret ID" ],
3116 [ 0x04, "Remove Secret ID" ],
3117 [ 0x05, "Remove SecretStore" ],
3118 [ 0x06, "Enumerate SecretID's" ],
3119 [ 0x07, "Unlock Store" ],
3120 [ 0x08, "Set Master Password" ],
3121 [ 0x09, "Get Service Information" ],
3122 ])
3123 NSSpecificInfo = fw_string("ns_specific_info", "Name Space Specific Info", 512)
3124 NumberOfActiveTasks = uint8("num_of_active_tasks", "Number of Active Tasks")
3125 NumberOfAllocs = uint32("num_of_allocs", "Number of Allocations")
3126 NumberOfCPUs = uint32("number_of_cpus", "Number of CPU's")
3127 NumberOfDataStreams = uint16("number_of_data_streams", "Number of Data Streams")
3128 NumberOfDataStreamsLong = uint32("number_of_data_streams_long", "Number of Data Streams")
3129 NumberOfDynamicMemoryAreas = uint16("number_of_dynamic_memory_areas", "Number Of Dynamic Memory Areas")
3130 NumberOfEntries = uint8("number_of_entries", "Number of Entries")
3131 NumberOfEntriesLong = uint32("number_of_entries_long", "Number of Entries")
3132 NumberOfLocks = uint8("number_of_locks", "Number of Locks")
3133 NumberOfMinutesToDelay = uint32("number_of_minutes_to_delay", "Number of Minutes to Delay")
3134 NumberOfNCPExtensions = uint32("number_of_ncp_extensions", "Number Of NCP Extensions")
3135 NumberOfNSLoaded = uint16("number_of_ns_loaded", "Number Of Name Spaces Loaded")
3136 NumberOfProtocols = uint8("number_of_protocols", "Number of Protocols")
3137 NumberOfRecords = uint16("number_of_records", "Number of Records")
3138 NumberOfReferencedPublics = uint32("num_of_ref_publics", "Number of Referenced Public Symbols")
3139 NumberOfSemaphores = uint16("number_of_semaphores", "Number Of Semaphores")
3140 NumberOfServiceProcesses = uint8("number_of_service_processes", "Number Of Service Processes")
3141 NumberOfSetCategories = uint32("number_of_set_categories", "Number Of Set Categories")
3142 NumberOfSMs = uint32("number_of_sms", "Number Of Storage Medias")
3143 NumberOfStations = uint8("number_of_stations", "Number of Stations")
3144 NumBytes = uint16("num_bytes", "Number of Bytes")
3145 NumBytesLong = uint32("num_bytes_long", "Number of Bytes")
3146 NumOfCCinPkt = uint32("num_of_cc_in_pkt", "Number of Custom Counters in Packet")
3147 NumOfChecks = uint32("num_of_checks", "Number of Checks")
3148 NumOfEntries = uint32("num_of_entries", "Number of Entries")
3149 NumOfFilesMigrated = uint32("num_of_files_migrated", "Number Of Files Migrated")
3150 NumOfGarbageColl = uint32("num_of_garb_coll", "Number of Garbage Collections")
3151 NumOfNCPReqs = uint32("num_of_ncp_reqs", "Number of NCP Requests since Server was brought up")
3152 NumOfSegments = uint32("num_of_segments", "Number of Segments")
3153  
3154 ObjectCount = uint32("object_count", "Object Count")
3155 ObjectFlags = val_string8("object_flags", "Object Flags", [
3156 [ 0x00, "Dynamic object" ],
3157 [ 0x01, "Static object" ],
3158 ])
3159 ObjectHasProperties = val_string8("object_has_properites", "Object Has Properties", [
3160 [ 0x00, "No properties" ],
3161 [ 0xff, "One or more properties" ],
3162 ])
3163 ObjectID = uint32("object_id", "Object ID", ENC_BIG_ENDIAN)
3164 ObjectID.Display('BASE_HEX')
3165 ObjectIDCount = uint16("object_id_count", "Object ID Count")
3166 ObjectIDInfo = uint32("object_id_info", "Object Information")
3167 ObjectInfoReturnCount = uint32("object_info_rtn_count", "Object Information Count")
3168 ObjectName = nstring8("object_name", "Object Name")
3169 ObjectNameLen = fw_string("object_name_len", "Object Name", 48)
3170 ObjectNameStringz = stringz("object_name_stringz", "Object Name")
3171 ObjectNumber = uint32("object_number", "Object Number")
3172 ObjectSecurity = val_string8("object_security", "Object Security", [
3173 [ 0x00, "Object Read (Anyone) / Object Write (Anyone)" ],
3174 [ 0x01, "Object Read (Logged in) / Object Write (Anyone)" ],
3175 [ 0x02, "Object Read (Logged in as Object) / Object Write (Anyone)" ],
3176 [ 0x03, "Object Read (Supervisor) / Object Write (Anyone)" ],
3177 [ 0x04, "Object Read (Operating System Only) / Object Write (Anyone)" ],
3178 [ 0x10, "Object Read (Anyone) / Object Write (Logged in)" ],
3179 [ 0x11, "Object Read (Logged in) / Object Write (Logged in)" ],
3180 [ 0x12, "Object Read (Logged in as Object) / Object Write (Logged in)" ],
3181 [ 0x13, "Object Read (Supervisor) / Object Write (Logged in)" ],
3182 [ 0x14, "Object Read (Operating System Only) / Object Write (Logged in)" ],
3183 [ 0x20, "Object Read (Anyone) / Object Write (Logged in as Object)" ],
3184 [ 0x21, "Object Read (Logged in) / Object Write (Logged in as Object)" ],
3185 [ 0x22, "Object Read (Logged in as Object) / Object Write (Logged in as Object)" ],
3186 [ 0x23, "Object Read (Supervisor) / Object Write (Logged in as Object)" ],
3187 [ 0x24, "Object Read (Operating System Only) / Object Write (Logged in as Object)" ],
3188 [ 0x30, "Object Read (Anyone) / Object Write (Supervisor)" ],
3189 [ 0x31, "Object Read (Logged in) / Object Write (Supervisor)" ],
3190 [ 0x32, "Object Read (Logged in as Object) / Object Write (Supervisor)" ],
3191 [ 0x33, "Object Read (Supervisor) / Object Write (Supervisor)" ],
3192 [ 0x34, "Object Read (Operating System Only) / Object Write (Supervisor)" ],
3193 [ 0x40, "Object Read (Anyone) / Object Write (Operating System Only)" ],
3194 [ 0x41, "Object Read (Logged in) / Object Write (Operating System Only)" ],
3195 [ 0x42, "Object Read (Logged in as Object) / Object Write (Operating System Only)" ],
3196 [ 0x43, "Object Read (Supervisor) / Object Write (Operating System Only)" ],
3197 [ 0x44, "Object Read (Operating System Only) / Object Write (Operating System Only)" ],
3198 ])
3199 #
3200 # XXX - should this use the "server_vals[]" value_string array from
3201 # "packet-ipx.c"?
3202 #
3203 # XXX - should this list be merged with that list? There are some
3204 # oddities, e.g. this list has 0x03f5 for "Microsoft SQL Server", but
3205 # the list from "packet-ipx.c" has 0xf503 for that - is that just
3206 # byte-order confusion?
3207 #
3208 ObjectType = val_string16("object_type", "Object Type", [
3209 [ 0x0000, "Unknown" ],
3210 [ 0x0001, "User" ],
3211 [ 0x0002, "User group" ],
3212 [ 0x0003, "Print queue" ],
3213 [ 0x0004, "NetWare file server" ],
3214 [ 0x0005, "Job server" ],
3215 [ 0x0006, "Gateway" ],
3216 [ 0x0007, "Print server" ],
3217 [ 0x0008, "Archive queue" ],
3218 [ 0x0009, "Archive server" ],
3219 [ 0x000a, "Job queue" ],
3220 [ 0x000b, "Administration" ],
3221 [ 0x0021, "NAS SNA gateway" ],
3222 [ 0x0026, "Remote bridge server" ],
3223 [ 0x0027, "TCP/IP gateway" ],
3224 [ 0x0047, "Novell Print Server" ],
3225 [ 0x004b, "Btrieve Server" ],
3226 [ 0x004c, "NetWare SQL Server" ],
3227 [ 0x0064, "ARCserve" ],
3228 [ 0x0066, "ARCserve 3.0" ],
3229 [ 0x0076, "NetWare SQL" ],
3230 [ 0x00a0, "Gupta SQL Base Server" ],
3231 [ 0x00a1, "Powerchute" ],
3232 [ 0x0107, "NetWare Remote Console" ],
3233 [ 0x01cb, "Shiva NetModem/E" ],
3234 [ 0x01cc, "Shiva LanRover/E" ],
3235 [ 0x01cd, "Shiva LanRover/T" ],
3236 [ 0x01d8, "Castelle FAXPress Server" ],
3237 [ 0x01da, "Castelle Print Server" ],
3238 [ 0x01dc, "Castelle Fax Server" ],
3239 [ 0x0200, "Novell SQL Server" ],
3240 [ 0x023a, "NetWare Lanalyzer Agent" ],
3241 [ 0x023c, "DOS Target Service Agent" ],
3242 [ 0x023f, "NetWare Server Target Service Agent" ],
3243 [ 0x024f, "Appletalk Remote Access Service" ],
3244 [ 0x0263, "NetWare Management Agent" ],
3245 [ 0x0264, "Global MHS" ],
3246 [ 0x0265, "SNMP" ],
3247 [ 0x026a, "NetWare Management/NMS Console" ],
3248 [ 0x026b, "NetWare Time Synchronization" ],
3249 [ 0x0273, "Nest Device" ],
3250 [ 0x0274, "GroupWise Message Multiple Servers" ],
3251 [ 0x0278, "NDS Replica Server" ],
3252 [ 0x0282, "NDPS Service Registry Service" ],
3253 [ 0x028a, "MPR/IPX Address Mapping Gateway" ],
3254 [ 0x028b, "ManageWise" ],
3255 [ 0x0293, "NetWare 6" ],
3256 [ 0x030c, "HP JetDirect" ],
3257 [ 0x0328, "Watcom SQL Server" ],
3258 [ 0x0355, "Backup Exec" ],
3259 [ 0x039b, "Lotus Notes" ],
3260 [ 0x03e1, "Univel Server" ],
3261 [ 0x03f5, "Microsoft SQL Server" ],
3262 [ 0x055e, "Lexmark Print Server" ],
3263 [ 0x0640, "Microsoft Gateway Services for NetWare" ],
3264 [ 0x064e, "Microsoft Internet Information Server" ],
3265 [ 0x077b, "Advantage Database Server" ],
3266 [ 0x07a7, "Backup Exec Job Queue" ],
3267 [ 0x07a8, "Backup Exec Job Manager" ],
3268 [ 0x07a9, "Backup Exec Job Service" ],
3269 [ 0x5555, "Site Lock" ],
3270 [ 0x8202, "NDPS Broker" ],
3271 ])
3272 OCRetFlags = val_string8("o_c_ret_flags", "Open Create Return Flags", [
3273 [ 0x00, "No CallBack has been registered (No Op-Lock)" ],
3274 [ 0x01, "Request has been registered for CallBack (Op-Lock)" ],
3275 ])
3276 OESServer = val_string8("oes_server", "Type of Novell Server", [
3277 [ 0x00, "NetWare" ],
3278 [ 0x01, "OES" ],
3279 [ 0x02, "OES 64bit" ],
3280 ])
3281  
3282 OESLinuxOrNetWare = val_string8("oeslinux_or_netware", "Kernel Type", [
3283 [ 0x00, "NetWare" ],
3284 [ 0x01, "Linux" ],
3285 ])
3286  
3287 OldestDeletedFileAgeInTicks = uint32("oldest_deleted_file_age_in_ticks", "Oldest Deleted File Age in Ticks")
3288 OldFileName = bytes("old_file_name", "Old File Name", 15)
3289 OldFileSize = uint32("old_file_size", "Old File Size")
3290 OpenCount = uint16("open_count", "Open Count")
3291 OpenCreateAction = bitfield8("open_create_action", "Open Create Action", [
3292 bf_boolean8(0x01, "open_create_action_opened", "Opened"),
3293 bf_boolean8(0x02, "open_create_action_created", "Created"),
3294 bf_boolean8(0x04, "open_create_action_replaced", "Replaced"),
3295 bf_boolean8(0x08, "open_create_action_compressed", "Compressed"),
3296 bf_boolean8(0x80, "open_create_action_read_only", "Read Only"),
3297 ])
3298 OpenCreateMode = bitfield8("open_create_mode", "Open Create Mode", [
3299 bf_boolean8(0x01, "open_create_mode_open", "Open existing file (file must exist)"),
3300 bf_boolean8(0x02, "open_create_mode_replace", "Replace existing file"),
3301 bf_boolean8(0x08, "open_create_mode_create", "Create new file or subdirectory (file or subdirectory cannot exist)"),
3302 bf_boolean8(0x20, "open_create_mode_64bit", "Open 64-bit Access"),
3303 bf_boolean8(0x40, "open_create_mode_ro", "Open with Read Only Access"),
3304 bf_boolean8(0x80, "open_create_mode_oplock", "Open Callback (Op-Lock)"),
3305 ])
3306 OpenForReadCount = uint16("open_for_read_count", "Open For Read Count")
3307 OpenForWriteCount = uint16("open_for_write_count", "Open For Write Count")
3308 OpenRights = bitfield8("open_rights", "Open Rights", [
3309 bf_boolean8(0x01, "open_rights_read_only", "Read Only"),
3310 bf_boolean8(0x02, "open_rights_write_only", "Write Only"),
3311 bf_boolean8(0x04, "open_rights_deny_read", "Deny Read"),
3312 bf_boolean8(0x08, "open_rights_deny_write", "Deny Write"),
3313 bf_boolean8(0x10, "open_rights_compat", "Compatibility"),
3314 bf_boolean8(0x40, "open_rights_write_thru", "File Write Through"),
3315 ])
3316 OptionNumber = uint8("option_number", "Option Number")
3317 originalSize = uint32("original_size", "Original Size")
3318 OSLanguageID = uint8("os_language_id", "OS Language ID")
3319 OSMajorVersion = uint8("os_major_version", "OS Major Version")
3320 OSMinorVersion = uint8("os_minor_version", "OS Minor Version")
3321 OSRevision = uint32("os_revision", "OS Revision")
3322 OtherFileForkSize = uint32("other_file_fork_size", "Other File Fork Size")
3323 OtherFileForkFAT = uint32("other_file_fork_fat", "Other File Fork FAT Entry")
3324 OutgoingPacketDiscardedNoTurboBuffer = uint16("outgoing_packet_discarded_no_turbo_buffer", "Outgoing Packet Discarded No Turbo Buffer")
3325  
3326 PacketsDiscardedByHopCount = uint16("packets_discarded_by_hop_count", "Packets Discarded By Hop Count")
3327 PacketsDiscardedUnknownNet = uint16("packets_discarded_unknown_net", "Packets Discarded Unknown Net")
3328 PacketsFromInvalidConnection = uint16("packets_from_invalid_connection", "Packets From Invalid Connection")
3329 PacketsReceivedDuringProcessing = uint16("packets_received_during_processing", "Packets Received During Processing")
3330 PacketsWithBadRequestType = uint16("packets_with_bad_request_type", "Packets With Bad Request Type")
3331 PacketsWithBadSequenceNumber = uint16("packets_with_bad_sequence_number", "Packets With Bad Sequence Number")
3332 PageTableOwnerFlag = uint32("page_table_owner_flag", "Page Table Owner")
3333 ParentID = uint32("parent_id", "Parent ID")
3334 ParentID.Display("BASE_HEX")
3335 ParentBaseID = uint32("parent_base_id", "Parent Base ID")
3336 ParentBaseID.Display("BASE_HEX")
3337 ParentDirectoryBase = uint32("parent_directory_base", "Parent Directory Base")
3338 ParentDOSDirectoryBase = uint32("parent_dos_directory_base", "Parent DOS Directory Base")
3339 ParentObjectNumber = uint32("parent_object_number", "Parent Object Number")
3340 ParentObjectNumber.Display("BASE_HEX")
3341 Password = nstring8("password", "Password")
3342 PathBase = uint8("path_base", "Path Base")
3343 PathComponentCount = uint16("path_component_count", "Path Component Count")
3344 PathComponentSize = uint16("path_component_size", "Path Component Size")
3345 PathCookieFlags = val_string16("path_cookie_flags", "Path Cookie Flags", [
3346 [ 0x0000, "Last component is Not a File Name" ],
3347 [ 0x0001, "Last component is a File Name" ],
3348 ])
3349 PathCount = uint8("path_count", "Path Count")
3350 Path = nstring8("path", "Path")
3351 Path16 = nstring16("path16", "Path")
3352 PathAndName = stringz("path_and_name", "Path and Name")
3353 PendingIOCommands = uint16("pending_io_commands", "Pending IO Commands")
3354 PhysicalDiskNumber = uint8("physical_disk_number", "Physical Disk Number")
3355 PhysicalDriveCount = uint8("physical_drive_count", "Physical Drive Count")
3356 PhysicalLockThreshold = uint8("physical_lock_threshold", "Physical Lock Threshold")
3357 PingVersion = uint16("ping_version", "Ping Version")
3358 PoolName = stringz("pool_name", "Pool Name")
3359 PositiveAcknowledgesSent = uint16("positive_acknowledges_sent", "Positive Acknowledges Sent")
3360 PreCompressedSectors = uint32("pre_compressed_sectors", "Precompressed Sectors")
3361 PreviousRecord = uint32("previous_record", "Previous Record")
3362 PrimaryEntry = uint32("primary_entry", "Primary Entry")
3363 PrintFlags = bitfield8("print_flags", "Print Flags", [
3364 bf_boolean8(0x08, "print_flags_ff", "Suppress Form Feeds"),
3365 bf_boolean8(0x10, "print_flags_cr", "Create"),
3366 bf_boolean8(0x20, "print_flags_del_spool", "Delete Spool File after Printing"),
3367 bf_boolean8(0x40, "print_flags_exp_tabs", "Expand Tabs in the File"),
3368 bf_boolean8(0x80, "print_flags_banner", "Print Banner Page"),
3369 ])
3370 PrinterHalted = val_string8("printer_halted", "Printer Halted", [
3371 [ 0x00, "Printer is not Halted" ],
3372 [ 0xff, "Printer is Halted" ],
3373 ])
3374 PrinterOffLine = val_string8( "printer_offline", "Printer Off-Line", [
3375 [ 0x00, "Printer is On-Line" ],
3376 [ 0xff, "Printer is Off-Line" ],
3377 ])
3378 PrintServerVersion = uint8("print_server_version", "Print Server Version")
3379 Priority = uint32("priority", "Priority")
3380 Privileges = uint32("privileges", "Login Privileges")
3381 ProcessorType = val_string8("processor_type", "Processor Type", [
3382 [ 0x00, "Motorola 68000" ],
3383 [ 0x01, "Intel 8088 or 8086" ],
3384 [ 0x02, "Intel 80286" ],
3385 ])
3386 ProDOSInfo = bytes("pro_dos_info", "Pro DOS Info", 6)
3387 ProductMajorVersion = uint16("product_major_version", "Product Major Version")
3388 ProductMinorVersion = uint16("product_minor_version", "Product Minor Version")
3389 ProductRevisionVersion = uint8("product_revision_version", "Product Revision Version")
3390 projectedCompSize = uint32("projected_comp_size", "Projected Compression Size")
3391 PropertyHasMoreSegments = val_string8("property_has_more_segments",
3392 "Property Has More Segments", [
3393 [ 0x00, "Is last segment" ],
3394 [ 0xff, "More segments are available" ],
3395 ])
3396 PropertyName = nstring8("property_name", "Property Name")
3397 PropertyName16 = fw_string("property_name_16", "Property Name", 16)
3398 PropertyData = bytes("property_data", "Property Data", 128)
3399 PropertySegment = uint8("property_segment", "Property Segment")
3400 PropertyType = val_string8("property_type", "Property Type", [
3401 [ 0x00, "Display Static property" ],
3402 [ 0x01, "Display Dynamic property" ],
3403 [ 0x02, "Set Static property" ],
3404 [ 0x03, "Set Dynamic property" ],
3405 ])
3406 PropertyValue = fw_string("property_value", "Property Value", 128)
3407 ProposedMaxSize = uint16("proposed_max_size", "Proposed Max Size")
3408 protocolFlags = uint32("protocol_flags", "Protocol Flags")
3409 protocolFlags.Display("BASE_HEX")
3410 PurgeableBlocks = uint32("purgeable_blocks", "Purgeable Blocks")
3411 PurgeCcode = uint32("purge_c_code", "Purge Completion Code")
3412 PurgeCount = uint32("purge_count", "Purge Count")
3413 PurgeFlags = val_string16("purge_flags", "Purge Flags", [
3414 [ 0x0000, "Do not Purge All" ],
3415 [ 0x0001, "Purge All" ],
3416 [ 0xffff, "Do not Purge All" ],
3417 ])
3418 PurgeList = uint32("purge_list", "Purge List")
3419 PhysicalDiskChannel = uint8("physical_disk_channel", "Physical Disk Channel")
3420 PhysicalDriveType = val_string8("physical_drive_type", "Physical Drive Type", [
3421 [ 0x01, "XT" ],
3422 [ 0x02, "AT" ],
3423 [ 0x03, "SCSI" ],
3424 [ 0x04, "Disk Coprocessor" ],
3425 [ 0x05, "PS/2 with MFM Controller" ],
3426 [ 0x06, "PS/2 with ESDI Controller" ],
3427 [ 0x07, "Convergent Technology SBIC" ],
3428 ])
3429 PhysicalReadErrors = uint16("physical_read_errors", "Physical Read Errors")
3430 PhysicalReadRequests = uint32("physical_read_requests", "Physical Read Requests")
3431 PhysicalWriteErrors = uint16("physical_write_errors", "Physical Write Errors")
3432 PhysicalWriteRequests = uint32("physical_write_requests", "Physical Write Requests")
3433 PrintToFileFlag = boolean8("print_to_file_flag", "Print to File Flag")
3434  
3435 QueueID = uint32("queue_id", "Queue ID")
3436 QueueID.Display("BASE_HEX")
3437 QueueName = nstring8("queue_name", "Queue Name")
3438 QueueStartPosition = uint32("queue_start_position", "Queue Start Position")
3439 QueueStatus = bitfield8("queue_status", "Queue Status", [
3440 bf_boolean8(0x01, "queue_status_new_jobs", "Operator does not want to add jobs to the queue"),
3441 bf_boolean8(0x02, "queue_status_pserver", "Operator does not want additional servers attaching"),
3442 bf_boolean8(0x04, "queue_status_svc_jobs", "Operator does not want servers to service jobs"),
3443 ])
3444 QueueType = uint16("queue_type", "Queue Type")
3445 QueueingVersion = uint8("qms_version", "QMS Version")
3446  
3447 ReadBeyondWrite = uint16("read_beyond_write", "Read Beyond Write")
3448 RecordLockCount = uint16("rec_lock_count", "Record Lock Count")
3449 RecordStart = uint32("record_start", "Record Start")
3450 RecordEnd = uint32("record_end", "Record End")
3451 RecordInUseFlag = val_string16("record_in_use", "Record in Use", [
3452 [ 0x0000, "Record In Use" ],
3453 [ 0xffff, "Record Not In Use" ],
3454 ])
3455 RedirectedPrinter = uint8( "redirected_printer", "Redirected Printer" )
3456 ReferenceCount = uint32("reference_count", "Reference Count")
3457 RelationsCount = uint16("relations_count", "Relations Count")
3458 ReMirrorCurrentOffset = uint32("re_mirror_current_offset", "ReMirror Current Offset")
3459 ReMirrorDriveNumber = uint8("re_mirror_drive_number", "ReMirror Drive Number")
3460 RemoteMaxPacketSize = uint32("remote_max_packet_size", "Remote Max Packet Size")
3461 RemoteTargetID = uint32("remote_target_id", "Remote Target ID")
3462 RemoteTargetID.Display("BASE_HEX")
3463 RemovableFlag = uint16("removable_flag", "Removable Flag")
3464 RemoveOpenRights = bitfield8("remove_open_rights", "Remove Open Rights", [
3465 bf_boolean8(0x01, "remove_open_rights_ro", "Read Only"),
3466 bf_boolean8(0x02, "remove_open_rights_wo", "Write Only"),
3467 bf_boolean8(0x04, "remove_open_rights_dr", "Deny Read"),
3468 bf_boolean8(0x08, "remove_open_rights_dw", "Deny Write"),
3469 bf_boolean8(0x10, "remove_open_rights_comp", "Compatibility"),
3470 bf_boolean8(0x40, "remove_open_rights_write_thru", "Write Through"),
3471 ])
3472 RenameFlag = bitfield8("rename_flag", "Rename Flag", [
3473 bf_boolean8(0x01, "rename_flag_ren", "Rename to Myself allows file to be renamed to its original name"),
3474 bf_boolean8(0x02, "rename_flag_comp", "Compatibility allows files that are marked read only to be opened with read/write access"),
3475 bf_boolean8(0x04, "rename_flag_no", "Name Only renames only the specified name space entry name"),
3476 ])
3477 RepliesCancelled = uint16("replies_cancelled", "Replies Cancelled")
3478 ReplyBuffer = nstring8("reply_buffer", "Reply Buffer")
3479 ReplyBufferSize = uint32("reply_buffer_size", "Reply Buffer Size")
3480 ReplyQueueJobNumbers = uint32("reply_queue_job_numbers", "Reply Queue Job Numbers")
3481 RequestBitMap = bitfield16("request_bit_map", "Request Bit Map", [
3482 bf_boolean16(0x0001, "request_bit_map_ret_afp_ent", "AFP Entry ID"),
3483 bf_boolean16(0x0002, "request_bit_map_ret_data_fork", "Data Fork Length"),
3484 bf_boolean16(0x0004, "request_bit_map_ret_res_fork", "Resource Fork Length"),
3485 bf_boolean16(0x0008, "request_bit_map_ret_num_off", "Number of Offspring"),
3486 bf_boolean16(0x0010, "request_bit_map_ret_owner", "Owner ID"),
3487 bf_boolean16(0x0020, "request_bit_map_ret_short", "Short Name"),
3488 bf_boolean16(0x0040, "request_bit_map_ret_acc_priv", "Access Privileges"),
3489 bf_boolean16(0x0100, "request_bit_map_ratt", "Return Attributes"),
3490 bf_boolean16(0x0200, "request_bit_map_ret_afp_parent", "AFP Parent Entry ID"),
3491 bf_boolean16(0x0400, "request_bit_map_ret_cr_date", "Creation Date"),
3492 bf_boolean16(0x0800, "request_bit_map_ret_acc_date", "Access Date"),
3493 bf_boolean16(0x1000, "request_bit_map_ret_mod_date", "Modify Date&Time"),
3494 bf_boolean16(0x2000, "request_bit_map_ret_bak_date", "Backup Date&Time"),
3495 bf_boolean16(0x4000, "request_bit_map_ret_finder", "Finder Info"),
3496 bf_boolean16(0x8000, "request_bit_map_ret_long_nm", "Long Name"),
3497 ])
3498 ResourceForkLen = uint32("resource_fork_len", "Resource Fork Len")
3499 RequestCode = val_string8("request_code", "Request Code", [
3500 [ 0x00, "Change Logged in to Temporary Authenticated" ],
3501 [ 0x01, "Change Temporary Authenticated to Logged in" ],
3502 ])
3503 RequestData = nstring8("request_data", "Request Data")
3504 RequestsReprocessed = uint16("requests_reprocessed", "Requests Reprocessed")
3505 Reserved = uint8( "reserved", "Reserved" )
3506 Reserved2 = bytes("reserved2", "Reserved", 2)
3507 Reserved3 = bytes("reserved3", "Reserved", 3)
3508 Reserved4 = bytes("reserved4", "Reserved", 4)
3509 Reserved5 = bytes("reserved5", "Reserved", 5)
3510 Reserved6 = bytes("reserved6", "Reserved", 6)
3511 Reserved8 = bytes("reserved8", "Reserved", 8)
3512 Reserved10 = bytes("reserved10", "Reserved", 10)
3513 Reserved12 = bytes("reserved12", "Reserved", 12)
3514 Reserved16 = bytes("reserved16", "Reserved", 16)
3515 Reserved20 = bytes("reserved20", "Reserved", 20)
3516 Reserved28 = bytes("reserved28", "Reserved", 28)
3517 Reserved36 = bytes("reserved36", "Reserved", 36)
3518 Reserved44 = bytes("reserved44", "Reserved", 44)
3519 Reserved48 = bytes("reserved48", "Reserved", 48)
3520 Reserved50 = bytes("reserved50", "Reserved", 50)
3521 Reserved56 = bytes("reserved56", "Reserved", 56)
3522 Reserved64 = bytes("reserved64", "Reserved", 64)
3523 Reserved120 = bytes("reserved120", "Reserved", 120)
3524 ReservedOrDirectoryNumber = uint32("reserved_or_directory_number", "Reserved or Directory Number (see EAFlags)")
3525 ReservedOrDirectoryNumber.Display("BASE_HEX")
3526 ResourceCount = uint32("resource_count", "Resource Count")
3527 ResourceForkSize = uint32("resource_fork_size", "Resource Fork Size")
3528 ResourceName = stringz("resource_name", "Resource Name")
3529 ResourceSignature = fw_string("resource_sig", "Resource Signature", 4)
3530 RestoreTime = eptime("restore_time", "Restore Time")
3531 Restriction = uint32("restriction", "Disk Space Restriction")
3532 RestrictionQuad = uint64("restriction_quad", "Restriction")
3533 RestrictionsEnforced = val_string8("restrictions_enforced", "Disk Restrictions Enforce Flag", [
3534 [ 0x00, "Enforced" ],
3535 [ 0xff, "Not Enforced" ],
3536 ])
3537 ReturnInfoCount = uint32("return_info_count", "Return Information Count")
3538 ReturnInfoMask = bitfield16("ret_info_mask", "Return Information", [
3539 bf_boolean16(0x0001, "ret_info_mask_fname", "Return File Name Information"),
3540 bf_boolean16(0x0002, "ret_info_mask_alloc", "Return Allocation Space Information"),
3541 bf_boolean16(0x0004, "ret_info_mask_attr", "Return Attribute Information"),
3542 bf_boolean16(0x0008, "ret_info_mask_size", "Return Size Information"),
3543 bf_boolean16(0x0010, "ret_info_mask_tspace", "Return Total Space Information"),
3544 bf_boolean16(0x0020, "ret_info_mask_eattr", "Return Extended Attributes Information"),
3545 bf_boolean16(0x0040, "ret_info_mask_arch", "Return Archive Information"),
3546 bf_boolean16(0x0080, "ret_info_mask_mod", "Return Modify Information"),
3547 bf_boolean16(0x0100, "ret_info_mask_create", "Return Creation Information"),
3548 bf_boolean16(0x0200, "ret_info_mask_ns", "Return Name Space Information"),
3549 bf_boolean16(0x0400, "ret_info_mask_dir", "Return Directory Information"),
3550 bf_boolean16(0x0800, "ret_info_mask_rights", "Return Rights Information"),
3551 bf_boolean16(0x1000, "ret_info_mask_id", "Return ID Information"),
3552 bf_boolean16(0x2000, "ret_info_mask_ns_attr", "Return Name Space Attributes Information"),
3553 bf_boolean16(0x4000, "ret_info_mask_actual", "Return Actual Information"),
3554 bf_boolean16(0x8000, "ret_info_mask_logical", "Return Logical Information"),
3555 ])
3556 ReturnedListCount = uint32("returned_list_count", "Returned List Count")
3557 Revision = uint32("revision", "Revision")
3558 RevisionNumber = uint8("revision_number", "Revision")
3559 RevQueryFlag = val_string8("rev_query_flag", "Revoke Rights Query Flag", [
3560 [ 0x00, "Do not query the locks engine for access rights" ],
3561 [ 0x01, "Query the locks engine and return the access rights" ],
3562 ])
3563 RightsGrantMask = bitfield8("rights_grant_mask", "Grant Rights", [
3564 bf_boolean8(0x01, "rights_grant_mask_read", "Read"),
3565 bf_boolean8(0x02, "rights_grant_mask_write", "Write"),
3566 bf_boolean8(0x04, "rights_grant_mask_open", "Open"),
3567 bf_boolean8(0x08, "rights_grant_mask_create", "Create"),
3568 bf_boolean8(0x10, "rights_grant_mask_del", "Delete"),
3569 bf_boolean8(0x20, "rights_grant_mask_parent", "Parental"),
3570 bf_boolean8(0x40, "rights_grant_mask_search", "Search"),
3571 bf_boolean8(0x80, "rights_grant_mask_mod", "Modify"),
3572 ])
3573 RightsRevokeMask = bitfield8("rights_revoke_mask", "Revoke Rights", [
3574 bf_boolean8(0x01, "rights_revoke_mask_read", "Read"),
3575 bf_boolean8(0x02, "rights_revoke_mask_write", "Write"),
3576 bf_boolean8(0x04, "rights_revoke_mask_open", "Open"),
3577 bf_boolean8(0x08, "rights_revoke_mask_create", "Create"),
3578 bf_boolean8(0x10, "rights_revoke_mask_del", "Delete"),
3579 bf_boolean8(0x20, "rights_revoke_mask_parent", "Parental"),
3580 bf_boolean8(0x40, "rights_revoke_mask_search", "Search"),
3581 bf_boolean8(0x80, "rights_revoke_mask_mod", "Modify"),
3582 ])
3583 RIPSocketNumber = uint16("rip_socket_num", "RIP Socket Number")
3584 RIPSocketNumber.Display("BASE_HEX")
3585 RouterDownFlag = boolean8("router_dn_flag", "Router Down Flag")
3586 RPCccode = val_string16("rpc_c_code", "RPC Completion Code", [
3587 [ 0x0000, "Successful" ],
3588 ])
3589 RTagNumber = uint32("r_tag_num", "Resource Tag Number")
3590 RTagNumber.Display("BASE_HEX")
3591 RpyNearestSrvFlag = boolean8("rpy_nearest_srv_flag", "Reply to Nearest Server Flag")
3592  
3593 SalvageableFileEntryNumber = uint32("salvageable_file_entry_number", "Salvageable File Entry Number")
3594 SalvageableFileEntryNumber.Display("BASE_HEX")
3595 SAPSocketNumber = uint16("sap_socket_number", "SAP Socket Number")
3596 SAPSocketNumber.Display("BASE_HEX")
3597 ScanItems = uint32("scan_items", "Number of Items returned from Scan")
3598 SearchAttributes = bitfield8("sattr", "Search Attributes", [
3599 bf_boolean8(0x01, "sattr_ronly", "Read-Only Files Allowed"),
3600 bf_boolean8(0x02, "sattr_hid", "Hidden Files Allowed"),
3601 bf_boolean8(0x04, "sattr_sys", "System Files Allowed"),
3602 bf_boolean8(0x08, "sattr_exonly", "Execute-Only Files Allowed"),
3603 bf_boolean8(0x10, "sattr_sub", "Subdirectories Only"),
3604 bf_boolean8(0x20, "sattr_archive", "Archive"),
3605 bf_boolean8(0x40, "sattr_execute_confirm", "Execute Confirm"),
3606 bf_boolean8(0x80, "sattr_shareable", "Shareable"),
3607 ])
3608 SearchAttributesLow = bitfield16("search_att_low", "Search Attributes", [
3609 bf_boolean16(0x0001, "search_att_read_only", "Read-Only"),
3610 bf_boolean16(0x0002, "search_att_hidden", "Hidden Files Allowed"),
3611 bf_boolean16(0x0004, "search_att_system", "System"),
3612 bf_boolean16(0x0008, "search_att_execute_only", "Execute-Only"),
3613 bf_boolean16(0x0010, "search_att_sub", "Subdirectories Only"),
3614 bf_boolean16(0x0020, "search_att_archive", "Archive"),
3615 bf_boolean16(0x0040, "search_att_execute_confirm", "Execute Confirm"),
3616 bf_boolean16(0x0080, "search_att_shareable", "Shareable"),
3617 bf_boolean16(0x8000, "search_attr_all_files", "All Files and Directories"),
3618 ])
3619 SearchBitMap = bitfield8("search_bit_map", "Search Bit Map", [
3620 bf_boolean8(0x01, "search_bit_map_hidden", "Hidden"),
3621 bf_boolean8(0x02, "search_bit_map_sys", "System"),
3622 bf_boolean8(0x04, "search_bit_map_sub", "Subdirectory"),
3623 bf_boolean8(0x08, "search_bit_map_files", "Files"),
3624 ])
3625 SearchConnNumber = uint32("search_conn_number", "Search Connection Number")
3626 SearchInstance = uint32("search_instance", "Search Instance")
3627 SearchNumber = uint32("search_number", "Search Number")
3628 SearchPattern = nstring8("search_pattern", "Search Pattern")
3629 SearchPattern16 = nstring16("search_pattern_16", "Search Pattern")
3630 SearchSequence = bytes("search_sequence", "Search Sequence", 9)
3631 SearchSequenceWord = uint16("search_sequence_word", "Search Sequence", ENC_BIG_ENDIAN)
3632 Second = uint8("s_second", "Seconds")
3633 SecondsRelativeToTheYear2000 = uint32("sec_rel_to_y2k", "Seconds Relative to the Year 2000")
3634 SecretStoreVerb = val_string8("ss_verb", "Secret Store Verb",[
3635 [ 0x00, "Query Server" ],
3636 [ 0x01, "Read App Secrets" ],
3637 [ 0x02, "Write App Secrets" ],
3638 [ 0x03, "Add Secret ID" ],
3639 [ 0x04, "Remove Secret ID" ],
3640 [ 0x05, "Remove SecretStore" ],
3641 [ 0x06, "Enumerate Secret IDs" ],
3642 [ 0x07, "Unlock Store" ],
3643 [ 0x08, "Set Master Password" ],
3644 [ 0x09, "Get Service Information" ],
3645 ])
3646 SecurityEquivalentList = fw_string("security_equiv_list", "Security Equivalent List", 128)
3647 SecurityFlag = bitfield8("security_flag", "Security Flag", [
3648 bf_boolean8(0x01, "checksumming", "Checksumming"),
3649 bf_boolean8(0x02, "signature", "Signature"),
3650 bf_boolean8(0x04, "complete_signatures", "Complete Signatures"),
3651 bf_boolean8(0x08, "encryption", "Encryption"),
3652 bf_boolean8(0x80, "large_internet_packets", "Large Internet Packets (LIP) Disabled"),
3653 ])
3654 SecurityRestrictionVersion = uint8("security_restriction_version", "Security Restriction Version")
3655 SectorsPerBlock = uint8("sectors_per_block", "Sectors Per Block")
3656 SectorsPerBlockLong = uint32("sectors_per_block_long", "Sectors Per Block")
3657 SectorsPerCluster = uint16("sectors_per_cluster", "Sectors Per Cluster" )
3658 SectorsPerClusterLong = uint32("sectors_per_cluster_long", "Sectors Per Cluster" )
3659 SectorsPerTrack = uint8("sectors_per_track", "Sectors Per Track")
3660 SectorSize = uint32("sector_size", "Sector Size")
3661 SemaphoreHandle = uint32("semaphore_handle", "Semaphore Handle")
3662 SemaphoreName = nstring8("semaphore_name", "Semaphore Name")
3663 SemaphoreOpenCount = uint8("semaphore_open_count", "Semaphore Open Count")
3664 SemaphoreShareCount = uint8("semaphore_share_count", "Semaphore Share Count")
3665 SemaphoreTimeOut = uint16("semaphore_time_out", "Semaphore Time Out")
3666 SemaphoreValue = uint16("semaphore_value", "Semaphore Value")
3667 SendStatus = val_string8("send_status", "Send Status", [
3668 [ 0x00, "Successful" ],
3669 [ 0x01, "Illegal Station Number" ],
3670 [ 0x02, "Client Not Logged In" ],
3671 [ 0x03, "Client Not Accepting Messages" ],
3672 [ 0x04, "Client Already has a Message" ],
3673 [ 0x96, "No Alloc Space for the Message" ],
3674 [ 0xfd, "Bad Station Number" ],
3675 [ 0xff, "Failure" ],
3676 ])
3677 SequenceByte = uint8("sequence_byte", "Sequence")
3678 SequenceNumber = uint32("sequence_number", "Sequence Number")
3679 SequenceNumber.Display("BASE_HEX")
3680 SequenceNumberLong = uint64("sequence_number64", "Sequence Number")
3681 SequenceNumberLong.Display("BASE_HEX")
3682 ServerAddress = bytes("server_address", "Server Address", 12)
3683 ServerAppNumber = uint16("server_app_num", "Server App Number")
3684 ServerID = uint32("server_id_number", "Server ID", ENC_BIG_ENDIAN )
3685 ServerID.Display("BASE_HEX")
3686 ServerInfoFlags = val_string16("server_info_flags", "Server Information Flags", [
3687 [ 0x0000, "This server is not a member of a Cluster" ],
3688 [ 0x0001, "This server is a member of a Cluster" ],
3689 ])
3690 serverListFlags = uint32("server_list_flags", "Server List Flags")
3691 ServerName = fw_string("server_name", "Server Name", 48)
3692 serverName50 = fw_string("server_name50", "Server Name", 50)
3693 ServerNameLen = nstring8("server_name_len", "Server Name")
3694 ServerNameStringz = stringz("server_name_stringz", "Server Name")
3695 ServerNetworkAddress = bytes("server_network_address", "Server Network Address", 10)
3696 ServerNode = bytes("server_node", "Server Node", 6)
3697 ServerSerialNumber = uint32("server_serial_number", "Server Serial Number")
3698 ServerStation = uint8("server_station", "Server Station")
3699 ServerStationLong = uint32("server_station_long", "Server Station")
3700 ServerStationList = uint8("server_station_list", "Server Station List")
3701 ServerStatusRecord = fw_string("server_status_record", "Server Status Record", 64)
3702 ServerTaskNumber = uint8("server_task_number", "Server Task Number")
3703 ServerTaskNumberLong = uint32("server_task_number_long", "Server Task Number")
3704 ServerType = uint16("server_type", "Server Type")
3705 ServerType.Display("BASE_HEX")
3706 ServerUtilization = uint32("server_utilization", "Server Utilization")
3707 ServerUtilizationPercentage = uint8("server_utilization_percentage", "Server Utilization Percentage")
3708 ServiceType = val_string16("Service_type", "Service Type", [
3709 [ 0x0000, "Unknown" ],
3710 [ 0x0001, "User" ],
3711 [ 0x0002, "User group" ],
3712 [ 0x0003, "Print queue" ],
3713 [ 0x0004, "NetWare file server" ],
3714 [ 0x0005, "Job server" ],
3715 [ 0x0006, "Gateway" ],
3716 [ 0x0007, "Print server" ],
3717 [ 0x0008, "Archive queue" ],
3718 [ 0x0009, "Archive server" ],
3719 [ 0x000a, "Job queue" ],
3720 [ 0x000b, "Administration" ],
3721 [ 0x0021, "NAS SNA gateway" ],
3722 [ 0x0026, "Remote bridge server" ],
3723 [ 0x0027, "TCP/IP gateway" ],
3724 [ 0xffff, "All Types" ],
3725 ])
3726 SetCmdCategory = val_string8("set_cmd_category", "Set Command Category", [
3727 [ 0x00, "Communications" ],
3728 [ 0x01, "Memory" ],
3729 [ 0x02, "File Cache" ],
3730 [ 0x03, "Directory Cache" ],
3731 [ 0x04, "File System" ],
3732 [ 0x05, "Locks" ],
3733 [ 0x06, "Transaction Tracking" ],
3734 [ 0x07, "Disk" ],
3735 [ 0x08, "Time" ],
3736 [ 0x09, "NCP" ],
3737 [ 0x0a, "Miscellaneous" ],
3738 [ 0x0b, "Error Handling" ],
3739 [ 0x0c, "Directory Services" ],
3740 [ 0x0d, "MultiProcessor" ],
3741 [ 0x0e, "Service Location Protocol" ],
3742 [ 0x0f, "Licensing Services" ],
3743 ])
3744 SetCmdFlags = bitfield8("set_cmd_flags", "Set Command Flags", [
3745 bf_boolean8(0x01, "cmd_flags_startup_only", "Startup.ncf Only"),
3746 bf_boolean8(0x02, "cmd_flags_hidden", "Hidden"),
3747 bf_boolean8(0x04, "cmd_flags_advanced", "Advanced"),
3748 bf_boolean8(0x08, "cmd_flags_later", "Restart Server Required to Take Effect"),
3749 bf_boolean8(0x80, "cmd_flags_secure", "Console Secured"),
3750 ])
3751 SetCmdName = stringz("set_cmd_name", "Set Command Name")
3752 SetCmdType = val_string8("set_cmd_type", "Set Command Type", [
3753 [ 0x00, "Numeric Value" ],
3754 [ 0x01, "Boolean Value" ],
3755 [ 0x02, "Ticks Value" ],
3756 [ 0x04, "Time Value" ],
3757 [ 0x05, "String Value" ],
3758 [ 0x06, "Trigger Value" ],
3759 [ 0x07, "Numeric Value" ],
3760 ])
3761 SetCmdValueNum = uint32("set_cmd_value_num", "Set Command Value")
3762 SetCmdValueString = stringz("set_cmd_value_string", "Set Command Value")
3763 SetMask = bitfield32("set_mask", "Set Mask", [
3764 bf_boolean32(0x00000001, "ncp_encoded_strings", "NCP Encoded Strings"),
3765 bf_boolean32(0x00000002, "connection_code_page", "Connection Code Page"),
3766 ])
3767 SetParmName = stringz("set_parm_name", "Set Parameter Name")
3768 SFTErrorTable = bytes("sft_error_table", "SFT Error Table", 60)
3769 SFTSupportLevel = val_string8("sft_support_level", "SFT Support Level", [
3770 [ 0x01, "Server Offers Hot Disk Error Fixing" ],
3771 [ 0x02, "Server Offers Disk Mirroring and Transaction Tracking" ],
3772 [ 0x03, "Server Offers Physical Server Mirroring" ],
3773 ])
3774 ShareableLockCount = uint16("shareable_lock_count", "Shareable Lock Count")
3775 SharedMemoryAddresses = bytes("shared_memory_addresses", "Shared Memory Addresses", 10)
3776 ShortName = fw_string("short_name", "Short Name", 12)
3777 ShortStkName = fw_string("short_stack_name", "Short Stack Name", 16)
3778 SiblingCount = uint32("sibling_count", "Sibling Count")
3779 SixtyFourBitOffsetsSupportedFlag = val_string8("64_bit_flag", "64 Bit Support", [
3780 [ 0x00, "No support for 64 bit offsets" ],
3781 [ 0x01, "64 bit offsets supported" ],
3782 [ 0x02, "Use 64 bit file transfer NCP's" ],
3783 ])
3784 SMIDs = uint32("smids", "Storage Media ID's")
3785 SoftwareDescription = fw_string("software_description", "Software Description", 65)
3786 SoftwareDriverType = uint8("software_driver_type", "Software Driver Type")
3787 SoftwareMajorVersionNumber = uint8("software_major_version_number", "Software Major Version Number")
3788 SoftwareMinorVersionNumber = uint8("software_minor_version_number", "Software Minor Version Number")
3789 SourceDirHandle = uint8("source_dir_handle", "Source Directory Handle")
3790 SourceFileHandle = bytes("s_fhandle_64bit", "Source File Handle", 6)
3791 SourceFileOffset = bytes("s_foffset", "Source File Offset", 8)
3792 sourceOriginateTime = bytes("source_originate_time", "Source Originate Time", 8)
3793 SourcePath = nstring8("source_path", "Source Path")
3794 SourcePathComponentCount = uint8("source_component_count", "Source Path Component Count")
3795 sourceReturnTime = bytes("source_return_time", "Source Return Time", 8)
3796 SpaceUsed = uint32("space_used", "Space Used")
3797 SpaceMigrated = uint32("space_migrated", "Space Migrated")
3798 SrcNameSpace = val_string8("src_name_space", "Source Name Space", [
3799 [ 0x00, "DOS Name Space" ],
3800 [ 0x01, "MAC Name Space" ],
3801 [ 0x02, "NFS Name Space" ],
3802 [ 0x04, "Long Name Space" ],
3803 ])
3804 SubFuncStrucLen = uint16("sub_func_struc_len", "Structure Length")
3805 SupModID = uint32("sup_mod_id", "Sup Mod ID")
3806 StackCount = uint32("stack_count", "Stack Count")
3807 StackFullNameStr = nstring8("stack_full_name_str", "Stack Full Name")
3808 StackMajorVN = uint8("stack_major_vn", "Stack Major Version Number")
3809 StackMinorVN = uint8("stack_minor_vn", "Stack Minor Version Number")
3810 StackNumber = uint32("stack_number", "Stack Number")
3811 StartConnNumber = uint32("start_conn_num", "Starting Connection Number")
3812 StartingBlock = uint16("starting_block", "Starting Block")
3813 StartingNumber = uint32("starting_number", "Starting Number")
3814 StartingSearchNumber = uint16("start_search_number", "Start Search Number")
3815 StartNumber = uint32("start_number", "Start Number")
3816 startNumberFlag = uint16("start_number_flag", "Start Number Flag")
3817 StartOffset64bit = bytes("s_offset_64bit", "64bit Starting Offset", 64)
3818 StartVolumeNumber = uint32("start_volume_number", "Starting Volume Number")
3819 StationList = uint32("station_list", "Station List")
3820 StationNumber = bytes("station_number", "Station Number", 3)
3821 StatMajorVersion = uint8("stat_major_version", "Statistics Table Major Version")
3822 StatMinorVersion = uint8("stat_minor_version", "Statistics Table Minor Version")
3823 Status = bitfield16("status", "Status", [
3824 bf_boolean16(0x0001, "user_info_logged_in", "Logged In"),
3825 bf_boolean16(0x0002, "user_info_being_abort", "Being Aborted"),
3826 bf_boolean16(0x0004, "user_info_audited", "Audited"),
3827 bf_boolean16(0x0008, "user_info_need_sec", "Needs Security Change"),
3828 bf_boolean16(0x0010, "user_info_mac_station", "MAC Station"),
3829 bf_boolean16(0x0020, "user_info_temp_authen", "Temporary Authenticated"),
3830 bf_boolean16(0x0040, "user_info_audit_conn", "Audit Connection Recorded"),
3831 bf_boolean16(0x0080, "user_info_dsaudit_conn", "DS Audit Connection Recorded"),
3832 bf_boolean16(0x0100, "user_info_logout", "Logout in Progress"),
3833 bf_boolean16(0x0200, "user_info_int_login", "Internal Login"),
3834 bf_boolean16(0x0400, "user_info_bindery", "Bindery Connection"),
3835 ])
3836 StatusFlagBits = bitfield32("status_flag_bits", "Status Flag", [
3837 bf_boolean32(0x00000001, "status_flag_bits_suballoc", "Sub Allocation"),
3838 bf_boolean32(0x00000002, "status_flag_bits_comp", "Compression"),
3839 bf_boolean32(0x00000004, "status_flag_bits_migrate", "Migration"),
3840 bf_boolean32(0x00000008, "status_flag_bits_audit", "Audit"),
3841 bf_boolean32(0x00000010, "status_flag_bits_ro", "Read Only"),
3842 bf_boolean32(0x00000020, "status_flag_bits_im_purge", "Immediate Purge"),
3843 bf_boolean32(0x00000040, "status_flag_bits_64bit", "64Bit File Offsets"),
3844 bf_boolean32(0x00000080, "status_flag_bits_utf8", "UTF8 NCP Strings"),
3845 bf_boolean32(0x80000000, "status_flag_bits_nss", "NSS Volume"),
3846 ])
3847 SubAllocClusters = uint32("sub_alloc_clusters", "Sub Alloc Clusters")
3848 SubAllocFreeableClusters = uint32("sub_alloc_freeable_clusters", "Sub Alloc Freeable Clusters")
3849 Subdirectory = uint32("sub_directory", "Subdirectory")
3850 Subdirectory.Display("BASE_HEX")
3851 SuggestedFileSize = uint32("suggested_file_size", "Suggested File Size")
3852 SupportModuleID = uint32("support_module_id", "Support Module ID")
3853 SynchName = nstring8("synch_name", "Synch Name")
3854 SystemIntervalMarker = uint32("system_interval_marker", "System Interval Marker")
3855  
3856 TabSize = uint8( "tab_size", "Tab Size" )
3857 TargetClientList = uint8("target_client_list", "Target Client List")
3858 TargetConnectionNumber = uint16("target_connection_number", "Target Connection Number")
3859 TargetDirectoryBase = uint32("target_directory_base", "Target Directory Base")
3860 TargetDirHandle = uint8("target_dir_handle", "Target Directory Handle")
3861 TargetEntryID = uint32("target_entry_id", "Target Entry ID")
3862 TargetEntryID.Display("BASE_HEX")
3863 TargetExecutionTime = bytes("target_execution_time", "Target Execution Time", 6)
3864 TargetFileHandle = bytes("target_file_handle", "Target File Handle", 6)
3865 TargetFileOffset = uint32("target_file_offset", "Target File Offset")
3866 TargetFileOffset64bit = bytes("t_foffset", "Target File Offset", 8)
3867 TargetMessage = nstring8("target_message", "Message")
3868 TargetPrinter = uint8( "target_ptr", "Target Printer" )
3869 targetReceiveTime = bytes("target_receive_time", "Target Receive Time", 8)
3870 TargetServerIDNumber = uint32("target_server_id_number", "Target Server ID Number", ENC_BIG_ENDIAN )
3871 TargetServerIDNumber.Display("BASE_HEX")
3872 targetTransmitTime = bytes("target_transmit_time", "Target Transmit Time", 8)
3873 TaskNumByte = uint8("task_num_byte", "Task Number")
3874 TaskNumber = uint32("task_number", "Task Number")
3875 TaskNumberWord = uint16("task_number_word", "Task Number")
3876 TaskState = val_string8("task_state", "Task State", [
3877 [ 0x00, "Normal" ],
3878 [ 0x01, "TTS explicit transaction in progress" ],
3879 [ 0x02, "TTS implicit transaction in progress" ],
3880 [ 0x04, "Shared file set lock in progress" ],
3881 ])
3882 TextJobDescription = fw_string("text_job_description", "Text Job Description", 50)
3883 ThrashingCount = uint16("thrashing_count", "Thrashing Count")
3884 TimeoutLimit = uint16("timeout_limit", "Timeout Limit")
3885 TimesyncStatus = bitfield32("timesync_status_flags", "Timesync Status", [
3886 bf_boolean32(0x00000001, "timesync_status_sync", "Time is Synchronized"),
3887 bf_boolean32(0x00000002, "timesync_status_net_sync", "Time is Synchronized to the Network"),
3888 bf_boolean32(0x00000004, "timesync_status_active", "Time Synchronization is Active"),
3889 bf_boolean32(0x00000008, "timesync_status_external", "External Time Synchronization Active"),
3890 bf_val_str32(0x00000700, "timesync_status_server_type", "Time Server Type", [
3891 [ 0x01, "Client Time Server" ],
3892 [ 0x02, "Secondary Time Server" ],
3893 [ 0x03, "Primary Time Server" ],
3894 [ 0x04, "Reference Time Server" ],
3895 [ 0x05, "Single Reference Time Server" ],
3896 ]),
3897 bf_boolean32(0x000f0000, "timesync_status_ext_sync", "External Clock Status"),
3898 ])
3899 TimeToNet = uint16("time_to_net", "Time To Net")
3900 TotalBlocks = uint32("total_blocks", "Total Blocks")
3901 TotalBlocks64 = uint64("total_blocks64", "Total Blocks")
3902 TotalBlocksToDecompress = uint32("total_blks_to_dcompress", "Total Blocks To Decompress")
3903 TotalBytesRead = bytes("user_info_ttl_bytes_rd", "Total Bytes Read", 6)
3904 TotalBytesWritten = bytes("user_info_ttl_bytes_wrt", "Total Bytes Written", 6)
3905 TotalCacheWrites = uint32("total_cache_writes", "Total Cache Writes")
3906 TotalChangedFATs = uint32("total_changed_fats", "Total Changed FAT Entries")
3907 TotalCommonCnts = uint32("total_common_cnts", "Total Common Counts")
3908 TotalCntBlocks = uint32("total_cnt_blocks", "Total Count Blocks")
3909 TotalDataStreamDiskSpaceAlloc = uint32("ttl_data_str_size_space_alloc", "Total Data Stream Disk Space Alloc")
3910 TotalDirectorySlots = uint16("total_directory_slots", "Total Directory Slots")
3911 TotalDirectoryEntries = uint32("total_dir_entries", "Total Directory Entries")
3912 TotalDirEntries64 = uint64("total_dir_entries64", "Total Directory Entries")
3913 TotalDynamicSpace = uint32("total_dynamic_space", "Total Dynamic Space")
3914 TotalExtendedDirectoryExtents = uint32("total_extended_directory_extents", "Total Extended Directory Extents")
3915 TotalFileServicePackets = uint32("total_file_service_packets", "Total File Service Packets")
3916 TotalFilesOpened = uint32("total_files_opened", "Total Files Opened")
3917 TotalLFSCounters = uint32("total_lfs_counters", "Total LFS Counters")
3918 TotalOffspring = uint16("total_offspring", "Total Offspring")
3919 TotalOtherPackets = uint32("total_other_packets", "Total Other Packets")
3920 TotalQueueJobs = uint32("total_queue_jobs", "Total Queue Jobs")
3921 TotalReadRequests = uint32("total_read_requests", "Total Read Requests")
3922 TotalRequest = uint32("total_request", "Total Requests")
3923 TotalRequestPackets = uint32("total_request_packets", "Total Request Packets")
3924 TotalRoutedPackets = uint32("total_routed_packets", "Total Routed Packets")
3925 TotalRxPkts = uint32("total_rx_pkts", "Total Receive Packets")
3926 TotalServerMemory = uint16("total_server_memory", "Total Server Memory", ENC_BIG_ENDIAN)
3927 TotalTransactionsBackedOut = uint32("total_trans_backed_out", "Total Transactions Backed Out")
3928 TotalTransactionsPerformed = uint32("total_trans_performed", "Total Transactions Performed")
3929 TotalTxPkts = uint32("total_tx_pkts", "Total Transmit Packets")
3930 TotalUnfilledBackoutRequests = uint16("total_unfilled_backout_requests", "Total Unfilled Backout Requests")
3931 TotalVolumeClusters = uint16("total_volume_clusters", "Total Volume Clusters")
3932 TotalWriteRequests = uint32("total_write_requests", "Total Write Requests")
3933 TotalWriteTransactionsPerformed = uint32("total_write_trans_performed", "Total Write Transactions Performed")
3934 TrackOnFlag = boolean8("track_on_flag", "Track On Flag")
3935 TransactionDiskSpace = uint16("transaction_disk_space", "Transaction Disk Space")
3936 TransactionFATAllocations = uint32("transaction_fat_allocations", "Transaction FAT Allocations")
3937 TransactionFileSizeChanges = uint32("transaction_file_size_changes", "Transaction File Size Changes")
3938 TransactionFilesTruncated = uint32("transaction_files_truncated", "Transaction Files Truncated")
3939 TransactionNumber = uint32("transaction_number", "Transaction Number")
3940 TransactionTrackingEnabled = uint8("transaction_tracking_enabled", "Transaction Tracking Enabled")
3941 TransactionTrackingFlag = uint16("tts_flag", "Transaction Tracking Flag")
3942 TransactionTrackingSupported = uint8("transaction_tracking_supported", "Transaction Tracking Supported")
3943 TransactionVolumeNumber = uint16("transaction_volume_number", "Transaction Volume Number")
3944 TransportType = val_string8("transport_type", "Communications Type", [
3945 [ 0x01, "Internet Packet Exchange (IPX)" ],
3946 [ 0x05, "User Datagram Protocol (UDP)" ],
3947 [ 0x06, "Transmission Control Protocol (TCP)" ],
3948 ])
3949 TreeLength = uint32("tree_length", "Tree Length")
3950 TreeName = nstring32("tree_name", "Tree Name")
3951 TrusteeAccessMask = uint8("trustee_acc_mask", "Trustee Access Mask")
3952 TrusteeRights = bitfield16("trustee_rights_low", "Trustee Rights", [
3953 bf_boolean16(0x0001, "trustee_rights_read", "Read"),
3954 bf_boolean16(0x0002, "trustee_rights_write", "Write"),
3955 bf_boolean16(0x0004, "trustee_rights_open", "Open"),
3956 bf_boolean16(0x0008, "trustee_rights_create", "Create"),
3957 bf_boolean16(0x0010, "trustee_rights_del", "Delete"),
3958 bf_boolean16(0x0020, "trustee_rights_parent", "Parental"),
3959 bf_boolean16(0x0040, "trustee_rights_search", "Search"),
3960 bf_boolean16(0x0080, "trustee_rights_modify", "Modify"),
3961 bf_boolean16(0x0100, "trustee_rights_super", "Supervisor"),
3962 ])
3963 TTSLevel = uint8("tts_level", "TTS Level")
3964 TrusteeSetNumber = uint8("trustee_set_number", "Trustee Set Number")
3965 TrusteeID = uint32("trustee_id_set", "Trustee ID")
3966 TrusteeID.Display("BASE_HEX")
3967 ttlCompBlks = uint32("ttl_comp_blks", "Total Compression Blocks")
3968 TtlDSDskSpaceAlloc = uint32("ttl_ds_disk_space_alloc", "Total Streams Space Allocated")
3969 TtlEAs = uint32("ttl_eas", "Total EA's")
3970 TtlEAsDataSize = uint32("ttl_eas_data_size", "Total EA's Data Size")
3971 TtlEAsKeySize = uint32("ttl_eas_key_size", "Total EA's Key Size")
3972 ttlIntermediateBlks = uint32("ttl_inter_blks", "Total Intermediate Blocks")
3973 TtlMigratedSize = uint32("ttl_migrated_size", "Total Migrated Size")
3974 TtlNumOfRTags = uint32("ttl_num_of_r_tags", "Total Number of Resource Tags")
3975 TtlNumOfSetCmds = uint32("ttl_num_of_set_cmds", "Total Number of Set Commands")
3976 TtlValuesLength = uint32("ttl_values_length", "Total Values Length")
3977 TtlWriteDataSize = uint32("ttl_write_data_size", "Total Write Data Size")
3978 TurboUsedForFileService = uint16("turbo_used_for_file_service", "Turbo Used For File Service")
3979  
3980 UnclaimedPkts = uint32("un_claimed_packets", "Unclaimed Packets")
3981 UnCompressableDataStreamsCount = uint32("un_compressable_data_streams_count", "Uncompressable Data Streams Count")
3982 Undefined8 = bytes("undefined_8", "Undefined", 8)
3983 Undefined28 = bytes("undefined_28", "Undefined", 28)
3984 UndefinedWord = uint16("undefined_word", "Undefined")
3985 UniqueID = uint8("unique_id", "Unique ID")
3986 UnknownByte = uint8("unknown_byte", "Unknown Byte")
3987 Unused = uint8("un_used", "Unused")
3988 UnusedBlocks = uint32("unused_blocks", "Unused Blocks")
3989 UnUsedDirectoryEntries = uint32("un_used_directory_entries", "Unused Directory Entries")
3990 UnusedDiskBlocks = uint32("unused_disk_blocks", "Unused Disk Blocks")
3991 UnUsedExtendedDirectoryExtents = uint32("un_used_extended_directory_extents", "Unused Extended Directory Extents")
3992 UpdateDate = uint16("update_date", "Update Date")
3993 UpdateDate.NWDate()
3994 UpdateID = uint32("update_id", "Update ID", ENC_BIG_ENDIAN)
3995 UpdateID.Display("BASE_HEX")
3996 UpdateTime = uint16("update_time", "Update Time")
3997 UpdateTime.NWTime()
3998 UseCount = val_string16("user_info_use_count", "Use Count", [
3999 [ 0x0000, "Connection is not in use" ],
4000 [ 0x0001, "Connection is in use" ],
4001 ])
4002 UsedBlocks = uint32("used_blocks", "Used Blocks")
4003 UserID = uint32("user_id", "User ID", ENC_BIG_ENDIAN)
4004 UserID.Display("BASE_HEX")
4005 UserLoginAllowed = val_string8("user_login_allowed", "Login Status", [
4006 [ 0x00, "Client Login Disabled" ],
4007 [ 0x01, "Client Login Enabled" ],
4008 ])
4009  
4010 UserName = nstring8("user_name", "User Name")
4011 UserName16 = fw_string("user_name_16", "User Name", 16)
4012 UserName48 = fw_string("user_name_48", "User Name", 48)
4013 UserType = uint16("user_type", "User Type")
4014 UTCTimeInSeconds = eptime("uts_time_in_seconds", "UTC Time in Seconds")
4015  
4016 ValueAvailable = val_string8("value_available", "Value Available", [
4017 [ 0x00, "Has No Value" ],
4018 [ 0xff, "Has Value" ],
4019 ])
4020 VAPVersion = uint8("vap_version", "VAP Version")
4021 VariableBitMask = uint32("variable_bit_mask", "Variable Bit Mask")
4022 VariableBitsDefined = uint16("variable_bits_defined", "Variable Bits Defined")
4023 VConsoleRevision = uint8("vconsole_rev", "Console Revision")
4024 VConsoleVersion = uint8("vconsole_ver", "Console Version")
4025 Verb = uint32("verb", "Verb")
4026 VerbData = uint8("verb_data", "Verb Data")
4027 version = uint32("version", "Version")
4028 VersionNumber = uint8("version_number", "Version")
4029 VersionNumberLong = uint32("version_num_long", "Version")
4030 VertLocation = uint16("vert_location", "Vertical Location")
4031 VirtualConsoleVersion = uint8("virtual_console_version", "Virtual Console Version")
4032 VolumeID = uint32("volume_id", "Volume ID")
4033 VolumeID.Display("BASE_HEX")
4034 VolInfoReplyLen = uint16("vol_info_reply_len", "Volume Information Reply Length")
4035 VolInfoReturnInfoMask = bitfield32("vol_info_ret_info_mask", "Return Information Mask", [
4036 bf_boolean32(0x00000001, "vinfo_info64", "Return 64 bit Volume Information"),
4037 bf_boolean32(0x00000002, "vinfo_volname", "Return Volume Name Details"),
4038 ])
4039 VolumeCapabilities = bitfield32("volume_capabilities", "Volume Capabilities", [
4040 bf_boolean32(0x00000001, "vol_cap_user_space", "NetWare User Space Restrictions Supported"),
4041 bf_boolean32(0x00000002, "vol_cap_dir_quota", "NetWare Directory Quotas Supported"),
4042 bf_boolean32(0x00000004, "vol_cap_dfs", "DFS is Active on Volume"),
4043 bf_boolean32(0x00000008, "vol_cap_sal_purge", "NetWare Salvage and Purge Operations Supported"),
4044 bf_boolean32(0x00000010, "vol_cap_comp", "NetWare Compression Supported"),
4045 bf_boolean32(0x00000020, "vol_cap_cluster", "Volume is a Cluster Resource"),
4046 bf_boolean32(0x00000040, "vol_cap_nss_admin", "Volume is the NSS Admin Volume"),
4047 bf_boolean32(0x00000080, "vol_cap_nss", "Volume is Mounted by NSS"),
4048 bf_boolean32(0x00000100, "vol_cap_ea", "OS2 style EA's Supported"),
4049 bf_boolean32(0x00000200, "vol_cap_archive", "NetWare Archive bit Supported"),
4050 bf_boolean32(0x00000400, "vol_cap_file_attr", "Full NetWare file Attributes Supported"),
4051 ])
4052 VolumeCachedFlag = val_string8("volume_cached_flag", "Volume Cached Flag", [
4053 [ 0x00, "Volume is Not Cached" ],
4054 [ 0xff, "Volume is Cached" ],
4055 ])
4056 VolumeDataStreams = uint8("volume_data_streams", "Volume Data Streams")
4057 VolumeEpochTime = eptime("epoch_time", "Last Modified Timestamp")
4058 VolumeGUID = stringz("volume_guid", "Volume GUID")
4059 VolumeHashedFlag = val_string8("volume_hashed_flag", "Volume Hashed Flag", [
4060 [ 0x00, "Volume is Not Hashed" ],
4061 [ 0xff, "Volume is Hashed" ],
4062 ])
4063 VolumeMountedFlag = val_string8("volume_mounted_flag", "Volume Mounted Flag", [
4064 [ 0x00, "Volume is Not Mounted" ],
4065 [ 0xff, "Volume is Mounted" ],
4066 ])
4067 VolumeMountPoint = stringz("volume_mnt_point", "Volume Mount Point")
4068 VolumeName = fw_string("volume_name", "Volume Name", 16)
4069 VolumeNameLen = nstring8("volume_name_len", "Volume Name")
4070 VolumeNameSpaces = uint8("volume_name_spaces", "Volume Name Spaces")
4071 VolumeNameStringz = stringz("vol_name_stringz", "Volume Name")
4072 VolumeNumber = uint8("volume_number", "Volume Number")
4073 VolumeNumberLong = uint32("volume_number_long", "Volume Number")
4074 VolumeRemovableFlag = val_string8("volume_removable_flag", "Volume Removable Flag", [
4075 [ 0x00, "Disk Cannot be Removed from Server" ],
4076 [ 0xff, "Disk Can be Removed from Server" ],
4077 ])
4078 VolumeRequestFlags = val_string16("volume_request_flags", "Volume Request Flags", [
4079 [ 0x0000, "Do not return name with volume number" ],
4080 [ 0x0001, "Return name with volume number" ],
4081 ])
4082 VolumeSizeInClusters = uint32("volume_size_in_clusters", "Volume Size in Clusters")
4083 VolumesSupportedMax = uint16("volumes_supported_max", "Volumes Supported Max")
4084 VolumeType = val_string16("volume_type", "Volume Type", [
4085 [ 0x0000, "NetWare 386" ],
4086 [ 0x0001, "NetWare 286" ],
4087 [ 0x0002, "NetWare 386 Version 30" ],
4088 [ 0x0003, "NetWare 386 Version 31" ],
4089 ])
4090 VolumeTypeLong = val_string32("volume_type_long", "Volume Type", [
4091 [ 0x00000000, "NetWare 386" ],
4092 [ 0x00000001, "NetWare 286" ],
4093 [ 0x00000002, "NetWare 386 Version 30" ],
4094 [ 0x00000003, "NetWare 386 Version 31" ],
4095 ])
4096 WastedServerMemory = uint16("wasted_server_memory", "Wasted Server Memory", ENC_BIG_ENDIAN)
4097 WaitTime = uint32("wait_time", "Wait Time")
4098  
4099 Year = val_string8("year", "Year",[
4100 [ 0x50, "1980" ],
4101 [ 0x51, "1981" ],
4102 [ 0x52, "1982" ],
4103 [ 0x53, "1983" ],
4104 [ 0x54, "1984" ],
4105 [ 0x55, "1985" ],
4106 [ 0x56, "1986" ],
4107 [ 0x57, "1987" ],
4108 [ 0x58, "1988" ],
4109 [ 0x59, "1989" ],
4110 [ 0x5a, "1990" ],
4111 [ 0x5b, "1991" ],
4112 [ 0x5c, "1992" ],
4113 [ 0x5d, "1993" ],
4114 [ 0x5e, "1994" ],
4115 [ 0x5f, "1995" ],
4116 [ 0x60, "1996" ],
4117 [ 0x61, "1997" ],
4118 [ 0x62, "1998" ],
4119 [ 0x63, "1999" ],
4120 [ 0x64, "2000" ],
4121 [ 0x65, "2001" ],
4122 [ 0x66, "2002" ],
4123 [ 0x67, "2003" ],
4124 [ 0x68, "2004" ],
4125 [ 0x69, "2005" ],
4126 [ 0x6a, "2006" ],
4127 [ 0x6b, "2007" ],
4128 [ 0x6c, "2008" ],
4129 [ 0x6d, "2009" ],
4130 [ 0x6e, "2010" ],
4131 [ 0x6f, "2011" ],
4132 [ 0x70, "2012" ],
4133 [ 0x71, "2013" ],
4134 [ 0x72, "2014" ],
4135 [ 0x73, "2015" ],
4136 [ 0x74, "2016" ],
4137 [ 0x75, "2017" ],
4138 [ 0x76, "2018" ],
4139 [ 0x77, "2019" ],
4140 [ 0x78, "2020" ],
4141 [ 0x79, "2021" ],
4142 [ 0x7a, "2022" ],
4143 [ 0x7b, "2023" ],
4144 [ 0x7c, "2024" ],
4145 [ 0x7d, "2025" ],
4146 [ 0x7e, "2026" ],
4147 [ 0x7f, "2027" ],
4148 [ 0xc0, "1984" ],
4149 [ 0xc1, "1985" ],
4150 [ 0xc2, "1986" ],
4151 [ 0xc3, "1987" ],
4152 [ 0xc4, "1988" ],
4153 [ 0xc5, "1989" ],
4154 [ 0xc6, "1990" ],
4155 [ 0xc7, "1991" ],
4156 [ 0xc8, "1992" ],
4157 [ 0xc9, "1993" ],
4158 [ 0xca, "1994" ],
4159 [ 0xcb, "1995" ],
4160 [ 0xcc, "1996" ],
4161 [ 0xcd, "1997" ],
4162 [ 0xce, "1998" ],
4163 [ 0xcf, "1999" ],
4164 [ 0xd0, "2000" ],
4165 [ 0xd1, "2001" ],
4166 [ 0xd2, "2002" ],
4167 [ 0xd3, "2003" ],
4168 [ 0xd4, "2004" ],
4169 [ 0xd5, "2005" ],
4170 [ 0xd6, "2006" ],
4171 [ 0xd7, "2007" ],
4172 [ 0xd8, "2008" ],
4173 [ 0xd9, "2009" ],
4174 [ 0xda, "2010" ],
4175 [ 0xdb, "2011" ],
4176 [ 0xdc, "2012" ],
4177 [ 0xdd, "2013" ],
4178 [ 0xde, "2014" ],
4179 [ 0xdf, "2015" ],
4180 ])
4181 ##############################################################################
4182 # Structs
4183 ##############################################################################
4184  
4185  
4186 acctngInfo = struct("acctng_info_struct", [
4187 HoldTime,
4188 HoldAmount,
4189 ChargeAmount,
4190 HeldConnectTimeInMinutes,
4191 HeldRequests,
4192 HeldBytesRead,
4193 HeldBytesWritten,
4194 ],"Accounting Information")
4195 AFP10Struct = struct("afp_10_struct", [
4196 AFPEntryID,
4197 ParentID,
4198 AttributesDef16,
4199 DataForkLen,
4200 ResourceForkLen,
4201 TotalOffspring,
4202 CreationDate,
4203 LastAccessedDate,
4204 ModifiedDate,
4205 ModifiedTime,
4206 ArchivedDate,
4207 ArchivedTime,
4208 CreatorID,
4209 Reserved4,
4210 FinderAttr,
4211 HorizLocation,
4212 VertLocation,
4213 FileDirWindow,
4214 Reserved16,
4215 LongName,
4216 CreatorID,
4217 ShortName,
4218 AccessPrivileges,
4219 ], "AFP Information" )
4220 AFP20Struct = struct("afp_20_struct", [
4221 AFPEntryID,
4222 ParentID,
4223 AttributesDef16,
4224 DataForkLen,
4225 ResourceForkLen,
4226 TotalOffspring,
4227 CreationDate,
4228 LastAccessedDate,
4229 ModifiedDate,
4230 ModifiedTime,
4231 ArchivedDate,
4232 ArchivedTime,
4233 CreatorID,
4234 Reserved4,
4235 FinderAttr,
4236 HorizLocation,
4237 VertLocation,
4238 FileDirWindow,
4239 Reserved16,
4240 LongName,
4241 CreatorID,
4242 ShortName,
4243 AccessPrivileges,
4244 Reserved,
4245 ProDOSInfo,
4246 ], "AFP Information" )
4247 ArchiveDateStruct = struct("archive_date_struct", [
4248 ArchivedDate,
4249 ])
4250 ArchiveIdStruct = struct("archive_id_struct", [
4251 ArchiverID,
4252 ])
4253 ArchiveInfoStruct = struct("archive_info_struct", [
4254 ArchivedTime,
4255 ArchivedDate,
4256 ArchiverID,
4257 ], "Archive Information")
4258 ArchiveTimeStruct = struct("archive_time_struct", [
4259 ArchivedTime,
4260 ])
4261 AttributesStruct = struct("attributes_struct", [
4262 AttributesDef32,
4263 FlagsDef,
4264 ], "Attributes")
4265 authInfo = struct("auth_info_struct", [
4266 Status,
4267 Reserved2,
4268 Privileges,
4269 ])
4270 BoardNameStruct = struct("board_name_struct", [
4271 DriverBoardName,
4272 DriverShortName,
4273 DriverLogicalName,
4274 ], "Board Name")
4275 CacheInfo = struct("cache_info", [
4276 uint32("max_byte_cnt", "Maximum Byte Count"),
4277 uint32("min_num_of_cache_buff", "Minimum Number Of Cache Buffers"),
4278 uint32("min_cache_report_thresh", "Minimum Cache Report Threshold"),
4279 uint32("alloc_waiting", "Allocate Waiting Count"),
4280 uint32("ndirty_blocks", "Number of Dirty Blocks"),
4281 uint32("cache_dirty_wait_time", "Cache Dirty Wait Time"),
4282 uint32("cache_max_concur_writes", "Cache Maximum Concurrent Writes"),
4283 uint32("max_dirty_time", "Maximum Dirty Time"),
4284 uint32("num_dir_cache_buff", "Number Of Directory Cache Buffers"),
4285 uint32("cache_byte_to_block", "Cache Byte To Block Shift Factor"),
4286 ], "Cache Information")
4287 CommonLanStruc = struct("common_lan_struct", [
4288 boolean8("not_supported_mask", "Bit Counter Supported"),
4289 Reserved3,
4290 uint32("total_tx_packet_count", "Total Transmit Packet Count"),
4291 uint32("total_rx_packet_count", "Total Receive Packet Count"),
4292 uint32("no_ecb_available_count", "No ECB Available Count"),
4293 uint32("packet_tx_too_big_count", "Transmit Packet Too Big Count"),
4294 uint32("packet_tx_too_small_count", "Transmit Packet Too Small Count"),
4295 uint32("packet_rx_overflow_count", "Receive Packet Overflow Count"),
4296 uint32("packet_rx_too_big_count", "Receive Packet Too Big Count"),
4297 uint32("packet_rs_too_small_count", "Receive Packet Too Small Count"),
4298 uint32("packet_tx_misc_error_count", "Transmit Packet Misc Error Count"),
4299 uint32("packet_rx_misc_error_count", "Receive Packet Misc Error Count"),
4300 uint32("retry_tx_count", "Transmit Retry Count"),
4301 uint32("checksum_error_count", "Checksum Error Count"),
4302 uint32("hardware_rx_mismatch_count", "Hardware Receive Mismatch Count"),
4303 ], "Common LAN Information")
4304 CompDeCompStat = struct("comp_d_comp_stat", [
4305 uint32("cmphitickhigh", "Compress High Tick"),
4306 uint32("cmphitickcnt", "Compress High Tick Count"),
4307 uint32("cmpbyteincount", "Compress Byte In Count"),
4308 uint32("cmpbyteoutcnt", "Compress Byte Out Count"),
4309 uint32("cmphibyteincnt", "Compress High Byte In Count"),
4310 uint32("cmphibyteoutcnt", "Compress High Byte Out Count"),
4311 uint32("decphitickhigh", "DeCompress High Tick"),
4312 uint32("decphitickcnt", "DeCompress High Tick Count"),
4313 uint32("decpbyteincount", "DeCompress Byte In Count"),
4314 uint32("decpbyteoutcnt", "DeCompress Byte Out Count"),
4315 uint32("decphibyteincnt", "DeCompress High Byte In Count"),
4316 uint32("decphibyteoutcnt", "DeCompress High Byte Out Count"),
4317 ], "Compression/Decompression Information")
4318 ConnFileStruct = struct("conn_file_struct", [
4319 ConnectionNumberWord,
4320 TaskNumberWord,
4321 LockType,
4322 AccessControl,
4323 LockFlag,
4324 ], "File Connection Information")
4325 ConnStruct = struct("conn_struct", [
4326 TaskNumByte,
4327 LockType,
4328 AccessControl,
4329 LockFlag,
4330 VolumeNumber,
4331 DirectoryEntryNumberWord,
4332 FileName14,
4333 ], "Connection Information")
4334 ConnTaskStruct = struct("conn_task_struct", [
4335 ConnectionNumberByte,
4336 TaskNumByte,
4337 ], "Task Information")
4338 Counters = struct("counters_struct", [
4339 uint32("read_exist_blck", "Read Existing Block Count"),
4340 uint32("read_exist_write_wait", "Read Existing Write Wait Count"),
4341 uint32("read_exist_part_read", "Read Existing Partial Read Count"),
4342 uint32("read_exist_read_err", "Read Existing Read Error Count"),
4343 uint32("wrt_blck_cnt", "Write Block Count"),
4344 uint32("wrt_entire_blck", "Write Entire Block Count"),
4345 uint32("internl_dsk_get", "Internal Disk Get Count"),
4346 uint32("internl_dsk_get_need_to_alloc", "Internal Disk Get Need To Allocate Count"),
4347 uint32("internl_dsk_get_someone_beat", "Internal Disk Get Someone Beat My Count"),
4348 uint32("internl_dsk_get_part_read", "Internal Disk Get Partial Read Count"),
4349 uint32("internl_dsk_get_read_err", "Internal Disk Get Read Error Count"),
4350 uint32("async_internl_dsk_get", "Async Internal Disk Get Count"),
4351 uint32("async_internl_dsk_get_need_to_alloc", "Async Internal Disk Get Need To Alloc"),
4352 uint32("async_internl_dsk_get_someone_beat", "Async Internal Disk Get Someone Beat Me"),
4353 uint32("err_doing_async_read", "Error Doing Async Read Count"),
4354 uint32("internl_dsk_get_no_read", "Internal Disk Get No Read Count"),
4355 uint32("internl_dsk_get_no_read_alloc", "Internal Disk Get No Read Allocate Count"),
4356 uint32("internl_dsk_get_no_read_someone_beat", "Internal Disk Get No Read Someone Beat Me Count"),
4357 uint32("internl_dsk_write", "Internal Disk Write Count"),
4358 uint32("internl_dsk_write_alloc", "Internal Disk Write Allocate Count"),
4359 uint32("internl_dsk_write_someone_beat", "Internal Disk Write Someone Beat Me Count"),
4360 uint32("write_err", "Write Error Count"),
4361 uint32("wait_on_sema", "Wait On Semaphore Count"),
4362 uint32("alloc_blck_i_had_to_wait_for", "Allocate Block I Had To Wait For Someone Count"),
4363 uint32("alloc_blck", "Allocate Block Count"),
4364 uint32("alloc_blck_i_had_to_wait", "Allocate Block I Had To Wait Count"),
4365 ], "Disk Counter Information")
4366 CPUInformation = struct("cpu_information", [
4367 PageTableOwnerFlag,
4368 CPUType,
4369 Reserved3,
4370 CoprocessorFlag,
4371 BusType,
4372 Reserved3,
4373 IOEngineFlag,
4374 Reserved3,
4375 FSEngineFlag,
4376 Reserved3,
4377 NonDedFlag,
4378 Reserved3,
4379 CPUString,
4380 CoProcessorString,
4381 BusString,
4382 ], "CPU Information")
4383 CreationDateStruct = struct("creation_date_struct", [
4384 CreationDate,
4385 ])
4386 CreationInfoStruct = struct("creation_info_struct", [
4387 CreationTime,
4388 CreationDate,
4389 endian(CreatorID, ENC_LITTLE_ENDIAN),
4390 ], "Creation Information")
4391 CreationTimeStruct = struct("creation_time_struct", [
4392 CreationTime,
4393 ])
4394 CustomCntsInfo = struct("custom_cnts_info", [
4395 CustomVariableValue,
4396 CustomString,
4397 ], "Custom Counters" )
4398 DataStreamInfo = struct("data_stream_info", [
4399 AssociatedNameSpace,
4400 DataStreamName
4401 ])
4402 DataStreamSizeStruct = struct("data_stream_size_struct", [
4403 DataStreamSize,
4404 ])
4405 DirCacheInfo = struct("dir_cache_info", [
4406 uint32("min_time_since_file_delete", "Minimum Time Since File Delete"),
4407 uint32("abs_min_time_since_file_delete", "Absolute Minimum Time Since File Delete"),
4408 uint32("min_num_of_dir_cache_buff", "Minimum Number Of Directory Cache Buffers"),
4409 uint32("max_num_of_dir_cache_buff", "Maximum Number Of Directory Cache Buffers"),
4410 uint32("num_of_dir_cache_buff", "Number Of Directory Cache Buffers"),
4411 uint32("dc_min_non_ref_time", "DC Minimum Non-Referenced Time"),
4412 uint32("dc_wait_time_before_new_buff", "DC Wait Time Before New Buffer"),
4413 uint32("dc_max_concurrent_writes", "DC Maximum Concurrent Writes"),
4414 uint32("dc_dirty_wait_time", "DC Dirty Wait Time"),
4415 uint32("dc_double_read_flag", "DC Double Read Flag"),
4416 uint32("map_hash_node_count", "Map Hash Node Count"),
4417 uint32("space_restriction_node_count", "Space Restriction Node Count"),
4418 uint32("trustee_list_node_count", "Trustee List Node Count"),
4419 uint32("percent_of_vol_used_by_dirs", "Percent Of Volume Used By Directories"),
4420 ], "Directory Cache Information")
4421 DirDiskSpaceRest64bit = struct("dir_disk_space_rest_64bit", [
4422 Level,
4423 MaxSpace64,
4424 MinSpaceLeft64
4425 ], "Directory Disk Space Restriction 64 bit")
4426 DirEntryStruct = struct("dir_entry_struct", [
4427 DirectoryEntryNumber,
4428 DOSDirectoryEntryNumber,
4429 VolumeNumberLong,
4430 ], "Directory Entry Information")
4431 DirectoryInstance = struct("directory_instance", [
4432 SearchSequenceWord,
4433 DirectoryID,
4434 DirectoryName14,
4435 DirectoryAttributes,
4436 DirectoryAccessRights,
4437 endian(CreationDate, ENC_BIG_ENDIAN),
4438 endian(AccessDate, ENC_BIG_ENDIAN),
4439 CreatorID,
4440 Reserved2,
4441 DirectoryStamp,
4442 ], "Directory Information")
4443 DMInfoLevel0 = struct("dm_info_level_0", [
4444 uint32("io_flag", "IO Flag"),
4445 uint32("sm_info_size", "Storage Module Information Size"),
4446 uint32("avail_space", "Available Space"),
4447 uint32("used_space", "Used Space"),
4448 stringz("s_module_name", "Storage Module Name"),
4449 uint8("s_m_info", "Storage Media Information"),
4450 ])
4451 DMInfoLevel1 = struct("dm_info_level_1", [
4452 NumberOfSMs,
4453 SMIDs,
4454 ])
4455 DMInfoLevel2 = struct("dm_info_level_2", [
4456 Name,
4457 ])
4458 DOSDirectoryEntryStruct = struct("dos_directory_entry_struct", [
4459 AttributesDef32,
4460 UniqueID,
4461 PurgeFlags,
4462 DestNameSpace,
4463 DirectoryNameLen,
4464 DirectoryName,
4465 CreationTime,
4466 CreationDate,
4467 CreatorID,
4468 ArchivedTime,
4469 ArchivedDate,
4470 ArchiverID,
4471 UpdateTime,
4472 UpdateDate,
4473 NextTrusteeEntry,
4474 Reserved48,
4475 InheritedRightsMask,
4476 ], "DOS Directory Information")
4477 DOSFileEntryStruct = struct("dos_file_entry_struct", [
4478 AttributesDef32,
4479 UniqueID,
4480 PurgeFlags,
4481 DestNameSpace,
4482 NameLen,
4483 Name12,
4484 CreationTime,
4485 CreationDate,
4486 CreatorID,
4487 ArchivedTime,
4488 ArchivedDate,
4489 ArchiverID,
4490 UpdateTime,
4491 UpdateDate,
4492 UpdateID,
4493 FileSize,
4494 DataForkFirstFAT,
4495 NextTrusteeEntry,
4496 Reserved36,
4497 InheritedRightsMask,
4498 LastAccessedDate,
4499 Reserved20,
4500 PrimaryEntry,
4501 NameList,
4502 ], "DOS File Information")
4503 DSSpaceAllocateStruct = struct("ds_space_alloc_struct", [
4504 DataStreamSpaceAlloc,
4505 ])
4506 DynMemStruct = struct("dyn_mem_struct", [
4507 uint32("dyn_mem_struct_total", "Total Dynamic Space" ),
4508 uint32("dyn_mem_struct_max", "Max Used Dynamic Space" ),
4509 uint32("dyn_mem_struct_cur", "Current Used Dynamic Space" ),
4510 ], "Dynamic Memory Information")
4511 EAInfoStruct = struct("ea_info_struct", [
4512 EADataSize,
4513 EACount,
4514 EAKeySize,
4515 ], "Extended Attribute Information")
4516 ExtraCacheCntrs = struct("extra_cache_cntrs", [
4517 uint32("internl_dsk_get_no_wait", "Internal Disk Get No Wait Count"),
4518 uint32("internl_dsk_get_no_wait_need", "Internal Disk Get No Wait Need To Allocate Count"),
4519 uint32("internl_dsk_get_no_wait_no_blk", "Internal Disk Get No Wait No Block Count"),
4520 uint32("id_get_no_read_no_wait", "ID Get No Read No Wait Count"),
4521 uint32("id_get_no_read_no_wait_sema", "ID Get No Read No Wait Semaphored Count"),
4522 uint32("id_get_no_read_no_wait_buffer", "ID Get No Read No Wait No Buffer Count"),
4523 uint32("id_get_no_read_no_wait_alloc", "ID Get No Read No Wait Allocate Count"),
4524 uint32("id_get_no_read_no_wait_no_alloc", "ID Get No Read No Wait No Alloc Count"),
4525 uint32("id_get_no_read_no_wait_no_alloc_sema", "ID Get No Read No Wait No Alloc Semaphored Count"),
4526 uint32("id_get_no_read_no_wait_no_alloc_alloc", "ID Get No Read No Wait No Alloc Allocate Count"),
4527 ], "Extra Cache Counters Information")
4528  
4529 FileSize64bitStruct = struct("file_sz_64bit_struct", [
4530 FileSize64bit,
4531 ])
4532  
4533 ReferenceIDStruct = struct("ref_id_struct", [
4534 CurrentReferenceID,
4535 ])
4536 NSAttributeStruct = struct("ns_attrib_struct", [
4537 AttributesDef32,
4538 ])
4539 DStreamActual = struct("d_stream_actual", [
4540 DataStreamNumberLong,
4541 DataStreamFATBlocks,
4542 ], "Actual Stream")
4543 DStreamLogical = struct("d_string_logical", [
4544 DataStreamNumberLong,
4545 DataStreamSize,
4546 ], "Logical Stream")
4547 LastUpdatedInSecondsStruct = struct("last_update_in_seconds_struct", [
4548 SecondsRelativeToTheYear2000,
4549 ])
4550 DOSNameStruct = struct("dos_name_struct", [
4551 FileName,
4552 ], "DOS File Name")
4553 DOSName16Struct = struct("dos_name_16_struct", [
4554 FileName16,
4555 ], "DOS File Name")
4556 FlushTimeStruct = struct("flush_time_struct", [
4557 FlushTime,
4558 ])
4559 ParentBaseIDStruct = struct("parent_base_id_struct", [
4560 ParentBaseID,
4561 ])
4562 MacFinderInfoStruct = struct("mac_finder_info_struct", [
4563 MacFinderInfo,
4564 ])
4565 SiblingCountStruct = struct("sibling_count_struct", [
4566 SiblingCount,
4567 ])
4568 EffectiveRightsStruct = struct("eff_rights_struct", [
4569 EffectiveRights,
4570 Reserved3,
4571 ])
4572 MacTimeStruct = struct("mac_time_struct", [
4573 MACCreateDate,
4574 MACCreateTime,
4575 MACBackupDate,
4576 MACBackupTime,
4577 ])
4578 LastAccessedTimeStruct = struct("last_access_time_struct", [
4579 LastAccessedTime,
4580 ])
4581 FileAttributesStruct = struct("file_attributes_struct", [
4582 AttributesDef32,
4583 ])
4584 FileInfoStruct = struct("file_info_struct", [
4585 ParentID,
4586 DirectoryEntryNumber,
4587 TotalBlocksToDecompress,
4588 #CurrentBlockBeingDecompressed,
4589 ], "File Information")
4590 FileInstance = struct("file_instance", [
4591 SearchSequenceWord,
4592 DirectoryID,
4593 FileName14,
4594 AttributesDef,
4595 FileMode,
4596 FileSize,
4597 endian(CreationDate, ENC_BIG_ENDIAN),
4598 endian(AccessDate, ENC_BIG_ENDIAN),
4599 endian(UpdateDate, ENC_BIG_ENDIAN),
4600 endian(UpdateTime, ENC_BIG_ENDIAN),
4601 ], "File Instance")
4602 FileNameStruct = struct("file_name_struct", [
4603 FileName,
4604 ], "File Name")
4605 FileName16Struct = struct("file_name16_struct", [
4606 FileName16,
4607 ], "File Name")
4608 FileServerCounters = struct("file_server_counters", [
4609 uint16("too_many_hops", "Too Many Hops"),
4610 uint16("unknown_network", "Unknown Network"),
4611 uint16("no_space_for_service", "No Space For Service"),
4612 uint16("no_receive_buff", "No Receive Buffers"),
4613 uint16("not_my_network", "Not My Network"),
4614 uint32("netbios_progated", "NetBIOS Propagated Count"),
4615 uint32("ttl_pckts_srvcd", "Total Packets Serviced"),
4616 uint32("ttl_pckts_routed", "Total Packets Routed"),
4617 ], "File Server Counters")
4618 FileSystemInfo = struct("file_system_info", [
4619 uint32("fat_moved", "Number of times the OS has move the location of FAT"),
4620 uint32("fat_write_err", "Number of write errors in both original and mirrored copies of FAT"),
4621 uint32("someone_else_did_it_0", "Someone Else Did It Count 0"),
4622 uint32("someone_else_did_it_1", "Someone Else Did It Count 1"),
4623 uint32("someone_else_did_it_2", "Someone Else Did It Count 2"),
4624 uint32("i_ran_out_someone_else_did_it_0", "I Ran Out Someone Else Did It Count 0"),
4625 uint32("i_ran_out_someone_else_did_it_1", "I Ran Out Someone Else Did It Count 1"),
4626 uint32("i_ran_out_someone_else_did_it_2", "I Ran Out Someone Else Did It Count 2"),
4627 uint32("turbo_fat_build_failed", "Turbo FAT Build Failed Count"),
4628 uint32("extra_use_count_node_count", "Errors allocating a use count node for TTS"),
4629 uint32("extra_extra_use_count_node_count", "Errors allocating an additional use count node for TTS"),
4630 uint32("error_read_last_fat", "Error Reading Last FAT Count"),
4631 uint32("someone_else_using_this_file", "Someone Else Using This File Count"),
4632 ], "File System Information")
4633 GenericInfoDef = struct("generic_info_def", [
4634 fw_string("generic_label", "Label", 64),
4635 uint32("generic_ident_type", "Identification Type"),
4636 uint32("generic_ident_time", "Identification Time"),
4637 uint32("generic_media_type", "Media Type"),
4638 uint32("generic_cartridge_type", "Cartridge Type"),
4639 uint32("generic_unit_size", "Unit Size"),
4640 uint32("generic_block_size", "Block Size"),
4641 uint32("generic_capacity", "Capacity"),
4642 uint32("generic_pref_unit_size", "Preferred Unit Size"),
4643 fw_string("generic_name", "Name",64),
4644 uint32("generic_type", "Type"),
4645 uint32("generic_status", "Status"),
4646 uint32("generic_func_mask", "Function Mask"),
4647 uint32("generic_ctl_mask", "Control Mask"),
4648 uint32("generic_parent_count", "Parent Count"),
4649 uint32("generic_sib_count", "Sibling Count"),
4650 uint32("generic_child_count", "Child Count"),
4651 uint32("generic_spec_info_sz", "Specific Information Size"),
4652 uint32("generic_object_uniq_id", "Unique Object ID"),
4653 uint32("generic_media_slot", "Media Slot"),
4654 ], "Generic Information")
4655 HandleInfoLevel0 = struct("handle_info_level_0", [
4656 # DataStream,
4657 ])
4658 HandleInfoLevel1 = struct("handle_info_level_1", [
4659 DataStream,
4660 ])
4661 HandleInfoLevel2 = struct("handle_info_level_2", [
4662 DOSDirectoryBase,
4663 NameSpace,
4664 DataStream,
4665 ])
4666 HandleInfoLevel3 = struct("handle_info_level_3", [
4667 DOSDirectoryBase,
4668 NameSpace,
4669 ])
4670 HandleInfoLevel4 = struct("handle_info_level_4", [
4671 DOSDirectoryBase,
4672 NameSpace,
4673 ParentDirectoryBase,
4674 ParentDOSDirectoryBase,
4675 ])
4676 HandleInfoLevel5 = struct("handle_info_level_5", [
4677 DOSDirectoryBase,
4678 NameSpace,
4679 DataStream,
4680 ParentDirectoryBase,
4681 ParentDOSDirectoryBase,
4682 ])
4683 IPXInformation = struct("ipx_information", [
4684 uint32("ipx_send_pkt", "IPX Send Packet Count"),
4685 uint16("ipx_malform_pkt", "IPX Malformed Packet Count"),
4686 uint32("ipx_get_ecb_req", "IPX Get ECB Request Count"),
4687 uint32("ipx_get_ecb_fail", "IPX Get ECB Fail Count"),
4688 uint32("ipx_aes_event", "IPX AES Event Count"),
4689 uint16("ipx_postponed_aes", "IPX Postponed AES Count"),
4690 uint16("ipx_max_conf_sock", "IPX Max Configured Socket Count"),
4691 uint16("ipx_max_open_sock", "IPX Max Open Socket Count"),
4692 uint16("ipx_open_sock_fail", "IPX Open Socket Fail Count"),
4693 uint32("ipx_listen_ecb", "IPX Listen ECB Count"),
4694 uint16("ipx_ecb_cancel_fail", "IPX ECB Cancel Fail Count"),
4695 uint16("ipx_get_lcl_targ_fail", "IPX Get Local Target Fail Count"),
4696 ], "IPX Information")
4697 JobEntryTime = struct("job_entry_time", [
4698 Year,
4699 Month,
4700 Day,
4701 Hour,
4702 Minute,
4703 Second,
4704 ], "Job Entry Time")
4705 JobStruct3x = struct("job_struct_3x", [
4706 RecordInUseFlag,
4707 PreviousRecord,
4708 NextRecord,
4709 ClientStationLong,
4710 ClientTaskNumberLong,
4711 ClientIDNumber,
4712 TargetServerIDNumber,
4713 TargetExecutionTime,
4714 JobEntryTime,
4715 JobNumberLong,
4716 JobType,
4717 JobPositionWord,
4718 JobControlFlagsWord,
4719 JobFileName,
4720 JobFileHandleLong,
4721 ServerStationLong,
4722 ServerTaskNumberLong,
4723 ServerID,
4724 TextJobDescription,
4725 ClientRecordArea,
4726 ], "Job Information")
4727 JobStruct = struct("job_struct", [
4728 ClientStation,
4729 ClientTaskNumber,
4730 ClientIDNumber,
4731 TargetServerIDNumber,
4732 TargetExecutionTime,
4733 JobEntryTime,
4734 JobNumber,
4735 JobType,
4736 JobPosition,
4737 JobControlFlags,
4738 JobFileName,
4739 JobFileHandle,
4740 ServerStation,
4741 ServerTaskNumber,
4742 ServerID,
4743 TextJobDescription,
4744 ClientRecordArea,
4745 ], "Job Information")
4746 JobStructNew = struct("job_struct_new", [
4747 RecordInUseFlag,
4748 PreviousRecord,
4749 NextRecord,
4750 ClientStationLong,
4751 ClientTaskNumberLong,
4752 ClientIDNumber,
4753 TargetServerIDNumber,
4754 TargetExecutionTime,
4755 JobEntryTime,
4756 JobNumberLong,
4757 JobType,
4758 JobPositionWord,
4759 JobControlFlagsWord,
4760 JobFileName,
4761 JobFileHandleLong,
4762 ServerStationLong,
4763 ServerTaskNumberLong,
4764 ServerID,
4765 ], "Job Information")
4766 KnownRoutes = struct("known_routes", [
4767 NetIDNumber,
4768 HopsToNet,
4769 NetStatus,
4770 TimeToNet,
4771 ], "Known Routes")
4772 SrcEnhNWHandlePathS1 = struct("source_nwhandle", [
4773 DirectoryBase,
4774 VolumeNumber,
4775 HandleFlag,
4776 DataTypeFlag,
4777 Reserved5,
4778 ], "Source Information")
4779 DstEnhNWHandlePathS1 = struct("destination_nwhandle", [
4780 DirectoryBase,
4781 VolumeNumber,
4782 HandleFlag,
4783 DataTypeFlag,
4784 Reserved5,
4785 ], "Destination Information")
4786 KnownServStruc = struct("known_server_struct", [
4787 ServerAddress,
4788 HopsToNet,
4789 ServerNameStringz,
4790 ], "Known Servers")
4791 LANConfigInfo = struct("lan_cfg_info", [
4792 LANdriverCFG_MajorVersion,
4793 LANdriverCFG_MinorVersion,
4794 LANdriverNodeAddress,
4795 Reserved,
4796 LANdriverModeFlags,
4797 LANdriverBoardNumber,
4798 LANdriverBoardInstance,
4799 LANdriverMaximumSize,
4800 LANdriverMaxRecvSize,
4801 LANdriverRecvSize,
4802 LANdriverCardID,
4803 LANdriverMediaID,
4804 LANdriverTransportTime,
4805 LANdriverSrcRouting,
4806 LANdriverLineSpeed,
4807 LANdriverReserved,
4808 LANdriverMajorVersion,
4809 LANdriverMinorVersion,
4810 LANdriverFlags,
4811 LANdriverSendRetries,
4812 LANdriverLink,
4813 LANdriverSharingFlags,
4814 LANdriverSlot,
4815 LANdriverIOPortsAndRanges1,
4816 LANdriverIOPortsAndRanges2,
4817 LANdriverIOPortsAndRanges3,
4818 LANdriverIOPortsAndRanges4,
4819 LANdriverMemoryDecode0,
4820 LANdriverMemoryLength0,
4821 LANdriverMemoryDecode1,
4822 LANdriverMemoryLength1,
4823 LANdriverInterrupt1,
4824 LANdriverInterrupt2,
4825 LANdriverDMAUsage1,
4826 LANdriverDMAUsage2,
4827 LANdriverLogicalName,
4828 LANdriverIOReserved,
4829 LANdriverCardName,
4830 ], "LAN Configuration Information")
4831 LastAccessStruct = struct("last_access_struct", [
4832 LastAccessedDate,
4833 ])
4834 lockInfo = struct("lock_info_struct", [
4835 LogicalLockThreshold,
4836 PhysicalLockThreshold,
4837 FileLockCount,
4838 RecordLockCount,
4839 ], "Lock Information")
4840 LockStruct = struct("lock_struct", [
4841 TaskNumByte,
4842 LockType,
4843 RecordStart,
4844 RecordEnd,
4845 ], "Locks")
4846 LoginTime = struct("login_time", [
4847 Year,
4848 Month,
4849 Day,
4850 Hour,
4851 Minute,
4852 Second,
4853 DayOfWeek,
4854 ], "Login Time")
4855 LogLockStruct = struct("log_lock_struct", [
4856 TaskNumberWord,
4857 LockStatus,
4858 LockName,
4859 ], "Logical Locks")
4860 LogRecStruct = struct("log_rec_struct", [
4861 ConnectionNumberWord,
4862 TaskNumByte,
4863 LockStatus,
4864 ], "Logical Record Locks")
4865 LSLInformation = struct("lsl_information", [
4866 uint32("rx_buffers", "Receive Buffers"),
4867 uint32("rx_buffers_75", "Receive Buffers Warning Level"),
4868 uint32("rx_buffers_checked_out", "Receive Buffers Checked Out Count"),
4869 uint32("rx_buffer_size", "Receive Buffer Size"),
4870 uint32("max_phy_packet_size", "Maximum Physical Packet Size"),
4871 uint32("last_time_rx_buff_was_alloc", "Last Time a Receive Buffer was Allocated"),
4872 uint32("max_num_of_protocols", "Maximum Number of Protocols"),
4873 uint32("max_num_of_media_types", "Maximum Number of Media Types"),
4874 uint32("total_tx_packets", "Total Transmit Packets"),
4875 uint32("get_ecb_buf", "Get ECB Buffers"),
4876 uint32("get_ecb_fails", "Get ECB Failures"),
4877 uint32("aes_event_count", "AES Event Count"),
4878 uint32("post_poned_events", "Postponed Events"),
4879 uint32("ecb_cxl_fails", "ECB Cancel Failures"),
4880 uint32("valid_bfrs_reused", "Valid Buffers Reused"),
4881 uint32("enqueued_send_cnt", "Enqueued Send Count"),
4882 uint32("total_rx_packets", "Total Receive Packets"),
4883 uint32("unclaimed_packets", "Unclaimed Packets"),
4884 uint8("stat_table_major_version", "Statistics Table Major Version"),
4885 uint8("stat_table_minor_version", "Statistics Table Minor Version"),
4886 ], "LSL Information")
4887 MaximumSpaceStruct = struct("max_space_struct", [
4888 MaxSpace,
4889 ])
4890 MemoryCounters = struct("memory_counters", [
4891 uint32("orig_num_cache_buff", "Original Number Of Cache Buffers"),
4892 uint32("curr_num_cache_buff", "Current Number Of Cache Buffers"),
4893 uint32("cache_dirty_block_thresh", "Cache Dirty Block Threshold"),
4894 uint32("wait_node", "Wait Node Count"),
4895 uint32("wait_node_alloc_fail", "Wait Node Alloc Failure Count"),
4896 uint32("move_cache_node", "Move Cache Node Count"),
4897 uint32("move_cache_node_from_avai", "Move Cache Node From Avail Count"),
4898 uint32("accel_cache_node_write", "Accelerate Cache Node Write Count"),
4899 uint32("rem_cache_node", "Remove Cache Node Count"),
4900 uint32("rem_cache_node_from_avail", "Remove Cache Node From Avail Count"),
4901 ], "Memory Counters")
4902 MLIDBoardInfo = struct("mlid_board_info", [
4903 uint32("protocol_board_num", "Protocol Board Number"),
4904 uint16("protocol_number", "Protocol Number"),
4905 bytes("protocol_id", "Protocol ID", 6),
4906 nstring8("protocol_name", "Protocol Name"),
4907 ], "MLID Board Information")
4908 ModifyInfoStruct = struct("modify_info_struct", [
4909 ModifiedTime,
4910 ModifiedDate,
4911 endian(ModifierID, ENC_LITTLE_ENDIAN),
4912 LastAccessedDate,
4913 ], "Modification Information")
4914 nameInfo = struct("name_info_struct", [
4915 ObjectType,
4916 nstring8("login_name", "Login Name"),
4917 ], "Name Information")
4918 NCPNetworkAddress = struct("ncp_network_address_struct", [
4919 TransportType,
4920 Reserved3,
4921 NetAddress,
4922 ], "Network Address")
4923  
4924 netAddr = struct("net_addr_struct", [
4925 TransportType,
4926 nbytes32("transport_addr", "Transport Address"),
4927 ], "Network Address")
4928  
4929 NetWareInformationStruct = struct("netware_information_struct", [
4930 DataStreamSpaceAlloc, # (Data Stream Alloc Bit)
4931 AttributesDef32, # (Attributes Bit)
4932 FlagsDef,
4933 DataStreamSize, # (Data Stream Size Bit)
4934 TotalDataStreamDiskSpaceAlloc, # (Total Stream Size Bit)
4935 NumberOfDataStreams,
4936 CreationTime, # (Creation Bit)
4937 CreationDate,
4938 CreatorID,
4939 ModifiedTime, # (Modify Bit)
4940 ModifiedDate,
4941 ModifierID,
4942 LastAccessedDate,
4943 ArchivedTime, # (Archive Bit)
4944 ArchivedDate,
4945 ArchiverID,
4946 InheritedRightsMask, # (Rights Bit)
4947 DirectoryEntryNumber, # (Directory Entry Bit)
4948 DOSDirectoryEntryNumber,
4949 VolumeNumberLong,
4950 EADataSize, # (Extended Attribute Bit)
4951 EACount,
4952 EAKeySize,
4953 CreatorNameSpaceNumber, # (Name Space Bit)
4954 Reserved3,
4955 ], "NetWare Information")
4956 NLMInformation = struct("nlm_information", [
4957 IdentificationNumber,
4958 NLMFlags,
4959 Reserved3,
4960 NLMType,
4961 Reserved3,
4962 ParentID,
4963 MajorVersion,
4964 MinorVersion,
4965 Revision,
4966 Year,
4967 Reserved3,
4968 Month,
4969 Reserved3,
4970 Day,
4971 Reserved3,
4972 AllocAvailByte,
4973 AllocFreeCount,
4974 LastGarbCollect,
4975 MessageLanguage,
4976 NumberOfReferencedPublics,
4977 ], "NLM Information")
4978 NSInfoStruct = struct("ns_info_struct", [
4979 CreatorNameSpaceNumber,
4980 Reserved3,
4981 ])
4982 NWAuditStatus = struct("nw_audit_status", [
4983 AuditVersionDate,
4984 AuditFileVersionDate,
4985 val_string16("audit_enable_flag", "Auditing Enabled Flag", [
4986 [ 0x0000, "Auditing Disabled" ],
4987 [ 0x0001, "Auditing Enabled" ],
4988 ]),
4989 Reserved2,
4990 uint32("audit_file_size", "Audit File Size"),
4991 uint32("modified_counter", "Modified Counter"),
4992 uint32("audit_file_max_size", "Audit File Maximum Size"),
4993 uint32("audit_file_size_threshold", "Audit File Size Threshold"),
4994 uint32("audit_record_count", "Audit Record Count"),
4995 uint32("auditing_flags", "Auditing Flags"),
4996 ], "NetWare Audit Status")
4997 ObjectSecurityStruct = struct("object_security_struct", [
4998 ObjectSecurity,
4999 ])
5000 ObjectFlagsStruct = struct("object_flags_struct", [
5001 ObjectFlags,
5002 ])
5003 ObjectTypeStruct = struct("object_type_struct", [
5004 endian(ObjectType, ENC_BIG_ENDIAN),
5005 Reserved2,
5006 ])
5007 ObjectNameStruct = struct("object_name_struct", [
5008 ObjectNameStringz,
5009 ])
5010 ObjectIDStruct = struct("object_id_struct", [
5011 ObjectID,
5012 Restriction,
5013 ])
5014 ObjectIDStruct64 = struct("object_id_struct64", [
5015 endian(ObjectID, ENC_LITTLE_ENDIAN),
5016 endian(RestrictionQuad, ENC_LITTLE_ENDIAN),
5017 ])
5018 OpnFilesStruct = struct("opn_files_struct", [
5019 TaskNumberWord,
5020 LockType,
5021 AccessControl,
5022 LockFlag,
5023 VolumeNumber,
5024 DOSParentDirectoryEntry,
5025 DOSDirectoryEntry,
5026 ForkCount,
5027 NameSpace,
5028 FileName,
5029 ], "Open Files Information")
5030 OwnerIDStruct = struct("owner_id_struct", [
5031 CreatorID,
5032 ])
5033 PacketBurstInformation = struct("packet_burst_information", [
5034 uint32("big_invalid_slot", "Big Invalid Slot Count"),
5035 uint32("big_forged_packet", "Big Forged Packet Count"),
5036 uint32("big_invalid_packet", "Big Invalid Packet Count"),
5037 uint32("big_still_transmitting", "Big Still Transmitting Count"),
5038 uint32("still_doing_the_last_req", "Still Doing The Last Request Count"),
5039 uint32("invalid_control_req", "Invalid Control Request Count"),
5040 uint32("control_invalid_message_number", "Control Invalid Message Number Count"),
5041 uint32("control_being_torn_down", "Control Being Torn Down Count"),
5042 uint32("big_repeat_the_file_read", "Big Repeat the File Read Count"),
5043 uint32("big_send_extra_cc_count", "Big Send Extra CC Count"),
5044 uint32("big_return_abort_mess", "Big Return Abort Message Count"),
5045 uint32("big_read_invalid_mess", "Big Read Invalid Message Number Count"),
5046 uint32("big_read_do_it_over", "Big Read Do It Over Count"),
5047 uint32("big_read_being_torn_down", "Big Read Being Torn Down Count"),
5048 uint32("previous_control_packet", "Previous Control Packet Count"),
5049 uint32("send_hold_off_message", "Send Hold Off Message Count"),
5050 uint32("big_read_no_data_avail", "Big Read No Data Available Count"),
5051 uint32("big_read_trying_to_read", "Big Read Trying To Read Too Much Count"),
5052 uint32("async_read_error", "Async Read Error Count"),
5053 uint32("big_read_phy_read_err", "Big Read Physical Read Error Count"),
5054 uint32("ctl_bad_ack_frag_list", "Control Bad ACK Fragment List Count"),
5055 uint32("ctl_no_data_read", "Control No Data Read Count"),
5056 uint32("write_dup_req", "Write Duplicate Request Count"),
5057 uint32("shouldnt_be_ack_here", "Shouldn't Be ACKing Here Count"),
5058 uint32("write_incon_packet_len", "Write Inconsistent Packet Lengths Count"),
5059 uint32("first_packet_isnt_a_write", "First Packet Isn't A Write Count"),
5060 uint32("write_trash_dup_req", "Write Trashed Duplicate Request Count"),
5061 uint32("big_write_inv_message_num", "Big Write Invalid Message Number Count"),
5062 uint32("big_write_being_torn_down", "Big Write Being Torn Down Count"),
5063 uint32("big_write_being_abort", "Big Write Being Aborted Count"),
5064 uint32("zero_ack_frag", "Zero ACK Fragment Count"),
5065 uint32("write_curr_trans", "Write Currently Transmitting Count"),
5066 uint32("try_to_write_too_much", "Trying To Write Too Much Count"),
5067 uint32("write_out_of_mem_for_ctl_nodes", "Write Out Of Memory For Control Nodes Count"),
5068 uint32("write_didnt_need_this_frag", "Write Didn't Need This Fragment Count"),
5069 uint32("write_too_many_buf_check", "Write Too Many Buffers Checked Out Count"),
5070 uint32("write_timeout", "Write Time Out Count"),
5071 uint32("write_got_an_ack0", "Write Got An ACK Count 0"),
5072 uint32("write_got_an_ack1", "Write Got An ACK Count 1"),
5073 uint32("poll_abort_conn", "Poller Aborted The Connection Count"),
5074 uint32("may_had_out_of_order", "Maybe Had Out Of Order Writes Count"),
5075 uint32("had_an_out_of_order", "Had An Out Of Order Write Count"),
5076 uint32("moved_the_ack_bit_dn", "Moved The ACK Bit Down Count"),
5077 uint32("bumped_out_of_order", "Bumped Out Of Order Write Count"),
5078 uint32("poll_rem_old_out_of_order", "Poller Removed Old Out Of Order Count"),
5079 uint32("write_didnt_need_but_req_ack", "Write Didn't Need But Requested ACK Count"),
5080 uint32("write_trash_packet", "Write Trashed Packet Count"),
5081 uint32("too_many_ack_frag", "Too Many ACK Fragments Count"),
5082 uint32("saved_an_out_of_order_packet", "Saved An Out Of Order Packet Count"),
5083 uint32("conn_being_aborted", "Connection Being Aborted Count"),
5084 ], "Packet Burst Information")
5085  
5086 PadDSSpaceAllocate = struct("pad_ds_space_alloc", [
5087 Reserved4,
5088 ])
5089 PadAttributes = struct("pad_attributes", [
5090 Reserved6,
5091 ])
5092 PadDataStreamSize = struct("pad_data_stream_size", [
5093 Reserved4,
5094 ])
5095 PadTotalStreamSize = struct("pad_total_stream_size", [
5096 Reserved6,
5097 ])
5098 PadCreationInfo = struct("pad_creation_info", [
5099 Reserved8,
5100 ])
5101 PadModifyInfo = struct("pad_modify_info", [
5102 Reserved10,
5103 ])
5104 PadArchiveInfo = struct("pad_archive_info", [
5105 Reserved8,
5106 ])
5107 PadRightsInfo = struct("pad_rights_info", [
5108 Reserved2,
5109 ])
5110 PadDirEntry = struct("pad_dir_entry", [
5111 Reserved12,
5112 ])
5113 PadEAInfo = struct("pad_ea_info", [
5114 Reserved12,
5115 ])
5116 PadNSInfo = struct("pad_ns_info", [
5117 Reserved4,
5118 ])
5119 PhyLockStruct = struct("phy_lock_struct", [
5120 LoggedCount,
5121 ShareableLockCount,
5122 RecordStart,
5123 RecordEnd,
5124 LogicalConnectionNumber,
5125 TaskNumByte,
5126 LockType,
5127 ], "Physical Locks")
5128 printInfo = struct("print_info_struct", [
5129 PrintFlags,
5130 TabSize,
5131 Copies,
5132 PrintToFileFlag,
5133 BannerName,
5134 TargetPrinter,
5135 FormType,
5136 ], "Print Information")
5137 ReplyLevel1Struct = struct("reply_lvl_1_struct", [
5138 DirHandle,
5139 VolumeNumber,
5140 Reserved4,
5141 ], "Reply Level 1")
5142 ReplyLevel2Struct = struct("reply_lvl_2_struct", [
5143 VolumeNumberLong,
5144 DirectoryBase,
5145 DOSDirectoryBase,
5146 NameSpace,
5147 DirHandle,
5148 ], "Reply Level 2")
5149 RightsInfoStruct = struct("rights_info_struct", [
5150 InheritedRightsMask,
5151 ])
5152 RoutersInfo = struct("routers_info", [
5153 bytes("node", "Node", 6),
5154 ConnectedLAN,
5155 uint16("route_hops", "Hop Count"),
5156 uint16("route_time", "Route Time"),
5157 ], "Router Information")
5158 RTagStructure = struct("r_tag_struct", [
5159 RTagNumber,
5160 ResourceSignature,
5161 ResourceCount,
5162 ResourceName,
5163 ], "Resource Tag")
5164 ScanInfoFileName = struct("scan_info_file_name", [
5165 SalvageableFileEntryNumber,
5166 FileName,
5167 ])
5168 ScanInfoFileNoName = struct("scan_info_file_no_name", [
5169 SalvageableFileEntryNumber,
5170 ])
5171 SeachSequenceStruct = struct("search_seq", [
5172 VolumeNumber,
5173 DirectoryEntryNumber,
5174 SequenceNumber,
5175 ], "Search Sequence")
5176 Segments = struct("segments", [
5177 uint32("volume_segment_dev_num", "Volume Segment Device Number"),
5178 uint32("volume_segment_offset", "Volume Segment Offset"),
5179 uint32("volume_segment_size", "Volume Segment Size"),
5180 ], "Volume Segment Information")
5181 SemaInfoStruct = struct("sema_info_struct", [
5182 LogicalConnectionNumber,
5183 TaskNumByte,
5184 ])
5185 SemaStruct = struct("sema_struct", [
5186 OpenCount,
5187 SemaphoreValue,
5188 TaskNumberWord,
5189 SemaphoreName,
5190 ], "Semaphore Information")
5191 ServerInfo = struct("server_info", [
5192 uint32("reply_canceled", "Reply Canceled Count"),
5193 uint32("write_held_off", "Write Held Off Count"),
5194 uint32("write_held_off_with_dup", "Write Held Off With Duplicate Request"),
5195 uint32("invalid_req_type", "Invalid Request Type Count"),
5196 uint32("being_aborted", "Being Aborted Count"),
5197 uint32("already_doing_realloc", "Already Doing Re-Allocate Count"),
5198 uint32("dealloc_invalid_slot", "De-Allocate Invalid Slot Count"),
5199 uint32("dealloc_being_proc", "De-Allocate Being Processed Count"),
5200 uint32("dealloc_forged_packet", "De-Allocate Forged Packet Count"),
5201 uint32("dealloc_still_transmit", "De-Allocate Still Transmitting Count"),
5202 uint32("start_station_error", "Start Station Error Count"),
5203 uint32("invalid_slot", "Invalid Slot Count"),
5204 uint32("being_processed", "Being Processed Count"),
5205 uint32("forged_packet", "Forged Packet Count"),
5206 uint32("still_transmitting", "Still Transmitting Count"),
5207 uint32("reexecute_request", "Re-Execute Request Count"),
5208 uint32("invalid_sequence_number", "Invalid Sequence Number Count"),
5209 uint32("dup_is_being_sent", "Duplicate Is Being Sent Already Count"),
5210 uint32("sent_pos_ack", "Sent Positive Acknowledge Count"),
5211 uint32("sent_a_dup_reply", "Sent A Duplicate Reply Count"),
5212 uint32("no_mem_for_station", "No Memory For Station Control Count"),
5213 uint32("no_avail_conns", "No Available Connections Count"),
5214 uint32("realloc_slot", "Re-Allocate Slot Count"),
5215 uint32("realloc_slot_came_too_soon", "Re-Allocate Slot Came Too Soon Count"),
5216 ], "Server Information")
5217 ServersSrcInfo = struct("servers_src_info", [
5218 ServerNode,
5219 ConnectedLAN,
5220 HopsToNet,
5221 ], "Source Server Information")
5222 SpaceStruct = struct("space_struct", [
5223 Level,
5224 MaxSpace,
5225 CurrentSpace,
5226 ], "Space Information")
5227 SPXInformation = struct("spx_information", [
5228 uint16("spx_max_conn", "SPX Max Connections Count"),
5229 uint16("spx_max_used_conn", "SPX Max Used Connections"),
5230 uint16("spx_est_conn_req", "SPX Establish Connection Requests"),
5231 uint16("spx_est_conn_fail", "SPX Establish Connection Fail"),
5232 uint16("spx_listen_con_req", "SPX Listen Connect Request"),
5233 uint16("spx_listen_con_fail", "SPX Listen Connect Fail"),
5234 uint32("spx_send", "SPX Send Count"),
5235 uint32("spx_window_choke", "SPX Window Choke Count"),
5236 uint16("spx_bad_send", "SPX Bad Send Count"),
5237 uint16("spx_send_fail", "SPX Send Fail Count"),
5238 uint16("spx_abort_conn", "SPX Aborted Connection"),
5239 uint32("spx_listen_pkt", "SPX Listen Packet Count"),
5240 uint16("spx_bad_listen", "SPX Bad Listen Count"),
5241 uint32("spx_incoming_pkt", "SPX Incoming Packet Count"),
5242 uint16("spx_bad_in_pkt", "SPX Bad In Packet Count"),
5243 uint16("spx_supp_pkt", "SPX Suppressed Packet Count"),
5244 uint16("spx_no_ses_listen", "SPX No Session Listen ECB Count"),
5245 uint16("spx_watch_dog", "SPX Watch Dog Destination Session Count"),
5246 ], "SPX Information")
5247 StackInfo = struct("stack_info", [
5248 StackNumber,
5249 fw_string("stack_short_name", "Stack Short Name", 16),
5250 ], "Stack Information")
5251 statsInfo = struct("stats_info_struct", [
5252 TotalBytesRead,
5253 TotalBytesWritten,
5254 TotalRequest,
5255 ], "Statistics")
5256 TaskStruct = struct("task_struct", [
5257 TaskNumberWord,
5258 TaskState,
5259 ], "Task Information")
5260 theTimeStruct = struct("the_time_struct", [
5261 UTCTimeInSeconds,
5262 FractionalSeconds,
5263 TimesyncStatus,
5264 ])
5265 timeInfo = struct("time_info", [
5266 Year,
5267 Month,
5268 Day,
5269 Hour,
5270 Minute,
5271 Second,
5272 DayOfWeek,
5273 uint32("login_expiration_time", "Login Expiration Time"),
5274 ])
5275 TotalStreamSizeStruct = struct("total_stream_size_struct", [
5276 TtlDSDskSpaceAlloc,
5277 NumberOfDataStreams,
5278 ])
5279 TrendCounters = struct("trend_counters", [
5280 uint32("num_of_cache_checks", "Number Of Cache Checks"),
5281 uint32("num_of_cache_hits", "Number Of Cache Hits"),
5282 uint32("num_of_dirty_cache_checks", "Number Of Dirty Cache Checks"),
5283 uint32("num_of_cache_dirty_checks", "Number Of Cache Dirty Checks"),
5284 uint32("cache_used_while_check", "Cache Used While Checking"),
5285 uint32("wait_till_dirty_blcks_dec", "Wait Till Dirty Blocks Decrease Count"),
5286 uint32("alloc_blck_frm_avail", "Allocate Block From Available Count"),
5287 uint32("alloc_blck_frm_lru", "Allocate Block From LRU Count"),
5288 uint32("alloc_blck_already_wait", "Allocate Block Already Waiting"),
5289 uint32("lru_sit_time", "LRU Sitting Time"),
5290 uint32("num_of_cache_check_no_wait", "Number Of Cache Check No Wait"),
5291 uint32("num_of_cache_hits_no_wait", "Number Of Cache Hits No Wait"),
5292 ], "Trend Counters")
5293 TrusteeStruct = struct("trustee_struct", [
5294 endian(ObjectID, ENC_LITTLE_ENDIAN),
5295 AccessRightsMaskWord,
5296 ])
5297 UpdateDateStruct = struct("update_date_struct", [
5298 UpdateDate,
5299 ])
5300 UpdateIDStruct = struct("update_id_struct", [
5301 UpdateID,
5302 ])
5303 UpdateTimeStruct = struct("update_time_struct", [
5304 UpdateTime,
5305 ])
5306 UserInformation = struct("user_info", [
5307 endian(ConnectionNumber, ENC_LITTLE_ENDIAN),
5308 UseCount,
5309 Reserved2,
5310 ConnectionServiceType,
5311 Year,
5312 Month,
5313 Day,
5314 Hour,
5315 Minute,
5316 Second,
5317 DayOfWeek,
5318 Status,
5319 Reserved2,
5320 ExpirationTime,
5321 ObjectType,
5322 Reserved2,
5323 TransactionTrackingFlag,
5324 LogicalLockThreshold,
5325 FileWriteFlags,
5326 FileWriteState,
5327 Reserved,
5328 FileLockCount,
5329 RecordLockCount,
5330 TotalBytesRead,
5331 TotalBytesWritten,
5332 TotalRequest,
5333 HeldRequests,
5334 HeldBytesRead,
5335 HeldBytesWritten,
5336 ], "User Information")
5337 VolInfoStructure = struct("vol_info_struct", [
5338 VolumeType,
5339 Reserved2,
5340 StatusFlagBits,
5341 SectorSize,
5342 SectorsPerClusterLong,
5343 VolumeSizeInClusters,
5344 FreedClusters,
5345 SubAllocFreeableClusters,
5346 FreeableLimboSectors,
5347 NonFreeableLimboSectors,
5348 NonFreeableAvailableSubAllocSectors,
5349 NotUsableSubAllocSectors,
5350 SubAllocClusters,
5351 DataStreamsCount,
5352 LimboDataStreamsCount,
5353 OldestDeletedFileAgeInTicks,
5354 CompressedDataStreamsCount,
5355 CompressedLimboDataStreamsCount,
5356 UnCompressableDataStreamsCount,
5357 PreCompressedSectors,
5358 CompressedSectors,
5359 MigratedFiles,
5360 MigratedSectors,
5361 ClustersUsedByFAT,
5362 ClustersUsedByDirectories,
5363 ClustersUsedByExtendedDirectories,
5364 TotalDirectoryEntries,
5365 UnUsedDirectoryEntries,
5366 TotalExtendedDirectoryExtents,
5367 UnUsedExtendedDirectoryExtents,
5368 ExtendedAttributesDefined,
5369 ExtendedAttributeExtentsUsed,
5370 DirectoryServicesObjectID,
5371 VolumeEpochTime,
5372  
5373 ], "Volume Information")
5374 VolInfoStructure64 = struct("vol_info_struct64", [
5375 VolumeTypeLong,
5376 StatusFlagBits,
5377 uint64("sectoresize64", "Sector Size"),
5378 uint64("sectorspercluster64", "Sectors Per Cluster"),
5379 uint64("volumesizeinclusters64", "Volume Size in Clusters"),
5380 uint64("freedclusters64", "Freed Clusters"),
5381 uint64("suballocfreeableclusters64", "Sub Alloc Freeable Clusters"),
5382 uint64("freeablelimbosectors64", "Freeable Limbo Sectors"),
5383 uint64("nonfreeablelimbosectors64", "Non-Freeable Limbo Sectors"),
5384 uint64("nonfreeableavailalesuballocsectors64", "Non-Freeable Available Sub Alloc Sectors"),
5385 uint64("notusablesuballocsectors64", "Not Usable Sub Alloc Sectors"),
5386 uint64("suballocclusters64", "Sub Alloc Clusters"),
5387 uint64("datastreamscount64", "Data Streams Count"),
5388 uint64("limbodatastreamscount64", "Limbo Data Streams Count"),
5389 uint64("oldestdeletedfileageinticks64", "Oldest Deleted File Age in Ticks"),
5390 uint64("compressdatastreamscount64", "Compressed Data Streams Count"),
5391 uint64("compressedlimbodatastreamscount64", "Compressed Limbo Data Streams Count"),
5392 uint64("uncompressabledatastreamscount64", "Uncompressable Data Streams Count"),
5393 uint64("precompressedsectors64", "Precompressed Sectors"),
5394 uint64("compressedsectors64", "Compressed Sectors"),
5395 uint64("migratedfiles64", "Migrated Files"),
5396 uint64("migratedsectors64", "Migrated Sectors"),
5397 uint64("clustersusedbyfat64", "Clusters Used by FAT"),
5398 uint64("clustersusedbydirectories64", "Clusters Used by Directories"),
5399 uint64("clustersusedbyextendeddirectories64", "Clusters Used by Extended Directories"),
5400 uint64("totaldirectoryentries64", "Total Directory Entries"),
5401 uint64("unuseddirectoryentries64", "Unused Directory Entries"),
5402 uint64("totalextendeddirectoryextents64", "Total Extended Directory Extents"),
5403 uint64("unusedextendeddirectoryextents64", "Unused Total Extended Directory Extents"),
5404 uint64("extendedattributesdefined64", "Extended Attributes Defined"),
5405 uint64("extendedattributeextentsused64", "Extended Attribute Extents Used"),
5406 uint64("directoryservicesobjectid64", "Directory Services Object ID"),
5407 VolumeEpochTime,
5408  
5409 ], "Volume Information")
5410 VolInfo2Struct = struct("vol_info_struct_2", [
5411 uint32("volume_active_count", "Volume Active Count"),
5412 uint32("volume_use_count", "Volume Use Count"),
5413 uint32("mac_root_ids", "MAC Root IDs"),
5414 VolumeEpochTime,
5415 uint32("volume_reference_count", "Volume Reference Count"),
5416 uint32("compression_lower_limit", "Compression Lower Limit"),
5417 uint32("outstanding_ios", "Outstanding IOs"),
5418 uint32("outstanding_compression_ios", "Outstanding Compression IOs"),
5419 uint32("compression_ios_limit", "Compression IOs Limit"),
5420 ], "Extended Volume Information")
5421 VolumeWithNameStruct = struct("volume_with_name_struct", [
5422 VolumeNumberLong,
5423 VolumeNameLen,
5424 ])
5425 VolumeStruct = struct("volume_struct", [
5426 VolumeNumberLong,
5427 ])
5428  
5429 zFileMap_Allocation = struct("zfilemap_allocation_struct", [
5430 uint64("extent_byte_offset", "Byte Offset"),
5431 endian(uint64("extent_length_alloc", "Length"), ENC_LITTLE_ENDIAN),
5432 #ExtentLength,
5433 ], "File Map Allocation")
5434 zFileMap_Logical = struct("zfilemap_logical_struct", [
5435 uint64("extent_block_number", "Block Number"),
5436 uint64("extent_number_of_blocks", "Number of Blocks"),
5437 ], "File Map Logical")
5438 zFileMap_Physical = struct("zfilemap_physical_struct", [
5439 uint64("extent_length_physical", "Length"),
5440 uint64("extent_logical_offset", "Logical Offset"),
5441 uint64("extent_pool_offset", "Pool Offset"),
5442 uint64("extent_physical_offset", "Physical Offset"),
5443 fw_string("extent_device_id", "Device ID", 8),
5444 ], "File Map Physical")
5445  
5446 ##############################################################################
5447 # NCP Groups
5448 ##############################################################################
5449 def define_groups():
5450 groups['accounting'] = "Accounting"
5451 groups['afp'] = "AFP"
5452 groups['auditing'] = "Auditing"
5453 groups['bindery'] = "Bindery"
5454 groups['connection'] = "Connection"
5455 groups['enhanced'] = "Enhanced File System"
5456 groups['extended'] = "Extended Attribute"
5457 groups['extension'] = "NCP Extension"
5458 groups['file'] = "File System"
5459 groups['fileserver'] = "File Server Environment"
5460 groups['message'] = "Message"
5461 groups['migration'] = "Data Migration"
5462 groups['nds'] = "Novell Directory Services"
5463 groups['pburst'] = "Packet Burst"
5464 groups['print'] = "Print"
5465 groups['remote'] = "Remote"
5466 groups['sync'] = "Synchronization"
5467 groups['tsync'] = "Time Synchronization"
5468 groups['tts'] = "Transaction Tracking"
5469 groups['qms'] = "Queue Management System (QMS)"
5470 groups['stats'] = "Server Statistics"
5471 groups['nmas'] = "Novell Modular Authentication Service"
5472 groups['sss'] = "SecretStore Services"
5473  
5474 ##############################################################################
5475 # NCP Errors
5476 ##############################################################################
5477 def define_errors():
5478 errors[0x0000] = "Ok"
5479 errors[0x0001] = "Transaction tracking is available"
5480 errors[0x0002] = "Ok. The data has been written"
5481 errors[0x0003] = "Calling Station is a Manager"
5482  
5483 errors[0x0100] = "One or more of the Connection Numbers in the send list are invalid"
5484 errors[0x0101] = "Invalid space limit"
5485 errors[0x0102] = "Insufficient disk space"
5486 errors[0x0103] = "Queue server cannot add jobs"
5487 errors[0x0104] = "Out of disk space"
5488 errors[0x0105] = "Semaphore overflow"
5489 errors[0x0106] = "Invalid Parameter"
5490 errors[0x0107] = "Invalid Number of Minutes to Delay"
5491 errors[0x0108] = "Invalid Start or Network Number"
5492 errors[0x0109] = "Cannot Obtain License"
5493 errors[0x010a] = "No Purgeable Files Available"
5494  
5495 errors[0x0200] = "One or more clients in the send list are not logged in"
5496 errors[0x0201] = "Queue server cannot attach"
5497  
5498 errors[0x0300] = "One or more clients in the send list are not accepting messages"
5499  
5500 errors[0x0400] = "Client already has message"
5501 errors[0x0401] = "Queue server cannot service job"
5502  
5503 errors[0x7300] = "Revoke Handle Rights Not Found"
5504 errors[0x7700] = "Buffer Too Small"
5505 errors[0x7900] = "Invalid Parameter in Request Packet"
5506 errors[0x7901] = "Nothing being Compressed"
5507 errors[0x7902] = "No Items Found"
5508 errors[0x7a00] = "Connection Already Temporary"
5509 errors[0x7b00] = "Connection Already Logged in"
5510 errors[0x7c00] = "Connection Not Authenticated"
5511 errors[0x7d00] = "Connection Not Logged In"
5512  
5513 errors[0x7e00] = "NCP failed boundary check"
5514 errors[0x7e01] = "Invalid Length"
5515  
5516 errors[0x7f00] = "Lock Waiting"
5517 errors[0x8000] = "Lock fail"
5518 errors[0x8001] = "File in Use"
5519  
5520 errors[0x8100] = "A file handle could not be allocated by the file server"
5521 errors[0x8101] = "Out of File Handles"
5522  
5523 errors[0x8200] = "Unauthorized to open the file"
5524 errors[0x8300] = "Unable to read/write the volume. Possible bad sector on the file server"
5525 errors[0x8301] = "Hard I/O Error"
5526  
5527 errors[0x8400] = "Unauthorized to create the directory"
5528 errors[0x8401] = "Unauthorized to create the file"
5529  
5530 errors[0x8500] = "Unauthorized to delete the specified file"
5531 errors[0x8501] = "Unauthorized to overwrite an existing file in this directory"
5532  
5533 errors[0x8700] = "An unexpected character was encountered in the filename"
5534 errors[0x8701] = "Create Filename Error"
5535  
5536 errors[0x8800] = "Invalid file handle"
5537 errors[0x8900] = "Unauthorized to search this file/directory"
5538 errors[0x8a00] = "Unauthorized to delete this file/directory"
5539 errors[0x8b00] = "Unauthorized to rename a file in this directory"
5540  
5541 errors[0x8c00] = "No set privileges"
5542 errors[0x8c01] = "Unauthorized to modify a file in this directory"
5543 errors[0x8c02] = "Unauthorized to change the restriction on this volume"
5544  
5545 errors[0x8d00] = "Some of the affected files are in use by another client"
5546 errors[0x8d01] = "The affected file is in use"
5547  
5548 errors[0x8e00] = "All of the affected files are in use by another client"
5549 errors[0x8f00] = "Some of the affected files are read-only"
5550  
5551 errors[0x9000] = "An attempt to modify a read-only volume occurred"
5552 errors[0x9001] = "All of the affected files are read-only"
5553 errors[0x9002] = "Read Only Access to Volume"
5554  
5555 errors[0x9100] = "Some of the affected files already exist"
5556 errors[0x9101] = "Some Names Exist"
5557  
5558 errors[0x9200] = "Directory with the new name already exists"
5559 errors[0x9201] = "All of the affected files already exist"
5560  
5561 errors[0x9300] = "Unauthorized to read from this file"
5562 errors[0x9400] = "Unauthorized to write to this file"
5563 errors[0x9500] = "The affected file is detached"
5564  
5565 errors[0x9600] = "The file server has run out of memory to service this request"
5566 errors[0x9601] = "No alloc space for message"
5567 errors[0x9602] = "Server Out of Space"
5568  
5569 errors[0x9800] = "The affected volume is not mounted"
5570 errors[0x9801] = "The volume associated with Volume Number is not mounted"
5571 errors[0x9802] = "The resulting volume does not exist"
5572 errors[0x9803] = "The destination volume is not mounted"
5573 errors[0x9804] = "Disk Map Error"
5574  
5575 errors[0x9900] = "The file server has run out of directory space on the affected volume"
5576 errors[0x9a00] = "Invalid request to rename the affected file to another volume"
5577  
5578 errors[0x9b00] = "DirHandle is not associated with a valid directory path"
5579 errors[0x9b01] = "A resulting directory handle is not associated with a valid directory path"
5580 errors[0x9b02] = "The directory associated with DirHandle does not exist"
5581 errors[0x9b03] = "Bad directory handle"
5582  
5583 errors[0x9c00] = "The resulting path is not valid"
5584 errors[0x9c01] = "The resulting file path is not valid"
5585 errors[0x9c02] = "The resulting directory path is not valid"
5586 errors[0x9c03] = "Invalid path"
5587 errors[0x9c04] = "No more trustees found, based on requested search sequence number"
5588  
5589 errors[0x9d00] = "A directory handle was not available for allocation"
5590  
5591 errors[0x9e00] = "The name of the directory does not conform to a legal name for this name space"
5592 errors[0x9e01] = "The new directory name does not conform to a legal name for this name space"
5593 errors[0x9e02] = "Bad File Name"
5594  
5595 errors[0x9f00] = "The request attempted to delete a directory that is in use by another client"
5596  
5597 errors[0xa000] = "The request attempted to delete a directory that is not empty"
5598 errors[0xa100] = "An unrecoverable error occurred on the affected directory"
5599  
5600 errors[0xa200] = "The request attempted to read from a file region that is physically locked"
5601 errors[0xa201] = "I/O Lock Error"
5602  
5603 errors[0xa400] = "Invalid directory rename attempted"
5604 errors[0xa500] = "Invalid open create mode"
5605 errors[0xa600] = "Auditor Access has been Removed"
5606 errors[0xa700] = "Error Auditing Version"
5607  
5608 errors[0xa800] = "Invalid Support Module ID"
5609 errors[0xa801] = "No Auditing Access Rights"
5610 errors[0xa802] = "No Access Rights"
5611  
5612 errors[0xa900] = "Error Link in Path"
5613 errors[0xa901] = "Invalid Path With Junction Present"
5614  
5615 errors[0xaa00] = "Invalid Data Type Flag"
5616  
5617 errors[0xac00] = "Packet Signature Required"
5618  
5619 errors[0xbe00] = "Invalid Data Stream"
5620 errors[0xbf00] = "Requests for this name space are not valid on this volume"
5621  
5622 errors[0xc000] = "Unauthorized to retrieve accounting data"
5623  
5624 errors[0xc100] = "The ACCOUNT_BALANCE property does not exist"
5625 errors[0xc101] = "No Account Balance"
5626  
5627 errors[0xc200] = "The object has exceeded its credit limit"
5628 errors[0xc300] = "Too many holds have been placed against this account"
5629 errors[0xc400] = "The client account has been disabled"
5630  
5631 errors[0xc500] = "Access to the account has been denied because of intruder detection"
5632 errors[0xc501] = "Login lockout"
5633 errors[0xc502] = "Server Login Locked"
5634  
5635 errors[0xc600] = "The caller does not have operator privileges"
5636 errors[0xc601] = "The client does not have operator privileges"
5637  
5638 errors[0xc800] = "Missing EA Key"
5639 errors[0xc900] = "EA Not Found"
5640 errors[0xca00] = "Invalid EA Handle Type"
5641 errors[0xcb00] = "EA No Key No Data"
5642 errors[0xcc00] = "EA Number Mismatch"
5643 errors[0xcd00] = "Extent Number Out of Range"
5644 errors[0xce00] = "EA Bad Directory Number"
5645 errors[0xcf00] = "Invalid EA Handle"
5646  
5647 errors[0xd000] = "Queue error"
5648 errors[0xd001] = "EA Position Out of Range"
5649  
5650 errors[0xd100] = "The queue does not exist"
5651 errors[0xd101] = "EA Access Denied"
5652  
5653 errors[0xd200] = "A queue server is not associated with this queue"
5654 errors[0xd201] = "A queue server is not associated with the selected queue"
5655 errors[0xd202] = "No queue server"
5656 errors[0xd203] = "Data Page Odd Size"
5657  
5658 errors[0xd300] = "No queue rights"
5659 errors[0xd301] = "EA Volume Not Mounted"
5660  
5661 errors[0xd400] = "The queue is full and cannot accept another request"
5662 errors[0xd401] = "The queue associated with ObjectId is full and cannot accept another request"
5663 errors[0xd402] = "Bad Page Boundary"
5664  
5665 errors[0xd500] = "A job does not exist in this queue"
5666 errors[0xd501] = "No queue job"
5667 errors[0xd502] = "The job associated with JobNumber does not exist in this queue"
5668 errors[0xd503] = "Inspect Failure"
5669 errors[0xd504] = "Unknown NCP Extension Number"
5670  
5671 errors[0xd600] = "The file server does not allow unencrypted passwords"
5672 errors[0xd601] = "No job right"
5673 errors[0xd602] = "EA Already Claimed"
5674  
5675 errors[0xd700] = "Bad account"
5676 errors[0xd701] = "The old and new password strings are identical"
5677 errors[0xd702] = "The job is currently being serviced"
5678 errors[0xd703] = "The queue is currently servicing a job"
5679 errors[0xd704] = "Queue servicing"
5680 errors[0xd705] = "Odd Buffer Size"
5681  
5682 errors[0xd800] = "Queue not active"
5683 errors[0xd801] = "No Scorecards"
5684  
5685 errors[0xd900] = "The file server cannot accept another connection as it has reached its limit"
5686 errors[0xd901] = "The client is not security equivalent to one of the objects in the Q_SERVERS group property of the target queue"
5687 errors[0xd902] = "Queue Station is not a server"
5688 errors[0xd903] = "Bad EDS Signature"
5689 errors[0xd904] = "Attempt to log in using an account which has limits on the number of concurrent connections and that number has been reached."
5690  
5691 errors[0xda00] = "Attempted to login to the file server during a restricted time period"
5692 errors[0xda01] = "Queue halted"
5693 errors[0xda02] = "EA Space Limit"
5694  
5695 errors[0xdb00] = "Attempted to login to the file server from an unauthorized workstation or network"
5696 errors[0xdb01] = "The queue cannot attach another queue server"
5697 errors[0xdb02] = "Maximum queue servers"
5698 errors[0xdb03] = "EA Key Corrupt"
5699  
5700 errors[0xdc00] = "Account Expired"
5701 errors[0xdc01] = "EA Key Limit"
5702  
5703 errors[0xdd00] = "Tally Corrupt"
5704 errors[0xde00] = "Attempted to login to the file server with an incorrect password"
5705 errors[0xdf00] = "Attempted to login to the file server with a password that has expired"
5706  
5707 errors[0xe000] = "No Login Connections Available"
5708 errors[0xe700] = "No disk track"
5709 errors[0xe800] = "Write to group"
5710 errors[0xe900] = "The object is already a member of the group property"
5711  
5712 errors[0xea00] = "No such member"
5713 errors[0xea01] = "The bindery object is not a member of the set"
5714 errors[0xea02] = "Non-existent member"
5715  
5716 errors[0xeb00] = "The property is not a set property"
5717  
5718 errors[0xec00] = "No such set"
5719 errors[0xec01] = "The set property does not exist"
5720  
5721 errors[0xed00] = "Property exists"
5722 errors[0xed01] = "The property already exists"
5723 errors[0xed02] = "An attempt was made to create a bindery object property that already exists"
5724  
5725 errors[0xee00] = "The object already exists"
5726 errors[0xee01] = "The bindery object already exists"
5727  
5728 errors[0xef00] = "Illegal name"
5729 errors[0xef01] = "Illegal characters in ObjectName field"
5730 errors[0xef02] = "Invalid name"
5731  
5732 errors[0xf000] = "A wildcard was detected in a field that does not support wildcards"
5733 errors[0xf001] = "An illegal wildcard was detected in ObjectName"
5734  
5735 errors[0xf100] = "The client does not have the rights to access this bindery object"
5736 errors[0xf101] = "Bindery security"
5737 errors[0xf102] = "Invalid bindery security"
5738  
5739 errors[0xf200] = "Unauthorized to read from this object"
5740 errors[0xf300] = "Unauthorized to rename this object"
5741  
5742 errors[0xf400] = "Unauthorized to delete this object"
5743 errors[0xf401] = "No object delete privileges"
5744 errors[0xf402] = "Unauthorized to delete this queue"
5745  
5746 errors[0xf500] = "Unauthorized to create this object"
5747 errors[0xf501] = "No object create"
5748  
5749 errors[0xf600] = "No property delete"
5750 errors[0xf601] = "Unauthorized to delete the property of this object"
5751 errors[0xf602] = "Unauthorized to delete this property"
5752  
5753 errors[0xf700] = "Unauthorized to create this property"
5754 errors[0xf701] = "No property create privilege"
5755  
5756 errors[0xf800] = "Unauthorized to write to this property"
5757 errors[0xf900] = "Unauthorized to read this property"
5758 errors[0xfa00] = "Temporary remap error"
5759  
5760 errors[0xfb00] = "No such property"
5761 errors[0xfb01] = "The file server does not support this request"
5762 errors[0xfb02] = "The specified property does not exist"
5763 errors[0xfb03] = "The PASSWORD property does not exist for this bindery object"
5764 errors[0xfb04] = "NDS NCP not available"
5765 errors[0xfb05] = "Bad Directory Handle"
5766 errors[0xfb06] = "Unknown Request"
5767 errors[0xfb07] = "Invalid Subfunction Request"
5768 errors[0xfb08] = "Attempt to use an invalid parameter (drive number, path, or flag value) during a set drive path call"
5769 errors[0xfb09] = "NMAS not running on this server, NCP NOT Supported"
5770 errors[0xfb0a] = "Station Not Logged In"
5771 errors[0xfb0b] = "Secret Store not running on this server, NCP Not supported"
5772  
5773 errors[0xfc00] = "The message queue cannot accept another message"
5774 errors[0xfc01] = "The trustee associated with ObjectId does not exist"
5775 errors[0xfc02] = "The specified bindery object does not exist"
5776 errors[0xfc03] = "The bindery object associated with ObjectID does not exist"
5777 errors[0xfc04] = "A bindery object does not exist that matches"
5778 errors[0xfc05] = "The specified queue does not exist"
5779 errors[0xfc06] = "No such object"
5780 errors[0xfc07] = "The queue associated with ObjectID does not exist"
5781  
5782 errors[0xfd00] = "Bad station number"
5783 errors[0xfd01] = "The connection associated with ConnectionNumber is not active"
5784 errors[0xfd02] = "Lock collision"
5785 errors[0xfd03] = "Transaction tracking is disabled"
5786  
5787 errors[0xfe00] = "I/O failure"
5788 errors[0xfe01] = "The files containing the bindery on the file server are locked"
5789 errors[0xfe02] = "A file with the specified name already exists in this directory"
5790 errors[0xfe03] = "No more restrictions were found"
5791 errors[0xfe04] = "The file server was unable to lock the file within the specified time limit"
5792 errors[0xfe05] = "The file server was unable to lock all files within the specified time limit"
5793 errors[0xfe06] = "The bindery object associated with ObjectID is not a valid trustee"
5794 errors[0xfe07] = "Directory locked"
5795 errors[0xfe08] = "Bindery locked"
5796 errors[0xfe09] = "Invalid semaphore name length"
5797 errors[0xfe0a] = "The file server was unable to complete the operation within the specified time limit"
5798 errors[0xfe0b] = "Transaction restart"
5799 errors[0xfe0c] = "Bad packet"
5800 errors[0xfe0d] = "Timeout"
5801 errors[0xfe0e] = "User Not Found"
5802 errors[0xfe0f] = "Trustee Not Found"
5803  
5804 errors[0xff00] = "Failure"
5805 errors[0xff01] = "Lock error"
5806 errors[0xff02] = "File not found"
5807 errors[0xff03] = "The file not found or cannot be unlocked"
5808 errors[0xff04] = "Record not found"
5809 errors[0xff05] = "The logical record was not found"
5810 errors[0xff06] = "The printer associated with Printer Number does not exist"
5811 errors[0xff07] = "No such printer"
5812 errors[0xff08] = "Unable to complete the request"
5813 errors[0xff09] = "Unauthorized to change privileges of this trustee"
5814 errors[0xff0a] = "No files matching the search criteria were found"
5815 errors[0xff0b] = "A file matching the search criteria was not found"
5816 errors[0xff0c] = "Verification failed"
5817 errors[0xff0d] = "Object associated with ObjectID is not a manager"
5818 errors[0xff0e] = "Invalid initial semaphore value"
5819 errors[0xff0f] = "The semaphore handle is not valid"
5820 errors[0xff10] = "SemaphoreHandle is not associated with a valid sempahore"
5821 errors[0xff11] = "Invalid semaphore handle"
5822 errors[0xff12] = "Transaction tracking is not available"
5823 errors[0xff13] = "The transaction has not yet been written to disk"
5824 errors[0xff14] = "Directory already exists"
5825 errors[0xff15] = "The file already exists and the deletion flag was not set"
5826 errors[0xff16] = "No matching files or directories were found"
5827 errors[0xff17] = "A file or directory matching the search criteria was not found"
5828 errors[0xff18] = "The file already exists"
5829 errors[0xff19] = "Failure, No files found"
5830 errors[0xff1a] = "Unlock Error"
5831 errors[0xff1b] = "I/O Bound Error"
5832 errors[0xff1c] = "Not Accepting Messages"
5833 errors[0xff1d] = "No More Salvageable Files in Directory"
5834 errors[0xff1e] = "Calling Station is Not a Manager"
5835 errors[0xff1f] = "Bindery Failure"
5836 errors[0xff20] = "NCP Extension Not Found"
5837 errors[0xff21] = "Audit Property Not Found"
5838 errors[0xff22] = "Server Set Parameter Not Found"
5839  
5840 ##############################################################################
5841 # Produce C code
5842 ##############################################################################
5843 def ExamineVars(vars, structs_hash, vars_hash):
5844 for var in vars:
5845 if isinstance(var, struct):
5846 structs_hash[var.HFName()] = var
5847 struct_vars = var.Variables()
5848 ExamineVars(struct_vars, structs_hash, vars_hash)
5849 else:
5850 vars_hash[repr(var)] = var
5851 if isinstance(var, bitfield):
5852 sub_vars = var.SubVariables()
5853 ExamineVars(sub_vars, structs_hash, vars_hash)
5854  
5855 def produce_code():
5856  
5857 global errors
5858  
5859 print("/*")
5860 print(" * Do not modify this file. Changes will be overwritten.")
5861 print(" * Generated automatically from %s" % (sys.argv[0]))
5862 print(" */\n")
5863  
5864 print("""
5865 /*
5866 * Portions Copyright (c) Gilbert Ramirez 2000-2002
5867 * Portions Copyright (c) Novell, Inc. 2000-2005
5868 *
5869 * This program is free software; you can redistribute it and/or
5870 * modify it under the terms of the GNU General Public License
5871 * as published by the Free Software Foundation; either version 2
5872 * of the License, or (at your option) any later version.
5873 *
5874 * This program is distributed in the hope that it will be useful,
5875 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5876 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5877 * GNU General Public License for more details.
5878 *
5879 * You should have received a copy of the GNU General Public License
5880 * along with this program; if not, write to the Free Software
5881 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
5882 */
5883  
5884 #include "config.h"
5885  
5886 #include <string.h>
5887 #include <glib.h>
5888 #include <epan/packet.h>
5889 #include <epan/dfilter/dfilter.h>
5890 #include <epan/exceptions.h>
5891 #include <ftypes/ftypes-int.h>
5892 #include <epan/to_str.h>
5893 #include <epan/conversation.h>
5894 #include <epan/ptvcursor.h>
5895 #include <epan/strutil.h>
5896 #include <epan/reassemble.h>
5897 #include <epan/tap.h>
5898 #include <epan/proto_data.h>
5899 #include "packet-ncp-int.h"
5900 #include "packet-ncp-nmas.h"
5901 #include "packet-ncp-sss.h"
5902  
5903 /* Function declarations for functions used in proto_register_ncp2222() */
5904 void proto_register_ncp2222(void);
5905 static void ncp_init_protocol(void);
5906 static void ncp_postseq_cleanup(void);
5907  
5908 /* Endianness macros */
5909 #define NO_ENDIANNESS 0
5910  
5911 #define NO_LENGTH -1
5912  
5913 /* We use this int-pointer as a special flag in ptvc_record's */
5914 static int ptvc_struct_int_storage;
5915 #define PTVC_STRUCT (&ptvc_struct_int_storage)
5916  
5917 /* Values used in the count-variable ("var"/"repeat") logic. */""")
5918  
5919  
5920 if global_highest_var > -1:
5921 print("#define NUM_REPEAT_VARS %d" % (global_highest_var + 1))
5922 print("static guint repeat_vars[NUM_REPEAT_VARS];")
5923 else:
5924 print("#define NUM_REPEAT_VARS 0")
5925 print("static guint *repeat_vars = NULL;")
5926  
5927 print("""
5928 #define NO_VAR NUM_REPEAT_VARS
5929 #define NO_REPEAT NUM_REPEAT_VARS
5930  
5931 #define REQ_COND_SIZE_CONSTANT 0
5932 #define REQ_COND_SIZE_VARIABLE 1
5933 #define NO_REQ_COND_SIZE 0
5934  
5935  
5936 #define NTREE 0x00020000
5937 #define NDEPTH 0x00000002
5938 #define NREV 0x00000004
5939 #define NFLAGS 0x00000008
5940  
5941 static int hf_ncp_number_of_data_streams_long = -1;
5942 static int hf_ncp_func = -1;
5943 static int hf_ncp_length = -1;
5944 static int hf_ncp_subfunc = -1;
5945 static int hf_ncp_group = -1;
5946 static int hf_ncp_fragment_handle = -1;
5947 static int hf_ncp_completion_code = -1;
5948 static int hf_ncp_connection_status = -1;
5949 static int hf_ncp_req_frame_num = -1;
5950 static int hf_ncp_req_frame_time = -1;
5951 static int hf_ncp_fragment_size = -1;
5952 static int hf_ncp_message_size = -1;
5953 static int hf_ncp_nds_flag = -1;
5954 static int hf_ncp_nds_verb = -1;
5955 static int hf_ping_version = -1;
5956 /* static int hf_nds_version = -1; */
5957 /* static int hf_nds_flags = -1; */
5958 static int hf_nds_reply_depth = -1;
5959 static int hf_nds_reply_rev = -1;
5960 static int hf_nds_reply_flags = -1;
5961 static int hf_nds_p1type = -1;
5962 static int hf_nds_uint32value = -1;
5963 static int hf_nds_bit1 = -1;
5964 static int hf_nds_bit2 = -1;
5965 static int hf_nds_bit3 = -1;
5966 static int hf_nds_bit4 = -1;
5967 static int hf_nds_bit5 = -1;
5968 static int hf_nds_bit6 = -1;
5969 static int hf_nds_bit7 = -1;
5970 static int hf_nds_bit8 = -1;
5971 static int hf_nds_bit9 = -1;
5972 static int hf_nds_bit10 = -1;
5973 static int hf_nds_bit11 = -1;
5974 static int hf_nds_bit12 = -1;
5975 static int hf_nds_bit13 = -1;
5976 static int hf_nds_bit14 = -1;
5977 static int hf_nds_bit15 = -1;
5978 static int hf_nds_bit16 = -1;
5979 static int hf_outflags = -1;
5980 static int hf_bit1outflags = -1;
5981 static int hf_bit2outflags = -1;
5982 static int hf_bit3outflags = -1;
5983 static int hf_bit4outflags = -1;
5984 static int hf_bit5outflags = -1;
5985 static int hf_bit6outflags = -1;
5986 static int hf_bit7outflags = -1;
5987 static int hf_bit8outflags = -1;
5988 static int hf_bit9outflags = -1;
5989 static int hf_bit10outflags = -1;
5990 static int hf_bit11outflags = -1;
5991 static int hf_bit12outflags = -1;
5992 static int hf_bit13outflags = -1;
5993 static int hf_bit14outflags = -1;
5994 static int hf_bit15outflags = -1;
5995 static int hf_bit16outflags = -1;
5996 static int hf_bit1nflags = -1;
5997 static int hf_bit2nflags = -1;
5998 static int hf_bit3nflags = -1;
5999 static int hf_bit4nflags = -1;
6000 static int hf_bit5nflags = -1;
6001 static int hf_bit6nflags = -1;
6002 static int hf_bit7nflags = -1;
6003 static int hf_bit8nflags = -1;
6004 static int hf_bit9nflags = -1;
6005 static int hf_bit10nflags = -1;
6006 static int hf_bit11nflags = -1;
6007 static int hf_bit12nflags = -1;
6008 static int hf_bit13nflags = -1;
6009 static int hf_bit14nflags = -1;
6010 static int hf_bit15nflags = -1;
6011 static int hf_bit16nflags = -1;
6012 static int hf_bit1rflags = -1;
6013 static int hf_bit2rflags = -1;
6014 static int hf_bit3rflags = -1;
6015 static int hf_bit4rflags = -1;
6016 static int hf_bit5rflags = -1;
6017 static int hf_bit6rflags = -1;
6018 static int hf_bit7rflags = -1;
6019 static int hf_bit8rflags = -1;
6020 static int hf_bit9rflags = -1;
6021 static int hf_bit10rflags = -1;
6022 static int hf_bit11rflags = -1;
6023 static int hf_bit12rflags = -1;
6024 static int hf_bit13rflags = -1;
6025 static int hf_bit14rflags = -1;
6026 static int hf_bit15rflags = -1;
6027 static int hf_bit16rflags = -1;
6028 static int hf_cflags = -1;
6029 static int hf_bit1cflags = -1;
6030 static int hf_bit2cflags = -1;
6031 static int hf_bit3cflags = -1;
6032 static int hf_bit4cflags = -1;
6033 static int hf_bit5cflags = -1;
6034 static int hf_bit6cflags = -1;
6035 static int hf_bit7cflags = -1;
6036 static int hf_bit8cflags = -1;
6037 static int hf_bit9cflags = -1;
6038 static int hf_bit10cflags = -1;
6039 static int hf_bit11cflags = -1;
6040 static int hf_bit12cflags = -1;
6041 static int hf_bit13cflags = -1;
6042 static int hf_bit14cflags = -1;
6043 static int hf_bit15cflags = -1;
6044 static int hf_bit16cflags = -1;
6045 static int hf_bit1acflags = -1;
6046 static int hf_bit2acflags = -1;
6047 static int hf_bit3acflags = -1;
6048 static int hf_bit4acflags = -1;
6049 static int hf_bit5acflags = -1;
6050 static int hf_bit6acflags = -1;
6051 static int hf_bit7acflags = -1;
6052 static int hf_bit8acflags = -1;
6053 static int hf_bit9acflags = -1;
6054 static int hf_bit10acflags = -1;
6055 static int hf_bit11acflags = -1;
6056 static int hf_bit12acflags = -1;
6057 static int hf_bit13acflags = -1;
6058 static int hf_bit14acflags = -1;
6059 static int hf_bit15acflags = -1;
6060 static int hf_bit16acflags = -1;
6061 static int hf_vflags = -1;
6062 static int hf_bit1vflags = -1;
6063 static int hf_bit2vflags = -1;
6064 static int hf_bit3vflags = -1;
6065 static int hf_bit4vflags = -1;
6066 static int hf_bit5vflags = -1;
6067 static int hf_bit6vflags = -1;
6068 static int hf_bit7vflags = -1;
6069 static int hf_bit8vflags = -1;
6070 static int hf_bit9vflags = -1;
6071 static int hf_bit10vflags = -1;
6072 static int hf_bit11vflags = -1;
6073 static int hf_bit12vflags = -1;
6074 static int hf_bit13vflags = -1;
6075 static int hf_bit14vflags = -1;
6076 static int hf_bit15vflags = -1;
6077 static int hf_bit16vflags = -1;
6078 static int hf_eflags = -1;
6079 static int hf_bit1eflags = -1;
6080 static int hf_bit2eflags = -1;
6081 static int hf_bit3eflags = -1;
6082 static int hf_bit4eflags = -1;
6083 static int hf_bit5eflags = -1;
6084 static int hf_bit6eflags = -1;
6085 static int hf_bit7eflags = -1;
6086 static int hf_bit8eflags = -1;
6087 static int hf_bit9eflags = -1;
6088 static int hf_bit10eflags = -1;
6089 static int hf_bit11eflags = -1;
6090 static int hf_bit12eflags = -1;
6091 static int hf_bit13eflags = -1;
6092 static int hf_bit14eflags = -1;
6093 static int hf_bit15eflags = -1;
6094 static int hf_bit16eflags = -1;
6095 static int hf_infoflagsl = -1;
6096 static int hf_retinfoflagsl = -1;
6097 static int hf_bit1infoflagsl = -1;
6098 static int hf_bit2infoflagsl = -1;
6099 static int hf_bit3infoflagsl = -1;
6100 static int hf_bit4infoflagsl = -1;
6101 static int hf_bit5infoflagsl = -1;
6102 static int hf_bit6infoflagsl = -1;
6103 static int hf_bit7infoflagsl = -1;
6104 static int hf_bit8infoflagsl = -1;
6105 static int hf_bit9infoflagsl = -1;
6106 static int hf_bit10infoflagsl = -1;
6107 static int hf_bit11infoflagsl = -1;
6108 static int hf_bit12infoflagsl = -1;
6109 static int hf_bit13infoflagsl = -1;
6110 static int hf_bit14infoflagsl = -1;
6111 static int hf_bit15infoflagsl = -1;
6112 static int hf_bit16infoflagsl = -1;
6113 static int hf_infoflagsh = -1;
6114 static int hf_bit1infoflagsh = -1;
6115 static int hf_bit2infoflagsh = -1;
6116 static int hf_bit3infoflagsh = -1;
6117 static int hf_bit4infoflagsh = -1;
6118 static int hf_bit5infoflagsh = -1;
6119 static int hf_bit6infoflagsh = -1;
6120 static int hf_bit7infoflagsh = -1;
6121 static int hf_bit8infoflagsh = -1;
6122 static int hf_bit9infoflagsh = -1;
6123 static int hf_bit10infoflagsh = -1;
6124 static int hf_bit11infoflagsh = -1;
6125 static int hf_bit12infoflagsh = -1;
6126 static int hf_bit13infoflagsh = -1;
6127 static int hf_bit14infoflagsh = -1;
6128 static int hf_bit15infoflagsh = -1;
6129 static int hf_bit16infoflagsh = -1;
6130 static int hf_retinfoflagsh = -1;
6131 static int hf_bit1retinfoflagsh = -1;
6132 static int hf_bit2retinfoflagsh = -1;
6133 static int hf_bit3retinfoflagsh = -1;
6134 static int hf_bit4retinfoflagsh = -1;
6135 static int hf_bit5retinfoflagsh = -1;
6136 static int hf_bit6retinfoflagsh = -1;
6137 static int hf_bit7retinfoflagsh = -1;
6138 static int hf_bit8retinfoflagsh = -1;
6139 static int hf_bit9retinfoflagsh = -1;
6140 static int hf_bit10retinfoflagsh = -1;
6141 static int hf_bit11retinfoflagsh = -1;
6142 static int hf_bit12retinfoflagsh = -1;
6143 static int hf_bit13retinfoflagsh = -1;
6144 static int hf_bit14retinfoflagsh = -1;
6145 static int hf_bit15retinfoflagsh = -1;
6146 static int hf_bit16retinfoflagsh = -1;
6147 static int hf_bit1lflags = -1;
6148 static int hf_bit2lflags = -1;
6149 static int hf_bit3lflags = -1;
6150 static int hf_bit4lflags = -1;
6151 static int hf_bit5lflags = -1;
6152 static int hf_bit6lflags = -1;
6153 static int hf_bit7lflags = -1;
6154 static int hf_bit8lflags = -1;
6155 static int hf_bit9lflags = -1;
6156 static int hf_bit10lflags = -1;
6157 static int hf_bit11lflags = -1;
6158 static int hf_bit12lflags = -1;
6159 static int hf_bit13lflags = -1;
6160 static int hf_bit14lflags = -1;
6161 static int hf_bit15lflags = -1;
6162 static int hf_bit16lflags = -1;
6163 static int hf_l1flagsl = -1;
6164 static int hf_l1flagsh = -1;
6165 static int hf_bit1l1flagsl = -1;
6166 static int hf_bit2l1flagsl = -1;
6167 static int hf_bit3l1flagsl = -1;
6168 static int hf_bit4l1flagsl = -1;
6169 static int hf_bit5l1flagsl = -1;
6170 static int hf_bit6l1flagsl = -1;
6171 static int hf_bit7l1flagsl = -1;
6172 static int hf_bit8l1flagsl = -1;
6173 static int hf_bit9l1flagsl = -1;
6174 static int hf_bit10l1flagsl = -1;
6175 static int hf_bit11l1flagsl = -1;
6176 static int hf_bit12l1flagsl = -1;
6177 static int hf_bit13l1flagsl = -1;
6178 static int hf_bit14l1flagsl = -1;
6179 static int hf_bit15l1flagsl = -1;
6180 static int hf_bit16l1flagsl = -1;
6181 static int hf_bit1l1flagsh = -1;
6182 static int hf_bit2l1flagsh = -1;
6183 static int hf_bit3l1flagsh = -1;
6184 static int hf_bit4l1flagsh = -1;
6185 static int hf_bit5l1flagsh = -1;
6186 static int hf_bit6l1flagsh = -1;
6187 static int hf_bit7l1flagsh = -1;
6188 static int hf_bit8l1flagsh = -1;
6189 static int hf_bit9l1flagsh = -1;
6190 static int hf_bit10l1flagsh = -1;
6191 static int hf_bit11l1flagsh = -1;
6192 static int hf_bit12l1flagsh = -1;
6193 static int hf_bit13l1flagsh = -1;
6194 static int hf_bit14l1flagsh = -1;
6195 static int hf_bit15l1flagsh = -1;
6196 static int hf_bit16l1flagsh = -1;
6197 static int hf_nds_tree_name = -1;
6198 static int hf_nds_reply_error = -1;
6199 static int hf_nds_net = -1;
6200 static int hf_nds_node = -1;
6201 static int hf_nds_socket = -1;
6202 static int hf_add_ref_ip = -1;
6203 static int hf_add_ref_udp = -1;
6204 static int hf_add_ref_tcp = -1;
6205 static int hf_referral_record = -1;
6206 static int hf_referral_addcount = -1;
6207 static int hf_nds_port = -1;
6208 static int hf_mv_string = -1;
6209 static int hf_nds_syntax = -1;
6210 static int hf_value_string = -1;
6211 static int hf_nds_buffer_size = -1;
6212 static int hf_nds_ver = -1;
6213 static int hf_nds_nflags = -1;
6214 static int hf_nds_scope = -1;
6215 static int hf_nds_name = -1;
6216 static int hf_nds_comm_trans = -1;
6217 static int hf_nds_tree_trans = -1;
6218 static int hf_nds_iteration = -1;
6219 static int hf_nds_eid = -1;
6220 static int hf_nds_info_type = -1;
6221 static int hf_nds_all_attr = -1;
6222 static int hf_nds_req_flags = -1;
6223 static int hf_nds_attr = -1;
6224 static int hf_nds_crc = -1;
6225 static int hf_nds_referrals = -1;
6226 static int hf_nds_result_flags = -1;
6227 static int hf_nds_tag_string = -1;
6228 static int hf_value_bytes = -1;
6229 static int hf_replica_type = -1;
6230 static int hf_replica_state = -1;
6231 static int hf_replica_number = -1;
6232 static int hf_min_nds_ver = -1;
6233 static int hf_nds_ver_include = -1;
6234 static int hf_nds_ver_exclude = -1;
6235 /* static int hf_nds_es = -1; */
6236 static int hf_es_type = -1;
6237 /* static int hf_delim_string = -1; */
6238 static int hf_rdn_string = -1;
6239 static int hf_nds_revent = -1;
6240 static int hf_nds_rnum = -1;
6241 static int hf_nds_name_type = -1;
6242 static int hf_nds_rflags = -1;
6243 static int hf_nds_eflags = -1;
6244 static int hf_nds_depth = -1;
6245 static int hf_nds_class_def_type = -1;
6246 static int hf_nds_classes = -1;
6247 static int hf_nds_return_all_classes = -1;
6248 static int hf_nds_stream_flags = -1;
6249 static int hf_nds_stream_name = -1;
6250 static int hf_nds_file_handle = -1;
6251 static int hf_nds_file_size = -1;
6252 static int hf_nds_dn_output_type = -1;
6253 static int hf_nds_nested_output_type = -1;
6254 static int hf_nds_output_delimiter = -1;
6255 static int hf_nds_output_entry_specifier = -1;
6256 static int hf_es_value = -1;
6257 static int hf_es_rdn_count = -1;
6258 static int hf_nds_replica_num = -1;
6259 static int hf_nds_event_num = -1;
6260 static int hf_es_seconds = -1;
6261 static int hf_nds_compare_results = -1;
6262 static int hf_nds_parent = -1;
6263 static int hf_nds_name_filter = -1;
6264 static int hf_nds_class_filter = -1;
6265 static int hf_nds_time_filter = -1;
6266 static int hf_nds_partition_root_id = -1;
6267 static int hf_nds_replicas = -1;
6268 static int hf_nds_purge = -1;
6269 static int hf_nds_local_partition = -1;
6270 static int hf_partition_busy = -1;
6271 static int hf_nds_number_of_changes = -1;
6272 static int hf_sub_count = -1;
6273 static int hf_nds_revision = -1;
6274 static int hf_nds_base_class = -1;
6275 static int hf_nds_relative_dn = -1;
6276 /* static int hf_nds_root_dn = -1; */
6277 /* static int hf_nds_parent_dn = -1; */
6278 static int hf_deref_base = -1;
6279 /* static int hf_nds_entry_info = -1; */
6280 static int hf_nds_base = -1;
6281 static int hf_nds_privileges = -1;
6282 static int hf_nds_vflags = -1;
6283 static int hf_nds_value_len = -1;
6284 static int hf_nds_cflags = -1;
6285 static int hf_nds_acflags = -1;
6286 static int hf_nds_asn1 = -1;
6287 static int hf_nds_upper = -1;
6288 static int hf_nds_lower = -1;
6289 static int hf_nds_trustee_dn = -1;
6290 static int hf_nds_attribute_dn = -1;
6291 static int hf_nds_acl_add = -1;
6292 static int hf_nds_acl_del = -1;
6293 static int hf_nds_att_add = -1;
6294 static int hf_nds_att_del = -1;
6295 static int hf_nds_keep = -1;
6296 static int hf_nds_new_rdn = -1;
6297 static int hf_nds_time_delay = -1;
6298 static int hf_nds_root_name = -1;
6299 static int hf_nds_new_part_id = -1;
6300 static int hf_nds_child_part_id = -1;
6301 static int hf_nds_master_part_id = -1;
6302 static int hf_nds_target_name = -1;
6303 static int hf_nds_super = -1;
6304 static int hf_pingflags2 = -1;
6305 static int hf_bit1pingflags2 = -1;
6306 static int hf_bit2pingflags2 = -1;
6307 static int hf_bit3pingflags2 = -1;
6308 static int hf_bit4pingflags2 = -1;
6309 static int hf_bit5pingflags2 = -1;
6310 static int hf_bit6pingflags2 = -1;
6311 static int hf_bit7pingflags2 = -1;
6312 static int hf_bit8pingflags2 = -1;
6313 static int hf_bit9pingflags2 = -1;
6314 static int hf_bit10pingflags2 = -1;
6315 static int hf_bit11pingflags2 = -1;
6316 static int hf_bit12pingflags2 = -1;
6317 static int hf_bit13pingflags2 = -1;
6318 static int hf_bit14pingflags2 = -1;
6319 static int hf_bit15pingflags2 = -1;
6320 static int hf_bit16pingflags2 = -1;
6321 static int hf_pingflags1 = -1;
6322 static int hf_bit1pingflags1 = -1;
6323 static int hf_bit2pingflags1 = -1;
6324 static int hf_bit3pingflags1 = -1;
6325 static int hf_bit4pingflags1 = -1;
6326 static int hf_bit5pingflags1 = -1;
6327 static int hf_bit6pingflags1 = -1;
6328 static int hf_bit7pingflags1 = -1;
6329 static int hf_bit8pingflags1 = -1;
6330 static int hf_bit9pingflags1 = -1;
6331 static int hf_bit10pingflags1 = -1;
6332 static int hf_bit11pingflags1 = -1;
6333 static int hf_bit12pingflags1 = -1;
6334 static int hf_bit13pingflags1 = -1;
6335 static int hf_bit14pingflags1 = -1;
6336 static int hf_bit15pingflags1 = -1;
6337 static int hf_bit16pingflags1 = -1;
6338 static int hf_pingpflags1 = -1;
6339 static int hf_bit1pingpflags1 = -1;
6340 static int hf_bit2pingpflags1 = -1;
6341 static int hf_bit3pingpflags1 = -1;
6342 static int hf_bit4pingpflags1 = -1;
6343 static int hf_bit5pingpflags1 = -1;
6344 static int hf_bit6pingpflags1 = -1;
6345 static int hf_bit7pingpflags1 = -1;
6346 static int hf_bit8pingpflags1 = -1;
6347 static int hf_bit9pingpflags1 = -1;
6348 static int hf_bit10pingpflags1 = -1;
6349 static int hf_bit11pingpflags1 = -1;
6350 static int hf_bit12pingpflags1 = -1;
6351 static int hf_bit13pingpflags1 = -1;
6352 static int hf_bit14pingpflags1 = -1;
6353 static int hf_bit15pingpflags1 = -1;
6354 static int hf_bit16pingpflags1 = -1;
6355 static int hf_pingvflags1 = -1;
6356 static int hf_bit1pingvflags1 = -1;
6357 static int hf_bit2pingvflags1 = -1;
6358 static int hf_bit3pingvflags1 = -1;
6359 static int hf_bit4pingvflags1 = -1;
6360 static int hf_bit5pingvflags1 = -1;
6361 static int hf_bit6pingvflags1 = -1;
6362 static int hf_bit7pingvflags1 = -1;
6363 static int hf_bit8pingvflags1 = -1;
6364 static int hf_bit9pingvflags1 = -1;
6365 static int hf_bit10pingvflags1 = -1;
6366 static int hf_bit11pingvflags1 = -1;
6367 static int hf_bit12pingvflags1 = -1;
6368 static int hf_bit13pingvflags1 = -1;
6369 static int hf_bit14pingvflags1 = -1;
6370 static int hf_bit15pingvflags1 = -1;
6371 static int hf_bit16pingvflags1 = -1;
6372 static int hf_nds_letter_ver = -1;
6373 static int hf_nds_os_majver = -1;
6374 static int hf_nds_os_minver = -1;
6375 static int hf_nds_lic_flags = -1;
6376 static int hf_nds_ds_time = -1;
6377 static int hf_nds_ping_version = -1;
6378 static int hf_nds_search_scope = -1;
6379 static int hf_nds_num_objects = -1;
6380 static int hf_siflags = -1;
6381 static int hf_bit1siflags = -1;
6382 static int hf_bit2siflags = -1;
6383 static int hf_bit3siflags = -1;
6384 static int hf_bit4siflags = -1;
6385 static int hf_bit5siflags = -1;
6386 static int hf_bit6siflags = -1;
6387 static int hf_bit7siflags = -1;
6388 static int hf_bit8siflags = -1;
6389 static int hf_bit9siflags = -1;
6390 static int hf_bit10siflags = -1;
6391 static int hf_bit11siflags = -1;
6392 static int hf_bit12siflags = -1;
6393 static int hf_bit13siflags = -1;
6394 static int hf_bit14siflags = -1;
6395 static int hf_bit15siflags = -1;
6396 static int hf_bit16siflags = -1;
6397 static int hf_nds_segments = -1;
6398 static int hf_nds_segment = -1;
6399 static int hf_nds_segment_overlap = -1;
6400 static int hf_nds_segment_overlap_conflict = -1;
6401 static int hf_nds_segment_multiple_tails = -1;
6402 static int hf_nds_segment_too_long_segment = -1;
6403 static int hf_nds_segment_error = -1;
6404 static int hf_nds_segment_count = -1;
6405 static int hf_nds_reassembled_length = -1;
6406 static int hf_nds_verb2b_req_flags = -1;
6407 static int hf_ncp_ip_address = -1;
6408 static int hf_ncp_copyright = -1;
6409 static int hf_ndsprot1flag = -1;
6410 static int hf_ndsprot2flag = -1;
6411 static int hf_ndsprot3flag = -1;
6412 static int hf_ndsprot4flag = -1;
6413 static int hf_ndsprot5flag = -1;
6414 static int hf_ndsprot6flag = -1;
6415 static int hf_ndsprot7flag = -1;
6416 static int hf_ndsprot8flag = -1;
6417 static int hf_ndsprot9flag = -1;
6418 static int hf_ndsprot10flag = -1;
6419 static int hf_ndsprot11flag = -1;
6420 static int hf_ndsprot12flag = -1;
6421 static int hf_ndsprot13flag = -1;
6422 static int hf_ndsprot14flag = -1;
6423 static int hf_ndsprot15flag = -1;
6424 static int hf_ndsprot16flag = -1;
6425 static int hf_nds_svr_dst_name = -1;
6426 static int hf_nds_tune_mark = -1;
6427 /* static int hf_nds_create_time = -1; */
6428 static int hf_srvr_param_number = -1;
6429 static int hf_srvr_param_boolean = -1;
6430 static int hf_srvr_param_string = -1;
6431 static int hf_nds_svr_time = -1;
6432 static int hf_nds_crt_time = -1;
6433 static int hf_nds_number_of_items = -1;
6434 static int hf_nds_compare_attributes = -1;
6435 static int hf_nds_read_attribute = -1;
6436 static int hf_nds_write_add_delete_attribute = -1;
6437 static int hf_nds_add_delete_self = -1;
6438 static int hf_nds_privilege_not_defined = -1;
6439 static int hf_nds_supervisor = -1;
6440 static int hf_nds_inheritance_control = -1;
6441 static int hf_nds_browse_entry = -1;
6442 static int hf_nds_add_entry = -1;
6443 static int hf_nds_delete_entry = -1;
6444 static int hf_nds_rename_entry = -1;
6445 static int hf_nds_supervisor_entry = -1;
6446 static int hf_nds_entry_privilege_not_defined = -1;
6447 static int hf_nds_iterator = -1;
6448 static int hf_ncp_nds_iterverb = -1;
6449 static int hf_iter_completion_code = -1;
6450 /* static int hf_nds_iterobj = -1; */
6451 static int hf_iter_verb_completion_code = -1;
6452 static int hf_iter_ans = -1;
6453 static int hf_positionable = -1;
6454 static int hf_num_skipped = -1;
6455 static int hf_num_to_skip = -1;
6456 static int hf_timelimit = -1;
6457 static int hf_iter_index = -1;
6458 static int hf_num_to_get = -1;
6459 /* static int hf_ret_info_type = -1; */
6460 static int hf_data_size = -1;
6461 static int hf_this_count = -1;
6462 static int hf_max_entries = -1;
6463 static int hf_move_position = -1;
6464 static int hf_iter_copy = -1;
6465 static int hf_iter_position = -1;
6466 static int hf_iter_search = -1;
6467 static int hf_iter_other = -1;
6468 static int hf_nds_oid = -1;
6469 static int hf_ncp_bytes_actually_trans_64 = -1;
6470 static int hf_sap_name = -1;
6471 static int hf_os_name = -1;
6472 static int hf_vendor_name = -1;
6473 static int hf_hardware_name = -1;
6474 static int hf_no_request_record_found = -1;
6475 static int hf_search_modifier = -1;
6476 static int hf_search_pattern = -1;
6477  
6478 static expert_field ei_ncp_file_rights_change = EI_INIT;
6479 static expert_field ei_ncp_completion_code = EI_INIT;
6480 static expert_field ei_nds_reply_error = EI_INIT;
6481 static expert_field ei_ncp_destroy_connection = EI_INIT;
6482 static expert_field ei_nds_iteration = EI_INIT;
6483 static expert_field ei_ncp_eid = EI_INIT;
6484 static expert_field ei_ncp_file_handle = EI_INIT;
6485 static expert_field ei_ncp_connection_destroyed = EI_INIT;
6486 static expert_field ei_ncp_no_request_record_found = EI_INIT;
6487 static expert_field ei_ncp_file_rights = EI_INIT;
6488 static expert_field ei_iter_verb_completion_code = EI_INIT;
6489 static expert_field ei_ncp_connection_request = EI_INIT;
6490 static expert_field ei_ncp_connection_status = EI_INIT;
6491 static expert_field ei_ncp_op_lock_handle = EI_INIT;
6492 static expert_field ei_ncp_effective_rights = EI_INIT;
6493 static expert_field ei_ncp_server = EI_INIT;
6494 static expert_field ei_ncp_invalid_offset = EI_INIT;
6495 static expert_field ei_ncp_address_type = EI_INIT;
6496 """)
6497  
6498 # Look at all packet types in the packets collection, and cull information
6499 # from them.
6500 errors_used_list = []
6501 errors_used_hash = {}
6502 groups_used_list = []
6503 groups_used_hash = {}
6504 variables_used_hash = {}
6505 structs_used_hash = {}
6506  
6507 for pkt in packets:
6508 # Determine which error codes are used.
6509 codes = pkt.CompletionCodes()
6510 for code in codes.Records():
6511 if code not in errors_used_hash:
6512 errors_used_hash[code] = len(errors_used_list)
6513 errors_used_list.append(code)
6514  
6515 # Determine which groups are used.
6516 group = pkt.Group()
6517 if group not in groups_used_hash:
6518 groups_used_hash[group] = len(groups_used_list)
6519 groups_used_list.append(group)
6520  
6521  
6522  
6523  
6524 # Determine which variables are used.
6525 vars = pkt.Variables()
6526 ExamineVars(vars, structs_used_hash, variables_used_hash)
6527  
6528  
6529 # Print the hf variable declarations
6530 sorted_vars = list(variables_used_hash.values())
6531 sorted_vars.sort()
6532 for var in sorted_vars:
6533 print("static int " + var.HFName() + " = -1;")
6534  
6535  
6536 # Print the value_string's
6537 for var in sorted_vars:
6538 if isinstance(var, val_string):
6539 print("")
6540 print(var.Code())
6541  
6542 # Determine which error codes are not used
6543 errors_not_used = {}
6544 # Copy the keys from the error list...
6545 for code in list(errors.keys()):
6546 errors_not_used[code] = 1
6547 # ... and remove the ones that *were* used.
6548 for code in errors_used_list:
6549 del errors_not_used[code]
6550  
6551 # Print a remark showing errors not used
6552 list_errors_not_used = list(errors_not_used.keys())
6553 list_errors_not_used.sort()
6554 for code in list_errors_not_used:
6555 print("/* Error 0x%04x not used: %s */" % (code, errors[code]))
6556 print("\n")
6557  
6558 # Print the errors table
6559 print("/* Error strings. */")
6560 print("static const char *ncp_errors[] = {")
6561 for code in errors_used_list:
6562 print(' /* %02d (0x%04x) */ "%s",' % (errors_used_hash[code], code, errors[code]))
6563 print("};\n")
6564  
6565  
6566  
6567  
6568 # Determine which groups are not used
6569 groups_not_used = {}
6570 # Copy the keys from the group list...
6571 for group in list(groups.keys()):
6572 groups_not_used[group] = 1
6573 # ... and remove the ones that *were* used.
6574 for group in groups_used_list:
6575 del groups_not_used[group]
6576  
6577 # Print a remark showing groups not used
6578 list_groups_not_used = list(groups_not_used.keys())
6579 list_groups_not_used.sort()
6580 for group in list_groups_not_used:
6581 print("/* Group not used: %s = %s */" % (group, groups[group]))
6582 print("\n")
6583  
6584 # Print the groups table
6585 print("/* Group strings. */")
6586 print("static const char *ncp_groups[] = {")
6587 for group in groups_used_list:
6588 print(' /* %02d (%s) */ "%s",' % (groups_used_hash[group], group, groups[group]))
6589 print("};\n")
6590  
6591 # Print the group macros
6592 for group in groups_used_list:
6593 name = str.upper(group)
6594 print("#define NCP_GROUP_%s %d" % (name, groups_used_hash[group]))
6595 print("\n")
6596  
6597  
6598 # Print the conditional_records for all Request Conditions.
6599 num = 0
6600 print("/* Request-Condition dfilter records. The NULL pointer")
6601 print(" is replaced by a pointer to the created dfilter_t. */")
6602 if len(global_req_cond) == 0:
6603 print("static conditional_record req_conds = NULL;")
6604 else:
6605 print("static conditional_record req_conds[] = {")
6606 req_cond_l = list(global_req_cond.keys())
6607 req_cond_l.sort()
6608 for req_cond in req_cond_l:
6609 print(" { \"%s\", NULL }," % (req_cond,))
6610 global_req_cond[req_cond] = num
6611 num = num + 1
6612 print("};")
6613 print("#define NUM_REQ_CONDS %d" % (num,))
6614 print("#define NO_REQ_COND NUM_REQ_CONDS\n\n")
6615  
6616  
6617  
6618 # Print PTVC's for bitfields
6619 ett_list = []
6620 print("/* PTVC records for bit-fields. */")
6621 for var in sorted_vars:
6622 if isinstance(var, bitfield):
6623 sub_vars_ptvc = var.SubVariablesPTVC()
6624 print("/* %s */" % (sub_vars_ptvc.Name()))
6625 print(sub_vars_ptvc.Code())
6626 ett_list.append(sub_vars_ptvc.ETTName())
6627  
6628  
6629 # Print the PTVC's for structures
6630 print("/* PTVC records for structs. */")
6631 # Sort them
6632 svhash = {}
6633 for svar in list(structs_used_hash.values()):
6634 svhash[svar.HFName()] = svar
6635 if svar.descr:
6636 ett_list.append(svar.ETTName())
6637  
6638 struct_vars = list(svhash.keys())
6639 struct_vars.sort()
6640 for varname in struct_vars:
6641 var = svhash[varname]
6642 print(var.Code())
6643  
6644 ett_list.sort()
6645  
6646 # Print info string structures
6647 print("/* Info Strings */")
6648 for pkt in packets:
6649 if pkt.req_info_str:
6650 name = pkt.InfoStrName() + "_req"
6651 var = pkt.req_info_str[0]
6652 print("static const info_string_t %s = {" % (name,))
6653 print(" &%s," % (var.HFName(),))
6654 print(' "%s",' % (pkt.req_info_str[1],))
6655 print(' "%s"' % (pkt.req_info_str[2],))
6656 print("};\n")
6657  
6658 # Print regular PTVC's
6659 print("/* PTVC records. These are re-used to save space. */")
6660 for ptvc in ptvc_lists.Members():
6661 if not ptvc.Null() and not ptvc.Empty():
6662 print(ptvc.Code())
6663  
6664 # Print error_equivalency tables
6665 print("/* Error-Equivalency Tables. These are re-used to save space. */")
6666 for compcodes in compcode_lists.Members():
6667 errors = compcodes.Records()
6668 # Make sure the record for error = 0x00 comes last.
6669 print("static const error_equivalency %s[] = {" % (compcodes.Name()))
6670 for error in errors:
6671 error_in_packet = error >> 8;
6672 ncp_error_index = errors_used_hash[error]
6673 print(" { 0x%02x, %d }, /* 0x%04x */" % (error_in_packet,
6674 ncp_error_index, error))
6675 print(" { 0x00, -1 }\n};\n")
6676  
6677  
6678  
6679 # Print integer arrays for all ncp_records that need
6680 # a list of req_cond_indexes. Do it "uniquely" to save space;
6681 # if multiple packets share the same set of req_cond's,
6682 # then they'll share the same integer array
6683 print("/* Request Condition Indexes */")
6684 # First, make them unique
6685 req_cond_collection = UniqueCollection("req_cond_collection")
6686 for pkt in packets:
6687 req_conds = pkt.CalculateReqConds()
6688 if req_conds:
6689 unique_list = req_cond_collection.Add(req_conds)
6690 pkt.SetReqConds(unique_list)
6691 else:
6692 pkt.SetReqConds(None)
6693  
6694 # Print them
6695 for req_cond in req_cond_collection.Members():
6696 sys.stdout.write("static const int %s[] = {" % (req_cond.Name()))
6697 sys.stdout.write(" ")
6698 vals = []
6699 for text in req_cond.Records():
6700 vals.append(global_req_cond[text])
6701 vals.sort()
6702 for val in vals:
6703 sys.stdout.write("%s, " % (val,))
6704  
6705 print("-1 };")
6706 print("")
6707  
6708  
6709  
6710 # Functions without length parameter
6711 funcs_without_length = {}
6712  
6713 print("/* Forward declaration of expert info functions defined in ncp2222.inc */")
6714 for expert in expert_hash:
6715 print("static void %s_expert_func(ptvcursor_t *ptvc, packet_info *pinfo, const ncp_record *ncp_rec, gboolean request);" % expert)
6716  
6717 # Print ncp_record packet records
6718 print("#define SUBFUNC_WITH_LENGTH 0x02")
6719 print("#define SUBFUNC_NO_LENGTH 0x01")
6720 print("#define NO_SUBFUNC 0x00")
6721  
6722 print("/* ncp_record structs for packets */")
6723 print("static const ncp_record ncp_packets[] = {")
6724 for pkt in packets:
6725 if pkt.HasSubFunction():
6726 func = pkt.FunctionCode('high')
6727 if pkt.HasLength():
6728 subfunc_string = "SUBFUNC_WITH_LENGTH"
6729 # Ensure that the function either has a length param or not
6730 if func in funcs_without_length:
6731 sys.exit("Function 0x%04x sometimes has length param, sometimes not." \
6732 % (pkt.FunctionCode(),))
6733 else:
6734 subfunc_string = "SUBFUNC_NO_LENGTH"
6735 funcs_without_length[func] = 1
6736 else:
6737 subfunc_string = "NO_SUBFUNC"
6738 sys.stdout.write(' { 0x%02x, 0x%02x, %s, "%s",' % (pkt.FunctionCode('high'),
6739 pkt.FunctionCode('low'), subfunc_string, pkt.Description()))
6740  
6741 print(' %d /* %s */,' % (groups_used_hash[pkt.Group()], pkt.Group()))
6742  
6743 ptvc = pkt.PTVCRequest()
6744 if not ptvc.Null() and not ptvc.Empty():
6745 ptvc_request = ptvc.Name()
6746 else:
6747 ptvc_request = 'NULL'
6748  
6749 ptvc = pkt.PTVCReply()
6750 if not ptvc.Null() and not ptvc.Empty():
6751 ptvc_reply = ptvc.Name()
6752 else:
6753 ptvc_reply = 'NULL'
6754  
6755 errors = pkt.CompletionCodes()
6756  
6757 req_conds_obj = pkt.GetReqConds()
6758 if req_conds_obj:
6759 req_conds = req_conds_obj.Name()
6760 else:
6761 req_conds = "NULL"
6762  
6763 if not req_conds_obj:
6764 req_cond_size = "NO_REQ_COND_SIZE"
6765 else:
6766 req_cond_size = pkt.ReqCondSize()
6767 if req_cond_size == None:
6768 msg.write("NCP packet %s needs a ReqCondSize*() call\n" \
6769 % (pkt.CName(),))
6770 sys.exit(1)
6771  
6772 if pkt.expert_func:
6773 expert_func = "&" + pkt.expert_func + "_expert_func"
6774 else:
6775 expert_func = "NULL"
6776  
6777 print(' %s, %s, %s, %s, %s, %s },\n' % \
6778 (ptvc_request, ptvc_reply, errors.Name(), req_conds,
6779 req_cond_size, expert_func))
6780  
6781 print(' { 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NO_REQ_COND_SIZE, NULL }')
6782 print("};\n")
6783  
6784 print("/* ncp funcs that require a subfunc */")
6785 print("static const guint8 ncp_func_requires_subfunc[] = {")
6786 hi_seen = {}
6787 for pkt in packets:
6788 if pkt.HasSubFunction():
6789 hi_func = pkt.FunctionCode('high')
6790 if hi_func not in hi_seen:
6791 print(" 0x%02x," % (hi_func))
6792 hi_seen[hi_func] = 1
6793 print(" 0")
6794 print("};\n")
6795  
6796  
6797 print("/* ncp funcs that have no length parameter */")
6798 print("static const guint8 ncp_func_has_no_length_parameter[] = {")
6799 funcs = list(funcs_without_length.keys())
6800 funcs.sort()
6801 for func in funcs:
6802 print(" 0x%02x," % (func,))
6803 print(" 0")
6804 print("};\n")
6805  
6806 print("")
6807  
6808 # proto_register_ncp2222()
6809 print("""
6810 static const value_string connection_status_vals[] = {
6811 { 0x00, "Ok" },
6812 { 0x01, "Bad Service Connection" },
6813 { 0x10, "File Server is Down" },
6814 { 0x40, "Broadcast Message Pending" },
6815 { 0, NULL }
6816 };
6817  
6818 #include "packet-ncp2222.inc"
6819  
6820 void
6821 proto_register_ncp2222(void)
6822 {
6823  
6824 static hf_register_info hf[] = {
6825 { &hf_ncp_number_of_data_streams_long,
6826 { "Number of Data Streams", "ncp.number_of_data_streams_long", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6827  
6828 { &hf_ncp_func,
6829 { "Function", "ncp.func", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6830  
6831 { &hf_ncp_length,
6832 { "Packet Length", "ncp.length", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6833  
6834 { &hf_ncp_subfunc,
6835 { "SubFunction", "ncp.subfunc", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }},
6836  
6837 { &hf_ncp_completion_code,
6838 { "Completion Code", "ncp.completion_code", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6839  
6840 { &hf_ncp_group,
6841 { "NCP Group Type", "ncp.group", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6842  
6843 { &hf_ncp_fragment_handle,
6844 { "NDS Fragment Handle", "ncp.ndsfrag", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6845  
6846 { &hf_ncp_fragment_size,
6847 { "NDS Fragment Size", "ncp.ndsfragsize", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6848  
6849 { &hf_ncp_message_size,
6850 { "Message Size", "ncp.ndsmessagesize", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6851  
6852 { &hf_ncp_nds_flag,
6853 { "NDS Protocol Flags", "ncp.ndsflag", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6854  
6855 { &hf_ncp_nds_verb,
6856 { "NDS Verb", "ncp.ndsverb", FT_UINT8, BASE_HEX, VALS(ncp_nds_verb_vals), 0x0, NULL, HFILL }},
6857  
6858 { &hf_ping_version,
6859 { "NDS Version", "ncp.ping_version", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6860  
6861 #if 0 /* Unused ? */
6862 { &hf_nds_version,
6863 { "NDS Version", "ncp.nds_version", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6864 #endif
6865  
6866 { &hf_nds_tree_name,
6867 { "NDS Tree Name", "ncp.nds_tree_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
6868  
6869 /*
6870 * XXX - the page at
6871 *
6872 * http://www.odyssea.com/whats_new/tcpipnet/tcpipnet.html
6873 *
6874 * says of the connection status "The Connection Code field may
6875 * contain values that indicate the status of the client host to
6876 * server connection. A value of 1 in the fourth bit of this data
6877 * byte indicates that the server is unavailable (server was
6878 * downed).
6879 *
6880 * The page at
6881 *
6882 * http://www.unm.edu/~network/presentations/course/appendix/appendix_f/tsld088.htm
6883 *
6884 * says that bit 0 is "bad service", bit 2 is "no connection
6885 * available", bit 4 is "service down", and bit 6 is "server
6886 * has a broadcast message waiting for the client".
6887 *
6888 * Should it be displayed in hex, and should those bits (and any
6889 * other bits with significance) be displayed as bitfields
6890 * underneath it?
6891 */
6892 { &hf_ncp_connection_status,
6893 { "Connection Status", "ncp.connection_status", FT_UINT8, BASE_DEC, VALS(connection_status_vals), 0x0, NULL, HFILL }},
6894  
6895 { &hf_ncp_req_frame_num,
6896 { "Response to Request in Frame Number", "ncp.req_frame_num", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL }},
6897  
6898 { &hf_ncp_req_frame_time,
6899 { "Time from Request", "ncp.time", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, "Time between request and response in seconds", HFILL }},
6900  
6901 #if 0 /* Unused ? */
6902 { &hf_nds_flags,
6903 { "NDS Return Flags", "ncp.nds_flags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6904 #endif
6905  
6906 { &hf_nds_reply_depth,
6907 { "Distance from Root", "ncp.ndsdepth", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6908  
6909 { &hf_nds_reply_rev,
6910 { "NDS Revision", "ncp.ndsrev", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6911  
6912 { &hf_nds_reply_flags,
6913 { "Flags", "ncp.ndsflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6914  
6915 { &hf_nds_p1type,
6916 { "NDS Parameter Type", "ncp.p1type", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6917  
6918 { &hf_nds_uint32value,
6919 { "NDS Value", "ncp.uint32value", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
6920  
6921 { &hf_nds_bit1,
6922 { "Typeless", "ncp.nds_bit1", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
6923  
6924 { &hf_nds_bit2,
6925 { "All Containers", "ncp.nds_bit2", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
6926  
6927 { &hf_nds_bit3,
6928 { "Slashed", "ncp.nds_bit3", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
6929  
6930 { &hf_nds_bit4,
6931 { "Dotted", "ncp.nds_bit4", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
6932  
6933 { &hf_nds_bit5,
6934 { "Tuned", "ncp.nds_bit5", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
6935  
6936 { &hf_nds_bit6,
6937 { "Not Defined", "ncp.nds_bit6", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
6938  
6939 { &hf_nds_bit7,
6940 { "Not Defined", "ncp.nds_bit7", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
6941  
6942 { &hf_nds_bit8,
6943 { "Not Defined", "ncp.nds_bit8", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
6944  
6945 { &hf_nds_bit9,
6946 { "Not Defined", "ncp.nds_bit9", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
6947  
6948 { &hf_nds_bit10,
6949 { "Not Defined", "ncp.nds_bit10", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
6950  
6951 { &hf_nds_bit11,
6952 { "Not Defined", "ncp.nds_bit11", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
6953  
6954 { &hf_nds_bit12,
6955 { "Not Defined", "ncp.nds_bit12", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
6956  
6957 { &hf_nds_bit13,
6958 { "Not Defined", "ncp.nds_bit13", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
6959  
6960 { &hf_nds_bit14,
6961 { "Not Defined", "ncp.nds_bit14", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
6962  
6963 { &hf_nds_bit15,
6964 { "Not Defined", "ncp.nds_bit15", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
6965  
6966 { &hf_nds_bit16,
6967 { "Not Defined", "ncp.nds_bit16", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
6968  
6969 { &hf_outflags,
6970 { "Output Flags", "ncp.outflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
6971  
6972 { &hf_bit1outflags,
6973 { "Output Flags", "ncp.bit1outflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
6974  
6975 { &hf_bit2outflags,
6976 { "Entry ID", "ncp.bit2outflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
6977  
6978 { &hf_bit3outflags,
6979 { "Replica State", "ncp.bit3outflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
6980  
6981 { &hf_bit4outflags,
6982 { "Modification Timestamp", "ncp.bit4outflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
6983  
6984 { &hf_bit5outflags,
6985 { "Purge Time", "ncp.bit5outflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
6986  
6987 { &hf_bit6outflags,
6988 { "Local Partition ID", "ncp.bit6outflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
6989  
6990 { &hf_bit7outflags,
6991 { "Distinguished Name", "ncp.bit7outflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
6992  
6993 { &hf_bit8outflags,
6994 { "Replica Type", "ncp.bit8outflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
6995  
6996 { &hf_bit9outflags,
6997 { "Partition Busy", "ncp.bit9outflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
6998  
6999 { &hf_bit10outflags,
7000 { "Not Defined", "ncp.bit10outflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7001  
7002 { &hf_bit11outflags,
7003 { "Not Defined", "ncp.bit11outflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7004  
7005 { &hf_bit12outflags,
7006 { "Not Defined", "ncp.bit12outflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7007  
7008 { &hf_bit13outflags,
7009 { "Not Defined", "ncp.bit13outflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7010  
7011 { &hf_bit14outflags,
7012 { "Not Defined", "ncp.bit14outflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7013  
7014 { &hf_bit15outflags,
7015 { "Not Defined", "ncp.bit15outflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7016  
7017 { &hf_bit16outflags,
7018 { "Not Defined", "ncp.bit16outflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7019  
7020 { &hf_bit1nflags,
7021 { "Entry ID", "ncp.bit1nflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7022  
7023 { &hf_bit2nflags,
7024 { "Readable", "ncp.bit2nflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7025  
7026 { &hf_bit3nflags,
7027 { "Writeable", "ncp.bit3nflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7028  
7029 { &hf_bit4nflags,
7030 { "Master", "ncp.bit4nflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7031  
7032 { &hf_bit5nflags,
7033 { "Create ID", "ncp.bit5nflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7034  
7035 { &hf_bit6nflags,
7036 { "Walk Tree", "ncp.bit6nflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7037  
7038 { &hf_bit7nflags,
7039 { "Dereference Alias", "ncp.bit7nflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7040  
7041 { &hf_bit8nflags,
7042 { "Not Defined", "ncp.bit8nflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7043  
7044 { &hf_bit9nflags,
7045 { "Not Defined", "ncp.bit9nflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7046  
7047 { &hf_bit10nflags,
7048 { "Not Defined", "ncp.bit10nflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7049  
7050 { &hf_bit11nflags,
7051 { "Not Defined", "ncp.bit11nflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7052  
7053 { &hf_bit12nflags,
7054 { "Not Defined", "ncp.bit12nflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7055  
7056 { &hf_bit13nflags,
7057 { "Not Defined", "ncp.bit13nflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7058  
7059 { &hf_bit14nflags,
7060 { "Prefer Referrals", "ncp.bit14nflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7061  
7062 { &hf_bit15nflags,
7063 { "Prefer Only Referrals", "ncp.bit15nflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7064  
7065 { &hf_bit16nflags,
7066 { "Not Defined", "ncp.bit16nflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7067  
7068 { &hf_bit1rflags,
7069 { "Typeless", "ncp.bit1rflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7070  
7071 { &hf_bit2rflags,
7072 { "Slashed", "ncp.bit2rflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7073  
7074 { &hf_bit3rflags,
7075 { "Dotted", "ncp.bit3rflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7076  
7077 { &hf_bit4rflags,
7078 { "Tuned", "ncp.bit4rflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7079  
7080 { &hf_bit5rflags,
7081 { "Not Defined", "ncp.bit5rflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7082  
7083 { &hf_bit6rflags,
7084 { "Not Defined", "ncp.bit6rflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7085  
7086 { &hf_bit7rflags,
7087 { "Not Defined", "ncp.bit7rflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7088  
7089 { &hf_bit8rflags,
7090 { "Not Defined", "ncp.bit8rflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7091  
7092 { &hf_bit9rflags,
7093 { "Not Defined", "ncp.bit9rflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7094  
7095 { &hf_bit10rflags,
7096 { "Not Defined", "ncp.bit10rflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7097  
7098 { &hf_bit11rflags,
7099 { "Not Defined", "ncp.bit11rflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7100  
7101 { &hf_bit12rflags,
7102 { "Not Defined", "ncp.bit12rflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7103  
7104 { &hf_bit13rflags,
7105 { "Not Defined", "ncp.bit13rflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7106  
7107 { &hf_bit14rflags,
7108 { "Not Defined", "ncp.bit14rflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7109  
7110 { &hf_bit15rflags,
7111 { "Not Defined", "ncp.bit15rflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7112  
7113 { &hf_bit16rflags,
7114 { "Not Defined", "ncp.bit16rflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7115  
7116 { &hf_eflags,
7117 { "Entry Flags", "ncp.eflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7118  
7119 { &hf_bit1eflags,
7120 { "Alias Entry", "ncp.bit1eflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7121  
7122 { &hf_bit2eflags,
7123 { "Partition Root", "ncp.bit2eflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7124  
7125 { &hf_bit3eflags,
7126 { "Container Entry", "ncp.bit3eflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7127  
7128 { &hf_bit4eflags,
7129 { "Container Alias", "ncp.bit4eflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7130  
7131 { &hf_bit5eflags,
7132 { "Matches List Filter", "ncp.bit5eflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7133  
7134 { &hf_bit6eflags,
7135 { "Reference Entry", "ncp.bit6eflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7136  
7137 { &hf_bit7eflags,
7138 { "40x Reference Entry", "ncp.bit7eflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7139  
7140 { &hf_bit8eflags,
7141 { "Back Linked", "ncp.bit8eflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7142  
7143 { &hf_bit9eflags,
7144 { "New Entry", "ncp.bit9eflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7145  
7146 { &hf_bit10eflags,
7147 { "Temporary Reference", "ncp.bit10eflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7148  
7149 { &hf_bit11eflags,
7150 { "Audited", "ncp.bit11eflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7151  
7152 { &hf_bit12eflags,
7153 { "Entry Not Present", "ncp.bit12eflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7154  
7155 { &hf_bit13eflags,
7156 { "Entry Verify CTS", "ncp.bit13eflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7157  
7158 { &hf_bit14eflags,
7159 { "Entry Damaged", "ncp.bit14eflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7160  
7161 { &hf_bit15eflags,
7162 { "Not Defined", "ncp.bit15rflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7163  
7164 { &hf_bit16eflags,
7165 { "Not Defined", "ncp.bit16rflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7166  
7167 { &hf_infoflagsl,
7168 { "Information Flags (low) Byte", "ncp.infoflagsl", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7169  
7170 { &hf_retinfoflagsl,
7171 { "Return Information Flags (low) Byte", "ncp.retinfoflagsl", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7172  
7173 { &hf_bit1infoflagsl,
7174 { "Output Flags", "ncp.bit1infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7175  
7176 { &hf_bit2infoflagsl,
7177 { "Entry ID", "ncp.bit2infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7178  
7179 { &hf_bit3infoflagsl,
7180 { "Entry Flags", "ncp.bit3infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7181  
7182 { &hf_bit4infoflagsl,
7183 { "Subordinate Count", "ncp.bit4infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7184  
7185 { &hf_bit5infoflagsl,
7186 { "Modification Time", "ncp.bit5infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7187  
7188 { &hf_bit6infoflagsl,
7189 { "Modification Timestamp", "ncp.bit6infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7190  
7191 { &hf_bit7infoflagsl,
7192 { "Creation Timestamp", "ncp.bit7infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7193  
7194 { &hf_bit8infoflagsl,
7195 { "Partition Root ID", "ncp.bit8infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7196  
7197 { &hf_bit9infoflagsl,
7198 { "Parent ID", "ncp.bit9infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7199  
7200 { &hf_bit10infoflagsl,
7201 { "Revision Count", "ncp.bit10infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7202  
7203 { &hf_bit11infoflagsl,
7204 { "Replica Type", "ncp.bit11infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7205  
7206 { &hf_bit12infoflagsl,
7207 { "Base Class", "ncp.bit12infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7208  
7209 { &hf_bit13infoflagsl,
7210 { "Relative Distinguished Name", "ncp.bit13infoflagsl", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7211  
7212 { &hf_bit14infoflagsl,
7213 { "Distinguished Name", "ncp.bit14infoflagsl", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7214  
7215 { &hf_bit15infoflagsl,
7216 { "Root Distinguished Name", "ncp.bit15infoflagsl", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7217  
7218 { &hf_bit16infoflagsl,
7219 { "Parent Distinguished Name", "ncp.bit16infoflagsl", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7220  
7221 { &hf_infoflagsh,
7222 { "Information Flags (high) Byte", "ncp.infoflagsh", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7223  
7224 { &hf_bit1infoflagsh,
7225 { "Purge Time", "ncp.bit1infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7226  
7227 { &hf_bit2infoflagsh,
7228 { "Dereference Base Class", "ncp.bit2infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7229  
7230 { &hf_bit3infoflagsh,
7231 { "Not Defined", "ncp.bit3infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7232  
7233 { &hf_bit4infoflagsh,
7234 { "Not Defined", "ncp.bit4infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7235  
7236 { &hf_bit5infoflagsh,
7237 { "Not Defined", "ncp.bit5infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7238  
7239 { &hf_bit6infoflagsh,
7240 { "Not Defined", "ncp.bit6infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7241  
7242 { &hf_bit7infoflagsh,
7243 { "Not Defined", "ncp.bit7infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7244  
7245 { &hf_bit8infoflagsh,
7246 { "Not Defined", "ncp.bit8infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7247  
7248 { &hf_bit9infoflagsh,
7249 { "Not Defined", "ncp.bit9infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7250  
7251 { &hf_bit10infoflagsh,
7252 { "Not Defined", "ncp.bit10infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7253  
7254 { &hf_bit11infoflagsh,
7255 { "Not Defined", "ncp.bit11infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7256  
7257 { &hf_bit12infoflagsh,
7258 { "Not Defined", "ncp.bit12infoflagshs", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7259  
7260 { &hf_bit13infoflagsh,
7261 { "Not Defined", "ncp.bit13infoflagsh", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7262  
7263 { &hf_bit14infoflagsh,
7264 { "Not Defined", "ncp.bit14infoflagsh", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7265  
7266 { &hf_bit15infoflagsh,
7267 { "Not Defined", "ncp.bit15infoflagsh", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7268  
7269 { &hf_bit16infoflagsh,
7270 { "Not Defined", "ncp.bit16infoflagsh", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7271  
7272 { &hf_retinfoflagsh,
7273 { "Return Information Flags (high) Byte", "ncp.retinfoflagsh", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7274  
7275 { &hf_bit1retinfoflagsh,
7276 { "Purge Time", "ncp.bit1retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7277  
7278 { &hf_bit2retinfoflagsh,
7279 { "Dereference Base Class", "ncp.bit2retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7280  
7281 { &hf_bit3retinfoflagsh,
7282 { "Replica Number", "ncp.bit3retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7283  
7284 { &hf_bit4retinfoflagsh,
7285 { "Replica State", "ncp.bit4retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7286  
7287 { &hf_bit5retinfoflagsh,
7288 { "Federation Boundary", "ncp.bit5retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7289  
7290 { &hf_bit6retinfoflagsh,
7291 { "Schema Boundary", "ncp.bit6retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7292  
7293 { &hf_bit7retinfoflagsh,
7294 { "Federation Boundary ID", "ncp.bit7retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7295  
7296 { &hf_bit8retinfoflagsh,
7297 { "Schema Boundary ID", "ncp.bit8retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7298  
7299 { &hf_bit9retinfoflagsh,
7300 { "Current Subcount", "ncp.bit9retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7301  
7302 { &hf_bit10retinfoflagsh,
7303 { "Local Entry Flags", "ncp.bit10retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7304  
7305 { &hf_bit11retinfoflagsh,
7306 { "Not Defined", "ncp.bit11retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7307  
7308 { &hf_bit12retinfoflagsh,
7309 { "Not Defined", "ncp.bit12retinfoflagshs", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7310  
7311 { &hf_bit13retinfoflagsh,
7312 { "Not Defined", "ncp.bit13retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7313  
7314 { &hf_bit14retinfoflagsh,
7315 { "Not Defined", "ncp.bit14retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7316  
7317 { &hf_bit15retinfoflagsh,
7318 { "Not Defined", "ncp.bit15retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7319  
7320 { &hf_bit16retinfoflagsh,
7321 { "Not Defined", "ncp.bit16retinfoflagsh", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7322  
7323 { &hf_bit1lflags,
7324 { "List Typeless", "ncp.bit1lflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7325  
7326 { &hf_bit2lflags,
7327 { "List Containers", "ncp.bit2lflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7328  
7329 { &hf_bit3lflags,
7330 { "List Slashed", "ncp.bit3lflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7331  
7332 { &hf_bit4lflags,
7333 { "List Dotted", "ncp.bit4lflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7334  
7335 { &hf_bit5lflags,
7336 { "Dereference Alias", "ncp.bit5lflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7337  
7338 { &hf_bit6lflags,
7339 { "List All Containers", "ncp.bit6lflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7340  
7341 { &hf_bit7lflags,
7342 { "List Obsolete", "ncp.bit7lflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7343  
7344 { &hf_bit8lflags,
7345 { "List Tuned Output", "ncp.bit8lflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7346  
7347 { &hf_bit9lflags,
7348 { "List External Reference", "ncp.bit9lflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7349  
7350 { &hf_bit10lflags,
7351 { "Not Defined", "ncp.bit10lflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7352  
7353 { &hf_bit11lflags,
7354 { "Not Defined", "ncp.bit11lflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7355  
7356 { &hf_bit12lflags,
7357 { "Not Defined", "ncp.bit12lflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7358  
7359 { &hf_bit13lflags,
7360 { "Not Defined", "ncp.bit13lflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7361  
7362 { &hf_bit14lflags,
7363 { "Not Defined", "ncp.bit14lflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7364  
7365 { &hf_bit15lflags,
7366 { "Not Defined", "ncp.bit15lflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7367  
7368 { &hf_bit16lflags,
7369 { "Not Defined", "ncp.bit16lflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7370  
7371 { &hf_l1flagsl,
7372 { "Information Flags (low) Byte", "ncp.l1flagsl", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7373  
7374 { &hf_l1flagsh,
7375 { "Information Flags (high) Byte", "ncp.l1flagsh", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7376  
7377 { &hf_bit1l1flagsl,
7378 { "Output Flags", "ncp.bit1l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7379  
7380 { &hf_bit2l1flagsl,
7381 { "Entry ID", "ncp.bit2l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7382  
7383 { &hf_bit3l1flagsl,
7384 { "Replica State", "ncp.bit3l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7385  
7386 { &hf_bit4l1flagsl,
7387 { "Modification Timestamp", "ncp.bit4l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7388  
7389 { &hf_bit5l1flagsl,
7390 { "Purge Time", "ncp.bit5l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7391  
7392 { &hf_bit6l1flagsl,
7393 { "Local Partition ID", "ncp.bit6l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7394  
7395 { &hf_bit7l1flagsl,
7396 { "Distinguished Name", "ncp.bit7l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7397  
7398 { &hf_bit8l1flagsl,
7399 { "Replica Type", "ncp.bit8l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7400  
7401 { &hf_bit9l1flagsl,
7402 { "Partition Busy", "ncp.bit9l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7403  
7404 { &hf_bit10l1flagsl,
7405 { "Not Defined", "ncp.bit10l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7406  
7407 { &hf_bit11l1flagsl,
7408 { "Not Defined", "ncp.bit11l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7409  
7410 { &hf_bit12l1flagsl,
7411 { "Not Defined", "ncp.bit12l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7412  
7413 { &hf_bit13l1flagsl,
7414 { "Not Defined", "ncp.bit13l1flagsl", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7415  
7416 { &hf_bit14l1flagsl,
7417 { "Not Defined", "ncp.bit14l1flagsl", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7418  
7419 { &hf_bit15l1flagsl,
7420 { "Not Defined", "ncp.bit15l1flagsl", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7421  
7422 { &hf_bit16l1flagsl,
7423 { "Not Defined", "ncp.bit16l1flagsl", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7424  
7425 { &hf_bit1l1flagsh,
7426 { "Not Defined", "ncp.bit1l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7427  
7428 { &hf_bit2l1flagsh,
7429 { "Not Defined", "ncp.bit2l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7430  
7431 { &hf_bit3l1flagsh,
7432 { "Not Defined", "ncp.bit3l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7433  
7434 { &hf_bit4l1flagsh,
7435 { "Not Defined", "ncp.bit4l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7436  
7437 { &hf_bit5l1flagsh,
7438 { "Not Defined", "ncp.bit5l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7439  
7440 { &hf_bit6l1flagsh,
7441 { "Not Defined", "ncp.bit6l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7442  
7443 { &hf_bit7l1flagsh,
7444 { "Not Defined", "ncp.bit7l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7445  
7446 { &hf_bit8l1flagsh,
7447 { "Not Defined", "ncp.bit8l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7448  
7449 { &hf_bit9l1flagsh,
7450 { "Not Defined", "ncp.bit9l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7451  
7452 { &hf_bit10l1flagsh,
7453 { "Not Defined", "ncp.bit10l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7454  
7455 { &hf_bit11l1flagsh,
7456 { "Not Defined", "ncp.bit11l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7457  
7458 { &hf_bit12l1flagsh,
7459 { "Not Defined", "ncp.bit12l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7460  
7461 { &hf_bit13l1flagsh,
7462 { "Not Defined", "ncp.bit13l1flagsh", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7463  
7464 { &hf_bit14l1flagsh,
7465 { "Not Defined", "ncp.bit14l1flagsh", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7466  
7467 { &hf_bit15l1flagsh,
7468 { "Not Defined", "ncp.bit15l1flagsh", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7469  
7470 { &hf_bit16l1flagsh,
7471 { "Not Defined", "ncp.bit16l1flagsh", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7472  
7473 { &hf_vflags,
7474 { "Value Flags", "ncp.vflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7475  
7476 { &hf_bit1vflags,
7477 { "Naming", "ncp.bit1vflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7478  
7479 { &hf_bit2vflags,
7480 { "Base Class", "ncp.bit2vflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7481  
7482 { &hf_bit3vflags,
7483 { "Present", "ncp.bit3vflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7484  
7485 { &hf_bit4vflags,
7486 { "Value Damaged", "ncp.bit4vflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7487  
7488 { &hf_bit5vflags,
7489 { "Not Defined", "ncp.bit5vflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7490  
7491 { &hf_bit6vflags,
7492 { "Not Defined", "ncp.bit6vflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7493  
7494 { &hf_bit7vflags,
7495 { "Not Defined", "ncp.bit7vflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7496  
7497 { &hf_bit8vflags,
7498 { "Not Defined", "ncp.bit8vflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7499  
7500 { &hf_bit9vflags,
7501 { "Not Defined", "ncp.bit9vflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7502  
7503 { &hf_bit10vflags,
7504 { "Not Defined", "ncp.bit10vflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7505  
7506 { &hf_bit11vflags,
7507 { "Not Defined", "ncp.bit11vflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7508  
7509 { &hf_bit12vflags,
7510 { "Not Defined", "ncp.bit12vflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7511  
7512 { &hf_bit13vflags,
7513 { "Not Defined", "ncp.bit13vflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7514  
7515 { &hf_bit14vflags,
7516 { "Not Defined", "ncp.bit14vflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7517  
7518 { &hf_bit15vflags,
7519 { "Not Defined", "ncp.bit15vflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7520  
7521 { &hf_bit16vflags,
7522 { "Not Defined", "ncp.bit16vflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7523  
7524 { &hf_cflags,
7525 { "Class Flags", "ncp.cflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7526  
7527 { &hf_bit1cflags,
7528 { "Container", "ncp.bit1cflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7529  
7530 { &hf_bit2cflags,
7531 { "Effective", "ncp.bit2cflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7532  
7533 { &hf_bit3cflags,
7534 { "Class Definition Cannot be Removed", "ncp.bit3cflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7535  
7536 { &hf_bit4cflags,
7537 { "Ambiguous Naming", "ncp.bit4cflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7538  
7539 { &hf_bit5cflags,
7540 { "Ambiguous Containment", "ncp.bit5cflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7541  
7542 { &hf_bit6cflags,
7543 { "Auxiliary", "ncp.bit6cflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7544  
7545 { &hf_bit7cflags,
7546 { "Operational", "ncp.bit7cflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7547  
7548 { &hf_bit8cflags,
7549 { "Sparse Required", "ncp.bit8cflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7550  
7551 { &hf_bit9cflags,
7552 { "Sparse Operational", "ncp.bit9cflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7553  
7554 { &hf_bit10cflags,
7555 { "Not Defined", "ncp.bit10cflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7556  
7557 { &hf_bit11cflags,
7558 { "Not Defined", "ncp.bit11cflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7559  
7560 { &hf_bit12cflags,
7561 { "Not Defined", "ncp.bit12cflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7562  
7563 { &hf_bit13cflags,
7564 { "Not Defined", "ncp.bit13cflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7565  
7566 { &hf_bit14cflags,
7567 { "Not Defined", "ncp.bit14cflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7568  
7569 { &hf_bit15cflags,
7570 { "Not Defined", "ncp.bit15cflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7571  
7572 { &hf_bit16cflags,
7573 { "Not Defined", "ncp.bit16cflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7574  
7575 { &hf_bit1acflags,
7576 { "Single Valued", "ncp.bit1acflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7577  
7578 { &hf_bit2acflags,
7579 { "Sized", "ncp.bit2acflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7580  
7581 { &hf_bit3acflags,
7582 { "Non-Removable", "ncp.bit3acflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7583  
7584 { &hf_bit4acflags,
7585 { "Read Only", "ncp.bit4acflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7586  
7587 { &hf_bit5acflags,
7588 { "Hidden", "ncp.bit5acflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7589  
7590 { &hf_bit6acflags,
7591 { "String", "ncp.bit6acflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7592  
7593 { &hf_bit7acflags,
7594 { "Synchronize Immediate", "ncp.bit7acflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7595  
7596 { &hf_bit8acflags,
7597 { "Public Read", "ncp.bit8acflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
7598  
7599 { &hf_bit9acflags,
7600 { "Server Read", "ncp.bit9acflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
7601  
7602 { &hf_bit10acflags,
7603 { "Write Managed", "ncp.bit10acflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
7604  
7605 { &hf_bit11acflags,
7606 { "Per Replica", "ncp.bit11acflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
7607  
7608 { &hf_bit12acflags,
7609 { "Never Schedule Synchronization", "ncp.bit12acflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
7610  
7611 { &hf_bit13acflags,
7612 { "Operational", "ncp.bit13acflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
7613  
7614 { &hf_bit14acflags,
7615 { "Not Defined", "ncp.bit14acflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
7616  
7617 { &hf_bit15acflags,
7618 { "Not Defined", "ncp.bit15acflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
7619  
7620 { &hf_bit16acflags,
7621 { "Not Defined", "ncp.bit16acflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
7622  
7623  
7624 { &hf_nds_reply_error,
7625 { "NDS Error", "ncp.ndsreplyerror", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7626  
7627 { &hf_nds_net,
7628 { "Network","ncp.ndsnet", FT_IPXNET, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7629  
7630 { &hf_nds_node,
7631 { "Node", "ncp.ndsnode", FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7632  
7633 { &hf_nds_socket,
7634 { "Socket", "ncp.ndssocket", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7635  
7636 { &hf_add_ref_ip,
7637 { "Address Referral", "ncp.ipref", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7638  
7639 { &hf_add_ref_udp,
7640 { "Address Referral", "ncp.udpref", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7641  
7642 { &hf_add_ref_tcp,
7643 { "Address Referral", "ncp.tcpref", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7644  
7645 { &hf_referral_record,
7646 { "Referral Record", "ncp.ref_rec", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7647  
7648 { &hf_referral_addcount,
7649 { "Number of Addresses in Referral", "ncp.ref_addcount", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7650  
7651 { &hf_nds_port,
7652 { "Port", "ncp.ndsport", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7653  
7654 { &hf_mv_string,
7655 { "Attribute Name", "ncp.mv_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7656  
7657 { &hf_nds_syntax,
7658 { "Attribute Syntax", "ncp.nds_syntax", FT_UINT32, BASE_DEC, VALS(nds_syntax), 0x0, NULL, HFILL }},
7659  
7660 { &hf_value_string,
7661 { "Value", "ncp.value_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7662  
7663 { &hf_nds_stream_name,
7664 { "Stream Name", "ncp.nds_stream_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7665  
7666 { &hf_nds_buffer_size,
7667 { "NDS Reply Buffer Size", "ncp.nds_reply_buf", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7668  
7669 { &hf_nds_ver,
7670 { "NDS Version", "ncp.nds_ver", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7671  
7672 { &hf_nds_nflags,
7673 { "Flags", "ncp.nds_nflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7674  
7675 { &hf_nds_rflags,
7676 { "Request Flags", "ncp.nds_rflags", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7677  
7678 { &hf_nds_eflags,
7679 { "Entry Flags", "ncp.nds_eflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7680  
7681 { &hf_nds_scope,
7682 { "Scope", "ncp.nds_scope", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7683  
7684 { &hf_nds_name,
7685 { "Name", "ncp.nds_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7686  
7687 { &hf_nds_name_type,
7688 { "Name Type", "ncp.nds_name_type", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7689  
7690 { &hf_nds_comm_trans,
7691 { "Communications Transport", "ncp.nds_comm_trans", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7692  
7693 { &hf_nds_tree_trans,
7694 { "Tree Walker Transport", "ncp.nds_tree_trans", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7695  
7696 { &hf_nds_iteration,
7697 { "Iteration Handle", "ncp.nds_iteration", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7698  
7699 { &hf_nds_iterator,
7700 { "Iterator", "ncp.nds_iterator", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7701  
7702 { &hf_nds_file_handle,
7703 { "File Handle", "ncp.nds_file_handle", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7704  
7705 { &hf_nds_file_size,
7706 { "File Size", "ncp.nds_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7707  
7708 { &hf_nds_eid,
7709 { "NDS EID", "ncp.nds_eid", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7710  
7711 { &hf_nds_depth,
7712 { "Distance object is from Root", "ncp.nds_depth", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7713  
7714 { &hf_nds_info_type,
7715 { "Info Type", "ncp.nds_info_type", FT_UINT32, BASE_RANGE_STRING|BASE_DEC, RVALS(nds_info_type), 0x0, NULL, HFILL }},
7716  
7717 { &hf_nds_class_def_type,
7718 { "Class Definition Type", "ncp.nds_class_def_type", FT_UINT32, BASE_DEC, VALS(class_def_type), 0x0, NULL, HFILL }},
7719  
7720 { &hf_nds_all_attr,
7721 { "All Attributes", "ncp.nds_all_attr", FT_UINT32, BASE_DEC, NULL, 0x0, "Return all Attributes?", HFILL }},
7722  
7723 { &hf_nds_return_all_classes,
7724 { "All Classes", "ncp.nds_return_all_classes", FT_UINT32, BASE_DEC, NULL, 0x0, "Return all Classes?", HFILL }},
7725  
7726 { &hf_nds_req_flags,
7727 { "Request Flags", "ncp.nds_req_flags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7728  
7729 { &hf_nds_attr,
7730 { "Attributes", "ncp.nds_attributes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7731  
7732 { &hf_nds_classes,
7733 { "Classes", "ncp.nds_classes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7734  
7735 { &hf_nds_crc,
7736 { "CRC", "ncp.nds_crc", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7737  
7738 { &hf_nds_referrals,
7739 { "Referrals", "ncp.nds_referrals", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7740  
7741 { &hf_nds_result_flags,
7742 { "Result Flags", "ncp.nds_result_flags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7743  
7744 { &hf_nds_stream_flags,
7745 { "Streams Flags", "ncp.nds_stream_flags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7746  
7747 { &hf_nds_tag_string,
7748 { "Tags", "ncp.nds_tags", FT_UINT32, BASE_DEC, VALS(nds_tags), 0x0, NULL, HFILL }},
7749  
7750 { &hf_value_bytes,
7751 { "Bytes", "ncp.value_bytes", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7752  
7753 { &hf_replica_type,
7754 { "Replica Type", "ncp.rtype", FT_UINT32, BASE_DEC, VALS(nds_replica_type), 0x0, NULL, HFILL }},
7755  
7756 { &hf_replica_state,
7757 { "Replica State", "ncp.rstate", FT_UINT16, BASE_DEC, VALS(nds_replica_state), 0x0, NULL, HFILL }},
7758  
7759 { &hf_nds_rnum,
7760 { "Replica Number", "ncp.rnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7761  
7762 { &hf_nds_revent,
7763 { "Event", "ncp.revent", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7764  
7765 { &hf_replica_number,
7766 { "Replica Number", "ncp.rnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7767  
7768 { &hf_min_nds_ver,
7769 { "Minimum NDS Version", "ncp.min_nds_version", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7770  
7771 { &hf_nds_ver_include,
7772 { "Include NDS Version", "ncp.inc_nds_ver", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7773  
7774 { &hf_nds_ver_exclude,
7775 { "Exclude NDS Version", "ncp.exc_nds_ver", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7776  
7777 #if 0 /* Unused ? */
7778 { &hf_nds_es,
7779 { "Input Entry Specifier", "ncp.nds_es", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7780 #endif
7781  
7782 { &hf_es_type,
7783 { "Entry Specifier Type", "ncp.nds_es_type", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7784  
7785 { &hf_rdn_string,
7786 { "RDN", "ncp.nds_rdn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7787  
7788 #if 0 /* Unused ? */
7789 { &hf_delim_string,
7790 { "Delimiter", "ncp.nds_delim", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7791 #endif
7792  
7793 { &hf_nds_dn_output_type,
7794 { "Output Entry Specifier Type", "ncp.nds_out_es_type", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7795  
7796 { &hf_nds_nested_output_type,
7797 { "Nested Output Entry Specifier Type", "ncp.nds_nested_out_es", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7798  
7799 { &hf_nds_output_delimiter,
7800 { "Output Delimiter", "ncp.nds_out_delimiter", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7801  
7802 { &hf_nds_output_entry_specifier,
7803 { "Output Entry Specifier", "ncp.nds_out_es", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7804  
7805 { &hf_es_value,
7806 { "Entry Specifier Value", "ncp.nds_es_value", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7807  
7808 { &hf_es_rdn_count,
7809 { "RDN Count", "ncp.nds_es_rdn_count", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7810  
7811 { &hf_nds_replica_num,
7812 { "Replica Number", "ncp.nds_replica_num", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7813  
7814 { &hf_es_seconds,
7815 { "Seconds", "ncp.nds_es_seconds", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
7816  
7817 { &hf_nds_event_num,
7818 { "Event Number", "ncp.nds_event_num", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7819  
7820 { &hf_nds_compare_results,
7821 { "Compare Values Returned", "ncp.nds_compare_results", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7822  
7823 { &hf_nds_parent,
7824 { "Parent ID", "ncp.nds_parent", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7825  
7826 { &hf_nds_name_filter,
7827 { "Name Filter", "ncp.nds_name_filter", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7828  
7829 { &hf_nds_class_filter,
7830 { "Class Filter", "ncp.nds_class_filter", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7831  
7832 { &hf_nds_time_filter,
7833 { "Time Filter", "ncp.nds_time_filter", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7834  
7835 { &hf_nds_partition_root_id,
7836 { "Partition Root ID", "ncp.nds_partition_root_id", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7837  
7838 { &hf_nds_replicas,
7839 { "Replicas", "ncp.nds_replicas", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7840  
7841 { &hf_nds_purge,
7842 { "Purge Time", "ncp.nds_purge", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
7843  
7844 { &hf_nds_local_partition,
7845 { "Local Partition ID", "ncp.nds_local_partition", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7846  
7847 { &hf_partition_busy,
7848 { "Partition Busy", "ncp.nds_partition_busy", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7849  
7850 { &hf_nds_number_of_changes,
7851 { "Number of Attribute Changes", "ncp.nds_number_of_changes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7852  
7853 { &hf_sub_count,
7854 { "Subordinate Count", "ncp.sub_count", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7855  
7856 { &hf_nds_revision,
7857 { "Revision Count", "ncp.nds_rev_count", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7858  
7859 { &hf_nds_base_class,
7860 { "Base Class", "ncp.nds_base_class", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7861  
7862 { &hf_nds_relative_dn,
7863 { "Relative Distinguished Name", "ncp.nds_relative_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7864  
7865 #if 0 /* Unused ? */
7866 { &hf_nds_root_dn,
7867 { "Root Distinguished Name", "ncp.nds_root_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7868 #endif
7869  
7870 #if 0 /* Unused ? */
7871 { &hf_nds_parent_dn,
7872 { "Parent Distinguished Name", "ncp.nds_parent_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7873 #endif
7874  
7875 { &hf_deref_base,
7876 { "Dereference Base Class", "ncp.nds_deref_base", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7877  
7878 { &hf_nds_base,
7879 { "Base Class", "ncp.nds_base", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7880  
7881 { &hf_nds_super,
7882 { "Super Class", "ncp.nds_super", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7883  
7884 #if 0 /* Unused ? */
7885 { &hf_nds_entry_info,
7886 { "Entry Information", "ncp.nds_entry_info", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7887 #endif
7888  
7889 { &hf_nds_privileges,
7890 { "Privileges", "ncp.nds_privileges", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7891  
7892 { &hf_nds_compare_attributes,
7893 { "Compare Attributes?", "ncp.nds_compare_attributes", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7894  
7895 { &hf_nds_read_attribute,
7896 { "Read Attribute?", "ncp.nds_read_attribute", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7897  
7898 { &hf_nds_write_add_delete_attribute,
7899 { "Write, Add, Delete Attribute?", "ncp.nds_write_add_delete_attribute", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7900  
7901 { &hf_nds_add_delete_self,
7902 { "Add/Delete Self?", "ncp.nds_add_delete_self", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7903  
7904 { &hf_nds_privilege_not_defined,
7905 { "Privilege Not defined", "ncp.nds_privilege_not_defined", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7906  
7907 { &hf_nds_supervisor,
7908 { "Supervisor?", "ncp.nds_supervisor", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7909  
7910 { &hf_nds_inheritance_control,
7911 { "Inheritance?", "ncp.nds_inheritance_control", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
7912  
7913 { &hf_nds_browse_entry,
7914 { "Browse Entry?", "ncp.nds_browse_entry", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7915  
7916 { &hf_nds_add_entry,
7917 { "Add Entry?", "ncp.nds_add_entry", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
7918  
7919 { &hf_nds_delete_entry,
7920 { "Delete Entry?", "ncp.nds_delete_entry", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
7921  
7922 { &hf_nds_rename_entry,
7923 { "Rename Entry?", "ncp.nds_rename_entry", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
7924  
7925 { &hf_nds_supervisor_entry,
7926 { "Supervisor?", "ncp.nds_supervisor_entry", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
7927  
7928 { &hf_nds_entry_privilege_not_defined,
7929 { "Privilege Not Defined", "ncp.nds_entry_privilege_not_defined", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
7930  
7931 { &hf_nds_vflags,
7932 { "Value Flags", "ncp.nds_vflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7933  
7934 { &hf_nds_value_len,
7935 { "Value Length", "ncp.nds_vlength", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7936  
7937 { &hf_nds_cflags,
7938 { "Class Flags", "ncp.nds_cflags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7939  
7940 { &hf_nds_asn1,
7941 { "ASN.1 ID", "ncp.nds_asn1", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7942  
7943 { &hf_nds_acflags,
7944 { "Attribute Constraint Flags", "ncp.nds_acflags", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7945  
7946 { &hf_nds_upper,
7947 { "Upper Limit Value", "ncp.nds_upper", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7948  
7949 { &hf_nds_lower,
7950 { "Lower Limit Value", "ncp.nds_lower", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7951  
7952 { &hf_nds_trustee_dn,
7953 { "Trustee Distinguished Name", "ncp.nds_trustee_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7954  
7955 { &hf_nds_attribute_dn,
7956 { "Attribute Name", "ncp.nds_attribute_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7957  
7958 { &hf_nds_acl_add,
7959 { "ACL Templates to Add", "ncp.nds_acl_add", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7960  
7961 { &hf_nds_acl_del,
7962 { "Access Control Lists to Delete", "ncp.nds_acl_del", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7963  
7964 { &hf_nds_att_add,
7965 { "Attribute to Add", "ncp.nds_att_add", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7966  
7967 { &hf_nds_att_del,
7968 { "Attribute Names to Delete", "ncp.nds_att_del", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7969  
7970 { &hf_nds_keep,
7971 { "Delete Original RDN", "ncp.nds_keep", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7972  
7973 { &hf_nds_new_rdn,
7974 { "New Relative Distinguished Name", "ncp.nds_new_rdn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7975  
7976 { &hf_nds_time_delay,
7977 { "Time Delay", "ncp.nds_time_delay", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
7978  
7979 { &hf_nds_root_name,
7980 { "Root Most Object Name", "ncp.nds_root_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7981  
7982 { &hf_nds_new_part_id,
7983 { "New Partition Root ID", "ncp.nds_new_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7984  
7985 { &hf_nds_child_part_id,
7986 { "Child Partition Root ID", "ncp.nds_child_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7987  
7988 { &hf_nds_master_part_id,
7989 { "Master Partition Root ID", "ncp.nds_master_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7990  
7991 { &hf_nds_target_name,
7992 { "Target Server Name", "ncp.nds_target_dn", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
7993  
7994 { &hf_pingflags1,
7995 { "Ping (low) Request Flags", "ncp.pingflags1", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
7996  
7997 { &hf_bit1pingflags1,
7998 { "Supported Fields", "ncp.bit1pingflags1", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
7999  
8000 { &hf_bit2pingflags1,
8001 { "Depth", "ncp.bit2pingflags1", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8002  
8003 { &hf_bit3pingflags1,
8004 { "Build Number", "ncp.bit3pingflags1", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8005  
8006 { &hf_bit4pingflags1,
8007 { "Flags", "ncp.bit4pingflags1", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8008  
8009 { &hf_bit5pingflags1,
8010 { "Verification Flags", "ncp.bit5pingflags1", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8011  
8012 { &hf_bit6pingflags1,
8013 { "Letter Version", "ncp.bit6pingflags1", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8014  
8015 { &hf_bit7pingflags1,
8016 { "OS Version", "ncp.bit7pingflags1", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8017  
8018 { &hf_bit8pingflags1,
8019 { "Not Defined", "ncp.bit8pingflags1", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8020  
8021 { &hf_bit9pingflags1,
8022 { "License Flags", "ncp.bit9pingflags1", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8023  
8024 { &hf_bit10pingflags1,
8025 { "DS Time", "ncp.bit10pingflags1", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8026  
8027 { &hf_bit11pingflags1,
8028 { "Server Time", "ncp.bit11pingflags1", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8029  
8030 { &hf_bit12pingflags1,
8031 { "Create Time", "ncp.bit12pingflags1", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8032  
8033 { &hf_bit13pingflags1,
8034 { "Not Defined", "ncp.bit13pingflags1", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8035  
8036 { &hf_bit14pingflags1,
8037 { "Not Defined", "ncp.bit14pingflags1", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8038  
8039 { &hf_bit15pingflags1,
8040 { "Not Defined", "ncp.bit15pingflags1", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8041  
8042 { &hf_bit16pingflags1,
8043 { "Not Defined", "ncp.bit16pingflags1", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8044  
8045 { &hf_pingflags2,
8046 { "Ping (high) Request Flags", "ncp.pingflags2", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8047  
8048 { &hf_bit1pingflags2,
8049 { "Sap Name", "ncp.bit1pingflags2", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
8050  
8051 { &hf_bit2pingflags2,
8052 { "Tree Name", "ncp.bit2pingflags2", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8053  
8054 { &hf_bit3pingflags2,
8055 { "OS Name", "ncp.bit3pingflags2", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8056  
8057 { &hf_bit4pingflags2,
8058 { "Hardware Name", "ncp.bit4pingflags2", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8059  
8060 { &hf_bit5pingflags2,
8061 { "Vendor Name", "ncp.bit5pingflags2", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8062  
8063 { &hf_bit6pingflags2,
8064 { "Not Defined", "ncp.bit6pingflags2", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8065  
8066 { &hf_bit7pingflags2,
8067 { "Not Defined", "ncp.bit7pingflags2", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8068  
8069 { &hf_bit8pingflags2,
8070 { "Not Defined", "ncp.bit8pingflags2", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8071  
8072 { &hf_bit9pingflags2,
8073 { "Not Defined", "ncp.bit9pingflags2", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8074  
8075 { &hf_bit10pingflags2,
8076 { "Not Defined", "ncp.bit10pingflags2", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8077  
8078 { &hf_bit11pingflags2,
8079 { "Not Defined", "ncp.bit11pingflags2", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8080  
8081 { &hf_bit12pingflags2,
8082 { "Not Defined", "ncp.bit12pingflags2", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8083  
8084 { &hf_bit13pingflags2,
8085 { "Not Defined", "ncp.bit13pingflags2", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8086  
8087 { &hf_bit14pingflags2,
8088 { "Not Defined", "ncp.bit14pingflags2", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8089  
8090 { &hf_bit15pingflags2,
8091 { "Not Defined", "ncp.bit15pingflags2", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8092  
8093 { &hf_bit16pingflags2,
8094 { "Not Defined", "ncp.bit16pingflags2", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8095  
8096 { &hf_pingpflags1,
8097 { "Ping Data Flags", "ncp.pingpflags1", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8098  
8099 { &hf_bit1pingpflags1,
8100 { "Root Most Master Replica", "ncp.bit1pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
8101  
8102 { &hf_bit2pingpflags1,
8103 { "Is Time Synchronized?", "ncp.bit2pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8104  
8105 { &hf_bit3pingpflags1,
8106 { "Is Time Valid?", "ncp.bit3pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8107  
8108 { &hf_bit4pingpflags1,
8109 { "Is DS Time Synchronized?", "ncp.bit4pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8110  
8111 { &hf_bit5pingpflags1,
8112 { "Does Agent Have All Replicas?", "ncp.bit5pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8113  
8114 { &hf_bit6pingpflags1,
8115 { "Not Defined", "ncp.bit6pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8116  
8117 { &hf_bit7pingpflags1,
8118 { "Not Defined", "ncp.bit7pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8119  
8120 { &hf_bit8pingpflags1,
8121 { "Not Defined", "ncp.bit8pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8122  
8123 { &hf_bit9pingpflags1,
8124 { "Not Defined", "ncp.bit9pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8125  
8126 { &hf_bit10pingpflags1,
8127 { "Not Defined", "ncp.bit10pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8128  
8129 { &hf_bit11pingpflags1,
8130 { "Not Defined", "ncp.bit11pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8131  
8132 { &hf_bit12pingpflags1,
8133 { "Not Defined", "ncp.bit12pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8134  
8135 { &hf_bit13pingpflags1,
8136 { "Not Defined", "ncp.bit13pingpflags1", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8137  
8138 { &hf_bit14pingpflags1,
8139 { "Not Defined", "ncp.bit14pingpflags1", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8140  
8141 { &hf_bit15pingpflags1,
8142 { "Not Defined", "ncp.bit15pingpflags1", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8143  
8144 { &hf_bit16pingpflags1,
8145 { "Not Defined", "ncp.bit16pingpflags1", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8146  
8147 { &hf_pingvflags1,
8148 { "Verification Flags", "ncp.pingvflags1", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8149  
8150 { &hf_bit1pingvflags1,
8151 { "Checksum", "ncp.bit1pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
8152  
8153 { &hf_bit2pingvflags1,
8154 { "CRC32", "ncp.bit2pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8155  
8156 { &hf_bit3pingvflags1,
8157 { "Not Defined", "ncp.bit3pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8158  
8159 { &hf_bit4pingvflags1,
8160 { "Not Defined", "ncp.bit4pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8161  
8162 { &hf_bit5pingvflags1,
8163 { "Not Defined", "ncp.bit5pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8164  
8165 { &hf_bit6pingvflags1,
8166 { "Not Defined", "ncp.bit6pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8167  
8168 { &hf_bit7pingvflags1,
8169 { "Not Defined", "ncp.bit7pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8170  
8171 { &hf_bit8pingvflags1,
8172 { "Not Defined", "ncp.bit8pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8173  
8174 { &hf_bit9pingvflags1,
8175 { "Not Defined", "ncp.bit9pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8176  
8177 { &hf_bit10pingvflags1,
8178 { "Not Defined", "ncp.bit10pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8179  
8180 { &hf_bit11pingvflags1,
8181 { "Not Defined", "ncp.bit11pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8182  
8183 { &hf_bit12pingvflags1,
8184 { "Not Defined", "ncp.bit12pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8185  
8186 { &hf_bit13pingvflags1,
8187 { "Not Defined", "ncp.bit13pingvflags1", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8188  
8189 { &hf_bit14pingvflags1,
8190 { "Not Defined", "ncp.bit14pingvflags1", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8191  
8192 { &hf_bit15pingvflags1,
8193 { "Not Defined", "ncp.bit15pingvflags1", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8194  
8195 { &hf_bit16pingvflags1,
8196 { "Not Defined", "ncp.bit16pingvflags1", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8197  
8198 { &hf_nds_letter_ver,
8199 { "Letter Version", "ncp.nds_letter_ver", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8200  
8201 { &hf_nds_os_majver,
8202 { "OS Major Version", "ncp.nds_os_majver", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8203  
8204 { &hf_nds_os_minver,
8205 { "OS Minor Version", "ncp.nds_os_minver", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8206  
8207 { &hf_nds_lic_flags,
8208 { "License Flags", "ncp.nds_lic_flags", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8209  
8210 { &hf_nds_ds_time,
8211 { "DS Time", "ncp.nds_ds_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
8212  
8213 { &hf_nds_svr_time,
8214 { "Server Time", "ncp.nds_svr_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
8215  
8216 { &hf_nds_crt_time,
8217 { "Agent Create Time", "ncp.nds_crt_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
8218  
8219 { &hf_nds_ping_version,
8220 { "Ping Version", "ncp.nds_ping_version", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8221  
8222 { &hf_nds_search_scope,
8223 { "Search Scope", "ncp.nds_search_scope", FT_UINT32, BASE_DEC|BASE_RANGE_STRING, RVALS(nds_search_scope), 0x0, NULL, HFILL }},
8224  
8225 { &hf_nds_num_objects,
8226 { "Number of Objects to Search", "ncp.nds_num_objects", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8227  
8228 { &hf_siflags,
8229 { "Information Types", "ncp.siflags", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8230  
8231 { &hf_bit1siflags,
8232 { "Names", "ncp.bit1siflags", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
8233  
8234 { &hf_bit2siflags,
8235 { "Names and Values", "ncp.bit2siflags", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8236  
8237 { &hf_bit3siflags,
8238 { "Effective Privileges", "ncp.bit3siflags", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8239  
8240 { &hf_bit4siflags,
8241 { "Value Info", "ncp.bit4siflags", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8242  
8243 { &hf_bit5siflags,
8244 { "Abbreviated Value", "ncp.bit5siflags", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8245  
8246 { &hf_bit6siflags,
8247 { "Not Defined", "ncp.bit6siflags", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8248  
8249 { &hf_bit7siflags,
8250 { "Not Defined", "ncp.bit7siflags", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8251  
8252 { &hf_bit8siflags,
8253 { "Not Defined", "ncp.bit8siflags", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8254  
8255 { &hf_bit9siflags,
8256 { "Expanded Class", "ncp.bit9siflags", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8257  
8258 { &hf_bit10siflags,
8259 { "Not Defined", "ncp.bit10siflags", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8260  
8261 { &hf_bit11siflags,
8262 { "Not Defined", "ncp.bit11siflags", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8263  
8264 { &hf_bit12siflags,
8265 { "Not Defined", "ncp.bit12siflags", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8266  
8267 { &hf_bit13siflags,
8268 { "Not Defined", "ncp.bit13siflags", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8269  
8270 { &hf_bit14siflags,
8271 { "Not Defined", "ncp.bit14siflags", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8272  
8273 { &hf_bit15siflags,
8274 { "Not Defined", "ncp.bit15siflags", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8275  
8276 { &hf_bit16siflags,
8277 { "Not Defined", "ncp.bit16siflags", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8278  
8279 { &hf_nds_segment_overlap,
8280 { "Segment overlap", "nds.segment.overlap", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Segment overlaps with other segments", HFILL }},
8281  
8282 { &hf_nds_segment_overlap_conflict,
8283 { "Conflicting data in segment overlap", "nds.segment.overlap.conflict", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Overlapping segments contained conflicting data", HFILL }},
8284  
8285 { &hf_nds_segment_multiple_tails,
8286 { "Multiple tail segments found", "nds.segment.multipletails", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Several tails were found when desegmenting the packet", HFILL }},
8287  
8288 { &hf_nds_segment_too_long_segment,
8289 { "Segment too long", "nds.segment.toolongsegment", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Segment contained data past end of packet", HFILL }},
8290  
8291 { &hf_nds_segment_error,
8292 { "Desegmentation error", "nds.segment.error", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "Desegmentation error due to illegal segments", HFILL }},
8293  
8294 { &hf_nds_segment_count,
8295 { "Segment count", "nds.segment.count", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8296  
8297 { &hf_nds_reassembled_length,
8298 { "Reassembled NDS length", "nds.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0, "The total length of the reassembled payload", HFILL }},
8299  
8300 { &hf_nds_segment,
8301 { "NDS Fragment", "nds.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "NDPS Fragment", HFILL }},
8302  
8303 { &hf_nds_segments,
8304 { "NDS Fragments", "nds.fragments", FT_NONE, BASE_NONE, NULL, 0x0, "NDPS Fragments", HFILL }},
8305  
8306 { &hf_nds_verb2b_req_flags,
8307 { "Flags", "ncp.nds_verb2b_flags", FT_UINT32, BASE_HEX, VALS(nds_verb2b_flag_vals), 0x0, NULL, HFILL }},
8308  
8309 { &hf_ncp_ip_address,
8310 { "IP Address", "ncp.ip_addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8311  
8312 { &hf_ncp_copyright,
8313 { "Copyright", "ncp.copyright", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8314  
8315 { &hf_ndsprot1flag,
8316 { "Not Defined", "ncp.nds_prot_bit1", FT_BOOLEAN, 16, NULL, 0x00000001, NULL, HFILL }},
8317  
8318 { &hf_ndsprot2flag,
8319 { "Not Defined", "ncp.nds_prot_bit2", FT_BOOLEAN, 16, NULL, 0x00000002, NULL, HFILL }},
8320  
8321 { &hf_ndsprot3flag,
8322 { "Not Defined", "ncp.nds_prot_bit3", FT_BOOLEAN, 16, NULL, 0x00000004, NULL, HFILL }},
8323  
8324 { &hf_ndsprot4flag,
8325 { "Not Defined", "ncp.nds_prot_bit4", FT_BOOLEAN, 16, NULL, 0x00000008, NULL, HFILL }},
8326  
8327 { &hf_ndsprot5flag,
8328 { "Not Defined", "ncp.nds_prot_bit5", FT_BOOLEAN, 16, NULL, 0x00000010, NULL, HFILL }},
8329  
8330 { &hf_ndsprot6flag,
8331 { "Not Defined", "ncp.nds_prot_bit6", FT_BOOLEAN, 16, NULL, 0x00000020, NULL, HFILL }},
8332  
8333 { &hf_ndsprot7flag,
8334 { "Not Defined", "ncp.nds_prot_bit7", FT_BOOLEAN, 16, NULL, 0x00000040, NULL, HFILL }},
8335  
8336 { &hf_ndsprot8flag,
8337 { "Not Defined", "ncp.nds_prot_bit8", FT_BOOLEAN, 16, NULL, 0x00000080, NULL, HFILL }},
8338  
8339 { &hf_ndsprot9flag,
8340 { "Not Defined", "ncp.nds_prot_bit9", FT_BOOLEAN, 16, NULL, 0x00000100, NULL, HFILL }},
8341  
8342 { &hf_ndsprot10flag,
8343 { "Not Defined", "ncp.nds_prot_bit10", FT_BOOLEAN, 16, NULL, 0x00000200, NULL, HFILL }},
8344  
8345 { &hf_ndsprot11flag,
8346 { "Not Defined", "ncp.nds_prot_bit11", FT_BOOLEAN, 16, NULL, 0x00000400, NULL, HFILL }},
8347  
8348 { &hf_ndsprot12flag,
8349 { "Not Defined", "ncp.nds_prot_bit12", FT_BOOLEAN, 16, NULL, 0x00000800, NULL, HFILL }},
8350  
8351 { &hf_ndsprot13flag,
8352 { "Not Defined", "ncp.nds_prot_bit13", FT_BOOLEAN, 16, NULL, 0x00001000, NULL, HFILL }},
8353  
8354 { &hf_ndsprot14flag,
8355 { "Not Defined", "ncp.nds_prot_bit14", FT_BOOLEAN, 16, NULL, 0x00002000, NULL, HFILL }},
8356  
8357 { &hf_ndsprot15flag,
8358 { "Include CRC in NDS Header", "ncp.nds_prot_bit15", FT_BOOLEAN, 16, NULL, 0x00004000, NULL, HFILL }},
8359  
8360 { &hf_ndsprot16flag,
8361 { "Client is a Server", "ncp.nds_prot_bit16", FT_BOOLEAN, 16, NULL, 0x00008000, NULL, HFILL }},
8362  
8363 { &hf_nds_svr_dst_name,
8364 { "Server Distinguished Name", "ncp.nds_svr_dist_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8365  
8366 { &hf_nds_tune_mark,
8367 { "Tune Mark", "ncp.ndstunemark", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8368  
8369 #if 0 /* Unused ? */
8370 { &hf_nds_create_time,
8371 { "NDS Creation Time", "ncp.ndscreatetime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
8372 #endif
8373  
8374 { &hf_srvr_param_string,
8375 { "Set Parameter Value", "ncp.srvr_param_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8376  
8377 { &hf_srvr_param_number,
8378 { "Set Parameter Value", "ncp.srvr_param_number", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8379  
8380 { &hf_srvr_param_boolean,
8381 { "Set Parameter Value", "ncp.srvr_param_boolean", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8382  
8383 { &hf_nds_number_of_items,
8384 { "Number of Items", "ncp.ndsitems", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8385  
8386 { &hf_ncp_nds_iterverb,
8387 { "NDS Iteration Verb", "ncp.ndsiterverb", FT_UINT32, BASE_DEC_HEX, VALS(iterator_subverbs), 0x0, NULL, HFILL }},
8388  
8389 { &hf_iter_completion_code,
8390 { "Iteration Completion Code", "ncp.iter_completion_code", FT_UINT32, BASE_HEX, VALS(nds_reply_errors), 0x0, NULL, HFILL }},
8391  
8392 #if 0 /* Unused ? */
8393 { &hf_nds_iterobj,
8394 { "Iterator Object", "ncp.ndsiterobj", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8395 #endif
8396  
8397 { &hf_iter_verb_completion_code,
8398 { "Completion Code", "ncp.iter_verb_completion_code", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8399  
8400 { &hf_iter_ans,
8401 { "Iterator Answer", "ncp.iter_answer", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8402  
8403 { &hf_positionable,
8404 { "Positionable", "ncp.iterpositionable", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8405  
8406 { &hf_num_skipped,
8407 { "Number Skipped", "ncp.iternumskipped", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8408  
8409 { &hf_num_to_skip,
8410 { "Number to Skip", "ncp.iternumtoskip", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8411  
8412 { &hf_timelimit,
8413 { "Time Limit", "ncp.itertimelimit", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8414  
8415 { &hf_iter_index,
8416 { "Iterator Index", "ncp.iterindex", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8417  
8418 { &hf_num_to_get,
8419 { "Number to Get", "ncp.iternumtoget", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8420  
8421 #if 0 /* Unused ? */
8422 { &hf_ret_info_type,
8423 { "Return Information Type", "ncp.iterretinfotype", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8424 #endif
8425  
8426 { &hf_data_size,
8427 { "Data Size", "ncp.iterdatasize", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8428  
8429 { &hf_this_count,
8430 { "Number of Items", "ncp.itercount", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8431  
8432 { &hf_max_entries,
8433 { "Maximum Entries", "ncp.itermaxentries", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8434  
8435 { &hf_move_position,
8436 { "Move Position", "ncp.itermoveposition", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8437  
8438 { &hf_iter_copy,
8439 { "Iterator Copy", "ncp.itercopy", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8440  
8441 { &hf_iter_position,
8442 { "Iteration Position", "ncp.iterposition", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8443  
8444 { &hf_iter_search,
8445 { "Search Filter", "ncp.iter_search", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8446  
8447 { &hf_iter_other,
8448 { "Other Iteration", "ncp.iterother", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8449  
8450 { &hf_nds_oid,
8451 { "Object ID", "ncp.nds_oid", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8452  
8453 { &hf_ncp_bytes_actually_trans_64,
8454 { "Bytes Actually Transferred", "ncp.bytes_actually_trans_64", FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }},
8455  
8456 { &hf_sap_name,
8457 { "SAP Name", "ncp.sap_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8458  
8459 { &hf_os_name,
8460 { "OS Name", "ncp.os_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8461  
8462 { &hf_vendor_name,
8463 { "Vendor Name", "ncp.vendor_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8464  
8465 { &hf_hardware_name,
8466 { "Hardware Name", "ncp.harware_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8467  
8468 { &hf_no_request_record_found,
8469 { "No request record found. Parsing is impossible.", "ncp.no_request_record_found", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8470  
8471 { &hf_search_modifier,
8472 { "Search Modifier", "ncp.search_modifier", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
8473  
8474 { &hf_search_pattern,
8475 { "Search Pattern", "ncp.search_pattern", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
8476  
8477 """)
8478 # Print the registration code for the hf variables
8479 for var in sorted_vars:
8480 print(" { &%s," % (var.HFName()))
8481 print(" { \"%s\", \"%s\", %s, %s, %s, 0x%x, NULL, HFILL }},\n" % \
8482 (var.Description(), var.DFilter(),
8483 var.WiresharkFType(), var.Display(), var.ValuesName(),
8484 var.Mask()))
8485  
8486 print(" };\n")
8487  
8488 if ett_list:
8489 print(" static gint *ett[] = {")
8490  
8491 for ett in ett_list:
8492 print(" &%s," % (ett,))
8493  
8494 print(" };\n")
8495  
8496 print("""
8497 static ei_register_info ei[] = {
8498 { &ei_ncp_file_handle, { "ncp.file_handle.expert", PI_REQUEST_CODE, PI_CHAT, "Close file handle", EXPFILL }},
8499 { &ei_ncp_file_rights, { "ncp.file_rights", PI_REQUEST_CODE, PI_CHAT, "File rights", EXPFILL }},
8500 { &ei_ncp_op_lock_handle, { "ncp.op_lock_handle", PI_REQUEST_CODE, PI_CHAT, "Op-lock on handle", EXPFILL }},
8501 { &ei_ncp_file_rights_change, { "ncp.file_rights.change", PI_REQUEST_CODE, PI_CHAT, "Change handle rights", EXPFILL }},
8502 { &ei_ncp_effective_rights, { "ncp.effective_rights.expert", PI_RESPONSE_CODE, PI_CHAT, "Handle effective rights", EXPFILL }},
8503 { &ei_ncp_server, { "ncp.server", PI_RESPONSE_CODE, PI_CHAT, "Server info", EXPFILL }},
8504 { &ei_iter_verb_completion_code, { "ncp.iter_verb_completion_code.expert", PI_RESPONSE_CODE, PI_ERROR, "Iteration Verb Error", EXPFILL }},
8505 { &ei_ncp_connection_request, { "ncp.connection_request", PI_RESPONSE_CODE, PI_CHAT, "Connection Request", EXPFILL }},
8506 { &ei_ncp_destroy_connection, { "ncp.destroy_connection", PI_RESPONSE_CODE, PI_CHAT, "Destroy Connection Request", EXPFILL }},
8507 { &ei_nds_reply_error, { "ncp.ndsreplyerror.expert", PI_RESPONSE_CODE, PI_ERROR, "NDS Error", EXPFILL }},
8508 { &ei_nds_iteration, { "ncp.nds_iteration.error", PI_RESPONSE_CODE, PI_ERROR, "NDS Iteration Error", EXPFILL }},
8509 { &ei_ncp_eid, { "ncp.eid", PI_RESPONSE_CODE, PI_CHAT, "EID", EXPFILL }},
8510 { &ei_ncp_completion_code, { "ncp.completion_code.expert", PI_RESPONSE_CODE, PI_ERROR, "Code Completion Error", EXPFILL }},
8511 { &ei_ncp_connection_status, { "ncp.connection_status.bad", PI_RESPONSE_CODE, PI_ERROR, "Error: Bad Connection Status", EXPFILL }},
8512 { &ei_ncp_connection_destroyed, { "ncp.connection_destroyed", PI_RESPONSE_CODE, PI_CHAT, "Connection Destroyed", EXPFILL }},
8513 { &ei_ncp_no_request_record_found, { "ncp.no_request_record_found", PI_SEQUENCE, PI_NOTE, "No request record found.", EXPFILL }},
8514 { &ei_ncp_invalid_offset, { "ncp.invalid_offset", PI_MALFORMED, PI_ERROR, "Invalid offset", EXPFILL }},
8515 { &ei_ncp_address_type, { "ncp.address_type.unknown", PI_PROTOCOL, PI_WARN, "Unknown Address Type", EXPFILL }},
8516 };
8517  
8518 expert_module_t* expert_ncp;
8519  
8520 proto_register_field_array(proto_ncp, hf, array_length(hf));""")
8521  
8522 if ett_list:
8523 print("""
8524 proto_register_subtree_array(ett, array_length(ett));""")
8525  
8526 print("""
8527 expert_ncp = expert_register_protocol(proto_ncp);
8528 expert_register_field_array(expert_ncp, ei, array_length(ei));
8529 register_init_routine(&ncp_init_protocol);
8530 register_postseq_cleanup_routine(&ncp_postseq_cleanup);""")
8531  
8532 # End of proto_register_ncp2222()
8533 print("}")
8534  
8535 def usage():
8536 print("Usage: ncp2222.py -o output_file")
8537 sys.exit(1)
8538  
8539 def main():
8540 global compcode_lists
8541 global ptvc_lists
8542 global msg
8543  
8544 optstring = "o:"
8545 out_filename = None
8546  
8547 try:
8548 opts, args = getopt.getopt(sys.argv[1:], optstring)
8549 except getopt.error:
8550 usage()
8551  
8552 for opt, arg in opts:
8553 if opt == "-o":
8554 out_filename = arg
8555 else:
8556 usage()
8557  
8558 if len(args) != 0:
8559 usage()
8560  
8561 if not out_filename:
8562 usage()
8563  
8564 # Create the output file
8565 try:
8566 out_file = open(out_filename, "w")
8567 except IOError:
8568 sys.exit("Could not open %s for writing: %s" % (out_filename,
8569 IOError))
8570  
8571 # Set msg to current stdout
8572 msg = sys.stdout
8573  
8574 # Set stdout to the output file
8575 sys.stdout = out_file
8576  
8577 msg.write("Processing NCP definitions...\n")
8578 # Run the code, and if we catch any exception,
8579 # erase the output file.
8580 try:
8581 compcode_lists = UniqueCollection('Completion Code Lists')
8582 ptvc_lists = UniqueCollection('PTVC Lists')
8583  
8584 define_errors()
8585 define_groups()
8586  
8587 define_ncp2222()
8588  
8589 msg.write("Defined %d NCP types.\n" % (len(packets),))
8590 produce_code()
8591 except:
8592 traceback.print_exc(20, msg)
8593 try:
8594 out_file.close()
8595 except IOError:
8596 msg.write("Could not close %s: %s\n" % (out_filename, IOError))
8597  
8598 try:
8599 if os.path.exists(out_filename):
8600 os.remove(out_filename)
8601 except OSError:
8602 msg.write("Could not remove %s: %s\n" % (out_filename, OSError))
8603  
8604 sys.exit(1)
8605  
8606  
8607  
8608 def define_ncp2222():
8609 ##############################################################################
8610 # NCP Packets. Here I list functions and subfunctions in hexadecimal like the
8611 # NCP book (and I believe LanAlyzer does this too).
8612 # However, Novell lists these in decimal in their on-line documentation.
8613 ##############################################################################
8614 # 2222/01
8615 pkt = NCP(0x01, "File Set Lock", 'sync')
8616 pkt.Request(7)
8617 pkt.Reply(8)
8618 pkt.CompletionCodes([0x0000])
8619 # 2222/02
8620 pkt = NCP(0x02, "File Release Lock", 'sync')
8621 pkt.Request(7)
8622 pkt.Reply(8)
8623 pkt.CompletionCodes([0x0000, 0xff00])
8624 # 2222/03
8625 pkt = NCP(0x03, "Log File Exclusive", 'sync')
8626 pkt.Request( (12, 267), [
8627 rec( 7, 1, DirHandle ),
8628 rec( 8, 1, LockFlag ),
8629 rec( 9, 2, TimeoutLimit, ENC_BIG_ENDIAN ),
8630 rec( 11, (1, 256), FilePath ),
8631 ])
8632 pkt.Reply(8)
8633 pkt.CompletionCodes([0x0000, 0x8200, 0x9600, 0xfe0d, 0xff01])
8634 # 2222/04
8635 pkt = NCP(0x04, "Lock File Set", 'sync')
8636 pkt.Request( 9, [
8637 rec( 7, 2, TimeoutLimit ),
8638 ])
8639 pkt.Reply(8)
8640 pkt.CompletionCodes([0x0000, 0xfe0d, 0xff01])
8641 ## 2222/05
8642 pkt = NCP(0x05, "Release File", 'sync')
8643 pkt.Request( (9, 264), [
8644 rec( 7, 1, DirHandle ),
8645 rec( 8, (1, 256), FilePath ),
8646 ])
8647 pkt.Reply(8)
8648 pkt.CompletionCodes([0x0000, 0x9b00, 0x9c03, 0xff1a])
8649 # 2222/06
8650 pkt = NCP(0x06, "Release File Set", 'sync')
8651 pkt.Request( 8, [
8652 rec( 7, 1, LockFlag ),
8653 ])
8654 pkt.Reply(8)
8655 pkt.CompletionCodes([0x0000])
8656 # 2222/07
8657 pkt = NCP(0x07, "Clear File", 'sync')
8658 pkt.Request( (9, 264), [
8659 rec( 7, 1, DirHandle ),
8660 rec( 8, (1, 256), FilePath ),
8661 ])
8662 pkt.Reply(8)
8663 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03,
8664 0xa100, 0xfd00, 0xff1a])
8665 # 2222/08
8666 pkt = NCP(0x08, "Clear File Set", 'sync')
8667 pkt.Request( 8, [
8668 rec( 7, 1, LockFlag ),
8669 ])
8670 pkt.Reply(8)
8671 pkt.CompletionCodes([0x0000])
8672 # 2222/09
8673 pkt = NCP(0x09, "Log Logical Record", 'sync')
8674 pkt.Request( (11, 138), [
8675 rec( 7, 1, LockFlag ),
8676 rec( 8, 2, TimeoutLimit, ENC_BIG_ENDIAN ),
8677 rec( 10, (1, 128), LogicalRecordName, info_str=(LogicalRecordName, "Log Logical Record: %s", ", %s")),
8678 ])
8679 pkt.Reply(8)
8680 pkt.CompletionCodes([0x0000, 0x9600, 0xfe0d, 0xff1a])
8681 # 2222/0A, 10
8682 pkt = NCP(0x0A, "Lock Logical Record Set", 'sync')
8683 pkt.Request( 10, [
8684 rec( 7, 1, LockFlag ),
8685 rec( 8, 2, TimeoutLimit ),
8686 ])
8687 pkt.Reply(8)
8688 pkt.CompletionCodes([0x0000, 0xfe0d, 0xff1a])
8689 # 2222/0B, 11
8690 pkt = NCP(0x0B, "Clear Logical Record", 'sync')
8691 pkt.Request( (8, 135), [
8692 rec( 7, (1, 128), LogicalRecordName, info_str=(LogicalRecordName, "Clear Logical Record: %s", ", %s") ),
8693 ])
8694 pkt.Reply(8)
8695 pkt.CompletionCodes([0x0000, 0xff1a])
8696 # 2222/0C, 12
8697 pkt = NCP(0x0C, "Release Logical Record", 'sync')
8698 pkt.Request( (8, 135), [
8699 rec( 7, (1, 128), LogicalRecordName, info_str=(LogicalRecordName, "Release Logical Record: %s", ", %s") ),
8700 ])
8701 pkt.Reply(8)
8702 pkt.CompletionCodes([0x0000, 0xff1a])
8703 # 2222/0D, 13
8704 pkt = NCP(0x0D, "Release Logical Record Set", 'sync')
8705 pkt.Request( 8, [
8706 rec( 7, 1, LockFlag ),
8707 ])
8708 pkt.Reply(8)
8709 pkt.CompletionCodes([0x0000])
8710 # 2222/0E, 14
8711 pkt = NCP(0x0E, "Clear Logical Record Set", 'sync')
8712 pkt.Request( 8, [
8713 rec( 7, 1, LockFlag ),
8714 ])
8715 pkt.Reply(8)
8716 pkt.CompletionCodes([0x0000])
8717 # 2222/1100, 17/00
8718 pkt = NCP(0x1100, "Write to Spool File", 'print')
8719 pkt.Request( (11, 16), [
8720 rec( 10, ( 1, 6 ), Data, info_str=(Data, "Write to Spool File: %s", ", %s") ),
8721 ])
8722 pkt.Reply(8)
8723 pkt.CompletionCodes([0x0000, 0x0104, 0x8000, 0x8101, 0x8701, 0x8800,
8724 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9400, 0x9500,
8725 0x9600, 0x9804, 0x9900, 0xa100, 0xa201, 0xff19])
8726 # 2222/1101, 17/01
8727 pkt = NCP(0x1101, "Close Spool File", 'print')
8728 pkt.Request( 11, [
8729 rec( 10, 1, AbortQueueFlag ),
8730 ])
8731 pkt.Reply(8)
8732 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8701, 0x8800, 0x8d00,
8733 0x8e00, 0x8f00, 0x9001, 0x9300, 0x9400, 0x9500,
8734 0x9600, 0x9804, 0x9900, 0x9b03, 0x9c03, 0x9d00,
8735 0xa100, 0xd000, 0xd100, 0xd202, 0xd300, 0xd400,
8736 0xda01, 0xe800, 0xea00, 0xeb00, 0xec00, 0xfc06,
8737 0xfd00, 0xfe07, 0xff06])
8738 # 2222/1102, 17/02
8739 pkt = NCP(0x1102, "Set Spool File Flags", 'print')
8740 pkt.Request( 30, [
8741 rec( 10, 1, PrintFlags ),
8742 rec( 11, 1, TabSize ),
8743 rec( 12, 1, TargetPrinter ),
8744 rec( 13, 1, Copies ),
8745 rec( 14, 1, FormType ),
8746 rec( 15, 1, Reserved ),
8747 rec( 16, 14, BannerName ),
8748 ])
8749 pkt.Reply(8)
8750 pkt.CompletionCodes([0x0000, 0x9600, 0xd202, 0xd300, 0xe800, 0xea00,
8751 0xeb00, 0xec00, 0xfc06, 0xfe07, 0xff06])
8752  
8753 # 2222/1103, 17/03
8754 pkt = NCP(0x1103, "Spool A Disk File", 'print')
8755 pkt.Request( (12, 23), [
8756 rec( 10, 1, DirHandle ),
8757 rec( 11, (1, 12), Data, info_str=(Data, "Spool a Disk File: %s", ", %s") ),
8758 ])
8759 pkt.Reply(8)
8760 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8701, 0x8800, 0x8d00,
8761 0x8e00, 0x8f00, 0x9001, 0x9300, 0x9400, 0x9500,
8762 0x9600, 0x9804, 0x9900, 0x9b03, 0x9c03, 0x9d00,
8763 0xa100, 0xd000, 0xd100, 0xd202, 0xd300, 0xd400,
8764 0xda01, 0xe800, 0xea00, 0xeb00, 0xec00, 0xfc06,
8765 0xfd00, 0xfe07, 0xff06])
8766  
8767 # 2222/1106, 17/06
8768 pkt = NCP(0x1106, "Get Printer Status", 'print')
8769 pkt.Request( 11, [
8770 rec( 10, 1, TargetPrinter ),
8771 ])
8772 pkt.Reply(12, [
8773 rec( 8, 1, PrinterHalted ),
8774 rec( 9, 1, PrinterOffLine ),
8775 rec( 10, 1, CurrentFormType ),
8776 rec( 11, 1, RedirectedPrinter ),
8777 ])
8778 pkt.CompletionCodes([0x0000, 0x9600, 0xfb05, 0xfd00, 0xff06])
8779  
8780 # 2222/1109, 17/09
8781 pkt = NCP(0x1109, "Create Spool File", 'print')
8782 pkt.Request( (12, 23), [
8783 rec( 10, 1, DirHandle ),
8784 rec( 11, (1, 12), Data, info_str=(Data, "Create Spool File: %s", ", %s") ),
8785 ])
8786 pkt.Reply(8)
8787 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8400, 0x8701, 0x8d00,
8788 0x8f00, 0x9001, 0x9400, 0x9600, 0x9804, 0x9900,
8789 0x9b03, 0x9c03, 0xa100, 0xd000, 0xd100, 0xd202,
8790 0xd300, 0xd400, 0xda01, 0xe800, 0xea00, 0xeb00,
8791 0xec00, 0xfc06, 0xfd00, 0xfe07, 0xff06])
8792  
8793 # 2222/110A, 17/10
8794 pkt = NCP(0x110A, "Get Printer's Queue", 'print')
8795 pkt.Request( 11, [
8796 rec( 10, 1, TargetPrinter ),
8797 ])
8798 pkt.Reply( 12, [
8799 rec( 8, 4, ObjectID, ENC_BIG_ENDIAN ),
8800 ])
8801 pkt.CompletionCodes([0x0000, 0x9600, 0xff06])
8802  
8803 # 2222/12, 18
8804 pkt = NCP(0x12, "Get Volume Info with Number", 'file')
8805 pkt.Request( 8, [
8806 rec( 7, 1, VolumeNumber,info_str=(VolumeNumber, "Get Volume Information for Volume %d", ", %d") )
8807 ])
8808 pkt.Reply( 36, [
8809 rec( 8, 2, SectorsPerCluster, ENC_BIG_ENDIAN ),
8810 rec( 10, 2, TotalVolumeClusters, ENC_BIG_ENDIAN ),
8811 rec( 12, 2, AvailableClusters, ENC_BIG_ENDIAN ),
8812 rec( 14, 2, TotalDirectorySlots, ENC_BIG_ENDIAN ),
8813 rec( 16, 2, AvailableDirectorySlots, ENC_BIG_ENDIAN ),
8814 rec( 18, 16, VolumeName ),
8815 rec( 34, 2, RemovableFlag, ENC_BIG_ENDIAN ),
8816 ])
8817 pkt.CompletionCodes([0x0000, 0x9804])
8818  
8819 # 2222/13, 19
8820 pkt = NCP(0x13, "Get Station Number", 'connection')
8821 pkt.Request(7)
8822 pkt.Reply(11, [
8823 rec( 8, 3, StationNumber )
8824 ])
8825 pkt.CompletionCodes([0x0000, 0xff00])
8826  
8827 # 2222/14, 20
8828 pkt = NCP(0x14, "Get File Server Date And Time", 'fileserver')
8829 pkt.Request(7)
8830 pkt.Reply(15, [
8831 rec( 8, 1, Year ),
8832 rec( 9, 1, Month ),
8833 rec( 10, 1, Day ),
8834 rec( 11, 1, Hour ),
8835 rec( 12, 1, Minute ),
8836 rec( 13, 1, Second ),
8837 rec( 14, 1, DayOfWeek ),
8838 ])
8839 pkt.CompletionCodes([0x0000])
8840  
8841 # 2222/1500, 21/00
8842 pkt = NCP(0x1500, "Send Broadcast Message", 'message')
8843 pkt.Request((13, 70), [
8844 rec( 10, 1, ClientListLen, var="x" ),
8845 rec( 11, 1, TargetClientList, repeat="x" ),
8846 rec( 12, (1, 58), TargetMessage, info_str=(TargetMessage, "Send Broadcast Message: %s", ", %s") ),
8847 ])
8848 pkt.Reply(10, [
8849 rec( 8, 1, ClientListLen, var="x" ),
8850 rec( 9, 1, SendStatus, repeat="x" )
8851 ])
8852 pkt.CompletionCodes([0x0000, 0xfd00])
8853  
8854 # 2222/1501, 21/01
8855 pkt = NCP(0x1501, "Get Broadcast Message", 'message')
8856 pkt.Request(10)
8857 pkt.Reply((9,66), [
8858 rec( 8, (1, 58), TargetMessage )
8859 ])
8860 pkt.CompletionCodes([0x0000, 0xfd00])
8861  
8862 # 2222/1502, 21/02
8863 pkt = NCP(0x1502, "Disable Broadcasts", 'message')
8864 pkt.Request(10)
8865 pkt.Reply(8)
8866 pkt.CompletionCodes([0x0000, 0xfb0a])
8867  
8868 # 2222/1503, 21/03
8869 pkt = NCP(0x1503, "Enable Broadcasts", 'message')
8870 pkt.Request(10)
8871 pkt.Reply(8)
8872 pkt.CompletionCodes([0x0000])
8873  
8874 # 2222/1509, 21/09
8875 pkt = NCP(0x1509, "Broadcast To Console", 'message')
8876 pkt.Request((11, 68), [
8877 rec( 10, (1, 58), TargetMessage, info_str=(TargetMessage, "Broadcast to Console: %s", ", %s") )
8878 ])
8879 pkt.Reply(8)
8880 pkt.CompletionCodes([0x0000])
8881  
8882 # 2222/150A, 21/10
8883 pkt = NCP(0x150A, "Send Broadcast Message", 'message')
8884 pkt.Request((17, 74), [
8885 rec( 10, 2, ClientListCount, ENC_LITTLE_ENDIAN, var="x" ),
8886 rec( 12, 4, ClientList, ENC_LITTLE_ENDIAN, repeat="x" ),
8887 rec( 16, (1, 58), TargetMessage, info_str=(TargetMessage, "Send Broadcast Message: %s", ", %s") ),
8888 ])
8889 pkt.Reply(14, [
8890 rec( 8, 2, ClientListCount, ENC_LITTLE_ENDIAN, var="x" ),
8891 rec( 10, 4, ClientCompFlag, ENC_LITTLE_ENDIAN, repeat="x" ),
8892 ])
8893 pkt.CompletionCodes([0x0000, 0xfd00])
8894  
8895 # 2222/150B, 21/11
8896 pkt = NCP(0x150B, "Get Broadcast Message", 'message')
8897 pkt.Request(10)
8898 pkt.Reply((9,66), [
8899 rec( 8, (1, 58), TargetMessage )
8900 ])
8901 pkt.CompletionCodes([0x0000, 0xfd00])
8902  
8903 # 2222/150C, 21/12
8904 pkt = NCP(0x150C, "Connection Message Control", 'message')
8905 pkt.Request(22, [
8906 rec( 10, 1, ConnectionControlBits ),
8907 rec( 11, 3, Reserved3 ),
8908 rec( 14, 4, ConnectionListCount, ENC_LITTLE_ENDIAN, var="x" ),
8909 rec( 18, 4, ConnectionList, ENC_LITTLE_ENDIAN, repeat="x" ),
8910 ])
8911 pkt.Reply(8)
8912 pkt.CompletionCodes([0x0000, 0xff00])
8913  
8914 # 2222/1600, 22/0
8915 pkt = NCP(0x1600, "Set Directory Handle", 'file')
8916 pkt.Request((13,267), [
8917 rec( 10, 1, TargetDirHandle ),
8918 rec( 11, 1, DirHandle ),
8919 rec( 12, (1, 255), Path, info_str=(Path, "Set Directory Handle to: %s", ", %s") ),
8920 ])
8921 pkt.Reply(8)
8922 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfa00,
8923 0xfd00, 0xff00])
8924  
8925  
8926 # 2222/1601, 22/1
8927 pkt = NCP(0x1601, "Get Directory Path", 'file')
8928 pkt.Request(11, [
8929 rec( 10, 1, DirHandle,info_str=(DirHandle, "Get Directory Path for Directory Handle %d", ", %d") ),
8930 ])
8931 pkt.Reply((9,263), [
8932 rec( 8, (1,255), Path ),
8933 ])
8934 pkt.CompletionCodes([0x0000, 0x9600, 0x9b00, 0x9c00, 0xa100])
8935  
8936 # 2222/1602, 22/2
8937 pkt = NCP(0x1602, "Scan Directory Information", 'file')
8938 pkt.Request((14,268), [
8939 rec( 10, 1, DirHandle ),
8940 rec( 11, 2, StartingSearchNumber, ENC_BIG_ENDIAN ),
8941 rec( 13, (1, 255), Path, info_str=(Path, "Scan Directory Information: %s", ", %s") ),
8942 ])
8943 pkt.Reply(36, [
8944 rec( 8, 16, DirectoryPath ),
8945 rec( 24, 2, CreationDate, ENC_BIG_ENDIAN ),
8946 rec( 26, 2, CreationTime, ENC_BIG_ENDIAN ),
8947 rec( 28, 4, CreatorID, ENC_BIG_ENDIAN ),
8948 rec( 32, 1, AccessRightsMask ),
8949 rec( 33, 1, Reserved ),
8950 rec( 34, 2, NextSearchNumber, ENC_BIG_ENDIAN ),
8951 ])
8952 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfa00,
8953 0xfd00, 0xff00])
8954  
8955 # 2222/1603, 22/3
8956 pkt = NCP(0x1603, "Get Effective Directory Rights", 'file')
8957 pkt.Request((12,266), [
8958 rec( 10, 1, DirHandle ),
8959 rec( 11, (1, 255), Path, info_str=(Path, "Get Effective Directory Rights: %s", ", %s") ),
8960 ])
8961 pkt.Reply(9, [
8962 rec( 8, 1, AccessRightsMask ),
8963 ])
8964 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfa00,
8965 0xfd00, 0xff00])
8966  
8967 # 2222/1604, 22/4
8968 pkt = NCP(0x1604, "Modify Maximum Rights Mask", 'file')
8969 pkt.Request((14,268), [
8970 rec( 10, 1, DirHandle ),
8971 rec( 11, 1, RightsGrantMask ),
8972 rec( 12, 1, RightsRevokeMask ),
8973 rec( 13, (1, 255), Path, info_str=(Path, "Modify Maximum Rights Mask: %s", ", %s") ),
8974 ])
8975 pkt.Reply(8)
8976 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfa00,
8977 0xfd00, 0xff00])
8978  
8979 # 2222/1605, 22/5
8980 pkt = NCP(0x1605, "Get Volume Number", 'file')
8981 pkt.Request((11, 265), [
8982 rec( 10, (1,255), VolumeNameLen, info_str=(VolumeNameLen, "Get Volume Number for: %s", ", %s") ),
8983 ])
8984 pkt.Reply(9, [
8985 rec( 8, 1, VolumeNumber ),
8986 ])
8987 pkt.CompletionCodes([0x0000, 0x9600, 0x9804])
8988  
8989 # 2222/1606, 22/6
8990 pkt = NCP(0x1606, "Get Volume Name", 'file')
8991 pkt.Request(11, [
8992 rec( 10, 1, VolumeNumber,info_str=(VolumeNumber, "Get Name for Volume %d", ", %d") ),
8993 ])
8994 pkt.Reply((9, 263), [
8995 rec( 8, (1,255), VolumeNameLen ),
8996 ])
8997 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0xff00])
8998  
8999 # 2222/160A, 22/10
9000 pkt = NCP(0x160A, "Create Directory", 'file')
9001 pkt.Request((13,267), [
9002 rec( 10, 1, DirHandle ),
9003 rec( 11, 1, AccessRightsMask ),
9004 rec( 12, (1, 255), Path, info_str=(Path, "Create Directory: %s", ", %s") ),
9005 ])
9006 pkt.Reply(8)
9007 pkt.CompletionCodes([0x0000, 0x8400, 0x9600, 0x9804, 0x9900, 0x9b03, 0x9c03,
9008 0x9e00, 0xa100, 0xfd00, 0xff00])
9009  
9010 # 2222/160B, 22/11
9011 pkt = NCP(0x160B, "Delete Directory", 'file')
9012 pkt.Request((13,267), [
9013 rec( 10, 1, DirHandle ),
9014 rec( 11, 1, Reserved ),
9015 rec( 12, (1, 255), Path, info_str=(Path, "Delete Directory: %s", ", %s") ),
9016 ])
9017 pkt.Reply(8)
9018 pkt.CompletionCodes([0x0000, 0x8a00, 0x9600, 0x9804, 0x9b03, 0x9c03,
9019 0x9f00, 0xa000, 0xa100, 0xfd00, 0xff00])
9020  
9021 # 2222/160C, 22/12
9022 pkt = NCP(0x160C, "Scan Directory for Trustees", 'file')
9023 pkt.Request((13,267), [
9024 rec( 10, 1, DirHandle ),
9025 rec( 11, 1, TrusteeSetNumber ),
9026 rec( 12, (1, 255), Path, info_str=(Path, "Scan Directory for Trustees: %s", ", %s") ),
9027 ])
9028 pkt.Reply(57, [
9029 rec( 8, 16, DirectoryPath ),
9030 rec( 24, 2, CreationDate, ENC_BIG_ENDIAN ),
9031 rec( 26, 2, CreationTime, ENC_BIG_ENDIAN ),
9032 rec( 28, 4, CreatorID ),
9033 rec( 32, 4, TrusteeID, ENC_BIG_ENDIAN ),
9034 rec( 36, 4, TrusteeID, ENC_BIG_ENDIAN ),
9035 rec( 40, 4, TrusteeID, ENC_BIG_ENDIAN ),
9036 rec( 44, 4, TrusteeID, ENC_BIG_ENDIAN ),
9037 rec( 48, 4, TrusteeID, ENC_BIG_ENDIAN ),
9038 rec( 52, 1, AccessRightsMask ),
9039 rec( 53, 1, AccessRightsMask ),
9040 rec( 54, 1, AccessRightsMask ),
9041 rec( 55, 1, AccessRightsMask ),
9042 rec( 56, 1, AccessRightsMask ),
9043 ])
9044 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9804, 0x9b03, 0x9c03,
9045 0xa100, 0xfd00, 0xff00])
9046  
9047 # 2222/160D, 22/13
9048 pkt = NCP(0x160D, "Add Trustee to Directory", 'file')
9049 pkt.Request((17,271), [
9050 rec( 10, 1, DirHandle ),
9051 rec( 11, 4, TrusteeID, ENC_BIG_ENDIAN ),
9052 rec( 15, 1, AccessRightsMask ),
9053 rec( 16, (1, 255), Path, info_str=(Path, "Add Trustee to Directory: %s", ", %s") ),
9054 ])
9055 pkt.Reply(8)
9056 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9804, 0x9900, 0x9b03, 0x9c03,
9057 0xa100, 0xfc06, 0xfd00, 0xff00])
9058  
9059 # 2222/160E, 22/14
9060 pkt = NCP(0x160E, "Delete Trustee from Directory", 'file')
9061 pkt.Request((17,271), [
9062 rec( 10, 1, DirHandle ),
9063 rec( 11, 4, TrusteeID, ENC_BIG_ENDIAN ),
9064 rec( 15, 1, Reserved ),
9065 rec( 16, (1, 255), Path, info_str=(Path, "Delete Trustee from Directory: %s", ", %s") ),
9066 ])
9067 pkt.Reply(8)
9068 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9804, 0x9900, 0x9b03, 0x9c03,
9069 0xa100, 0xfc06, 0xfd00, 0xfe07, 0xff00])
9070  
9071 # 2222/160F, 22/15
9072 pkt = NCP(0x160F, "Rename Directory", 'file')
9073 pkt.Request((13, 521), [
9074 rec( 10, 1, DirHandle ),
9075 rec( 11, (1, 255), Path, info_str=(Path, "Rename Directory: %s", ", %s") ),
9076 rec( -1, (1, 255), NewPath ),
9077 ])
9078 pkt.Reply(8)
9079 pkt.CompletionCodes([0x0000, 0x8b00, 0x9200, 0x9600, 0x9804, 0x9b03, 0x9c03,
9080 0x9e00, 0xa100, 0xef00, 0xfd00, 0xff00])
9081  
9082 # 2222/1610, 22/16
9083 pkt = NCP(0x1610, "Purge Erased Files", 'file')
9084 pkt.Request(10)
9085 pkt.Reply(8)
9086 pkt.CompletionCodes([0x0000, 0x8100, 0x9600, 0x9804, 0xa100, 0xff00])
9087  
9088 # 2222/1611, 22/17
9089 pkt = NCP(0x1611, "Recover Erased File", 'file')
9090 pkt.Request(11, [
9091 rec( 10, 1, DirHandle,info_str=(DirHandle, "Recover Erased File from Directory Handle %d", ", %d") ),
9092 ])
9093 pkt.Reply(38, [
9094 rec( 8, 15, OldFileName ),
9095 rec( 23, 15, NewFileName ),
9096 ])
9097 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03,
9098 0xa100, 0xfd00, 0xff00])
9099 # 2222/1612, 22/18
9100 pkt = NCP(0x1612, "Alloc Permanent Directory Handle", 'file')
9101 pkt.Request((13, 267), [
9102 rec( 10, 1, DirHandle ),
9103 rec( 11, 1, DirHandleName ),
9104 rec( 12, (1,255), Path, info_str=(Path, "Allocate Permanent Directory Handle: %s", ", %s") ),
9105 ])
9106 pkt.Reply(10, [
9107 rec( 8, 1, DirHandle ),
9108 rec( 9, 1, AccessRightsMask ),
9109 ])
9110 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9900, 0x9b00, 0x9c03, 0x9d00,
9111 0xa100, 0xfd00, 0xff00])
9112 # 2222/1613, 22/19
9113 pkt = NCP(0x1613, "Alloc Temporary Directory Handle", 'file')
9114 pkt.Request((13, 267), [
9115 rec( 10, 1, DirHandle ),
9116 rec( 11, 1, DirHandleName ),
9117 rec( 12, (1,255), Path, info_str=(Path, "Allocate Temporary Directory Handle: %s", ", %s") ),
9118 ])
9119 pkt.Reply(10, [
9120 rec( 8, 1, DirHandle ),
9121 rec( 9, 1, AccessRightsMask ),
9122 ])
9123 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9900, 0x9c03, 0x9d00,
9124 0xa100, 0xfd00, 0xff00])
9125 # 2222/1614, 22/20
9126 pkt = NCP(0x1614, "Deallocate Directory Handle", 'file')
9127 pkt.Request(11, [
9128 rec( 10, 1, DirHandle,info_str=(DirHandle, "Deallocate Directory Handle %d", ", %d") ),
9129 ])
9130 pkt.Reply(8)
9131 pkt.CompletionCodes([0x0000, 0x9b03])
9132 # 2222/1615, 22/21
9133 pkt = NCP(0x1615, "Get Volume Info with Handle", 'file')
9134 pkt.Request( 11, [
9135 rec( 10, 1, DirHandle,info_str=(DirHandle, "Get Volume Information with Handle %d", ", %d") )
9136 ])
9137 pkt.Reply( 36, [
9138 rec( 8, 2, SectorsPerCluster, ENC_BIG_ENDIAN ),
9139 rec( 10, 2, TotalVolumeClusters, ENC_BIG_ENDIAN ),
9140 rec( 12, 2, AvailableClusters, ENC_BIG_ENDIAN ),
9141 rec( 14, 2, TotalDirectorySlots, ENC_BIG_ENDIAN ),
9142 rec( 16, 2, AvailableDirectorySlots, ENC_BIG_ENDIAN ),
9143 rec( 18, 16, VolumeName ),
9144 rec( 34, 2, RemovableFlag, ENC_BIG_ENDIAN ),
9145 ])
9146 pkt.CompletionCodes([0x0000, 0xff00])
9147 # 2222/1616, 22/22
9148 pkt = NCP(0x1616, "Alloc Special Temporary Directory Handle", 'file')
9149 pkt.Request((13, 267), [
9150 rec( 10, 1, DirHandle ),
9151 rec( 11, 1, DirHandleName ),
9152 rec( 12, (1,255), Path, info_str=(Path, "Allocate Special Temporary Directory Handle: %s", ", %s") ),
9153 ])
9154 pkt.Reply(10, [
9155 rec( 8, 1, DirHandle ),
9156 rec( 9, 1, AccessRightsMask ),
9157 ])
9158 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9900, 0x9b00, 0x9c03, 0x9d00,
9159 0xa100, 0xfd00, 0xff00])
9160 # 2222/1617, 22/23
9161 pkt = NCP(0x1617, "Extract a Base Handle", 'file')
9162 pkt.Request(11, [
9163 rec( 10, 1, DirHandle, info_str=(DirHandle, "Extract a Base Handle from Directory Handle %d", ", %d") ),
9164 ])
9165 pkt.Reply(22, [
9166 rec( 8, 10, ServerNetworkAddress ),
9167 rec( 18, 4, DirHandleLong ),
9168 ])
9169 pkt.CompletionCodes([0x0000, 0x9600, 0x9b03])
9170 # 2222/1618, 22/24
9171 pkt = NCP(0x1618, "Restore an Extracted Base Handle", 'file')
9172 pkt.Request(24, [
9173 rec( 10, 10, ServerNetworkAddress ),
9174 rec( 20, 4, DirHandleLong ),
9175 ])
9176 pkt.Reply(10, [
9177 rec( 8, 1, DirHandle ),
9178 rec( 9, 1, AccessRightsMask ),
9179 ])
9180 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c00, 0x9d00, 0xa100,
9181 0xfd00, 0xff00])
9182 # 2222/1619, 22/25
9183 pkt = NCP(0x1619, "Set Directory Information", 'file')
9184 pkt.Request((21, 275), [
9185 rec( 10, 1, DirHandle ),
9186 rec( 11, 2, CreationDate ),
9187 rec( 13, 2, CreationTime ),
9188 rec( 15, 4, CreatorID, ENC_BIG_ENDIAN ),
9189 rec( 19, 1, AccessRightsMask ),
9190 rec( 20, (1,255), Path, info_str=(Path, "Set Directory Information: %s", ", %s") ),
9191 ])
9192 pkt.Reply(8)
9193 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9804, 0x9b03, 0x9c00, 0xa100,
9194 0xff16])
9195 # 2222/161A, 22/26
9196 pkt = NCP(0x161A, "Get Path Name of a Volume-Directory Number Pair", 'file')
9197 pkt.Request(13, [
9198 rec( 10, 1, VolumeNumber ),
9199 rec( 11, 2, DirectoryEntryNumberWord ),
9200 ])
9201 pkt.Reply((9,263), [
9202 rec( 8, (1,255), Path ),
9203 ])
9204 pkt.CompletionCodes([0x0000, 0x9804, 0x9c00, 0xa100])
9205 # 2222/161B, 22/27
9206 pkt = NCP(0x161B, "Scan Salvageable Files", 'file')
9207 pkt.Request(15, [
9208 rec( 10, 1, DirHandle ),
9209 rec( 11, 4, SequenceNumber ),
9210 ])
9211 pkt.Reply(140, [
9212 rec( 8, 4, SequenceNumber ),
9213 rec( 12, 2, Subdirectory ),
9214 rec( 14, 2, Reserved2 ),
9215 rec( 16, 4, AttributesDef32 ),
9216 rec( 20, 1, UniqueID ),
9217 rec( 21, 1, FlagsDef ),
9218 rec( 22, 1, DestNameSpace ),
9219 rec( 23, 1, FileNameLen ),
9220 rec( 24, 12, FileName12 ),
9221 rec( 36, 2, CreationTime ),
9222 rec( 38, 2, CreationDate ),
9223 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
9224 rec( 44, 2, ArchivedTime ),
9225 rec( 46, 2, ArchivedDate ),
9226 rec( 48, 4, ArchiverID, ENC_BIG_ENDIAN ),
9227 rec( 52, 2, UpdateTime ),
9228 rec( 54, 2, UpdateDate ),
9229 rec( 56, 4, UpdateID, ENC_BIG_ENDIAN ),
9230 rec( 60, 4, FileSize, ENC_BIG_ENDIAN ),
9231 rec( 64, 44, Reserved44 ),
9232 rec( 108, 2, InheritedRightsMask ),
9233 rec( 110, 2, LastAccessedDate ),
9234 rec( 112, 4, DeletedFileTime ),
9235 rec( 116, 2, DeletedTime ),
9236 rec( 118, 2, DeletedDate ),
9237 rec( 120, 4, DeletedID, ENC_BIG_ENDIAN ),
9238 rec( 124, 16, Reserved16 ),
9239 ])
9240 pkt.CompletionCodes([0x0000, 0xfb01, 0x9801, 0xff1d])
9241 # 2222/161C, 22/28
9242 pkt = NCP(0x161C, "Recover Salvageable File", 'file')
9243 pkt.Request((17,525), [
9244 rec( 10, 1, DirHandle ),
9245 rec( 11, 4, SequenceNumber ),
9246 rec( 15, (1, 255), FileName, info_str=(FileName, "Recover File: %s", ", %s") ),
9247 rec( -1, (1, 255), NewFileNameLen ),
9248 ])
9249 pkt.Reply(8)
9250 pkt.CompletionCodes([0x0000, 0x8401, 0x9c03, 0xfe02])
9251 # 2222/161D, 22/29
9252 pkt = NCP(0x161D, "Purge Salvageable File", 'file')
9253 pkt.Request(15, [
9254 rec( 10, 1, DirHandle ),
9255 rec( 11, 4, SequenceNumber ),
9256 ])
9257 pkt.Reply(8)
9258 pkt.CompletionCodes([0x0000, 0x8500, 0x9c03])
9259 # 2222/161E, 22/30
9260 pkt = NCP(0x161E, "Scan a Directory", 'file')
9261 pkt.Request((17, 271), [
9262 rec( 10, 1, DirHandle ),
9263 rec( 11, 1, DOSFileAttributes ),
9264 rec( 12, 4, SequenceNumber ),
9265 rec( 16, (1, 255), SearchPattern, info_str=(SearchPattern, "Scan a Directory: %s", ", %s") ),
9266 ])
9267 pkt.Reply(140, [
9268 rec( 8, 4, SequenceNumber ),
9269 rec( 12, 4, Subdirectory ),
9270 rec( 16, 4, AttributesDef32 ),
9271 rec( 20, 1, UniqueID, ENC_LITTLE_ENDIAN ),
9272 rec( 21, 1, PurgeFlags ),
9273 rec( 22, 1, DestNameSpace ),
9274 rec( 23, 1, NameLen ),
9275 rec( 24, 12, Name12 ),
9276 rec( 36, 2, CreationTime ),
9277 rec( 38, 2, CreationDate ),
9278 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
9279 rec( 44, 2, ArchivedTime ),
9280 rec( 46, 2, ArchivedDate ),
9281 rec( 48, 4, ArchiverID, ENC_BIG_ENDIAN ),
9282 rec( 52, 2, UpdateTime ),
9283 rec( 54, 2, UpdateDate ),
9284 rec( 56, 4, UpdateID, ENC_BIG_ENDIAN ),
9285 rec( 60, 4, FileSize, ENC_BIG_ENDIAN ),
9286 rec( 64, 44, Reserved44 ),
9287 rec( 108, 2, InheritedRightsMask ),
9288 rec( 110, 2, LastAccessedDate ),
9289 rec( 112, 28, Reserved28 ),
9290 ])
9291 pkt.CompletionCodes([0x0000, 0x8500, 0x9c03])
9292 # 2222/161F, 22/31
9293 pkt = NCP(0x161F, "Get Directory Entry", 'file')
9294 pkt.Request(11, [
9295 rec( 10, 1, DirHandle ),
9296 ])
9297 pkt.Reply(136, [
9298 rec( 8, 4, Subdirectory ),
9299 rec( 12, 4, AttributesDef32 ),
9300 rec( 16, 1, UniqueID, ENC_LITTLE_ENDIAN ),
9301 rec( 17, 1, PurgeFlags ),
9302 rec( 18, 1, DestNameSpace ),
9303 rec( 19, 1, NameLen ),
9304 rec( 20, 12, Name12 ),
9305 rec( 32, 2, CreationTime ),
9306 rec( 34, 2, CreationDate ),
9307 rec( 36, 4, CreatorID, ENC_BIG_ENDIAN ),
9308 rec( 40, 2, ArchivedTime ),
9309 rec( 42, 2, ArchivedDate ),
9310 rec( 44, 4, ArchiverID, ENC_BIG_ENDIAN ),
9311 rec( 48, 2, UpdateTime ),
9312 rec( 50, 2, UpdateDate ),
9313 rec( 52, 4, NextTrusteeEntry, ENC_BIG_ENDIAN ),
9314 rec( 56, 48, Reserved48 ),
9315 rec( 104, 2, MaximumSpace ),
9316 rec( 106, 2, InheritedRightsMask ),
9317 rec( 108, 28, Undefined28 ),
9318 ])
9319 pkt.CompletionCodes([0x0000, 0x8900, 0xbf00, 0xfb00])
9320 # 2222/1620, 22/32
9321 pkt = NCP(0x1620, "Scan Volume's User Disk Restrictions", 'file')
9322 pkt.Request(15, [
9323 rec( 10, 1, VolumeNumber ),
9324 rec( 11, 4, SequenceNumber ),
9325 ])
9326 pkt.Reply(17, [
9327 rec( 8, 1, NumberOfEntries, var="x" ),
9328 rec( 9, 8, ObjectIDStruct, repeat="x" ),
9329 ])
9330 pkt.CompletionCodes([0x0000, 0x9800])
9331 # 2222/1621, 22/33
9332 pkt = NCP(0x1621, "Add User Disk Space Restriction", 'file')
9333 pkt.Request(19, [
9334 rec( 10, 1, VolumeNumber ),
9335 rec( 11, 4, ObjectID ),
9336 rec( 15, 4, DiskSpaceLimit ),
9337 ])
9338 pkt.Reply(8)
9339 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9800])
9340 # 2222/1622, 22/34
9341 pkt = NCP(0x1622, "Remove User Disk Space Restrictions", 'file')
9342 pkt.Request(15, [
9343 rec( 10, 1, VolumeNumber ),
9344 rec( 11, 4, ObjectID ),
9345 ])
9346 pkt.Reply(8)
9347 pkt.CompletionCodes([0x0000, 0x8c00, 0xfe0e])
9348 # 2222/1623, 22/35
9349 pkt = NCP(0x1623, "Get Directory Disk Space Restriction", 'file')
9350 pkt.Request(11, [
9351 rec( 10, 1, DirHandle ),
9352 ])
9353 pkt.Reply(18, [
9354 rec( 8, 1, NumberOfEntries ),
9355 rec( 9, 1, Level ),
9356 rec( 10, 4, MaxSpace ),
9357 rec( 14, 4, CurrentSpace ),
9358 ])
9359 pkt.CompletionCodes([0x0000])
9360 # 2222/1624, 22/36
9361 pkt = NCP(0x1624, "Set Directory Disk Space Restriction", 'file')
9362 pkt.Request(15, [
9363 rec( 10, 1, DirHandle ),
9364 rec( 11, 4, DiskSpaceLimit ),
9365 ])
9366 pkt.Reply(8)
9367 pkt.CompletionCodes([0x0000, 0x0101, 0x8c00, 0xbf00])
9368 # 2222/1625, 22/37
9369 pkt = NCP(0x1625, "Set Directory Entry Information", 'file')
9370 pkt.Request(NO_LENGTH_CHECK, [
9371 #
9372 # XXX - this didn't match what was in the spec for 22/37
9373 # on the Novell Web site.
9374 #
9375 rec( 10, 1, DirHandle ),
9376 rec( 11, 1, SearchAttributes ),
9377 rec( 12, 4, SequenceNumber ),
9378 rec( 16, 2, ChangeBits ),
9379 rec( 18, 2, Reserved2 ),
9380 rec( 20, 4, Subdirectory ),
9381 #srec(DOSDirectoryEntryStruct, req_cond="ncp.search_att_sub == TRUE"),
9382 srec(DOSFileEntryStruct, req_cond="ncp.search_att_sub == FALSE"),
9383 ])
9384 pkt.Reply(8)
9385 pkt.ReqCondSizeConstant()
9386 pkt.CompletionCodes([0x0000, 0x0106, 0x8c00, 0xbf00])
9387 # 2222/1626, 22/38
9388 pkt = NCP(0x1626, "Scan File or Directory for Extended Trustees", 'file')
9389 pkt.Request((13,267), [
9390 rec( 10, 1, DirHandle ),
9391 rec( 11, 1, SequenceByte ),
9392 rec( 12, (1, 255), Path, info_str=(Path, "Scan for Extended Trustees: %s", ", %s") ),
9393 ])
9394 pkt.Reply(91, [
9395 rec( 8, 1, NumberOfEntries, var="x" ),
9396 rec( 9, 4, ObjectID ),
9397 rec( 13, 4, ObjectID ),
9398 rec( 17, 4, ObjectID ),
9399 rec( 21, 4, ObjectID ),
9400 rec( 25, 4, ObjectID ),
9401 rec( 29, 4, ObjectID ),
9402 rec( 33, 4, ObjectID ),
9403 rec( 37, 4, ObjectID ),
9404 rec( 41, 4, ObjectID ),
9405 rec( 45, 4, ObjectID ),
9406 rec( 49, 4, ObjectID ),
9407 rec( 53, 4, ObjectID ),
9408 rec( 57, 4, ObjectID ),
9409 rec( 61, 4, ObjectID ),
9410 rec( 65, 4, ObjectID ),
9411 rec( 69, 4, ObjectID ),
9412 rec( 73, 4, ObjectID ),
9413 rec( 77, 4, ObjectID ),
9414 rec( 81, 4, ObjectID ),
9415 rec( 85, 4, ObjectID ),
9416 rec( 89, 2, AccessRightsMaskWord, repeat="x" ),
9417 ])
9418 pkt.CompletionCodes([0x0000, 0x9800, 0x9b00, 0x9c00])
9419 # 2222/1627, 22/39
9420 pkt = NCP(0x1627, "Add Extended Trustee to Directory or File", 'file')
9421 pkt.Request((18,272), [
9422 rec( 10, 1, DirHandle ),
9423 rec( 11, 4, ObjectID, ENC_BIG_ENDIAN ),
9424 rec( 15, 2, TrusteeRights ),
9425 rec( 17, (1, 255), Path, info_str=(Path, "Add Extended Trustee: %s", ", %s") ),
9426 ])
9427 pkt.Reply(8)
9428 pkt.CompletionCodes([0x0000, 0x9000])
9429 # 2222/1628, 22/40
9430 pkt = NCP(0x1628, "Scan Directory Disk Space", 'file')
9431 pkt.Request((17,271), [
9432 rec( 10, 1, DirHandle ),
9433 rec( 11, 1, SearchAttributes ),
9434 rec( 12, 4, SequenceNumber ),
9435 rec( 16, (1, 255), SearchPattern, info_str=(SearchPattern, "Scan Directory Disk Space: %s", ", %s") ),
9436 ])
9437 pkt.Reply((148), [
9438 rec( 8, 4, SequenceNumber ),
9439 rec( 12, 4, Subdirectory ),
9440 rec( 16, 4, AttributesDef32 ),
9441 rec( 20, 1, UniqueID ),
9442 rec( 21, 1, PurgeFlags ),
9443 rec( 22, 1, DestNameSpace ),
9444 rec( 23, 1, NameLen ),
9445 rec( 24, 12, Name12 ),
9446 rec( 36, 2, CreationTime ),
9447 rec( 38, 2, CreationDate ),
9448 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
9449 rec( 44, 2, ArchivedTime ),
9450 rec( 46, 2, ArchivedDate ),
9451 rec( 48, 4, ArchiverID, ENC_BIG_ENDIAN ),
9452 rec( 52, 2, UpdateTime ),
9453 rec( 54, 2, UpdateDate ),
9454 rec( 56, 4, UpdateID, ENC_BIG_ENDIAN ),
9455 rec( 60, 4, DataForkSize, ENC_BIG_ENDIAN ),
9456 rec( 64, 4, DataForkFirstFAT, ENC_BIG_ENDIAN ),
9457 rec( 68, 4, NextTrusteeEntry, ENC_BIG_ENDIAN ),
9458 rec( 72, 36, Reserved36 ),
9459 rec( 108, 2, InheritedRightsMask ),
9460 rec( 110, 2, LastAccessedDate ),
9461 rec( 112, 4, DeletedFileTime ),
9462 rec( 116, 2, DeletedTime ),
9463 rec( 118, 2, DeletedDate ),
9464 rec( 120, 4, DeletedID, ENC_BIG_ENDIAN ),
9465 rec( 124, 8, Undefined8 ),
9466 rec( 132, 4, PrimaryEntry, ENC_LITTLE_ENDIAN ),
9467 rec( 136, 4, NameList, ENC_LITTLE_ENDIAN ),
9468 rec( 140, 4, OtherFileForkSize, ENC_BIG_ENDIAN ),
9469 rec( 144, 4, OtherFileForkFAT, ENC_BIG_ENDIAN ),
9470 ])
9471 pkt.CompletionCodes([0x0000, 0x8900, 0x9c03, 0xfb01, 0xff00])
9472 # 2222/1629, 22/41
9473 pkt = NCP(0x1629, "Get Object Disk Usage and Restrictions", 'file')
9474 pkt.Request(15, [
9475 rec( 10, 1, VolumeNumber ),
9476 rec( 11, 4, ObjectID, ENC_LITTLE_ENDIAN ),
9477 ])
9478 pkt.Reply(16, [
9479 rec( 8, 4, Restriction ),
9480 rec( 12, 4, InUse ),
9481 ])
9482 pkt.CompletionCodes([0x0000, 0x9802])
9483 # 2222/162A, 22/42
9484 pkt = NCP(0x162A, "Get Effective Rights for Directory Entry", 'file')
9485 pkt.Request((12,266), [
9486 rec( 10, 1, DirHandle ),
9487 rec( 11, (1, 255), Path, info_str=(Path, "Get Effective Rights: %s", ", %s") ),
9488 ])
9489 pkt.Reply(10, [
9490 rec( 8, 2, AccessRightsMaskWord ),
9491 ])
9492 pkt.CompletionCodes([0x0000, 0x9804, 0x9c03])
9493 # 2222/162B, 22/43
9494 pkt = NCP(0x162B, "Remove Extended Trustee from Dir or File", 'file')
9495 pkt.Request((17,271), [
9496 rec( 10, 1, DirHandle ),
9497 rec( 11, 4, ObjectID, ENC_BIG_ENDIAN ),
9498 rec( 15, 1, Unused ),
9499 rec( 16, (1, 255), Path, info_str=(Path, "Remove Extended Trustee from %s", ", %s") ),
9500 ])
9501 pkt.Reply(8)
9502 pkt.CompletionCodes([0x0000, 0x9002, 0x9c03, 0xfe0f, 0xff09])
9503 # 2222/162C, 22/44
9504 pkt = NCP(0x162C, "Get Volume and Purge Information", 'file')
9505 pkt.Request( 11, [
9506 rec( 10, 1, VolumeNumber, info_str=(VolumeNumber, "Get Volume and Purge Information for Volume %d", ", %d") )
9507 ])
9508 pkt.Reply( (38,53), [
9509 rec( 8, 4, TotalBlocks ),
9510 rec( 12, 4, FreeBlocks ),
9511 rec( 16, 4, PurgeableBlocks ),
9512 rec( 20, 4, NotYetPurgeableBlocks ),
9513 rec( 24, 4, TotalDirectoryEntries ),
9514 rec( 28, 4, AvailableDirEntries ),
9515 rec( 32, 4, Reserved4 ),
9516 rec( 36, 1, SectorsPerBlock ),
9517 rec( 37, (1,16), VolumeNameLen ),
9518 ])
9519 pkt.CompletionCodes([0x0000])
9520 # 2222/162D, 22/45
9521 pkt = NCP(0x162D, "Get Directory Information", 'file')
9522 pkt.Request( 11, [
9523 rec( 10, 1, DirHandle )
9524 ])
9525 pkt.Reply( (30, 45), [
9526 rec( 8, 4, TotalBlocks ),
9527 rec( 12, 4, AvailableBlocks ),
9528 rec( 16, 4, TotalDirectoryEntries ),
9529 rec( 20, 4, AvailableDirEntries ),
9530 rec( 24, 4, Reserved4 ),
9531 rec( 28, 1, SectorsPerBlock ),
9532 rec( 29, (1,16), VolumeNameLen ),
9533 ])
9534 pkt.CompletionCodes([0x0000, 0x9b03])
9535 # 2222/162E, 22/46
9536 pkt = NCP(0x162E, "Rename Or Move", 'file')
9537 pkt.Request( (17,525), [
9538 rec( 10, 1, SourceDirHandle ),
9539 rec( 11, 1, SearchAttributes ),
9540 rec( 12, 1, SourcePathComponentCount ),
9541 rec( 13, (1,255), SourcePath, info_str=(SourcePath, "Rename or Move: %s", ", %s") ),
9542 rec( -1, 1, DestDirHandle ),
9543 rec( -1, 1, DestPathComponentCount ),
9544 rec( -1, (1,255), DestPath ),
9545 ])
9546 pkt.Reply(8)
9547 pkt.CompletionCodes([0x0000, 0x0102, 0x8701, 0x8b00, 0x8d00, 0x8e00,
9548 0x8f00, 0x9001, 0x9101, 0x9201, 0x9a00, 0x9b03,
9549 0x9c03, 0xa400, 0xff17])
9550 # 2222/162F, 22/47
9551 pkt = NCP(0x162F, "Get Name Space Information", 'file')
9552 pkt.Request( 11, [
9553 rec( 10, 1, VolumeNumber, info_str=(VolumeNumber, "Get Name Space Information for Volume %d", ", %d") )
9554 ])
9555 pkt.Reply( (15,523), [
9556 #
9557 # XXX - why does this not display anything at all
9558 # if the stuff after the first IndexNumber is
9559 # un-commented? That stuff really is there....
9560 #
9561 rec( 8, 1, DefinedNameSpaces, var="v" ),
9562 rec( 9, (1,255), NameSpaceName, repeat="v" ),
9563 rec( -1, 1, DefinedDataStreams, var="w" ),
9564 rec( -1, (2,256), DataStreamInfo, repeat="w" ),
9565 rec( -1, 1, LoadedNameSpaces, var="x" ),
9566 rec( -1, 1, IndexNumber, repeat="x" ),
9567 # rec( -1, 1, VolumeNameSpaces, var="y" ),
9568 # rec( -1, 1, IndexNumber, repeat="y" ),
9569 # rec( -1, 1, VolumeDataStreams, var="z" ),
9570 # rec( -1, 1, IndexNumber, repeat="z" ),
9571 ])
9572 pkt.CompletionCodes([0x0000, 0x9802, 0xff00])
9573 # 2222/1630, 22/48
9574 pkt = NCP(0x1630, "Get Name Space Directory Entry", 'file')
9575 pkt.Request( 16, [
9576 rec( 10, 1, VolumeNumber ),
9577 rec( 11, 4, DOSSequence ),
9578 rec( 15, 1, SrcNameSpace ),
9579 ])
9580 pkt.Reply( 112, [
9581 rec( 8, 4, SequenceNumber ),
9582 rec( 12, 4, Subdirectory ),
9583 rec( 16, 4, AttributesDef32 ),
9584 rec( 20, 1, UniqueID ),
9585 rec( 21, 1, Flags ),
9586 rec( 22, 1, SrcNameSpace ),
9587 rec( 23, 1, NameLength ),
9588 rec( 24, 12, Name12 ),
9589 rec( 36, 2, CreationTime ),
9590 rec( 38, 2, CreationDate ),
9591 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
9592 rec( 44, 2, ArchivedTime ),
9593 rec( 46, 2, ArchivedDate ),
9594 rec( 48, 4, ArchiverID ),
9595 rec( 52, 2, UpdateTime ),
9596 rec( 54, 2, UpdateDate ),
9597 rec( 56, 4, UpdateID ),
9598 rec( 60, 4, FileSize ),
9599 rec( 64, 44, Reserved44 ),
9600 rec( 108, 2, InheritedRightsMask ),
9601 rec( 110, 2, LastAccessedDate ),
9602 ])
9603 pkt.CompletionCodes([0x0000, 0x8900, 0x9802, 0xbf00])
9604 # 2222/1631, 22/49
9605 pkt = NCP(0x1631, "Open Data Stream", 'file')
9606 pkt.Request( (15,269), [
9607 rec( 10, 1, DataStream ),
9608 rec( 11, 1, DirHandle ),
9609 rec( 12, 1, AttributesDef ),
9610 rec( 13, 1, OpenRights ),
9611 rec( 14, (1, 255), FileName, info_str=(FileName, "Open Data Stream: %s", ", %s") ),
9612 ])
9613 pkt.Reply( 12, [
9614 rec( 8, 4, CCFileHandle, ENC_BIG_ENDIAN ),
9615 ])
9616 pkt.CompletionCodes([0x0000, 0x8000, 0x8200, 0x9002, 0xbe00, 0xff00])
9617 # 2222/1632, 22/50
9618 pkt = NCP(0x1632, "Get Object Effective Rights for Directory Entry", 'file')
9619 pkt.Request( (16,270), [
9620 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
9621 rec( 14, 1, DirHandle ),
9622 rec( 15, (1, 255), Path, info_str=(Path, "Get Object Effective Rights: %s", ", %s") ),
9623 ])
9624 pkt.Reply( 10, [
9625 rec( 8, 2, TrusteeRights ),
9626 ])
9627 pkt.CompletionCodes([0x0000, 0x7e01, 0x9b00, 0x9c03, 0xfc06])
9628 # 2222/1633, 22/51
9629 pkt = NCP(0x1633, "Get Extended Volume Information", 'file')
9630 pkt.Request( 11, [
9631 rec( 10, 1, VolumeNumber, info_str=(VolumeNumber, "Get Extended Volume Information for Volume %d", ", %d") ),
9632 ])
9633 pkt.Reply( (139,266), [
9634 rec( 8, 2, VolInfoReplyLen ),
9635 rec( 10, 128, VolInfoStructure),
9636 rec( 138, (1,128), VolumeNameLen ),
9637 ])
9638 pkt.CompletionCodes([0x0000, 0x7e01, 0x9804, 0xfb08, 0xff00])
9639 pkt.MakeExpert("ncp1633_reply")
9640 # 2222/1634, 22/52
9641 pkt = NCP(0x1634, "Get Mount Volume List", 'file')
9642 pkt.Request( 22, [
9643 rec( 10, 4, StartVolumeNumber ),
9644 rec( 14, 4, VolumeRequestFlags, ENC_LITTLE_ENDIAN ),
9645 rec( 18, 4, SrcNameSpace ),
9646 ])
9647 pkt.Reply( NO_LENGTH_CHECK, [
9648 rec( 8, 4, ItemsInPacket, var="x" ),
9649 rec( 12, 4, NextVolumeNumber ),
9650 srec( VolumeStruct, req_cond="ncp.volume_request_flags==0x0000", repeat="x" ),
9651 srec( VolumeWithNameStruct, req_cond="ncp.volume_request_flags==0x0001", repeat="x" ),
9652 ])
9653 pkt.ReqCondSizeVariable()
9654 pkt.CompletionCodes([0x0000, 0x9802])
9655 # 2222/1635, 22/53
9656 pkt = NCP(0x1635, "Get Volume Capabilities", 'file')
9657 pkt.Request( 18, [
9658 rec( 10, 4, VolumeNumberLong ),
9659 rec( 14, 4, VersionNumberLong ),
9660 ])
9661 pkt.Reply( NO_LENGTH_CHECK, [
9662 rec( 8, 4, VolumeCapabilities ),
9663 rec( 12, 28, Reserved28 ),
9664 rec( 40, 64, VolumeNameStringz ),
9665 rec( 104, 128, VolumeGUID ),
9666 rec( 232, 256, PoolName ),
9667 rec( 488, PROTO_LENGTH_UNKNOWN, VolumeMountPoint ),
9668 ])
9669 pkt.CompletionCodes([0x0000, 0x7700, 0x9802, 0xfb01])
9670 # 2222/1636, 22/54
9671 pkt = NCP(0x1636, "Add User Disk Space Restriction 64 Bit Aware", 'file')
9672 pkt.Request(26, [
9673 rec( 10, 4, VolumeNumberLong ),
9674 rec( 14, 4, ObjectID, ENC_LITTLE_ENDIAN ),
9675 rec( 18, 8, DiskSpaceLimit64 ),
9676 ])
9677 pkt.Reply(8)
9678 pkt.CompletionCodes([0x0000, 0x8c00, 0x9600, 0x9800])
9679 # 2222/1637, 22/55
9680 pkt = NCP(0x1637, "Get Object Disk Usage and Restrictions 64 Bit Aware", 'file')
9681 pkt.Request(18, [
9682 rec( 10, 4, VolumeNumberLong ),
9683 rec( 14, 4, ObjectID, ENC_LITTLE_ENDIAN ),
9684 ])
9685 pkt.Reply(24, [
9686 rec( 8, 8, RestrictionQuad ),
9687 rec( 16, 8, InUse64 ),
9688 ])
9689 pkt.CompletionCodes([0x0000, 0x9802])
9690 # 2222/1638, 22/56
9691 pkt = NCP(0x1638, "Scan Volume's User Disk Restrictions 64 Bit Aware", 'file')
9692 pkt.Request(18, [
9693 rec( 10, 4, VolumeNumberLong ),
9694 rec( 14, 4, SequenceNumber ),
9695 ])
9696 pkt.Reply(24, [
9697 rec( 8, 4, NumberOfEntriesLong, var="x" ),
9698 rec( 12, 12, ObjectIDStruct64, repeat="x" ),
9699 ])
9700 pkt.CompletionCodes([0x0000, 0x9800])
9701 # 2222/1639, 22/57
9702 pkt = NCP(0x1639, "Set Directory Disk Space Restriction 64 Bit Aware", 'file')
9703 pkt.Request(26, [
9704 rec( 10, 8, DirHandle64 ),
9705 rec( 18, 8, DiskSpaceLimit64 ),
9706 ])
9707 pkt.Reply(8)
9708 pkt.CompletionCodes([0x0000, 0x0101, 0x8c00, 0xbf00])
9709 # 2222/163A, 22/58
9710 pkt = NCP(0x163A, "Get Directory Information 64 Bit Aware", 'file')
9711 pkt.Request( 18, [
9712 rec( 10, 8, DirHandle64 )
9713 ])
9714 pkt.Reply( (49, 64), [
9715 rec( 8, 8, TotalBlocks64 ),
9716 rec( 16, 8, AvailableBlocks64 ),
9717 rec( 24, 8, TotalDirEntries64 ),
9718 rec( 32, 8, AvailableDirEntries64 ),
9719 rec( 40, 4, Reserved4 ),
9720 rec( 44, 4, SectorsPerBlockLong ),
9721 rec( 48, (1,16), VolumeNameLen ),
9722 ])
9723 pkt.CompletionCodes([0x0000, 0x9b03])
9724 # 2222/1641, 22/59
9725 # pkt = NCP(0x1641, "Scan Volume's User Disk Restrictions 64-bit Aware", 'file')
9726 # pkt.Request(18, [
9727 # rec( 10, 4, VolumeNumberLong ),
9728 # rec( 14, 4, SequenceNumber ),
9729 # ])
9730 # pkt.Reply(24, [
9731 # rec( 8, 4, NumberOfEntriesLong, var="x" ),
9732 # rec( 12, 12, ObjectIDStruct64, repeat="x" ),
9733 # ])
9734 # pkt.CompletionCodes([0x0000, 0x9800])
9735 # 2222/1700, 23/00
9736 pkt = NCP(0x1700, "Login User", 'connection')
9737 pkt.Request( (12, 58), [
9738 rec( 10, (1,16), UserName, info_str=(UserName, "Login User: %s", ", %s") ),
9739 rec( -1, (1,32), Password ),
9740 ])
9741 pkt.Reply(8)
9742 pkt.CompletionCodes([0x0000, 0x9602, 0xc101, 0xc200, 0xc501, 0xd700,
9743 0xd900, 0xda00, 0xdb00, 0xde00, 0xdf00, 0xe800,
9744 0xec00, 0xed00, 0xef00, 0xf001, 0xf100, 0xf200,
9745 0xf600, 0xfb00, 0xfc06, 0xfe07, 0xff00])
9746 # 2222/1701, 23/01
9747 pkt = NCP(0x1701, "Change User Password", 'bindery')
9748 pkt.Request( (13, 90), [
9749 rec( 10, (1,16), UserName, info_str=(UserName, "Change Password for User: %s", ", %s") ),
9750 rec( -1, (1,32), Password ),
9751 rec( -1, (1,32), NewPassword ),
9752 ])
9753 pkt.Reply(8)
9754 pkt.CompletionCodes([0x0000, 0x9600, 0xd600, 0xf001, 0xf101, 0xf501,
9755 0xfc06, 0xfe07, 0xff00])
9756 # 2222/1702, 23/02
9757 pkt = NCP(0x1702, "Get User Connection List", 'connection')
9758 pkt.Request( (11, 26), [
9759 rec( 10, (1,16), UserName, info_str=(UserName, "Get User Connection: %s", ", %s") ),
9760 ])
9761 pkt.Reply( (9, 136), [
9762 rec( 8, (1, 128), ConnectionNumberList ),
9763 ])
9764 pkt.CompletionCodes([0x0000, 0x9600, 0xf001, 0xfc06, 0xfe07, 0xff00])
9765 # 2222/1703, 23/03
9766 pkt = NCP(0x1703, "Get User Number", 'bindery')
9767 pkt.Request( (11, 26), [
9768 rec( 10, (1,16), UserName, info_str=(UserName, "Get User Number: %s", ", %s") ),
9769 ])
9770 pkt.Reply( 12, [
9771 rec( 8, 4, ObjectID, ENC_BIG_ENDIAN ),
9772 ])
9773 pkt.CompletionCodes([0x0000, 0x9600, 0xf001, 0xfc06, 0xfe07, 0xff00])
9774 # 2222/1705, 23/05
9775 pkt = NCP(0x1705, "Get Station's Logged Info", 'connection')
9776 pkt.Request( 11, [
9777 rec( 10, 1, TargetConnectionNumber, info_str=(TargetConnectionNumber, "Get Station's Logged Information on Connection %d", ", %d") ),
9778 ])
9779 pkt.Reply( 266, [
9780 rec( 8, 16, UserName16 ),
9781 rec( 24, 7, LoginTime ),
9782 rec( 31, 39, FullName ),
9783 rec( 70, 4, UserID, ENC_BIG_ENDIAN ),
9784 rec( 74, 128, SecurityEquivalentList ),
9785 rec( 202, 64, Reserved64 ),
9786 ])
9787 pkt.CompletionCodes([0x0000, 0x9602, 0xfc06, 0xfd00, 0xfe07, 0xff00])
9788 # 2222/1707, 23/07
9789 pkt = NCP(0x1707, "Get Group Number", 'bindery')
9790 pkt.Request( 14, [
9791 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
9792 ])
9793 pkt.Reply( 62, [
9794 rec( 8, 4, ObjectID, ENC_BIG_ENDIAN ),
9795 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
9796 rec( 14, 48, ObjectNameLen ),
9797 ])
9798 pkt.CompletionCodes([0x0000, 0x9602, 0xf101, 0xfc06, 0xfe07, 0xff00])
9799 # 2222/170C, 23/12
9800 pkt = NCP(0x170C, "Verify Serialization", 'fileserver')
9801 pkt.Request( 14, [
9802 rec( 10, 4, ServerSerialNumber ),
9803 ])
9804 pkt.Reply(8)
9805 pkt.CompletionCodes([0x0000, 0xff00])
9806 # 2222/170D, 23/13
9807 pkt = NCP(0x170D, "Log Network Message", 'file')
9808 pkt.Request( (11, 68), [
9809 rec( 10, (1, 58), TargetMessage, info_str=(TargetMessage, "Log Network Message: %s", ", %s") ),
9810 ])
9811 pkt.Reply(8)
9812 pkt.CompletionCodes([0x0000, 0x8000, 0x8100, 0x8800, 0x8d00, 0x8e00, 0x8f00,
9813 0x9001, 0x9400, 0x9600, 0x9804, 0x9900, 0x9b00, 0xa100,
9814 0xa201, 0xff00])
9815 # 2222/170E, 23/14
9816 pkt = NCP(0x170E, "Get Disk Utilization", 'fileserver')
9817 pkt.Request( 15, [
9818 rec( 10, 1, VolumeNumber ),
9819 rec( 11, 4, TrusteeID, ENC_BIG_ENDIAN ),
9820 ])
9821 pkt.Reply( 19, [
9822 rec( 8, 1, VolumeNumber ),
9823 rec( 9, 4, TrusteeID, ENC_BIG_ENDIAN ),
9824 rec( 13, 2, DirectoryCount, ENC_BIG_ENDIAN ),
9825 rec( 15, 2, FileCount, ENC_BIG_ENDIAN ),
9826 rec( 17, 2, ClusterCount, ENC_BIG_ENDIAN ),
9827 ])
9828 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0xa100, 0xf200])
9829 # 2222/170F, 23/15
9830 pkt = NCP(0x170F, "Scan File Information", 'file')
9831 pkt.Request((15,269), [
9832 rec( 10, 2, LastSearchIndex ),
9833 rec( 12, 1, DirHandle ),
9834 rec( 13, 1, SearchAttributes ),
9835 rec( 14, (1, 255), FileName, info_str=(FileName, "Scan File Information: %s", ", %s") ),
9836 ])
9837 pkt.Reply( 102, [
9838 rec( 8, 2, NextSearchIndex ),
9839 rec( 10, 14, FileName14 ),
9840 rec( 24, 2, AttributesDef16 ),
9841 rec( 26, 4, FileSize, ENC_BIG_ENDIAN ),
9842 rec( 30, 2, CreationDate, ENC_BIG_ENDIAN ),
9843 rec( 32, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
9844 rec( 34, 2, ModifiedDate, ENC_BIG_ENDIAN ),
9845 rec( 36, 2, ModifiedTime, ENC_BIG_ENDIAN ),
9846 rec( 38, 4, CreatorID, ENC_BIG_ENDIAN ),
9847 rec( 42, 2, ArchivedDate, ENC_BIG_ENDIAN ),
9848 rec( 44, 2, ArchivedTime, ENC_BIG_ENDIAN ),
9849 rec( 46, 56, Reserved56 ),
9850 ])
9851 pkt.CompletionCodes([0x0000, 0x8800, 0x8900, 0x9300, 0x9400, 0x9804, 0x9b00, 0x9c00,
9852 0xa100, 0xfd00, 0xff17])
9853 # 2222/1710, 23/16
9854 pkt = NCP(0x1710, "Set File Information", 'file')
9855 pkt.Request((91,345), [
9856 rec( 10, 2, AttributesDef16 ),
9857 rec( 12, 4, FileSize, ENC_BIG_ENDIAN ),
9858 rec( 16, 2, CreationDate, ENC_BIG_ENDIAN ),
9859 rec( 18, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
9860 rec( 20, 2, ModifiedDate, ENC_BIG_ENDIAN ),
9861 rec( 22, 2, ModifiedTime, ENC_BIG_ENDIAN ),
9862 rec( 24, 4, CreatorID, ENC_BIG_ENDIAN ),
9863 rec( 28, 2, ArchivedDate, ENC_BIG_ENDIAN ),
9864 rec( 30, 2, ArchivedTime, ENC_BIG_ENDIAN ),
9865 rec( 32, 56, Reserved56 ),
9866 rec( 88, 1, DirHandle ),
9867 rec( 89, 1, SearchAttributes ),
9868 rec( 90, (1, 255), FileName, info_str=(FileName, "Set Information for File: %s", ", %s") ),
9869 ])
9870 pkt.Reply(8)
9871 pkt.CompletionCodes([0x0000, 0x8800, 0x8c00, 0x8e00, 0x9400, 0x9600, 0x9804,
9872 0x9b03, 0x9c00, 0xa100, 0xa201, 0xfc06, 0xfd00, 0xfe07,
9873 0xff17])
9874 # 2222/1711, 23/17
9875 pkt = NCP(0x1711, "Get File Server Information", 'fileserver')
9876 pkt.Request(10)
9877 pkt.Reply(136, [
9878 rec( 8, 48, ServerName ),
9879 rec( 56, 1, OSMajorVersion ),
9880 rec( 57, 1, OSMinorVersion ),
9881 rec( 58, 2, ConnectionsSupportedMax, ENC_BIG_ENDIAN ),
9882 rec( 60, 2, ConnectionsInUse, ENC_BIG_ENDIAN ),
9883 rec( 62, 2, VolumesSupportedMax, ENC_BIG_ENDIAN ),
9884 rec( 64, 1, OSRevision ),
9885 rec( 65, 1, SFTSupportLevel ),
9886 rec( 66, 1, TTSLevel ),
9887 rec( 67, 2, ConnectionsMaxUsed, ENC_BIG_ENDIAN ),
9888 rec( 69, 1, AccountVersion ),
9889 rec( 70, 1, VAPVersion ),
9890 rec( 71, 1, QueueingVersion ),
9891 rec( 72, 1, PrintServerVersion ),
9892 rec( 73, 1, VirtualConsoleVersion ),
9893 rec( 74, 1, SecurityRestrictionVersion ),
9894 rec( 75, 1, InternetBridgeVersion ),
9895 rec( 76, 1, MixedModePathFlag ),
9896 rec( 77, 1, LocalLoginInfoCcode ),
9897 rec( 78, 2, ProductMajorVersion, ENC_BIG_ENDIAN ),
9898 rec( 80, 2, ProductMinorVersion, ENC_BIG_ENDIAN ),
9899 rec( 82, 2, ProductRevisionVersion, ENC_BIG_ENDIAN ),
9900 rec( 84, 1, OSLanguageID, ENC_LITTLE_ENDIAN ),
9901 rec( 85, 1, SixtyFourBitOffsetsSupportedFlag ),
9902 rec( 86, 1, OESServer ),
9903 rec( 87, 1, OESLinuxOrNetWare ),
9904 rec( 88, 48, Reserved48 ),
9905 ])
9906 pkt.MakeExpert("ncp1711_reply")
9907 pkt.CompletionCodes([0x0000, 0x9600])
9908 # 2222/1712, 23/18
9909 pkt = NCP(0x1712, "Get Network Serial Number", 'fileserver')
9910 pkt.Request(10)
9911 pkt.Reply(14, [
9912 rec( 8, 4, ServerSerialNumber ),
9913 rec( 12, 2, ApplicationNumber ),
9914 ])
9915 pkt.CompletionCodes([0x0000, 0x9600])
9916 # 2222/1713, 23/19
9917 pkt = NCP(0x1713, "Get Internet Address", 'connection')
9918 pkt.Request(11, [
9919 rec( 10, 1, TargetConnectionNumber, info_str=(TargetConnectionNumber, "Get Internet Address for Connection %d", ", %d") ),
9920 ])
9921 pkt.Reply(20, [
9922 rec( 8, 4, NetworkAddress, ENC_BIG_ENDIAN ),
9923 rec( 12, 6, NetworkNodeAddress ),
9924 rec( 18, 2, NetworkSocket, ENC_BIG_ENDIAN ),
9925 ])
9926 pkt.CompletionCodes([0x0000, 0xff00])
9927 # 2222/1714, 23/20
9928 pkt = NCP(0x1714, "Login Object", 'connection')
9929 pkt.Request( (14, 60), [
9930 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
9931 rec( 12, (1,16), ClientName, info_str=(ClientName, "Login Object: %s", ", %s") ),
9932 rec( -1, (1,32), Password ),
9933 ])
9934 pkt.Reply(8)
9935 pkt.CompletionCodes([0x0000, 0x9602, 0xc101, 0xc200, 0xc501, 0xd600, 0xd700,
9936 0xd900, 0xda00, 0xdb00, 0xde00, 0xdf00, 0xe800, 0xec00,
9937 0xed00, 0xef00, 0xf001, 0xf100, 0xf200, 0xf600, 0xfb00,
9938 0xfc06, 0xfe07, 0xff00])
9939 # 2222/1715, 23/21
9940 pkt = NCP(0x1715, "Get Object Connection List", 'connection')
9941 pkt.Request( (13, 28), [
9942 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
9943 rec( 12, (1,16), ObjectName, info_str=(ObjectName, "Get Object Connection List: %s", ", %s") ),
9944 ])
9945 pkt.Reply( (9, 136), [
9946 rec( 8, (1, 128), ConnectionNumberList ),
9947 ])
9948 pkt.CompletionCodes([0x0000, 0x9600, 0xf001, 0xfc06, 0xfe07, 0xff00])
9949 # 2222/1716, 23/22
9950 pkt = NCP(0x1716, "Get Station's Logged Info", 'connection')
9951 pkt.Request( 11, [
9952 rec( 10, 1, TargetConnectionNumber ),
9953 ])
9954 pkt.Reply( 70, [
9955 rec( 8, 4, UserID, ENC_BIG_ENDIAN ),
9956 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
9957 rec( 14, 48, ObjectNameLen ),
9958 rec( 62, 7, LoginTime ),
9959 rec( 69, 1, Reserved ),
9960 ])
9961 pkt.CompletionCodes([0x0000, 0x9602, 0xfb0a, 0xfc06, 0xfd00, 0xfe07, 0xff00])
9962 # 2222/1717, 23/23
9963 pkt = NCP(0x1717, "Get Login Key", 'connection')
9964 pkt.Request(10)
9965 pkt.Reply( 16, [
9966 rec( 8, 8, LoginKey ),
9967 ])
9968 pkt.CompletionCodes([0x0000, 0x9602])
9969 # 2222/1718, 23/24
9970 pkt = NCP(0x1718, "Keyed Object Login", 'connection')
9971 pkt.Request( (21, 68), [
9972 rec( 10, 8, LoginKey ),
9973 rec( 18, 2, ObjectType, ENC_BIG_ENDIAN ),
9974 rec( 20, (1,48), ObjectName, info_str=(ObjectName, "Keyed Object Login: %s", ", %s") ),
9975 ])
9976 pkt.Reply(8)
9977 pkt.CompletionCodes([0x0000, 0x9602, 0xc101, 0xc200, 0xc500, 0xd904, 0xda00,
9978 0xdb00, 0xdc00, 0xde00, 0xff00])
9979 # 2222/171A, 23/26
9980 pkt = NCP(0x171A, "Get Internet Address", 'connection')
9981 pkt.Request(12, [
9982 rec( 10, 2, TargetConnectionNumber ),
9983 ])
9984 # Dissect reply in packet-ncp2222.inc
9985 pkt.Reply(8)
9986 pkt.CompletionCodes([0x0000])
9987 # 2222/171B, 23/27
9988 pkt = NCP(0x171B, "Get Object Connection List", 'connection')
9989 pkt.Request( (17,64), [
9990 rec( 10, 4, SearchConnNumber ),
9991 rec( 14, 2, ObjectType, ENC_BIG_ENDIAN ),
9992 rec( 16, (1,48), ObjectName, info_str=(ObjectName, "Get Object Connection List: %s", ", %s") ),
9993 ])
9994 pkt.Reply( (13), [
9995 rec( 8, 1, ConnListLen, var="x" ),
9996 rec( 9, 4, ConnectionNumber, ENC_LITTLE_ENDIAN, repeat="x" ),
9997 ])
9998 pkt.CompletionCodes([0x0000, 0x9600, 0xf001, 0xfc06, 0xfe07, 0xff00])
9999 # 2222/171C, 23/28
10000 pkt = NCP(0x171C, "Get Station's Logged Info", 'connection')
10001 pkt.Request( 14, [
10002 rec( 10, 4, TargetConnectionNumber ),
10003 ])
10004 pkt.Reply( 70, [
10005 rec( 8, 4, UserID, ENC_BIG_ENDIAN ),
10006 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10007 rec( 14, 48, ObjectNameLen ),
10008 rec( 62, 7, LoginTime ),
10009 rec( 69, 1, Reserved ),
10010 ])
10011 pkt.CompletionCodes([0x0000, 0x7d00, 0x9602, 0xfb02, 0xfc06, 0xfd00, 0xfe07, 0xff00])
10012 # 2222/171D, 23/29
10013 pkt = NCP(0x171D, "Change Connection State", 'connection')
10014 pkt.Request( 11, [
10015 rec( 10, 1, RequestCode ),
10016 ])
10017 pkt.Reply(8)
10018 pkt.CompletionCodes([0x0000, 0x0109, 0x7a00, 0x7b00, 0x7c00, 0xe000, 0xfb06, 0xfd00])
10019 # 2222/171E, 23/30
10020 pkt = NCP(0x171E, "Set Watchdog Delay Interval", 'connection')
10021 pkt.Request( 14, [
10022 rec( 10, 4, NumberOfMinutesToDelay ),
10023 ])
10024 pkt.Reply(8)
10025 pkt.CompletionCodes([0x0000, 0x0107])
10026 # 2222/171F, 23/31
10027 pkt = NCP(0x171F, "Get Connection List From Object", 'connection')
10028 pkt.Request( 18, [
10029 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
10030 rec( 14, 4, ConnectionNumber ),
10031 ])
10032 pkt.Reply( (9, 136), [
10033 rec( 8, (1, 128), ConnectionNumberList ),
10034 ])
10035 pkt.CompletionCodes([0x0000, 0x9600, 0xf001, 0xfc06, 0xfe07, 0xff00])
10036 # 2222/1720, 23/32
10037 pkt = NCP(0x1720, "Scan Bindery Object (List)", 'bindery')
10038 pkt.Request((23,70), [
10039 rec( 10, 4, NextObjectID, ENC_BIG_ENDIAN ),
10040 rec( 14, 2, ObjectType, ENC_BIG_ENDIAN ),
10041 rec( 16, 2, Reserved2 ),
10042 rec( 18, 4, InfoFlags ),
10043 rec( 22, (1,48), ObjectName, info_str=(ObjectName, "Scan Bindery Object: %s", ", %s") ),
10044 ])
10045 pkt.Reply(NO_LENGTH_CHECK, [
10046 rec( 8, 4, ObjectInfoReturnCount ),
10047 rec( 12, 4, NextObjectID, ENC_BIG_ENDIAN ),
10048 rec( 16, 4, ObjectID ),
10049 srec(ObjectTypeStruct, req_cond="ncp.info_flags_type == TRUE"),
10050 srec(ObjectSecurityStruct, req_cond="ncp.info_flags_security == TRUE"),
10051 srec(ObjectFlagsStruct, req_cond="ncp.info_flags_flags == TRUE"),
10052 srec(ObjectNameStruct, req_cond="ncp.info_flags_name == TRUE"),
10053 ])
10054 pkt.ReqCondSizeVariable()
10055 pkt.CompletionCodes([0x0000, 0x9600, 0xef01, 0xfc02, 0xfe01, 0xff00])
10056 # 2222/1721, 23/33
10057 pkt = NCP(0x1721, "Generate GUIDs", 'connection')
10058 pkt.Request( 14, [
10059 rec( 10, 4, ReturnInfoCount ),
10060 ])
10061 pkt.Reply(28, [
10062 rec( 8, 4, ReturnInfoCount, var="x" ),
10063 rec( 12, 16, GUID, repeat="x" ),
10064 ])
10065 pkt.CompletionCodes([0x0000, 0x7e01])
10066 # 2222/1722, 23/34
10067 pkt = NCP(0x1722, "Set Connection Language Encoding", 'connection')
10068 pkt.Request( 22, [
10069 rec( 10, 4, SetMask ),
10070 rec( 14, 4, NCPEncodedStringsBits ),
10071 rec( 18, 4, CodePage ),
10072 ])
10073 pkt.Reply(8)
10074 pkt.CompletionCodes([0x0000])
10075 # 2222/1732, 23/50
10076 pkt = NCP(0x1732, "Create Bindery Object", 'bindery')
10077 pkt.Request( (15,62), [
10078 rec( 10, 1, ObjectFlags ),
10079 rec( 11, 1, ObjectSecurity ),
10080 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10081 rec( 14, (1,48), ObjectName, info_str=(ObjectName, "Create Bindery Object: %s", ", %s") ),
10082 ])
10083 pkt.Reply(8)
10084 pkt.CompletionCodes([0x0000, 0x9600, 0xe700, 0xee00, 0xef00, 0xf101, 0xf501,
10085 0xfc06, 0xfe07, 0xff00])
10086 # 2222/1733, 23/51
10087 pkt = NCP(0x1733, "Delete Bindery Object", 'bindery')
10088 pkt.Request( (13,60), [
10089 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10090 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Delete Bindery Object: %s", ", %s") ),
10091 ])
10092 pkt.Reply(8)
10093 pkt.CompletionCodes([0x0000, 0x9600, 0xf000, 0xf200, 0xf400, 0xf600, 0xfb00,
10094 0xfc06, 0xfe07, 0xff00])
10095 # 2222/1734, 23/52
10096 pkt = NCP(0x1734, "Rename Bindery Object", 'bindery')
10097 pkt.Request( (14,108), [
10098 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10099 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Rename Bindery Object: %s", ", %s") ),
10100 rec( -1, (1,48), NewObjectName ),
10101 ])
10102 pkt.Reply(8)
10103 pkt.CompletionCodes([0x0000, 0x9600, 0xee00, 0xf000, 0xf300, 0xfc06, 0xfe07, 0xff00])
10104 # 2222/1735, 23/53
10105 pkt = NCP(0x1735, "Get Bindery Object ID", 'bindery')
10106 pkt.Request((13,60), [
10107 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10108 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Get Bindery Object: %s", ", %s") ),
10109 ])
10110 pkt.Reply(62, [
10111 rec( 8, 4, ObjectID, ENC_LITTLE_ENDIAN ),
10112 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10113 rec( 14, 48, ObjectNameLen ),
10114 ])
10115 pkt.CompletionCodes([0x0000, 0x9600, 0xef01, 0xf000, 0xfc02, 0xfe01, 0xff00])
10116 # 2222/1736, 23/54
10117 pkt = NCP(0x1736, "Get Bindery Object Name", 'bindery')
10118 pkt.Request( 14, [
10119 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
10120 ])
10121 pkt.Reply( 62, [
10122 rec( 8, 4, ObjectID, ENC_BIG_ENDIAN ),
10123 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10124 rec( 14, 48, ObjectNameLen ),
10125 ])
10126 pkt.CompletionCodes([0x0000, 0x9600, 0xf101, 0xfc02, 0xfe01, 0xff00])
10127 # 2222/1737, 23/55
10128 pkt = NCP(0x1737, "Scan Bindery Object", 'bindery')
10129 pkt.Request((17,64), [
10130 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
10131 rec( 14, 2, ObjectType, ENC_BIG_ENDIAN ),
10132 rec( 16, (1,48), ObjectName, info_str=(ObjectName, "Scan Bindery Object: %s", ", %s") ),
10133 ])
10134 pkt.Reply(65, [
10135 rec( 8, 4, ObjectID, ENC_BIG_ENDIAN ),
10136 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10137 rec( 14, 48, ObjectNameLen ),
10138 rec( 62, 1, ObjectFlags ),
10139 rec( 63, 1, ObjectSecurity ),
10140 rec( 64, 1, ObjectHasProperties ),
10141 ])
10142 pkt.CompletionCodes([0x0000, 0x9600, 0xef01, 0xfc02,
10143 0xfe01, 0xff00])
10144 # 2222/1738, 23/56
10145 pkt = NCP(0x1738, "Change Bindery Object Security", 'bindery')
10146 pkt.Request((14,61), [
10147 rec( 10, 1, ObjectSecurity ),
10148 rec( 11, 2, ObjectType, ENC_BIG_ENDIAN ),
10149 rec( 13, (1,48), ObjectName, info_str=(ObjectName, "Change Bindery Object Security: %s", ", %s") ),
10150 ])
10151 pkt.Reply(8)
10152 pkt.CompletionCodes([0x0000, 0x9600, 0xf000, 0xf101, 0xf501, 0xfc02, 0xfe01, 0xff00])
10153 # 2222/1739, 23/57
10154 pkt = NCP(0x1739, "Create Property", 'bindery')
10155 pkt.Request((16,78), [
10156 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10157 rec( 12, (1,48), ObjectName ),
10158 rec( -1, 1, PropertyType ),
10159 rec( -1, 1, ObjectSecurity ),
10160 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Create Property: %s", ", %s") ),
10161 ])
10162 pkt.Reply(8)
10163 pkt.CompletionCodes([0x0000, 0x9600, 0xed00, 0xef00, 0xf000, 0xf101,
10164 0xf200, 0xf600, 0xf700, 0xfb00, 0xfc02, 0xfe01,
10165 0xff00])
10166 # 2222/173A, 23/58
10167 pkt = NCP(0x173A, "Delete Property", 'bindery')
10168 pkt.Request((14,76), [
10169 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10170 rec( 12, (1,48), ObjectName ),
10171 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Delete Property: %s", ", %s") ),
10172 ])
10173 pkt.Reply(8)
10174 pkt.CompletionCodes([0x0000, 0x9600, 0xf000, 0xf101, 0xf600, 0xfb00, 0xfc02,
10175 0xfe01, 0xff00])
10176 # 2222/173B, 23/59
10177 pkt = NCP(0x173B, "Change Property Security", 'bindery')
10178 pkt.Request((15,77), [
10179 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10180 rec( 12, (1,48), ObjectName ),
10181 rec( -1, 1, ObjectSecurity ),
10182 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Change Property Security: %s", ", %s") ),
10183 ])
10184 pkt.Reply(8)
10185 pkt.CompletionCodes([0x0000, 0x9600, 0xf000, 0xf101, 0xf200, 0xf600, 0xfb00,
10186 0xfc02, 0xfe01, 0xff00])
10187 # 2222/173C, 23/60
10188 pkt = NCP(0x173C, "Scan Property", 'bindery')
10189 pkt.Request((18,80), [
10190 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10191 rec( 12, (1,48), ObjectName ),
10192 rec( -1, 4, LastInstance, ENC_BIG_ENDIAN ),
10193 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Scan Property: %s", ", %s") ),
10194 ])
10195 pkt.Reply( 32, [
10196 rec( 8, 16, PropertyName16 ),
10197 rec( 24, 1, ObjectFlags ),
10198 rec( 25, 1, ObjectSecurity ),
10199 rec( 26, 4, SearchInstance, ENC_BIG_ENDIAN ),
10200 rec( 30, 1, ValueAvailable ),
10201 rec( 31, 1, MoreProperties ),
10202 ])
10203 pkt.CompletionCodes([0x0000, 0x9600, 0xf000, 0xf101, 0xf200, 0xf600, 0xfb00,
10204 0xfc02, 0xfe01, 0xff00])
10205 # 2222/173D, 23/61
10206 pkt = NCP(0x173D, "Read Property Value", 'bindery')
10207 pkt.Request((15,77), [
10208 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10209 rec( 12, (1,48), ObjectName ),
10210 rec( -1, 1, PropertySegment ),
10211 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Read Property Value: %s", ", %s") ),
10212 ])
10213 pkt.Reply(138, [
10214 rec( 8, 128, PropertyData ),
10215 rec( 136, 1, PropertyHasMoreSegments ),
10216 rec( 137, 1, PropertyType ),
10217 ])
10218 pkt.CompletionCodes([0x0000, 0x8800, 0x9300, 0x9600, 0xec01,
10219 0xf000, 0xf100, 0xf900, 0xfb02, 0xfc02,
10220 0xfe01, 0xff00])
10221 # 2222/173E, 23/62
10222 pkt = NCP(0x173E, "Write Property Value", 'bindery')
10223 pkt.Request((144,206), [
10224 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10225 rec( 12, (1,48), ObjectName ),
10226 rec( -1, 1, PropertySegment ),
10227 rec( -1, 1, MoreFlag ),
10228 rec( -1, (1,16), PropertyName, info_str=(PropertyName, "Write Property Value: %s", ", %s") ),
10229 #
10230 # XXX - don't show this if MoreFlag isn't set?
10231 # In at least some packages where it's not set,
10232 # PropertyValue appears to be garbage.
10233 #
10234 rec( -1, 128, PropertyValue ),
10235 ])
10236 pkt.Reply(8)
10237 pkt.CompletionCodes([0x0000, 0x9600, 0xe800, 0xec01, 0xf000, 0xf800,
10238 0xfb02, 0xfc03, 0xfe01, 0xff00 ])
10239 # 2222/173F, 23/63
10240 pkt = NCP(0x173F, "Verify Bindery Object Password", 'bindery')
10241 pkt.Request((14,92), [
10242 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10243 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Verify Bindery Object Password: %s", ", %s") ),
10244 rec( -1, (1,32), Password ),
10245 ])
10246 pkt.Reply(8)
10247 pkt.CompletionCodes([0x0000, 0x9600, 0xe800, 0xec01, 0xf000, 0xf101,
10248 0xfb02, 0xfc03, 0xfe01, 0xff00 ])
10249 # 2222/1740, 23/64
10250 pkt = NCP(0x1740, "Change Bindery Object Password", 'bindery')
10251 pkt.Request((15,124), [
10252 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10253 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Change Bindery Object Password: %s", ", %s") ),
10254 rec( -1, (1,32), Password ),
10255 rec( -1, (1,32), NewPassword ),
10256 ])
10257 pkt.Reply(8)
10258 pkt.CompletionCodes([0x0000, 0x9600, 0xc501, 0xd701, 0xe800, 0xec01, 0xf001,
10259 0xf100, 0xf800, 0xfb02, 0xfc03, 0xfe01, 0xff00])
10260 # 2222/1741, 23/65
10261 pkt = NCP(0x1741, "Add Bindery Object To Set", 'bindery')
10262 pkt.Request((17,126), [
10263 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10264 rec( 12, (1,48), ObjectName ),
10265 rec( -1, (1,16), PropertyName ),
10266 rec( -1, 2, MemberType, ENC_BIG_ENDIAN ),
10267 rec( -1, (1,48), MemberName, info_str=(MemberName, "Add Bindery Object to Set: %s", ", %s") ),
10268 ])
10269 pkt.Reply(8)
10270 pkt.CompletionCodes([0x0000, 0x9600, 0xe800, 0xe900, 0xea00, 0xeb00,
10271 0xec01, 0xf000, 0xf800, 0xfb02, 0xfc03, 0xfe01,
10272 0xff00])
10273 # 2222/1742, 23/66
10274 pkt = NCP(0x1742, "Delete Bindery Object From Set", 'bindery')
10275 pkt.Request((17,126), [
10276 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10277 rec( 12, (1,48), ObjectName ),
10278 rec( -1, (1,16), PropertyName ),
10279 rec( -1, 2, MemberType, ENC_BIG_ENDIAN ),
10280 rec( -1, (1,48), MemberName, info_str=(MemberName, "Delete Bindery Object from Set: %s", ", %s") ),
10281 ])
10282 pkt.Reply(8)
10283 pkt.CompletionCodes([0x0000, 0x9600, 0xeb00, 0xf000, 0xf800, 0xfb02,
10284 0xfc03, 0xfe01, 0xff00])
10285 # 2222/1743, 23/67
10286 pkt = NCP(0x1743, "Is Bindery Object In Set", 'bindery')
10287 pkt.Request((17,126), [
10288 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10289 rec( 12, (1,48), ObjectName ),
10290 rec( -1, (1,16), PropertyName ),
10291 rec( -1, 2, MemberType, ENC_BIG_ENDIAN ),
10292 rec( -1, (1,48), MemberName, info_str=(MemberName, "Is Bindery Object in Set: %s", ", %s") ),
10293 ])
10294 pkt.Reply(8)
10295 pkt.CompletionCodes([0x0000, 0x9600, 0xea00, 0xeb00, 0xec01, 0xf000,
10296 0xfb02, 0xfc03, 0xfe01, 0xff00])
10297 # 2222/1744, 23/68
10298 pkt = NCP(0x1744, "Close Bindery", 'bindery')
10299 pkt.Request(10)
10300 pkt.Reply(8)
10301 pkt.CompletionCodes([0x0000, 0xff00])
10302 # 2222/1745, 23/69
10303 pkt = NCP(0x1745, "Open Bindery", 'bindery')
10304 pkt.Request(10)
10305 pkt.Reply(8)
10306 pkt.CompletionCodes([0x0000, 0xff00])
10307 # 2222/1746, 23/70
10308 pkt = NCP(0x1746, "Get Bindery Access Level", 'bindery')
10309 pkt.Request(10)
10310 pkt.Reply(13, [
10311 rec( 8, 1, ObjectSecurity ),
10312 rec( 9, 4, LoggedObjectID, ENC_BIG_ENDIAN ),
10313 ])
10314 pkt.CompletionCodes([0x0000, 0x9600])
10315 # 2222/1747, 23/71
10316 pkt = NCP(0x1747, "Scan Bindery Object Trustee Paths", 'bindery')
10317 pkt.Request(17, [
10318 rec( 10, 1, VolumeNumber ),
10319 rec( 11, 2, LastSequenceNumber, ENC_BIG_ENDIAN ),
10320 rec( 13, 4, ObjectID, ENC_BIG_ENDIAN ),
10321 ])
10322 pkt.Reply((16,270), [
10323 rec( 8, 2, LastSequenceNumber, ENC_BIG_ENDIAN),
10324 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
10325 rec( 14, 1, ObjectSecurity ),
10326 rec( 15, (1,255), Path ),
10327 ])
10328 pkt.CompletionCodes([0x0000, 0x9300, 0x9600, 0xa100, 0xf000, 0xf100,
10329 0xf200, 0xfc02, 0xfe01, 0xff00])
10330 # 2222/1748, 23/72
10331 pkt = NCP(0x1748, "Get Bindery Object Access Level", 'bindery')
10332 pkt.Request(14, [
10333 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
10334 ])
10335 pkt.Reply(9, [
10336 rec( 8, 1, ObjectSecurity ),
10337 ])
10338 pkt.CompletionCodes([0x0000, 0x9600])
10339 # 2222/1749, 23/73
10340 pkt = NCP(0x1749, "Is Calling Station a Manager", 'bindery')
10341 pkt.Request(10)
10342 pkt.Reply(8)
10343 pkt.CompletionCodes([0x0003, 0xff1e])
10344 # 2222/174A, 23/74
10345 pkt = NCP(0x174A, "Keyed Verify Password", 'bindery')
10346 pkt.Request((21,68), [
10347 rec( 10, 8, LoginKey ),
10348 rec( 18, 2, ObjectType, ENC_BIG_ENDIAN ),
10349 rec( 20, (1,48), ObjectName, info_str=(ObjectName, "Keyed Verify Password: %s", ", %s") ),
10350 ])
10351 pkt.Reply(8)
10352 pkt.CompletionCodes([0x0000, 0xc500, 0xfe01, 0xff0c])
10353 # 2222/174B, 23/75
10354 pkt = NCP(0x174B, "Keyed Change Password", 'bindery')
10355 pkt.Request((22,100), [
10356 rec( 10, 8, LoginKey ),
10357 rec( 18, 2, ObjectType, ENC_BIG_ENDIAN ),
10358 rec( 20, (1,48), ObjectName, info_str=(ObjectName, "Keyed Change Password: %s", ", %s") ),
10359 rec( -1, (1,32), Password ),
10360 ])
10361 pkt.Reply(8)
10362 pkt.CompletionCodes([0x0000, 0xc500, 0xfe01, 0xff0c])
10363 # 2222/174C, 23/76
10364 pkt = NCP(0x174C, "List Relations Of an Object", 'bindery')
10365 pkt.Request((18,80), [
10366 rec( 10, 4, LastSeen, ENC_BIG_ENDIAN ),
10367 rec( 14, 2, ObjectType, ENC_BIG_ENDIAN ),
10368 rec( 16, (1,48), ObjectName, info_str=(ObjectName, "List Relations of an Object: %s", ", %s") ),
10369 rec( -1, (1,16), PropertyName ),
10370 ])
10371 pkt.Reply(14, [
10372 rec( 8, 2, RelationsCount, ENC_BIG_ENDIAN, var="x" ),
10373 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN, repeat="x" ),
10374 ])
10375 pkt.CompletionCodes([0x0000, 0xf000, 0xf200, 0xfe01, 0xff00])
10376 # 2222/1764, 23/100
10377 pkt = NCP(0x1764, "Create Queue", 'qms')
10378 pkt.Request((15,316), [
10379 rec( 10, 2, QueueType, ENC_BIG_ENDIAN ),
10380 rec( 12, (1,48), QueueName, info_str=(QueueName, "Create Queue: %s", ", %s") ),
10381 rec( -1, 1, PathBase ),
10382 rec( -1, (1,255), Path ),
10383 ])
10384 pkt.Reply(12, [
10385 rec( 8, 4, QueueID ),
10386 ])
10387 pkt.CompletionCodes([0x0000, 0x9600, 0x9900, 0xd000, 0xd100,
10388 0xd200, 0xd300, 0xd400, 0xd500, 0xd601,
10389 0xd703, 0xd800, 0xd902, 0xda01, 0xdb02,
10390 0xee00, 0xff00])
10391 # 2222/1765, 23/101
10392 pkt = NCP(0x1765, "Destroy Queue", 'qms')
10393 pkt.Request(14, [
10394 rec( 10, 4, QueueID ),
10395 ])
10396 pkt.Reply(8)
10397 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10398 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10399 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10400 # 2222/1766, 23/102
10401 pkt = NCP(0x1766, "Read Queue Current Status", 'qms')
10402 pkt.Request(14, [
10403 rec( 10, 4, QueueID ),
10404 ])
10405 pkt.Reply(20, [
10406 rec( 8, 4, QueueID ),
10407 rec( 12, 1, QueueStatus ),
10408 rec( 13, 1, CurrentEntries ),
10409 rec( 14, 1, CurrentServers, var="x" ),
10410 rec( 15, 4, ServerID, repeat="x" ),
10411 rec( 19, 1, ServerStationList, repeat="x" ),
10412 ])
10413 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10414 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10415 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10416 # 2222/1767, 23/103
10417 pkt = NCP(0x1767, "Set Queue Current Status", 'qms')
10418 pkt.Request(15, [
10419 rec( 10, 4, QueueID ),
10420 rec( 14, 1, QueueStatus ),
10421 ])
10422 pkt.Reply(8)
10423 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10424 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10425 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07,
10426 0xff00])
10427 # 2222/1768, 23/104
10428 pkt = NCP(0x1768, "Create Queue Job And File", 'qms')
10429 pkt.Request(264, [
10430 rec( 10, 4, QueueID ),
10431 rec( 14, 250, JobStruct ),
10432 ])
10433 pkt.Reply(62, [
10434 rec( 8, 1, ClientStation ),
10435 rec( 9, 1, ClientTaskNumber ),
10436 rec( 10, 4, ClientIDNumber, ENC_BIG_ENDIAN ),
10437 rec( 14, 4, TargetServerIDNumber, ENC_BIG_ENDIAN ),
10438 rec( 18, 6, TargetExecutionTime ),
10439 rec( 24, 6, JobEntryTime ),
10440 rec( 30, 2, JobNumber, ENC_BIG_ENDIAN ),
10441 rec( 32, 2, JobType, ENC_BIG_ENDIAN ),
10442 rec( 34, 1, JobPosition ),
10443 rec( 35, 1, JobControlFlags ),
10444 rec( 36, 14, JobFileName ),
10445 rec( 50, 6, JobFileHandle ),
10446 rec( 56, 1, ServerStation ),
10447 rec( 57, 1, ServerTaskNumber ),
10448 rec( 58, 4, ServerID, ENC_BIG_ENDIAN ),
10449 ])
10450 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10451 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10452 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07,
10453 0xff00])
10454 # 2222/1769, 23/105
10455 pkt = NCP(0x1769, "Close File And Start Queue Job", 'qms')
10456 pkt.Request(16, [
10457 rec( 10, 4, QueueID ),
10458 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10459 ])
10460 pkt.Reply(8)
10461 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10462 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10463 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10464 # 2222/176A, 23/106
10465 pkt = NCP(0x176A, "Remove Job From Queue", 'qms')
10466 pkt.Request(16, [
10467 rec( 10, 4, QueueID ),
10468 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10469 ])
10470 pkt.Reply(8)
10471 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10472 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10473 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10474 # 2222/176B, 23/107
10475 pkt = NCP(0x176B, "Get Queue Job List", 'qms')
10476 pkt.Request(14, [
10477 rec( 10, 4, QueueID ),
10478 ])
10479 pkt.Reply(12, [
10480 rec( 8, 2, JobCount, ENC_BIG_ENDIAN, var="x" ),
10481 rec( 10, 2, JobNumber, ENC_BIG_ENDIAN, repeat="x" ),
10482 ])
10483 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10484 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10485 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10486 # 2222/176C, 23/108
10487 pkt = NCP(0x176C, "Read Queue Job Entry", 'qms')
10488 pkt.Request(16, [
10489 rec( 10, 4, QueueID ),
10490 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10491 ])
10492 pkt.Reply(258, [
10493 rec( 8, 250, JobStruct ),
10494 ])
10495 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10496 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10497 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10498 # 2222/176D, 23/109
10499 pkt = NCP(0x176D, "Change Queue Job Entry", 'qms')
10500 pkt.Request(260, [
10501 rec( 14, 250, JobStruct ),
10502 ])
10503 pkt.Reply(8)
10504 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10505 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10506 0xd800, 0xd902, 0xda01, 0xdb02, 0xff18])
10507 # 2222/176E, 23/110
10508 pkt = NCP(0x176E, "Change Queue Job Position", 'qms')
10509 pkt.Request(17, [
10510 rec( 10, 4, QueueID ),
10511 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10512 rec( 16, 1, NewPosition ),
10513 ])
10514 pkt.Reply(8)
10515 pkt.CompletionCodes([0x0000, 0x9600, 0xd000, 0xd100, 0xd300, 0xd500,
10516 0xd601, 0xfe07, 0xff1f])
10517 # 2222/176F, 23/111
10518 pkt = NCP(0x176F, "Attach Queue Server To Queue", 'qms')
10519 pkt.Request(14, [
10520 rec( 10, 4, QueueID ),
10521 ])
10522 pkt.Reply(8)
10523 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10524 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10525 0xd800, 0xd902, 0xda01, 0xdb02, 0xea00,
10526 0xfc06, 0xff00])
10527 # 2222/1770, 23/112
10528 pkt = NCP(0x1770, "Detach Queue Server From Queue", 'qms')
10529 pkt.Request(14, [
10530 rec( 10, 4, QueueID ),
10531 ])
10532 pkt.Reply(8)
10533 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10534 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10535 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10536 # 2222/1771, 23/113
10537 pkt = NCP(0x1771, "Service Queue Job", 'qms')
10538 pkt.Request(16, [
10539 rec( 10, 4, QueueID ),
10540 rec( 14, 2, ServiceType, ENC_BIG_ENDIAN ),
10541 ])
10542 pkt.Reply(62, [
10543 rec( 8, 1, ClientStation ),
10544 rec( 9, 1, ClientTaskNumber ),
10545 rec( 10, 4, ClientIDNumber, ENC_BIG_ENDIAN ),
10546 rec( 14, 4, TargetServerIDNumber, ENC_BIG_ENDIAN ),
10547 rec( 18, 6, TargetExecutionTime ),
10548 rec( 24, 6, JobEntryTime ),
10549 rec( 30, 2, JobNumber, ENC_BIG_ENDIAN ),
10550 rec( 32, 2, JobType, ENC_BIG_ENDIAN ),
10551 rec( 34, 1, JobPosition ),
10552 rec( 35, 1, JobControlFlags ),
10553 rec( 36, 14, JobFileName ),
10554 rec( 50, 6, JobFileHandle ),
10555 rec( 56, 1, ServerStation ),
10556 rec( 57, 1, ServerTaskNumber ),
10557 rec( 58, 4, ServerID, ENC_BIG_ENDIAN ),
10558 ])
10559 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10560 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10561 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10562 # 2222/1772, 23/114
10563 pkt = NCP(0x1772, "Finish Servicing Queue Job", 'qms')
10564 pkt.Request(18, [
10565 rec( 10, 4, QueueID ),
10566 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10567 rec( 16, 2, ChargeInformation, ENC_BIG_ENDIAN ),
10568 ])
10569 pkt.Reply(8)
10570 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10571 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10572 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07, 0xff00])
10573 # 2222/1773, 23/115
10574 pkt = NCP(0x1773, "Abort Servicing Queue Job", 'qms')
10575 pkt.Request(16, [
10576 rec( 10, 4, QueueID ),
10577 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10578 ])
10579 pkt.Reply(8)
10580 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10581 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10582 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07, 0xff18])
10583 # 2222/1774, 23/116
10584 pkt = NCP(0x1774, "Change To Client Rights", 'qms')
10585 pkt.Request(16, [
10586 rec( 10, 4, QueueID ),
10587 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10588 ])
10589 pkt.Reply(8)
10590 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10591 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10592 0xd800, 0xd902, 0xda01, 0xdb02, 0xff18])
10593 # 2222/1775, 23/117
10594 pkt = NCP(0x1775, "Restore Queue Server Rights", 'qms')
10595 pkt.Request(10)
10596 pkt.Reply(8)
10597 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10598 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10599 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10600 # 2222/1776, 23/118
10601 pkt = NCP(0x1776, "Read Queue Server Current Status", 'qms')
10602 pkt.Request(19, [
10603 rec( 10, 4, QueueID ),
10604 rec( 14, 4, ServerID, ENC_BIG_ENDIAN ),
10605 rec( 18, 1, ServerStation ),
10606 ])
10607 pkt.Reply(72, [
10608 rec( 8, 64, ServerStatusRecord ),
10609 ])
10610 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10611 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10612 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10613 # 2222/1777, 23/119
10614 pkt = NCP(0x1777, "Set Queue Server Current Status", 'qms')
10615 pkt.Request(78, [
10616 rec( 10, 4, QueueID ),
10617 rec( 14, 64, ServerStatusRecord ),
10618 ])
10619 pkt.Reply(8)
10620 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10621 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10622 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10623 # 2222/1778, 23/120
10624 pkt = NCP(0x1778, "Get Queue Job File Size", 'qms')
10625 pkt.Request(16, [
10626 rec( 10, 4, QueueID ),
10627 rec( 14, 2, JobNumber, ENC_BIG_ENDIAN ),
10628 ])
10629 pkt.Reply(18, [
10630 rec( 8, 4, QueueID ),
10631 rec( 12, 2, JobNumber, ENC_BIG_ENDIAN ),
10632 rec( 14, 4, FileSize, ENC_BIG_ENDIAN ),
10633 ])
10634 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10635 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10636 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07, 0xff00])
10637 # 2222/1779, 23/121
10638 pkt = NCP(0x1779, "Create Queue Job And File", 'qms')
10639 pkt.Request(264, [
10640 rec( 10, 4, QueueID ),
10641 rec( 14, 250, JobStruct3x ),
10642 ])
10643 pkt.Reply(94, [
10644 rec( 8, 86, JobStructNew ),
10645 ])
10646 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10647 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10648 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07, 0xff00])
10649 # 2222/177A, 23/122
10650 pkt = NCP(0x177A, "Read Queue Job Entry", 'qms')
10651 pkt.Request(18, [
10652 rec( 10, 4, QueueID ),
10653 rec( 14, 4, JobNumberLong ),
10654 ])
10655 pkt.Reply(258, [
10656 rec( 8, 250, JobStruct3x ),
10657 ])
10658 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10659 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10660 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10661 # 2222/177B, 23/123
10662 pkt = NCP(0x177B, "Change Queue Job Entry", 'qms')
10663 pkt.Request(264, [
10664 rec( 10, 4, QueueID ),
10665 rec( 14, 250, JobStruct ),
10666 ])
10667 pkt.Reply(8)
10668 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10669 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10670 0xd800, 0xd902, 0xda01, 0xdb02, 0xea02, 0xfc07, 0xff00])
10671 # 2222/177C, 23/124
10672 pkt = NCP(0x177C, "Service Queue Job", 'qms')
10673 pkt.Request(16, [
10674 rec( 10, 4, QueueID ),
10675 rec( 14, 2, ServiceType ),
10676 ])
10677 pkt.Reply(94, [
10678 rec( 8, 86, JobStructNew ),
10679 ])
10680 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10681 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10682 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc05, 0xff00])
10683 # 2222/177D, 23/125
10684 pkt = NCP(0x177D, "Read Queue Current Status", 'qms')
10685 pkt.Request(14, [
10686 rec( 10, 4, QueueID ),
10687 ])
10688 pkt.Reply(32, [
10689 rec( 8, 4, QueueID ),
10690 rec( 12, 1, QueueStatus ),
10691 rec( 13, 3, Reserved3 ),
10692 rec( 16, 4, CurrentEntries ),
10693 rec( 20, 4, CurrentServers, var="x" ),
10694 rec( 24, 4, ServerID, repeat="x" ),
10695 rec( 28, 4, ServerStationLong, ENC_LITTLE_ENDIAN, repeat="x" ),
10696 ])
10697 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10698 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10699 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10700 # 2222/177E, 23/126
10701 pkt = NCP(0x177E, "Set Queue Current Status", 'qms')
10702 pkt.Request(15, [
10703 rec( 10, 4, QueueID ),
10704 rec( 14, 1, QueueStatus ),
10705 ])
10706 pkt.Reply(8)
10707 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10708 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10709 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10710 # 2222/177F, 23/127
10711 pkt = NCP(0x177F, "Close File And Start Queue Job", 'qms')
10712 pkt.Request(18, [
10713 rec( 10, 4, QueueID ),
10714 rec( 14, 4, JobNumberLong ),
10715 ])
10716 pkt.Reply(8)
10717 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10718 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10719 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc07, 0xff00])
10720 # 2222/1780, 23/128
10721 pkt = NCP(0x1780, "Remove Job From Queue", 'qms')
10722 pkt.Request(18, [
10723 rec( 10, 4, QueueID ),
10724 rec( 14, 4, JobNumberLong ),
10725 ])
10726 pkt.Reply(8)
10727 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10728 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10729 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10730 # 2222/1781, 23/129
10731 pkt = NCP(0x1781, "Get Queue Job List", 'qms')
10732 pkt.Request(18, [
10733 rec( 10, 4, QueueID ),
10734 rec( 14, 4, JobNumberLong ),
10735 ])
10736 pkt.Reply(20, [
10737 rec( 8, 4, TotalQueueJobs ),
10738 rec( 12, 4, ReplyQueueJobNumbers, var="x" ),
10739 rec( 16, 4, JobNumberLong, repeat="x" ),
10740 ])
10741 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10742 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10743 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10744 # 2222/1782, 23/130
10745 pkt = NCP(0x1782, "Change Job Priority", 'qms')
10746 pkt.Request(22, [
10747 rec( 10, 4, QueueID ),
10748 rec( 14, 4, JobNumberLong ),
10749 rec( 18, 4, Priority ),
10750 ])
10751 pkt.Reply(8)
10752 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10753 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10754 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10755 # 2222/1783, 23/131
10756 pkt = NCP(0x1783, "Finish Servicing Queue Job", 'qms')
10757 pkt.Request(22, [
10758 rec( 10, 4, QueueID ),
10759 rec( 14, 4, JobNumberLong ),
10760 rec( 18, 4, ChargeInformation ),
10761 ])
10762 pkt.Reply(8)
10763 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10764 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10765 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc05, 0xff00])
10766 # 2222/1784, 23/132
10767 pkt = NCP(0x1784, "Abort Servicing Queue Job", 'qms')
10768 pkt.Request(18, [
10769 rec( 10, 4, QueueID ),
10770 rec( 14, 4, JobNumberLong ),
10771 ])
10772 pkt.Reply(8)
10773 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10774 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10775 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc05, 0xff18])
10776 # 2222/1785, 23/133
10777 pkt = NCP(0x1785, "Change To Client Rights", 'qms')
10778 pkt.Request(18, [
10779 rec( 10, 4, QueueID ),
10780 rec( 14, 4, JobNumberLong ),
10781 ])
10782 pkt.Reply(8)
10783 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10784 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10785 0xd800, 0xd902, 0xda01, 0xdb02, 0xff18])
10786 # 2222/1786, 23/134
10787 pkt = NCP(0x1786, "Read Queue Server Current Status", 'qms')
10788 pkt.Request(22, [
10789 rec( 10, 4, QueueID ),
10790 rec( 14, 4, ServerID, ENC_BIG_ENDIAN ),
10791 rec( 18, 4, ServerStation ),
10792 ])
10793 pkt.Reply(72, [
10794 rec( 8, 64, ServerStatusRecord ),
10795 ])
10796 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10797 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10798 0xd800, 0xd902, 0xda01, 0xdb02, 0xff00])
10799 # 2222/1787, 23/135
10800 pkt = NCP(0x1787, "Get Queue Job File Size", 'qms')
10801 pkt.Request(18, [
10802 rec( 10, 4, QueueID ),
10803 rec( 14, 4, JobNumberLong ),
10804 ])
10805 pkt.Reply(20, [
10806 rec( 8, 4, QueueID ),
10807 rec( 12, 4, JobNumberLong ),
10808 rec( 16, 4, FileSize, ENC_BIG_ENDIAN ),
10809 ])
10810 pkt.CompletionCodes([0x0000, 0x9900, 0xd000, 0xd100, 0xd200,
10811 0xd300, 0xd400, 0xd500, 0xd601, 0xd703,
10812 0xd800, 0xd902, 0xda01, 0xdb02, 0xfc05, 0xff00])
10813 # 2222/1788, 23/136
10814 pkt = NCP(0x1788, "Move Queue Job From Src Q to Dst Q", 'qms')
10815 pkt.Request(22, [
10816 rec( 10, 4, QueueID ),
10817 rec( 14, 4, JobNumberLong ),
10818 rec( 18, 4, DstQueueID ),
10819 ])
10820 pkt.Reply(12, [
10821 rec( 8, 4, JobNumberLong ),
10822 ])
10823 pkt.CompletionCodes([0x0000, 0x7e01, 0xfc06])
10824 # 2222/1789, 23/137
10825 pkt = NCP(0x1789, "Get Queue Jobs From Form List", 'qms')
10826 pkt.Request(24, [
10827 rec( 10, 4, QueueID ),
10828 rec( 14, 4, QueueStartPosition ),
10829 rec( 18, 4, FormTypeCnt, ENC_LITTLE_ENDIAN, var="x" ),
10830 rec( 22, 2, FormType, repeat="x" ),
10831 ])
10832 pkt.Reply(20, [
10833 rec( 8, 4, TotalQueueJobs ),
10834 rec( 12, 4, JobCount, var="x" ),
10835 rec( 16, 4, JobNumberLong, repeat="x" ),
10836 ])
10837 pkt.CompletionCodes([0x0000, 0x7e01, 0xd300, 0xfc06])
10838 # 2222/178A, 23/138
10839 pkt = NCP(0x178A, "Service Queue Job By Form List", 'qms')
10840 pkt.Request(24, [
10841 rec( 10, 4, QueueID ),
10842 rec( 14, 4, QueueStartPosition ),
10843 rec( 18, 4, FormTypeCnt, ENC_LITTLE_ENDIAN, var= "x" ),
10844 rec( 22, 2, FormType, repeat="x" ),
10845 ])
10846 pkt.Reply(94, [
10847 rec( 8, 86, JobStructNew ),
10848 ])
10849 pkt.CompletionCodes([0x0000, 0x7e01, 0xd902, 0xfc06, 0xff00])
10850 # 2222/1796, 23/150
10851 pkt = NCP(0x1796, "Get Current Account Status", 'accounting')
10852 pkt.Request((13,60), [
10853 rec( 10, 2, ObjectType, ENC_BIG_ENDIAN ),
10854 rec( 12, (1,48), ObjectName, info_str=(ObjectName, "Get Current Account Status: %s", ", %s") ),
10855 ])
10856 pkt.Reply(264, [
10857 rec( 8, 4, AccountBalance, ENC_BIG_ENDIAN ),
10858 rec( 12, 4, CreditLimit, ENC_BIG_ENDIAN ),
10859 rec( 16, 120, Reserved120 ),
10860 rec( 136, 4, HolderID, ENC_BIG_ENDIAN ),
10861 rec( 140, 4, HoldAmount, ENC_BIG_ENDIAN ),
10862 rec( 144, 4, HolderID, ENC_BIG_ENDIAN ),
10863 rec( 148, 4, HoldAmount, ENC_BIG_ENDIAN ),
10864 rec( 152, 4, HolderID, ENC_BIG_ENDIAN ),
10865 rec( 156, 4, HoldAmount, ENC_BIG_ENDIAN ),
10866 rec( 160, 4, HolderID, ENC_BIG_ENDIAN ),
10867 rec( 164, 4, HoldAmount, ENC_BIG_ENDIAN ),
10868 rec( 168, 4, HolderID, ENC_BIG_ENDIAN ),
10869 rec( 172, 4, HoldAmount, ENC_BIG_ENDIAN ),
10870 rec( 176, 4, HolderID, ENC_BIG_ENDIAN ),
10871 rec( 180, 4, HoldAmount, ENC_BIG_ENDIAN ),
10872 rec( 184, 4, HolderID, ENC_BIG_ENDIAN ),
10873 rec( 188, 4, HoldAmount, ENC_BIG_ENDIAN ),
10874 rec( 192, 4, HolderID, ENC_BIG_ENDIAN ),
10875 rec( 196, 4, HoldAmount, ENC_BIG_ENDIAN ),
10876 rec( 200, 4, HolderID, ENC_BIG_ENDIAN ),
10877 rec( 204, 4, HoldAmount, ENC_BIG_ENDIAN ),
10878 rec( 208, 4, HolderID, ENC_BIG_ENDIAN ),
10879 rec( 212, 4, HoldAmount, ENC_BIG_ENDIAN ),
10880 rec( 216, 4, HolderID, ENC_BIG_ENDIAN ),
10881 rec( 220, 4, HoldAmount, ENC_BIG_ENDIAN ),
10882 rec( 224, 4, HolderID, ENC_BIG_ENDIAN ),
10883 rec( 228, 4, HoldAmount, ENC_BIG_ENDIAN ),
10884 rec( 232, 4, HolderID, ENC_BIG_ENDIAN ),
10885 rec( 236, 4, HoldAmount, ENC_BIG_ENDIAN ),
10886 rec( 240, 4, HolderID, ENC_BIG_ENDIAN ),
10887 rec( 244, 4, HoldAmount, ENC_BIG_ENDIAN ),
10888 rec( 248, 4, HolderID, ENC_BIG_ENDIAN ),
10889 rec( 252, 4, HoldAmount, ENC_BIG_ENDIAN ),
10890 rec( 256, 4, HolderID, ENC_BIG_ENDIAN ),
10891 rec( 260, 4, HoldAmount, ENC_BIG_ENDIAN ),
10892 ])
10893 pkt.CompletionCodes([0x0000, 0x9600, 0xc000, 0xc101, 0xc400, 0xe800,
10894 0xea00, 0xeb00, 0xec00, 0xfc06, 0xfe07, 0xff00])
10895 # 2222/1797, 23/151
10896 pkt = NCP(0x1797, "Submit Account Charge", 'accounting')
10897 pkt.Request((26,327), [
10898 rec( 10, 2, ServiceType, ENC_BIG_ENDIAN ),
10899 rec( 12, 4, ChargeAmount, ENC_BIG_ENDIAN ),
10900 rec( 16, 4, HoldCancelAmount, ENC_BIG_ENDIAN ),
10901 rec( 20, 2, ObjectType, ENC_BIG_ENDIAN ),
10902 rec( 22, 2, CommentType, ENC_BIG_ENDIAN ),
10903 rec( 24, (1,48), ObjectName, info_str=(ObjectName, "Submit Account Charge: %s", ", %s") ),
10904 rec( -1, (1,255), Comment ),
10905 ])
10906 pkt.Reply(8)
10907 pkt.CompletionCodes([0x0000, 0x0102, 0x8800, 0x9400, 0x9600, 0xa201,
10908 0xc000, 0xc101, 0xc200, 0xc400, 0xe800, 0xea00,
10909 0xeb00, 0xec00, 0xfe07, 0xff00])
10910 # 2222/1798, 23/152
10911 pkt = NCP(0x1798, "Submit Account Hold", 'accounting')
10912 pkt.Request((17,64), [
10913 rec( 10, 4, HoldCancelAmount, ENC_BIG_ENDIAN ),
10914 rec( 14, 2, ObjectType, ENC_BIG_ENDIAN ),
10915 rec( 16, (1,48), ObjectName, info_str=(ObjectName, "Submit Account Hold: %s", ", %s") ),
10916 ])
10917 pkt.Reply(8)
10918 pkt.CompletionCodes([0x0000, 0x0102, 0x8800, 0x9400, 0x9600, 0xa201,
10919 0xc000, 0xc101, 0xc200, 0xc400, 0xe800, 0xea00,
10920 0xeb00, 0xec00, 0xfe07, 0xff00])
10921 # 2222/1799, 23/153
10922 pkt = NCP(0x1799, "Submit Account Note", 'accounting')
10923 pkt.Request((18,319), [
10924 rec( 10, 2, ServiceType, ENC_BIG_ENDIAN ),
10925 rec( 12, 2, ObjectType, ENC_BIG_ENDIAN ),
10926 rec( 14, 2, CommentType, ENC_BIG_ENDIAN ),
10927 rec( 16, (1,48), ObjectName, info_str=(ObjectName, "Submit Account Note: %s", ", %s") ),
10928 rec( -1, (1,255), Comment ),
10929 ])
10930 pkt.Reply(8)
10931 pkt.CompletionCodes([0x0000, 0x0102, 0x9600, 0xc000, 0xc101, 0xc400,
10932 0xe800, 0xea00, 0xeb00, 0xec00, 0xf000, 0xfc06,
10933 0xff00])
10934 # 2222/17c8, 23/200
10935 pkt = NCP(0x17c8, "Check Console Privileges", 'fileserver')
10936 pkt.Request(10)
10937 pkt.Reply(8)
10938 pkt.CompletionCodes([0x0000, 0xc601])
10939 # 2222/17c9, 23/201
10940 pkt = NCP(0x17c9, "Get File Server Description Strings", 'fileserver')
10941 pkt.Request(10)
10942 pkt.Reply(108, [
10943 rec( 8, 100, DescriptionStrings ),
10944 ])
10945 pkt.CompletionCodes([0x0000, 0x9600])
10946 # 2222/17CA, 23/202
10947 pkt = NCP(0x17CA, "Set File Server Date And Time", 'fileserver')
10948 pkt.Request(16, [
10949 rec( 10, 1, Year ),
10950 rec( 11, 1, Month ),
10951 rec( 12, 1, Day ),
10952 rec( 13, 1, Hour ),
10953 rec( 14, 1, Minute ),
10954 rec( 15, 1, Second ),
10955 ])
10956 pkt.Reply(8)
10957 pkt.CompletionCodes([0x0000, 0xc601])
10958 # 2222/17CB, 23/203
10959 pkt = NCP(0x17CB, "Disable File Server Login", 'fileserver')
10960 pkt.Request(10)
10961 pkt.Reply(8)
10962 pkt.CompletionCodes([0x0000, 0xc601])
10963 # 2222/17CC, 23/204
10964 pkt = NCP(0x17CC, "Enable File Server Login", 'fileserver')
10965 pkt.Request(10)
10966 pkt.Reply(8)
10967 pkt.CompletionCodes([0x0000, 0xc601])
10968 # 2222/17CD, 23/205
10969 pkt = NCP(0x17CD, "Get File Server Login Status", 'fileserver')
10970 pkt.Request(10)
10971 pkt.Reply(9, [
10972 rec( 8, 1, UserLoginAllowed ),
10973 ])
10974 pkt.CompletionCodes([0x0000, 0x9600, 0xfb01])
10975 # 2222/17CF, 23/207
10976 pkt = NCP(0x17CF, "Disable Transaction Tracking", 'fileserver')
10977 pkt.Request(10)
10978 pkt.Reply(8)
10979 pkt.CompletionCodes([0x0000, 0xc601])
10980 # 2222/17D0, 23/208
10981 pkt = NCP(0x17D0, "Enable Transaction Tracking", 'fileserver')
10982 pkt.Request(10)
10983 pkt.Reply(8)
10984 pkt.CompletionCodes([0x0000, 0xc601])
10985 # 2222/17D1, 23/209
10986 pkt = NCP(0x17D1, "Send Console Broadcast", 'fileserver')
10987 pkt.Request((13,267), [
10988 rec( 10, 1, NumberOfStations, var="x" ),
10989 rec( 11, 1, StationList, repeat="x" ),
10990 rec( 12, (1, 255), TargetMessage, info_str=(TargetMessage, "Send Console Broadcast: %s", ", %s") ),
10991 ])
10992 pkt.Reply(8)
10993 pkt.CompletionCodes([0x0000, 0xc601, 0xfd00])
10994 # 2222/17D2, 23/210
10995 pkt = NCP(0x17D2, "Clear Connection Number", 'fileserver')
10996 pkt.Request(11, [
10997 rec( 10, 1, ConnectionNumber, info_str=(ConnectionNumber, "Clear Connection Number %d", ", %d") ),
10998 ])
10999 pkt.Reply(8)
11000 pkt.CompletionCodes([0x0000, 0xc601, 0xfd00])
11001 # 2222/17D3, 23/211
11002 pkt = NCP(0x17D3, "Down File Server", 'fileserver')
11003 pkt.Request(11, [
11004 rec( 10, 1, ForceFlag ),
11005 ])
11006 pkt.Reply(8)
11007 pkt.CompletionCodes([0x0000, 0xc601, 0xff00])
11008 # 2222/17D4, 23/212
11009 pkt = NCP(0x17D4, "Get File System Statistics", 'fileserver')
11010 pkt.Request(10)
11011 pkt.Reply(50, [
11012 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11013 rec( 12, 2, ConfiguredMaxOpenFiles ),
11014 rec( 14, 2, ActualMaxOpenFiles ),
11015 rec( 16, 2, CurrentOpenFiles ),
11016 rec( 18, 4, TotalFilesOpened ),
11017 rec( 22, 4, TotalReadRequests ),
11018 rec( 26, 4, TotalWriteRequests ),
11019 rec( 30, 2, CurrentChangedFATs ),
11020 rec( 32, 4, TotalChangedFATs ),
11021 rec( 36, 2, FATWriteErrors ),
11022 rec( 38, 2, FatalFATWriteErrors ),
11023 rec( 40, 2, FATScanErrors ),
11024 rec( 42, 2, ActualMaxIndexedFiles ),
11025 rec( 44, 2, ActiveIndexedFiles ),
11026 rec( 46, 2, AttachedIndexedFiles ),
11027 rec( 48, 2, AvailableIndexedFiles ),
11028 ])
11029 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11030 # 2222/17D5, 23/213
11031 pkt = NCP(0x17D5, "Get Transaction Tracking Statistics", 'fileserver')
11032 pkt.Request((13,267), [
11033 rec( 10, 2, LastRecordSeen ),
11034 rec( 12, (1,255), SemaphoreName ),
11035 ])
11036 pkt.Reply(53, [
11037 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11038 rec( 12, 1, TransactionTrackingSupported ),
11039 rec( 13, 1, TransactionTrackingEnabled ),
11040 rec( 14, 2, TransactionVolumeNumber ),
11041 rec( 16, 2, ConfiguredMaxSimultaneousTransactions ),
11042 rec( 18, 2, ActualMaxSimultaneousTransactions ),
11043 rec( 20, 2, CurrentTransactionCount ),
11044 rec( 22, 4, TotalTransactionsPerformed ),
11045 rec( 26, 4, TotalWriteTransactionsPerformed ),
11046 rec( 30, 4, TotalTransactionsBackedOut ),
11047 rec( 34, 2, TotalUnfilledBackoutRequests ),
11048 rec( 36, 2, TransactionDiskSpace ),
11049 rec( 38, 4, TransactionFATAllocations ),
11050 rec( 42, 4, TransactionFileSizeChanges ),
11051 rec( 46, 4, TransactionFilesTruncated ),
11052 rec( 50, 1, NumberOfEntries, var="x" ),
11053 rec( 51, 2, ConnTaskStruct, repeat="x" ),
11054 ])
11055 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11056 # 2222/17D6, 23/214
11057 pkt = NCP(0x17D6, "Read Disk Cache Statistics", 'fileserver')
11058 pkt.Request(10)
11059 pkt.Reply(86, [
11060 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11061 rec( 12, 2, CacheBufferCount ),
11062 rec( 14, 2, CacheBufferSize ),
11063 rec( 16, 2, DirtyCacheBuffers ),
11064 rec( 18, 4, CacheReadRequests ),
11065 rec( 22, 4, CacheWriteRequests ),
11066 rec( 26, 4, CacheHits ),
11067 rec( 30, 4, CacheMisses ),
11068 rec( 34, 4, PhysicalReadRequests ),
11069 rec( 38, 4, PhysicalWriteRequests ),
11070 rec( 42, 2, PhysicalReadErrors ),
11071 rec( 44, 2, PhysicalWriteErrors ),
11072 rec( 46, 4, CacheGetRequests ),
11073 rec( 50, 4, CacheFullWriteRequests ),
11074 rec( 54, 4, CachePartialWriteRequests ),
11075 rec( 58, 4, BackgroundDirtyWrites ),
11076 rec( 62, 4, BackgroundAgedWrites ),
11077 rec( 66, 4, TotalCacheWrites ),
11078 rec( 70, 4, CacheAllocations ),
11079 rec( 74, 2, ThrashingCount ),
11080 rec( 76, 2, LRUBlockWasDirty ),
11081 rec( 78, 2, ReadBeyondWrite ),
11082 rec( 80, 2, FragmentWriteOccurred ),
11083 rec( 82, 2, CacheHitOnUnavailableBlock ),
11084 rec( 84, 2, CacheBlockScrapped ),
11085 ])
11086 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11087 # 2222/17D7, 23/215
11088 pkt = NCP(0x17D7, "Get Drive Mapping Table", 'fileserver')
11089 pkt.Request(10)
11090 pkt.Reply(184, [
11091 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11092 rec( 12, 1, SFTSupportLevel ),
11093 rec( 13, 1, LogicalDriveCount ),
11094 rec( 14, 1, PhysicalDriveCount ),
11095 rec( 15, 1, DiskChannelTable ),
11096 rec( 16, 4, Reserved4 ),
11097 rec( 20, 2, PendingIOCommands, ENC_BIG_ENDIAN ),
11098 rec( 22, 32, DriveMappingTable ),
11099 rec( 54, 32, DriveMirrorTable ),
11100 rec( 86, 32, DeadMirrorTable ),
11101 rec( 118, 1, ReMirrorDriveNumber ),
11102 rec( 119, 1, Filler ),
11103 rec( 120, 4, ReMirrorCurrentOffset, ENC_BIG_ENDIAN ),
11104 rec( 124, 60, SFTErrorTable ),
11105 ])
11106 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11107 # 2222/17D8, 23/216
11108 pkt = NCP(0x17D8, "Read Physical Disk Statistics", 'fileserver')
11109 pkt.Request(11, [
11110 rec( 10, 1, PhysicalDiskNumber ),
11111 ])
11112 pkt.Reply(101, [
11113 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11114 rec( 12, 1, PhysicalDiskChannel ),
11115 rec( 13, 1, DriveRemovableFlag ),
11116 rec( 14, 1, PhysicalDriveType ),
11117 rec( 15, 1, ControllerDriveNumber ),
11118 rec( 16, 1, ControllerNumber ),
11119 rec( 17, 1, ControllerType ),
11120 rec( 18, 4, DriveSize ),
11121 rec( 22, 2, DriveCylinders ),
11122 rec( 24, 1, DriveHeads ),
11123 rec( 25, 1, SectorsPerTrack ),
11124 rec( 26, 64, DriveDefinitionString ),
11125 rec( 90, 2, IOErrorCount ),
11126 rec( 92, 4, HotFixTableStart ),
11127 rec( 96, 2, HotFixTableSize ),
11128 rec( 98, 2, HotFixBlocksAvailable ),
11129 rec( 100, 1, HotFixDisabled ),
11130 ])
11131 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11132 # 2222/17D9, 23/217
11133 pkt = NCP(0x17D9, "Get Disk Channel Statistics", 'fileserver')
11134 pkt.Request(11, [
11135 rec( 10, 1, DiskChannelNumber ),
11136 ])
11137 pkt.Reply(192, [
11138 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11139 rec( 12, 2, ChannelState, ENC_BIG_ENDIAN ),
11140 rec( 14, 2, ChannelSynchronizationState, ENC_BIG_ENDIAN ),
11141 rec( 16, 1, SoftwareDriverType ),
11142 rec( 17, 1, SoftwareMajorVersionNumber ),
11143 rec( 18, 1, SoftwareMinorVersionNumber ),
11144 rec( 19, 65, SoftwareDescription ),
11145 rec( 84, 8, IOAddressesUsed ),
11146 rec( 92, 10, SharedMemoryAddresses ),
11147 rec( 102, 4, InterruptNumbersUsed ),
11148 rec( 106, 4, DMAChannelsUsed ),
11149 rec( 110, 1, FlagBits ),
11150 rec( 111, 1, Reserved ),
11151 rec( 112, 80, ConfigurationDescription ),
11152 ])
11153 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11154 # 2222/17DB, 23/219
11155 pkt = NCP(0x17DB, "Get Connection's Open Files", 'fileserver')
11156 pkt.Request(14, [
11157 rec( 10, 2, ConnectionNumber ),
11158 rec( 12, 2, LastRecordSeen, ENC_BIG_ENDIAN ),
11159 ])
11160 pkt.Reply(32, [
11161 rec( 8, 2, NextRequestRecord ),
11162 rec( 10, 1, NumberOfRecords, var="x" ),
11163 rec( 11, 21, ConnStruct, repeat="x" ),
11164 ])
11165 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11166 # 2222/17DC, 23/220
11167 pkt = NCP(0x17DC, "Get Connection Using A File", 'fileserver')
11168 pkt.Request((14,268), [
11169 rec( 10, 2, LastRecordSeen, ENC_BIG_ENDIAN ),
11170 rec( 12, 1, DirHandle ),
11171 rec( 13, (1,255), Path, info_str=(Path, "Get Connection Using File: %s", ", %s") ),
11172 ])
11173 pkt.Reply(30, [
11174 rec( 8, 2, UseCount, ENC_BIG_ENDIAN ),
11175 rec( 10, 2, OpenCount, ENC_BIG_ENDIAN ),
11176 rec( 12, 2, OpenForReadCount, ENC_BIG_ENDIAN ),
11177 rec( 14, 2, OpenForWriteCount, ENC_BIG_ENDIAN ),
11178 rec( 16, 2, DenyReadCount, ENC_BIG_ENDIAN ),
11179 rec( 18, 2, DenyWriteCount, ENC_BIG_ENDIAN ),
11180 rec( 20, 2, NextRequestRecord, ENC_BIG_ENDIAN ),
11181 rec( 22, 1, Locked ),
11182 rec( 23, 1, NumberOfRecords, var="x" ),
11183 rec( 24, 6, ConnFileStruct, repeat="x" ),
11184 ])
11185 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11186 # 2222/17DD, 23/221
11187 pkt = NCP(0x17DD, "Get Physical Record Locks By Connection And File", 'fileserver')
11188 pkt.Request(31, [
11189 rec( 10, 2, TargetConnectionNumber ),
11190 rec( 12, 2, LastRecordSeen, ENC_BIG_ENDIAN ),
11191 rec( 14, 1, VolumeNumber ),
11192 rec( 15, 2, DirectoryID ),
11193 rec( 17, 14, FileName14, info_str=(FileName14, "Get Physical Record Locks by Connection and File: %s", ", %s") ),
11194 ])
11195 pkt.Reply(22, [
11196 rec( 8, 2, NextRequestRecord ),
11197 rec( 10, 1, NumberOfLocks, var="x" ),
11198 rec( 11, 1, Reserved ),
11199 rec( 12, 10, LockStruct, repeat="x" ),
11200 ])
11201 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11202 # 2222/17DE, 23/222
11203 pkt = NCP(0x17DE, "Get Physical Record Locks By File", 'fileserver')
11204 pkt.Request((14,268), [
11205 rec( 10, 2, TargetConnectionNumber ),
11206 rec( 12, 1, DirHandle ),
11207 rec( 13, (1,255), Path, info_str=(Path, "Get Physical Record Locks by File: %s", ", %s") ),
11208 ])
11209 pkt.Reply(28, [
11210 rec( 8, 2, NextRequestRecord ),
11211 rec( 10, 1, NumberOfLocks, var="x" ),
11212 rec( 11, 1, Reserved ),
11213 rec( 12, 16, PhyLockStruct, repeat="x" ),
11214 ])
11215 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11216 # 2222/17DF, 23/223
11217 pkt = NCP(0x17DF, "Get Logical Records By Connection", 'fileserver')
11218 pkt.Request(14, [
11219 rec( 10, 2, TargetConnectionNumber ),
11220 rec( 12, 2, LastRecordSeen, ENC_BIG_ENDIAN ),
11221 ])
11222 pkt.Reply((14,268), [
11223 rec( 8, 2, NextRequestRecord ),
11224 rec( 10, 1, NumberOfRecords, var="x" ),
11225 rec( 11, (3, 257), LogLockStruct, repeat="x" ),
11226 ])
11227 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11228 # 2222/17E0, 23/224
11229 pkt = NCP(0x17E0, "Get Logical Record Information", 'fileserver')
11230 pkt.Request((13,267), [
11231 rec( 10, 2, LastRecordSeen ),
11232 rec( 12, (1,255), LogicalRecordName, info_str=(LogicalRecordName, "Get Logical Record Information: %s", ", %s") ),
11233 ])
11234 pkt.Reply(20, [
11235 rec( 8, 2, UseCount, ENC_BIG_ENDIAN ),
11236 rec( 10, 2, ShareableLockCount, ENC_BIG_ENDIAN ),
11237 rec( 12, 2, NextRequestRecord ),
11238 rec( 14, 1, Locked ),
11239 rec( 15, 1, NumberOfRecords, var="x" ),
11240 rec( 16, 4, LogRecStruct, repeat="x" ),
11241 ])
11242 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11243 # 2222/17E1, 23/225
11244 pkt = NCP(0x17E1, "Get Connection's Semaphores", 'fileserver')
11245 pkt.Request(14, [
11246 rec( 10, 2, ConnectionNumber ),
11247 rec( 12, 2, LastRecordSeen ),
11248 ])
11249 pkt.Reply((18,272), [
11250 rec( 8, 2, NextRequestRecord ),
11251 rec( 10, 2, NumberOfSemaphores, var="x" ),
11252 rec( 12, (6,260), SemaStruct, repeat="x" ),
11253 ])
11254 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11255 # 2222/17E2, 23/226
11256 pkt = NCP(0x17E2, "Get Semaphore Information", 'fileserver')
11257 pkt.Request((13,267), [
11258 rec( 10, 2, LastRecordSeen ),
11259 rec( 12, (1,255), SemaphoreName, info_str=(SemaphoreName, "Get Semaphore Information: %s", ", %s") ),
11260 ])
11261 pkt.Reply(17, [
11262 rec( 8, 2, NextRequestRecord, ENC_BIG_ENDIAN ),
11263 rec( 10, 2, OpenCount, ENC_BIG_ENDIAN ),
11264 rec( 12, 1, SemaphoreValue ),
11265 rec( 13, 1, NumberOfRecords, var="x" ),
11266 rec( 14, 3, SemaInfoStruct, repeat="x" ),
11267 ])
11268 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11269 # 2222/17E3, 23/227
11270 pkt = NCP(0x17E3, "Get LAN Driver Configuration Information", 'fileserver')
11271 pkt.Request(11, [
11272 rec( 10, 1, LANDriverNumber ),
11273 ])
11274 pkt.Reply(180, [
11275 rec( 8, 4, NetworkAddress, ENC_BIG_ENDIAN ),
11276 rec( 12, 6, HostAddress ),
11277 rec( 18, 1, BoardInstalled ),
11278 rec( 19, 1, OptionNumber ),
11279 rec( 20, 160, ConfigurationText ),
11280 ])
11281 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11282 # 2222/17E5, 23/229
11283 pkt = NCP(0x17E5, "Get Connection Usage Statistics", 'fileserver')
11284 pkt.Request(12, [
11285 rec( 10, 2, ConnectionNumber ),
11286 ])
11287 pkt.Reply(26, [
11288 rec( 8, 2, NextRequestRecord ),
11289 rec( 10, 6, BytesRead ),
11290 rec( 16, 6, BytesWritten ),
11291 rec( 22, 4, TotalRequestPackets ),
11292 ])
11293 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11294 # 2222/17E6, 23/230
11295 pkt = NCP(0x17E6, "Get Object's Remaining Disk Space", 'fileserver')
11296 pkt.Request(14, [
11297 rec( 10, 4, ObjectID, ENC_BIG_ENDIAN ),
11298 ])
11299 pkt.Reply(21, [
11300 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11301 rec( 12, 4, ObjectID ),
11302 rec( 16, 4, UnusedDiskBlocks, ENC_BIG_ENDIAN ),
11303 rec( 20, 1, RestrictionsEnforced ),
11304 ])
11305 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11306 # 2222/17E7, 23/231
11307 pkt = NCP(0x17E7, "Get File Server LAN I/O Statistics", 'fileserver')
11308 pkt.Request(10)
11309 pkt.Reply(74, [
11310 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11311 rec( 12, 2, ConfiguredMaxRoutingBuffers ),
11312 rec( 14, 2, ActualMaxUsedRoutingBuffers ),
11313 rec( 16, 2, CurrentlyUsedRoutingBuffers ),
11314 rec( 18, 4, TotalFileServicePackets ),
11315 rec( 22, 2, TurboUsedForFileService ),
11316 rec( 24, 2, PacketsFromInvalidConnection ),
11317 rec( 26, 2, BadLogicalConnectionCount ),
11318 rec( 28, 2, PacketsReceivedDuringProcessing ),
11319 rec( 30, 2, RequestsReprocessed ),
11320 rec( 32, 2, PacketsWithBadSequenceNumber ),
11321 rec( 34, 2, DuplicateRepliesSent ),
11322 rec( 36, 2, PositiveAcknowledgesSent ),
11323 rec( 38, 2, PacketsWithBadRequestType ),
11324 rec( 40, 2, AttachDuringProcessing ),
11325 rec( 42, 2, AttachWhileProcessingAttach ),
11326 rec( 44, 2, ForgedDetachedRequests ),
11327 rec( 46, 2, DetachForBadConnectionNumber ),
11328 rec( 48, 2, DetachDuringProcessing ),
11329 rec( 50, 2, RepliesCancelled ),
11330 rec( 52, 2, PacketsDiscardedByHopCount ),
11331 rec( 54, 2, PacketsDiscardedUnknownNet ),
11332 rec( 56, 2, IncomingPacketDiscardedNoDGroup ),
11333 rec( 58, 2, OutgoingPacketDiscardedNoTurboBuffer ),
11334 rec( 60, 2, IPXNotMyNetwork ),
11335 rec( 62, 4, NetBIOSBroadcastWasPropogated ),
11336 rec( 66, 4, TotalOtherPackets ),
11337 rec( 70, 4, TotalRoutedPackets ),
11338 ])
11339 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11340 # 2222/17E8, 23/232
11341 pkt = NCP(0x17E8, "Get File Server Misc Information", 'fileserver')
11342 pkt.Request(10)
11343 pkt.Reply(40, [
11344 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11345 rec( 12, 1, ProcessorType ),
11346 rec( 13, 1, Reserved ),
11347 rec( 14, 1, NumberOfServiceProcesses ),
11348 rec( 15, 1, ServerUtilizationPercentage ),
11349 rec( 16, 2, ConfiguredMaxBinderyObjects ),
11350 rec( 18, 2, ActualMaxBinderyObjects ),
11351 rec( 20, 2, CurrentUsedBinderyObjects ),
11352 rec( 22, 2, TotalServerMemory ),
11353 rec( 24, 2, WastedServerMemory ),
11354 rec( 26, 2, NumberOfDynamicMemoryAreas, var="x" ),
11355 rec( 28, 12, DynMemStruct, repeat="x" ),
11356 ])
11357 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11358 # 2222/17E9, 23/233
11359 pkt = NCP(0x17E9, "Get Volume Information", 'fileserver')
11360 pkt.Request(11, [
11361 rec( 10, 1, VolumeNumber, info_str=(VolumeNumber, "Get Information on Volume %d", ", %d") ),
11362 ])
11363 pkt.Reply(48, [
11364 rec( 8, 4, SystemIntervalMarker, ENC_BIG_ENDIAN ),
11365 rec( 12, 1, VolumeNumber ),
11366 rec( 13, 1, LogicalDriveNumber ),
11367 rec( 14, 2, BlockSize ),
11368 rec( 16, 2, StartingBlock ),
11369 rec( 18, 2, TotalBlocks ),
11370 rec( 20, 2, FreeBlocks ),
11371 rec( 22, 2, TotalDirectoryEntries ),
11372 rec( 24, 2, FreeDirectoryEntries ),
11373 rec( 26, 2, ActualMaxUsedDirectoryEntries ),
11374 rec( 28, 1, VolumeHashedFlag ),
11375 rec( 29, 1, VolumeCachedFlag ),
11376 rec( 30, 1, VolumeRemovableFlag ),
11377 rec( 31, 1, VolumeMountedFlag ),
11378 rec( 32, 16, VolumeName ),
11379 ])
11380 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11381 # 2222/17EA, 23/234
11382 pkt = NCP(0x17EA, "Get Connection's Task Information", 'fileserver')
11383 pkt.Request(12, [
11384 rec( 10, 2, ConnectionNumber ),
11385 ])
11386 pkt.Reply(13, [
11387 rec( 8, 1, ConnLockStatus ),
11388 rec( 9, 1, NumberOfActiveTasks, var="x" ),
11389 rec( 10, 3, TaskStruct, repeat="x" ),
11390 ])
11391 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11392 # 2222/17EB, 23/235
11393 pkt = NCP(0x17EB, "Get Connection's Open Files", 'fileserver')
11394 pkt.Request(14, [
11395 rec( 10, 2, ConnectionNumber ),
11396 rec( 12, 2, LastRecordSeen ),
11397 ])
11398 pkt.Reply((29,283), [
11399 rec( 8, 2, NextRequestRecord ),
11400 rec( 10, 2, NumberOfRecords, var="x" ),
11401 rec( 12, (17, 271), OpnFilesStruct, repeat="x" ),
11402 ])
11403 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11404 # 2222/17EC, 23/236
11405 pkt = NCP(0x17EC, "Get Connection Using A File", 'fileserver')
11406 pkt.Request(18, [
11407 rec( 10, 1, DataStreamNumber ),
11408 rec( 11, 1, VolumeNumber ),
11409 rec( 12, 4, DirectoryBase, ENC_LITTLE_ENDIAN ),
11410 rec( 16, 2, LastRecordSeen ),
11411 ])
11412 pkt.Reply(33, [
11413 rec( 8, 2, NextRequestRecord ),
11414 rec( 10, 2, FileUseCount ),
11415 rec( 12, 2, OpenCount ),
11416 rec( 14, 2, OpenForReadCount ),
11417 rec( 16, 2, OpenForWriteCount ),
11418 rec( 18, 2, DenyReadCount ),
11419 rec( 20, 2, DenyWriteCount ),
11420 rec( 22, 1, Locked ),
11421 rec( 23, 1, ForkCount ),
11422 rec( 24, 2, NumberOfRecords, var="x" ),
11423 rec( 26, 7, ConnFileStruct, repeat="x" ),
11424 ])
11425 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xff00])
11426 # 2222/17ED, 23/237
11427 pkt = NCP(0x17ED, "Get Physical Record Locks By Connection And File", 'fileserver')
11428 pkt.Request(20, [
11429 rec( 10, 2, TargetConnectionNumber ),
11430 rec( 12, 1, DataStreamNumber ),
11431 rec( 13, 1, VolumeNumber ),
11432 rec( 14, 4, DirectoryBase, ENC_LITTLE_ENDIAN ),
11433 rec( 18, 2, LastRecordSeen ),
11434 ])
11435 pkt.Reply(23, [
11436 rec( 8, 2, NextRequestRecord ),
11437 rec( 10, 2, NumberOfLocks, ENC_LITTLE_ENDIAN, var="x" ),
11438 rec( 12, 11, LockStruct, repeat="x" ),
11439 ])
11440 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11441 # 2222/17EE, 23/238
11442 pkt = NCP(0x17EE, "Get Physical Record Locks By File", 'fileserver')
11443 pkt.Request(18, [
11444 rec( 10, 1, DataStreamNumber ),
11445 rec( 11, 1, VolumeNumber ),
11446 rec( 12, 4, DirectoryBase ),
11447 rec( 16, 2, LastRecordSeen ),
11448 ])
11449 pkt.Reply(30, [
11450 rec( 8, 2, NextRequestRecord ),
11451 rec( 10, 2, NumberOfLocks, ENC_LITTLE_ENDIAN, var="x" ),
11452 rec( 12, 18, PhyLockStruct, repeat="x" ),
11453 ])
11454 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11455 # 2222/17EF, 23/239
11456 pkt = NCP(0x17EF, "Get Logical Records By Connection", 'fileserver')
11457 pkt.Request(14, [
11458 rec( 10, 2, TargetConnectionNumber ),
11459 rec( 12, 2, LastRecordSeen ),
11460 ])
11461 pkt.Reply((16,270), [
11462 rec( 8, 2, NextRequestRecord ),
11463 rec( 10, 2, NumberOfRecords, var="x" ),
11464 rec( 12, (4, 258), LogLockStruct, repeat="x" ),
11465 ])
11466 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11467 # 2222/17F0, 23/240
11468 pkt = NCP(0x17F0, "Get Logical Record Information (old)", 'fileserver')
11469 pkt.Request((13,267), [
11470 rec( 10, 2, LastRecordSeen ),
11471 rec( 12, (1,255), LogicalRecordName ),
11472 ])
11473 pkt.Reply(22, [
11474 rec( 8, 2, ShareableLockCount ),
11475 rec( 10, 2, UseCount ),
11476 rec( 12, 1, Locked ),
11477 rec( 13, 2, NextRequestRecord ),
11478 rec( 15, 2, NumberOfRecords, var="x" ),
11479 rec( 17, 5, LogRecStruct, repeat="x" ),
11480 ])
11481 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11482 # 2222/17F1, 23/241
11483 pkt = NCP(0x17F1, "Get Connection's Semaphores", 'fileserver')
11484 pkt.Request(14, [
11485 rec( 10, 2, ConnectionNumber ),
11486 rec( 12, 2, LastRecordSeen ),
11487 ])
11488 pkt.Reply((19,273), [
11489 rec( 8, 2, NextRequestRecord ),
11490 rec( 10, 2, NumberOfSemaphores, var="x" ),
11491 rec( 12, (7, 261), SemaStruct, repeat="x" ),
11492 ])
11493 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11494 # 2222/17F2, 23/242
11495 pkt = NCP(0x17F2, "Get Semaphore Information", 'fileserver')
11496 pkt.Request((13,267), [
11497 rec( 10, 2, LastRecordSeen ),
11498 rec( 12, (1,255), SemaphoreName, info_str=(SemaphoreName, "Get Semaphore Information: %s", ", %s") ),
11499 ])
11500 pkt.Reply(20, [
11501 rec( 8, 2, NextRequestRecord ),
11502 rec( 10, 2, OpenCount ),
11503 rec( 12, 2, SemaphoreValue ),
11504 rec( 14, 2, NumberOfRecords, var="x" ),
11505 rec( 16, 4, SemaInfoStruct, repeat="x" ),
11506 ])
11507 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11508 # 2222/17F3, 23/243
11509 pkt = NCP(0x17F3, "Map Directory Number to Path", 'file')
11510 pkt.Request(16, [
11511 rec( 10, 1, VolumeNumber ),
11512 rec( 11, 4, DirectoryNumber ),
11513 rec( 15, 1, NameSpace ),
11514 ])
11515 pkt.Reply((9,263), [
11516 rec( 8, (1,255), Path ),
11517 ])
11518 pkt.CompletionCodes([0x0000, 0x9600, 0x9c00, 0xc601, 0xfd00, 0xff00])
11519 # 2222/17F4, 23/244
11520 pkt = NCP(0x17F4, "Convert Path to Dir Entry", 'file')
11521 pkt.Request((12,266), [
11522 rec( 10, 1, DirHandle ),
11523 rec( 11, (1,255), Path, info_str=(Path, "Convert Path to Directory Entry: %s", ", %s") ),
11524 ])
11525 pkt.Reply(13, [
11526 rec( 8, 1, VolumeNumber ),
11527 rec( 9, 4, DirectoryNumber ),
11528 ])
11529 pkt.CompletionCodes([0x0000, 0x9600, 0xc601, 0xfd00, 0xff00])
11530 # 2222/17FD, 23/253
11531 pkt = NCP(0x17FD, "Send Console Broadcast", 'fileserver')
11532 pkt.Request((16, 270), [
11533 rec( 10, 1, NumberOfStations, var="x" ),
11534 rec( 11, 4, StationList, repeat="x" ),
11535 rec( 15, (1, 255), TargetMessage, info_str=(TargetMessage, "Send Console Broadcast: %s", ", %s") ),
11536 ])
11537 pkt.Reply(8)
11538 pkt.CompletionCodes([0x0000, 0xc601, 0xfd00])
11539 # 2222/17FE, 23/254
11540 pkt = NCP(0x17FE, "Clear Connection Number", 'fileserver')
11541 pkt.Request(14, [
11542 rec( 10, 4, ConnectionNumber ),
11543 ])
11544 pkt.Reply(8)
11545 pkt.CompletionCodes([0x0000, 0xc601, 0xfd00])
11546 # 2222/18, 24
11547 pkt = NCP(0x18, "End of Job", 'connection')
11548 pkt.Request(7)
11549 pkt.Reply(8)
11550 pkt.CompletionCodes([0x0000])
11551 # 2222/19, 25
11552 pkt = NCP(0x19, "Logout", 'connection')
11553 pkt.Request(7)
11554 pkt.Reply(8)
11555 pkt.CompletionCodes([0x0000])
11556 # 2222/1A, 26
11557 pkt = NCP(0x1A, "Log Physical Record", 'sync')
11558 pkt.Request(24, [
11559 rec( 7, 1, LockFlag ),
11560 rec( 8, 6, FileHandle ),
11561 rec( 14, 4, LockAreasStartOffset, ENC_BIG_ENDIAN ),
11562 rec( 18, 4, LockAreaLen, ENC_BIG_ENDIAN, info_str=(LockAreaLen, "Lock Record - Length of %d", "%d") ),
11563 rec( 22, 2, LockTimeout ),
11564 ])
11565 pkt.Reply(8)
11566 pkt.CompletionCodes([0x0000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff01])
11567 # 2222/1B, 27
11568 pkt = NCP(0x1B, "Lock Physical Record Set", 'sync')
11569 pkt.Request(10, [
11570 rec( 7, 1, LockFlag ),
11571 rec( 8, 2, LockTimeout ),
11572 ])
11573 pkt.Reply(8)
11574 pkt.CompletionCodes([0x0000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff01])
11575 # 2222/1C, 28
11576 pkt = NCP(0x1C, "Release Physical Record", 'sync')
11577 pkt.Request(22, [
11578 rec( 7, 1, Reserved ),
11579 rec( 8, 6, FileHandle ),
11580 rec( 14, 4, LockAreasStartOffset ),
11581 rec( 18, 4, LockAreaLen, info_str=(LockAreaLen, "Release Lock Record - Length of %d", "%d") ),
11582 ])
11583 pkt.Reply(8)
11584 pkt.CompletionCodes([0x0000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff03])
11585 # 2222/1D, 29
11586 pkt = NCP(0x1D, "Release Physical Record Set", 'sync')
11587 pkt.Request(8, [
11588 rec( 7, 1, LockFlag ),
11589 ])
11590 pkt.Reply(8)
11591 pkt.CompletionCodes([0x0000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff03])
11592 # 2222/1E, 30 #Tested and fixed 6-14-02 GM
11593 pkt = NCP(0x1E, "Clear Physical Record", 'sync')
11594 pkt.Request(22, [
11595 rec( 7, 1, Reserved ),
11596 rec( 8, 6, FileHandle ),
11597 rec( 14, 4, LockAreasStartOffset, ENC_BIG_ENDIAN ),
11598 rec( 18, 4, LockAreaLen, ENC_BIG_ENDIAN, info_str=(LockAreaLen, "Clear Lock Record - Length of %d", "%d") ),
11599 ])
11600 pkt.Reply(8)
11601 pkt.CompletionCodes([0x0000, 0x8000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff03])
11602 # 2222/1F, 31
11603 pkt = NCP(0x1F, "Clear Physical Record Set", 'sync')
11604 pkt.Request(8, [
11605 rec( 7, 1, LockFlag ),
11606 ])
11607 pkt.Reply(8)
11608 pkt.CompletionCodes([0x0000, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff03])
11609 # 2222/2000, 32/00
11610 pkt = NCP(0x2000, "Open Semaphore", 'sync', has_length=0)
11611 pkt.Request((10,264), [
11612 rec( 8, 1, InitialSemaphoreValue ),
11613 rec( 9, (1,255), SemaphoreName, info_str=(SemaphoreName, "Open Semaphore: %s", ", %s") ),
11614 ])
11615 pkt.Reply(13, [
11616 rec( 8, 4, SemaphoreHandle, ENC_BIG_ENDIAN ),
11617 rec( 12, 1, SemaphoreOpenCount ),
11618 ])
11619 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
11620 # 2222/2001, 32/01
11621 pkt = NCP(0x2001, "Examine Semaphore", 'sync', has_length=0)
11622 pkt.Request(12, [
11623 rec( 8, 4, SemaphoreHandle, ENC_BIG_ENDIAN ),
11624 ])
11625 pkt.Reply(10, [
11626 rec( 8, 1, SemaphoreValue ),
11627 rec( 9, 1, SemaphoreOpenCount ),
11628 ])
11629 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
11630 # 2222/2002, 32/02
11631 pkt = NCP(0x2002, "Wait On Semaphore", 'sync', has_length=0)
11632 pkt.Request(14, [
11633 rec( 8, 4, SemaphoreHandle, ENC_BIG_ENDIAN ),
11634 rec( 12, 2, SemaphoreTimeOut, ENC_BIG_ENDIAN ),
11635 ])
11636 pkt.Reply(8)
11637 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
11638 # 2222/2003, 32/03
11639 pkt = NCP(0x2003, "Signal Semaphore", 'sync', has_length=0)
11640 pkt.Request(12, [
11641 rec( 8, 4, SemaphoreHandle, ENC_BIG_ENDIAN ),
11642 ])
11643 pkt.Reply(8)
11644 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
11645 # 2222/2004, 32/04
11646 pkt = NCP(0x2004, "Close Semaphore", 'sync', has_length=0)
11647 pkt.Request(12, [
11648 rec( 8, 4, SemaphoreHandle, ENC_BIG_ENDIAN ),
11649 ])
11650 pkt.Reply(8)
11651 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
11652 # 2222/21, 33
11653 pkt = NCP(0x21, "Negotiate Buffer Size", 'connection')
11654 pkt.Request(9, [
11655 rec( 7, 2, BufferSize, ENC_BIG_ENDIAN ),
11656 ])
11657 pkt.Reply(10, [
11658 rec( 8, 2, BufferSize, ENC_BIG_ENDIAN ),
11659 ])
11660 pkt.CompletionCodes([0x0000])
11661 # 2222/2200, 34/00
11662 pkt = NCP(0x2200, "TTS Is Available", 'tts', has_length=0)
11663 pkt.Request(8)
11664 pkt.Reply(8)
11665 pkt.CompletionCodes([0x0001, 0xfd03, 0xff12])
11666 # 2222/2201, 34/01
11667 pkt = NCP(0x2201, "TTS Begin Transaction", 'tts', has_length=0)
11668 pkt.Request(8)
11669 pkt.Reply(8)
11670 pkt.CompletionCodes([0x0000])
11671 # 2222/2202, 34/02
11672 pkt = NCP(0x2202, "TTS End Transaction", 'tts', has_length=0)
11673 pkt.Request(8)
11674 pkt.Reply(12, [
11675 rec( 8, 4, TransactionNumber, ENC_BIG_ENDIAN ),
11676 ])
11677 pkt.CompletionCodes([0x0000, 0xff01])
11678 # 2222/2203, 34/03
11679 pkt = NCP(0x2203, "TTS Abort Transaction", 'tts', has_length=0)
11680 pkt.Request(8)
11681 pkt.Reply(8)
11682 pkt.CompletionCodes([0x0000, 0xfd03, 0xfe0b, 0xff01])
11683 # 2222/2204, 34/04
11684 pkt = NCP(0x2204, "TTS Transaction Status", 'tts', has_length=0)
11685 pkt.Request(12, [
11686 rec( 8, 4, TransactionNumber, ENC_BIG_ENDIAN ),
11687 ])
11688 pkt.Reply(8)
11689 pkt.CompletionCodes([0x0000])
11690 # 2222/2205, 34/05
11691 pkt = NCP(0x2205, "TTS Get Application Thresholds", 'tts', has_length=0)
11692 pkt.Request(8)
11693 pkt.Reply(10, [
11694 rec( 8, 1, LogicalLockThreshold ),
11695 rec( 9, 1, PhysicalLockThreshold ),
11696 ])
11697 pkt.CompletionCodes([0x0000])
11698 # 2222/2206, 34/06
11699 pkt = NCP(0x2206, "TTS Set Application Thresholds", 'tts', has_length=0)
11700 pkt.Request(10, [
11701 rec( 8, 1, LogicalLockThreshold ),
11702 rec( 9, 1, PhysicalLockThreshold ),
11703 ])
11704 pkt.Reply(8)
11705 pkt.CompletionCodes([0x0000, 0x9600])
11706 # 2222/2207, 34/07
11707 pkt = NCP(0x2207, "TTS Get Workstation Thresholds", 'tts', has_length=0)
11708 pkt.Request(8)
11709 pkt.Reply(10, [
11710 rec( 8, 1, LogicalLockThreshold ),
11711 rec( 9, 1, PhysicalLockThreshold ),
11712 ])
11713 pkt.CompletionCodes([0x0000])
11714 # 2222/2208, 34/08
11715 pkt = NCP(0x2208, "TTS Set Workstation Thresholds", 'tts', has_length=0)
11716 pkt.Request(10, [
11717 rec( 8, 1, LogicalLockThreshold ),
11718 rec( 9, 1, PhysicalLockThreshold ),
11719 ])
11720 pkt.Reply(8)
11721 pkt.CompletionCodes([0x0000])
11722 # 2222/2209, 34/09
11723 pkt = NCP(0x2209, "TTS Get Transaction Bits", 'tts', has_length=0)
11724 pkt.Request(8)
11725 pkt.Reply(9, [
11726 rec( 8, 1, ControlFlags ),
11727 ])
11728 pkt.CompletionCodes([0x0000])
11729 # 2222/220A, 34/10
11730 pkt = NCP(0x220A, "TTS Set Transaction Bits", 'tts', has_length=0)
11731 pkt.Request(9, [
11732 rec( 8, 1, ControlFlags ),
11733 ])
11734 pkt.Reply(8)
11735 pkt.CompletionCodes([0x0000])
11736 # 2222/2301, 35/01
11737 pkt = NCP(0x2301, "AFP Create Directory", 'afp')
11738 pkt.Request((49, 303), [
11739 rec( 10, 1, VolumeNumber ),
11740 rec( 11, 4, BaseDirectoryID ),
11741 rec( 15, 1, Reserved ),
11742 rec( 16, 4, CreatorID ),
11743 rec( 20, 4, Reserved4 ),
11744 rec( 24, 2, FinderAttr ),
11745 rec( 26, 2, HorizLocation ),
11746 rec( 28, 2, VertLocation ),
11747 rec( 30, 2, FileDirWindow ),
11748 rec( 32, 16, Reserved16 ),
11749 rec( 48, (1,255), Path, info_str=(Path, "AFP Create Directory: %s", ", %s") ),
11750 ])
11751 pkt.Reply(12, [
11752 rec( 8, 4, NewDirectoryID ),
11753 ])
11754 pkt.CompletionCodes([0x0000, 0x8301, 0x8400, 0x8800, 0x9300, 0x9600, 0x9804,
11755 0x9900, 0x9c03, 0x9e02, 0xa100, 0xa201, 0xfd00, 0xff18])
11756 # 2222/2302, 35/02
11757 pkt = NCP(0x2302, "AFP Create File", 'afp')
11758 pkt.Request((49, 303), [
11759 rec( 10, 1, VolumeNumber ),
11760 rec( 11, 4, BaseDirectoryID ),
11761 rec( 15, 1, DeleteExistingFileFlag ),
11762 rec( 16, 4, CreatorID, ENC_BIG_ENDIAN ),
11763 rec( 20, 4, Reserved4 ),
11764 rec( 24, 2, FinderAttr ),
11765 rec( 26, 2, HorizLocation, ENC_BIG_ENDIAN ),
11766 rec( 28, 2, VertLocation, ENC_BIG_ENDIAN ),
11767 rec( 30, 2, FileDirWindow, ENC_BIG_ENDIAN ),
11768 rec( 32, 16, Reserved16 ),
11769 rec( 48, (1,255), Path, info_str=(Path, "AFP Create File: %s", ", %s") ),
11770 ])
11771 pkt.Reply(12, [
11772 rec( 8, 4, NewDirectoryID ),
11773 ])
11774 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8301, 0x8400, 0x8701, 0x8800,
11775 0x8a00, 0x8d00, 0x8e00, 0x8f00, 0x9300, 0x9600, 0x9804,
11776 0x9900, 0x9b03, 0x9c03, 0x9e02, 0xa100, 0xa201, 0xfd00,
11777 0xff18])
11778 # 2222/2303, 35/03
11779 pkt = NCP(0x2303, "AFP Delete", 'afp')
11780 pkt.Request((16,270), [
11781 rec( 10, 1, VolumeNumber ),
11782 rec( 11, 4, BaseDirectoryID ),
11783 rec( 15, (1,255), Path, info_str=(Path, "AFP Delete: %s", ", %s") ),
11784 ])
11785 pkt.Reply(8)
11786 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x8a00, 0x8d00, 0x8e00, 0x8f00,
11787 0x9000, 0x9300, 0x9600, 0x9804, 0x9b03, 0x9c03, 0x9e02,
11788 0xa000, 0xa100, 0xa201, 0xfd00, 0xff19])
11789 # 2222/2304, 35/04
11790 pkt = NCP(0x2304, "AFP Get Entry ID From Name", 'afp')
11791 pkt.Request((16,270), [
11792 rec( 10, 1, VolumeNumber ),
11793 rec( 11, 4, BaseDirectoryID ),
11794 rec( 15, (1,255), Path, info_str=(Path, "AFP Get Entry from Name: %s", ", %s") ),
11795 ])
11796 pkt.Reply(12, [
11797 rec( 8, 4, TargetEntryID, ENC_BIG_ENDIAN ),
11798 ])
11799 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0x9804, 0x9c03,
11800 0xa100, 0xa201, 0xfd00, 0xff19])
11801 # 2222/2305, 35/05
11802 pkt = NCP(0x2305, "AFP Get File Information", 'afp')
11803 pkt.Request((18,272), [
11804 rec( 10, 1, VolumeNumber ),
11805 rec( 11, 4, BaseDirectoryID ),
11806 rec( 15, 2, RequestBitMap, ENC_BIG_ENDIAN ),
11807 rec( 17, (1,255), Path, info_str=(Path, "AFP Get File Information: %s", ", %s") ),
11808 ])
11809 pkt.Reply(121, [
11810 rec( 8, 4, AFPEntryID, ENC_BIG_ENDIAN ),
11811 rec( 12, 4, ParentID, ENC_BIG_ENDIAN ),
11812 rec( 16, 2, AttributesDef16, ENC_LITTLE_ENDIAN ),
11813 rec( 18, 4, DataForkLen, ENC_BIG_ENDIAN ),
11814 rec( 22, 4, ResourceForkLen, ENC_BIG_ENDIAN ),
11815 rec( 26, 2, TotalOffspring, ENC_BIG_ENDIAN ),
11816 rec( 28, 2, CreationDate, ENC_BIG_ENDIAN ),
11817 rec( 30, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
11818 rec( 32, 2, ModifiedDate, ENC_BIG_ENDIAN ),
11819 rec( 34, 2, ModifiedTime, ENC_BIG_ENDIAN ),
11820 rec( 36, 2, ArchivedDate, ENC_BIG_ENDIAN ),
11821 rec( 38, 2, ArchivedTime, ENC_BIG_ENDIAN ),
11822 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
11823 rec( 44, 4, Reserved4 ),
11824 rec( 48, 2, FinderAttr ),
11825 rec( 50, 2, HorizLocation ),
11826 rec( 52, 2, VertLocation ),
11827 rec( 54, 2, FileDirWindow ),
11828 rec( 56, 16, Reserved16 ),
11829 rec( 72, 32, LongName ),
11830 rec( 104, 4, CreatorID, ENC_BIG_ENDIAN ),
11831 rec( 108, 12, ShortName ),
11832 rec( 120, 1, AccessPrivileges ),
11833 ])
11834 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0x9804, 0x9c03,
11835 0xa100, 0xa201, 0xfd00, 0xff19])
11836 # 2222/2306, 35/06
11837 pkt = NCP(0x2306, "AFP Get Entry ID From NetWare Handle", 'afp')
11838 pkt.Request(16, [
11839 rec( 10, 6, FileHandle ),
11840 ])
11841 pkt.Reply(14, [
11842 rec( 8, 1, VolumeID ),
11843 rec( 9, 4, TargetEntryID, ENC_BIG_ENDIAN ),
11844 rec( 13, 1, ForkIndicator ),
11845 ])
11846 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0xa201])
11847 # 2222/2307, 35/07
11848 pkt = NCP(0x2307, "AFP Rename", 'afp')
11849 pkt.Request((21, 529), [
11850 rec( 10, 1, VolumeNumber ),
11851 rec( 11, 4, MacSourceBaseID, ENC_BIG_ENDIAN ),
11852 rec( 15, 4, MacDestinationBaseID, ENC_BIG_ENDIAN ),
11853 rec( 19, (1,255), Path, info_str=(Path, "AFP Rename: %s", ", %s") ),
11854 rec( -1, (1,255), NewFileNameLen ),
11855 ])
11856 pkt.Reply(8)
11857 pkt.CompletionCodes([0x0000, 0x8301, 0x8401, 0x8800, 0x8b00, 0x8e00,
11858 0x9001, 0x9201, 0x9300, 0x9600, 0x9804, 0x9900,
11859 0x9c03, 0x9e00, 0xa100, 0xa201, 0xfd00, 0xff0a])
11860 # 2222/2308, 35/08
11861 pkt = NCP(0x2308, "AFP Open File Fork", 'afp')
11862 pkt.Request((18, 272), [
11863 rec( 10, 1, VolumeNumber ),
11864 rec( 11, 4, MacBaseDirectoryID ),
11865 rec( 15, 1, ForkIndicator ),
11866 rec( 16, 1, AccessMode ),
11867 rec( 17, (1,255), Path, info_str=(Path, "AFP Open File Fork: %s", ", %s") ),
11868 ])
11869 pkt.Reply(22, [
11870 rec( 8, 4, AFPEntryID, ENC_BIG_ENDIAN ),
11871 rec( 12, 4, DataForkLen, ENC_BIG_ENDIAN ),
11872 rec( 16, 6, NetWareAccessHandle ),
11873 ])
11874 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8301, 0x8800, 0x9300,
11875 0x9400, 0x9600, 0x9804, 0x9900, 0x9c03, 0xa100,
11876 0xa201, 0xfd00, 0xff16])
11877 # 2222/2309, 35/09
11878 pkt = NCP(0x2309, "AFP Set File Information", 'afp')
11879 pkt.Request((64, 318), [
11880 rec( 10, 1, VolumeNumber ),
11881 rec( 11, 4, MacBaseDirectoryID ),
11882 rec( 15, 2, RequestBitMap, ENC_BIG_ENDIAN ),
11883 rec( 17, 2, MacAttr, ENC_BIG_ENDIAN ),
11884 rec( 19, 2, CreationDate, ENC_BIG_ENDIAN ),
11885 rec( 21, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
11886 rec( 23, 2, ModifiedDate, ENC_BIG_ENDIAN ),
11887 rec( 25, 2, ModifiedTime, ENC_BIG_ENDIAN ),
11888 rec( 27, 2, ArchivedDate, ENC_BIG_ENDIAN ),
11889 rec( 29, 2, ArchivedTime, ENC_BIG_ENDIAN ),
11890 rec( 31, 4, CreatorID, ENC_BIG_ENDIAN ),
11891 rec( 35, 4, Reserved4 ),
11892 rec( 39, 2, FinderAttr ),
11893 rec( 41, 2, HorizLocation ),
11894 rec( 43, 2, VertLocation ),
11895 rec( 45, 2, FileDirWindow ),
11896 rec( 47, 16, Reserved16 ),
11897 rec( 63, (1,255), Path, info_str=(Path, "AFP Set File Information: %s", ", %s") ),
11898 ])
11899 pkt.Reply(8)
11900 pkt.CompletionCodes([0x0000, 0x0104, 0x8301, 0x8800, 0x9300, 0x9400,
11901 0x9500, 0x9600, 0x9804, 0x9c03, 0xa100, 0xa201,
11902 0xfd00, 0xff16])
11903 # 2222/230A, 35/10
11904 pkt = NCP(0x230A, "AFP Scan File Information", 'afp')
11905 pkt.Request((26, 280), [
11906 rec( 10, 1, VolumeNumber ),
11907 rec( 11, 4, MacBaseDirectoryID ),
11908 rec( 15, 4, MacLastSeenID, ENC_BIG_ENDIAN ),
11909 rec( 19, 2, DesiredResponseCount, ENC_BIG_ENDIAN ),
11910 rec( 21, 2, SearchBitMap, ENC_BIG_ENDIAN ),
11911 rec( 23, 2, RequestBitMap, ENC_BIG_ENDIAN ),
11912 rec( 25, (1,255), Path, info_str=(Path, "AFP Scan File Information: %s", ", %s") ),
11913 ])
11914 pkt.Reply(123, [
11915 rec( 8, 2, ActualResponseCount, ENC_BIG_ENDIAN, var="x" ),
11916 rec( 10, 113, AFP10Struct, repeat="x" ),
11917 ])
11918 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0x9804,
11919 0x9c03, 0xa100, 0xa201, 0xfd00, 0xff16])
11920 # 2222/230B, 35/11
11921 pkt = NCP(0x230B, "AFP Alloc Temporary Directory Handle", 'afp')
11922 pkt.Request((16,270), [
11923 rec( 10, 1, VolumeNumber ),
11924 rec( 11, 4, MacBaseDirectoryID ),
11925 rec( 15, (1,255), Path, info_str=(Path, "AFP Allocate Temporary Directory Handle: %s", ", %s") ),
11926 ])
11927 pkt.Reply(10, [
11928 rec( 8, 1, DirHandle ),
11929 rec( 9, 1, AccessRightsMask ),
11930 ])
11931 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600,
11932 0x9804, 0x9b03, 0x9c03, 0x9d00, 0xa100,
11933 0xa201, 0xfd00, 0xff00])
11934 # 2222/230C, 35/12
11935 pkt = NCP(0x230C, "AFP Get Entry ID From Path Name", 'afp')
11936 pkt.Request((12,266), [
11937 rec( 10, 1, DirHandle ),
11938 rec( 11, (1,255), Path, info_str=(Path, "AFP Get Entry ID from Path Name: %s", ", %s") ),
11939 ])
11940 pkt.Reply(12, [
11941 rec( 8, 4, AFPEntryID, ENC_BIG_ENDIAN ),
11942 ])
11943 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600,
11944 0x9804, 0x9b03, 0x9c03, 0xa100, 0xa201,
11945 0xfd00, 0xff00])
11946 # 2222/230D, 35/13
11947 pkt = NCP(0x230D, "AFP 2.0 Create Directory", 'afp')
11948 pkt.Request((55,309), [
11949 rec( 10, 1, VolumeNumber ),
11950 rec( 11, 4, BaseDirectoryID ),
11951 rec( 15, 1, Reserved ),
11952 rec( 16, 4, CreatorID, ENC_BIG_ENDIAN ),
11953 rec( 20, 4, Reserved4 ),
11954 rec( 24, 2, FinderAttr ),
11955 rec( 26, 2, HorizLocation ),
11956 rec( 28, 2, VertLocation ),
11957 rec( 30, 2, FileDirWindow ),
11958 rec( 32, 16, Reserved16 ),
11959 rec( 48, 6, ProDOSInfo ),
11960 rec( 54, (1,255), Path, info_str=(Path, "AFP 2.0 Create Directory: %s", ", %s") ),
11961 ])
11962 pkt.Reply(12, [
11963 rec( 8, 4, NewDirectoryID ),
11964 ])
11965 pkt.CompletionCodes([0x0000, 0x8301, 0x8400, 0x8800, 0x9300,
11966 0x9600, 0x9804, 0x9900, 0x9c03, 0x9e00,
11967 0xa100, 0xa201, 0xfd00, 0xff00])
11968 # 2222/230E, 35/14
11969 pkt = NCP(0x230E, "AFP 2.0 Create File", 'afp')
11970 pkt.Request((55,309), [
11971 rec( 10, 1, VolumeNumber ),
11972 rec( 11, 4, BaseDirectoryID ),
11973 rec( 15, 1, DeleteExistingFileFlag ),
11974 rec( 16, 4, CreatorID, ENC_BIG_ENDIAN ),
11975 rec( 20, 4, Reserved4 ),
11976 rec( 24, 2, FinderAttr ),
11977 rec( 26, 2, HorizLocation ),
11978 rec( 28, 2, VertLocation ),
11979 rec( 30, 2, FileDirWindow ),
11980 rec( 32, 16, Reserved16 ),
11981 rec( 48, 6, ProDOSInfo ),
11982 rec( 54, (1,255), Path, info_str=(Path, "AFP 2.0 Create File: %s", ", %s") ),
11983 ])
11984 pkt.Reply(12, [
11985 rec( 8, 4, NewDirectoryID ),
11986 ])
11987 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8301, 0x8400,
11988 0x8701, 0x8800, 0x8a00, 0x8d00, 0x8e00,
11989 0x8f00, 0x9001, 0x9300, 0x9600, 0x9804,
11990 0x9900, 0x9b03, 0x9c03, 0x9e00, 0xa100,
11991 0xa201, 0xfd00, 0xff00])
11992 # 2222/230F, 35/15
11993 pkt = NCP(0x230F, "AFP 2.0 Get File Or Directory Information", 'afp')
11994 pkt.Request((18,272), [
11995 rec( 10, 1, VolumeNumber ),
11996 rec( 11, 4, BaseDirectoryID ),
11997 rec( 15, 2, RequestBitMap, ENC_BIG_ENDIAN ),
11998 rec( 17, (1,255), Path, info_str=(Path, "AFP 2.0 Get Information: %s", ", %s") ),
11999 ])
12000 pkt.Reply(128, [
12001 rec( 8, 4, AFPEntryID, ENC_BIG_ENDIAN ),
12002 rec( 12, 4, ParentID, ENC_BIG_ENDIAN ),
12003 rec( 16, 2, AttributesDef16 ),
12004 rec( 18, 4, DataForkLen, ENC_BIG_ENDIAN ),
12005 rec( 22, 4, ResourceForkLen, ENC_BIG_ENDIAN ),
12006 rec( 26, 2, TotalOffspring, ENC_BIG_ENDIAN ),
12007 rec( 28, 2, CreationDate, ENC_BIG_ENDIAN ),
12008 rec( 30, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12009 rec( 32, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12010 rec( 34, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12011 rec( 36, 2, ArchivedDate, ENC_BIG_ENDIAN ),
12012 rec( 38, 2, ArchivedTime, ENC_BIG_ENDIAN ),
12013 rec( 40, 4, CreatorID, ENC_BIG_ENDIAN ),
12014 rec( 44, 4, Reserved4 ),
12015 rec( 48, 2, FinderAttr ),
12016 rec( 50, 2, HorizLocation ),
12017 rec( 52, 2, VertLocation ),
12018 rec( 54, 2, FileDirWindow ),
12019 rec( 56, 16, Reserved16 ),
12020 rec( 72, 32, LongName ),
12021 rec( 104, 4, CreatorID, ENC_BIG_ENDIAN ),
12022 rec( 108, 12, ShortName ),
12023 rec( 120, 1, AccessPrivileges ),
12024 rec( 121, 1, Reserved ),
12025 rec( 122, 6, ProDOSInfo ),
12026 ])
12027 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0x9804, 0x9c03,
12028 0xa100, 0xa201, 0xfd00, 0xff19])
12029 # 2222/2310, 35/16
12030 pkt = NCP(0x2310, "AFP 2.0 Set File Information", 'afp')
12031 pkt.Request((70, 324), [
12032 rec( 10, 1, VolumeNumber ),
12033 rec( 11, 4, MacBaseDirectoryID ),
12034 rec( 15, 2, RequestBitMap, ENC_BIG_ENDIAN ),
12035 rec( 17, 2, AttributesDef16 ),
12036 rec( 19, 2, CreationDate, ENC_BIG_ENDIAN ),
12037 rec( 21, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12038 rec( 23, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12039 rec( 25, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12040 rec( 27, 2, ArchivedDate, ENC_BIG_ENDIAN ),
12041 rec( 29, 2, ArchivedTime, ENC_BIG_ENDIAN ),
12042 rec( 31, 4, CreatorID, ENC_BIG_ENDIAN ),
12043 rec( 35, 4, Reserved4 ),
12044 rec( 39, 2, FinderAttr ),
12045 rec( 41, 2, HorizLocation ),
12046 rec( 43, 2, VertLocation ),
12047 rec( 45, 2, FileDirWindow ),
12048 rec( 47, 16, Reserved16 ),
12049 rec( 63, 6, ProDOSInfo ),
12050 rec( 69, (1,255), Path, info_str=(Path, "AFP 2.0 Set File Information: %s", ", %s") ),
12051 ])
12052 pkt.Reply(8)
12053 pkt.CompletionCodes([0x0000, 0x0104, 0x8301, 0x8800, 0x9300, 0x9400,
12054 0x9500, 0x9600, 0x9804, 0x9c03, 0xa100, 0xa201,
12055 0xfd00, 0xff16])
12056 # 2222/2311, 35/17
12057 pkt = NCP(0x2311, "AFP 2.0 Scan File Information", 'afp')
12058 pkt.Request((26, 280), [
12059 rec( 10, 1, VolumeNumber ),
12060 rec( 11, 4, MacBaseDirectoryID ),
12061 rec( 15, 4, MacLastSeenID, ENC_BIG_ENDIAN ),
12062 rec( 19, 2, DesiredResponseCount, ENC_BIG_ENDIAN ),
12063 rec( 21, 2, SearchBitMap, ENC_BIG_ENDIAN ),
12064 rec( 23, 2, RequestBitMap, ENC_BIG_ENDIAN ),
12065 rec( 25, (1,255), Path, info_str=(Path, "AFP 2.0 Scan File Information: %s", ", %s") ),
12066 ])
12067 pkt.Reply(14, [
12068 rec( 8, 2, ActualResponseCount, var="x" ),
12069 rec( 10, 4, AFP20Struct, repeat="x" ),
12070 ])
12071 pkt.CompletionCodes([0x0000, 0x8301, 0x8800, 0x9300, 0x9600, 0x9804,
12072 0x9c03, 0xa100, 0xa201, 0xfd00, 0xff16])
12073 # 2222/2312, 35/18
12074 pkt = NCP(0x2312, "AFP Get DOS Name From Entry ID", 'afp')
12075 pkt.Request(15, [
12076 rec( 10, 1, VolumeNumber ),
12077 rec( 11, 4, AFPEntryID, ENC_BIG_ENDIAN ),
12078 ])
12079 pkt.Reply((9,263), [
12080 rec( 8, (1,255), Path ),
12081 ])
12082 pkt.CompletionCodes([0x0000, 0x8900, 0x9600, 0xbf00])
12083 # 2222/2313, 35/19
12084 pkt = NCP(0x2313, "AFP Get Macintosh Info On Deleted File", 'afp')
12085 pkt.Request(15, [
12086 rec( 10, 1, VolumeNumber ),
12087 rec( 11, 4, DirectoryNumber, ENC_BIG_ENDIAN ),
12088 ])
12089 pkt.Reply((51,305), [
12090 rec( 8, 4, CreatorID, ENC_BIG_ENDIAN ),
12091 rec( 12, 4, Reserved4 ),
12092 rec( 16, 2, FinderAttr ),
12093 rec( 18, 2, HorizLocation ),
12094 rec( 20, 2, VertLocation ),
12095 rec( 22, 2, FileDirWindow ),
12096 rec( 24, 16, Reserved16 ),
12097 rec( 40, 6, ProDOSInfo ),
12098 rec( 46, 4, ResourceForkSize, ENC_BIG_ENDIAN ),
12099 rec( 50, (1,255), FileName ),
12100 ])
12101 pkt.CompletionCodes([0x0000, 0x9c03, 0xbf00])
12102 # 2222/2400, 36/00
12103 pkt = NCP(0x2400, "Get NCP Extension Information", 'extension')
12104 pkt.Request(14, [
12105 rec( 10, 4, NCPextensionNumber, ENC_LITTLE_ENDIAN ),
12106 ])
12107 pkt.Reply((16,270), [
12108 rec( 8, 4, NCPextensionNumber ),
12109 rec( 12, 1, NCPextensionMajorVersion ),
12110 rec( 13, 1, NCPextensionMinorVersion ),
12111 rec( 14, 1, NCPextensionRevisionNumber ),
12112 rec( 15, (1, 255), NCPextensionName ),
12113 ])
12114 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12115 # 2222/2401, 36/01
12116 pkt = NCP(0x2401, "Get NCP Extension Maximum Data Size", 'extension')
12117 pkt.Request(10)
12118 pkt.Reply(10, [
12119 rec( 8, 2, NCPdataSize ),
12120 ])
12121 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12122 # 2222/2402, 36/02
12123 pkt = NCP(0x2402, "Get NCP Extension Information by Name", 'extension')
12124 pkt.Request((11, 265), [
12125 rec( 10, (1,255), NCPextensionName, info_str=(NCPextensionName, "Get NCP Extension Information by Name: %s", ", %s") ),
12126 ])
12127 pkt.Reply((16,270), [
12128 rec( 8, 4, NCPextensionNumber ),
12129 rec( 12, 1, NCPextensionMajorVersion ),
12130 rec( 13, 1, NCPextensionMinorVersion ),
12131 rec( 14, 1, NCPextensionRevisionNumber ),
12132 rec( 15, (1, 255), NCPextensionName ),
12133 ])
12134 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12135 # 2222/2403, 36/03
12136 pkt = NCP(0x2403, "Get Number of Registered NCP Extensions", 'extension')
12137 pkt.Request(10)
12138 pkt.Reply(12, [
12139 rec( 8, 4, NumberOfNCPExtensions ),
12140 ])
12141 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12142 # 2222/2404, 36/04
12143 pkt = NCP(0x2404, "Get NCP Extension Registered Verbs List", 'extension')
12144 pkt.Request(14, [
12145 rec( 10, 4, StartingNumber ),
12146 ])
12147 pkt.Reply(20, [
12148 rec( 8, 4, ReturnedListCount, var="x" ),
12149 rec( 12, 4, nextStartingNumber ),
12150 rec( 16, 4, NCPExtensionNumbers, repeat="x" ),
12151 ])
12152 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12153 # 2222/2405, 36/05
12154 pkt = NCP(0x2405, "Return NCP Extension Information", 'extension')
12155 pkt.Request(14, [
12156 rec( 10, 4, NCPextensionNumber ),
12157 ])
12158 pkt.Reply((16,270), [
12159 rec( 8, 4, NCPextensionNumber ),
12160 rec( 12, 1, NCPextensionMajorVersion ),
12161 rec( 13, 1, NCPextensionMinorVersion ),
12162 rec( 14, 1, NCPextensionRevisionNumber ),
12163 rec( 15, (1, 255), NCPextensionName ),
12164 ])
12165 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12166 # 2222/2406, 36/06
12167 pkt = NCP(0x2406, "Return NCP Extension Maximum Data Size", 'extension')
12168 pkt.Request(10)
12169 pkt.Reply(12, [
12170 rec( 8, 4, NCPdataSize ),
12171 ])
12172 pkt.CompletionCodes([0x0000, 0x7e01, 0xfe00, 0xff20])
12173 # 2222/25, 37
12174 pkt = NCP(0x25, "Execute NCP Extension", 'extension')
12175 pkt.Request(11, [
12176 rec( 7, 4, NCPextensionNumber ),
12177 # The following value is Unicode
12178 #rec[ 13, (1,255), RequestData ],
12179 ])
12180 pkt.Reply(8)
12181 # The following value is Unicode
12182 #[ 8, (1, 255), ReplyBuffer ],
12183 pkt.CompletionCodes([0x0000, 0x7e01, 0xf000, 0x9c00, 0xd504, 0xee00, 0xfe00, 0xff20])
12184 # 2222/3B, 59
12185 pkt = NCP(0x3B, "Commit File", 'file', has_length=0 )
12186 pkt.Request(14, [
12187 rec( 7, 1, Reserved ),
12188 rec( 8, 6, FileHandle, info_str=(FileHandle, "Commit File - 0x%s", ", %s") ),
12189 ])
12190 pkt.Reply(8)
12191 pkt.CompletionCodes([0x0000, 0x8800, 0x9804, 0xff00])
12192 # 2222/3D, 61
12193 pkt = NCP(0x3D, "Commit File", 'file', has_length=0 )
12194 pkt.Request(14, [
12195 rec( 7, 1, Reserved ),
12196 rec( 8, 6, FileHandle, info_str=(FileHandle, "Commit File - 0x%s", ", %s") ),
12197 ])
12198 pkt.Reply(8)
12199 pkt.CompletionCodes([0x0000, 0x8800, 0x9804, 0xff00])
12200 # 2222/3E, 62
12201 pkt = NCP(0x3E, "File Search Initialize", 'file', has_length=0 )
12202 pkt.Request((9, 263), [
12203 rec( 7, 1, DirHandle ),
12204 rec( 8, (1,255), Path, info_str=(Path, "Initialize File Search: %s", ", %s") ),
12205 ])
12206 pkt.Reply(14, [
12207 rec( 8, 1, VolumeNumber ),
12208 rec( 9, 2, DirectoryID ),
12209 rec( 11, 2, SequenceNumber, ENC_BIG_ENDIAN ),
12210 rec( 13, 1, AccessRightsMask ),
12211 ])
12212 pkt.CompletionCodes([0x0000, 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa100,
12213 0xfd00, 0xff16])
12214 # 2222/3F, 63
12215 pkt = NCP(0x3F, "File Search Continue", 'file', has_length=0 )
12216 pkt.Request((14, 268), [
12217 rec( 7, 1, VolumeNumber ),
12218 rec( 8, 2, DirectoryID ),
12219 rec( 10, 2, SequenceNumber, ENC_BIG_ENDIAN ),
12220 rec( 12, 1, SearchAttributes ),
12221 rec( 13, (1,255), Path, info_str=(Path, "File Search Continue: %s", ", %s") ),
12222 ])
12223 pkt.Reply( NO_LENGTH_CHECK, [
12224 #
12225 # XXX - don't show this if we got back a non-zero
12226 # completion code? For example, 255 means "No
12227 # matching files or directories were found", so
12228 # presumably it can't show you a matching file or
12229 # directory instance - it appears to just leave crap
12230 # there.
12231 #
12232 srec( DirectoryInstance, req_cond="ncp.sattr_sub==TRUE"),
12233 srec( FileInstance, req_cond="ncp.sattr_sub!=TRUE"),
12234 ])
12235 pkt.ReqCondSizeVariable()
12236 pkt.CompletionCodes([0x0000, 0xff16])
12237 # 2222/40, 64
12238 pkt = NCP(0x40, "Search for a File", 'file')
12239 pkt.Request((12, 266), [
12240 rec( 7, 2, SequenceNumber, ENC_BIG_ENDIAN ),
12241 rec( 9, 1, DirHandle ),
12242 rec( 10, 1, SearchAttributes ),
12243 rec( 11, (1,255), FileName, info_str=(FileName, "Search for File: %s", ", %s") ),
12244 ])
12245 pkt.Reply(40, [
12246 rec( 8, 2, SequenceNumber, ENC_BIG_ENDIAN ),
12247 rec( 10, 2, Reserved2 ),
12248 rec( 12, 14, FileName14 ),
12249 rec( 26, 1, AttributesDef ),
12250 rec( 27, 1, FileExecuteType ),
12251 rec( 28, 4, FileSize ),
12252 rec( 32, 2, CreationDate, ENC_BIG_ENDIAN ),
12253 rec( 34, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12254 rec( 36, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12255 rec( 38, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12256 ])
12257 pkt.CompletionCodes([0x0000, 0x8900, 0x9600, 0x9804, 0x9b03,
12258 0x9c03, 0xa100, 0xfd00, 0xff16])
12259 # 2222/41, 65
12260 pkt = NCP(0x41, "Open File", 'file')
12261 pkt.Request((10, 264), [
12262 rec( 7, 1, DirHandle ),
12263 rec( 8, 1, SearchAttributes ),
12264 rec( 9, (1,255), FileName, info_str=(FileName, "Open File: %s", ", %s") ),
12265 ])
12266 pkt.Reply(44, [
12267 rec( 8, 6, FileHandle ),
12268 rec( 14, 2, Reserved2 ),
12269 rec( 16, 14, FileName14 ),
12270 rec( 30, 1, AttributesDef ),
12271 rec( 31, 1, FileExecuteType ),
12272 rec( 32, 4, FileSize, ENC_BIG_ENDIAN ),
12273 rec( 36, 2, CreationDate, ENC_BIG_ENDIAN ),
12274 rec( 38, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12275 rec( 40, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12276 rec( 42, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12277 ])
12278 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8200, 0x9400,
12279 0x9600, 0x9804, 0x9c03, 0xa100, 0xfd00,
12280 0xff16])
12281 # 2222/42, 66
12282 pkt = NCP(0x42, "Close File", 'file')
12283 pkt.Request(14, [
12284 rec( 7, 1, Reserved ),
12285 rec( 8, 6, FileHandle, info_str=(FileHandle, "Close File - 0x%s", ", %s") ),
12286 ])
12287 pkt.Reply(8)
12288 pkt.CompletionCodes([0x0000, 0x8800, 0xff1a])
12289 pkt.MakeExpert("ncp42_request")
12290 # 2222/43, 67
12291 pkt = NCP(0x43, "Create File", 'file')
12292 pkt.Request((10, 264), [
12293 rec( 7, 1, DirHandle ),
12294 rec( 8, 1, AttributesDef ),
12295 rec( 9, (1,255), FileName, info_str=(FileName, "Create File: %s", ", %s") ),
12296 ])
12297 pkt.Reply(44, [
12298 rec( 8, 6, FileHandle ),
12299 rec( 14, 2, Reserved2 ),
12300 rec( 16, 14, FileName14 ),
12301 rec( 30, 1, AttributesDef ),
12302 rec( 31, 1, FileExecuteType ),
12303 rec( 32, 4, FileSize, ENC_BIG_ENDIAN ),
12304 rec( 36, 2, CreationDate, ENC_BIG_ENDIAN ),
12305 rec( 38, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12306 rec( 40, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12307 rec( 42, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12308 ])
12309 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12310 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12311 0x9804, 0x9900, 0x9b03, 0x9c03, 0xfd00,
12312 0xff00])
12313 # 2222/44, 68
12314 pkt = NCP(0x44, "Erase File", 'file')
12315 pkt.Request((10, 264), [
12316 rec( 7, 1, DirHandle ),
12317 rec( 8, 1, SearchAttributes ),
12318 rec( 9, (1,255), FileName, info_str=(FileName, "Erase File: %s", ", %s") ),
12319 ])
12320 pkt.Reply(8)
12321 pkt.CompletionCodes([0x0000, 0x8a00, 0x8d00, 0x8e00, 0x8f00,
12322 0x9001, 0x9600, 0x9804, 0x9b03, 0x9c03,
12323 0xa100, 0xfd00, 0xff00])
12324 # 2222/45, 69
12325 pkt = NCP(0x45, "Rename File", 'file')
12326 pkt.Request((12, 520), [
12327 rec( 7, 1, DirHandle ),
12328 rec( 8, 1, SearchAttributes ),
12329 rec( 9, (1,255), FileName, info_str=(FileName, "Rename File: %s", ", %s") ),
12330 rec( -1, 1, TargetDirHandle ),
12331 rec( -1, (1, 255), NewFileNameLen ),
12332 ])
12333 pkt.Reply(8)
12334 pkt.CompletionCodes([0x0000, 0x8701, 0x8b00, 0x8d00, 0x8e00,
12335 0x8f00, 0x9001, 0x9101, 0x9201, 0x9600,
12336 0x9804, 0x9a00, 0x9b03, 0x9c03, 0xa100,
12337 0xfd00, 0xff16])
12338 # 2222/46, 70
12339 pkt = NCP(0x46, "Set File Attributes", 'file')
12340 pkt.Request((11, 265), [
12341 rec( 7, 1, AttributesDef ),
12342 rec( 8, 1, DirHandle ),
12343 rec( 9, 1, SearchAttributes ),
12344 rec( 10, (1,255), FileName, info_str=(FileName, "Set File Attributes: %s", ", %s") ),
12345 ])
12346 pkt.Reply(8)
12347 pkt.CompletionCodes([0x0000, 0x8c00, 0x8d00, 0x8e00, 0x9600,
12348 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfd00,
12349 0xff16])
12350 # 2222/47, 71
12351 pkt = NCP(0x47, "Get Current Size of File", 'file')
12352 pkt.Request(14, [
12353 rec(7, 1, Reserved ),
12354 rec( 8, 6, FileHandle, info_str=(FileHandle, "Get Current Size of File - 0x%s", ", %s") ),
12355 ])
12356 pkt.Reply(12, [
12357 rec( 8, 4, FileSize, ENC_BIG_ENDIAN ),
12358 ])
12359 pkt.CompletionCodes([0x0000, 0x8800])
12360 # 2222/48, 72
12361 pkt = NCP(0x48, "Read From A File", 'file')
12362 pkt.Request(20, [
12363 rec( 7, 1, Reserved ),
12364 rec( 8, 6, FileHandle, info_str=(FileHandle, "Read From File - 0x%s", ", %s") ),
12365 rec( 14, 4, FileOffset, ENC_BIG_ENDIAN ),
12366 rec( 18, 2, MaxBytes, ENC_BIG_ENDIAN ),
12367 ])
12368 pkt.Reply(10, [
12369 rec( 8, 2, NumBytes, ENC_BIG_ENDIAN ),
12370 ])
12371 pkt.CompletionCodes([0x0000, 0x8300, 0x8800, 0x9300, 0xff1b])
12372 # 2222/49, 73
12373 pkt = NCP(0x49, "Write to a File", 'file')
12374 pkt.Request(20, [
12375 rec( 7, 1, Reserved ),
12376 rec( 8, 6, FileHandle, info_str=(FileHandle, "Write to a File - 0x%s", ", %s") ),
12377 rec( 14, 4, FileOffset, ENC_BIG_ENDIAN ),
12378 rec( 18, 2, MaxBytes, ENC_BIG_ENDIAN ),
12379 ])
12380 pkt.Reply(8)
12381 pkt.CompletionCodes([0x0000, 0x0104, 0x8300, 0x8800, 0x9400, 0x9500, 0xa201, 0xff1b])
12382 # 2222/4A, 74
12383 pkt = NCP(0x4A, "Copy from One File to Another", 'file')
12384 pkt.Request(30, [
12385 rec( 7, 1, Reserved ),
12386 rec( 8, 6, FileHandle ),
12387 rec( 14, 6, TargetFileHandle ),
12388 rec( 20, 4, FileOffset, ENC_BIG_ENDIAN ),
12389 rec( 24, 4, TargetFileOffset, ENC_BIG_ENDIAN ),
12390 rec( 28, 2, BytesToCopy, ENC_BIG_ENDIAN ),
12391 ])
12392 pkt.Reply(12, [
12393 rec( 8, 4, BytesActuallyTransferred, ENC_BIG_ENDIAN ),
12394 ])
12395 pkt.CompletionCodes([0x0000, 0x0104, 0x8300, 0x8800, 0x9300, 0x9400,
12396 0x9500, 0x9600, 0xa201, 0xff1b])
12397 # 2222/4B, 75
12398 pkt = NCP(0x4B, "Set File Time Date Stamp", 'file')
12399 pkt.Request(18, [
12400 rec( 7, 1, Reserved ),
12401 rec( 8, 6, FileHandle, info_str=(FileHandle, "Set Time and Date Stamp for File - 0x%s", ", %s") ),
12402 rec( 14, 2, FileTime, ENC_BIG_ENDIAN ),
12403 rec( 16, 2, FileDate, ENC_BIG_ENDIAN ),
12404 ])
12405 pkt.Reply(8)
12406 pkt.CompletionCodes([0x0000, 0x8800, 0x9400, 0x9600, 0xfb08])
12407 # 2222/4C, 76
12408 pkt = NCP(0x4C, "Open File", 'file')
12409 pkt.Request((11, 265), [
12410 rec( 7, 1, DirHandle ),
12411 rec( 8, 1, SearchAttributes ),
12412 rec( 9, 1, AccessRightsMask ),
12413 rec( 10, (1,255), FileName, info_str=(FileName, "Open File: %s", ", %s") ),
12414 ])
12415 pkt.Reply(44, [
12416 rec( 8, 6, FileHandle ),
12417 rec( 14, 2, Reserved2 ),
12418 rec( 16, 14, FileName14 ),
12419 rec( 30, 1, AttributesDef ),
12420 rec( 31, 1, FileExecuteType ),
12421 rec( 32, 4, FileSize, ENC_BIG_ENDIAN ),
12422 rec( 36, 2, CreationDate, ENC_BIG_ENDIAN ),
12423 rec( 38, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12424 rec( 40, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12425 rec( 42, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12426 ])
12427 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8200, 0x9400,
12428 0x9600, 0x9804, 0x9c03, 0xa100, 0xfd00,
12429 0xff16])
12430 # 2222/4D, 77
12431 pkt = NCP(0x4D, "Create File", 'file')
12432 pkt.Request((10, 264), [
12433 rec( 7, 1, DirHandle ),
12434 rec( 8, 1, AttributesDef ),
12435 rec( 9, (1,255), FileName, info_str=(FileName, "Create File: %s", ", %s") ),
12436 ])
12437 pkt.Reply(44, [
12438 rec( 8, 6, FileHandle ),
12439 rec( 14, 2, Reserved2 ),
12440 rec( 16, 14, FileName14 ),
12441 rec( 30, 1, AttributesDef ),
12442 rec( 31, 1, FileExecuteType ),
12443 rec( 32, 4, FileSize, ENC_BIG_ENDIAN ),
12444 rec( 36, 2, CreationDate, ENC_BIG_ENDIAN ),
12445 rec( 38, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12446 rec( 40, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12447 rec( 42, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12448 ])
12449 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12450 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12451 0x9804, 0x9900, 0x9b03, 0x9c03, 0xfd00,
12452 0xff00])
12453 # 2222/4F, 79
12454 pkt = NCP(0x4F, "Set File Extended Attributes", 'file')
12455 pkt.Request((11, 265), [
12456 rec( 7, 1, AttributesDef ),
12457 rec( 8, 1, DirHandle ),
12458 rec( 9, 1, AccessRightsMask ),
12459 rec( 10, (1,255), FileName, info_str=(FileName, "Set File Extended Attributes: %s", ", %s") ),
12460 ])
12461 pkt.Reply(8)
12462 pkt.CompletionCodes([0x0000, 0x8c00, 0x8d00, 0x8e00, 0x9600,
12463 0x9804, 0x9b03, 0x9c03, 0xa100, 0xfd00,
12464 0xff16])
12465 # 2222/54, 84
12466 pkt = NCP(0x54, "Open/Create File", 'file')
12467 pkt.Request((12, 266), [
12468 rec( 7, 1, DirHandle ),
12469 rec( 8, 1, AttributesDef ),
12470 rec( 9, 1, AccessRightsMask ),
12471 rec( 10, 1, ActionFlag ),
12472 rec( 11, (1,255), FileName, info_str=(FileName, "Open/Create File: %s", ", %s") ),
12473 ])
12474 pkt.Reply(44, [
12475 rec( 8, 6, FileHandle ),
12476 rec( 14, 2, Reserved2 ),
12477 rec( 16, 14, FileName14 ),
12478 rec( 30, 1, AttributesDef ),
12479 rec( 31, 1, FileExecuteType ),
12480 rec( 32, 4, FileSize, ENC_BIG_ENDIAN ),
12481 rec( 36, 2, CreationDate, ENC_BIG_ENDIAN ),
12482 rec( 38, 2, LastAccessedDate, ENC_BIG_ENDIAN ),
12483 rec( 40, 2, ModifiedDate, ENC_BIG_ENDIAN ),
12484 rec( 42, 2, ModifiedTime, ENC_BIG_ENDIAN ),
12485 ])
12486 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12487 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12488 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
12489 # 2222/55, 85
12490 pkt = NCP(0x55, "Get Sparse File Data Block Bit Map", 'file', has_length=1)
12491 pkt.Request(19, [
12492 rec( 7, 2, SubFuncStrucLen, ENC_BIG_ENDIAN ),
12493 rec( 9, 6, FileHandle, info_str=(FileHandle, "Get Sparse File Data Block Bitmap for File - 0x%s", ", %s") ),
12494 rec( 15, 4, FileOffset ),
12495 ])
12496 pkt.Reply(528, [
12497 rec( 8, 4, AllocationBlockSize ),
12498 rec( 12, 4, Reserved4 ),
12499 rec( 16, 512, BitMap ),
12500 ])
12501 pkt.CompletionCodes([0x0000, 0x8800])
12502 # 2222/5601, 86/01
12503 pkt = NCP(0x5601, "Close Extended Attribute Handle", 'extended', has_length=0 )
12504 pkt.Request(14, [
12505 rec( 8, 2, Reserved2 ),
12506 rec( 10, 4, EAHandle ),
12507 ])
12508 pkt.Reply(8)
12509 pkt.CompletionCodes([0x0000, 0xcf00, 0xd301])
12510 # 2222/5602, 86/02
12511 pkt = NCP(0x5602, "Write Extended Attribute", 'extended', has_length=0 )
12512 pkt.Request((35,97), [
12513 rec( 8, 2, EAFlags ),
12514 rec( 10, 4, EAHandleOrNetWareHandleOrVolume, ENC_BIG_ENDIAN ),
12515 rec( 14, 4, ReservedOrDirectoryNumber ),
12516 rec( 18, 4, TtlWriteDataSize ),
12517 rec( 22, 4, FileOffset ),
12518 rec( 26, 4, EAAccessFlag ),
12519 rec( 30, 2, EAValueLength, var='x' ),
12520 rec( 32, (2,64), EAKey, info_str=(EAKey, "Write Extended Attribute: %s", ", %s") ),
12521 rec( -1, 1, EAValueRep, repeat='x' ),
12522 ])
12523 pkt.Reply(20, [
12524 rec( 8, 4, EAErrorCodes ),
12525 rec( 12, 4, EABytesWritten ),
12526 rec( 16, 4, NewEAHandle ),
12527 ])
12528 pkt.CompletionCodes([0x0000, 0xc800, 0xc900, 0xcb00, 0xce00, 0xcf00, 0xd101,
12529 0xd203, 0xd301, 0xd402, 0xda02, 0xdc01, 0xef00, 0xff00])
12530 # 2222/5603, 86/03
12531 pkt = NCP(0x5603, "Read Extended Attribute", 'extended', has_length=0 )
12532 pkt.Request((28,538), [
12533 rec( 8, 2, EAFlags ),
12534 rec( 10, 4, EAHandleOrNetWareHandleOrVolume ),
12535 rec( 14, 4, ReservedOrDirectoryNumber ),
12536 rec( 18, 4, FileOffset ),
12537 rec( 22, 4, InspectSize ),
12538 rec( 26, (2,512), EAKey, info_str=(EAKey, "Read Extended Attribute: %s", ", %s") ),
12539 ])
12540 pkt.Reply((26,536), [
12541 rec( 8, 4, EAErrorCodes ),
12542 rec( 12, 4, TtlValuesLength ),
12543 rec( 16, 4, NewEAHandle ),
12544 rec( 20, 4, EAAccessFlag ),
12545 rec( 24, (2,512), EAValue ),
12546 ])
12547 pkt.CompletionCodes([0x0000, 0x8800, 0x9c03, 0xc900, 0xce00, 0xcf00, 0xd101,
12548 0xd301, 0xd503])
12549 # 2222/5604, 86/04
12550 pkt = NCP(0x5604, "Enumerate Extended Attribute", 'extended', has_length=0 )
12551 pkt.Request((26,536), [
12552 rec( 8, 2, EAFlags ),
12553 rec( 10, 4, EAHandleOrNetWareHandleOrVolume ),
12554 rec( 14, 4, ReservedOrDirectoryNumber ),
12555 rec( 18, 4, InspectSize ),
12556 rec( 22, 2, SequenceNumber ),
12557 rec( 24, (2,512), EAKey, info_str=(EAKey, "Enumerate Extended Attribute: %s", ", %s") ),
12558 ])
12559 pkt.Reply(28, [
12560 rec( 8, 4, EAErrorCodes ),
12561 rec( 12, 4, TtlEAs ),
12562 rec( 16, 4, TtlEAsDataSize ),
12563 rec( 20, 4, TtlEAsKeySize ),
12564 rec( 24, 4, NewEAHandle ),
12565 ])
12566 pkt.CompletionCodes([0x0000, 0x8800, 0x8c01, 0xc800, 0xc900, 0xce00, 0xcf00, 0xd101,
12567 0xd301, 0xd503, 0xfb08, 0xff00])
12568 # 2222/5605, 86/05
12569 pkt = NCP(0x5605, "Duplicate Extended Attributes", 'extended', has_length=0 )
12570 pkt.Request(28, [
12571 rec( 8, 2, EAFlags ),
12572 rec( 10, 2, DstEAFlags ),
12573 rec( 12, 4, EAHandleOrNetWareHandleOrVolume ),
12574 rec( 16, 4, ReservedOrDirectoryNumber ),
12575 rec( 20, 4, EAHandleOrNetWareHandleOrVolume ),
12576 rec( 24, 4, ReservedOrDirectoryNumber ),
12577 ])
12578 pkt.Reply(20, [
12579 rec( 8, 4, EADuplicateCount ),
12580 rec( 12, 4, EADataSizeDuplicated ),
12581 rec( 16, 4, EAKeySizeDuplicated ),
12582 ])
12583 pkt.CompletionCodes([0x0000, 0x8800, 0xd101])
12584 # 2222/5701, 87/01
12585 pkt = NCP(0x5701, "Open/Create File or Subdirectory", 'file', has_length=0)
12586 pkt.Request((30, 284), [
12587 rec( 8, 1, NameSpace ),
12588 rec( 9, 1, OpenCreateMode ),
12589 rec( 10, 2, SearchAttributesLow ),
12590 rec( 12, 2, ReturnInfoMask ),
12591 rec( 14, 2, ExtendedInfo ),
12592 rec( 16, 4, AttributesDef32 ),
12593 rec( 20, 2, DesiredAccessRights ),
12594 rec( 22, 1, VolumeNumber ),
12595 rec( 23, 4, DirectoryBase ),
12596 rec( 27, 1, HandleFlag ),
12597 rec( 28, 1, PathCount, var="x" ),
12598 rec( 29, (1,255), Path, repeat="x", info_str=(Path, "Open or Create: %s", "/%s") ),
12599 ])
12600 pkt.Reply( NO_LENGTH_CHECK, [
12601 rec( 8, 4, FileHandle ),
12602 rec( 12, 1, OpenCreateAction ),
12603 rec( 13, 1, Reserved ),
12604 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
12605 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
12606 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
12607 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
12608 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
12609 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
12610 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
12611 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
12612 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
12613 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
12614 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
12615 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
12616 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
12617 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
12618 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
12619 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
12620 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
12621 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
12622 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
12623 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
12624 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
12625 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
12626 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
12627 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
12628 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
12629 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
12630 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
12631 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
12632 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
12633 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
12634 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
12635 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
12636 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
12637 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
12638 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
12639 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
12640 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
12641 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
12642 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
12643 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
12644 srec( DOSNameStruct, req_cond="ncp.ext_info_dos_name == 1" ),
12645 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
12646 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
12647 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
12648 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
12649 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
12650 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
12651 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
12652 srec( FileNameStruct, req_cond="ncp.ret_info_mask_fname == 1" ),
12653 ])
12654 pkt.ReqCondSizeVariable()
12655 pkt.CompletionCodes([0x0000, 0x0102, 0x7f00, 0x8001, 0x8101, 0x8401, 0x8501,
12656 0x8701, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9400, 0x9600,
12657 0x9804, 0x9900, 0x9b03, 0x9c03, 0xa500, 0xa802, 0xa901, 0xbf00, 0xfd00, 0xff16])
12658 pkt.MakeExpert("file_rights")
12659 # 2222/5702, 87/02
12660 pkt = NCP(0x5702, "Initialize Search", 'file', has_length=0)
12661 pkt.Request( (18,272), [
12662 rec( 8, 1, NameSpace ),
12663 rec( 9, 1, Reserved ),
12664 rec( 10, 1, VolumeNumber ),
12665 rec( 11, 4, DirectoryBase ),
12666 rec( 15, 1, HandleFlag ),
12667 rec( 16, 1, PathCount, var="x" ),
12668 rec( 17, (1,255), Path, repeat="x", info_str=(Path, "Set Search Pointer to: %s", "/%s") ),
12669 ])
12670 pkt.Reply(17, [
12671 rec( 8, 1, VolumeNumber ),
12672 rec( 9, 4, DirectoryNumber ),
12673 rec( 13, 4, DirectoryEntryNumber ),
12674 ])
12675 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12676 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12677 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
12678 # 2222/5703, 87/03
12679 pkt = NCP(0x5703, "Search for File or Subdirectory", 'file', has_length=0)
12680 pkt.Request((26, 280), [
12681 rec( 8, 1, NameSpace ),
12682 rec( 9, 1, DataStream ),
12683 rec( 10, 2, SearchAttributesLow ),
12684 rec( 12, 2, ReturnInfoMask ),
12685 rec( 14, 2, ExtendedInfo ),
12686 rec( 16, 9, SeachSequenceStruct ),
12687 rec( 25, (1,255), SearchPattern, info_str=(SearchPattern, "Search for: %s", "/%s") ),
12688 ])
12689 pkt.Reply( NO_LENGTH_CHECK, [
12690 rec( 8, 9, SeachSequenceStruct ),
12691 rec( 17, 1, Reserved ),
12692 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
12693 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
12694 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
12695 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
12696 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
12697 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
12698 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
12699 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
12700 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
12701 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
12702 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
12703 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
12704 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
12705 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
12706 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
12707 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
12708 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
12709 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
12710 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
12711 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
12712 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
12713 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
12714 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
12715 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
12716 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
12717 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
12718 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
12719 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
12720 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
12721 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
12722 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
12723 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
12724 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
12725 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
12726 srec( DStreamActual, req_cond="ncp.ret_info_mask_actual == 1" ),
12727 srec( DStreamLogical, req_cond="ncp.ret_info_mask_logical == 1" ),
12728 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
12729 srec( DOSNameStruct, req_cond="ncp.ext_info_dos_name == 1" ),
12730 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
12731 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
12732 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
12733 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
12734 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
12735 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
12736 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
12737 srec( FileNameStruct, req_cond="ncp.ret_info_mask_fname == 1" ),
12738 ])
12739 pkt.ReqCondSizeVariable()
12740 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12741 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12742 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
12743 # 2222/5704, 87/04
12744 pkt = NCP(0x5704, "Rename Or Move a File or Subdirectory", 'file', has_length=0)
12745 pkt.Request((28, 536), [
12746 rec( 8, 1, NameSpace ),
12747 rec( 9, 1, RenameFlag ),
12748 rec( 10, 2, SearchAttributesLow ),
12749 rec( 12, 1, VolumeNumber ),
12750 rec( 13, 4, DirectoryBase ),
12751 rec( 17, 1, HandleFlag ),
12752 rec( 18, 1, PathCount, var="x" ),
12753 rec( 19, 1, VolumeNumber ),
12754 rec( 20, 4, DirectoryBase ),
12755 rec( 24, 1, HandleFlag ),
12756 rec( 25, 1, PathCount, var="y" ),
12757 rec( 26, (1, 255), Path, repeat="x", info_str=(Path, "Rename or Move: %s", "/%s") ),
12758 rec( -1, (1,255), DestPath, repeat="y" ),
12759 ])
12760 pkt.Reply(8)
12761 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
12762 0x8701, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9100, 0x9200, 0x9600,
12763 0x9804, 0x9a00, 0x9b03, 0x9c03, 0x9e00, 0xa901, 0xbf00, 0xfd00, 0xff16])
12764 # 2222/5705, 87/05
12765 pkt = NCP(0x5705, "Scan File or Subdirectory for Trustees", 'file', has_length=0)
12766 pkt.Request((24, 278), [
12767 rec( 8, 1, NameSpace ),
12768 rec( 9, 1, Reserved ),
12769 rec( 10, 2, SearchAttributesLow ),
12770 rec( 12, 4, SequenceNumber ),
12771 rec( 16, 1, VolumeNumber ),
12772 rec( 17, 4, DirectoryBase ),
12773 rec( 21, 1, HandleFlag ),
12774 rec( 22, 1, PathCount, var="x" ),
12775 rec( 23, (1, 255), Path, repeat="x", info_str=(Path, "Scan Trustees for: %s", "/%s") ),
12776 ])
12777 pkt.Reply(20, [
12778 rec( 8, 4, SequenceNumber ),
12779 rec( 12, 2, ObjectIDCount, var="x" ),
12780 rec( 14, 6, TrusteeStruct, repeat="x" ),
12781 ])
12782 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12783 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12784 0x9804, 0x9b03, 0x9c04, 0xa901, 0xbf00, 0xfd00, 0xff16])
12785 # 2222/5706, 87/06
12786 pkt = NCP(0x5706, "Obtain File or SubDirectory Information", 'file', has_length=0)
12787 pkt.Request((24,278), [
12788 rec( 10, 1, SrcNameSpace ),
12789 rec( 11, 1, DestNameSpace ),
12790 rec( 12, 2, SearchAttributesLow ),
12791 rec( 14, 2, ReturnInfoMask, ENC_LITTLE_ENDIAN ),
12792 rec( 16, 2, ExtendedInfo ),
12793 rec( 18, 1, VolumeNumber ),
12794 rec( 19, 4, DirectoryBase ),
12795 rec( 23, 1, HandleFlag ),
12796 rec( 24, 1, PathCount, var="x" ),
12797 rec( 25, (1,255), Path, repeat="x", info_str=(Path, "Obtain Info for: %s", "/%s")),
12798 ])
12799 pkt.Reply(NO_LENGTH_CHECK, [
12800 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
12801 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
12802 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
12803 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
12804 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
12805 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
12806 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
12807 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
12808 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
12809 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
12810 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
12811 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
12812 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
12813 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
12814 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
12815 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
12816 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
12817 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
12818 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
12819 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
12820 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
12821 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
12822 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
12823 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
12824 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
12825 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
12826 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
12827 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
12828 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
12829 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
12830 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
12831 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
12832 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
12833 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
12834 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
12835 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
12836 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
12837 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
12838 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
12839 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
12840 srec( DOSNameStruct, req_cond="ncp.ext_info_dos_name == 1" ),
12841 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
12842 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
12843 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
12844 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
12845 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
12846 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
12847 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
12848 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
12849 srec( FileNameStruct, req_cond="ncp.ret_info_mask_fname == 1" ),
12850 ])
12851 pkt.ReqCondSizeVariable()
12852 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12853 0x8700, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9600,
12854 0x9802, 0x9b03, 0x9c03, 0xa802, 0xa901, 0xbf00, 0xfd00, 0xff16])
12855 # 2222/5707, 87/07
12856 pkt = NCP(0x5707, "Modify File or Subdirectory DOS Information", 'file', has_length=0)
12857 pkt.Request((62,316), [
12858 rec( 8, 1, NameSpace ),
12859 rec( 9, 1, Reserved ),
12860 rec( 10, 2, SearchAttributesLow ),
12861 rec( 12, 2, ModifyDOSInfoMask ),
12862 rec( 14, 2, Reserved2 ),
12863 rec( 16, 2, AttributesDef16 ),
12864 rec( 18, 1, FileMode ),
12865 rec( 19, 1, FileExtendedAttributes ),
12866 rec( 20, 2, CreationDate ),
12867 rec( 22, 2, CreationTime ),
12868 rec( 24, 4, CreatorID, ENC_BIG_ENDIAN ),
12869 rec( 28, 2, ModifiedDate ),
12870 rec( 30, 2, ModifiedTime ),
12871 rec( 32, 4, ModifierID, ENC_BIG_ENDIAN ),
12872 rec( 36, 2, ArchivedDate ),
12873 rec( 38, 2, ArchivedTime ),
12874 rec( 40, 4, ArchiverID, ENC_BIG_ENDIAN ),
12875 rec( 44, 2, LastAccessedDate ),
12876 rec( 46, 2, InheritedRightsMask ),
12877 rec( 48, 2, InheritanceRevokeMask ),
12878 rec( 50, 4, MaxSpace ),
12879 rec( 54, 1, VolumeNumber ),
12880 rec( 55, 4, DirectoryBase ),
12881 rec( 59, 1, HandleFlag ),
12882 rec( 60, 1, PathCount, var="x" ),
12883 rec( 61, (1,255), Path, repeat="x", info_str=(Path, "Modify DOS Information for: %s", "/%s") ),
12884 ])
12885 pkt.Reply(8)
12886 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
12887 0x8701, 0x8c01, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
12888 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
12889 # 2222/5708, 87/08
12890 pkt = NCP(0x5708, "Delete a File or Subdirectory", 'file', has_length=0)
12891 pkt.Request((20,274), [
12892 rec( 8, 1, NameSpace ),
12893 rec( 9, 1, Reserved ),
12894 rec( 10, 2, SearchAttributesLow ),
12895 rec( 12, 1, VolumeNumber ),
12896 rec( 13, 4, DirectoryBase ),
12897 rec( 17, 1, HandleFlag ),
12898 rec( 18, 1, PathCount, var="x" ),
12899 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Delete a File or Subdirectory: %s", "/%s") ),
12900 ])
12901 pkt.Reply(8)
12902 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12903 0x8701, 0x8900, 0x8a00, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
12904 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
12905 # 2222/5709, 87/09
12906 pkt = NCP(0x5709, "Set Short Directory Handle", 'file', has_length=0)
12907 pkt.Request((20,274), [
12908 rec( 8, 1, NameSpace ),
12909 rec( 9, 1, DataStream ),
12910 rec( 10, 1, DestDirHandle ),
12911 rec( 11, 1, Reserved ),
12912 rec( 12, 1, VolumeNumber ),
12913 rec( 13, 4, DirectoryBase ),
12914 rec( 17, 1, HandleFlag ),
12915 rec( 18, 1, PathCount, var="x" ),
12916 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Set Short Directory Handle to: %s", "/%s") ),
12917 ])
12918 pkt.Reply(8)
12919 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12920 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
12921 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
12922 # 2222/570A, 87/10
12923 pkt = NCP(0x570A, "Add Trustee Set to File or Subdirectory", 'file', has_length=0)
12924 pkt.Request((31,285), [
12925 rec( 8, 1, NameSpace ),
12926 rec( 9, 1, Reserved ),
12927 rec( 10, 2, SearchAttributesLow ),
12928 rec( 12, 2, AccessRightsMaskWord ),
12929 rec( 14, 2, ObjectIDCount, var="y" ),
12930 rec( 16, 1, VolumeNumber ),
12931 rec( 17, 4, DirectoryBase ),
12932 rec( 21, 1, HandleFlag ),
12933 rec( 22, 1, PathCount, var="x" ),
12934 rec( 23, (1,255), Path, repeat="x", info_str=(Path, "Add Trustee Set to: %s", "/%s") ),
12935 rec( -1, 7, TrusteeStruct, repeat="y" ),
12936 ])
12937 pkt.Reply(8)
12938 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12939 0x8701, 0x8c01, 0x8d00, 0x8f00, 0x9001, 0x9600,
12940 0x9804, 0x9b03, 0x9c03, 0xa802, 0xa901, 0xbf00, 0xfc01, 0xfd00, 0xff16])
12941 # 2222/570B, 87/11
12942 pkt = NCP(0x570B, "Delete Trustee Set from File or SubDirectory", 'file', has_length=0)
12943 pkt.Request((27,281), [
12944 rec( 8, 1, NameSpace ),
12945 rec( 9, 1, Reserved ),
12946 rec( 10, 2, ObjectIDCount, var="y" ),
12947 rec( 12, 1, VolumeNumber ),
12948 rec( 13, 4, DirectoryBase ),
12949 rec( 17, 1, HandleFlag ),
12950 rec( 18, 1, PathCount, var="x" ),
12951 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Delete Trustee Set from: %s", "/%s") ),
12952 rec( -1, 7, TrusteeStruct, repeat="y" ),
12953 ])
12954 pkt.Reply(8)
12955 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12956 0x8701, 0x8c01, 0x8d00, 0x8f00, 0x9001, 0x9600,
12957 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
12958 # 2222/570C, 87/12
12959 pkt = NCP(0x570C, "Allocate Short Directory Handle", 'file', has_length=0)
12960 pkt.Request((20,274), [
12961 rec( 8, 1, NameSpace ),
12962 rec( 9, 1, Reserved ),
12963 rec( 10, 2, AllocateMode ),
12964 rec( 12, 1, VolumeNumber ),
12965 rec( 13, 4, DirectoryBase ),
12966 rec( 17, 1, HandleFlag ),
12967 rec( 18, 1, PathCount, var="x" ),
12968 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Allocate Short Directory Handle to: %s", "/%s") ),
12969 ])
12970 pkt.Reply(NO_LENGTH_CHECK, [
12971 srec( ReplyLevel2Struct, req_cond="ncp.alloc_reply_lvl2 == TRUE" ),
12972 srec( ReplyLevel1Struct, req_cond="ncp.alloc_reply_lvl2 == FALSE" ),
12973 ])
12974 pkt.ReqCondSizeVariable()
12975 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
12976 0x8701, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9600,
12977 0x9804, 0x9b03, 0x9c03, 0x9d00, 0xa901, 0xbf00, 0xfd00, 0xff16])
12978 # 2222/5710, 87/16
12979 pkt = NCP(0x5710, "Scan Salvageable Files", 'file', has_length=0)
12980 pkt.Request((26,280), [
12981 rec( 8, 1, NameSpace ),
12982 rec( 9, 1, DataStream ),
12983 rec( 10, 2, ReturnInfoMask ),
12984 rec( 12, 2, ExtendedInfo ),
12985 rec( 14, 4, SequenceNumber ),
12986 rec( 18, 1, VolumeNumber ),
12987 rec( 19, 4, DirectoryBase ),
12988 rec( 23, 1, HandleFlag ),
12989 rec( 24, 1, PathCount, var="x" ),
12990 rec( 25, (1,255), Path, repeat="x", info_str=(Path, "Scan for Deleted Files in: %s", "/%s") ),
12991 ])
12992 pkt.Reply(NO_LENGTH_CHECK, [
12993 rec( 8, 4, SequenceNumber ),
12994 rec( 12, 2, DeletedTime ),
12995 rec( 14, 2, DeletedDate ),
12996 rec( 16, 4, DeletedID, ENC_BIG_ENDIAN ),
12997 rec( 20, 4, VolumeID ),
12998 rec( 24, 4, DirectoryBase ),
12999 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13000 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13001 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13002 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13003 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13004 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13005 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13006 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13007 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13008 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13009 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13010 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13011 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13012 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13013 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13014 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13015 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13016 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13017 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13018 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13019 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13020 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13021 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
13022 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13023 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13024 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13025 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13026 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13027 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13028 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13029 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13030 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13031 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13032 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13033 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
13034 ])
13035 pkt.ReqCondSizeVariable()
13036 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13037 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13038 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13039 # 2222/5711, 87/17
13040 pkt = NCP(0x5711, "Recover Salvageable File", 'file', has_length=0)
13041 pkt.Request((23,277), [
13042 rec( 8, 1, NameSpace ),
13043 rec( 9, 1, Reserved ),
13044 rec( 10, 4, SequenceNumber ),
13045 rec( 14, 4, VolumeID ),
13046 rec( 18, 4, DirectoryBase ),
13047 rec( 22, (1,255), FileName, info_str=(FileName, "Recover Deleted File: %s", ", %s") ),
13048 ])
13049 pkt.Reply(8)
13050 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13051 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13052 0x9804, 0x9b03, 0x9c03, 0xa802, 0xbf00, 0xfe02, 0xfd00, 0xff16])
13053 # 2222/5712, 87/18
13054 pkt = NCP(0x5712, "Purge Salvageable Files", 'file', has_length=0)
13055 pkt.Request(22, [
13056 rec( 8, 1, NameSpace ),
13057 rec( 9, 1, Reserved ),
13058 rec( 10, 4, SequenceNumber ),
13059 rec( 14, 4, VolumeID ),
13060 rec( 18, 4, DirectoryBase ),
13061 ])
13062 pkt.Reply(8)
13063 pkt.CompletionCodes([0x0000, 0x010a, 0x8000, 0x8101, 0x8401, 0x8501,
13064 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13065 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13066 # 2222/5713, 87/19
13067 pkt = NCP(0x5713, "Get Name Space Information", 'file', has_length=0)
13068 pkt.Request(18, [
13069 rec( 8, 1, SrcNameSpace ),
13070 rec( 9, 1, DestNameSpace ),
13071 rec( 10, 1, Reserved ),
13072 rec( 11, 1, VolumeNumber ),
13073 rec( 12, 4, DirectoryBase ),
13074 rec( 16, 2, NamesSpaceInfoMask ),
13075 ])
13076 pkt.Reply(NO_LENGTH_CHECK, [
13077 srec( FileNameStruct, req_cond="ncp.ns_info_mask_modify == TRUE" ),
13078 srec( FileAttributesStruct, req_cond="ncp.ns_info_mask_fatt == TRUE" ),
13079 srec( CreationDateStruct, req_cond="ncp.ns_info_mask_cdate == TRUE" ),
13080 srec( CreationTimeStruct, req_cond="ncp.ns_info_mask_ctime == TRUE" ),
13081 srec( OwnerIDStruct, req_cond="ncp.ns_info_mask_owner == TRUE" ),
13082 srec( ArchiveDateStruct, req_cond="ncp.ns_info_mask_adate == TRUE" ),
13083 srec( ArchiveTimeStruct, req_cond="ncp.ns_info_mask_atime == TRUE" ),
13084 srec( ArchiveIdStruct, req_cond="ncp.ns_info_mask_aid == TRUE" ),
13085 srec( UpdateDateStruct, req_cond="ncp.ns_info_mask_udate == TRUE" ),
13086 srec( UpdateTimeStruct, req_cond="ncp.ns_info_mask_utime == TRUE" ),
13087 srec( UpdateIDStruct, req_cond="ncp.ns_info_mask_uid == TRUE" ),
13088 srec( LastAccessStruct, req_cond="ncp.ns_info_mask_acc_date == TRUE" ),
13089 srec( RightsInfoStruct, req_cond="ncp.ns_info_mask_max_acc_mask == TRUE" ),
13090 ])
13091 pkt.ReqCondSizeVariable()
13092 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13093 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13094 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13095 # 2222/5714, 87/20
13096 pkt = NCP(0x5714, "Search for File or Subdirectory Set", 'file', has_length=0)
13097 pkt.Request((27, 27), [
13098 rec( 8, 1, NameSpace ),
13099 rec( 9, 1, DataStream ),
13100 rec( 10, 2, SearchAttributesLow ),
13101 rec( 12, 2, ReturnInfoMask ),
13102 rec( 14, 2, ExtendedInfo ),
13103 rec( 16, 2, ReturnInfoCount ),
13104 rec( 18, 9, SeachSequenceStruct ),
13105 # rec( 27, (1,255), SearchPattern ),
13106 ])
13107 # The reply packet is dissected in packet-ncp2222.inc
13108 pkt.Reply(NO_LENGTH_CHECK, [
13109 ])
13110 pkt.ReqCondSizeVariable()
13111 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13112 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13113 0x9804, 0x9b03, 0x9c03, 0xa901, 0xbf00, 0xfd00, 0xff16])
13114 # 2222/5715, 87/21
13115 pkt = NCP(0x5715, "Get Path String from Short Directory Handle", 'file', has_length=0)
13116 pkt.Request(10, [
13117 rec( 8, 1, NameSpace ),
13118 rec( 9, 1, DirHandle ),
13119 ])
13120 pkt.Reply((9,263), [
13121 rec( 8, (1,255), Path ),
13122 ])
13123 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13124 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13125 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
13126 # 2222/5716, 87/22
13127 pkt = NCP(0x5716, "Generate Directory Base and Volume Number", 'file', has_length=0)
13128 pkt.Request((20,274), [
13129 rec( 8, 1, SrcNameSpace ),
13130 rec( 9, 1, DestNameSpace ),
13131 rec( 10, 2, dstNSIndicator ),
13132 rec( 12, 1, VolumeNumber ),
13133 rec( 13, 4, DirectoryBase ),
13134 rec( 17, 1, HandleFlag ),
13135 rec( 18, 1, PathCount, var="x" ),
13136 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Get Volume and Directory Base from: %s", "/%s") ),
13137 ])
13138 pkt.Reply(17, [
13139 rec( 8, 4, DirectoryBase ),
13140 rec( 12, 4, DOSDirectoryBase ),
13141 rec( 16, 1, VolumeNumber ),
13142 ])
13143 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13144 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13145 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13146 # 2222/5717, 87/23
13147 pkt = NCP(0x5717, "Query Name Space Information Format", 'file', has_length=0)
13148 pkt.Request(10, [
13149 rec( 8, 1, NameSpace ),
13150 rec( 9, 1, VolumeNumber ),
13151 ])
13152 pkt.Reply(58, [
13153 rec( 8, 4, FixedBitMask ),
13154 rec( 12, 4, VariableBitMask ),
13155 rec( 16, 4, HugeBitMask ),
13156 rec( 20, 2, FixedBitsDefined ),
13157 rec( 22, 2, VariableBitsDefined ),
13158 rec( 24, 2, HugeBitsDefined ),
13159 rec( 26, 32, FieldsLenTable ),
13160 ])
13161 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13162 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13163 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13164 # 2222/5718, 87/24
13165 pkt = NCP(0x5718, "Get Name Spaces Loaded List from Volume Number", 'file', has_length=0)
13166 pkt.Request(11, [
13167 rec( 8, 2, Reserved2 ),
13168 rec( 10, 1, VolumeNumber, info_str=(VolumeNumber, "Get Name Spaces Loaded List from Vol: %d", "/%d") ),
13169 ])
13170 pkt.Reply(11, [
13171 rec( 8, 2, NumberOfNSLoaded, var="x" ),
13172 rec( 10, 1, NameSpace, repeat="x" ),
13173 ])
13174 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13175 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13176 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13177 # 2222/5719, 87/25
13178 pkt = NCP(0x5719, "Set Name Space Information", 'file', has_length=0)
13179 pkt.Request(531, [
13180 rec( 8, 1, SrcNameSpace ),
13181 rec( 9, 1, DestNameSpace ),
13182 rec( 10, 1, VolumeNumber ),
13183 rec( 11, 4, DirectoryBase ),
13184 rec( 15, 2, NamesSpaceInfoMask ),
13185 rec( 17, 2, Reserved2 ),
13186 rec( 19, 512, NSSpecificInfo ),
13187 ])
13188 pkt.Reply(8)
13189 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13190 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
13191 0x9600, 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00,
13192 0xff16])
13193 # 2222/571A, 87/26
13194 pkt = NCP(0x571A, "Get Huge Name Space Information", 'file', has_length=0)
13195 pkt.Request(34, [
13196 rec( 8, 1, NameSpace ),
13197 rec( 9, 1, VolumeNumber ),
13198 rec( 10, 4, DirectoryBase ),
13199 rec( 14, 4, HugeBitMask ),
13200 rec( 18, 16, HugeStateInfo ),
13201 ])
13202 pkt.Reply((25,279), [
13203 rec( 8, 16, NextHugeStateInfo ),
13204 rec( 24, (1,255), HugeData ),
13205 ])
13206 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13207 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
13208 0x9600, 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00,
13209 0xff16])
13210 # 2222/571B, 87/27
13211 pkt = NCP(0x571B, "Set Huge Name Space Information", 'file', has_length=0)
13212 pkt.Request((35,289), [
13213 rec( 8, 1, NameSpace ),
13214 rec( 9, 1, VolumeNumber ),
13215 rec( 10, 4, DirectoryBase ),
13216 rec( 14, 4, HugeBitMask ),
13217 rec( 18, 16, HugeStateInfo ),
13218 rec( 34, (1,255), HugeData ),
13219 ])
13220 pkt.Reply(28, [
13221 rec( 8, 16, NextHugeStateInfo ),
13222 rec( 24, 4, HugeDataUsed ),
13223 ])
13224 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13225 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
13226 0x9600, 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00,
13227 0xff16])
13228 # 2222/571C, 87/28
13229 pkt = NCP(0x571C, "Get Full Path String", 'file', has_length=0)
13230 pkt.Request((28,282), [
13231 rec( 8, 1, SrcNameSpace ),
13232 rec( 9, 1, DestNameSpace ),
13233 rec( 10, 2, PathCookieFlags ),
13234 rec( 12, 4, Cookie1 ),
13235 rec( 16, 4, Cookie2 ),
13236 rec( 20, 1, VolumeNumber ),
13237 rec( 21, 4, DirectoryBase ),
13238 rec( 25, 1, HandleFlag ),
13239 rec( 26, 1, PathCount, var="x" ),
13240 rec( 27, (1,255), Path, repeat="x", info_str=(Path, "Get Full Path from: %s", "/%s") ),
13241 ])
13242 pkt.Reply((23,277), [
13243 rec( 8, 2, PathCookieFlags ),
13244 rec( 10, 4, Cookie1 ),
13245 rec( 14, 4, Cookie2 ),
13246 rec( 18, 2, PathComponentSize ),
13247 rec( 20, 2, PathComponentCount, var='x' ),
13248 rec( 22, (1,255), Path, repeat='x' ),
13249 ])
13250 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13251 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
13252 0x9600, 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00,
13253 0xff16])
13254 # 2222/571D, 87/29
13255 pkt = NCP(0x571D, "Get Effective Directory Rights", 'file', has_length=0)
13256 pkt.Request((24, 278), [
13257 rec( 8, 1, NameSpace ),
13258 rec( 9, 1, DestNameSpace ),
13259 rec( 10, 2, SearchAttributesLow ),
13260 rec( 12, 2, ReturnInfoMask ),
13261 rec( 14, 2, ExtendedInfo ),
13262 rec( 16, 1, VolumeNumber ),
13263 rec( 17, 4, DirectoryBase ),
13264 rec( 21, 1, HandleFlag ),
13265 rec( 22, 1, PathCount, var="x" ),
13266 rec( 23, (1,255), Path, repeat="x", info_str=(Path, "Get Effective Rights for: %s", "/%s") ),
13267 ])
13268 pkt.Reply(NO_LENGTH_CHECK, [
13269 rec( 8, 2, EffectiveRights ),
13270 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13271 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13272 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13273 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13274 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13275 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13276 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13277 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13278 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13279 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13280 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13281 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13282 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13283 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13284 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13285 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13286 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13287 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13288 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13289 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13290 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13291 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13292 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
13293 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13294 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13295 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13296 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13297 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13298 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13299 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13300 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13301 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13302 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13303 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13304 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
13305 ])
13306 pkt.ReqCondSizeVariable()
13307 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13308 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13309 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13310 # 2222/571E, 87/30
13311 pkt = NCP(0x571E, "Open/Create File or Subdirectory", 'file', has_length=0)
13312 pkt.Request((34, 288), [
13313 rec( 8, 1, NameSpace ),
13314 rec( 9, 1, DataStream ),
13315 rec( 10, 1, OpenCreateMode ),
13316 rec( 11, 1, Reserved ),
13317 rec( 12, 2, SearchAttributesLow ),
13318 rec( 14, 2, Reserved2 ),
13319 rec( 16, 2, ReturnInfoMask ),
13320 rec( 18, 2, ExtendedInfo ),
13321 rec( 20, 4, AttributesDef32 ),
13322 rec( 24, 2, DesiredAccessRights ),
13323 rec( 26, 1, VolumeNumber ),
13324 rec( 27, 4, DirectoryBase ),
13325 rec( 31, 1, HandleFlag ),
13326 rec( 32, 1, PathCount, var="x" ),
13327 rec( 33, (1,255), Path, repeat="x", info_str=(Path, "Open or Create File: %s", "/%s") ),
13328 ])
13329 pkt.Reply(NO_LENGTH_CHECK, [
13330 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13331 rec( 12, 1, OpenCreateAction ),
13332 rec( 13, 1, Reserved ),
13333 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13334 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13335 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13336 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13337 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13338 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13339 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13340 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13341 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13342 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13343 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13344 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13345 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13346 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13347 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13348 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13349 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13350 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13351 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13352 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13353 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13354 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13355 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
13356 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13357 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13358 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13359 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13360 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13361 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13362 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13363 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13364 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13365 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13366 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13367 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
13368 ])
13369 pkt.ReqCondSizeVariable()
13370 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
13371 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13372 0x9804, 0x9b03, 0x9c03, 0xbe00, 0xbf00, 0xfd00, 0xff16])
13373 pkt.MakeExpert("file_rights")
13374 # 2222/571F, 87/31
13375 pkt = NCP(0x571F, "Get File Information", 'file', has_length=0)
13376 pkt.Request(15, [
13377 rec( 8, 6, FileHandle, info_str=(FileHandle, "Get File Information - 0x%s", ", %s") ),
13378 rec( 14, 1, HandleInfoLevel ),
13379 ])
13380 pkt.Reply(NO_LENGTH_CHECK, [
13381 rec( 8, 4, VolumeNumberLong ),
13382 rec( 12, 4, DirectoryBase ),
13383 srec(HandleInfoLevel0, req_cond="ncp.handle_info_level==0x00" ),
13384 srec(HandleInfoLevel1, req_cond="ncp.handle_info_level==0x01" ),
13385 srec(HandleInfoLevel2, req_cond="ncp.handle_info_level==0x02" ),
13386 srec(HandleInfoLevel3, req_cond="ncp.handle_info_level==0x03" ),
13387 srec(HandleInfoLevel4, req_cond="ncp.handle_info_level==0x04" ),
13388 srec(HandleInfoLevel5, req_cond="ncp.handle_info_level==0x05" ),
13389 ])
13390 pkt.ReqCondSizeVariable()
13391 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13392 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13393 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13394 # 2222/5720, 87/32
13395 pkt = NCP(0x5720, "Open/Create File or Subdirectory with Callback", 'file', has_length=0)
13396 pkt.Request((30, 284), [
13397 rec( 8, 1, NameSpace ),
13398 rec( 9, 1, OpenCreateMode ),
13399 rec( 10, 2, SearchAttributesLow ),
13400 rec( 12, 2, ReturnInfoMask ),
13401 rec( 14, 2, ExtendedInfo ),
13402 rec( 16, 4, AttributesDef32 ),
13403 rec( 20, 2, DesiredAccessRights ),
13404 rec( 22, 1, VolumeNumber ),
13405 rec( 23, 4, DirectoryBase ),
13406 rec( 27, 1, HandleFlag ),
13407 rec( 28, 1, PathCount, var="x" ),
13408 rec( 29, (1,255), Path, repeat="x", info_str=(Path, "Open or Create with Op-Lock: %s", "/%s") ),
13409 ])
13410 pkt.Reply( NO_LENGTH_CHECK, [
13411 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13412 rec( 12, 1, OpenCreateAction ),
13413 rec( 13, 1, OCRetFlags ),
13414 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13415 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13416 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13417 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13418 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13419 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13420 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13421 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13422 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13423 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13424 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13425 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13426 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13427 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13428 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13429 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13430 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13431 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13432 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13433 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13434 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13435 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13436 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13437 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13438 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13439 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13440 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13441 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13442 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13443 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13444 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13445 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13446 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13447 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
13448 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
13449 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
13450 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
13451 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
13452 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
13453 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
13454 srec( DOSNameStruct, req_cond="ncp.ext_info_dos_name == 1" ),
13455 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
13456 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
13457 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
13458 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
13459 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
13460 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
13461 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
13462 srec( FileNameStruct, req_cond="ncp.ret_info_mask_fname == 1" ),
13463 ])
13464 pkt.ReqCondSizeVariable()
13465 pkt.CompletionCodes([0x0000, 0x0102, 0x7f00, 0x8000, 0x8101, 0x8401, 0x8501,
13466 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13467 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13468 pkt.MakeExpert("file_rights")
13469 # 2222/5721, 87/33
13470 pkt = NCP(0x5721, "Open/Create File or Subdirectory II with Callback", 'file', has_length=0)
13471 pkt.Request((34, 288), [
13472 rec( 8, 1, NameSpace ),
13473 rec( 9, 1, DataStream ),
13474 rec( 10, 1, OpenCreateMode ),
13475 rec( 11, 1, Reserved ),
13476 rec( 12, 2, SearchAttributesLow ),
13477 rec( 14, 2, Reserved2 ),
13478 rec( 16, 2, ReturnInfoMask ),
13479 rec( 18, 2, ExtendedInfo ),
13480 rec( 20, 4, AttributesDef32 ),
13481 rec( 24, 2, DesiredAccessRights ),
13482 rec( 26, 1, VolumeNumber ),
13483 rec( 27, 4, DirectoryBase ),
13484 rec( 31, 1, HandleFlag ),
13485 rec( 32, 1, PathCount, var="x" ),
13486 rec( 33, (1,255), Path, repeat="x", info_str=(Path, "Open or Create II with Op-Lock: %s", "/%s") ),
13487 ])
13488 pkt.Reply(NO_LENGTH_CHECK, [
13489 rec( 8, 4, FileHandle ),
13490 rec( 12, 1, OpenCreateAction ),
13491 rec( 13, 1, OCRetFlags ),
13492 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13493 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13494 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13495 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13496 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13497 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13498 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13499 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13500 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13501 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13502 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13503 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13504 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13505 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13506 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13507 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13508 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13509 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13510 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13511 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13512 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13513 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13514 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13515 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13516 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13517 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13518 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13519 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13520 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13521 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13522 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13523 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13524 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13525 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
13526 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
13527 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
13528 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
13529 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
13530 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
13531 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
13532 srec( DOSNameStruct, req_cond="ncp.ext_info_dos_name == 1" ),
13533 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
13534 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
13535 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
13536 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
13537 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
13538 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
13539 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
13540 srec( FileNameStruct, req_cond="ncp.ret_info_mask_fname == 1" ),
13541 ])
13542 pkt.ReqCondSizeVariable()
13543 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
13544 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13545 0x9804, 0x9b03, 0x9c03, 0xbe00, 0xbf00, 0xfd00, 0xff16])
13546 pkt.MakeExpert("file_rights")
13547 # 2222/5722, 87/34
13548 pkt = NCP(0x5722, "Open CallBack Control (Op-Lock)", 'file', has_length=0)
13549 pkt.Request(13, [
13550 rec( 10, 4, CCFileHandle, ENC_BIG_ENDIAN ),
13551 rec( 14, 1, CCFunction ),
13552 ])
13553 pkt.Reply(8)
13554 pkt.CompletionCodes([0x0000, 0x8000, 0x8800, 0xff16])
13555 pkt.MakeExpert("ncp5722_request")
13556 # 2222/5723, 87/35
13557 pkt = NCP(0x5723, "Modify DOS Attributes on a File or Subdirectory", 'file', has_length=0)
13558 pkt.Request((28, 282), [
13559 rec( 8, 1, NameSpace ),
13560 rec( 9, 1, Flags ),
13561 rec( 10, 2, SearchAttributesLow ),
13562 rec( 12, 2, ReturnInfoMask ),
13563 rec( 14, 2, ExtendedInfo ),
13564 rec( 16, 4, AttributesDef32 ),
13565 rec( 20, 1, VolumeNumber ),
13566 rec( 21, 4, DirectoryBase ),
13567 rec( 25, 1, HandleFlag ),
13568 rec( 26, 1, PathCount, var="x" ),
13569 rec( 27, (1,255), Path, repeat="x", info_str=(Path, "Modify DOS Attributes for: %s", "/%s") ),
13570 ])
13571 pkt.Reply(24, [
13572 rec( 8, 4, ItemsChecked ),
13573 rec( 12, 4, ItemsChanged ),
13574 rec( 16, 4, AttributeValidFlag ),
13575 rec( 20, 4, AttributesDef32 ),
13576 ])
13577 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
13578 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13579 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13580 # 2222/5724, 87/36
13581 pkt = NCP(0x5724, "Log File", 'sync', has_length=0)
13582 pkt.Request((28, 282), [
13583 rec( 8, 1, NameSpace ),
13584 rec( 9, 1, Reserved ),
13585 rec( 10, 2, Reserved2 ),
13586 rec( 12, 1, LogFileFlagLow ),
13587 rec( 13, 1, LogFileFlagHigh ),
13588 rec( 14, 2, Reserved2 ),
13589 rec( 16, 4, WaitTime ),
13590 rec( 20, 1, VolumeNumber ),
13591 rec( 21, 4, DirectoryBase ),
13592 rec( 25, 1, HandleFlag ),
13593 rec( 26, 1, PathCount, var="x" ),
13594 rec( 27, (1,255), Path, repeat="x", info_str=(Path, "Lock File: %s", "/%s") ),
13595 ])
13596 pkt.Reply(8)
13597 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13598 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13599 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13600 # 2222/5725, 87/37
13601 pkt = NCP(0x5725, "Release File", 'sync', has_length=0)
13602 pkt.Request((20, 274), [
13603 rec( 8, 1, NameSpace ),
13604 rec( 9, 1, Reserved ),
13605 rec( 10, 2, Reserved2 ),
13606 rec( 12, 1, VolumeNumber ),
13607 rec( 13, 4, DirectoryBase ),
13608 rec( 17, 1, HandleFlag ),
13609 rec( 18, 1, PathCount, var="x" ),
13610 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Release Lock on: %s", "/%s") ),
13611 ])
13612 pkt.Reply(8)
13613 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13614 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13615 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13616 # 2222/5726, 87/38
13617 pkt = NCP(0x5726, "Clear File", 'sync', has_length=0)
13618 pkt.Request((20, 274), [
13619 rec( 8, 1, NameSpace ),
13620 rec( 9, 1, Reserved ),
13621 rec( 10, 2, Reserved2 ),
13622 rec( 12, 1, VolumeNumber ),
13623 rec( 13, 4, DirectoryBase ),
13624 rec( 17, 1, HandleFlag ),
13625 rec( 18, 1, PathCount, var="x" ),
13626 rec( 19, (1,255), Path, repeat="x", info_str=(Path, "Clear File: %s", "/%s") ),
13627 ])
13628 pkt.Reply(8)
13629 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13630 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13631 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13632 # 2222/5727, 87/39
13633 pkt = NCP(0x5727, "Get Directory Disk Space Restriction", 'file', has_length=0)
13634 pkt.Request((19, 273), [
13635 rec( 8, 1, NameSpace ),
13636 rec( 9, 2, Reserved2 ),
13637 rec( 11, 1, VolumeNumber ),
13638 rec( 12, 4, DirectoryBase ),
13639 rec( 16, 1, HandleFlag ),
13640 rec( 17, 1, PathCount, var="x" ),
13641 rec( 18, (1,255), Path, repeat="x", info_str=(Path, "Get Disk Space Restriction for: %s", "/%s") ),
13642 ])
13643 pkt.Reply(18, [
13644 rec( 8, 1, NumberOfEntries, var="x" ),
13645 rec( 9, 9, SpaceStruct, repeat="x" ),
13646 ])
13647 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13648 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13649 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00,
13650 0xff16])
13651 # 2222/5728, 87/40
13652 pkt = NCP(0x5728, "Search for File or Subdirectory Set (Extended Errors)", 'file', has_length=0)
13653 pkt.Request((28, 282), [
13654 rec( 8, 1, NameSpace ),
13655 rec( 9, 1, DataStream ),
13656 rec( 10, 2, SearchAttributesLow ),
13657 rec( 12, 2, ReturnInfoMask ),
13658 rec( 14, 2, ExtendedInfo ),
13659 rec( 16, 2, ReturnInfoCount ),
13660 rec( 18, 9, SeachSequenceStruct ),
13661 rec( 27, (1,255), SearchPattern, info_str=(SearchPattern, "Search for: %s", ", %s") ),
13662 ])
13663 pkt.Reply(NO_LENGTH_CHECK, [
13664 rec( 8, 9, SeachSequenceStruct ),
13665 rec( 17, 1, MoreFlag ),
13666 rec( 18, 2, InfoCount ),
13667 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
13668 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
13669 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
13670 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
13671 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
13672 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
13673 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
13674 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
13675 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
13676 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
13677 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
13678 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
13679 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
13680 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
13681 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
13682 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
13683 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
13684 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
13685 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
13686 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
13687 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
13688 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
13689 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
13690 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
13691 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
13692 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
13693 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
13694 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
13695 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
13696 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
13697 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
13698 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
13699 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
13700 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
13701 srec( FileNameStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
13702 ])
13703 pkt.ReqCondSizeVariable()
13704 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13705 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13706 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13707 # 2222/5729, 87/41
13708 pkt = NCP(0x5729, "Scan Salvageable Files", 'file', has_length=0)
13709 pkt.Request((24,278), [
13710 rec( 8, 1, NameSpace ),
13711 rec( 9, 1, Reserved ),
13712 rec( 10, 2, CtrlFlags, ENC_LITTLE_ENDIAN ),
13713 rec( 12, 4, SequenceNumber ),
13714 rec( 16, 1, VolumeNumber ),
13715 rec( 17, 4, DirectoryBase ),
13716 rec( 21, 1, HandleFlag ),
13717 rec( 22, 1, PathCount, var="x" ),
13718 rec( 23, (1,255), Path, repeat="x", info_str=(Path, "Scan Deleted Files: %s", "/%s") ),
13719 ])
13720 pkt.Reply(NO_LENGTH_CHECK, [
13721 rec( 8, 4, SequenceNumber ),
13722 rec( 12, 4, DirectoryBase ),
13723 rec( 16, 4, ScanItems, var="x" ),
13724 srec(ScanInfoFileName, req_cond="ncp.ctrl_flags==0x0001", repeat="x" ),
13725 srec(ScanInfoFileNoName, req_cond="ncp.ctrl_flags==0x0000", repeat="x" ),
13726 ])
13727 pkt.ReqCondSizeVariable()
13728 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13729 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13730 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13731 # 2222/572A, 87/42
13732 pkt = NCP(0x572A, "Purge Salvageable File List", 'file', has_length=0)
13733 pkt.Request(28, [
13734 rec( 8, 1, NameSpace ),
13735 rec( 9, 1, Reserved ),
13736 rec( 10, 2, PurgeFlags ),
13737 rec( 12, 4, VolumeNumberLong ),
13738 rec( 16, 4, DirectoryBase ),
13739 rec( 20, 4, PurgeCount, var="x" ),
13740 rec( 24, 4, PurgeList, repeat="x" ),
13741 ])
13742 pkt.Reply(16, [
13743 rec( 8, 4, PurgeCount, var="x" ),
13744 rec( 12, 4, PurgeCcode, repeat="x" ),
13745 ])
13746 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13747 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13748 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13749 # 2222/572B, 87/43
13750 pkt = NCP(0x572B, "Revoke File Handle Rights", 'file', has_length=0)
13751 pkt.Request(17, [
13752 rec( 8, 3, Reserved3 ),
13753 rec( 11, 1, RevQueryFlag ),
13754 rec( 12, 4, FileHandle ),
13755 rec( 16, 1, RemoveOpenRights ),
13756 ])
13757 pkt.Reply(13, [
13758 rec( 8, 4, FileHandle ),
13759 rec( 12, 1, OpenRights ),
13760 ])
13761 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
13762 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
13763 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13764 # 2222/572C, 87/44
13765 pkt = NCP(0x572C, "Update File Handle Rights", 'file', has_length=0)
13766 pkt.Request(24, [
13767 rec( 8, 2, Reserved2 ),
13768 rec( 10, 1, VolumeNumber ),
13769 rec( 11, 1, NameSpace ),
13770 rec( 12, 4, DirectoryNumber ),
13771 rec( 16, 2, AccessRightsMaskWord ),
13772 rec( 18, 2, NewAccessRights ),
13773 rec( 20, 4, FileHandle, ENC_BIG_ENDIAN ),
13774 ])
13775 pkt.Reply(16, [
13776 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13777 rec( 12, 4, EffectiveRights, ENC_LITTLE_ENDIAN ),
13778 ])
13779 pkt.CompletionCodes([0x0000, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13780 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13781 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff16])
13782 pkt.MakeExpert("ncp572c")
13783 # 2222/5740, 87/64
13784 pkt = NCP(0x5740, "Read from File", 'file', has_length=0)
13785 pkt.Request(22, [
13786 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13787 rec( 12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13788 rec( 20, 2, NumBytes, ENC_BIG_ENDIAN ),
13789 ])
13790 pkt.Reply(10, [
13791 rec( 8, 2, NumBytes, ENC_BIG_ENDIAN),
13792 ])
13793 pkt.CompletionCodes([0x0000, 0x8300, 0x8800, 0x9300, 0x9500, 0xa201, 0xfd00, 0xff1b])
13794 # 2222/5741, 87/65
13795 pkt = NCP(0x5741, "Write to File", 'file', has_length=0)
13796 pkt.Request(22, [
13797 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13798 rec( 12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13799 rec( 20, 2, NumBytes, ENC_BIG_ENDIAN ),
13800 ])
13801 pkt.Reply(8)
13802 pkt.CompletionCodes([0x0000, 0x0102, 0x8300, 0x8800, 0x9400, 0x9500, 0xa201, 0xfd00, 0xff1b])
13803 # 2222/5742, 87/66
13804 pkt = NCP(0x5742, "Get Current Size of File", 'file', has_length=0)
13805 pkt.Request(12, [
13806 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13807 ])
13808 pkt.Reply(16, [
13809 rec( 8, 8, FileSize64bit),
13810 ])
13811 pkt.CompletionCodes([0x0000, 0x7f00, 0x8800, 0x9600, 0xfd02, 0xff01])
13812 # 2222/5743, 87/67
13813 pkt = NCP(0x5743, "Log Physical Record", 'file', has_length=0)
13814 pkt.Request(36, [
13815 rec( 8, 4, LockFlag, ENC_BIG_ENDIAN ),
13816 rec(12, 4, FileHandle, ENC_BIG_ENDIAN ),
13817 rec(16, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13818 rec(24, 8, Length64bit, ENC_BIG_ENDIAN ),
13819 rec(32, 4, LockTimeout, ENC_BIG_ENDIAN),
13820 ])
13821 pkt.Reply(8)
13822 pkt.CompletionCodes([0x0000, 0x7f00, 0x8800, 0x9600, 0xfb08, 0xfd02, 0xff01])
13823 # 2222/5744, 87/68
13824 pkt = NCP(0x5744, "Release Physical Record", 'file', has_length=0)
13825 pkt.Request(28, [
13826 rec(8, 4, FileHandle, ENC_BIG_ENDIAN ),
13827 rec(12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13828 rec(20, 8, Length64bit, ENC_BIG_ENDIAN ),
13829 ])
13830 pkt.Reply(8)
13831 pkt.CompletionCodes([0x0000, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13832 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13833 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff1a])
13834 # 2222/5745, 87/69
13835 pkt = NCP(0x5745, "Clear Physical Record", 'file', has_length=0)
13836 pkt.Request(28, [
13837 rec(8, 4, FileHandle, ENC_BIG_ENDIAN ),
13838 rec(12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13839 rec(20, 8, Length64bit, ENC_BIG_ENDIAN ),
13840 ])
13841 pkt.Reply(8)
13842 pkt.CompletionCodes([0x0000, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13843 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13844 0x9804, 0x9b03, 0x9c03, 0xbf00, 0xfd00, 0xff1a])
13845 # 2222/5746, 87/70
13846 pkt = NCP(0x5746, "Copy from One File to Another (64 Bit offset capable)", 'file', has_length=0)
13847 pkt.Request(44, [
13848 rec(8, 6, SourceFileHandle, ENC_BIG_ENDIAN ),
13849 rec(14, 6, TargetFileHandle, ENC_BIG_ENDIAN ),
13850 rec(20, 8, SourceFileOffset, ENC_BIG_ENDIAN ),
13851 rec(28, 8, TargetFileOffset64bit, ENC_BIG_ENDIAN ),
13852 rec(36, 8, BytesToCopy64bit, ENC_BIG_ENDIAN ),
13853 ])
13854 pkt.Reply(16, [
13855 rec( 8, 8, BytesActuallyTransferred64bit, ENC_BIG_ENDIAN ),
13856 ])
13857 pkt.CompletionCodes([0x0000, 0x0104, 0x8301, 0x8800, 0x9300, 0x9400,
13858 0x9500, 0x9600, 0xa201])
13859 # 2222/5747, 87/71
13860 pkt = NCP(0x5747, "Get Sparse File Data Block Bit Map", 'file', has_length=0)
13861 pkt.Request(23, [
13862 rec(8, 6, SourceFileHandle, ENC_BIG_ENDIAN ),
13863 rec(14, 8, SourceFileOffset, ENC_BIG_ENDIAN ),
13864 rec(22, 1, ExtentListFormat, ENC_BIG_ENDIAN ),
13865 ])
13866 pkt.Reply(NO_LENGTH_CHECK, [
13867 rec( 8, 1, ExtentListFormat ),
13868 rec( 9, 1, RetExtentListCount, var="x" ),
13869 rec( 10, 8, EndingOffset ),
13870 srec(zFileMap_Allocation, req_cond="ncp.ext_lst_format==0", repeat="x" ),
13871 srec(zFileMap_Logical, req_cond="ncp.ext_lst_format==1", repeat="x" ),
13872 srec(zFileMap_Physical, req_cond="ncp.ext_lst_format==2", repeat="x" ),
13873 ])
13874 pkt.ReqCondSizeVariable()
13875 pkt.CompletionCodes([0x0000, 0x8800, 0xff00])
13876 # 2222/5748, 87/72
13877 pkt = NCP(0x5748, "Read a File", 'file', has_length=0)
13878 pkt.Request(24, [
13879 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13880 rec( 12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13881 rec( 20, 4, NumBytesLong, ENC_BIG_ENDIAN ),
13882 ])
13883 pkt.Reply(NO_LENGTH_CHECK, [
13884 rec( 8, 4, NumBytesLong, ENC_BIG_ENDIAN),
13885 rec( 12, PROTO_LENGTH_UNKNOWN, Data64),
13886 #decoded in packet-ncp2222.inc
13887 # rec( NumBytesLong, 4, BytesActuallyTransferred64bit, ENC_BIG_ENDIAN),
13888 ])
13889 pkt.CompletionCodes([0x0000, 0x8300, 0x8800, 0x9300, 0x9500, 0xa201, 0xfd00, 0xff1b])
13890  
13891 # 2222/5749, 87/73
13892 pkt = NCP(0x5749, "Write to a File", 'file', has_length=0)
13893 pkt.Request(24, [
13894 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
13895 rec( 12, 8, StartOffset64bit, ENC_BIG_ENDIAN ),
13896 rec( 20, 4, NumBytesLong, ENC_BIG_ENDIAN ),
13897 ])
13898 pkt.Reply(8)
13899 pkt.CompletionCodes([0x0000, 0x0102, 0x8300, 0x8800, 0x9400, 0x9500, 0xa201, 0xfd00, 0xff1b])
13900  
13901 # 2222/5801, 8801
13902 pkt = NCP(0x5801, "Query Volume Audit Status", "auditing", has_length=0)
13903 pkt.Request(12, [
13904 rec( 8, 4, ConnectionNumber ),
13905 ])
13906 pkt.Reply(40, [
13907 rec(8, 32, NWAuditStatus ),
13908 ])
13909 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13910 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13911 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13912 # 2222/5802, 8802
13913 pkt = NCP(0x5802, "Add User Audit Property", "auditing", has_length=0)
13914 pkt.Request(25, [
13915 rec(8, 4, AuditIDType ),
13916 rec(12, 4, AuditID ),
13917 rec(16, 4, AuditHandle ),
13918 rec(20, 4, ObjectID ),
13919 rec(24, 1, AuditFlag ),
13920 ])
13921 pkt.Reply(8)
13922 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13923 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13924 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13925 # 2222/5803, 8803
13926 pkt = NCP(0x5803, "Add Auditor Access", "auditing", has_length=0)
13927 pkt.Request(8)
13928 pkt.Reply(8)
13929 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13930 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13931 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xde00, 0xfd00, 0xff16])
13932 # 2222/5804, 8804
13933 pkt = NCP(0x5804, "Change Auditor Volume Password", "auditing", has_length=0)
13934 pkt.Request(8)
13935 pkt.Reply(8)
13936 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13937 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13938 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13939 # 2222/5805, 8805
13940 pkt = NCP(0x5805, "Check Auditor Access", "auditing", has_length=0)
13941 pkt.Request(8)
13942 pkt.Reply(8)
13943 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13944 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13945 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13946 # 2222/5806, 8806
13947 pkt = NCP(0x5806, "Delete User Audit Property", "auditing", has_length=0)
13948 pkt.Request(8)
13949 pkt.Reply(8)
13950 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13951 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13952 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff21])
13953 # 2222/5807, 8807
13954 pkt = NCP(0x5807, "Disable Auditing On A Volume", "auditing", has_length=0)
13955 pkt.Request(8)
13956 pkt.Reply(8)
13957 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13958 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13959 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13960 # 2222/5808, 8808
13961 pkt = NCP(0x5808, "Enable Auditing On A Volume", "auditing", has_length=0)
13962 pkt.Request(8)
13963 pkt.Reply(8)
13964 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13965 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13966 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xde00, 0xfd00, 0xff16])
13967 # 2222/5809, 8809
13968 pkt = NCP(0x5809, "Query User Being Audited", "auditing", has_length=0)
13969 pkt.Request(8)
13970 pkt.Reply(8)
13971 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13972 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13973 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13974 # 2222/580A, 88,10
13975 pkt = NCP(0x580A, "Read Audit Bit Map", "auditing", has_length=0)
13976 pkt.Request(8)
13977 pkt.Reply(8)
13978 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13979 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13980 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13981 # 2222/580B, 88,11
13982 pkt = NCP(0x580B, "Read Audit File Configuration Header", "auditing", has_length=0)
13983 pkt.Request(8)
13984 pkt.Reply(8)
13985 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13986 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13987 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13988 # 2222/580D, 88,13
13989 pkt = NCP(0x580D, "Remove Auditor Access", "auditing", has_length=0)
13990 pkt.Request(8)
13991 pkt.Reply(8)
13992 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
13993 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
13994 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
13995 # 2222/580E, 88,14
13996 pkt = NCP(0x580E, "Reset Audit File", "auditing", has_length=0)
13997 pkt.Request(8)
13998 pkt.Reply(8)
13999 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14000 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14001 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14002  
14003 # 2222/580F, 88,15
14004 pkt = NCP(0x580F, "Auditing NCP", "auditing", has_length=0)
14005 pkt.Request(8)
14006 pkt.Reply(8)
14007 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14008 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14009 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfb00, 0xfd00, 0xff16])
14010 # 2222/5810, 88,16
14011 pkt = NCP(0x5810, "Write Audit Bit Map", "auditing", has_length=0)
14012 pkt.Request(8)
14013 pkt.Reply(8)
14014 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14015 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14016 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14017 # 2222/5811, 88,17
14018 pkt = NCP(0x5811, "Write Audit File Configuration Header", "auditing", has_length=0)
14019 pkt.Request(8)
14020 pkt.Reply(8)
14021 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14022 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14023 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14024 # 2222/5812, 88,18
14025 pkt = NCP(0x5812, "Change Auditor Volume Password2", "auditing", has_length=0)
14026 pkt.Request(8)
14027 pkt.Reply(8)
14028 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14029 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14030 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14031 # 2222/5813, 88,19
14032 pkt = NCP(0x5813, "Return Audit Flags", "auditing", has_length=0)
14033 pkt.Request(8)
14034 pkt.Reply(8)
14035 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14036 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14037 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14038 # 2222/5814, 88,20
14039 pkt = NCP(0x5814, "Close Old Audit File", "auditing", has_length=0)
14040 pkt.Request(8)
14041 pkt.Reply(8)
14042 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14043 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14044 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14045 # 2222/5816, 88,22
14046 pkt = NCP(0x5816, "Check Level Two Access", "auditing", has_length=0)
14047 pkt.Request(8)
14048 pkt.Reply(8)
14049 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14050 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14051 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xde00, 0xfd00, 0xff16])
14052 # 2222/5817, 88,23
14053 pkt = NCP(0x5817, "Return Old Audit File List", "auditing", has_length=0)
14054 pkt.Request(8)
14055 pkt.Reply(8)
14056 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14057 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14058 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14059 # 2222/5818, 88,24
14060 pkt = NCP(0x5818, "Init Audit File Reads", "auditing", has_length=0)
14061 pkt.Request(8)
14062 pkt.Reply(8)
14063 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14064 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14065 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14066 # 2222/5819, 88,25
14067 pkt = NCP(0x5819, "Read Auditing File", "auditing", has_length=0)
14068 pkt.Request(8)
14069 pkt.Reply(8)
14070 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14071 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14072 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14073 # 2222/581A, 88,26
14074 pkt = NCP(0x581A, "Delete Old Audit File", "auditing", has_length=0)
14075 pkt.Request(8)
14076 pkt.Reply(8)
14077 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14078 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14079 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14080 # 2222/581E, 88,30
14081 pkt = NCP(0x581E, "Restart Volume auditing", "auditing", has_length=0)
14082 pkt.Request(8)
14083 pkt.Reply(8)
14084 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14085 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14086 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14087 # 2222/581F, 88,31
14088 pkt = NCP(0x581F, "Set Volume Password", "auditing", has_length=0)
14089 pkt.Request(8)
14090 pkt.Reply(8)
14091 pkt.CompletionCodes([0x0000, 0x0106, 0x7300, 0x8000, 0x8101, 0x8401, 0x8501,
14092 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
14093 0x9804, 0x9b03, 0x9c03, 0xa600, 0xa700, 0xa801, 0xbe00, 0xfd00, 0xff16])
14094 # 2222/5901, 89,01
14095 pkt = NCP(0x5901, "Open/Create File or Subdirectory", "enhanced", has_length=0)
14096 pkt.Request((37,290), [
14097 rec( 8, 1, NameSpace ),
14098 rec( 9, 1, OpenCreateMode ),
14099 rec( 10, 2, SearchAttributesLow ),
14100 rec( 12, 2, ReturnInfoMask ),
14101 rec( 14, 2, ExtendedInfo ),
14102 rec( 16, 4, AttributesDef32 ),
14103 rec( 20, 2, DesiredAccessRights ),
14104 rec( 22, 4, DirectoryBase ),
14105 rec( 26, 1, VolumeNumber ),
14106 rec( 27, 1, HandleFlag ),
14107 rec( 28, 1, DataTypeFlag ),
14108 rec( 29, 5, Reserved5 ),
14109 rec( 34, 1, PathCount, var="x" ),
14110 rec( 35, (2,255), Path16, repeat="x", info_str=(Path16, "Open or Create File or Subdirectory: %s", "/%s") ),
14111 ])
14112 pkt.Reply( NO_LENGTH_CHECK, [
14113 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
14114 rec( 12, 1, OpenCreateAction ),
14115 rec( 13, 1, Reserved ),
14116 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14117 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14118 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14119 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14120 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14121 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14122 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14123 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14124 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14125 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14126 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14127 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14128 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14129 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14130 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14131 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14132 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14133 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14134 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14135 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14136 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14137 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14138 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14139 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14140 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14141 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14142 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14143 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14144 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14145 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14146 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14147 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14148 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14149 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
14150 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
14151 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14152 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14153 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14154 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14155 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14156 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14157 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14158 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14159 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14160 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
14161 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
14162 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
14163 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
14164 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
14165 srec( FileName16Struct, req_cond="ncp.ret_info_mask_fname == 1" ),
14166 ])
14167 pkt.ReqCondSizeVariable()
14168 pkt.CompletionCodes([0x0000, 0x0102, 0x7f00, 0x8000, 0x8101, 0x8401, 0x8501,
14169 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14170 0x9804, 0x9900, 0x9b03, 0x9c03, 0xa901, 0xa500, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14171 pkt.MakeExpert("file_rights")
14172 # 2222/5902, 89/02
14173 pkt = NCP(0x5902, "Initialize Search", 'enhanced', has_length=0)
14174 pkt.Request( (25,278), [
14175 rec( 8, 1, NameSpace ),
14176 rec( 9, 1, Reserved ),
14177 rec( 10, 4, DirectoryBase ),
14178 rec( 14, 1, VolumeNumber ),
14179 rec( 15, 1, HandleFlag ),
14180 rec( 16, 1, DataTypeFlag ),
14181 rec( 17, 5, Reserved5 ),
14182 rec( 22, 1, PathCount, var="x" ),
14183 rec( 23, (2,255), Path16, repeat="x", info_str=(Path16, "Set Search Pointer to: %s", "/%s") ),
14184 ])
14185 pkt.Reply(17, [
14186 rec( 8, 1, VolumeNumber ),
14187 rec( 9, 4, DirectoryNumber ),
14188 rec( 13, 4, DirectoryEntryNumber ),
14189 ])
14190 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14191 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14192 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14193 # 2222/5903, 89/03
14194 pkt = NCP(0x5903, "Search for File or Subdirectory", 'enhanced', has_length=0)
14195 pkt.Request(26, [
14196 rec( 8, 1, NameSpace ),
14197 rec( 9, 1, DataStream ),
14198 rec( 10, 2, SearchAttributesLow ),
14199 rec( 12, 2, ReturnInfoMask ),
14200 rec( 14, 2, ExtendedInfo ),
14201 rec( 16, 9, SeachSequenceStruct ),
14202 rec( 25, 1, DataTypeFlag ),
14203 # next field is dissected in packet-ncp2222.inc
14204 #rec( 26, (2,255), SearchPattern16, info_str=(SearchPattern16, "Search for: %s", "/%s") ),
14205 ])
14206 pkt.Reply( NO_LENGTH_CHECK, [
14207 rec( 8, 9, SeachSequenceStruct ),
14208 rec( 17, 1, Reserved ),
14209 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14210 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14211 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14212 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14213 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14214 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14215 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14216 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14217 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14218 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14219 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14220 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14221 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14222 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14223 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14224 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14225 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14226 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14227 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14228 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14229 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14230 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14231 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14232 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14233 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14234 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14235 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14236 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14237 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14238 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14239 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14240 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14241 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14242 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
14243 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
14244 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14245 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14246 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14247 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14248 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14249 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14250 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14251 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14252 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14253 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
14254 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
14255 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
14256 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
14257 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
14258 srec( FileName16Struct, req_cond="ncp.ret_info_mask_fname == 1" ),
14259 ])
14260 pkt.ReqCondSizeVariable()
14261 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14262 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14263 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14264 # 2222/5904, 89/04
14265 pkt = NCP(0x5904, "Rename Or Move a File or Subdirectory", 'enhanced', has_length=0)
14266 pkt.Request((42, 548), [
14267 rec( 8, 1, NameSpace ),
14268 rec( 9, 1, RenameFlag ),
14269 rec( 10, 2, SearchAttributesLow ),
14270 rec( 12, 12, SrcEnhNWHandlePathS1 ),
14271 rec( 24, 1, PathCount, var="x" ),
14272 rec( 25, 12, DstEnhNWHandlePathS1 ),
14273 rec( 37, 1, PathCount, var="y" ),
14274 rec( 38, (2, 255), Path16, repeat="x", info_str=(Path16, "Rename or Move: %s", "/%s") ),
14275 rec( -1, (2,255), DestPath16, repeat="y" ),
14276 ])
14277 pkt.Reply(8)
14278 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
14279 0x8701, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9200, 0x9600,
14280 0x9804, 0x9a00, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14281 # 2222/5905, 89/05
14282 pkt = NCP(0x5905, "Scan File or Subdirectory for Trustees", 'enhanced', has_length=0)
14283 pkt.Request((31, 284), [
14284 rec( 8, 1, NameSpace ),
14285 rec( 9, 1, MaxReplyObjectIDCount ),
14286 rec( 10, 2, SearchAttributesLow ),
14287 rec( 12, 4, SequenceNumber ),
14288 rec( 16, 4, DirectoryBase ),
14289 rec( 20, 1, VolumeNumber ),
14290 rec( 21, 1, HandleFlag ),
14291 rec( 22, 1, DataTypeFlag ),
14292 rec( 23, 5, Reserved5 ),
14293 rec( 28, 1, PathCount, var="x" ),
14294 rec( 29, (2, 255), Path16, repeat="x", info_str=(Path16, "Scan Trustees for: %s", "/%s") ),
14295 ])
14296 pkt.Reply(20, [
14297 rec( 8, 4, SequenceNumber ),
14298 rec( 12, 2, ObjectIDCount, var="x" ),
14299 rec( 14, 6, TrusteeStruct, repeat="x" ),
14300 ])
14301 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14302 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14303 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14304 # 2222/5906, 89/06
14305 pkt = NCP(0x5906, "Obtain File or SubDirectory Information", 'enhanced', has_length=0)
14306 pkt.Request((22), [
14307 rec( 8, 1, SrcNameSpace ),
14308 rec( 9, 1, DestNameSpace ),
14309 rec( 10, 2, SearchAttributesLow ),
14310 rec( 12, 2, ReturnInfoMask, ENC_LITTLE_ENDIAN ),
14311 rec( 14, 2, ExtendedInfo ),
14312 rec( 16, 4, DirectoryBase ),
14313 rec( 20, 1, VolumeNumber ),
14314 rec( 21, 1, HandleFlag ),
14315 #
14316 # Move to packet-ncp2222.inc
14317 # The datatype flag indicates if the path is represented as ASCII or UTF8
14318 # ASCII has a 1 byte count field whereas UTF8 has a two byte count field.
14319 #
14320 #rec( 22, 1, DataTypeFlag ),
14321 #rec( 23, 5, Reserved5 ),
14322 #rec( 28, 1, PathCount, var="x" ),
14323 #rec( 29, (2,255), Path16, repeat="x", info_str=(Path16, "Obtain Info for: %s", "/%s")),
14324 ])
14325 pkt.Reply(NO_LENGTH_CHECK, [
14326 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14327 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14328 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14329 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14330 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14331 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14332 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14333 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14334 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14335 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14336 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14337 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14338 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14339 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14340 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14341 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14342 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14343 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14344 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14345 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14346 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14347 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14348 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14349 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14350 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14351 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14352 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14353 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14354 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14355 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14356 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14357 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14358 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14359 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
14360 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
14361 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14362 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14363 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14364 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14365 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14366 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14367 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14368 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14369 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
14370 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
14371 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
14372 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
14373 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14374 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
14375 srec( FileName16Struct, req_cond="ncp.ret_info_mask_fname == 1" ),
14376 ])
14377 pkt.ReqCondSizeVariable()
14378 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14379 0x8700, 0x8900, 0x8d00, 0x8f00, 0x9001, 0x9600,
14380 0x9804, 0x9b03, 0x9c03, 0xa802, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14381 # 2222/5907, 89/07
14382 pkt = NCP(0x5907, "Modify File or Subdirectory DOS Information", 'enhanced', has_length=0)
14383 pkt.Request((69,322), [
14384 rec( 8, 1, NameSpace ),
14385 rec( 9, 1, Reserved ),
14386 rec( 10, 2, SearchAttributesLow ),
14387 rec( 12, 2, ModifyDOSInfoMask ),
14388 rec( 14, 2, Reserved2 ),
14389 rec( 16, 2, AttributesDef16 ),
14390 rec( 18, 1, FileMode ),
14391 rec( 19, 1, FileExtendedAttributes ),
14392 rec( 20, 2, CreationDate ),
14393 rec( 22, 2, CreationTime ),
14394 rec( 24, 4, CreatorID, ENC_BIG_ENDIAN ),
14395 rec( 28, 2, ModifiedDate ),
14396 rec( 30, 2, ModifiedTime ),
14397 rec( 32, 4, ModifierID, ENC_BIG_ENDIAN ),
14398 rec( 36, 2, ArchivedDate ),
14399 rec( 38, 2, ArchivedTime ),
14400 rec( 40, 4, ArchiverID, ENC_BIG_ENDIAN ),
14401 rec( 44, 2, LastAccessedDate ),
14402 rec( 46, 2, InheritedRightsMask ),
14403 rec( 48, 2, InheritanceRevokeMask ),
14404 rec( 50, 4, MaxSpace ),
14405 rec( 54, 4, DirectoryBase ),
14406 rec( 58, 1, VolumeNumber ),
14407 rec( 59, 1, HandleFlag ),
14408 rec( 60, 1, DataTypeFlag ),
14409 rec( 61, 5, Reserved5 ),
14410 rec( 66, 1, PathCount, var="x" ),
14411 rec( 67, (2,255), Path16, repeat="x", info_str=(Path16, "Modify DOS Information for: %s", "/%s") ),
14412 ])
14413 pkt.Reply(8)
14414 pkt.CompletionCodes([0x0000, 0x0102, 0x7902, 0x8000, 0x8101, 0x8401, 0x8501,
14415 0x8701, 0x8c01, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
14416 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14417 # 2222/5908, 89/08
14418 pkt = NCP(0x5908, "Delete a File or Subdirectory", 'enhanced', has_length=0)
14419 pkt.Request((27,280), [
14420 rec( 8, 1, NameSpace ),
14421 rec( 9, 1, Reserved ),
14422 rec( 10, 2, SearchAttributesLow ),
14423 rec( 12, 4, DirectoryBase ),
14424 rec( 16, 1, VolumeNumber ),
14425 rec( 17, 1, HandleFlag ),
14426 rec( 18, 1, DataTypeFlag ),
14427 rec( 19, 5, Reserved5 ),
14428 rec( 24, 1, PathCount, var="x" ),
14429 rec( 25, (2,255), Path16, repeat="x", info_str=(Path16, "Delete a File or Subdirectory: %s", "/%s") ),
14430 ])
14431 pkt.Reply(8)
14432 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14433 0x8701, 0x8900, 0x8a00, 0x8d00, 0x8e00, 0x8f00, 0x9001, 0x9600,
14434 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14435 # 2222/5909, 89/09
14436 pkt = NCP(0x5909, "Set Short Directory Handle", 'enhanced', has_length=0)
14437 pkt.Request((27,280), [
14438 rec( 8, 1, NameSpace ),
14439 rec( 9, 1, DataStream ),
14440 rec( 10, 1, DestDirHandle ),
14441 rec( 11, 1, Reserved ),
14442 rec( 12, 4, DirectoryBase ),
14443 rec( 16, 1, VolumeNumber ),
14444 rec( 17, 1, HandleFlag ),
14445 rec( 18, 1, DataTypeFlag ),
14446 rec( 19, 5, Reserved5 ),
14447 rec( 24, 1, PathCount, var="x" ),
14448 rec( 25, (2,255), Path16, repeat="x", info_str=(Path16, "Set Short Directory Handle to: %s", "/%s") ),
14449 ])
14450 pkt.Reply(8)
14451 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14452 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14453 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14454 # 2222/590A, 89/10
14455 pkt = NCP(0x590A, "Add Trustee Set to File or Subdirectory", 'enhanced', has_length=0)
14456 pkt.Request((37,290), [
14457 rec( 8, 1, NameSpace ),
14458 rec( 9, 1, Reserved ),
14459 rec( 10, 2, SearchAttributesLow ),
14460 rec( 12, 2, AccessRightsMaskWord ),
14461 rec( 14, 2, ObjectIDCount, var="y" ),
14462 rec( -1, 6, TrusteeStruct, repeat="y" ),
14463 rec( -1, 4, DirectoryBase ),
14464 rec( -1, 1, VolumeNumber ),
14465 rec( -1, 1, HandleFlag ),
14466 rec( -1, 1, DataTypeFlag ),
14467 rec( -1, 5, Reserved5 ),
14468 rec( -1, 1, PathCount, var="x" ),
14469 rec( -1, (2,255), Path16, repeat="x", info_str=(Path16, "Add Trustee Set to: %s", "/%s") ),
14470 ])
14471 pkt.Reply(8)
14472 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
14473 0x8701, 0x8c01, 0x8d00, 0x8f00, 0x9001, 0x9600,
14474 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfc01, 0xfd00, 0xff16])
14475 # 2222/590B, 89/11
14476 pkt = NCP(0x590B, "Delete Trustee Set from File or SubDirectory", 'enhanced', has_length=0)
14477 pkt.Request((34,287), [
14478 rec( 8, 1, NameSpace ),
14479 rec( 9, 1, Reserved ),
14480 rec( 10, 2, ObjectIDCount, var="y" ),
14481 rec( 12, 7, TrusteeStruct, repeat="y" ),
14482 rec( 19, 4, DirectoryBase ),
14483 rec( 23, 1, VolumeNumber ),
14484 rec( 24, 1, HandleFlag ),
14485 rec( 25, 1, DataTypeFlag ),
14486 rec( 26, 5, Reserved5 ),
14487 rec( 31, 1, PathCount, var="x" ),
14488 rec( 32, (2,255), Path16, repeat="x", info_str=(Path16, "Delete Trustee Set from: %s", "/%s") ),
14489 ])
14490 pkt.Reply(8)
14491 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14492 0x8701, 0x8c01, 0x8d00, 0x8f00, 0x9001, 0x9600,
14493 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14494 # 2222/590C, 89/12
14495 pkt = NCP(0x590C, "Allocate Short Directory Handle", 'enhanced', has_length=0)
14496 pkt.Request((27,280), [
14497 rec( 8, 1, NameSpace ),
14498 rec( 9, 1, DestNameSpace ),
14499 rec( 10, 2, AllocateMode ),
14500 rec( 12, 4, DirectoryBase ),
14501 rec( 16, 1, VolumeNumber ),
14502 rec( 17, 1, HandleFlag ),
14503 rec( 18, 1, DataTypeFlag ),
14504 rec( 19, 5, Reserved5 ),
14505 rec( 24, 1, PathCount, var="x" ),
14506 rec( 25, (2,255), Path16, repeat="x", info_str=(Path16, "Allocate Short Directory Handle to: %s", "/%s") ),
14507 ])
14508 pkt.Reply(NO_LENGTH_CHECK, [
14509 srec( ReplyLevel2Struct, req_cond="ncp.alloc_reply_lvl2 == TRUE" ),
14510 srec( ReplyLevel1Struct, req_cond="ncp.alloc_reply_lvl2 == FALSE" ),
14511 ])
14512 pkt.ReqCondSizeVariable()
14513 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14514 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14515 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14516 # 2222/5910, 89/16
14517 pkt = NCP(0x5910, "Scan Salvageable Files", 'enhanced', has_length=0)
14518 pkt.Request((33,286), [
14519 rec( 8, 1, NameSpace ),
14520 rec( 9, 1, DataStream ),
14521 rec( 10, 2, ReturnInfoMask ),
14522 rec( 12, 2, ExtendedInfo ),
14523 rec( 14, 4, SequenceNumber ),
14524 rec( 18, 4, DirectoryBase ),
14525 rec( 22, 1, VolumeNumber ),
14526 rec( 23, 1, HandleFlag ),
14527 rec( 24, 1, DataTypeFlag ),
14528 rec( 25, 5, Reserved5 ),
14529 rec( 30, 1, PathCount, var="x" ),
14530 rec( 31, (2,255), Path16, repeat="x", info_str=(Path16, "Scan for Deleted Files in: %s", "/%s") ),
14531 ])
14532 pkt.Reply(NO_LENGTH_CHECK, [
14533 rec( 8, 4, SequenceNumber ),
14534 rec( 12, 2, DeletedTime ),
14535 rec( 14, 2, DeletedDate ),
14536 rec( 16, 4, DeletedID, ENC_BIG_ENDIAN ),
14537 rec( 20, 4, VolumeID ),
14538 rec( 24, 4, DirectoryBase ),
14539 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14540 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14541 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14542 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14543 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14544 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14545 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14546 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14547 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14548 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14549 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14550 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14551 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14552 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14553 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14554 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14555 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14556 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14557 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14558 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14559 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14560 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14561 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
14562 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14563 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14564 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14565 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14566 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14567 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14568 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14569 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14570 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14571 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14572 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14573 srec( ReferenceIDStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_id == 1)" ),
14574 srec( NSAttributeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns_attr == 1)" ),
14575 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14576 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14577 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14578 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14579 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14580 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14581 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14582 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14583 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
14584 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
14585 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
14586 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
14587 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14588 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
14589 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
14590 ])
14591 pkt.ReqCondSizeVariable()
14592 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14593 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14594 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14595 # 2222/5911, 89/17
14596 pkt = NCP(0x5911, "Recover Salvageable File", 'enhanced', has_length=0)
14597 pkt.Request((24,278), [
14598 rec( 8, 1, NameSpace ),
14599 rec( 9, 1, Reserved ),
14600 rec( 10, 4, SequenceNumber ),
14601 rec( 14, 4, VolumeID ),
14602 rec( 18, 4, DirectoryBase ),
14603 rec( 22, 1, DataTypeFlag ),
14604 rec( 23, (1,255), FileName16, info_str=(FileName16, "Recover Deleted File: %s", ", %s") ),
14605 ])
14606 pkt.Reply(8)
14607 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
14608 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14609 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14610 # 2222/5913, 89/19
14611 pkt = NCP(0x5913, "Get Name Space Information", 'enhanced', has_length=0)
14612 pkt.Request(18, [
14613 rec( 8, 1, SrcNameSpace ),
14614 rec( 9, 1, DestNameSpace ),
14615 rec( 10, 1, DataTypeFlag ),
14616 rec( 11, 1, VolumeNumber ),
14617 rec( 12, 4, DirectoryBase ),
14618 rec( 16, 2, NamesSpaceInfoMask ),
14619 ])
14620 pkt.Reply(NO_LENGTH_CHECK, [
14621 srec( FileName16Struct, req_cond="ncp.ns_info_mask_modify == TRUE" ),
14622 srec( FileAttributesStruct, req_cond="ncp.ns_info_mask_fatt == TRUE" ),
14623 srec( CreationDateStruct, req_cond="ncp.ns_info_mask_cdate == TRUE" ),
14624 srec( CreationTimeStruct, req_cond="ncp.ns_info_mask_ctime == TRUE" ),
14625 srec( OwnerIDStruct, req_cond="ncp.ns_info_mask_owner == TRUE" ),
14626 srec( ArchiveDateStruct, req_cond="ncp.ns_info_mask_adate == TRUE" ),
14627 srec( ArchiveTimeStruct, req_cond="ncp.ns_info_mask_atime == TRUE" ),
14628 srec( ArchiveIdStruct, req_cond="ncp.ns_info_mask_aid == TRUE" ),
14629 srec( UpdateDateStruct, req_cond="ncp.ns_info_mask_udate == TRUE" ),
14630 srec( UpdateTimeStruct, req_cond="ncp.ns_info_mask_utime == TRUE" ),
14631 srec( UpdateIDStruct, req_cond="ncp.ns_info_mask_uid == TRUE" ),
14632 srec( LastAccessStruct, req_cond="ncp.ns_info_mask_acc_date == TRUE" ),
14633 srec( RightsInfoStruct, req_cond="ncp.ns_info_mask_max_acc_mask == TRUE" ),
14634 ])
14635 pkt.ReqCondSizeVariable()
14636 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14637 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14638 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14639 # 2222/5914, 89/20
14640 pkt = NCP(0x5914, "Search for File or Subdirectory Set", 'enhanced', has_length=0)
14641 pkt.Request((28, 28), [
14642 rec( 8, 1, NameSpace ),
14643 rec( 9, 1, DataStream ),
14644 rec( 10, 2, SearchAttributesLow ),
14645 rec( 12, 2, ReturnInfoMask ),
14646 rec( 14, 2, ExtendedInfo ),
14647 rec( 16, 2, ReturnInfoCount ),
14648 rec( 18, 9, SeachSequenceStruct ),
14649 rec( 27, 1, DataTypeFlag ),
14650 # next field is dissected in packet-ncp2222.inc
14651 #rec( 28, (2,255), SearchPattern16 ),
14652 ])
14653 # The reply packet is dissected in packet-ncp2222.inc
14654 pkt.Reply(NO_LENGTH_CHECK, [
14655 ])
14656 pkt.ReqCondSizeVariable()
14657 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14658 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14659 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14660 # 2222/5916, 89/22
14661 pkt = NCP(0x5916, "Generate Directory Base and Volume Number", 'enhanced', has_length=0)
14662 pkt.Request((27,280), [
14663 rec( 8, 1, SrcNameSpace ),
14664 rec( 9, 1, DestNameSpace ),
14665 rec( 10, 2, dstNSIndicator ),
14666 rec( 12, 4, DirectoryBase ),
14667 rec( 16, 1, VolumeNumber ),
14668 rec( 17, 1, HandleFlag ),
14669 rec( 18, 1, DataTypeFlag ),
14670 rec( 19, 5, Reserved5 ),
14671 rec( 24, 1, PathCount, var="x" ),
14672 rec( 25, (2,255), Path16, repeat="x", info_str=(Path16, "Get Volume and Directory Base from: %s", "/%s") ),
14673 ])
14674 pkt.Reply(17, [
14675 rec( 8, 4, DirectoryBase ),
14676 rec( 12, 4, DOSDirectoryBase ),
14677 rec( 16, 1, VolumeNumber ),
14678 ])
14679 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14680 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14681 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14682 # 2222/5919, 89/25
14683 pkt = NCP(0x5919, "Set Name Space Information", 'enhanced', has_length=0)
14684 pkt.Request(530, [
14685 rec( 8, 1, SrcNameSpace ),
14686 rec( 9, 1, DestNameSpace ),
14687 rec( 10, 1, VolumeNumber ),
14688 rec( 11, 4, DirectoryBase ),
14689 rec( 15, 2, NamesSpaceInfoMask ),
14690 rec( 17, 1, DataTypeFlag ),
14691 rec( 18, 512, NSSpecificInfo ),
14692 ])
14693 pkt.Reply(8)
14694 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
14695 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
14696 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00,
14697 0xff16])
14698 # 2222/591C, 89/28
14699 pkt = NCP(0x591C, "Get Full Path String", 'enhanced', has_length=0)
14700 pkt.Request((35,288), [
14701 rec( 8, 1, SrcNameSpace ),
14702 rec( 9, 1, DestNameSpace ),
14703 rec( 10, 2, PathCookieFlags ),
14704 rec( 12, 4, Cookie1 ),
14705 rec( 16, 4, Cookie2 ),
14706 rec( 20, 4, DirectoryBase ),
14707 rec( 24, 1, VolumeNumber ),
14708 rec( 25, 1, HandleFlag ),
14709 rec( 26, 1, DataTypeFlag ),
14710 rec( 27, 5, Reserved5 ),
14711 rec( 32, 1, PathCount, var="x" ),
14712 rec( 33, (2,255), Path16, repeat="x", info_str=(Path16, "Get Full Path from: %s", "/%s") ),
14713 ])
14714 pkt.Reply((24,277), [
14715 rec( 8, 2, PathCookieFlags ),
14716 rec( 10, 4, Cookie1 ),
14717 rec( 14, 4, Cookie2 ),
14718 rec( 18, 2, PathComponentSize ),
14719 rec( 20, 2, PathComponentCount, var='x' ),
14720 rec( 22, (2,255), Path16, repeat='x' ),
14721 ])
14722 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14723 0x8701, 0x8b00, 0x8d00, 0x8f00, 0x9001,
14724 0x9600, 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00,
14725 0xff16])
14726 # 2222/591D, 89/29
14727 pkt = NCP(0x591D, "Get Effective Directory Rights", 'enhanced', has_length=0)
14728 pkt.Request((31, 284), [
14729 rec( 8, 1, NameSpace ),
14730 rec( 9, 1, DestNameSpace ),
14731 rec( 10, 2, SearchAttributesLow ),
14732 rec( 12, 2, ReturnInfoMask ),
14733 rec( 14, 2, ExtendedInfo ),
14734 rec( 16, 4, DirectoryBase ),
14735 rec( 20, 1, VolumeNumber ),
14736 rec( 21, 1, HandleFlag ),
14737 rec( 22, 1, DataTypeFlag ),
14738 rec( 23, 5, Reserved5 ),
14739 rec( 28, 1, PathCount, var="x" ),
14740 rec( 29, (2,255), Path16, repeat="x", info_str=(Path16, "Get Effective Rights for: %s", "/%s") ),
14741 ])
14742 pkt.Reply(NO_LENGTH_CHECK, [
14743 rec( 8, 2, EffectiveRights, ENC_LITTLE_ENDIAN ),
14744 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14745 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14746 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14747 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14748 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14749 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14750 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14751 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14752 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14753 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14754 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14755 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14756 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14757 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14758 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14759 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14760 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14761 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14762 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14763 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14764 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14765 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14766 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
14767 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14768 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14769 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14770 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14771 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14772 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14773 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14774 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14775 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14776 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14777 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14778 srec( FileSize64bitStruct, req_cond="(ncp.ext_info_64_bit_fs == 1) && (ncp.ret_info_mask_fname == 1)" ),
14779 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
14780 ])
14781 pkt.ReqCondSizeVariable()
14782 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
14783 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14784 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14785 # 2222/591E, 89/30
14786 pkt = NCP(0x591E, "Open/Create File or Subdirectory", 'enhanced', has_length=0)
14787 pkt.Request((41, 294), [
14788 rec( 8, 1, NameSpace ),
14789 rec( 9, 1, DataStream ),
14790 rec( 10, 1, OpenCreateMode ),
14791 rec( 11, 1, Reserved ),
14792 rec( 12, 2, SearchAttributesLow ),
14793 rec( 14, 2, Reserved2 ),
14794 rec( 16, 2, ReturnInfoMask ),
14795 rec( 18, 2, ExtendedInfo ),
14796 rec( 20, 4, AttributesDef32 ),
14797 rec( 24, 2, DesiredAccessRights ),
14798 rec( 26, 4, DirectoryBase ),
14799 rec( 30, 1, VolumeNumber ),
14800 rec( 31, 1, HandleFlag ),
14801 rec( 32, 1, DataTypeFlag ),
14802 rec( 33, 5, Reserved5 ),
14803 rec( 38, 1, PathCount, var="x" ),
14804 rec( 39, (2,255), Path16, repeat="x", info_str=(Path16, "Open or Create File: %s", "/%s") ),
14805 ])
14806 pkt.Reply(NO_LENGTH_CHECK, [
14807 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
14808 rec( 12, 1, OpenCreateAction ),
14809 rec( 13, 1, Reserved ),
14810 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14811 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14812 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14813 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14814 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14815 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14816 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14817 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14818 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14819 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14820 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14821 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14822 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14823 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14824 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14825 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14826 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14827 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14828 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14829 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14830 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14831 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14832 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
14833 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14834 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14835 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14836 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14837 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14838 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14839 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14840 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14841 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14842 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14843 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14844 srec( FileSize64bitStruct, req_cond="(ncp.ext_info_64_bit_fs == 1) && (ncp.ret_info_mask_fname == 1)" ),
14845 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
14846 ])
14847 pkt.ReqCondSizeVariable()
14848 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
14849 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
14850 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14851 pkt.MakeExpert("file_rights")
14852 # 2222/5920, 89/32
14853 pkt = NCP(0x5920, "Open/Create File or Subdirectory with Callback", 'enhanced', has_length=0)
14854 pkt.Request((37, 290), [
14855 rec( 8, 1, NameSpace ),
14856 rec( 9, 1, OpenCreateMode ),
14857 rec( 10, 2, SearchAttributesLow ),
14858 rec( 12, 2, ReturnInfoMask ),
14859 rec( 14, 2, ExtendedInfo ),
14860 rec( 16, 4, AttributesDef32 ),
14861 rec( 20, 2, DesiredAccessRights ),
14862 rec( 22, 4, DirectoryBase ),
14863 rec( 26, 1, VolumeNumber ),
14864 rec( 27, 1, HandleFlag ),
14865 rec( 28, 1, DataTypeFlag ),
14866 rec( 29, 5, Reserved5 ),
14867 rec( 34, 1, PathCount, var="x" ),
14868 rec( 35, (2,255), Path16, repeat="x", info_str=(Path16, "Open or Create with Op-Lock: %s", "/%s") ),
14869 ])
14870 pkt.Reply( NO_LENGTH_CHECK, [
14871 rec( 8, 4, FileHandle, ENC_BIG_ENDIAN ),
14872 rec( 12, 1, OpenCreateAction ),
14873 rec( 13, 1, OCRetFlags ),
14874 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14875 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14876 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14877 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14878 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14879 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14880 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14881 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14882 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14883 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14884 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14885 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14886 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14887 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14888 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14889 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14890 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14891 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14892 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14893 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14894 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14895 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14896 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14897 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14898 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14899 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14900 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14901 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14902 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14903 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14904 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14905 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14906 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14907 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
14908 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
14909 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14910 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14911 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14912 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14913 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14914 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14915 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14916 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14917 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14918 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
14919 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
14920 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
14921 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
14922 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
14923 srec( FileName16Struct, req_cond="ncp.ret_info_mask_fname == 1" ),
14924 ])
14925 pkt.ReqCondSizeVariable()
14926 pkt.CompletionCodes([0x0000, 0x0102, 0x7f00, 0x8000, 0x8101, 0x8401, 0x8501,
14927 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9400, 0x9600,
14928 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
14929 pkt.MakeExpert("file_rights")
14930 # 2222/5921, 89/33
14931 pkt = NCP(0x5921, "Open/Create File or Subdirectory II with Callback", 'enhanced', has_length=0)
14932 pkt.Request((41, 294), [
14933 rec( 8, 1, NameSpace ),
14934 rec( 9, 1, DataStream ),
14935 rec( 10, 1, OpenCreateMode ),
14936 rec( 11, 1, Reserved ),
14937 rec( 12, 2, SearchAttributesLow ),
14938 rec( 14, 2, Reserved2 ),
14939 rec( 16, 2, ReturnInfoMask ),
14940 rec( 18, 2, ExtendedInfo ),
14941 rec( 20, 4, AttributesDef32 ),
14942 rec( 24, 2, DesiredAccessRights ),
14943 rec( 26, 4, DirectoryBase ),
14944 rec( 30, 1, VolumeNumber ),
14945 rec( 31, 1, HandleFlag ),
14946 rec( 32, 1, DataTypeFlag ),
14947 rec( 33, 5, Reserved5 ),
14948 rec( 38, 1, PathCount, var="x" ),
14949 rec( 39, (2,255), Path16, repeat="x", info_str=(Path16, "Open or Create II with Op-Lock: %s", "/%s") ),
14950 ])
14951 pkt.Reply( NO_LENGTH_CHECK, [
14952 rec( 8, 4, FileHandle ),
14953 rec( 12, 1, OpenCreateAction ),
14954 rec( 13, 1, OCRetFlags ),
14955 srec( DSSpaceAllocateStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
14956 srec( PadDSSpaceAllocate, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
14957 srec( AttributesStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
14958 srec( PadAttributes, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
14959 srec( DataStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
14960 srec( PadDataStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
14961 srec( TotalStreamSizeStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
14962 srec( PadTotalStreamSize, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
14963 srec( CreationInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
14964 srec( PadCreationInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
14965 srec( ModifyInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
14966 srec( PadModifyInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
14967 srec( ArchiveInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
14968 srec( PadArchiveInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
14969 srec( RightsInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
14970 srec( PadRightsInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
14971 srec( DirEntryStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
14972 srec( PadDirEntry, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
14973 srec( EAInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
14974 srec( PadEAInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
14975 srec( NSInfoStruct, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
14976 srec( PadNSInfo, req_cond="(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
14977 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
14978 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
14979 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
14980 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
14981 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
14982 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
14983 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
14984 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
14985 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
14986 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
14987 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
14988 srec( ReferenceIDStruct, req_cond="ncp.ret_info_mask_id == 1" ),
14989 srec( NSAttributeStruct, req_cond="ncp.ret_info_mask_ns_attr == 1" ),
14990 rec( -1, 4, DataStreamsCount, var="x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14991 srec( DStreamActual, repeat = "x" , req_cond="ncp.ret_info_mask_actual == 1" ),
14992 rec( -1, 4, DataStreamsCount, var="y", req_cond="ncp.ret_info_mask_logical == 1" ),
14993 srec( DStreamLogical, repeat="y" , req_cond="ncp.ret_info_mask_logical == 1" ),
14994 srec( LastUpdatedInSecondsStruct, req_cond="ncp.ext_info_update == 1" ),
14995 srec( DOSName16Struct, req_cond="ncp.ext_info_dos_name == 1" ),
14996 srec( FlushTimeStruct, req_cond="ncp.ext_info_flush == 1" ),
14997 srec( ParentBaseIDStruct, req_cond="ncp.ext_info_parental == 1" ),
14998 srec( MacFinderInfoStruct, req_cond="ncp.ext_info_mac_finder == 1" ),
14999 srec( SiblingCountStruct, req_cond="ncp.ext_info_sibling == 1" ),
15000 srec( EffectiveRightsStruct, req_cond="ncp.ext_info_effective == 1" ),
15001 srec( MacTimeStruct, req_cond="ncp.ext_info_mac_date == 1" ),
15002 srec( LastAccessedTimeStruct, req_cond="ncp.ext_info_access == 1" ),
15003 srec( FileSize64bitStruct, req_cond="ncp.ext_info_64_bit_fs == 1" ),
15004 srec( FileName16Struct, req_cond="ncp.ret_info_mask_fname == 1" ),
15005 ])
15006 pkt.ReqCondSizeVariable()
15007 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
15008 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15009 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
15010 pkt.MakeExpert("file_rights")
15011 # 2222/5923, 89/35
15012 pkt = NCP(0x5923, "Modify DOS Attributes on a File or Subdirectory", 'enhanced', has_length=0)
15013 pkt.Request((35, 288), [
15014 rec( 8, 1, NameSpace ),
15015 rec( 9, 1, Flags ),
15016 rec( 10, 2, SearchAttributesLow ),
15017 rec( 12, 2, ReturnInfoMask ),
15018 rec( 14, 2, ExtendedInfo ),
15019 rec( 16, 4, AttributesDef32 ),
15020 rec( 20, 4, DirectoryBase ),
15021 rec( 24, 1, VolumeNumber ),
15022 rec( 25, 1, HandleFlag ),
15023 rec( 26, 1, DataTypeFlag ),
15024 rec( 27, 5, Reserved5 ),
15025 rec( 32, 1, PathCount, var="x" ),
15026 rec( 33, (2,255), Path16, repeat="x", info_str=(Path16, "Modify DOS Attributes for: %s", "/%s") ),
15027 ])
15028 pkt.Reply(24, [
15029 rec( 8, 4, ItemsChecked ),
15030 rec( 12, 4, ItemsChanged ),
15031 rec( 16, 4, AttributeValidFlag ),
15032 rec( 20, 4, AttributesDef32 ),
15033 ])
15034 pkt.CompletionCodes([0x0000, 0x0102, 0x8000, 0x8101, 0x8401, 0x8501,
15035 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15036 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
15037 # 2222/5927, 89/39
15038 pkt = NCP(0x5927, "Get Directory Disk Space Restriction", 'enhanced', has_length=0)
15039 pkt.Request((26, 279), [
15040 rec( 8, 1, NameSpace ),
15041 rec( 9, 2, Reserved2 ),
15042 rec( 11, 4, DirectoryBase ),
15043 rec( 15, 1, VolumeNumber ),
15044 rec( 16, 1, HandleFlag ),
15045 rec( 17, 1, DataTypeFlag ),
15046 rec( 18, 5, Reserved5 ),
15047 rec( 23, 1, PathCount, var="x" ),
15048 rec( 24, (2,255), Path16, repeat="x", info_str=(Path16, "Get Disk Space Restriction for: %s", "/%s") ),
15049 ])
15050 pkt.Reply(18, [
15051 rec( 8, 1, NumberOfEntries, var="x" ),
15052 rec( 9, 9, SpaceStruct, repeat="x" ),
15053 ])
15054 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
15055 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15056 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00,
15057 0xff16])
15058 # 2222/5928, 89/40
15059 pkt = NCP(0x5928, "Search for File or Subdirectory Set (Extended Errors)", 'enhanced', has_length=0)
15060 pkt.Request((30, 283), [
15061 rec( 8, 1, NameSpace ),
15062 rec( 9, 1, DataStream ),
15063 rec( 10, 2, SearchAttributesLow ),
15064 rec( 12, 2, ReturnInfoMask ),
15065 rec( 14, 2, ExtendedInfo ),
15066 rec( 16, 2, ReturnInfoCount ),
15067 rec( 18, 9, SeachSequenceStruct ),
15068 rec( 27, 1, DataTypeFlag ),
15069 rec( 28, (2,255), SearchPattern16, info_str=(SearchPattern16, "Search for: %s", ", %s") ),
15070 ])
15071 pkt.Reply(NO_LENGTH_CHECK, [
15072 rec( 8, 9, SeachSequenceStruct ),
15073 rec( 17, 1, MoreFlag ),
15074 rec( 18, 2, InfoCount ),
15075 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)" ),
15076 srec( PadDSSpaceAllocate, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)" ),
15077 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)" ),
15078 srec( PadAttributes, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)" ),
15079 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)" ),
15080 srec( PadDataStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)" ),
15081 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)" ),
15082 srec( PadTotalStreamSize, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)" ),
15083 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)" ),
15084 srec( PadCreationInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)" ),
15085 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)" ),
15086 srec( PadModifyInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)" ),
15087 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)" ),
15088 srec( PadArchiveInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)" ),
15089 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)" ),
15090 srec( PadRightsInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)" ),
15091 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)" ),
15092 srec( PadDirEntry, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)" ),
15093 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)" ),
15094 srec( PadEAInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)" ),
15095 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)" ),
15096 srec( PadNSInfo, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)" ),
15097 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)" ),
15098 srec( DSSpaceAllocateStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)" ),
15099 srec( AttributesStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)" ),
15100 srec( DataStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)" ),
15101 srec( TotalStreamSizeStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)" ),
15102 srec( CreationInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)" ),
15103 srec( ModifyInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)" ),
15104 srec( ArchiveInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)" ),
15105 srec( RightsInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)" ),
15106 srec( DirEntryStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)" ),
15107 srec( EAInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)" ),
15108 srec( NSInfoStruct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)" ),
15109 srec( FileSize64bitStruct, req_cond="(ncp.ext_info_64_bit_fs == 1) && (ncp.ret_info_mask_fname == 1)" ),
15110 srec( FileName16Struct, req_cond="(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)" ),
15111 ])
15112 pkt.ReqCondSizeVariable()
15113 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
15114 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15115 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
15116 # 2222/5929, 89/41
15117 pkt = NCP(0x5929, "Get Directory Disk Space Restriction 64 Bit Aware", 'enhanced', has_length=0)
15118 pkt.Request((26, 279), [
15119 rec( 8, 1, NameSpace ),
15120 rec( 9, 1, Reserved ),
15121 rec( 10, 1, InfoLevelNumber),
15122 rec( 11, 4, DirectoryBase ),
15123 rec( 15, 1, VolumeNumber ),
15124 rec( 16, 1, HandleFlag ),
15125 rec( 17, 1, DataTypeFlag ),
15126 rec( 18, 5, Reserved5 ),
15127 rec( 23, 1, PathCount, var="x" ),
15128 rec( 24, (2,255), Path16, repeat="x", info_str=(Path16, "Get Disk Space Restriction for: %s", "/%s") ),
15129 ])
15130 pkt.Reply(NO_LENGTH_CHECK, [
15131 rec( -1, 8, MaxSpace64, req_cond = "(ncp.info_level_num == 0)" ),
15132 rec( -1, 8, MinSpaceLeft64, req_cond = "(ncp.info_level_num == 0)" ),
15133 rec( -1, 1, NumberOfEntries, var="x", req_cond = "(ncp.info_level_num == 1)" ),
15134 srec( DirDiskSpaceRest64bit, repeat="x", req_cond = "(ncp.info_level_num == 1)" ),
15135 ])
15136 pkt.ReqCondSizeVariable()
15137 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
15138 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15139 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00,
15140 0xff16])
15141 # 2222/5932, 89/50
15142 pkt = NCP(0x5932, "Get Object Effective Rights", "enhanced", has_length=0)
15143 pkt.Request(25, [
15144 rec( 8, 1, NameSpace ),
15145 rec( 9, 4, ObjectID ),
15146 rec( 13, 4, DirectoryBase ),
15147 rec( 17, 1, VolumeNumber ),
15148 rec( 18, 1, HandleFlag ),
15149 rec( 19, 1, DataTypeFlag ),
15150 rec( 20, 5, Reserved5 ),
15151 ])
15152 pkt.Reply( 10, [
15153 rec( 8, 2, TrusteeRights ),
15154 ])
15155 pkt.CompletionCodes([0x0000, 0x7e01, 0x9b00, 0x9c03, 0xa901, 0xaa00])
15156 # 2222/5934, 89/52
15157 pkt = NCP(0x5934, "Write Extended Attribute", 'enhanced', has_length=0 )
15158 pkt.Request((36,98), [
15159 rec( 8, 2, EAFlags ),
15160 rec( 10, 4, EAHandleOrNetWareHandleOrVolume ),
15161 rec( 14, 4, ReservedOrDirectoryNumber ),
15162 rec( 18, 4, TtlWriteDataSize ),
15163 rec( 22, 4, FileOffset ),
15164 rec( 26, 4, EAAccessFlag ),
15165 rec( 30, 1, DataTypeFlag ),
15166 rec( 31, 2, EAValueLength, var='x' ),
15167 rec( 33, (2,64), EAKey, info_str=(EAKey, "Write Extended Attribute: %s", ", %s") ),
15168 rec( -1, 1, EAValueRep, repeat='x' ),
15169 ])
15170 pkt.Reply(20, [
15171 rec( 8, 4, EAErrorCodes ),
15172 rec( 12, 4, EABytesWritten ),
15173 rec( 16, 4, NewEAHandle ),
15174 ])
15175 pkt.CompletionCodes([0x0000, 0xc800, 0xc900, 0xcb00, 0xce00, 0xcf00, 0xd101,
15176 0xd203, 0xa901, 0xaa00, 0xd301, 0xd402])
15177 # 2222/5935, 89/53
15178 pkt = NCP(0x5935, "Read Extended Attribute", 'enhanced', has_length=0 )
15179 pkt.Request((31,541), [
15180 rec( 8, 2, EAFlags ),
15181 rec( 10, 4, EAHandleOrNetWareHandleOrVolume ),
15182 rec( 14, 4, ReservedOrDirectoryNumber ),
15183 rec( 18, 4, FileOffset ),
15184 rec( 22, 4, InspectSize ),
15185 rec( 26, 1, DataTypeFlag ),
15186 rec( 27, 2, MaxReadDataReplySize ),
15187 rec( 29, (2,512), EAKey, info_str=(EAKey, "Read Extended Attribute: %s", ", %s") ),
15188 ])
15189 pkt.Reply((26,536), [
15190 rec( 8, 4, EAErrorCodes ),
15191 rec( 12, 4, TtlValuesLength ),
15192 rec( 16, 4, NewEAHandle ),
15193 rec( 20, 4, EAAccessFlag ),
15194 rec( 24, (2,512), EAValue ),
15195 ])
15196 pkt.CompletionCodes([0x0000, 0xa901, 0xaa00, 0xc900, 0xce00, 0xcf00, 0xd101,
15197 0xd301])
15198 # 2222/5936, 89/54
15199 pkt = NCP(0x5936, "Enumerate Extended Attribute", 'enhanced', has_length=0 )
15200 pkt.Request((27,537), [
15201 rec( 8, 2, EAFlags ),
15202 rec( 10, 4, EAHandleOrNetWareHandleOrVolume ),
15203 rec( 14, 4, ReservedOrDirectoryNumber ),
15204 rec( 18, 4, InspectSize ),
15205 rec( 22, 2, SequenceNumber ),
15206 rec( 24, 1, DataTypeFlag ),
15207 rec( 25, (2,512), EAKey, info_str=(EAKey, "Enumerate Extended Attribute: %s", ", %s") ),
15208 ])
15209 pkt.Reply(28, [
15210 rec( 8, 4, EAErrorCodes ),
15211 rec( 12, 4, TtlEAs ),
15212 rec( 16, 4, TtlEAsDataSize ),
15213 rec( 20, 4, TtlEAsKeySize ),
15214 rec( 24, 4, NewEAHandle ),
15215 ])
15216 pkt.CompletionCodes([0x0000, 0x8800, 0xa901, 0xaa00, 0xc900, 0xce00, 0xcf00, 0xd101,
15217 0xd301])
15218 # 2222/5947, 89/71
15219 pkt = NCP(0x5947, "Scan Volume Trustee Object Paths", 'enhanced', has_length=0)
15220 pkt.Request(21, [
15221 rec( 8, 4, VolumeID ),
15222 rec( 12, 4, ObjectID ),
15223 rec( 16, 4, SequenceNumber ),
15224 rec( 20, 1, DataTypeFlag ),
15225 ])
15226 pkt.Reply((20,273), [
15227 rec( 8, 4, SequenceNumber ),
15228 rec( 12, 4, ObjectID ),
15229 rec( 16, 1, TrusteeAccessMask ),
15230 rec( 17, 1, PathCount, var="x" ),
15231 rec( 18, (2,255), Path16, repeat="x" ),
15232 ])
15233 pkt.CompletionCodes([0x0000, 0x8000, 0x8101, 0x8401, 0x8501,
15234 0x8701, 0x8d00, 0x8f00, 0x9001, 0x9600,
15235 0x9804, 0x9b03, 0x9c03, 0xa901, 0xaa00, 0xbf00, 0xfd00, 0xff16])
15236 # 2222/5A01, 90/00
15237 pkt = NCP(0x5A00, "Parse Tree", 'file')
15238 pkt.Request(46, [
15239 rec( 10, 4, InfoMask ),
15240 rec( 14, 4, Reserved4 ),
15241 rec( 18, 4, Reserved4 ),
15242 rec( 22, 4, limbCount ),
15243 rec( 26, 4, limbFlags ),
15244 rec( 30, 4, VolumeNumberLong ),
15245 rec( 34, 4, DirectoryBase ),
15246 rec( 38, 4, limbScanNum ),
15247 rec( 42, 4, NameSpace ),
15248 ])
15249 pkt.Reply(32, [
15250 rec( 8, 4, limbCount ),
15251 rec( 12, 4, ItemsCount ),
15252 rec( 16, 4, nextLimbScanNum ),
15253 rec( 20, 4, CompletionCode ),
15254 rec( 24, 1, FolderFlag ),
15255 rec( 25, 3, Reserved ),
15256 rec( 28, 4, DirectoryBase ),
15257 ])
15258 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15259 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15260 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
15261 # 2222/5A0A, 90/10
15262 pkt = NCP(0x5A0A, "Get Reference Count from Dir Entry Number", 'file')
15263 pkt.Request(19, [
15264 rec( 10, 4, VolumeNumberLong ),
15265 rec( 14, 4, DirectoryBase ),
15266 rec( 18, 1, NameSpace ),
15267 ])
15268 pkt.Reply(12, [
15269 rec( 8, 4, ReferenceCount ),
15270 ])
15271 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15272 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15273 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
15274 # 2222/5A0B, 90/11
15275 pkt = NCP(0x5A0B, "Get Reference Count from Dir Handle", 'file')
15276 pkt.Request(14, [
15277 rec( 10, 4, DirHandle ),
15278 ])
15279 pkt.Reply(12, [
15280 rec( 8, 4, ReferenceCount ),
15281 ])
15282 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15283 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15284 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
15285 # 2222/5A0C, 90/12
15286 pkt = NCP(0x5A0C, "Set Compressed File Size", 'file')
15287 pkt.Request(20, [
15288 rec( 10, 6, FileHandle ),
15289 rec( 16, 4, SuggestedFileSize ),
15290 ])
15291 pkt.Reply(16, [
15292 rec( 8, 4, OldFileSize ),
15293 rec( 12, 4, NewFileSize ),
15294 ])
15295 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15296 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15297 0x9804, 0x9b03, 0x9c03, 0xfd00, 0xff16])
15298 # 2222/5A80, 90/128
15299 pkt = NCP(0x5A80, "Move File Data To Data Migration", 'migration')
15300 pkt.Request(27, [
15301 rec( 10, 4, VolumeNumberLong ),
15302 rec( 14, 4, DirectoryEntryNumber ),
15303 rec( 18, 1, NameSpace ),
15304 rec( 19, 3, Reserved ),
15305 rec( 22, 4, SupportModuleID ),
15306 rec( 26, 1, DMFlags ),
15307 ])
15308 pkt.Reply(8)
15309 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15310 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15311 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15312 # 2222/5A81, 90/129
15313 pkt = NCP(0x5A81, "Data Migration File Information", 'migration')
15314 pkt.Request(19, [
15315 rec( 10, 4, VolumeNumberLong ),
15316 rec( 14, 4, DirectoryEntryNumber ),
15317 rec( 18, 1, NameSpace ),
15318 ])
15319 pkt.Reply(24, [
15320 rec( 8, 4, SupportModuleID ),
15321 rec( 12, 4, RestoreTime ),
15322 rec( 16, 4, DMInfoEntries, var="x" ),
15323 rec( 20, 4, DataSize, repeat="x" ),
15324 ])
15325 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15326 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15327 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15328 # 2222/5A82, 90/130
15329 pkt = NCP(0x5A82, "Volume Data Migration Status", 'migration')
15330 pkt.Request(18, [
15331 rec( 10, 4, VolumeNumberLong ),
15332 rec( 14, 4, SupportModuleID ),
15333 ])
15334 pkt.Reply(32, [
15335 rec( 8, 4, NumOfFilesMigrated ),
15336 rec( 12, 4, TtlMigratedSize ),
15337 rec( 16, 4, SpaceUsed ),
15338 rec( 20, 4, LimboUsed ),
15339 rec( 24, 4, SpaceMigrated ),
15340 rec( 28, 4, FileLimbo ),
15341 ])
15342 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15343 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15344 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15345 # 2222/5A83, 90/131
15346 pkt = NCP(0x5A83, "Migrator Status Info", 'migration')
15347 pkt.Request(10)
15348 pkt.Reply(20, [
15349 rec( 8, 1, DMPresentFlag ),
15350 rec( 9, 3, Reserved3 ),
15351 rec( 12, 4, DMmajorVersion ),
15352 rec( 16, 4, DMminorVersion ),
15353 ])
15354 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15355 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15356 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15357 # 2222/5A84, 90/132
15358 pkt = NCP(0x5A84, "Data Migration Support Module Information", 'migration')
15359 pkt.Request(18, [
15360 rec( 10, 1, DMInfoLevel ),
15361 rec( 11, 3, Reserved3),
15362 rec( 14, 4, SupportModuleID ),
15363 ])
15364 pkt.Reply(NO_LENGTH_CHECK, [
15365 srec( DMInfoLevel0, req_cond="ncp.dm_info_level == 0x00" ),
15366 srec( DMInfoLevel1, req_cond="ncp.dm_info_level == 0x01" ),
15367 srec( DMInfoLevel2, req_cond="ncp.dm_info_level == 0x02" ),
15368 ])
15369 pkt.ReqCondSizeVariable()
15370 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15371 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15372 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15373 # 2222/5A85, 90/133
15374 pkt = NCP(0x5A85, "Move File Data From Data Migration", 'migration')
15375 pkt.Request(19, [
15376 rec( 10, 4, VolumeNumberLong ),
15377 rec( 14, 4, DirectoryEntryNumber ),
15378 rec( 18, 1, NameSpace ),
15379 ])
15380 pkt.Reply(8)
15381 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15382 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15383 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15384 # 2222/5A86, 90/134
15385 pkt = NCP(0x5A86, "Get/Set Default Read-Write Support Module ID", 'migration')
15386 pkt.Request(18, [
15387 rec( 10, 1, GetSetFlag ),
15388 rec( 11, 3, Reserved3 ),
15389 rec( 14, 4, SupportModuleID ),
15390 ])
15391 pkt.Reply(12, [
15392 rec( 8, 4, SupportModuleID ),
15393 ])
15394 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15395 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15396 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15397 # 2222/5A87, 90/135
15398 pkt = NCP(0x5A87, "Data Migration Support Module Capacity Request", 'migration')
15399 pkt.Request(22, [
15400 rec( 10, 4, SupportModuleID ),
15401 rec( 14, 4, VolumeNumberLong ),
15402 rec( 18, 4, DirectoryBase ),
15403 ])
15404 pkt.Reply(20, [
15405 rec( 8, 4, BlockSizeInSectors ),
15406 rec( 12, 4, TotalBlocks ),
15407 rec( 16, 4, UsedBlocks ),
15408 ])
15409 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15410 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15411 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15412 # 2222/5A88, 90/136
15413 pkt = NCP(0x5A88, "RTDM Request", 'migration')
15414 pkt.Request(15, [
15415 rec( 10, 4, Verb ),
15416 rec( 14, 1, VerbData ),
15417 ])
15418 pkt.Reply(8)
15419 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15420 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15421 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15422 # 2222/5A96, 90/150
15423 pkt = NCP(0x5A96, "File Migration Request", 'file')
15424 pkt.Request(22, [
15425 rec( 10, 4, VolumeNumberLong ),
15426 rec( 14, 4, DirectoryBase ),
15427 rec( 18, 4, FileMigrationState ),
15428 ])
15429 pkt.Reply(8)
15430 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15431 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600,
15432 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfb00, 0xff16])
15433 # 2222/5C, 91
15434 pkt = NCP(0x5B, "NMAS Graded Authentication", 'nmas')
15435 #Need info on this packet structure
15436 pkt.Request(7)
15437 pkt.Reply(8)
15438 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15439 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15440 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15441 # SecretStore data is dissected by packet-ncp-sss.c
15442 # 2222/5C01, 9201
15443 pkt = NCP(0x5C01, "SecretStore Services (Ping Server)", 'sss', 0)
15444 pkt.Request(8)
15445 pkt.Reply(8)
15446 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15447 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15448 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15449 # 2222/5C02, 9202
15450 pkt = NCP(0x5C02, "SecretStore Services (Fragment)", 'sss', 0)
15451 pkt.Request(8)
15452 pkt.Reply(8)
15453 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15454 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15455 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15456 # 2222/5C03, 9203
15457 pkt = NCP(0x5C03, "SecretStore Services (Write App Secrets)", 'sss', 0)
15458 pkt.Request(8)
15459 pkt.Reply(8)
15460 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15461 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15462 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15463 # 2222/5C04, 9204
15464 pkt = NCP(0x5C04, "SecretStore Services (Add Secret ID)", 'sss', 0)
15465 pkt.Request(8)
15466 pkt.Reply(8)
15467 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15468 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15469 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15470 # 2222/5C05, 9205
15471 pkt = NCP(0x5C05, "SecretStore Services (Remove Secret ID)", 'sss', 0)
15472 pkt.Request(8)
15473 pkt.Reply(8)
15474 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15475 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15476 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15477 # 2222/5C06, 9206
15478 pkt = NCP(0x5C06, "SecretStore Services (Remove SecretStore)", 'sss', 0)
15479 pkt.Request(8)
15480 pkt.Reply(8)
15481 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15482 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15483 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15484 # 2222/5C07, 9207
15485 pkt = NCP(0x5C07, "SecretStore Services (Enumerate Secret IDs)", 'sss', 0)
15486 pkt.Request(8)
15487 pkt.Reply(8)
15488 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15489 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15490 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15491 # 2222/5C08, 9208
15492 pkt = NCP(0x5C08, "SecretStore Services (Unlock Store)", 'sss', 0)
15493 pkt.Request(8)
15494 pkt.Reply(8)
15495 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15496 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15497 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15498 # 2222/5C09, 9209
15499 pkt = NCP(0x5C09, "SecretStore Services (Set Master Password)", 'sss', 0)
15500 pkt.Request(8)
15501 pkt.Reply(8)
15502 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15503 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15504 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15505 # 2222/5C0a, 9210
15506 pkt = NCP(0x5C0a, "SecretStore Services (Get Service Information)", 'sss', 0)
15507 pkt.Request(8)
15508 pkt.Reply(8)
15509 pkt.CompletionCodes([0x0000, 0x7e01, 0x8000, 0x8101, 0x8401, 0x8501,
15510 0x8701, 0x8800, 0x8d00, 0x8f00, 0x9001, 0x9600, 0xfb0b,
15511 0x9804, 0x9b03, 0x9c03, 0xa800, 0xfd00, 0xff16])
15512 # NMAS packets are dissected in packet-ncp-nmas.c
15513 # 2222/5E, 9401
15514 pkt = NCP(0x5E01, "NMAS Communications Packet (Ping)", 'nmas', 0)
15515 pkt.Request(8)
15516 pkt.Reply(8)
15517 pkt.CompletionCodes([0x0000, 0xfb09, 0xff08])
15518 # 2222/5E, 9402
15519 pkt = NCP(0x5E02, "NMAS Communications Packet (Fragment)", 'nmas', 0)
15520 pkt.Request(8)
15521 pkt.Reply(8)
15522 pkt.CompletionCodes([0x0000, 0xfb09, 0xff08])
15523 # 2222/5E, 9403
15524 pkt = NCP(0x5E03, "NMAS Communications Packet (Abort)", 'nmas', 0)
15525 pkt.Request(8)
15526 pkt.Reply(8)
15527 pkt.CompletionCodes([0x0000, 0xfb09, 0xff08])
15528 # 2222/61, 97
15529 pkt = NCP(0x61, "Get Big Packet NCP Max Packet Size", 'connection')
15530 pkt.Request(10, [
15531 rec( 7, 2, ProposedMaxSize, ENC_BIG_ENDIAN, info_str=(ProposedMaxSize, "Get Big Max Packet Size - %d", ", %d") ),
15532 rec( 9, 1, SecurityFlag ),
15533 ])
15534 pkt.Reply(13, [
15535 rec( 8, 2, AcceptedMaxSize, ENC_BIG_ENDIAN ),
15536 rec( 10, 2, EchoSocket, ENC_BIG_ENDIAN ),
15537 rec( 12, 1, SecurityFlag ),
15538 ])
15539 pkt.CompletionCodes([0x0000])
15540 # 2222/63, 99
15541 pkt = NCP(0x63, "Undocumented Packet Burst", 'pburst')
15542 pkt.Request(7)
15543 pkt.Reply(8)
15544 pkt.CompletionCodes([0x0000])
15545 # 2222/64, 100
15546 pkt = NCP(0x64, "Undocumented Packet Burst", 'pburst')
15547 pkt.Request(7)
15548 pkt.Reply(8)
15549 pkt.CompletionCodes([0x0000])
15550 # 2222/65, 101
15551 pkt = NCP(0x65, "Packet Burst Connection Request", 'pburst')
15552 pkt.Request(25, [
15553 rec( 7, 4, LocalConnectionID, ENC_BIG_ENDIAN ),
15554 rec( 11, 4, LocalMaxPacketSize, ENC_BIG_ENDIAN ),
15555 rec( 15, 2, LocalTargetSocket, ENC_BIG_ENDIAN ),
15556 rec( 17, 4, LocalMaxSendSize, ENC_BIG_ENDIAN ),
15557 rec( 21, 4, LocalMaxRecvSize, ENC_BIG_ENDIAN ),
15558 ])
15559 pkt.Reply(16, [
15560 rec( 8, 4, RemoteTargetID, ENC_BIG_ENDIAN ),
15561 rec( 12, 4, RemoteMaxPacketSize, ENC_BIG_ENDIAN ),
15562 ])
15563 pkt.CompletionCodes([0x0000])
15564 # 2222/66, 102
15565 pkt = NCP(0x66, "Undocumented Packet Burst", 'pburst')
15566 pkt.Request(7)
15567 pkt.Reply(8)
15568 pkt.CompletionCodes([0x0000])
15569 # 2222/67, 103
15570 pkt = NCP(0x67, "Undocumented Packet Burst", 'pburst')
15571 pkt.Request(7)
15572 pkt.Reply(8)
15573 pkt.CompletionCodes([0x0000])
15574 # 2222/6801, 104/01
15575 pkt = NCP(0x6801, "Ping for NDS NCP", "nds", has_length=0)
15576 pkt.Request(8)
15577 pkt.Reply(8)
15578 pkt.ReqCondSizeVariable()
15579 pkt.CompletionCodes([0x0000, 0x8100, 0xfb04, 0xfe0c])
15580 # 2222/6802, 104/02
15581 #
15582 # XXX - if FraggerHandle is not 0xffffffff, this is not the
15583 # first fragment, so we can only dissect this by reassembling;
15584 # the fields after "Fragment Handle" are bogus for non-0xffffffff
15585 # fragments, so we shouldn't dissect them. This is all handled in packet-ncp2222.inc.
15586 #
15587 pkt = NCP(0x6802, "Send NDS Fragmented Request/Reply", "nds", has_length=0)
15588 pkt.Request(8)
15589 pkt.Reply(8)
15590 pkt.ReqCondSizeVariable()
15591 pkt.CompletionCodes([0x0000, 0xac00, 0xfd01])
15592 # 2222/6803, 104/03
15593 pkt = NCP(0x6803, "Fragment Close", "nds", has_length=0)
15594 pkt.Request(12, [
15595 rec( 8, 4, FraggerHandle ),
15596 ])
15597 pkt.Reply(8)
15598 pkt.CompletionCodes([0x0000, 0xff00])
15599 # 2222/6804, 104/04
15600 pkt = NCP(0x6804, "Return Bindery Context", "nds", has_length=0)
15601 pkt.Request(8)
15602 pkt.Reply((9, 263), [
15603 rec( 8, (1,255), binderyContext ),
15604 ])
15605 pkt.CompletionCodes([0x0000, 0xfe0c, 0xff00])
15606 # 2222/6805, 104/05
15607 pkt = NCP(0x6805, "Monitor NDS Connection", "nds", has_length=0)
15608 pkt.Request(8)
15609 pkt.Reply(8)
15610 pkt.CompletionCodes([0x0000, 0x7700, 0xfb00, 0xfe0c, 0xff00])
15611 # 2222/6806, 104/06
15612 pkt = NCP(0x6806, "Return NDS Statistics", "nds", has_length=0)
15613 pkt.Request(10, [
15614 rec( 8, 2, NDSRequestFlags ),
15615 ])
15616 pkt.Reply(8)
15617 #Need to investigate how to decode Statistics Return Value
15618 pkt.CompletionCodes([0x0000, 0xfb00, 0xfe0c, 0xff00])
15619 # 2222/6807, 104/07
15620 pkt = NCP(0x6807, "Clear NDS Statistics", "nds", has_length=0)
15621 pkt.Request(8)
15622 pkt.Reply(8)
15623 pkt.CompletionCodes([0x0000, 0xfb00, 0xfe0c, 0xff00])
15624 # 2222/6808, 104/08
15625 pkt = NCP(0x6808, "Reload NDS Software", "nds", has_length=0)
15626 pkt.Request(8)
15627 pkt.Reply(12, [
15628 rec( 8, 4, NDSStatus ),
15629 ])
15630 pkt.CompletionCodes([0x0000, 0xfb00, 0xfe0c, 0xff00])
15631 # 2222/68C8, 104/200
15632 pkt = NCP(0x68C8, "Query Container Audit Status", "auditing", has_length=0)
15633 pkt.Request(12, [
15634 rec( 8, 4, ConnectionNumber ),
15635 ])
15636 pkt.Reply(40, [
15637 rec(8, 32, NWAuditStatus ),
15638 ])
15639 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15640 # 2222/68CA, 104/202
15641 pkt = NCP(0x68CA, "Add Auditor Access", "auditing", has_length=0)
15642 pkt.Request(8)
15643 pkt.Reply(8)
15644 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15645 # 2222/68CB, 104/203
15646 pkt = NCP(0x68CB, "Change Auditor Container Password", "auditing", has_length=0)
15647 pkt.Request(8)
15648 pkt.Reply(8)
15649 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15650 # 2222/68CC, 104/204
15651 pkt = NCP(0x68CC, "Check Auditor Access", "auditing", has_length=0)
15652 pkt.Request(8)
15653 pkt.Reply(8)
15654 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15655 # 2222/68CE, 104/206
15656 pkt = NCP(0x680CE, "Disable Container Auditing", "auditing", has_length=0)
15657 pkt.Request(8)
15658 pkt.Reply(8)
15659 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15660 # 2222/68CF, 104/207
15661 pkt = NCP(0x68CF, "Enable Container Auditing", "auditing", has_length=0)
15662 pkt.Request(8)
15663 pkt.Reply(8)
15664 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15665 # 2222/68D1, 104/209
15666 pkt = NCP(0x68D1, "Read Audit File Header", "auditing", has_length=0)
15667 pkt.Request(8)
15668 pkt.Reply(8)
15669 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15670 # 2222/68D3, 104/211
15671 pkt = NCP(0x68D3, "Remove Auditor Access", "auditing", has_length=0)
15672 pkt.Request(8)
15673 pkt.Reply(8)
15674 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15675 # 2222/68D4, 104/212
15676 pkt = NCP(0x68D4, "Reset Audit File", "auditing", has_length=0)
15677 pkt.Request(8)
15678 pkt.Reply(8)
15679 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15680 # 2222/68D6, 104/214
15681 pkt = NCP(0x68D6, "Write Audit File Configuration Header", "auditing", has_length=0)
15682 pkt.Request(8)
15683 pkt.Reply(8)
15684 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15685 # 2222/68D7, 104/215
15686 pkt = NCP(0x68D7, "Change Auditor Container Password2", "auditing", has_length=0)
15687 pkt.Request(8)
15688 pkt.Reply(8)
15689 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15690 # 2222/68D8, 104/216
15691 pkt = NCP(0x68D8, "Return Audit Flags", "auditing", has_length=0)
15692 pkt.Request(8)
15693 pkt.Reply(8)
15694 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15695 # 2222/68D9, 104/217
15696 pkt = NCP(0x68D9, "Close Old Audit File", "auditing", has_length=0)
15697 pkt.Request(8)
15698 pkt.Reply(8)
15699 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15700 # 2222/68DB, 104/219
15701 pkt = NCP(0x68DB, "Check Level Two Access", "auditing", has_length=0)
15702 pkt.Request(8)
15703 pkt.Reply(8)
15704 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15705 # 2222/68DC, 104/220
15706 pkt = NCP(0x68DC, "Check Object Audited", "auditing", has_length=0)
15707 pkt.Request(8)
15708 pkt.Reply(8)
15709 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15710 # 2222/68DD, 104/221
15711 pkt = NCP(0x68DD, "Change Object Audited", "auditing", has_length=0)
15712 pkt.Request(8)
15713 pkt.Reply(8)
15714 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15715 # 2222/68DE, 104/222
15716 pkt = NCP(0x68DE, "Return Old Audit File List", "auditing", has_length=0)
15717 pkt.Request(8)
15718 pkt.Reply(8)
15719 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15720 # 2222/68DF, 104/223
15721 pkt = NCP(0x68DF, "Init Audit File Reads", "auditing", has_length=0)
15722 pkt.Request(8)
15723 pkt.Reply(8)
15724 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15725 # 2222/68E0, 104/224
15726 pkt = NCP(0x68E0, "Read Auditing File", "auditing", has_length=0)
15727 pkt.Request(8)
15728 pkt.Reply(8)
15729 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15730 # 2222/68E1, 104/225
15731 pkt = NCP(0x68E1, "Delete Old Audit File", "auditing", has_length=0)
15732 pkt.Request(8)
15733 pkt.Reply(8)
15734 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15735 # 2222/68E5, 104/229
15736 pkt = NCP(0x68E5, "Set Audit Password", "auditing", has_length=0)
15737 pkt.Request(8)
15738 pkt.Reply(8)
15739 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15740 # 2222/68E7, 104/231
15741 pkt = NCP(0x68E7, "External Audit Append To File", "auditing", has_length=0)
15742 pkt.Request(8)
15743 pkt.Reply(8)
15744 pkt.CompletionCodes([0x0000, 0xa700, 0xfb00, 0xfe0c, 0xff00])
15745 # 2222/69, 105
15746 pkt = NCP(0x69, "Log File", 'sync')
15747 pkt.Request( (12, 267), [
15748 rec( 7, 1, DirHandle ),
15749 rec( 8, 1, LockFlag ),
15750 rec( 9, 2, TimeoutLimit ),
15751 rec( 11, (1, 256), FilePath, info_str=(FilePath, "Log File: %s", "/%s") ),
15752 ])
15753 pkt.Reply(8)
15754 pkt.CompletionCodes([0x0000, 0x7f00, 0x8200, 0x9600, 0xfe0d, 0xff01])
15755 # 2222/6A, 106
15756 pkt = NCP(0x6A, "Lock File Set", 'sync')
15757 pkt.Request( 9, [
15758 rec( 7, 2, TimeoutLimit ),
15759 ])
15760 pkt.Reply(8)
15761 pkt.CompletionCodes([0x0000, 0x7f00, 0x8200, 0x9600, 0xfe0d, 0xff01])
15762 # 2222/6B, 107
15763 pkt = NCP(0x6B, "Log Logical Record", 'sync')
15764 pkt.Request( (11, 266), [
15765 rec( 7, 1, LockFlag ),
15766 rec( 8, 2, TimeoutLimit ),
15767 rec( 10, (1, 256), SynchName, info_str=(SynchName, "Log Logical Record: %s", ", %s") ),
15768 ])
15769 pkt.Reply(8)
15770 pkt.CompletionCodes([0x0000, 0x7f00, 0x9600, 0xfe0d, 0xff01])
15771 # 2222/6C, 108
15772 pkt = NCP(0x6C, "Log Logical Record", 'sync')
15773 pkt.Request( 10, [
15774 rec( 7, 1, LockFlag ),
15775 rec( 8, 2, TimeoutLimit ),
15776 ])
15777 pkt.Reply(8)
15778 pkt.CompletionCodes([0x0000, 0x7f00, 0x9600, 0xfe0d, 0xff01])
15779 # 2222/6D, 109
15780 pkt = NCP(0x6D, "Log Physical Record", 'sync')
15781 pkt.Request(24, [
15782 rec( 7, 1, LockFlag ),
15783 rec( 8, 6, FileHandle ),
15784 rec( 14, 4, LockAreasStartOffset ),
15785 rec( 18, 4, LockAreaLen ),
15786 rec( 22, 2, LockTimeout ),
15787 ])
15788 pkt.Reply(8)
15789 pkt.CompletionCodes([0x0000, 0x7f00, 0x8200, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff01])
15790 # 2222/6E, 110
15791 pkt = NCP(0x6E, "Lock Physical Record Set", 'sync')
15792 pkt.Request(10, [
15793 rec( 7, 1, LockFlag ),
15794 rec( 8, 2, LockTimeout ),
15795 ])
15796 pkt.Reply(8)
15797 pkt.CompletionCodes([0x0000, 0x7f00, 0x8200, 0x8800, 0x9600, 0xfd02, 0xfe04, 0xff01])
15798 # 2222/6F00, 111/00
15799 pkt = NCP(0x6F00, "Open/Create a Semaphore", 'sync', has_length=0)
15800 pkt.Request((10,521), [
15801 rec( 8, 1, InitialSemaphoreValue ),
15802 rec( 9, (1, 512), SemaphoreName, info_str=(SemaphoreName, "Open/Create Semaphore: %s", ", %s") ),
15803 ])
15804 pkt.Reply(13, [
15805 rec( 8, 4, SemaphoreHandle ),
15806 rec( 12, 1, SemaphoreOpenCount ),
15807 ])
15808 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
15809 # 2222/6F01, 111/01
15810 pkt = NCP(0x6F01, "Examine Semaphore", 'sync', has_length=0)
15811 pkt.Request(12, [
15812 rec( 8, 4, SemaphoreHandle ),
15813 ])
15814 pkt.Reply(10, [
15815 rec( 8, 1, SemaphoreValue ),
15816 rec( 9, 1, SemaphoreOpenCount ),
15817 ])
15818 pkt.CompletionCodes([0x0000, 0x9600, 0xff01])
15819 # 2222/6F02, 111/02
15820 pkt = NCP(0x6F02, "Wait On (P) Semaphore", 'sync', has_length=0)
15821 pkt.Request(14, [
15822 rec( 8, 4, SemaphoreHandle ),
15823 rec( 12, 2, LockTimeout ),
15824 ])
15825 pkt.Reply(8)
15826 pkt.CompletionCodes([0x0000, 0x9600, 0xfe04, 0xff01])
15827 # 2222/6F03, 111/03
15828 pkt = NCP(0x6F03, "Signal (V) Semaphore", 'sync', has_length=0)
15829 pkt.Request(12, [
15830 rec( 8, 4, SemaphoreHandle ),
15831 ])
15832 pkt.Reply(8)
15833 pkt.CompletionCodes([0x0000, 0x9600, 0xfe04, 0xff01])
15834 # 2222/6F04, 111/04
15835 pkt = NCP(0x6F04, "Close Semaphore", 'sync', has_length=0)
15836 pkt.Request(12, [
15837 rec( 8, 4, SemaphoreHandle ),
15838 ])
15839 pkt.Reply(10, [
15840 rec( 8, 1, SemaphoreOpenCount ),
15841 rec( 9, 1, SemaphoreShareCount ),
15842 ])
15843 pkt.CompletionCodes([0x0000, 0x9600, 0xfe04, 0xff01])
15844 ## 2222/1125
15845 pkt = NCP(0x70, "Clear and Get Waiting Lock Completion", 'sync')
15846 pkt.Request(7)
15847 pkt.Reply(8)
15848 pkt.CompletionCodes([0x0000, 0x9b00, 0x9c03, 0xff1a])
15849 # 2222/7201, 114/01
15850 pkt = NCP(0x7201, "Timesync Get Time", 'tsync')
15851 pkt.Request(10)
15852 pkt.Reply(32,[
15853 rec( 8, 12, theTimeStruct ),
15854 rec(20, 8, eventOffset ),
15855 rec(28, 4, eventTime ),
15856 ])
15857 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
15858 # 2222/7202, 114/02
15859 pkt = NCP(0x7202, "Timesync Exchange Time", 'tsync')
15860 pkt.Request((63,112), [
15861 rec( 10, 4, protocolFlags ),
15862 rec( 14, 4, nodeFlags ),
15863 rec( 18, 8, sourceOriginateTime ),
15864 rec( 26, 8, targetReceiveTime ),
15865 rec( 34, 8, targetTransmitTime ),
15866 rec( 42, 8, sourceReturnTime ),
15867 rec( 50, 8, eventOffset ),
15868 rec( 58, 4, eventTime ),
15869 rec( 62, (1,50), ServerNameLen, info_str=(ServerNameLen, "Timesync Exchange Time: %s", ", %s") ),
15870 ])
15871 pkt.Reply((64,113), [
15872 rec( 8, 3, Reserved3 ),
15873 rec( 11, 4, protocolFlags ),
15874 rec( 15, 4, nodeFlags ),
15875 rec( 19, 8, sourceOriginateTime ),
15876 rec( 27, 8, targetReceiveTime ),
15877 rec( 35, 8, targetTransmitTime ),
15878 rec( 43, 8, sourceReturnTime ),
15879 rec( 51, 8, eventOffset ),
15880 rec( 59, 4, eventTime ),
15881 rec( 63, (1,50), ServerNameLen ),
15882 ])
15883 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
15884 # 2222/7205, 114/05
15885 pkt = NCP(0x7205, "Timesync Get Server List", 'tsync')
15886 pkt.Request(14, [
15887 rec( 10, 4, StartNumber ),
15888 ])
15889 pkt.Reply(66, [
15890 rec( 8, 4, nameType ),
15891 rec( 12, 48, ServerName ),
15892 rec( 60, 4, serverListFlags ),
15893 rec( 64, 2, startNumberFlag ),
15894 ])
15895 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
15896 # 2222/7206, 114/06
15897 pkt = NCP(0x7206, "Timesync Set Server List", 'tsync')
15898 pkt.Request(14, [
15899 rec( 10, 4, StartNumber ),
15900 ])
15901 pkt.Reply(66, [
15902 rec( 8, 4, nameType ),
15903 rec( 12, 48, ServerName ),
15904 rec( 60, 4, serverListFlags ),
15905 rec( 64, 2, startNumberFlag ),
15906 ])
15907 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
15908 # 2222/720C, 114/12
15909 pkt = NCP(0x720C, "Timesync Get Version", 'tsync')
15910 pkt.Request(10)
15911 pkt.Reply(12, [
15912 rec( 8, 4, version ),
15913 ])
15914 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
15915 # 2222/7B01, 123/01
15916 pkt = NCP(0x7B01, "Get Cache Information", 'stats')
15917 pkt.Request(10)
15918 pkt.Reply(288, [
15919 rec(8, 4, CurrentServerTime, ENC_LITTLE_ENDIAN),
15920 rec(12, 1, VConsoleVersion ),
15921 rec(13, 1, VConsoleRevision ),
15922 rec(14, 2, Reserved2 ),
15923 rec(16, 104, Counters ),
15924 rec(120, 40, ExtraCacheCntrs ),
15925 rec(160, 40, MemoryCounters ),
15926 rec(200, 48, TrendCounters ),
15927 rec(248, 40, CacheInfo ),
15928 ])
15929 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xff00])
15930 # 2222/7B02, 123/02
15931 pkt = NCP(0x7B02, "Get File Server Information", 'stats')
15932 pkt.Request(10)
15933 pkt.Reply(150, [
15934 rec(8, 4, CurrentServerTime ),
15935 rec(12, 1, VConsoleVersion ),
15936 rec(13, 1, VConsoleRevision ),
15937 rec(14, 2, Reserved2 ),
15938 rec(16, 4, NCPStaInUseCnt ),
15939 rec(20, 4, NCPPeakStaInUse ),
15940 rec(24, 4, NumOfNCPReqs ),
15941 rec(28, 4, ServerUtilization ),
15942 rec(32, 96, ServerInfo ),
15943 rec(128, 22, FileServerCounters ),
15944 ])
15945 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
15946 # 2222/7B03, 123/03
15947 pkt = NCP(0x7B03, "NetWare File System Information", 'stats')
15948 pkt.Request(11, [
15949 rec(10, 1, FileSystemID ),
15950 ])
15951 pkt.Reply(68, [
15952 rec(8, 4, CurrentServerTime ),
15953 rec(12, 1, VConsoleVersion ),
15954 rec(13, 1, VConsoleRevision ),
15955 rec(14, 2, Reserved2 ),
15956 rec(16, 52, FileSystemInfo ),
15957 ])
15958 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
15959 # 2222/7B04, 123/04
15960 pkt = NCP(0x7B04, "User Information", 'stats')
15961 pkt.Request(14, [
15962 rec(10, 4, ConnectionNumber, ENC_LITTLE_ENDIAN ),
15963 ])
15964 pkt.Reply((85, 132), [
15965 rec(8, 4, CurrentServerTime ),
15966 rec(12, 1, VConsoleVersion ),
15967 rec(13, 1, VConsoleRevision ),
15968 rec(14, 2, Reserved2 ),
15969 rec(16, 68, UserInformation ),
15970 rec(84, (1, 48), UserName ),
15971 ])
15972 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
15973 # 2222/7B05, 123/05
15974 pkt = NCP(0x7B05, "Packet Burst Information", 'stats')
15975 pkt.Request(10)
15976 pkt.Reply(216, [
15977 rec(8, 4, CurrentServerTime ),
15978 rec(12, 1, VConsoleVersion ),
15979 rec(13, 1, VConsoleRevision ),
15980 rec(14, 2, Reserved2 ),
15981 rec(16, 200, PacketBurstInformation ),
15982 ])
15983 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
15984 # 2222/7B06, 123/06
15985 pkt = NCP(0x7B06, "IPX SPX Information", 'stats')
15986 pkt.Request(10)
15987 pkt.Reply(94, [
15988 rec(8, 4, CurrentServerTime ),
15989 rec(12, 1, VConsoleVersion ),
15990 rec(13, 1, VConsoleRevision ),
15991 rec(14, 2, Reserved2 ),
15992 rec(16, 34, IPXInformation ),
15993 rec(50, 44, SPXInformation ),
15994 ])
15995 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
15996 # 2222/7B07, 123/07
15997 pkt = NCP(0x7B07, "Garbage Collection Information", 'stats')
15998 pkt.Request(10)
15999 pkt.Reply(40, [
16000 rec(8, 4, CurrentServerTime ),
16001 rec(12, 1, VConsoleVersion ),
16002 rec(13, 1, VConsoleRevision ),
16003 rec(14, 2, Reserved2 ),
16004 rec(16, 4, FailedAllocReqCnt ),
16005 rec(20, 4, NumberOfAllocs ),
16006 rec(24, 4, NoMoreMemAvlCnt ),
16007 rec(28, 4, NumOfGarbageColl ),
16008 rec(32, 4, FoundSomeMem ),
16009 rec(36, 4, NumOfChecks ),
16010 ])
16011 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16012 # 2222/7B08, 123/08
16013 pkt = NCP(0x7B08, "CPU Information", 'stats')
16014 pkt.Request(14, [
16015 rec(10, 4, CPUNumber ),
16016 ])
16017 pkt.Reply(51, [
16018 rec(8, 4, CurrentServerTime ),
16019 rec(12, 1, VConsoleVersion ),
16020 rec(13, 1, VConsoleRevision ),
16021 rec(14, 2, Reserved2 ),
16022 rec(16, 4, NumberOfCPUs ),
16023 rec(20, 31, CPUInformation ),
16024 ])
16025 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16026 # 2222/7B09, 123/09
16027 pkt = NCP(0x7B09, "Volume Switch Information", 'stats')
16028 pkt.Request(14, [
16029 rec(10, 4, StartNumber )
16030 ])
16031 pkt.Reply(28, [
16032 rec(8, 4, CurrentServerTime ),
16033 rec(12, 1, VConsoleVersion ),
16034 rec(13, 1, VConsoleRevision ),
16035 rec(14, 2, Reserved2 ),
16036 rec(16, 4, TotalLFSCounters ),
16037 rec(20, 4, CurrentLFSCounters, var="x"),
16038 rec(24, 4, LFSCounters, repeat="x"),
16039 ])
16040 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16041 # 2222/7B0A, 123/10
16042 pkt = NCP(0x7B0A, "Get NLM Loaded List", 'stats')
16043 pkt.Request(14, [
16044 rec(10, 4, StartNumber )
16045 ])
16046 pkt.Reply(28, [
16047 rec(8, 4, CurrentServerTime ),
16048 rec(12, 1, VConsoleVersion ),
16049 rec(13, 1, VConsoleRevision ),
16050 rec(14, 2, Reserved2 ),
16051 rec(16, 4, NLMcount ),
16052 rec(20, 4, NLMsInList, var="x" ),
16053 rec(24, 4, NLMNumbers, repeat="x" ),
16054 ])
16055 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16056 # 2222/7B0B, 123/11
16057 pkt = NCP(0x7B0B, "NLM Information", 'stats')
16058 pkt.Request(14, [
16059 rec(10, 4, NLMNumber ),
16060 ])
16061 pkt.Reply(NO_LENGTH_CHECK, [
16062 rec(8, 4, CurrentServerTime ),
16063 rec(12, 1, VConsoleVersion ),
16064 rec(13, 1, VConsoleRevision ),
16065 rec(14, 2, Reserved2 ),
16066 rec(16, 60, NLMInformation ),
16067 # The remainder of this dissection is manually decoded in packet-ncp2222.inc
16068 #rec(-1, (1,255), FileName ),
16069 #rec(-1, (1,255), Name ),
16070 #rec(-1, (1,255), Copyright ),
16071 ])
16072 pkt.ReqCondSizeVariable()
16073 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16074 # 2222/7B0C, 123/12
16075 pkt = NCP(0x7B0C, "Get Directory Cache Information", 'stats')
16076 pkt.Request(10)
16077 pkt.Reply(72, [
16078 rec(8, 4, CurrentServerTime ),
16079 rec(12, 1, VConsoleVersion ),
16080 rec(13, 1, VConsoleRevision ),
16081 rec(14, 2, Reserved2 ),
16082 rec(16, 56, DirCacheInfo ),
16083 ])
16084 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16085 # 2222/7B0D, 123/13
16086 pkt = NCP(0x7B0D, "Get Operating System Version Information", 'stats')
16087 pkt.Request(10)
16088 pkt.Reply(70, [
16089 rec(8, 4, CurrentServerTime ),
16090 rec(12, 1, VConsoleVersion ),
16091 rec(13, 1, VConsoleRevision ),
16092 rec(14, 2, Reserved2 ),
16093 rec(16, 1, OSMajorVersion ),
16094 rec(17, 1, OSMinorVersion ),
16095 rec(18, 1, OSRevision ),
16096 rec(19, 1, AccountVersion ),
16097 rec(20, 1, VAPVersion ),
16098 rec(21, 1, QueueingVersion ),
16099 rec(22, 1, SecurityRestrictionVersion ),
16100 rec(23, 1, InternetBridgeVersion ),
16101 rec(24, 4, MaxNumOfVol ),
16102 rec(28, 4, MaxNumOfConn ),
16103 rec(32, 4, MaxNumOfUsers ),
16104 rec(36, 4, MaxNumOfNmeSps ),
16105 rec(40, 4, MaxNumOfLANS ),
16106 rec(44, 4, MaxNumOfMedias ),
16107 rec(48, 4, MaxNumOfStacks ),
16108 rec(52, 4, MaxDirDepth ),
16109 rec(56, 4, MaxDataStreams ),
16110 rec(60, 4, MaxNumOfSpoolPr ),
16111 rec(64, 4, ServerSerialNumber ),
16112 rec(68, 2, ServerAppNumber ),
16113 ])
16114 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16115 # 2222/7B0E, 123/14
16116 pkt = NCP(0x7B0E, "Get Active Connection List by Type", 'stats')
16117 pkt.Request(15, [
16118 rec(10, 4, StartConnNumber ),
16119 rec(14, 1, ConnectionType ),
16120 ])
16121 pkt.Reply(528, [
16122 rec(8, 4, CurrentServerTime ),
16123 rec(12, 1, VConsoleVersion ),
16124 rec(13, 1, VConsoleRevision ),
16125 rec(14, 2, Reserved2 ),
16126 rec(16, 512, ActiveConnBitList ),
16127 ])
16128 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfd01, 0xff00])
16129 # 2222/7B0F, 123/15
16130 pkt = NCP(0x7B0F, "Get NLM Resource Tag List", 'stats')
16131 pkt.Request(18, [
16132 rec(10, 4, NLMNumber ),
16133 rec(14, 4, NLMStartNumber ),
16134 ])
16135 pkt.Reply(37, [
16136 rec(8, 4, CurrentServerTime ),
16137 rec(12, 1, VConsoleVersion ),
16138 rec(13, 1, VConsoleRevision ),
16139 rec(14, 2, Reserved2 ),
16140 rec(16, 4, TtlNumOfRTags ),
16141 rec(20, 4, CurNumOfRTags ),
16142 rec(24, 13, RTagStructure ),
16143 ])
16144 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16145 # 2222/7B10, 123/16
16146 pkt = NCP(0x7B10, "Enumerate Connection Information from Connection List", 'stats')
16147 pkt.Request(22, [
16148 rec(10, 1, EnumInfoMask),
16149 rec(11, 3, Reserved3),
16150 rec(14, 4, itemsInList, var="x"),
16151 rec(18, 4, connList, repeat="x"),
16152 ])
16153 pkt.Reply(NO_LENGTH_CHECK, [
16154 rec(8, 4, CurrentServerTime ),
16155 rec(12, 1, VConsoleVersion ),
16156 rec(13, 1, VConsoleRevision ),
16157 rec(14, 2, Reserved2 ),
16158 rec(16, 4, ItemsInPacket ),
16159 srec(netAddr, req_cond="ncp.enum_info_transport==TRUE"),
16160 srec(timeInfo, req_cond="ncp.enum_info_time==TRUE"),
16161 srec(nameInfo, req_cond="ncp.enum_info_name==TRUE"),
16162 srec(lockInfo, req_cond="ncp.enum_info_lock==TRUE"),
16163 srec(printInfo, req_cond="ncp.enum_info_print==TRUE"),
16164 srec(statsInfo, req_cond="ncp.enum_info_stats==TRUE"),
16165 srec(acctngInfo, req_cond="ncp.enum_info_account==TRUE"),
16166 srec(authInfo, req_cond="ncp.enum_info_auth==TRUE"),
16167 ])
16168 pkt.ReqCondSizeVariable()
16169 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16170 # 2222/7B11, 123/17
16171 pkt = NCP(0x7B11, "Enumerate NCP Service Network Addresses", 'stats')
16172 pkt.Request(14, [
16173 rec(10, 4, SearchNumber ),
16174 ])
16175 pkt.Reply(36, [
16176 rec(8, 4, CurrentServerTime ),
16177 rec(12, 1, VConsoleVersion ),
16178 rec(13, 1, VConsoleRevision ),
16179 rec(14, 2, ServerInfoFlags ),
16180 rec(16, 16, GUID ),
16181 rec(32, 4, NextSearchNum ),
16182 # The following two items are dissected in packet-ncp2222.inc
16183 #rec(36, 4, ItemsInPacket, var="x"),
16184 #rec(40, 20, NCPNetworkAddress, repeat="x" ),
16185 ])
16186 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb01, 0xff00])
16187 # 2222/7B14, 123/20
16188 pkt = NCP(0x7B14, "Active LAN Board List", 'stats')
16189 pkt.Request(14, [
16190 rec(10, 4, StartNumber ),
16191 ])
16192 pkt.Reply(28, [
16193 rec(8, 4, CurrentServerTime ),
16194 rec(12, 1, VConsoleVersion ),
16195 rec(13, 1, VConsoleRevision ),
16196 rec(14, 2, Reserved2 ),
16197 rec(16, 4, MaxNumOfLANS ),
16198 rec(20, 4, ItemsInPacket, var="x"),
16199 rec(24, 4, BoardNumbers, repeat="x"),
16200 ])
16201 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16202 # 2222/7B15, 123/21
16203 pkt = NCP(0x7B15, "LAN Configuration Information", 'stats')
16204 pkt.Request(14, [
16205 rec(10, 4, BoardNumber ),
16206 ])
16207 pkt.Reply(152, [
16208 rec(8, 4, CurrentServerTime ),
16209 rec(12, 1, VConsoleVersion ),
16210 rec(13, 1, VConsoleRevision ),
16211 rec(14, 2, Reserved2 ),
16212 rec(16,136, LANConfigInfo ),
16213 ])
16214 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16215 # 2222/7B16, 123/22
16216 pkt = NCP(0x7B16, "LAN Common Counters Information", 'stats')
16217 pkt.Request(18, [
16218 rec(10, 4, BoardNumber ),
16219 rec(14, 4, BlockNumber ),
16220 ])
16221 pkt.Reply(86, [
16222 rec(8, 4, CurrentServerTime ),
16223 rec(12, 1, VConsoleVersion ),
16224 rec(13, 1, VConsoleRevision ),
16225 rec(14, 1, StatMajorVersion ),
16226 rec(15, 1, StatMinorVersion ),
16227 rec(16, 4, TotalCommonCnts ),
16228 rec(20, 4, TotalCntBlocks ),
16229 rec(24, 4, CustomCounters ),
16230 rec(28, 4, NextCntBlock ),
16231 rec(32, 54, CommonLanStruc ),
16232 ])
16233 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16234 # 2222/7B17, 123/23
16235 pkt = NCP(0x7B17, "LAN Custom Counters Information", 'stats')
16236 pkt.Request(18, [
16237 rec(10, 4, BoardNumber ),
16238 rec(14, 4, StartNumber ),
16239 ])
16240 pkt.Reply(25, [
16241 rec(8, 4, CurrentServerTime ),
16242 rec(12, 1, VConsoleVersion ),
16243 rec(13, 1, VConsoleRevision ),
16244 rec(14, 2, Reserved2 ),
16245 rec(16, 4, NumOfCCinPkt, var="x"),
16246 rec(20, 5, CustomCntsInfo, repeat="x"),
16247 ])
16248 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16249 # 2222/7B18, 123/24
16250 pkt = NCP(0x7B18, "LAN Name Information", 'stats')
16251 pkt.Request(14, [
16252 rec(10, 4, BoardNumber ),
16253 ])
16254 pkt.Reply(NO_LENGTH_CHECK, [
16255 rec(8, 4, CurrentServerTime ),
16256 rec(12, 1, VConsoleVersion ),
16257 rec(13, 1, VConsoleRevision ),
16258 rec(14, 2, Reserved2 ),
16259 rec(16, PROTO_LENGTH_UNKNOWN, DriverBoardName ),
16260 rec(-1, PROTO_LENGTH_UNKNOWN, DriverShortName ),
16261 rec(-1, PROTO_LENGTH_UNKNOWN, DriverLogicalName ),
16262 ])
16263 pkt.ReqCondSizeVariable()
16264 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16265 # 2222/7B19, 123/25
16266 pkt = NCP(0x7B19, "LSL Information", 'stats')
16267 pkt.Request(10)
16268 pkt.Reply(90, [
16269 rec(8, 4, CurrentServerTime ),
16270 rec(12, 1, VConsoleVersion ),
16271 rec(13, 1, VConsoleRevision ),
16272 rec(14, 2, Reserved2 ),
16273 rec(16, 74, LSLInformation ),
16274 ])
16275 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16276 # 2222/7B1A, 123/26
16277 pkt = NCP(0x7B1A, "LSL Logical Board Statistics", 'stats')
16278 pkt.Request(14, [
16279 rec(10, 4, BoardNumber ),
16280 ])
16281 pkt.Reply(28, [
16282 rec(8, 4, CurrentServerTime ),
16283 rec(12, 1, VConsoleVersion ),
16284 rec(13, 1, VConsoleRevision ),
16285 rec(14, 2, Reserved2 ),
16286 rec(16, 4, LogTtlTxPkts ),
16287 rec(20, 4, LogTtlRxPkts ),
16288 rec(24, 4, UnclaimedPkts ),
16289 ])
16290 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16291 # 2222/7B1B, 123/27
16292 pkt = NCP(0x7B1B, "MLID Board Information", 'stats')
16293 pkt.Request(14, [
16294 rec(10, 4, BoardNumber ),
16295 ])
16296 pkt.Reply(44, [
16297 rec(8, 4, CurrentServerTime ),
16298 rec(12, 1, VConsoleVersion ),
16299 rec(13, 1, VConsoleRevision ),
16300 rec(14, 1, Reserved ),
16301 rec(15, 1, NumberOfProtocols ),
16302 rec(16, 28, MLIDBoardInfo ),
16303 ])
16304 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16305 # 2222/7B1E, 123/30
16306 pkt = NCP(0x7B1E, "Get Media Manager Object Information", 'stats')
16307 pkt.Request(14, [
16308 rec(10, 4, ObjectNumber ),
16309 ])
16310 pkt.Reply(212, [
16311 rec(8, 4, CurrentServerTime ),
16312 rec(12, 1, VConsoleVersion ),
16313 rec(13, 1, VConsoleRevision ),
16314 rec(14, 2, Reserved2 ),
16315 rec(16, 196, GenericInfoDef ),
16316 ])
16317 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16318 # 2222/7B1F, 123/31
16319 pkt = NCP(0x7B1F, "Get Media Manager Objects List", 'stats')
16320 pkt.Request(15, [
16321 rec(10, 4, StartNumber ),
16322 rec(14, 1, MediaObjectType ),
16323 ])
16324 pkt.Reply(28, [
16325 rec(8, 4, CurrentServerTime ),
16326 rec(12, 1, VConsoleVersion ),
16327 rec(13, 1, VConsoleRevision ),
16328 rec(14, 2, Reserved2 ),
16329 rec(16, 4, nextStartingNumber ),
16330 rec(20, 4, ObjectCount, var="x"),
16331 rec(24, 4, ObjectID, repeat="x"),
16332 ])
16333 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16334 # 2222/7B20, 123/32
16335 pkt = NCP(0x7B20, "Get Media Manager Object Childrens List", 'stats')
16336 pkt.Request(22, [
16337 rec(10, 4, StartNumber ),
16338 rec(14, 1, MediaObjectType ),
16339 rec(15, 3, Reserved3 ),
16340 rec(18, 4, ParentObjectNumber ),
16341 ])
16342 pkt.Reply(28, [
16343 rec(8, 4, CurrentServerTime ),
16344 rec(12, 1, VConsoleVersion ),
16345 rec(13, 1, VConsoleRevision ),
16346 rec(14, 2, Reserved2 ),
16347 rec(16, 4, nextStartingNumber ),
16348 rec(20, 4, ObjectCount, var="x" ),
16349 rec(24, 4, ObjectID, repeat="x" ),
16350 ])
16351 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16352 # 2222/7B21, 123/33
16353 pkt = NCP(0x7B21, "Get Volume Segment List", 'stats')
16354 pkt.Request(14, [
16355 rec(10, 4, VolumeNumberLong ),
16356 ])
16357 pkt.Reply(32, [
16358 rec(8, 4, CurrentServerTime ),
16359 rec(12, 1, VConsoleVersion ),
16360 rec(13, 1, VConsoleRevision ),
16361 rec(14, 2, Reserved2 ),
16362 rec(16, 4, NumOfSegments, var="x" ),
16363 rec(20, 12, Segments, repeat="x" ),
16364 ])
16365 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0x9801, 0xfb06, 0xff00])
16366 # 2222/7B22, 123/34
16367 pkt = NCP(0x7B22, "Get Volume Information by Level", 'stats')
16368 pkt.Request(15, [
16369 rec(10, 4, VolumeNumberLong ),
16370 rec(14, 1, InfoLevelNumber ),
16371 ])
16372 pkt.Reply(NO_LENGTH_CHECK, [
16373 rec(8, 4, CurrentServerTime ),
16374 rec(12, 1, VConsoleVersion ),
16375 rec(13, 1, VConsoleRevision ),
16376 rec(14, 2, Reserved2 ),
16377 rec(16, 1, InfoLevelNumber ),
16378 rec(17, 3, Reserved3 ),
16379 srec(VolInfoStructure, req_cond="ncp.info_level_num==0x01"),
16380 srec(VolInfo2Struct, req_cond="ncp.info_level_num==0x02"),
16381 ])
16382 pkt.ReqCondSizeVariable()
16383 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16384 # 2222/7B23, 123/35
16385 pkt = NCP(0x7B23, "Get Volume Information by Level 64 Bit Aware", 'stats')
16386 pkt.Request(22, [
16387 rec(10, 4, InpInfotype ),
16388 rec(14, 4, Inpld ),
16389 rec(18, 4, VolInfoReturnInfoMask),
16390 ])
16391 pkt.Reply(NO_LENGTH_CHECK, [
16392 rec(8, 4, CurrentServerTime ),
16393 rec(12, 1, VConsoleVersion ),
16394 rec(13, 1, VConsoleRevision ),
16395 rec(14, 2, Reserved2 ),
16396 rec(16, 4, VolInfoReturnInfoMask),
16397 srec(VolInfoStructure64, req_cond="ncp.vinfo_info64==0x00000001"),
16398 rec( -1, (1,255), VolumeNameLen, req_cond="ncp.vinfo_volname==0x00000002" ),
16399 ])
16400 pkt.ReqCondSizeVariable()
16401 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16402 # 2222/7B28, 123/40
16403 pkt = NCP(0x7B28, "Active Protocol Stacks", 'stats')
16404 pkt.Request(14, [
16405 rec(10, 4, StartNumber ),
16406 ])
16407 pkt.Reply(48, [
16408 rec(8, 4, CurrentServerTime ),
16409 rec(12, 1, VConsoleVersion ),
16410 rec(13, 1, VConsoleRevision ),
16411 rec(14, 2, Reserved2 ),
16412 rec(16, 4, MaxNumOfLANS ),
16413 rec(20, 4, StackCount, var="x" ),
16414 rec(24, 4, nextStartingNumber ),
16415 rec(28, 20, StackInfo, repeat="x" ),
16416 ])
16417 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16418 # 2222/7B29, 123/41
16419 pkt = NCP(0x7B29, "Get Protocol Stack Configuration Information", 'stats')
16420 pkt.Request(14, [
16421 rec(10, 4, StackNumber ),
16422 ])
16423 pkt.Reply((37,164), [
16424 rec(8, 4, CurrentServerTime ),
16425 rec(12, 1, VConsoleVersion ),
16426 rec(13, 1, VConsoleRevision ),
16427 rec(14, 2, Reserved2 ),
16428 rec(16, 1, ConfigMajorVN ),
16429 rec(17, 1, ConfigMinorVN ),
16430 rec(18, 1, StackMajorVN ),
16431 rec(19, 1, StackMinorVN ),
16432 rec(20, 16, ShortStkName ),
16433 rec(36, (1,128), StackFullNameStr ),
16434 ])
16435 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16436 # 2222/7B2A, 123/42
16437 pkt = NCP(0x7B2A, "Get Protocol Stack Statistics Information", 'stats')
16438 pkt.Request(14, [
16439 rec(10, 4, StackNumber ),
16440 ])
16441 pkt.Reply(38, [
16442 rec(8, 4, CurrentServerTime ),
16443 rec(12, 1, VConsoleVersion ),
16444 rec(13, 1, VConsoleRevision ),
16445 rec(14, 2, Reserved2 ),
16446 rec(16, 1, StatMajorVersion ),
16447 rec(17, 1, StatMinorVersion ),
16448 rec(18, 2, ComCnts ),
16449 rec(20, 4, CounterMask ),
16450 rec(24, 4, TotalTxPkts ),
16451 rec(28, 4, TotalRxPkts ),
16452 rec(32, 4, IgnoredRxPkts ),
16453 rec(36, 2, CustomCnts ),
16454 ])
16455 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16456 # 2222/7B2B, 123/43
16457 pkt = NCP(0x7B2B, "Get Protocol Stack Custom Information", 'stats')
16458 pkt.Request(18, [
16459 rec(10, 4, StackNumber ),
16460 rec(14, 4, StartNumber ),
16461 ])
16462 pkt.Reply(25, [
16463 rec(8, 4, CurrentServerTime ),
16464 rec(12, 1, VConsoleVersion ),
16465 rec(13, 1, VConsoleRevision ),
16466 rec(14, 2, Reserved2 ),
16467 rec(16, 4, CustomCount, var="x" ),
16468 rec(20, 5, CustomCntsInfo, repeat="x" ),
16469 ])
16470 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16471 # 2222/7B2C, 123/44
16472 pkt = NCP(0x7B2C, "Get Protocol Stack Numbers by Media Number", 'stats')
16473 pkt.Request(14, [
16474 rec(10, 4, MediaNumber ),
16475 ])
16476 pkt.Reply(24, [
16477 rec(8, 4, CurrentServerTime ),
16478 rec(12, 1, VConsoleVersion ),
16479 rec(13, 1, VConsoleRevision ),
16480 rec(14, 2, Reserved2 ),
16481 rec(16, 4, StackCount, var="x" ),
16482 rec(20, 4, StackNumber, repeat="x" ),
16483 ])
16484 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16485 # 2222/7B2D, 123/45
16486 pkt = NCP(0x7B2D, "Get Protocol Stack Numbers by LAN Board Number", 'stats')
16487 pkt.Request(14, [
16488 rec(10, 4, BoardNumber ),
16489 ])
16490 pkt.Reply(24, [
16491 rec(8, 4, CurrentServerTime ),
16492 rec(12, 1, VConsoleVersion ),
16493 rec(13, 1, VConsoleRevision ),
16494 rec(14, 2, Reserved2 ),
16495 rec(16, 4, StackCount, var="x" ),
16496 rec(20, 4, StackNumber, repeat="x" ),
16497 ])
16498 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16499 # 2222/7B2E, 123/46
16500 pkt = NCP(0x7B2E, "Get Media Name by Media Number", 'stats')
16501 pkt.Request(14, [
16502 rec(10, 4, MediaNumber ),
16503 ])
16504 pkt.Reply((17,144), [
16505 rec(8, 4, CurrentServerTime ),
16506 rec(12, 1, VConsoleVersion ),
16507 rec(13, 1, VConsoleRevision ),
16508 rec(14, 2, Reserved2 ),
16509 rec(16, (1,128), MediaName ),
16510 ])
16511 pkt.CompletionCodes([0x0000, 0x7900, 0x7e01, 0xfb06, 0xff00])
16512 # 2222/7B2F, 123/47
16513 pkt = NCP(0x7B2F, "Get Loaded Media Number", 'stats')
16514 pkt.Request(10)
16515 pkt.Reply(28, [
16516 rec(8, 4, CurrentServerTime ),
16517 rec(12, 1, VConsoleVersion ),
16518 rec(13, 1, VConsoleRevision ),
16519 rec(14, 2, Reserved2 ),
16520 rec(16, 4, MaxNumOfMedias ),
16521 rec(20, 4, MediaListCount, var="x" ),
16522 rec(24, 4, MediaList, repeat="x" ),
16523 ])
16524 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16525 # 2222/7B32, 123/50
16526 pkt = NCP(0x7B32, "Get General Router and SAP Information", 'stats')
16527 pkt.Request(10)
16528 pkt.Reply(37, [
16529 rec(8, 4, CurrentServerTime ),
16530 rec(12, 1, VConsoleVersion ),
16531 rec(13, 1, VConsoleRevision ),
16532 rec(14, 2, Reserved2 ),
16533 rec(16, 2, RIPSocketNumber ),
16534 rec(18, 2, Reserved2 ),
16535 rec(20, 1, RouterDownFlag ),
16536 rec(21, 3, Reserved3 ),
16537 rec(24, 1, TrackOnFlag ),
16538 rec(25, 3, Reserved3 ),
16539 rec(28, 1, ExtRouterActiveFlag ),
16540 rec(29, 3, Reserved3 ),
16541 rec(32, 2, SAPSocketNumber ),
16542 rec(34, 2, Reserved2 ),
16543 rec(36, 1, RpyNearestSrvFlag ),
16544 ])
16545 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16546 # 2222/7B33, 123/51
16547 pkt = NCP(0x7B33, "Get Network Router Information", 'stats')
16548 pkt.Request(14, [
16549 rec(10, 4, NetworkNumber ),
16550 ])
16551 pkt.Reply(26, [
16552 rec(8, 4, CurrentServerTime ),
16553 rec(12, 1, VConsoleVersion ),
16554 rec(13, 1, VConsoleRevision ),
16555 rec(14, 2, Reserved2 ),
16556 rec(16, 10, KnownRoutes ),
16557 ])
16558 pkt.CompletionCodes([0x0000, 0x0108, 0x7e01, 0xfb06, 0xff00])
16559 # 2222/7B34, 123/52
16560 pkt = NCP(0x7B34, "Get Network Routers Information", 'stats')
16561 pkt.Request(18, [
16562 rec(10, 4, NetworkNumber),
16563 rec(14, 4, StartNumber ),
16564 ])
16565 pkt.Reply(34, [
16566 rec(8, 4, CurrentServerTime ),
16567 rec(12, 1, VConsoleVersion ),
16568 rec(13, 1, VConsoleRevision ),
16569 rec(14, 2, Reserved2 ),
16570 rec(16, 4, NumOfEntries, var="x" ),
16571 rec(20, 14, RoutersInfo, repeat="x" ),
16572 ])
16573 pkt.CompletionCodes([0x0000, 0x0108, 0x7e01, 0xfb06, 0xff00])
16574 # 2222/7B35, 123/53
16575 pkt = NCP(0x7B35, "Get Known Networks Information", 'stats')
16576 pkt.Request(14, [
16577 rec(10, 4, StartNumber ),
16578 ])
16579 pkt.Reply(30, [
16580 rec(8, 4, CurrentServerTime ),
16581 rec(12, 1, VConsoleVersion ),
16582 rec(13, 1, VConsoleRevision ),
16583 rec(14, 2, Reserved2 ),
16584 rec(16, 4, NumOfEntries, var="x" ),
16585 rec(20, 10, KnownRoutes, repeat="x" ),
16586 ])
16587 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16588 # 2222/7B36, 123/54
16589 pkt = NCP(0x7B36, "Get Server Information", 'stats')
16590 pkt.Request((15,64), [
16591 rec(10, 2, ServerType ),
16592 rec(12, 2, Reserved2 ),
16593 rec(14, (1,50), ServerNameLen, info_str=(ServerNameLen, "Get Server Information: %s", ", %s") ),
16594 ])
16595 pkt.Reply(30, [
16596 rec(8, 4, CurrentServerTime ),
16597 rec(12, 1, VConsoleVersion ),
16598 rec(13, 1, VConsoleRevision ),
16599 rec(14, 2, Reserved2 ),
16600 rec(16, 12, ServerAddress ),
16601 rec(28, 2, HopsToNet ),
16602 ])
16603 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16604 # 2222/7B37, 123/55
16605 pkt = NCP(0x7B37, "Get Server Sources Information", 'stats')
16606 pkt.Request((19,68), [
16607 rec(10, 4, StartNumber ),
16608 rec(14, 2, ServerType ),
16609 rec(16, 2, Reserved2 ),
16610 rec(18, (1,50), ServerNameLen, info_str=(ServerNameLen, "Get Server Sources Info: %s", ", %s") ),
16611 ])
16612 pkt.Reply(32, [
16613 rec(8, 4, CurrentServerTime ),
16614 rec(12, 1, VConsoleVersion ),
16615 rec(13, 1, VConsoleRevision ),
16616 rec(14, 2, Reserved2 ),
16617 rec(16, 4, NumOfEntries, var="x" ),
16618 rec(20, 12, ServersSrcInfo, repeat="x" ),
16619 ])
16620 pkt.CompletionCodes([0x0000, 0x0108, 0x7e01, 0xfb06, 0xff00])
16621 # 2222/7B38, 123/56
16622 pkt = NCP(0x7B38, "Get Known Servers Information", 'stats')
16623 pkt.Request(16, [
16624 rec(10, 4, StartNumber ),
16625 rec(14, 2, ServerType ),
16626 ])
16627 pkt.Reply(35, [
16628 rec(8, 4, CurrentServerTime ),
16629 rec(12, 1, VConsoleVersion ),
16630 rec(13, 1, VConsoleRevision ),
16631 rec(14, 2, Reserved2 ),
16632 rec(16, 4, NumOfEntries, var="x" ),
16633 rec(20, 15, KnownServStruc, repeat="x" ),
16634 ])
16635 pkt.CompletionCodes([0x0000, 0x0108, 0x7e01, 0xfb06, 0xff00])
16636 # 2222/7B3C, 123/60
16637 pkt = NCP(0x7B3C, "Get Server Set Commands Information", 'stats')
16638 pkt.Request(14, [
16639 rec(10, 4, StartNumber ),
16640 ])
16641 pkt.Reply(NO_LENGTH_CHECK, [
16642 rec(8, 4, CurrentServerTime ),
16643 rec(12, 1, VConsoleVersion ),
16644 rec(13, 1, VConsoleRevision ),
16645 rec(14, 2, Reserved2 ),
16646 rec(16, 4, TtlNumOfSetCmds ),
16647 rec(20, 4, nextStartingNumber ),
16648 rec(24, 1, SetCmdType ),
16649 rec(25, 3, Reserved3 ),
16650 rec(28, 1, SetCmdCategory ),
16651 rec(29, 3, Reserved3 ),
16652 rec(32, 1, SetCmdFlags ),
16653 rec(33, 3, Reserved3 ),
16654 rec(36, PROTO_LENGTH_UNKNOWN, SetCmdName ),
16655 rec(-1, 4, SetCmdValueNum ),
16656 ])
16657 pkt.ReqCondSizeVariable()
16658 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16659 # 2222/7B3D, 123/61
16660 pkt = NCP(0x7B3D, "Get Server Set Categories", 'stats')
16661 pkt.Request(14, [
16662 rec(10, 4, StartNumber ),
16663 ])
16664 pkt.Reply(NO_LENGTH_CHECK, [
16665 rec(8, 4, CurrentServerTime ),
16666 rec(12, 1, VConsoleVersion ),
16667 rec(13, 1, VConsoleRevision ),
16668 rec(14, 2, Reserved2 ),
16669 rec(16, 4, NumberOfSetCategories ),
16670 rec(20, 4, nextStartingNumber ),
16671 rec(24, PROTO_LENGTH_UNKNOWN, CategoryName ),
16672 ])
16673 pkt.CompletionCodes([0x0000, 0x7e01, 0xfb06, 0xff00])
16674 # 2222/7B3E, 123/62
16675 pkt = NCP(0x7B3E, "Get Server Set Commands Information By Name", 'stats')
16676 pkt.Request(NO_LENGTH_CHECK, [
16677 rec(10, PROTO_LENGTH_UNKNOWN, SetParmName, info_str=(SetParmName, "Get Server Set Command Info for: %s", ", %s") ),
16678 ])
16679 pkt.Reply(NO_LENGTH_CHECK, [
16680 rec(8, 4, CurrentServerTime ),
16681 rec(12, 1, VConsoleVersion ),
16682 rec(13, 1, VConsoleRevision ),
16683 rec(14, 2, Reserved2 ),
16684 rec(16, 4, TtlNumOfSetCmds ),
16685 rec(20, 4, nextStartingNumber ),
16686 rec(24, 1, SetCmdType ),
16687 rec(25, 3, Reserved3 ),
16688 rec(28, 1, SetCmdCategory ),
16689 rec(29, 3, Reserved3 ),
16690 rec(32, 1, SetCmdFlags ),
16691 rec(33, 3, Reserved3 ),
16692 rec(36, PROTO_LENGTH_UNKNOWN, SetCmdName ),
16693 # The value of the set command is decoded in packet-ncp2222.inc
16694 ])
16695 pkt.ReqCondSizeVariable()
16696 pkt.CompletionCodes([0x0000, 0x7e01, 0xc600, 0xfb06, 0xff22])
16697 # 2222/7B46, 123/70
16698 pkt = NCP(0x7B46, "Get Current Compressing File", 'stats')
16699 pkt.Request(14, [
16700 rec(10, 4, VolumeNumberLong ),
16701 ])
16702 pkt.Reply(56, [
16703 rec(8, 4, ParentID ),
16704 rec(12, 4, DirectoryEntryNumber ),
16705 rec(16, 4, compressionStage ),
16706 rec(20, 4, ttlIntermediateBlks ),
16707 rec(24, 4, ttlCompBlks ),
16708 rec(28, 4, curIntermediateBlks ),
16709 rec(32, 4, curCompBlks ),
16710 rec(36, 4, curInitialBlks ),
16711 rec(40, 4, fileFlags ),
16712 rec(44, 4, projectedCompSize ),
16713 rec(48, 4, originalSize ),
16714 rec(52, 4, compressVolume ),
16715 ])
16716 pkt.CompletionCodes([0x0000, 0x7e00, 0x7901, 0x9801, 0xfb06, 0xff00])
16717 # 2222/7B47, 123/71
16718 pkt = NCP(0x7B47, "Get Current DeCompressing File Info List", 'stats')
16719 pkt.Request(14, [
16720 rec(10, 4, VolumeNumberLong ),
16721 ])
16722 pkt.Reply(24, [
16723 #rec(8, 4, FileListCount ),
16724 rec(8, 16, FileInfoStruct ),
16725 ])
16726 pkt.CompletionCodes([0x0000, 0x7e00, 0x9801, 0xfb06, 0xff00])
16727 # 2222/7B48, 123/72
16728 pkt = NCP(0x7B48, "Get Compression and Decompression Time and Counts", 'stats')
16729 pkt.Request(14, [
16730 rec(10, 4, VolumeNumberLong ),
16731 ])
16732 pkt.Reply(64, [
16733 rec(8, 56, CompDeCompStat ),
16734 ])
16735 pkt.CompletionCodes([0x0000, 0x7e00, 0x9801, 0xfb06, 0xff00])
16736 # 2222/7BF9, 123/249
16737 pkt = NCP(0x7BF9, "Set Alert Notification", 'stats')
16738 pkt.Request(10)
16739 pkt.Reply(8)
16740 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16741 # 2222/7BFB, 123/251
16742 pkt = NCP(0x7BFB, "Get Item Configuration Information", 'stats')
16743 pkt.Request(10)
16744 pkt.Reply(8)
16745 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16746 # 2222/7BFC, 123/252
16747 pkt = NCP(0x7BFC, "Get Subject Item ID List", 'stats')
16748 pkt.Request(10)
16749 pkt.Reply(8)
16750 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16751 # 2222/7BFD, 123/253
16752 pkt = NCP(0x7BFD, "Get Subject Item List Count", 'stats')
16753 pkt.Request(10)
16754 pkt.Reply(8)
16755 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16756 # 2222/7BFE, 123/254
16757 pkt = NCP(0x7BFE, "Get Subject ID List", 'stats')
16758 pkt.Request(10)
16759 pkt.Reply(8)
16760 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16761 # 2222/7BFF, 123/255
16762 pkt = NCP(0x7BFF, "Get Number of NetMan Subjects", 'stats')
16763 pkt.Request(10)
16764 pkt.Reply(8)
16765 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb06, 0xff00])
16766 # 2222/8301, 131/01
16767 pkt = NCP(0x8301, "RPC Load an NLM", 'remote')
16768 pkt.Request(NO_LENGTH_CHECK, [
16769 rec(10, 4, NLMLoadOptions ),
16770 rec(14, 16, Reserved16 ),
16771 rec(30, PROTO_LENGTH_UNKNOWN, PathAndName, info_str=(PathAndName, "RPC Load NLM: %s", ", %s") ),
16772 ])
16773 pkt.Reply(12, [
16774 rec(8, 4, RPCccode ),
16775 ])
16776 pkt.CompletionCodes([0x0000, 0x7c00, 0x7e00, 0xfb07, 0xff00])
16777 # 2222/8302, 131/02
16778 pkt = NCP(0x8302, "RPC Unload an NLM", 'remote')
16779 pkt.Request(NO_LENGTH_CHECK, [
16780 rec(10, 20, Reserved20 ),
16781 rec(30, PROTO_LENGTH_UNKNOWN, NLMName, info_str=(NLMName, "RPC Unload NLM: %s", ", %s") ),
16782 ])
16783 pkt.Reply(12, [
16784 rec(8, 4, RPCccode ),
16785 ])
16786 pkt.CompletionCodes([0x0000, 0x7c00, 0x7e00, 0xfb07, 0xff00])
16787 # 2222/8303, 131/03
16788 pkt = NCP(0x8303, "RPC Mount Volume", 'remote')
16789 pkt.Request(NO_LENGTH_CHECK, [
16790 rec(10, 20, Reserved20 ),
16791 rec(30, PROTO_LENGTH_UNKNOWN, VolumeNameStringz, info_str=(VolumeNameStringz, "RPC Mount Volume: %s", ", %s") ),
16792 ])
16793 pkt.Reply(32, [
16794 rec(8, 4, RPCccode),
16795 rec(12, 16, Reserved16 ),
16796 rec(28, 4, VolumeNumberLong ),
16797 ])
16798 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb07, 0xff00])
16799 # 2222/8304, 131/04
16800 pkt = NCP(0x8304, "RPC Dismount Volume", 'remote')
16801 pkt.Request(NO_LENGTH_CHECK, [
16802 rec(10, 20, Reserved20 ),
16803 rec(30, PROTO_LENGTH_UNKNOWN, VolumeNameStringz, info_str=(VolumeNameStringz, "RPC Dismount Volume: %s", ", %s") ),
16804 ])
16805 pkt.Reply(12, [
16806 rec(8, 4, RPCccode ),
16807 ])
16808 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb07, 0xff00])
16809 # 2222/8305, 131/05
16810 pkt = NCP(0x8305, "RPC Add Name Space To Volume", 'remote')
16811 pkt.Request(NO_LENGTH_CHECK, [
16812 rec(10, 20, Reserved20 ),
16813 rec(30, PROTO_LENGTH_UNKNOWN, AddNameSpaceAndVol, info_str=(AddNameSpaceAndVol, "RPC Add Name Space to Volume: %s", ", %s") ),
16814 ])
16815 pkt.Reply(12, [
16816 rec(8, 4, RPCccode ),
16817 ])
16818 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb07, 0xff00])
16819 # 2222/8306, 131/06
16820 pkt = NCP(0x8306, "RPC Set Command Value", 'remote')
16821 pkt.Request(NO_LENGTH_CHECK, [
16822 rec(10, 1, SetCmdType ),
16823 rec(11, 3, Reserved3 ),
16824 rec(14, 4, SetCmdValueNum ),
16825 rec(18, 12, Reserved12 ),
16826 rec(30, PROTO_LENGTH_UNKNOWN, SetCmdName, info_str=(SetCmdName, "RPC Set Command Value: %s", ", %s") ),
16827 #
16828 # XXX - optional string, if SetCmdType is 0
16829 #
16830 ])
16831 pkt.Reply(12, [
16832 rec(8, 4, RPCccode ),
16833 ])
16834 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb07, 0xff00])
16835 # 2222/8307, 131/07
16836 pkt = NCP(0x8307, "RPC Execute NCF File", 'remote')
16837 pkt.Request(NO_LENGTH_CHECK, [
16838 rec(10, 20, Reserved20 ),
16839 rec(30, PROTO_LENGTH_UNKNOWN, PathAndName, info_str=(PathAndName, "RPC Execute NCF File: %s", ", %s") ),
16840 ])
16841 pkt.Reply(12, [
16842 rec(8, 4, RPCccode ),
16843 ])
16844 pkt.CompletionCodes([0x0000, 0x7e00, 0xfb07, 0xff00])
16845 if __name__ == '__main__':
16846 # import profile
16847 # filename = "ncp.pstats"
16848 # profile.run("main()", filename)
16849 #
16850 # import pstats
16851 # sys.stdout = msg
16852 # p = pstats.Stats(filename)
16853 #
16854 # print "Stats sorted by cumulative time"
16855 # p.strip_dirs().sort_stats('cumulative').print_stats()
16856 #
16857 # print "Function callees"
16858 # p.print_callees()
16859 main()
16860  
16861 #
16862 # Editor modelines - http://www.wireshark.org/tools/modelines.html
16863 #
16864 # Local variables:
16865 # c-basic-offset: 4
16866 # indent-tabs-mode: nil
16867 # End:
16868 #
16869 # vi: set shiftwidth=4 expandtab:
16870 # :indentSize=4:noTabs=true:
16871 #