Ethereal-dev: [Ethereal-dev] Native Windows update
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Gerald Combs <gerald@xxxxxxxxxxxx>
Date: Fri, 23 Jul 2004 15:03:19 -0500
Attached is a patch against SVN trunk revision 11486 that contains the native Windows code I've been working on. I'd like to drop it into a Subversion branch in the next few days, but before I do I'd like to make sure it compiles cleanly on someone else's system. :)
diff -x entries -urN ethereal/Makefile.common ethereal-win32/Makefile.common --- ethereal/Makefile.common 2004-07-21 15:27:09.513225800 -0500 +++ ethereal-win32/Makefile.common 2004-07-20 15:58:03.000000000 -0500 @@ -184,6 +184,14 @@ tethereal-tap-register.c \ tethereal.c +# wethereal specifics +wethereal_SOURCES = \ + $(ETHEREAL_COMMON_SRC) \ + alert_box.c \ + capture.c \ + file.c \ + filters.c + # text2pcap specifics text2pcap_SOURCES = \ text2pcap.c \ diff -x entries -urN ethereal/Makefile.nmake ethereal-win32/Makefile.nmake --- ethereal/Makefile.nmake 2004-07-23 09:53:14.457110400 -0500 +++ ethereal-win32/Makefile.nmake 2004-07-23 09:52:47.388187200 -0500 @@ -38,6 +38,7 @@ ethereal_OBJECTS = $(ethereal_SOURCES:.c=.obj) tethereal_OBJECTS = $(tethereal_SOURCES:.c=.obj) +wethereal_OBJECTS = $(wethereal_SOURCES:.c=.obj) dftest_OBJECTS = $(dftest_SOURCES:.c=.obj) randpkt_OBJECTS = $(randpkt_SOURCES:.c=.obj) @@ -78,6 +79,21 @@ $(ZLIB_LIBS) !ENDIF +wethereal_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ + wsock32.lib user32.lib comctl32.lib \ + $(GLIB_LIBS) \ + $(NET_SNMP_DIR)\win32\lib\netsnmp.lib \ +!IFDEF ENABLE_LIBETHEREAL + epan\libethereal.lib \ +!ELSE + epan\dissectors\dissectors.lib \ + epan\ethereal.lib \ + epan\dfilter\dfilter.lib epan\ftypes\ftypes.lib \ + $(ADNS_LIBS) \ + $(PCRE_LIBS) \ + $(ZLIB_LIBS) +!ENDIF + editcap_LIBS= wiretap\wiretap-$(WTAP_VERSION).lib \ wsock32.lib user32.lib \ $(GLIB_LIBS) @@ -106,10 +122,12 @@ $(GLIB_LIBS) \ $(NET_SNMP_DIR)\win32\lib\netsnmp.lib -EXECUTABLES=ethereal.exe ethereal-gtk2.exe tethereal.exe editcap.exe mergecap.exe text2pcap.exe +EXECUTABLES=ethereal.exe ethereal-gtk2.exe tethereal.exe wethereal.exe editcap.exe mergecap.exe text2pcap.exe RESOURCES=image\ethereal.res image\libethereal.res image\tethereal.res image\editcap.res image\mergecap.res image\text2pcap.res image\wiretap.res +wethereal_RESOURCES=xulender\win32-c-sdk\win32-main.res + all: config.h tools image wiretap epan $(EXECUTABLES) $(RESOURCES) doc packaging: all @@ -133,8 +151,12 @@ $(RESOURCES): image +$(wethereal_RESOURCES): xulender\win32-c-sdk + wiretap\wiretap-$(WTAP_VERSION).lib: wiretap +xulender\win32-c-sdk\win32-c-sdk.lib: xulender\win32-c-sdk + !IFNDEF GTK1_DIR ethereal.exe : !ELSE @@ -161,6 +183,12 @@ /OUT:tethereal.exe $(conflags) $(conlibsdll) $(LDFLAGS) /SUBSYSTEM:console $(tethereal_LIBS) $(tethereal_OBJECTS) $(EXTRA_OBJECTS) image\tethereal.res << +wethereal.exe : config.h svnversion.h $(wethereal_OBJECTS) $(EXTRA_OBJECTS) epan xulender\win32-c-sdk $(wethereal_RESOURCES) wiretap\wiretap-$(WTAP_VERSION).lib xulender\win32-c-sdk\win32-c-sdk.lib plugins + @echo Linking $@ + $(LINK) @<< + /OUT:wethereal.exe $(guiflags) $(guilibsdll) $(LDFLAGS) /SUBSYSTEM:windows $(wethereal_LIBS) xulender\win32-c-sdk\win32-c-sdk.lib $(wethereal_OBJECTS) $(EXTRA_OBJECTS) $(wethereal_RESOURCES) +<< + editcap.exe : config.h editcap.obj getopt.obj wiretap\wiretap-$(WTAP_VERSION).lib image\editcap.res @echo Linking $@ $(LINK) @<< @@ -270,6 +298,8 @@ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean cd ../packaging/nsis $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean + cd ../../xulender/win32-c-sdk + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean cd ../.. # Call distclean only, if you would like to remove ALL generated files. @@ -295,6 +325,8 @@ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean cd ../packaging/nsis $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean + cd ../../xulender/win32-c-sdk + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean cd ../.. tools:: @@ -336,6 +368,12 @@ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake cd .. +# XXX - Go to ui instead of leapfrogging over it. +xulender/win32-c-sdk:: + cd xulender/win32-c-sdk + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake + cd ../.. + doc:: cd doc $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake diff -x entries -urN ethereal/epan/dissectors/packet-ncp2222.c ethereal-win32/epan/dissectors/packet-ncp2222.c --- ethereal/epan/dissectors/packet-ncp2222.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/epan/dissectors/packet-ncp2222.c 2004-07-23 10:30:34.277814400 -0500 @@ -0,0 +1,23927 @@ +/* + * Generated automatically from ncp2222.py + * Do not edit this file manually, as all changes will be lost. + */ + + +/* + * Portions Copyright (c) Gilbert Ramirez 2000-2002 + * Portions Copyright (c) Novell, Inc. 2000-2003 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <string.h> +#include <glib.h> +#include <epan/packet.h> +#include <epan/conversation.h> +#include "ptvcursor.h" +#include "packet-ncp-int.h" +#include "packet-ncp-nmas.h" +#include <epan/strutil.h> +#include "reassemble.h" + +/* Function declarations for functions used in proto_register_ncp2222() */ +static void ncp_init_protocol(void); +static void ncp_postseq_cleanup(void); + +/* Endianness macros */ +#define BE 0 +#define LE 1 +#define NO_ENDIANNESS 0 + +#define NO_LENGTH -1 + +/* We use this int-pointer as a special flag in ptvc_record's */ +static int ptvc_struct_int_storage; +#define PTVC_STRUCT (&ptvc_struct_int_storage) + +/* Values used in the count-variable ("var"/"repeat") logic. */ +#define NUM_REPEAT_VARS 3 +guint repeat_vars[NUM_REPEAT_VARS]; +#define NO_VAR NUM_REPEAT_VARS +#define NO_REPEAT NUM_REPEAT_VARS + +#define REQ_COND_SIZE_CONSTANT 0 +#define REQ_COND_SIZE_VARIABLE 1 +#define NO_REQ_COND_SIZE 0 + + +#define NTREE 0x00020000 +#define NDEPTH 0x00000002 +#define NREV 0x00000004 +#define NFLAGS 0x00000008 + + +static int hf_ncp_func = -1; +static int hf_ncp_length = -1; +static int hf_ncp_subfunc = -1; +static int hf_ncp_fragment_handle = -1; +static int hf_ncp_completion_code = -1; +static int hf_ncp_connection_status = -1; +static int hf_ncp_req_frame_num = -1; +static int hf_ncp_req_frame_time = -1; +static int hf_ncp_fragment_size = -1; +static int hf_ncp_message_size = -1; +static int hf_ncp_nds_flag = -1; +static int hf_ncp_nds_verb = -1; +static int hf_ping_version = -1; +static int hf_nds_version = -1; +static int hf_nds_flags = -1; +static int hf_nds_reply_depth = -1; +static int hf_nds_reply_rev = -1; +static int hf_nds_reply_flags = -1; +static int hf_nds_p1type = -1; +static int hf_nds_uint32value = -1; +static int hf_nds_bit1 = -1; +static int hf_nds_bit2 = -1; +static int hf_nds_bit3 = -1; +static int hf_nds_bit4 = -1; +static int hf_nds_bit5 = -1; +static int hf_nds_bit6 = -1; +static int hf_nds_bit7 = -1; +static int hf_nds_bit8 = -1; +static int hf_nds_bit9 = -1; +static int hf_nds_bit10 = -1; +static int hf_nds_bit11 = -1; +static int hf_nds_bit12 = -1; +static int hf_nds_bit13 = -1; +static int hf_nds_bit14 = -1; +static int hf_nds_bit15 = -1; +static int hf_nds_bit16 = -1; +static int hf_bit1outflags = -1; +static int hf_bit2outflags = -1; +static int hf_bit3outflags = -1; +static int hf_bit4outflags = -1; +static int hf_bit5outflags = -1; +static int hf_bit6outflags = -1; +static int hf_bit7outflags = -1; +static int hf_bit8outflags = -1; +static int hf_bit9outflags = -1; +static int hf_bit10outflags = -1; +static int hf_bit11outflags = -1; +static int hf_bit12outflags = -1; +static int hf_bit13outflags = -1; +static int hf_bit14outflags = -1; +static int hf_bit15outflags = -1; +static int hf_bit16outflags = -1; +static int hf_bit1nflags = -1; +static int hf_bit2nflags = -1; +static int hf_bit3nflags = -1; +static int hf_bit4nflags = -1; +static int hf_bit5nflags = -1; +static int hf_bit6nflags = -1; +static int hf_bit7nflags = -1; +static int hf_bit8nflags = -1; +static int hf_bit9nflags = -1; +static int hf_bit10nflags = -1; +static int hf_bit11nflags = -1; +static int hf_bit12nflags = -1; +static int hf_bit13nflags = -1; +static int hf_bit14nflags = -1; +static int hf_bit15nflags = -1; +static int hf_bit16nflags = -1; +static int hf_bit1rflags = -1; +static int hf_bit2rflags = -1; +static int hf_bit3rflags = -1; +static int hf_bit4rflags = -1; +static int hf_bit5rflags = -1; +static int hf_bit6rflags = -1; +static int hf_bit7rflags = -1; +static int hf_bit8rflags = -1; +static int hf_bit9rflags = -1; +static int hf_bit10rflags = -1; +static int hf_bit11rflags = -1; +static int hf_bit12rflags = -1; +static int hf_bit13rflags = -1; +static int hf_bit14rflags = -1; +static int hf_bit15rflags = -1; +static int hf_bit16rflags = -1; +static int hf_bit1cflags = -1; +static int hf_bit2cflags = -1; +static int hf_bit3cflags = -1; +static int hf_bit4cflags = -1; +static int hf_bit5cflags = -1; +static int hf_bit6cflags = -1; +static int hf_bit7cflags = -1; +static int hf_bit8cflags = -1; +static int hf_bit9cflags = -1; +static int hf_bit10cflags = -1; +static int hf_bit11cflags = -1; +static int hf_bit12cflags = -1; +static int hf_bit13cflags = -1; +static int hf_bit14cflags = -1; +static int hf_bit15cflags = -1; +static int hf_bit16cflags = -1; +static int hf_bit1acflags = -1; +static int hf_bit2acflags = -1; +static int hf_bit3acflags = -1; +static int hf_bit4acflags = -1; +static int hf_bit5acflags = -1; +static int hf_bit6acflags = -1; +static int hf_bit7acflags = -1; +static int hf_bit8acflags = -1; +static int hf_bit9acflags = -1; +static int hf_bit10acflags = -1; +static int hf_bit11acflags = -1; +static int hf_bit12acflags = -1; +static int hf_bit13acflags = -1; +static int hf_bit14acflags = -1; +static int hf_bit15acflags = -1; +static int hf_bit16acflags = -1; +static int hf_bit1vflags = -1; +static int hf_bit2vflags = -1; +static int hf_bit3vflags = -1; +static int hf_bit4vflags = -1; +static int hf_bit5vflags = -1; +static int hf_bit6vflags = -1; +static int hf_bit7vflags = -1; +static int hf_bit8vflags = -1; +static int hf_bit9vflags = -1; +static int hf_bit10vflags = -1; +static int hf_bit11vflags = -1; +static int hf_bit12vflags = -1; +static int hf_bit13vflags = -1; +static int hf_bit14vflags = -1; +static int hf_bit15vflags = -1; +static int hf_bit16vflags = -1; +static int hf_bit1eflags = -1; +static int hf_bit2eflags = -1; +static int hf_bit3eflags = -1; +static int hf_bit4eflags = -1; +static int hf_bit5eflags = -1; +static int hf_bit6eflags = -1; +static int hf_bit7eflags = -1; +static int hf_bit8eflags = -1; +static int hf_bit9eflags = -1; +static int hf_bit10eflags = -1; +static int hf_bit11eflags = -1; +static int hf_bit12eflags = -1; +static int hf_bit13eflags = -1; +static int hf_bit14eflags = -1; +static int hf_bit15eflags = -1; +static int hf_bit16eflags = -1; +static int hf_bit1infoflagsl = -1; +static int hf_bit2infoflagsl = -1; +static int hf_bit3infoflagsl = -1; +static int hf_bit4infoflagsl = -1; +static int hf_bit5infoflagsl = -1; +static int hf_bit6infoflagsl = -1; +static int hf_bit7infoflagsl = -1; +static int hf_bit8infoflagsl = -1; +static int hf_bit9infoflagsl = -1; +static int hf_bit10infoflagsl = -1; +static int hf_bit11infoflagsl = -1; +static int hf_bit12infoflagsl = -1; +static int hf_bit13infoflagsl = -1; +static int hf_bit14infoflagsl = -1; +static int hf_bit15infoflagsl = -1; +static int hf_bit16infoflagsl = -1; +static int hf_bit1infoflagsh = -1; +static int hf_bit2infoflagsh = -1; +static int hf_bit3infoflagsh = -1; +static int hf_bit4infoflagsh = -1; +static int hf_bit5infoflagsh = -1; +static int hf_bit6infoflagsh = -1; +static int hf_bit7infoflagsh = -1; +static int hf_bit8infoflagsh = -1; +static int hf_bit9infoflagsh = -1; +static int hf_bit10infoflagsh = -1; +static int hf_bit11infoflagsh = -1; +static int hf_bit12infoflagsh = -1; +static int hf_bit13infoflagsh = -1; +static int hf_bit14infoflagsh = -1; +static int hf_bit15infoflagsh = -1; +static int hf_bit16infoflagsh = -1; +static int hf_bit1lflags = -1; +static int hf_bit2lflags = -1; +static int hf_bit3lflags = -1; +static int hf_bit4lflags = -1; +static int hf_bit5lflags = -1; +static int hf_bit6lflags = -1; +static int hf_bit7lflags = -1; +static int hf_bit8lflags = -1; +static int hf_bit9lflags = -1; +static int hf_bit10lflags = -1; +static int hf_bit11lflags = -1; +static int hf_bit12lflags = -1; +static int hf_bit13lflags = -1; +static int hf_bit14lflags = -1; +static int hf_bit15lflags = -1; +static int hf_bit16lflags = -1; +static int hf_bit1l1flagsl = -1; +static int hf_bit2l1flagsl = -1; +static int hf_bit3l1flagsl = -1; +static int hf_bit4l1flagsl = -1; +static int hf_bit5l1flagsl = -1; +static int hf_bit6l1flagsl = -1; +static int hf_bit7l1flagsl = -1; +static int hf_bit8l1flagsl = -1; +static int hf_bit9l1flagsl = -1; +static int hf_bit10l1flagsl = -1; +static int hf_bit11l1flagsl = -1; +static int hf_bit12l1flagsl = -1; +static int hf_bit13l1flagsl = -1; +static int hf_bit14l1flagsl = -1; +static int hf_bit15l1flagsl = -1; +static int hf_bit16l1flagsl = -1; +static int hf_bit1l1flagsh = -1; +static int hf_bit2l1flagsh = -1; +static int hf_bit3l1flagsh = -1; +static int hf_bit4l1flagsh = -1; +static int hf_bit5l1flagsh = -1; +static int hf_bit6l1flagsh = -1; +static int hf_bit7l1flagsh = -1; +static int hf_bit8l1flagsh = -1; +static int hf_bit9l1flagsh = -1; +static int hf_bit10l1flagsh = -1; +static int hf_bit11l1flagsh = -1; +static int hf_bit12l1flagsh = -1; +static int hf_bit13l1flagsh = -1; +static int hf_bit14l1flagsh = -1; +static int hf_bit15l1flagsh = -1; +static int hf_bit16l1flagsh = -1; +static int hf_nds_tree_name = -1; +static int hf_nds_reply_error = -1; +static int hf_nds_net = -1; +static int hf_nds_node = -1; +static int hf_nds_socket = -1; +static int hf_add_ref_ip = -1; +static int hf_add_ref_udp = -1; +static int hf_add_ref_tcp = -1; +static int hf_referral_record = -1; +static int hf_referral_addcount = -1; +static int hf_nds_port = -1; +static int hf_mv_string = -1; +static int hf_nds_syntax = -1; +static int hf_value_string = -1; +static int hf_nds_buffer_size = -1; +static int hf_nds_ver = -1; +static int hf_nds_nflags = -1; +static int hf_nds_scope = -1; +static int hf_nds_name = -1; +static int hf_nds_comm_trans = -1; +static int hf_nds_tree_trans = -1; +static int hf_nds_iteration = -1; +static int hf_nds_eid = -1; +static int hf_nds_info_type = -1; +static int hf_nds_all_attr = -1; +static int hf_nds_req_flags = -1; +static int hf_nds_attr = -1; +static int hf_nds_crc = -1; +static int hf_nds_referrals = -1; +static int hf_nds_result_flags = -1; +static int hf_nds_tag_string = -1; +static int hf_value_bytes = -1; +static int hf_replica_type = -1; +static int hf_replica_state = -1; +static int hf_replica_number = -1; +static int hf_min_nds_ver = -1; +static int hf_nds_ver_include = -1; +static int hf_nds_ver_exclude = -1; +static int hf_nds_es = -1; +static int hf_es_type = -1; +static int hf_delim_string = -1; +static int hf_rdn_string = -1; +static int hf_nds_revent = -1; +static int hf_nds_rnum = -1; +static int hf_nds_name_type = -1; +static int hf_nds_rflags = -1; +static int hf_nds_eflags = -1; +static int hf_nds_depth = -1; +static int hf_nds_class_def_type = -1; +static int hf_nds_classes = -1; +static int hf_nds_return_all_classes = -1; +static int hf_nds_stream_flags = -1; +static int hf_nds_stream_name = -1; +static int hf_nds_file_handle = -1; +static int hf_nds_file_size = -1; +static int hf_nds_dn_output_type = -1; +static int hf_nds_nested_output_type = -1; +static int hf_nds_output_delimiter = -1; +static int hf_nds_output_entry_specifier = -1; +static int hf_es_value = -1; +static int hf_es_rdn_count = -1; +static int hf_nds_replica_num = -1; +static int hf_nds_event_num = -1; +static int hf_es_seconds = -1; +static int hf_nds_compare_results = -1; +static int hf_nds_parent = -1; +static int hf_nds_name_filter = -1; +static int hf_nds_class_filter = -1; +static int hf_nds_time_filter = -1; +static int hf_nds_partition_root_id = -1; +static int hf_nds_replicas = -1; +static int hf_nds_purge = -1; +static int hf_nds_local_partition = -1; +static int hf_partition_busy = -1; +static int hf_nds_number_of_changes = -1; +static int hf_sub_count = -1; +static int hf_nds_revision = -1; +static int hf_nds_base_class = -1; +static int hf_nds_relative_dn = -1; +static int hf_nds_root_dn = -1; +static int hf_nds_parent_dn = -1; +static int hf_deref_base = -1; +static int hf_nds_entry_info = -1; +static int hf_nds_base = -1; +static int hf_nds_privileges = -1; +static int hf_nds_vflags = -1; +static int hf_nds_value_len = -1; +static int hf_nds_cflags = -1; +static int hf_nds_acflags = -1; +static int hf_nds_asn1 = -1; +static int hf_nds_upper = -1; +static int hf_nds_lower = -1; +static int hf_nds_trustee_dn = -1; +static int hf_nds_attribute_dn = -1; +static int hf_nds_acl_add = -1; +static int hf_nds_acl_del = -1; +static int hf_nds_att_add = -1; +static int hf_nds_att_del = -1; +static int hf_nds_keep = -1; +static int hf_nds_new_rdn = -1; +static int hf_nds_time_delay = -1; +static int hf_nds_root_name = -1; +static int hf_nds_new_part_id = -1; +static int hf_nds_child_part_id = -1; +static int hf_nds_master_part_id = -1; +static int hf_nds_target_name = -1; +static int hf_nds_super = -1; +static int hf_bit1pingflags2 = -1; +static int hf_bit2pingflags2 = -1; +static int hf_bit3pingflags2 = -1; +static int hf_bit4pingflags2 = -1; +static int hf_bit5pingflags2 = -1; +static int hf_bit6pingflags2 = -1; +static int hf_bit7pingflags2 = -1; +static int hf_bit8pingflags2 = -1; +static int hf_bit9pingflags2 = -1; +static int hf_bit10pingflags2 = -1; +static int hf_bit11pingflags2 = -1; +static int hf_bit12pingflags2 = -1; +static int hf_bit13pingflags2 = -1; +static int hf_bit14pingflags2 = -1; +static int hf_bit15pingflags2 = -1; +static int hf_bit16pingflags2 = -1; +static int hf_bit1pingflags1 = -1; +static int hf_bit2pingflags1 = -1; +static int hf_bit3pingflags1 = -1; +static int hf_bit4pingflags1 = -1; +static int hf_bit5pingflags1 = -1; +static int hf_bit6pingflags1 = -1; +static int hf_bit7pingflags1 = -1; +static int hf_bit8pingflags1 = -1; +static int hf_bit9pingflags1 = -1; +static int hf_bit10pingflags1 = -1; +static int hf_bit11pingflags1 = -1; +static int hf_bit12pingflags1 = -1; +static int hf_bit13pingflags1 = -1; +static int hf_bit14pingflags1 = -1; +static int hf_bit15pingflags1 = -1; +static int hf_bit16pingflags1 = -1; +static int hf_bit1pingpflags1 = -1; +static int hf_bit2pingpflags1 = -1; +static int hf_bit3pingpflags1 = -1; +static int hf_bit4pingpflags1 = -1; +static int hf_bit5pingpflags1 = -1; +static int hf_bit6pingpflags1 = -1; +static int hf_bit7pingpflags1 = -1; +static int hf_bit8pingpflags1 = -1; +static int hf_bit9pingpflags1 = -1; +static int hf_bit10pingpflags1 = -1; +static int hf_bit11pingpflags1 = -1; +static int hf_bit12pingpflags1 = -1; +static int hf_bit13pingpflags1 = -1; +static int hf_bit14pingpflags1 = -1; +static int hf_bit15pingpflags1 = -1; +static int hf_bit16pingpflags1 = -1; +static int hf_bit1pingvflags1 = -1; +static int hf_bit2pingvflags1 = -1; +static int hf_bit3pingvflags1 = -1; +static int hf_bit4pingvflags1 = -1; +static int hf_bit5pingvflags1 = -1; +static int hf_bit6pingvflags1 = -1; +static int hf_bit7pingvflags1 = -1; +static int hf_bit8pingvflags1 = -1; +static int hf_bit9pingvflags1 = -1; +static int hf_bit10pingvflags1 = -1; +static int hf_bit11pingvflags1 = -1; +static int hf_bit12pingvflags1 = -1; +static int hf_bit13pingvflags1 = -1; +static int hf_bit14pingvflags1 = -1; +static int hf_bit15pingvflags1 = -1; +static int hf_bit16pingvflags1 = -1; +static int hf_nds_letter_ver = -1; +static int hf_nds_os_ver = -1; +static int hf_nds_lic_flags = -1; +static int hf_nds_ds_time = -1; +static int hf_nds_ping_version = -1; +static int hf_nds_search_scope = -1; +static int hf_nds_num_objects = -1; +static int hf_bit1siflags = -1; +static int hf_bit2siflags = -1; +static int hf_bit3siflags = -1; +static int hf_bit4siflags = -1; +static int hf_bit5siflags = -1; +static int hf_bit6siflags = -1; +static int hf_bit7siflags = -1; +static int hf_bit8siflags = -1; +static int hf_bit9siflags = -1; +static int hf_bit10siflags = -1; +static int hf_bit11siflags = -1; +static int hf_bit12siflags = -1; +static int hf_bit13siflags = -1; +static int hf_bit14siflags = -1; +static int hf_bit15siflags = -1; +static int hf_bit16siflags = -1; +static int hf_nds_segments = -1; +static int hf_nds_segment = -1; +static int hf_nds_segment_overlap = -1; +static int hf_nds_segment_overlap_conflict = -1; +static int hf_nds_segment_multiple_tails = -1; +static int hf_nds_segment_too_long_segment = -1; +static int hf_nds_segment_error = -1; + + + +static int hf_ncp_64_bit_flag = -1; +static int hf_ncp_Service_type = -1; +static int hf_ncp_abort_q_flag = -1; +static int hf_ncp_abs_min_time_since_file_delete = -1; +static int hf_ncp_acc_mode_comp = -1; +static int hf_ncp_acc_mode_deny_read = -1; +static int hf_ncp_acc_mode_deny_write = -1; +static int hf_ncp_acc_mode_read = -1; +static int hf_ncp_acc_mode_write = -1; +static int hf_ncp_acc_priv_create = -1; +static int hf_ncp_acc_priv_delete = -1; +static int hf_ncp_acc_priv_modify = -1; +static int hf_ncp_acc_priv_open = -1; +static int hf_ncp_acc_priv_parent = -1; +static int hf_ncp_acc_priv_read = -1; +static int hf_ncp_acc_priv_search = -1; +static int hf_ncp_acc_priv_write = -1; +static int hf_ncp_acc_rights1_create = -1; +static int hf_ncp_acc_rights1_delete = -1; +static int hf_ncp_acc_rights1_modify = -1; +static int hf_ncp_acc_rights1_open = -1; +static int hf_ncp_acc_rights1_parent = -1; +static int hf_ncp_acc_rights1_read = -1; +static int hf_ncp_acc_rights1_search = -1; +static int hf_ncp_acc_rights1_supervisor = -1; +static int hf_ncp_acc_rights1_write = -1; +static int hf_ncp_acc_rights_create = -1; +static int hf_ncp_acc_rights_delete = -1; +static int hf_ncp_acc_rights_modify = -1; +static int hf_ncp_acc_rights_open = -1; +static int hf_ncp_acc_rights_parent = -1; +static int hf_ncp_acc_rights_read = -1; +static int hf_ncp_acc_rights_search = -1; +static int hf_ncp_acc_rights_write = -1; +static int hf_ncp_accel_cache_node_write = -1; +static int hf_ncp_accepted_max_size = -1; +static int hf_ncp_access_control = -1; +static int hf_ncp_access_date = -1; +static int hf_ncp_access_mode = -1; +static int hf_ncp_access_privileges = -1; +static int hf_ncp_access_rights_mask = -1; +static int hf_ncp_access_rights_mask_word = -1; +static int hf_ncp_account_balance = -1; +static int hf_ncp_acct_version = -1; +static int hf_ncp_act_flag_create = -1; +static int hf_ncp_act_flag_open = -1; +static int hf_ncp_act_flag_replace = -1; +static int hf_ncp_action_flag = -1; +static int hf_ncp_active_conn_bit_list = -1; +static int hf_ncp_active_indexed_files = -1; +static int hf_ncp_actual_max_bindery_objects = -1; +static int hf_ncp_actual_max_indexed_files = -1; +static int hf_ncp_actual_max_open_files = -1; +static int hf_ncp_actual_max_sim_trans = -1; +static int hf_ncp_actual_max_used_directory_entries = -1; +static int hf_ncp_actual_max_used_routing_buffers = -1; +static int hf_ncp_actual_response_count = -1; +static int hf_ncp_add_nm_spc_and_vol = -1; +static int hf_ncp_address = -1; +static int hf_ncp_aes_event_count = -1; +static int hf_ncp_afp_entry_id = -1; +static int hf_ncp_alloc_avail_byte = -1; +static int hf_ncp_alloc_blck = -1; +static int hf_ncp_alloc_blck_already_wait = -1; +static int hf_ncp_alloc_blck_frm_avail = -1; +static int hf_ncp_alloc_blck_frm_lru = -1; +static int hf_ncp_alloc_blck_i_had_to_wait = -1; +static int hf_ncp_alloc_blck_i_had_to_wait_for = -1; +static int hf_ncp_alloc_free_count = -1; +static int hf_ncp_alloc_waiting = -1; +static int hf_ncp_allocate_mode = -1; +static int hf_ncp_allocation_block_size = -1; +static int hf_ncp_already_doing_realloc = -1; +static int hf_ncp_application_number = -1; +static int hf_ncp_archived_date = -1; +static int hf_ncp_archived_time = -1; +static int hf_ncp_archiver_id = -1; +static int hf_ncp_associated_name_space = -1; +static int hf_ncp_async_internl_dsk_get = -1; +static int hf_ncp_async_internl_dsk_get_need_to_alloc = -1; +static int hf_ncp_async_internl_dsk_get_someone_beat = -1; +static int hf_ncp_async_read_error = -1; +static int hf_ncp_att_def16_archive = -1; +static int hf_ncp_att_def16_execute = -1; +static int hf_ncp_att_def16_hidden = -1; +static int hf_ncp_att_def16_read_audit = -1; +static int hf_ncp_att_def16_ro = -1; +static int hf_ncp_att_def16_shareable = -1; +static int hf_ncp_att_def16_sub_only = -1; +static int hf_ncp_att_def16_system = -1; +static int hf_ncp_att_def16_transaction = -1; +static int hf_ncp_att_def16_write_audit = -1; +static int hf_ncp_att_def32_archive = -1; +static int hf_ncp_att_def32_execute = -1; +static int hf_ncp_att_def32_hidden = -1; +static int hf_ncp_att_def32_read_audit = -1; +static int hf_ncp_att_def32_ro = -1; +static int hf_ncp_att_def32_shareable = -1; +static int hf_ncp_att_def32_sub_only = -1; +static int hf_ncp_att_def32_system = -1; +static int hf_ncp_att_def32_transaction = -1; +static int hf_ncp_att_def32_write_audit = -1; +static int hf_ncp_att_def_archive = -1; +static int hf_ncp_att_def_comp = -1; +static int hf_ncp_att_def_cpyinhibit = -1; +static int hf_ncp_att_def_delinhibit = -1; +static int hf_ncp_att_def_execute = -1; +static int hf_ncp_att_def_hidden = -1; +static int hf_ncp_att_def_im_comp = -1; +static int hf_ncp_att_def_purge = -1; +static int hf_ncp_att_def_reninhibit = -1; +static int hf_ncp_att_def_ro = -1; +static int hf_ncp_att_def_shareable = -1; +static int hf_ncp_att_def_sub_only = -1; +static int hf_ncp_att_def_system = -1; +static int hf_ncp_attach_during_processing = -1; +static int hf_ncp_attach_while_processing_attach = -1; +static int hf_ncp_attached_indexed_files = -1; +static int hf_ncp_attr_def = -1; +static int hf_ncp_attr_def_16 = -1; +static int hf_ncp_attr_def_32 = -1; +static int hf_ncp_attribute_valid_flag = -1; +static int hf_ncp_attributes = -1; +static int hf_ncp_audit_enable_flag = -1; +static int hf_ncp_audit_file_max_size = -1; +static int hf_ncp_audit_file_size = -1; +static int hf_ncp_audit_file_size_threshold = -1; +static int hf_ncp_audit_file_ver_date = -1; +static int hf_ncp_audit_flag = -1; +static int hf_ncp_audit_handle = -1; +static int hf_ncp_audit_id = -1; +static int hf_ncp_audit_id_type = -1; +static int hf_ncp_audit_record_count = -1; +static int hf_ncp_audit_ver_date = -1; +static int hf_ncp_auditing_flags = -1; +static int hf_ncp_avail_space = -1; +static int hf_ncp_available_blocks = -1; +static int hf_ncp_available_clusters = -1; +static int hf_ncp_available_dir_entries = -1; +static int hf_ncp_available_directory_slots = -1; +static int hf_ncp_available_indexed_files = -1; +static int hf_ncp_background_aged_writes = -1; +static int hf_ncp_background_dirty_writes = -1; +static int hf_ncp_bad_logical_connection_count = -1; +static int hf_ncp_banner_name = -1; +static int hf_ncp_base_directory_id = -1; +static int hf_ncp_being_aborted = -1; +static int hf_ncp_being_processed = -1; +static int hf_ncp_big_forged_packet = -1; +static int hf_ncp_big_invalid_packet = -1; +static int hf_ncp_big_invalid_slot = -1; +static int hf_ncp_big_read_being_torn_down = -1; +static int hf_ncp_big_read_do_it_over = -1; +static int hf_ncp_big_read_invalid_mess = -1; +static int hf_ncp_big_read_no_data_avail = -1; +static int hf_ncp_big_read_phy_read_err = -1; +static int hf_ncp_big_read_trying_to_read = -1; +static int hf_ncp_big_repeat_the_file_read = -1; +static int hf_ncp_big_return_abort_mess = -1; +static int hf_ncp_big_send_extra_cc_count = -1; +static int hf_ncp_big_still_transmitting = -1; +static int hf_ncp_big_write_being_abort = -1; +static int hf_ncp_big_write_being_torn_down = -1; +static int hf_ncp_big_write_inv_message_num = -1; +static int hf_ncp_bindery_context = -1; +static int hf_ncp_bit_map = -1; +static int hf_ncp_block_number = -1; +static int hf_ncp_block_size = -1; +static int hf_ncp_block_size_in_sectors = -1; +static int hf_ncp_board_installed = -1; +static int hf_ncp_board_number = -1; +static int hf_ncp_board_numbers = -1; +static int hf_ncp_buffer_size = -1; +static int hf_ncp_bumped_out_of_order = -1; +static int hf_ncp_bus_string = -1; +static int hf_ncp_bus_type = -1; +static int hf_ncp_bytes_actually_transferred = -1; +static int hf_ncp_bytes_read = -1; +static int hf_ncp_bytes_to_copy = -1; +static int hf_ncp_bytes_written = -1; +static int hf_ncp_cache_allocations = -1; +static int hf_ncp_cache_block_scrapped = -1; +static int hf_ncp_cache_buffer_count = -1; +static int hf_ncp_cache_buffer_size = -1; +static int hf_ncp_cache_byte_to_block = -1; +static int hf_ncp_cache_dirty_block_thresh = -1; +static int hf_ncp_cache_dirty_wait_time = -1; +static int hf_ncp_cache_full_write_requests = -1; +static int hf_ncp_cache_get_requests = -1; +static int hf_ncp_cache_hit_on_unavailable_block = -1; +static int hf_ncp_cache_hits = -1; +static int hf_ncp_cache_max_concur_writes = -1; +static int hf_ncp_cache_misses = -1; +static int hf_ncp_cache_partial_write_requests = -1; +static int hf_ncp_cache_read_requests = -1; +static int hf_ncp_cache_used_while_check = -1; +static int hf_ncp_cache_write_requests = -1; +static int hf_ncp_category_name = -1; +static int hf_ncp_cc_file_handle = -1; +static int hf_ncp_cc_function = -1; +static int hf_ncp_cfg_max_simultaneous_transactions = -1; +static int hf_ncp_change_bits = -1; +static int hf_ncp_change_bits_acc_date = -1; +static int hf_ncp_change_bits_adate = -1; +static int hf_ncp_change_bits_aid = -1; +static int hf_ncp_change_bits_atime = -1; +static int hf_ncp_change_bits_cdate = -1; +static int hf_ncp_change_bits_ctime = -1; +static int hf_ncp_change_bits_fatt = -1; +static int hf_ncp_change_bits_max_acc_mask = -1; +static int hf_ncp_change_bits_max_space = -1; +static int hf_ncp_change_bits_modify = -1; +static int hf_ncp_change_bits_owner = -1; +static int hf_ncp_change_bits_udate = -1; +static int hf_ncp_change_bits_uid = -1; +static int hf_ncp_change_bits_utime = -1; +static int hf_ncp_channel_state = -1; +static int hf_ncp_channel_synchronization_state = -1; +static int hf_ncp_charge_amount = -1; +static int hf_ncp_charge_information = -1; +static int hf_ncp_checksum_error_count = -1; +static int hf_ncp_checksuming = -1; +static int hf_ncp_client_comp_flag = -1; +static int hf_ncp_client_id_number = -1; +static int hf_ncp_client_list = -1; +static int hf_ncp_client_list_cnt = -1; +static int hf_ncp_client_list_len = -1; +static int hf_ncp_client_name = -1; +static int hf_ncp_client_record_area = -1; +static int hf_ncp_client_station = -1; +static int hf_ncp_client_station_long = -1; +static int hf_ncp_client_task_number = -1; +static int hf_ncp_client_task_number_long = -1; +static int hf_ncp_cluster_count = -1; +static int hf_ncp_clusters_used_by_directories = -1; +static int hf_ncp_clusters_used_by_extended_dirs = -1; +static int hf_ncp_clusters_used_by_fat = -1; +static int hf_ncp_cmd_flags_advanced = -1; +static int hf_ncp_cmd_flags_hidden = -1; +static int hf_ncp_cmd_flags_later = -1; +static int hf_ncp_cmd_flags_secure = -1; +static int hf_ncp_cmd_flags_startup_only = -1; +static int hf_ncp_cmpbyteincount = -1; +static int hf_ncp_cmpbyteoutcnt = -1; +static int hf_ncp_cmphibyteincnt = -1; +static int hf_ncp_cmphibyteoutcnt = -1; +static int hf_ncp_cmphitickcnt = -1; +static int hf_ncp_cmphitickhigh = -1; +static int hf_ncp_co_proc_string = -1; +static int hf_ncp_co_processor_flag = -1; +static int hf_ncp_com_cnts = -1; +static int hf_ncp_comment = -1; +static int hf_ncp_comment_type = -1; +static int hf_ncp_complete_signatures = -1; +static int hf_ncp_compress_volume = -1; +static int hf_ncp_compressed_data_streams_count = -1; +static int hf_ncp_compressed_limbo_data_streams_count = -1; +static int hf_ncp_compressed_sectors = -1; +static int hf_ncp_compression_ios_limit = -1; +static int hf_ncp_compression_lower_limit = -1; +static int hf_ncp_compression_stage = -1; +static int hf_ncp_config_major_vn = -1; +static int hf_ncp_config_minor_vn = -1; +static int hf_ncp_configuration_description = -1; +static int hf_ncp_configuration_text = -1; +static int hf_ncp_configured_max_bindery_objects = -1; +static int hf_ncp_configured_max_open_files = -1; +static int hf_ncp_configured_max_routing_buffers = -1; +static int hf_ncp_conn_being_aborted = -1; +static int hf_ncp_conn_ctrl_bits = -1; +static int hf_ncp_conn_list = -1; +static int hf_ncp_conn_list_count = -1; +static int hf_ncp_conn_list_len = -1; +static int hf_ncp_conn_number_byte = -1; +static int hf_ncp_conn_number_word = -1; +static int hf_ncp_connected_lan = -1; +static int hf_ncp_connection_list = -1; +static int hf_ncp_connection_number = -1; +static int hf_ncp_connection_number_list = -1; +static int hf_ncp_connection_service_type = -1; +static int hf_ncp_connection_type = -1; +static int hf_ncp_connections_in_use = -1; +static int hf_ncp_connections_max_used = -1; +static int hf_ncp_connections_supported_max = -1; +static int hf_ncp_control_being_torn_down = -1; +static int hf_ncp_control_flags = -1; +static int hf_ncp_control_invalid_message_number = -1; +static int hf_ncp_controller_drive_number = -1; +static int hf_ncp_controller_number = -1; +static int hf_ncp_controller_type = -1; +static int hf_ncp_cookie_1 = -1; +static int hf_ncp_cookie_2 = -1; +static int hf_ncp_copies = -1; +static int hf_ncp_copyright = -1; +static int hf_ncp_counter_mask = -1; +static int hf_ncp_cpu_number = -1; +static int hf_ncp_cpu_string = -1; +static int hf_ncp_cpu_type = -1; +static int hf_ncp_creation_date = -1; +static int hf_ncp_creation_time = -1; +static int hf_ncp_creator_id = -1; +static int hf_ncp_creator_name_space_number = -1; +static int hf_ncp_credit_limit = -1; +static int hf_ncp_ctl_bad_ack_frag_list = -1; +static int hf_ncp_ctl_no_data_read = -1; +static int hf_ncp_ctrl_flags = -1; +static int hf_ncp_cur_blk_being_dcompress = -1; +static int hf_ncp_cur_comp_blks = -1; +static int hf_ncp_cur_initial_blks = -1; +static int hf_ncp_cur_inter_blks = -1; +static int hf_ncp_cur_num_of_r_tags = -1; +static int hf_ncp_curr_num_cache_buff = -1; +static int hf_ncp_curr_ref_id = -1; +static int hf_ncp_current_changed_fats = -1; +static int hf_ncp_current_entries = -1; +static int hf_ncp_current_form_type = -1; +static int hf_ncp_current_lfs_counters = -1; +static int hf_ncp_current_open_files = -1; +static int hf_ncp_current_server_time = -1; +static int hf_ncp_current_servers = -1; +static int hf_ncp_current_space = -1; +static int hf_ncp_current_trans_count = -1; +static int hf_ncp_current_used_bindery_objects = -1; +static int hf_ncp_currently_used_routing_buffers = -1; +static int hf_ncp_custom_cnts = -1; +static int hf_ncp_custom_count = -1; +static int hf_ncp_custom_counters = -1; +static int hf_ncp_custom_string = -1; +static int hf_ncp_custom_var_value = -1; +static int hf_ncp_data = -1; +static int hf_ncp_data_fork_first_fat = -1; +static int hf_ncp_data_fork_len = -1; +static int hf_ncp_data_fork_size = -1; +static int hf_ncp_data_size = -1; +static int hf_ncp_data_stream = -1; +static int hf_ncp_data_stream_name = -1; +static int hf_ncp_data_stream_number = -1; +static int hf_ncp_data_stream_size = -1; +static int hf_ncp_data_stream_space_alloc = -1; +static int hf_ncp_data_streams_count = -1; +static int hf_ncp_dc_dirty_wait_time = -1; +static int hf_ncp_dc_double_read_flag = -1; +static int hf_ncp_dc_max_concurrent_writes = -1; +static int hf_ncp_dc_min_non_ref_time = -1; +static int hf_ncp_dc_wait_time_before_new_buff = -1; +static int hf_ncp_dead_mirror_table = -1; +static int hf_ncp_dealloc_being_proc = -1; +static int hf_ncp_dealloc_forged_packet = -1; +static int hf_ncp_dealloc_invalid_slot = -1; +static int hf_ncp_dealloc_still_transmit = -1; +static int hf_ncp_decpbyteincount = -1; +static int hf_ncp_decpbyteoutcnt = -1; +static int hf_ncp_decphibyteincnt = -1; +static int hf_ncp_decphibyteoutcnt = -1; +static int hf_ncp_decphitickcnt = -1; +static int hf_ncp_decphitickhigh = -1; +static int hf_ncp_defined_data_streams = -1; +static int hf_ncp_defined_name_spaces = -1; +static int hf_ncp_delete_existing_file_flag = -1; +static int hf_ncp_delete_id = -1; +static int hf_ncp_deleted_date = -1; +static int hf_ncp_deleted_file_time = -1; +static int hf_ncp_deleted_time = -1; +static int hf_ncp_deny_read_count = -1; +static int hf_ncp_deny_write_count = -1; +static int hf_ncp_description_string = -1; +static int hf_ncp_desired_access_rights = -1; +static int hf_ncp_desired_response_count = -1; +static int hf_ncp_dest_component_count = -1; +static int hf_ncp_dest_dir_handle = -1; +static int hf_ncp_dest_name_space = -1; +static int hf_ncp_dest_path = -1; +static int hf_ncp_detach_during_processing = -1; +static int hf_ncp_detach_for_bad_connection_number = -1; +static int hf_ncp_dir_base = -1; +static int hf_ncp_dir_count = -1; +static int hf_ncp_dir_handle = -1; +static int hf_ncp_dir_handle_long = -1; +static int hf_ncp_dir_handle_name = -1; +static int hf_ncp_directory_access_rights = -1; +static int hf_ncp_directory_attributes = -1; +static int hf_ncp_directory_entry_number = -1; +static int hf_ncp_directory_entry_number_word = -1; +static int hf_ncp_directory_id = -1; +static int hf_ncp_directory_name = -1; +static int hf_ncp_directory_name_14 = -1; +static int hf_ncp_directory_name_len = -1; +static int hf_ncp_directory_number = -1; +static int hf_ncp_directory_path = -1; +static int hf_ncp_directory_services_object_id = -1; +static int hf_ncp_directory_stamp = -1; +static int hf_ncp_dirty_cache_buffers = -1; +static int hf_ncp_disable_brdcasts = -1; +static int hf_ncp_disable_personal_brdcasts = -1; +static int hf_ncp_disable_wdog_messages = -1; +static int hf_ncp_disk_channel_number = -1; +static int hf_ncp_disk_channel_table = -1; +static int hf_ncp_disk_space_limit = -1; +static int hf_ncp_dm_flags = -1; +static int hf_ncp_dm_info_entries = -1; +static int hf_ncp_dm_info_level = -1; +static int hf_ncp_dm_major_version = -1; +static int hf_ncp_dm_minor_version = -1; +static int hf_ncp_dm_present_flag = -1; +static int hf_ncp_dma_channels_used = -1; +static int hf_ncp_dos_directory_base = -1; +static int hf_ncp_dos_directory_entry = -1; +static int hf_ncp_dos_directory_entry_number = -1; +static int hf_ncp_dos_file_attributes = -1; +static int hf_ncp_dos_parent_directory_entry = -1; +static int hf_ncp_dos_sequence = -1; +static int hf_ncp_drive_cylinders = -1; +static int hf_ncp_drive_definition_string = -1; +static int hf_ncp_drive_heads = -1; +static int hf_ncp_drive_mapping_table = -1; +static int hf_ncp_drive_mirror_table = -1; +static int hf_ncp_drive_removable_flag = -1; +static int hf_ncp_drive_size = -1; +static int hf_ncp_driver_board_name = -1; +static int hf_ncp_driver_log_name = -1; +static int hf_ncp_driver_short_name = -1; +static int hf_ncp_dsired_acc_rights_compat = -1; +static int hf_ncp_dsired_acc_rights_del_file_cls = -1; +static int hf_ncp_dsired_acc_rights_deny_r = -1; +static int hf_ncp_dsired_acc_rights_deny_w = -1; +static int hf_ncp_dsired_acc_rights_read_o = -1; +static int hf_ncp_dsired_acc_rights_w_thru = -1; +static int hf_ncp_dsired_acc_rights_write_o = -1; +static int hf_ncp_dst_ea_flags = -1; +static int hf_ncp_dst_ns_indicator = -1; +static int hf_ncp_dst_queue_id = -1; +static int hf_ncp_dup_is_being_sent = -1; +static int hf_ncp_duplicate_replies_sent = -1; +static int hf_ncp_dyn_mem_struct_cur = -1; +static int hf_ncp_dyn_mem_struct_max = -1; +static int hf_ncp_dyn_mem_struct_total = -1; +static int hf_ncp_ea_access_flag = -1; +static int hf_ncp_ea_bytes_written = -1; +static int hf_ncp_ea_count = -1; +static int hf_ncp_ea_data_size = -1; +static int hf_ncp_ea_data_size_duplicated = -1; +static int hf_ncp_ea_deep_freeze = -1; +static int hf_ncp_ea_delete_privileges = -1; +static int hf_ncp_ea_duplicate_count = -1; +static int hf_ncp_ea_error_codes = -1; +static int hf_ncp_ea_flags = -1; +static int hf_ncp_ea_handle = -1; +static int hf_ncp_ea_handle_or_netware_handle_or_volume = -1; +static int hf_ncp_ea_header_being_enlarged = -1; +static int hf_ncp_ea_in_progress = -1; +static int hf_ncp_ea_key = -1; +static int hf_ncp_ea_key_size = -1; +static int hf_ncp_ea_key_size_duplicated = -1; +static int hf_ncp_ea_need_bit_flag = -1; +static int hf_ncp_ea_new_tally_used = -1; +static int hf_ncp_ea_permanent_memory = -1; +static int hf_ncp_ea_read_privileges = -1; +static int hf_ncp_ea_score_card_present = -1; +static int hf_ncp_ea_system_ea_only = -1; +static int hf_ncp_ea_tally_need_update = -1; +static int hf_ncp_ea_value = -1; +static int hf_ncp_ea_value_length = -1; +static int hf_ncp_ea_value_rep = -1; +static int hf_ncp_ea_write_in_progress = -1; +static int hf_ncp_ea_write_privileges = -1; +static int hf_ncp_ecb_cxl_fails = -1; +static int hf_ncp_echo_socket = -1; +static int hf_ncp_effective_rights = -1; +static int hf_ncp_effective_rights_create = -1; +static int hf_ncp_effective_rights_delete = -1; +static int hf_ncp_effective_rights_modify = -1; +static int hf_ncp_effective_rights_open = -1; +static int hf_ncp_effective_rights_parental = -1; +static int hf_ncp_effective_rights_read = -1; +static int hf_ncp_effective_rights_search = -1; +static int hf_ncp_effective_rights_write = -1; +static int hf_ncp_enable_brdcasts = -1; +static int hf_ncp_enable_personal_brdcasts = -1; +static int hf_ncp_enable_wdog_messages = -1; +static int hf_ncp_encryption = -1; +static int hf_ncp_enqueued_send_cnt = -1; +static int hf_ncp_enum_info_account = -1; +static int hf_ncp_enum_info_auth = -1; +static int hf_ncp_enum_info_lock = -1; +static int hf_ncp_enum_info_mask = -1; +static int hf_ncp_enum_info_name = -1; +static int hf_ncp_enum_info_print = -1; +static int hf_ncp_enum_info_stats = -1; +static int hf_ncp_enum_info_time = -1; +static int hf_ncp_enum_info_transport = -1; +static int hf_ncp_err_doing_async_read = -1; +static int hf_ncp_error_read_last_fat = -1; +static int hf_ncp_event_offset = -1; +static int hf_ncp_event_time = -1; +static int hf_ncp_expiration_time = -1; +static int hf_ncp_ext_info = -1; +static int hf_ncp_ext_info_64_bit_fs = -1; +static int hf_ncp_ext_info_access = -1; +static int hf_ncp_ext_info_dos_name = -1; +static int hf_ncp_ext_info_effective = -1; +static int hf_ncp_ext_info_flush = -1; +static int hf_ncp_ext_info_mac_date = -1; +static int hf_ncp_ext_info_mac_finder = -1; +static int hf_ncp_ext_info_newstyle = -1; +static int hf_ncp_ext_info_parental = -1; +static int hf_ncp_ext_info_sibling = -1; +static int hf_ncp_ext_info_update = -1; +static int hf_ncp_ext_router_active_flag = -1; +static int hf_ncp_extended_attribute_extants_used = -1; +static int hf_ncp_extended_attributes_defined = -1; +static int hf_ncp_extra_extra_use_count_node_count = -1; +static int hf_ncp_extra_use_count_node_count = -1; +static int hf_ncp_f_size_64bit = -1; +static int hf_ncp_failed_alloc_req = -1; +static int hf_ncp_fat_moved = -1; +static int hf_ncp_fat_scan_errors = -1; +static int hf_ncp_fat_write_err = -1; +static int hf_ncp_fat_write_errors = -1; +static int hf_ncp_fatal_fat_write_errors = -1; +static int hf_ncp_fields_len_table = -1; +static int hf_ncp_file_count = -1; +static int hf_ncp_file_date = -1; +static int hf_ncp_file_dir_win = -1; +static int hf_ncp_file_execute_type = -1; +static int hf_ncp_file_ext_attr = -1; +static int hf_ncp_file_flags = -1; +static int hf_ncp_file_handle = -1; +static int hf_ncp_file_limbo = -1; +static int hf_ncp_file_list_count = -1; +static int hf_ncp_file_lock_count = -1; +static int hf_ncp_file_mode = -1; +static int hf_ncp_file_name = -1; +static int hf_ncp_file_name_12 = -1; +static int hf_ncp_file_name_14 = -1; +static int hf_ncp_file_name_len = -1; +static int hf_ncp_file_offset = -1; +static int hf_ncp_file_path = -1; +static int hf_ncp_file_size = -1; +static int hf_ncp_file_system_id = -1; +static int hf_ncp_file_time = -1; +static int hf_ncp_file_write_flags = -1; +static int hf_ncp_file_write_state = -1; +static int hf_ncp_filler = -1; +static int hf_ncp_finder_attr = -1; +static int hf_ncp_finder_attr_bundle = -1; +static int hf_ncp_finder_attr_desktop = -1; +static int hf_ncp_finder_attr_invisible = -1; +static int hf_ncp_first_packet_isnt_a_write = -1; +static int hf_ncp_fixed_bit_mask = -1; +static int hf_ncp_fixed_bits_defined = -1; +static int hf_ncp_flag_bits = -1; +static int hf_ncp_flags = -1; +static int hf_ncp_flags_def = -1; +static int hf_ncp_flush_time = -1; +static int hf_ncp_folder_flag = -1; +static int hf_ncp_force_flag = -1; +static int hf_ncp_forged_detached_requests = -1; +static int hf_ncp_forged_packet = -1; +static int hf_ncp_fork_count = -1; +static int hf_ncp_fork_indicator = -1; +static int hf_ncp_form_type = -1; +static int hf_ncp_form_type_count = -1; +static int hf_ncp_found_some_mem = -1; +static int hf_ncp_fractional_time = -1; +static int hf_ncp_fragger_handle = -1; +static int hf_ncp_fragment_write_occurred = -1; +static int hf_ncp_free_blocks = -1; +static int hf_ncp_free_directory_entries = -1; +static int hf_ncp_freeable_limbo_sectors = -1; +static int hf_ncp_freed_clusters = -1; +static int hf_ncp_fs_engine_flag = -1; +static int hf_ncp_full_name = -1; +static int hf_ncp_generic_block_size = -1; +static int hf_ncp_generic_capacity = -1; +static int hf_ncp_generic_cartridge_type = -1; +static int hf_ncp_generic_child_count = -1; +static int hf_ncp_generic_ctl_mask = -1; +static int hf_ncp_generic_func_mask = -1; +static int hf_ncp_generic_ident_time = -1; +static int hf_ncp_generic_ident_type = -1; +static int hf_ncp_generic_label = -1; +static int hf_ncp_generic_media_slot = -1; +static int hf_ncp_generic_media_type = -1; +static int hf_ncp_generic_name = -1; +static int hf_ncp_generic_object_uniq_id = -1; +static int hf_ncp_generic_parent_count = -1; +static int hf_ncp_generic_pref_unit_size = -1; +static int hf_ncp_generic_sib_count = -1; +static int hf_ncp_generic_spec_info_sz = -1; +static int hf_ncp_generic_status = -1; +static int hf_ncp_generic_type = -1; +static int hf_ncp_generic_unit_size = -1; +static int hf_ncp_get_ecb_buf = -1; +static int hf_ncp_get_ecb_fails = -1; +static int hf_ncp_get_set_flag = -1; +static int hf_ncp_guid = -1; +static int hf_ncp_had_an_out_of_order = -1; +static int hf_ncp_handle_flag = -1; +static int hf_ncp_handle_info_level = -1; +static int hf_ncp_hardware_rx_mismatch_count = -1; +static int hf_ncp_held_bytes_read = -1; +static int hf_ncp_held_bytes_write = -1; +static int hf_ncp_held_conn_time = -1; +static int hf_ncp_hold_amount = -1; +static int hf_ncp_hold_cancel_amount = -1; +static int hf_ncp_hold_time = -1; +static int hf_ncp_holder_id = -1; +static int hf_ncp_hops_to_net = -1; +static int hf_ncp_horiz_location = -1; +static int hf_ncp_host_address = -1; +static int hf_ncp_hot_fix_blocks_available = -1; +static int hf_ncp_hot_fix_disabled = -1; +static int hf_ncp_hot_fix_table_size = -1; +static int hf_ncp_hot_fix_table_start = -1; +static int hf_ncp_huge_bit_mask = -1; +static int hf_ncp_huge_bits_defined = -1; +static int hf_ncp_huge_data = -1; +static int hf_ncp_huge_data_used = -1; +static int hf_ncp_huge_state_info = -1; +static int hf_ncp_i_ran_out_someone_else_did_it_0 = -1; +static int hf_ncp_i_ran_out_someone_else_did_it_1 = -1; +static int hf_ncp_i_ran_out_someone_else_did_it_2 = -1; +static int hf_ncp_id_get_no_read_no_wait = -1; +static int hf_ncp_id_get_no_read_no_wait_alloc = -1; +static int hf_ncp_id_get_no_read_no_wait_buffer = -1; +static int hf_ncp_id_get_no_read_no_wait_no_alloc = -1; +static int hf_ncp_id_get_no_read_no_wait_no_alloc_alloc = -1; +static int hf_ncp_id_get_no_read_no_wait_no_alloc_sema = -1; +static int hf_ncp_id_get_no_read_no_wait_sema = -1; +static int hf_ncp_identification_number = -1; +static int hf_ncp_ignored_rx_pkts = -1; +static int hf_ncp_in_use = -1; +static int hf_ncp_incoming_packet_discarded_no_dgroup = -1; +static int hf_ncp_index_number = -1; +static int hf_ncp_info_count = -1; +static int hf_ncp_info_flags = -1; +static int hf_ncp_info_flags_all_attr = -1; +static int hf_ncp_info_flags_all_dirbase_num = -1; +static int hf_ncp_info_flags_dos_attr = -1; +static int hf_ncp_info_flags_dos_time = -1; +static int hf_ncp_info_flags_ds_sizes = -1; +static int hf_ncp_info_flags_ea_present = -1; +static int hf_ncp_info_flags_effect_rights = -1; +static int hf_ncp_info_flags_flags = -1; +static int hf_ncp_info_flags_flush_time = -1; +static int hf_ncp_info_flags_ids = -1; +static int hf_ncp_info_flags_mac_finder = -1; +static int hf_ncp_info_flags_mac_time = -1; +static int hf_ncp_info_flags_max_access_mask = -1; +static int hf_ncp_info_flags_name = -1; +static int hf_ncp_info_flags_ns_attr = -1; +static int hf_ncp_info_flags_prnt_base_id = -1; +static int hf_ncp_info_flags_ref_count = -1; +static int hf_ncp_info_flags_security = -1; +static int hf_ncp_info_flags_sibling_cnt = -1; +static int hf_ncp_info_flags_type = -1; +static int hf_ncp_info_level_num = -1; +static int hf_ncp_info_mask = -1; +static int hf_ncp_info_mask_c_name_space = -1; +static int hf_ncp_info_mask_dosname = -1; +static int hf_ncp_info_mask_name = -1; +static int hf_ncp_inh_revoke_create = -1; +static int hf_ncp_inh_revoke_delete = -1; +static int hf_ncp_inh_revoke_modify = -1; +static int hf_ncp_inh_revoke_open = -1; +static int hf_ncp_inh_revoke_parent = -1; +static int hf_ncp_inh_revoke_read = -1; +static int hf_ncp_inh_revoke_search = -1; +static int hf_ncp_inh_revoke_supervisor = -1; +static int hf_ncp_inh_revoke_write = -1; +static int hf_ncp_inh_rights_create = -1; +static int hf_ncp_inh_rights_delete = -1; +static int hf_ncp_inh_rights_modify = -1; +static int hf_ncp_inh_rights_open = -1; +static int hf_ncp_inh_rights_parent = -1; +static int hf_ncp_inh_rights_read = -1; +static int hf_ncp_inh_rights_search = -1; +static int hf_ncp_inh_rights_supervisor = -1; +static int hf_ncp_inh_rights_write = -1; +static int hf_ncp_inheritance_revoke_mask = -1; +static int hf_ncp_inherited_rights_mask = -1; +static int hf_ncp_initial_semaphore_value = -1; +static int hf_ncp_inspect_size = -1; +static int hf_ncp_internet_bridge_version = -1; +static int hf_ncp_internl_dsk_get = -1; +static int hf_ncp_internl_dsk_get_need_to_alloc = -1; +static int hf_ncp_internl_dsk_get_no_read = -1; +static int hf_ncp_internl_dsk_get_no_read_alloc = -1; +static int hf_ncp_internl_dsk_get_no_read_someone_beat = -1; +static int hf_ncp_internl_dsk_get_no_wait = -1; +static int hf_ncp_internl_dsk_get_no_wait_need = -1; +static int hf_ncp_internl_dsk_get_no_wait_no_blk = -1; +static int hf_ncp_internl_dsk_get_part_read = -1; +static int hf_ncp_internl_dsk_get_read_err = -1; +static int hf_ncp_internl_dsk_get_someone_beat = -1; +static int hf_ncp_internl_dsk_write = -1; +static int hf_ncp_internl_dsk_write_alloc = -1; +static int hf_ncp_internl_dsk_write_someone_beat = -1; +static int hf_ncp_interrupt_numbers_used = -1; +static int hf_ncp_invalid_control_req = -1; +static int hf_ncp_invalid_req_type = -1; +static int hf_ncp_invalid_sequence_number = -1; +static int hf_ncp_invalid_slot = -1; +static int hf_ncp_io_addresses_used = -1; +static int hf_ncp_io_engine_flag = -1; +static int hf_ncp_io_error_count = -1; +static int hf_ncp_io_flag = -1; +static int hf_ncp_ipx_aes_event = -1; +static int hf_ncp_ipx_ecb_cancel_fail = -1; +static int hf_ncp_ipx_get_ecb_fail = -1; +static int hf_ncp_ipx_get_ecb_req = -1; +static int hf_ncp_ipx_get_lcl_targ_fail = -1; +static int hf_ncp_ipx_listen_ecb = -1; +static int hf_ncp_ipx_malform_pkt = -1; +static int hf_ncp_ipx_max_conf_sock = -1; +static int hf_ncp_ipx_max_open_sock = -1; +static int hf_ncp_ipx_not_my_network = -1; +static int hf_ncp_ipx_open_sock_fail = -1; +static int hf_ncp_ipx_postponed_aes = -1; +static int hf_ncp_ipx_send_pkt = -1; +static int hf_ncp_items_changed = -1; +static int hf_ncp_items_checked = -1; +static int hf_ncp_items_count = -1; +static int hf_ncp_items_in_list = -1; +static int hf_ncp_items_in_packet = -1; +static int hf_ncp_job_control1_file_open = -1; +static int hf_ncp_job_control1_job_recovery = -1; +static int hf_ncp_job_control1_operator_hold = -1; +static int hf_ncp_job_control1_reservice = -1; +static int hf_ncp_job_control1_user_hold = -1; +static int hf_ncp_job_control_file_open = -1; +static int hf_ncp_job_control_flags = -1; +static int hf_ncp_job_control_flags_word = -1; +static int hf_ncp_job_control_job_recovery = -1; +static int hf_ncp_job_control_operator_hold = -1; +static int hf_ncp_job_control_reservice = -1; +static int hf_ncp_job_control_user_hold = -1; +static int hf_ncp_job_count = -1; +static int hf_ncp_job_file_handle = -1; +static int hf_ncp_job_file_handle_long = -1; +static int hf_ncp_job_file_name = -1; +static int hf_ncp_job_number = -1; +static int hf_ncp_job_number_long = -1; +static int hf_ncp_job_position = -1; +static int hf_ncp_job_position_word = -1; +static int hf_ncp_job_type = -1; +static int hf_ncp_lan_driver_number = -1; +static int hf_ncp_lan_drv_bd_inst = -1; +static int hf_ncp_lan_drv_bd_num = -1; +static int hf_ncp_lan_drv_card_id = -1; +static int hf_ncp_lan_drv_card_name = -1; +static int hf_ncp_lan_drv_dma_usage1 = -1; +static int hf_ncp_lan_drv_dma_usage2 = -1; +static int hf_ncp_lan_drv_flags = -1; +static int hf_ncp_lan_drv_interrupt1 = -1; +static int hf_ncp_lan_drv_interrupt2 = -1; +static int hf_ncp_lan_drv_io_ports_and_ranges_1 = -1; +static int hf_ncp_lan_drv_io_ports_and_ranges_2 = -1; +static int hf_ncp_lan_drv_io_ports_and_ranges_3 = -1; +static int hf_ncp_lan_drv_io_ports_and_ranges_4 = -1; +static int hf_ncp_lan_drv_io_reserved = -1; +static int hf_ncp_lan_drv_line_speed = -1; +static int hf_ncp_lan_drv_link = -1; +static int hf_ncp_lan_drv_log_name = -1; +static int hf_ncp_lan_drv_major_ver = -1; +static int hf_ncp_lan_drv_max_rcv_size = -1; +static int hf_ncp_lan_drv_max_size = -1; +static int hf_ncp_lan_drv_media_id = -1; +static int hf_ncp_lan_drv_mem_decode_0 = -1; +static int hf_ncp_lan_drv_mem_decode_1 = -1; +static int hf_ncp_lan_drv_mem_length_0 = -1; +static int hf_ncp_lan_drv_mem_length_1 = -1; +static int hf_ncp_lan_drv_minor_ver = -1; +static int hf_ncp_lan_drv_rcv_size = -1; +static int hf_ncp_lan_drv_reserved = -1; +static int hf_ncp_lan_drv_share = -1; +static int hf_ncp_lan_drv_slot = -1; +static int hf_ncp_lan_drv_snd_retries = -1; +static int hf_ncp_lan_drv_src_route = -1; +static int hf_ncp_lan_drv_trans_time = -1; +static int hf_ncp_lan_dvr_cfg_major_vrs = -1; +static int hf_ncp_lan_dvr_cfg_minor_vrs = -1; +static int hf_ncp_lan_dvr_mode_flags = -1; +static int hf_ncp_lan_dvr_node_addr = -1; +static int hf_ncp_large_internet_packets = -1; +static int hf_ncp_last_access_date = -1; +static int hf_ncp_last_access_time = -1; +static int hf_ncp_last_garbage_collect = -1; +static int hf_ncp_last_instance = -1; +static int hf_ncp_last_record_seen = -1; +static int hf_ncp_last_search_index = -1; +static int hf_ncp_last_seen = -1; +static int hf_ncp_last_sequence_number = -1; +static int hf_ncp_last_time_rx_buff_was_alloc = -1; +static int hf_ncp_length_64bit = -1; +static int hf_ncp_level = -1; +static int hf_ncp_lfs_counters = -1; +static int hf_ncp_limb_count = -1; +static int hf_ncp_limbo_data_streams_count = -1; +static int hf_ncp_limbo_used = -1; +static int hf_ncp_loaded_name_spaces = -1; +static int hf_ncp_local_connection_id = -1; +static int hf_ncp_local_login_info_ccode = -1; +static int hf_ncp_local_max_packet_size = -1; +static int hf_ncp_local_max_recv_size = -1; +static int hf_ncp_local_max_send_size = -1; +static int hf_ncp_local_target_socket = -1; +static int hf_ncp_lock_area_len = -1; +static int hf_ncp_lock_areas_start_offset = -1; +static int hf_ncp_lock_flag = -1; +static int hf_ncp_lock_name = -1; +static int hf_ncp_lock_status = -1; +static int hf_ncp_lock_timeout = -1; +static int hf_ncp_lock_type = -1; +static int hf_ncp_locked = -1; +static int hf_ncp_log_file_flag_high = -1; +static int hf_ncp_log_file_flag_low = -1; +static int hf_ncp_log_flag_call_back = -1; +static int hf_ncp_log_flag_lock_file = -1; +static int hf_ncp_log_ttl_rx_pkts = -1; +static int hf_ncp_log_ttl_tx_pkts = -1; +static int hf_ncp_logged_count = -1; +static int hf_ncp_logged_object_id = -1; +static int hf_ncp_logical_connection_number = -1; +static int hf_ncp_logical_drive_count = -1; +static int hf_ncp_logical_drive_number = -1; +static int hf_ncp_logical_lock_threshold = -1; +static int hf_ncp_logical_record_name = -1; +static int hf_ncp_login_expiration_time = -1; +static int hf_ncp_login_key = -1; +static int hf_ncp_login_name = -1; +static int hf_ncp_long_name = -1; +static int hf_ncp_lru_block_was_dirty = -1; +static int hf_ncp_lru_sit_time = -1; +static int hf_ncp_mac_attr = -1; +static int hf_ncp_mac_attr_archive = -1; +static int hf_ncp_mac_attr_execute_only = -1; +static int hf_ncp_mac_attr_hidden = -1; +static int hf_ncp_mac_attr_index = -1; +static int hf_ncp_mac_attr_r_audit = -1; +static int hf_ncp_mac_attr_r_only = -1; +static int hf_ncp_mac_attr_share = -1; +static int hf_ncp_mac_attr_smode1 = -1; +static int hf_ncp_mac_attr_smode2 = -1; +static int hf_ncp_mac_attr_smode3 = -1; +static int hf_ncp_mac_attr_subdirectory = -1; +static int hf_ncp_mac_attr_system = -1; +static int hf_ncp_mac_attr_transaction = -1; +static int hf_ncp_mac_attr_w_audit = -1; +static int hf_ncp_mac_backup_date = -1; +static int hf_ncp_mac_backup_time = -1; +static int hf_ncp_mac_base_directory_id = -1; +static int hf_ncp_mac_create_date = -1; +static int hf_ncp_mac_create_time = -1; +static int hf_ncp_mac_destination_base_id = -1; +static int hf_ncp_mac_finder_info = -1; +static int hf_ncp_mac_last_seen_id = -1; +static int hf_ncp_mac_root_ids = -1; +static int hf_ncp_mac_source_base_id = -1; +static int hf_ncp_major_version = -1; +static int hf_ncp_map_hash_node_count = -1; +static int hf_ncp_max_byte_cnt = -1; +static int hf_ncp_max_bytes = -1; +static int hf_ncp_max_data_streams = -1; +static int hf_ncp_max_dir_depth = -1; +static int hf_ncp_max_dirty_time = -1; +static int hf_ncp_max_num_of_conn = -1; +static int hf_ncp_max_num_of_dir_cache_buff = -1; +static int hf_ncp_max_num_of_lans = -1; +static int hf_ncp_max_num_of_media_types = -1; +static int hf_ncp_max_num_of_medias = -1; +static int hf_ncp_max_num_of_nme_sps = -1; +static int hf_ncp_max_num_of_protocols = -1; +static int hf_ncp_max_num_of_spool_pr = -1; +static int hf_ncp_max_num_of_stacks = -1; +static int hf_ncp_max_num_of_users = -1; +static int hf_ncp_max_num_of_vol = -1; +static int hf_ncp_max_phy_packet_size = -1; +static int hf_ncp_max_space = -1; +static int hf_ncp_maxspace = -1; +static int hf_ncp_may_had_out_of_order = -1; +static int hf_ncp_media_list = -1; +static int hf_ncp_media_list_count = -1; +static int hf_ncp_media_name = -1; +static int hf_ncp_media_number = -1; +static int hf_ncp_media_object_type = -1; +static int hf_ncp_member_name = -1; +static int hf_ncp_member_type = -1; +static int hf_ncp_message_language = -1; +static int hf_ncp_migrated_files = -1; +static int hf_ncp_migrated_sectors = -1; +static int hf_ncp_min_cache_report_thresh = -1; +static int hf_ncp_min_num_of_cache_buff = -1; +static int hf_ncp_min_num_of_dir_cache_buff = -1; +static int hf_ncp_min_time_since_file_delete = -1; +static int hf_ncp_minor_version = -1; +static int hf_ncp_mixed_mode_path_flag = -1; +static int hf_ncp_modified_counter = -1; +static int hf_ncp_modified_date = -1; +static int hf_ncp_modified_time = -1; +static int hf_ncp_modifier_id = -1; +static int hf_ncp_modify_dos_create = -1; +static int hf_ncp_modify_dos_delete = -1; +static int hf_ncp_modify_dos_info_mask = -1; +static int hf_ncp_modify_dos_inheritance = -1; +static int hf_ncp_modify_dos_laccess = -1; +static int hf_ncp_modify_dos_max_space = -1; +static int hf_ncp_modify_dos_mdate = -1; +static int hf_ncp_modify_dos_mid = -1; +static int hf_ncp_modify_dos_mtime = -1; +static int hf_ncp_modify_dos_open = -1; +static int hf_ncp_modify_dos_parent = -1; +static int hf_ncp_modify_dos_read = -1; +static int hf_ncp_modify_dos_search = -1; +static int hf_ncp_modify_dos_write = -1; +static int hf_ncp_more_flag = -1; +static int hf_ncp_more_properties = -1; +static int hf_ncp_move_cache_node = -1; +static int hf_ncp_move_cache_node_from_avai = -1; +static int hf_ncp_moved_the_ack_bit_dn = -1; +static int hf_ncp_name = -1; +static int hf_ncp_name12 = -1; +static int hf_ncp_name_len = -1; +static int hf_ncp_name_length = -1; +static int hf_ncp_name_list = -1; +static int hf_ncp_name_space = -1; +static int hf_ncp_name_space_name = -1; +static int hf_ncp_name_type = -1; +static int hf_ncp_ncompletion_code = -1; +static int hf_ncp_ncp_data_size = -1; +static int hf_ncp_ncp_extension_major_version = -1; +static int hf_ncp_ncp_extension_minor_version = -1; +static int hf_ncp_ncp_extension_name = -1; +static int hf_ncp_ncp_extension_number = -1; +static int hf_ncp_ncp_extension_numbers = -1; +static int hf_ncp_ncp_extension_revision_number = -1; +static int hf_ncp_ncp_peak_sta_in_use = -1; +static int hf_ncp_ncp_sta_in_use = -1; +static int hf_ncp_ndirty_blocks = -1; +static int hf_ncp_nds_request_flags = -1; +static int hf_ncp_nds_request_flags_alias_ref = -1; +static int hf_ncp_nds_request_flags_dn_ref = -1; +static int hf_ncp_nds_request_flags_local_entry = -1; +static int hf_ncp_nds_request_flags_no_such_entry = -1; +static int hf_ncp_nds_request_flags_output = -1; +static int hf_ncp_nds_request_flags_reply_data_size = -1; +static int hf_ncp_nds_request_flags_req_cnt = -1; +static int hf_ncp_nds_request_flags_req_data_size = -1; +static int hf_ncp_nds_request_flags_trans_ref = -1; +static int hf_ncp_nds_request_flags_trans_ref2 = -1; +static int hf_ncp_nds_request_flags_type_ref = -1; +static int hf_ncp_nds_request_flags_up_ref = -1; +static int hf_ncp_nds_status = -1; +static int hf_ncp_net_id_number = -1; +static int hf_ncp_net_status = -1; +static int hf_ncp_netbios_broadcast_was_propogated = -1; +static int hf_ncp_netbios_progated = -1; +static int hf_ncp_netware_access_handle = -1; +static int hf_ncp_network_address = -1; +static int hf_ncp_network_node_address = -1; +static int hf_ncp_network_number = -1; +static int hf_ncp_network_socket = -1; +static int hf_ncp_new_access_rights_create = -1; +static int hf_ncp_new_access_rights_delete = -1; +static int hf_ncp_new_access_rights_mask = -1; +static int hf_ncp_new_access_rights_modify = -1; +static int hf_ncp_new_access_rights_open = -1; +static int hf_ncp_new_access_rights_parental = -1; +static int hf_ncp_new_access_rights_read = -1; +static int hf_ncp_new_access_rights_search = -1; +static int hf_ncp_new_access_rights_supervisor = -1; +static int hf_ncp_new_access_rights_write = -1; +static int hf_ncp_new_directory_id = -1; +static int hf_ncp_new_ea_handle = -1; +static int hf_ncp_new_file_name = -1; +static int hf_ncp_new_file_name_len = -1; +static int hf_ncp_new_file_size = -1; +static int hf_ncp_new_object_name = -1; +static int hf_ncp_new_password = -1; +static int hf_ncp_new_path = -1; +static int hf_ncp_new_position = -1; +static int hf_ncp_next_cnt_block = -1; +static int hf_ncp_next_huge_state_info = -1; +static int hf_ncp_next_limb_scan_num = -1; +static int hf_ncp_next_object_id = -1; +static int hf_ncp_next_record = -1; +static int hf_ncp_next_request_record = -1; +static int hf_ncp_next_search_index = -1; +static int hf_ncp_next_search_number = -1; +static int hf_ncp_next_starting_number = -1; +static int hf_ncp_next_trustee_entry = -1; +static int hf_ncp_next_volume_number = -1; +static int hf_ncp_nlm_count = -1; +static int hf_ncp_nlm_flags = -1; +static int hf_ncp_nlm_flags_multiple = -1; +static int hf_ncp_nlm_flags_pseudo = -1; +static int hf_ncp_nlm_flags_reentrant = -1; +static int hf_ncp_nlm_flags_synchronize = -1; +static int hf_ncp_nlm_load_options = -1; +static int hf_ncp_nlm_name_stringz = -1; +static int hf_ncp_nlm_number = -1; +static int hf_ncp_nlm_numbers = -1; +static int hf_ncp_nlm_start_num = -1; +static int hf_ncp_nlm_type = -1; +static int hf_ncp_nlms_in_list = -1; +static int hf_ncp_no_avail_conns = -1; +static int hf_ncp_no_ecb_available_count = -1; +static int hf_ncp_no_mem_for_station = -1; +static int hf_ncp_no_more_mem_avail = -1; +static int hf_ncp_no_receive_buff = -1; +static int hf_ncp_no_space_for_service = -1; +static int hf_ncp_node = -1; +static int hf_ncp_node_flags = -1; +static int hf_ncp_non_ded_flag = -1; +static int hf_ncp_non_freeable_avail_sub_alloc_sectors = -1; +static int hf_ncp_non_freeable_limbo_sectors = -1; +static int hf_ncp_not_my_network = -1; +static int hf_ncp_not_supported_mask = -1; +static int hf_ncp_not_usable_sub_alloc_sectors = -1; +static int hf_ncp_not_yet_purgeable_blocks = -1; +static int hf_ncp_ns_info_mask = -1; +static int hf_ncp_ns_info_mask_acc_date = -1; +static int hf_ncp_ns_info_mask_adate = -1; +static int hf_ncp_ns_info_mask_aid = -1; +static int hf_ncp_ns_info_mask_atime = -1; +static int hf_ncp_ns_info_mask_cdate = -1; +static int hf_ncp_ns_info_mask_ctime = -1; +static int hf_ncp_ns_info_mask_fatt = -1; +static int hf_ncp_ns_info_mask_max_acc_mask = -1; +static int hf_ncp_ns_info_mask_max_space = -1; +static int hf_ncp_ns_info_mask_modify = -1; +static int hf_ncp_ns_info_mask_owner = -1; +static int hf_ncp_ns_info_mask_udate = -1; +static int hf_ncp_ns_info_mask_uid = -1; +static int hf_ncp_ns_info_mask_utime = -1; +static int hf_ncp_ns_specific_info = -1; +static int hf_ncp_num_bytes = -1; +static int hf_ncp_num_dir_cache_buff = -1; +static int hf_ncp_num_of_allocs = -1; +static int hf_ncp_num_of_cache_check_no_wait = -1; +static int hf_ncp_num_of_cache_checks = -1; +static int hf_ncp_num_of_cache_dirty_checks = -1; +static int hf_ncp_num_of_cache_hits = -1; +static int hf_ncp_num_of_cache_hits_no_wait = -1; +static int hf_ncp_num_of_cc_in_pkt = -1; +static int hf_ncp_num_of_checks = -1; +static int hf_ncp_num_of_dir_cache_buff = -1; +static int hf_ncp_num_of_dirty_cache_checks = -1; +static int hf_ncp_num_of_entries = -1; +static int hf_ncp_num_of_files_migrated = -1; +static int hf_ncp_num_of_garb_coll = -1; +static int hf_ncp_num_of_ncp_reqs = -1; +static int hf_ncp_num_of_ref_publics = -1; +static int hf_ncp_num_of_segments = -1; +static int hf_ncp_number_of_attributes = -1; +static int hf_ncp_number_of_cpus = -1; +static int hf_ncp_number_of_data_streams = -1; +static int hf_ncp_number_of_dynamic_memory_areas = -1; +static int hf_ncp_number_of_entries = -1; +static int hf_ncp_number_of_locks = -1; +static int hf_ncp_number_of_minutes_to_delay = -1; +static int hf_ncp_number_of_ncp_extensions = -1; +static int hf_ncp_number_of_ns_loaded = -1; +static int hf_ncp_number_of_protocols = -1; +static int hf_ncp_number_of_records = -1; +static int hf_ncp_number_of_semaphores = -1; +static int hf_ncp_number_of_service_processes = -1; +static int hf_ncp_number_of_set_categories = -1; +static int hf_ncp_number_of_sms = -1; +static int hf_ncp_number_of_stations = -1; +static int hf_ncp_nxt_search_num = -1; +static int hf_ncp_o_c_ret_flags = -1; +static int hf_ncp_object_count = -1; +static int hf_ncp_object_flags = -1; +static int hf_ncp_object_has_properites = -1; +static int hf_ncp_object_id = -1; +static int hf_ncp_object_id_count = -1; +static int hf_ncp_object_id_info = -1; +static int hf_ncp_object_info_rtn_count = -1; +static int hf_ncp_object_name = -1; +static int hf_ncp_object_name_len = -1; +static int hf_ncp_object_name_stringz = -1; +static int hf_ncp_object_number = -1; +static int hf_ncp_object_security = -1; +static int hf_ncp_object_type = -1; +static int hf_ncp_old_file_name = -1; +static int hf_ncp_old_file_size = -1; +static int hf_ncp_oldest_deleted_file_age_in_ticks = -1; +static int hf_ncp_open_count = -1; +static int hf_ncp_open_create_action = -1; +static int hf_ncp_open_create_action_compressed = -1; +static int hf_ncp_open_create_action_created = -1; +static int hf_ncp_open_create_action_opened = -1; +static int hf_ncp_open_create_action_read_only = -1; +static int hf_ncp_open_create_action_replaced = -1; +static int hf_ncp_open_create_mode = -1; +static int hf_ncp_open_create_mode_create = -1; +static int hf_ncp_open_create_mode_open = -1; +static int hf_ncp_open_create_mode_oplock = -1; +static int hf_ncp_open_create_mode_replace = -1; +static int hf_ncp_open_for_read_count = -1; +static int hf_ncp_open_for_write_count = -1; +static int hf_ncp_open_rights = -1; +static int hf_ncp_open_rights_compat = -1; +static int hf_ncp_open_rights_deny_read = -1; +static int hf_ncp_open_rights_deny_write = -1; +static int hf_ncp_open_rights_read_only = -1; +static int hf_ncp_open_rights_write_only = -1; +static int hf_ncp_open_rights_write_thru = -1; +static int hf_ncp_option_number = -1; +static int hf_ncp_orig_num_cache_buff = -1; +static int hf_ncp_original_size = -1; +static int hf_ncp_os_language_id = -1; +static int hf_ncp_os_major_version = -1; +static int hf_ncp_os_minor_version = -1; +static int hf_ncp_os_revision = -1; +static int hf_ncp_other_file_fork_fat = -1; +static int hf_ncp_other_file_fork_size = -1; +static int hf_ncp_outgoing_packet_discarded_no_turbo_buffer = -1; +static int hf_ncp_outstanding_compression_ios = -1; +static int hf_ncp_outstanding_ios = -1; +static int hf_ncp_packet_rs_too_small_count = -1; +static int hf_ncp_packet_rx_misc_error_count = -1; +static int hf_ncp_packet_rx_overflow_count = -1; +static int hf_ncp_packet_rx_too_big_count = -1; +static int hf_ncp_packet_tx_misc_error_count = -1; +static int hf_ncp_packet_tx_too_big_count = -1; +static int hf_ncp_packet_tx_too_small_count = -1; +static int hf_ncp_packets_discarded_by_hop_count = -1; +static int hf_ncp_packets_discarded_unknown_net = -1; +static int hf_ncp_packets_from_invalid_connection = -1; +static int hf_ncp_packets_received_during_processing = -1; +static int hf_ncp_packets_with_bad_request_type = -1; +static int hf_ncp_packets_with_bad_sequence_number = -1; +static int hf_ncp_page_table_owner_flag = -1; +static int hf_ncp_parent_base_id = -1; +static int hf_ncp_parent_directory_base = -1; +static int hf_ncp_parent_dos_directory_base = -1; +static int hf_ncp_parent_id = -1; +static int hf_ncp_parent_object_number = -1; +static int hf_ncp_password = -1; +static int hf_ncp_path = -1; +static int hf_ncp_path_and_name = -1; +static int hf_ncp_path_base = -1; +static int hf_ncp_path_component_count = -1; +static int hf_ncp_path_component_size = -1; +static int hf_ncp_path_cookie_flags = -1; +static int hf_ncp_path_count = -1; +static int hf_ncp_pending_io_commands = -1; +static int hf_ncp_percent_of_vol_used_by_dirs = -1; +static int hf_ncp_physical_disk_channel = -1; +static int hf_ncp_physical_disk_number = -1; +static int hf_ncp_physical_drive_count = -1; +static int hf_ncp_physical_drive_type = -1; +static int hf_ncp_physical_lock_threshold = -1; +static int hf_ncp_physical_read_errors = -1; +static int hf_ncp_physical_read_requests = -1; +static int hf_ncp_physical_write_errors = -1; +static int hf_ncp_physical_write_requests = -1; +static int hf_ncp_poll_abort_conn = -1; +static int hf_ncp_poll_rem_old_out_of_order = -1; +static int hf_ncp_positive_acknowledges_sent = -1; +static int hf_ncp_post_poned_events = -1; +static int hf_ncp_pre_compressed_sectors = -1; +static int hf_ncp_previous_control_packet = -1; +static int hf_ncp_previous_record = -1; +static int hf_ncp_primary_entry = -1; +static int hf_ncp_print_flags = -1; +static int hf_ncp_print_flags_banner = -1; +static int hf_ncp_print_flags_cr = -1; +static int hf_ncp_print_flags_del_spool = -1; +static int hf_ncp_print_flags_exp_tabs = -1; +static int hf_ncp_print_flags_ff = -1; +static int hf_ncp_print_server_version = -1; +static int hf_ncp_print_to_file_flag = -1; +static int hf_ncp_printer_halted = -1; +static int hf_ncp_printer_offline = -1; +static int hf_ncp_priority = -1; +static int hf_ncp_privileges = -1; +static int hf_ncp_pro_dos_info = -1; +static int hf_ncp_processor_type = -1; +static int hf_ncp_product_major_version = -1; +static int hf_ncp_product_minor_version = -1; +static int hf_ncp_product_revision_version = -1; +static int hf_ncp_projected_comp_size = -1; +static int hf_ncp_property_data = -1; +static int hf_ncp_property_has_more_segments = -1; +static int hf_ncp_property_name = -1; +static int hf_ncp_property_name_16 = -1; +static int hf_ncp_property_segment = -1; +static int hf_ncp_property_type = -1; +static int hf_ncp_property_value = -1; +static int hf_ncp_proposed_max_size = -1; +static int hf_ncp_protocol_board_num = -1; +static int hf_ncp_protocol_flags = -1; +static int hf_ncp_protocol_id = -1; +static int hf_ncp_protocol_name = -1; +static int hf_ncp_protocol_number = -1; +static int hf_ncp_purge_c_code = -1; +static int hf_ncp_purge_count = -1; +static int hf_ncp_purge_flags = -1; +static int hf_ncp_purge_list = -1; +static int hf_ncp_purgeable_blocks = -1; +static int hf_ncp_qms_version = -1; +static int hf_ncp_queue_id = -1; +static int hf_ncp_queue_name = -1; +static int hf_ncp_queue_start_position = -1; +static int hf_ncp_queue_status = -1; +static int hf_ncp_queue_status_new_jobs = -1; +static int hf_ncp_queue_status_pserver = -1; +static int hf_ncp_queue_status_svc_jobs = -1; +static int hf_ncp_queue_type = -1; +static int hf_ncp_r_tag_num = -1; +static int hf_ncp_re_mirror_current_offset = -1; +static int hf_ncp_re_mirror_drive_number = -1; +static int hf_ncp_read_beyond_write = -1; +static int hf_ncp_read_exist_blck = -1; +static int hf_ncp_read_exist_part_read = -1; +static int hf_ncp_read_exist_read_err = -1; +static int hf_ncp_read_exist_write_wait = -1; +static int hf_ncp_realloc_slot = -1; +static int hf_ncp_realloc_slot_came_too_soon = -1; +static int hf_ncp_rec_lock_count = -1; +static int hf_ncp_record_end = -1; +static int hf_ncp_record_in_use = -1; +static int hf_ncp_record_start = -1; +static int hf_ncp_redirected_printer = -1; +static int hf_ncp_reexecute_request = -1; +static int hf_ncp_reference_count = -1; +static int hf_ncp_relations_count = -1; +static int hf_ncp_rem_cache_node = -1; +static int hf_ncp_rem_cache_node_from_avail = -1; +static int hf_ncp_remote_max_packet_size = -1; +static int hf_ncp_remote_target_id = -1; +static int hf_ncp_removable_flag = -1; +static int hf_ncp_remove_open_rights = -1; +static int hf_ncp_remove_open_rights_comp = -1; +static int hf_ncp_remove_open_rights_dr = -1; +static int hf_ncp_remove_open_rights_dw = -1; +static int hf_ncp_remove_open_rights_ro = -1; +static int hf_ncp_remove_open_rights_wo = -1; +static int hf_ncp_remove_open_rights_write_thru = -1; +static int hf_ncp_rename_flag = -1; +static int hf_ncp_rename_flag_comp = -1; +static int hf_ncp_rename_flag_no = -1; +static int hf_ncp_rename_flag_ren = -1; +static int hf_ncp_replies_cancelled = -1; +static int hf_ncp_reply_canceled = -1; +static int hf_ncp_reply_queue_job_numbers = -1; +static int hf_ncp_request_bit_map = -1; +static int hf_ncp_request_bit_map_ratt = -1; +static int hf_ncp_request_bit_map_ret_acc_date = -1; +static int hf_ncp_request_bit_map_ret_acc_priv = -1; +static int hf_ncp_request_bit_map_ret_afp_ent = -1; +static int hf_ncp_request_bit_map_ret_afp_parent = -1; +static int hf_ncp_request_bit_map_ret_bak_date = -1; +static int hf_ncp_request_bit_map_ret_cr_date = -1; +static int hf_ncp_request_bit_map_ret_data_fork = -1; +static int hf_ncp_request_bit_map_ret_finder = -1; +static int hf_ncp_request_bit_map_ret_long_nm = -1; +static int hf_ncp_request_bit_map_ret_mod_date = -1; +static int hf_ncp_request_bit_map_ret_num_off = -1; +static int hf_ncp_request_bit_map_ret_owner = -1; +static int hf_ncp_request_bit_map_ret_res_fork = -1; +static int hf_ncp_request_bit_map_ret_short = -1; +static int hf_ncp_request_code = -1; +static int hf_ncp_requests_reprocessed = -1; +static int hf_ncp_reserved = -1; +static int hf_ncp_reserved10 = -1; +static int hf_ncp_reserved12 = -1; +static int hf_ncp_reserved120 = -1; +static int hf_ncp_reserved16 = -1; +static int hf_ncp_reserved2 = -1; +static int hf_ncp_reserved20 = -1; +static int hf_ncp_reserved28 = -1; +static int hf_ncp_reserved3 = -1; +static int hf_ncp_reserved36 = -1; +static int hf_ncp_reserved4 = -1; +static int hf_ncp_reserved44 = -1; +static int hf_ncp_reserved48 = -1; +static int hf_ncp_reserved50 = -1; +static int hf_ncp_reserved56 = -1; +static int hf_ncp_reserved6 = -1; +static int hf_ncp_reserved64 = -1; +static int hf_ncp_reserved8 = -1; +static int hf_ncp_reserved_or_directory_number = -1; +static int hf_ncp_resource_count = -1; +static int hf_ncp_resource_fork_len = -1; +static int hf_ncp_resource_fork_size = -1; +static int hf_ncp_resource_name = -1; +static int hf_ncp_resource_sig = -1; +static int hf_ncp_restore_time = -1; +static int hf_ncp_restriction = -1; +static int hf_ncp_restrictions_enforced = -1; +static int hf_ncp_ret_info_mask = -1; +static int hf_ncp_ret_info_mask_actual = -1; +static int hf_ncp_ret_info_mask_alloc = -1; +static int hf_ncp_ret_info_mask_arch = -1; +static int hf_ncp_ret_info_mask_attr = -1; +static int hf_ncp_ret_info_mask_create = -1; +static int hf_ncp_ret_info_mask_dir = -1; +static int hf_ncp_ret_info_mask_eattr = -1; +static int hf_ncp_ret_info_mask_fname = -1; +static int hf_ncp_ret_info_mask_id = -1; +static int hf_ncp_ret_info_mask_logical = -1; +static int hf_ncp_ret_info_mask_mod = -1; +static int hf_ncp_ret_info_mask_ns = -1; +static int hf_ncp_ret_info_mask_ns_attr = -1; +static int hf_ncp_ret_info_mask_rights = -1; +static int hf_ncp_ret_info_mask_size = -1; +static int hf_ncp_ret_info_mask_tspace = -1; +static int hf_ncp_retry_tx_count = -1; +static int hf_ncp_return_info_count = -1; +static int hf_ncp_returned_list_count = -1; +static int hf_ncp_rev_query_flag = -1; +static int hf_ncp_revision = -1; +static int hf_ncp_revision_number = -1; +static int hf_ncp_rights_grant_mask = -1; +static int hf_ncp_rights_grant_mask_create = -1; +static int hf_ncp_rights_grant_mask_del = -1; +static int hf_ncp_rights_grant_mask_mod = -1; +static int hf_ncp_rights_grant_mask_open = -1; +static int hf_ncp_rights_grant_mask_parent = -1; +static int hf_ncp_rights_grant_mask_read = -1; +static int hf_ncp_rights_grant_mask_search = -1; +static int hf_ncp_rights_grant_mask_write = -1; +static int hf_ncp_rights_revoke_mask = -1; +static int hf_ncp_rights_revoke_mask_create = -1; +static int hf_ncp_rights_revoke_mask_del = -1; +static int hf_ncp_rights_revoke_mask_mod = -1; +static int hf_ncp_rights_revoke_mask_open = -1; +static int hf_ncp_rights_revoke_mask_parent = -1; +static int hf_ncp_rights_revoke_mask_read = -1; +static int hf_ncp_rights_revoke_mask_search = -1; +static int hf_ncp_rights_revoke_mask_write = -1; +static int hf_ncp_rip_socket_num = -1; +static int hf_ncp_route_hops = -1; +static int hf_ncp_route_time = -1; +static int hf_ncp_router_dn_flag = -1; +static int hf_ncp_rpc_c_code = -1; +static int hf_ncp_rpy_nearest_srv_flag = -1; +static int hf_ncp_rx_buffer_size = -1; +static int hf_ncp_rx_buffers = -1; +static int hf_ncp_rx_buffers_75 = -1; +static int hf_ncp_rx_buffers_checked_out = -1; +static int hf_ncp_s_day = -1; +static int hf_ncp_s_day_of_week = -1; +static int hf_ncp_s_hour = -1; +static int hf_ncp_s_m_info = -1; +static int hf_ncp_s_minute = -1; +static int hf_ncp_s_module_name = -1; +static int hf_ncp_s_month = -1; +static int hf_ncp_s_offset_64bit = -1; +static int hf_ncp_s_second = -1; +static int hf_ncp_salvageable_file_entry_number = -1; +static int hf_ncp_sap_socket_number = -1; +static int hf_ncp_sattr = -1; +static int hf_ncp_sattr_archive = -1; +static int hf_ncp_sattr_execute_confirm = -1; +static int hf_ncp_sattr_exonly = -1; +static int hf_ncp_sattr_hid = -1; +static int hf_ncp_sattr_ronly = -1; +static int hf_ncp_sattr_shareable = -1; +static int hf_ncp_sattr_sub = -1; +static int hf_ncp_sattr_sys = -1; +static int hf_ncp_saved_an_out_of_order_packet = -1; +static int hf_ncp_scan_items = -1; +static int hf_ncp_search_att_archive = -1; +static int hf_ncp_search_att_execute_confirm = -1; +static int hf_ncp_search_att_execute_only = -1; +static int hf_ncp_search_att_hidden = -1; +static int hf_ncp_search_att_low = -1; +static int hf_ncp_search_att_read_only = -1; +static int hf_ncp_search_att_shareable = -1; +static int hf_ncp_search_att_sub = -1; +static int hf_ncp_search_att_system = -1; +static int hf_ncp_search_attr_all_files = -1; +static int hf_ncp_search_bit_map = -1; +static int hf_ncp_search_bit_map_files = -1; +static int hf_ncp_search_bit_map_hidden = -1; +static int hf_ncp_search_bit_map_sub = -1; +static int hf_ncp_search_bit_map_sys = -1; +static int hf_ncp_search_conn_number = -1; +static int hf_ncp_search_instance = -1; +static int hf_ncp_search_number = -1; +static int hf_ncp_search_pattern = -1; +static int hf_ncp_search_sequence = -1; +static int hf_ncp_search_sequence_word = -1; +static int hf_ncp_sec_rel_to_y2k = -1; +static int hf_ncp_sector_size = -1; +static int hf_ncp_sectors_per_block = -1; +static int hf_ncp_sectors_per_cluster = -1; +static int hf_ncp_sectors_per_cluster_long = -1; +static int hf_ncp_sectors_per_track = -1; +static int hf_ncp_security_equiv_list = -1; +static int hf_ncp_security_flag = -1; +static int hf_ncp_security_restriction_version = -1; +static int hf_ncp_semaphore_handle = -1; +static int hf_ncp_semaphore_name = -1; +static int hf_ncp_semaphore_name_len = -1; +static int hf_ncp_semaphore_open_count = -1; +static int hf_ncp_semaphore_share_count = -1; +static int hf_ncp_semaphore_time_out = -1; +static int hf_ncp_semaphore_value = -1; +static int hf_ncp_send_hold_off_message = -1; +static int hf_ncp_send_status = -1; +static int hf_ncp_sent_a_dup_reply = -1; +static int hf_ncp_sent_pos_ack = -1; +static int hf_ncp_sequence_byte = -1; +static int hf_ncp_sequence_number = -1; +static int hf_ncp_server_address = -1; +static int hf_ncp_server_app_num = -1; +static int hf_ncp_server_id_number = -1; +static int hf_ncp_server_info_flags = -1; +static int hf_ncp_server_list_flags = -1; +static int hf_ncp_server_name = -1; +static int hf_ncp_server_name_len = -1; +static int hf_ncp_server_name_stringz = -1; +static int hf_ncp_server_network_address = -1; +static int hf_ncp_server_node = -1; +static int hf_ncp_server_serial_number = -1; +static int hf_ncp_server_station = -1; +static int hf_ncp_server_station_list = -1; +static int hf_ncp_server_station_long = -1; +static int hf_ncp_server_status_record = -1; +static int hf_ncp_server_task_number = -1; +static int hf_ncp_server_task_number_long = -1; +static int hf_ncp_server_type = -1; +static int hf_ncp_server_utilization = -1; +static int hf_ncp_server_utilization_percentage = -1; +static int hf_ncp_set_cmd_category = -1; +static int hf_ncp_set_cmd_flags = -1; +static int hf_ncp_set_cmd_name = -1; +static int hf_ncp_set_cmd_type = -1; +static int hf_ncp_set_cmd_value_num = -1; +static int hf_ncp_set_parm_name = -1; +static int hf_ncp_sft_error_table = -1; +static int hf_ncp_sft_support_level = -1; +static int hf_ncp_shareable_lock_count = -1; +static int hf_ncp_shared_memory_addresses = -1; +static int hf_ncp_short_name = -1; +static int hf_ncp_short_stack_name = -1; +static int hf_ncp_shouldnt_be_ack_here = -1; +static int hf_ncp_sibling_count = -1; +static int hf_ncp_signature = -1; +static int hf_ncp_sm_info_size = -1; +static int hf_ncp_smids = -1; +static int hf_ncp_software_description = -1; +static int hf_ncp_software_driver_type = -1; +static int hf_ncp_software_major_version_number = -1; +static int hf_ncp_software_minor_version_number = -1; +static int hf_ncp_someone_else_did_it_0 = -1; +static int hf_ncp_someone_else_did_it_1 = -1; +static int hf_ncp_someone_else_did_it_2 = -1; +static int hf_ncp_someone_else_using_this_file = -1; +static int hf_ncp_source_component_count = -1; +static int hf_ncp_source_dir_handle = -1; +static int hf_ncp_source_originate_time = -1; +static int hf_ncp_source_path = -1; +static int hf_ncp_source_return_time = -1; +static int hf_ncp_space_migrated = -1; +static int hf_ncp_space_restriction_node_count = -1; +static int hf_ncp_space_used = -1; +static int hf_ncp_spx_abort_conn = -1; +static int hf_ncp_spx_bad_in_pkt = -1; +static int hf_ncp_spx_bad_listen = -1; +static int hf_ncp_spx_bad_send = -1; +static int hf_ncp_spx_est_conn_fail = -1; +static int hf_ncp_spx_est_conn_req = -1; +static int hf_ncp_spx_incoming_pkt = -1; +static int hf_ncp_spx_listen_con_fail = -1; +static int hf_ncp_spx_listen_con_req = -1; +static int hf_ncp_spx_listen_pkt = -1; +static int hf_ncp_spx_max_conn = -1; +static int hf_ncp_spx_max_used_conn = -1; +static int hf_ncp_spx_no_ses_listen = -1; +static int hf_ncp_spx_send = -1; +static int hf_ncp_spx_send_fail = -1; +static int hf_ncp_spx_supp_pkt = -1; +static int hf_ncp_spx_watch_dog = -1; +static int hf_ncp_spx_window_choke = -1; +static int hf_ncp_src_name_space = -1; +static int hf_ncp_stack_count = -1; +static int hf_ncp_stack_full_name_str = -1; +static int hf_ncp_stack_major_vn = -1; +static int hf_ncp_stack_minor_vn = -1; +static int hf_ncp_stack_number = -1; +static int hf_ncp_stack_short_name = -1; +static int hf_ncp_start_conn_num = -1; +static int hf_ncp_start_number = -1; +static int hf_ncp_start_number_flag = -1; +static int hf_ncp_start_search_number = -1; +static int hf_ncp_start_station_error = -1; +static int hf_ncp_start_volume_number = -1; +static int hf_ncp_starting_block = -1; +static int hf_ncp_starting_number = -1; +static int hf_ncp_stat_major_version = -1; +static int hf_ncp_stat_minor_version = -1; +static int hf_ncp_stat_table_major_version = -1; +static int hf_ncp_stat_table_minor_version = -1; +static int hf_ncp_station_list = -1; +static int hf_ncp_station_number = -1; +static int hf_ncp_status = -1; +static int hf_ncp_status_flag_bits = -1; +static int hf_ncp_status_flag_bits_audit = -1; +static int hf_ncp_status_flag_bits_comp = -1; +static int hf_ncp_status_flag_bits_im_purge = -1; +static int hf_ncp_status_flag_bits_migrate = -1; +static int hf_ncp_status_flag_bits_nss = -1; +static int hf_ncp_status_flag_bits_ro = -1; +static int hf_ncp_status_flag_bits_suballoc = -1; +static int hf_ncp_still_doing_the_last_req = -1; +static int hf_ncp_still_transmitting = -1; +static int hf_ncp_sub_alloc_clusters = -1; +static int hf_ncp_sub_alloc_freeable_clusters = -1; +static int hf_ncp_sub_directory = -1; +static int hf_ncp_suggested_file_size = -1; +static int hf_ncp_support_module_id = -1; +static int hf_ncp_synch_name = -1; +static int hf_ncp_system_interval_marker = -1; +static int hf_ncp_tab_size = -1; +static int hf_ncp_target_client_list = -1; +static int hf_ncp_target_connection_number = -1; +static int hf_ncp_target_dir_handle = -1; +static int hf_ncp_target_entry_id = -1; +static int hf_ncp_target_execution_time = -1; +static int hf_ncp_target_file_handle = -1; +static int hf_ncp_target_file_offset = -1; +static int hf_ncp_target_message = -1; +static int hf_ncp_target_ptr = -1; +static int hf_ncp_target_receive_time = -1; +static int hf_ncp_target_server_id_number = -1; +static int hf_ncp_target_transmit_time = -1; +static int hf_ncp_task_num_byte = -1; +static int hf_ncp_task_number_word = -1; +static int hf_ncp_text_job_description = -1; +static int hf_ncp_thrashing_count = -1; +static int hf_ncp_time_to_net = -1; +static int hf_ncp_timeout_limit = -1; +static int hf_ncp_timesync_status_active = -1; +static int hf_ncp_timesync_status_ext_sync = -1; +static int hf_ncp_timesync_status_external = -1; +static int hf_ncp_timesync_status_flags = -1; +static int hf_ncp_timesync_status_net_sync = -1; +static int hf_ncp_timesync_status_server_type = -1; +static int hf_ncp_timesync_status_sync = -1; +static int hf_ncp_too_many_ack_frag = -1; +static int hf_ncp_too_many_hops = -1; +static int hf_ncp_total_blks_to_dcompress = -1; +static int hf_ncp_total_blocks = -1; +static int hf_ncp_total_cache_writes = -1; +static int hf_ncp_total_changed_fats = -1; +static int hf_ncp_total_cnt_blocks = -1; +static int hf_ncp_total_common_cnts = -1; +static int hf_ncp_total_dir_entries = -1; +static int hf_ncp_total_directory_slots = -1; +static int hf_ncp_total_extended_directory_extants = -1; +static int hf_ncp_total_file_service_packets = -1; +static int hf_ncp_total_files_opened = -1; +static int hf_ncp_total_lfs_counters = -1; +static int hf_ncp_total_offspring = -1; +static int hf_ncp_total_other_packets = -1; +static int hf_ncp_total_queue_jobs = -1; +static int hf_ncp_total_read_requests = -1; +static int hf_ncp_total_request = -1; +static int hf_ncp_total_request_packets = -1; +static int hf_ncp_total_routed_packets = -1; +static int hf_ncp_total_rx_packet_count = -1; +static int hf_ncp_total_rx_packets = -1; +static int hf_ncp_total_rx_pkts = -1; +static int hf_ncp_total_server_memory = -1; +static int hf_ncp_total_stream_size_struct_space_alloc = -1; +static int hf_ncp_total_trans_backed_out = -1; +static int hf_ncp_total_trans_performed = -1; +static int hf_ncp_total_tx_packet_count = -1; +static int hf_ncp_total_tx_packets = -1; +static int hf_ncp_total_tx_pkts = -1; +static int hf_ncp_total_unfilled_backout_requests = -1; +static int hf_ncp_total_volume_clusters = -1; +static int hf_ncp_total_write_requests = -1; +static int hf_ncp_total_write_trans_performed = -1; +static int hf_ncp_track_on_flag = -1; +static int hf_ncp_transaction_disk_space = -1; +static int hf_ncp_transaction_fat_allocations = -1; +static int hf_ncp_transaction_file_size_changes = -1; +static int hf_ncp_transaction_files_truncated = -1; +static int hf_ncp_transaction_number = -1; +static int hf_ncp_transaction_tracking_enabled = -1; +static int hf_ncp_transaction_tracking_supported = -1; +static int hf_ncp_transaction_volume_number = -1; +static int hf_ncp_transport_addr = -1; +static int hf_ncp_transport_type = -1; +static int hf_ncp_trustee_id_set = -1; +static int hf_ncp_trustee_list_node_count = -1; +static int hf_ncp_trustee_rights_create = -1; +static int hf_ncp_trustee_rights_del = -1; +static int hf_ncp_trustee_rights_low = -1; +static int hf_ncp_trustee_rights_modify = -1; +static int hf_ncp_trustee_rights_open = -1; +static int hf_ncp_trustee_rights_parent = -1; +static int hf_ncp_trustee_rights_read = -1; +static int hf_ncp_trustee_rights_search = -1; +static int hf_ncp_trustee_rights_super = -1; +static int hf_ncp_trustee_rights_write = -1; +static int hf_ncp_trustee_set_number = -1; +static int hf_ncp_try_to_write_too_much = -1; +static int hf_ncp_ttl_comp_blks = -1; +static int hf_ncp_ttl_ds_disk_space_alloc = -1; +static int hf_ncp_ttl_eas = -1; +static int hf_ncp_ttl_eas_data_size = -1; +static int hf_ncp_ttl_eas_key_size = -1; +static int hf_ncp_ttl_inter_blks = -1; +static int hf_ncp_ttl_migrated_size = -1; +static int hf_ncp_ttl_num_of_r_tags = -1; +static int hf_ncp_ttl_num_of_set_cmds = -1; +static int hf_ncp_ttl_pckts_routed = -1; +static int hf_ncp_ttl_pckts_srvcd = -1; +static int hf_ncp_ttl_values_length = -1; +static int hf_ncp_ttl_write_data_size = -1; +static int hf_ncp_tts_flag = -1; +static int hf_ncp_tts_level = -1; +static int hf_ncp_turbo_fat_build_failed = -1; +static int hf_ncp_turbo_used_for_file_service = -1; +static int hf_ncp_un_claimed_packets = -1; +static int hf_ncp_un_compressable_data_streams_count = -1; +static int hf_ncp_un_used = -1; +static int hf_ncp_un_used_directory_entries = -1; +static int hf_ncp_un_used_extended_directory_extants = -1; +static int hf_ncp_unclaimed_packets = -1; +static int hf_ncp_undefined_28 = -1; +static int hf_ncp_undefined_8 = -1; +static int hf_ncp_unique_id = -1; +static int hf_ncp_unknown_network = -1; +static int hf_ncp_unused_disk_blocks = -1; +static int hf_ncp_update_date = -1; +static int hf_ncp_update_id = -1; +static int hf_ncp_update_time = -1; +static int hf_ncp_used_blocks = -1; +static int hf_ncp_used_space = -1; +static int hf_ncp_user_id = -1; +static int hf_ncp_user_info_audit_conn = -1; +static int hf_ncp_user_info_audited = -1; +static int hf_ncp_user_info_being_abort = -1; +static int hf_ncp_user_info_bindery = -1; +static int hf_ncp_user_info_dsaudit_conn = -1; +static int hf_ncp_user_info_held_req = -1; +static int hf_ncp_user_info_int_login = -1; +static int hf_ncp_user_info_logged_in = -1; +static int hf_ncp_user_info_logout = -1; +static int hf_ncp_user_info_mac_station = -1; +static int hf_ncp_user_info_need_sec = -1; +static int hf_ncp_user_info_temp_authen = -1; +static int hf_ncp_user_info_ttl_bytes_rd = -1; +static int hf_ncp_user_info_ttl_bytes_wrt = -1; +static int hf_ncp_user_info_use_count = -1; +static int hf_ncp_user_login_allowed = -1; +static int hf_ncp_user_name = -1; +static int hf_ncp_user_name_16 = -1; +static int hf_ncp_uts_time_in_seconds = -1; +static int hf_ncp_valid_bfrs_reused = -1; +static int hf_ncp_value_available = -1; +static int hf_ncp_vap_version = -1; +static int hf_ncp_variable_bit_mask = -1; +static int hf_ncp_variable_bits_defined = -1; +static int hf_ncp_vconsole_rev = -1; +static int hf_ncp_vconsole_ver = -1; +static int hf_ncp_verb = -1; +static int hf_ncp_verb_data = -1; +static int hf_ncp_version = -1; +static int hf_ncp_version_number = -1; +static int hf_ncp_vert_location = -1; +static int hf_ncp_virtual_console_version = -1; +static int hf_ncp_vol_info_reply_len = -1; +static int hf_ncp_volume_active_count = -1; +static int hf_ncp_volume_cached_flag = -1; +static int hf_ncp_volume_hashed_flag = -1; +static int hf_ncp_volume_id = -1; +static int hf_ncp_volume_last_modified_date = -1; +static int hf_ncp_volume_last_modified_time = -1; +static int hf_ncp_volume_mounted_flag = -1; +static int hf_ncp_volume_name = -1; +static int hf_ncp_volume_name_len = -1; +static int hf_ncp_volume_name_stringz = -1; +static int hf_ncp_volume_number = -1; +static int hf_ncp_volume_number_long = -1; +static int hf_ncp_volume_reference_count = -1; +static int hf_ncp_volume_removable_flag = -1; +static int hf_ncp_volume_request_flags = -1; +static int hf_ncp_volume_segment_dev_num = -1; +static int hf_ncp_volume_segment_offset = -1; +static int hf_ncp_volume_segment_size = -1; +static int hf_ncp_volume_size_in_clusters = -1; +static int hf_ncp_volume_type = -1; +static int hf_ncp_volume_use_count = -1; +static int hf_ncp_volumes_supported_max = -1; +static int hf_ncp_wait_node = -1; +static int hf_ncp_wait_node_alloc_fail = -1; +static int hf_ncp_wait_on_sema = -1; +static int hf_ncp_wait_till_dirty_blcks_dec = -1; +static int hf_ncp_wait_time = -1; +static int hf_ncp_wasted_server_memory = -1; +static int hf_ncp_write_curr_trans = -1; +static int hf_ncp_write_didnt_need_but_req_ack = -1; +static int hf_ncp_write_didnt_need_this_frag = -1; +static int hf_ncp_write_dup_req = -1; +static int hf_ncp_write_err = -1; +static int hf_ncp_write_got_an_ack0 = -1; +static int hf_ncp_write_got_an_ack1 = -1; +static int hf_ncp_write_held_off = -1; +static int hf_ncp_write_held_off_with_dup = -1; +static int hf_ncp_write_incon_packet_len = -1; +static int hf_ncp_write_out_of_mem_for_ctl_nodes = -1; +static int hf_ncp_write_timeout = -1; +static int hf_ncp_write_too_many_buf_check = -1; +static int hf_ncp_write_trash_dup_req = -1; +static int hf_ncp_write_trash_packet = -1; +static int hf_ncp_wrt_blck_cnt = -1; +static int hf_ncp_wrt_entire_blck = -1; +static int hf_ncp_year = -1; +static int hf_ncp_zero_ack_frag = -1; + +static const value_string ncp_64_bit_flag_vals[] = { + { 0x00, "No support for 64 bit offsets" }, + { 0x01, "64 bit offsets supported" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_Service_type_vals[] = { + { 0x0000, "Unknown" }, + { 0x0001, "User" }, + { 0x0002, "User group" }, + { 0x0003, "Print queue" }, + { 0x0004, "NetWare file server" }, + { 0x0005, "Job server" }, + { 0x0006, "Gateway" }, + { 0x0007, "Print server" }, + { 0x0008, "Archive queue" }, + { 0x0009, "Archive server" }, + { 0x000a, "Job queue" }, + { 0x000b, "Administration" }, + { 0x0021, "NAS SNA gateway" }, + { 0x0026, "Remote bridge server" }, + { 0x0027, "TCP/IP gateway" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_abort_q_flag_vals[] = { + { 0x00, "Place at End of Queue" }, + { 0x01, "Do Not Place Spool File, Examine Flags" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_access_control_vals[] = { + { 0x00, "Open for read by this client" }, + { 0x01, "Open for write by this client" }, + { 0x02, "Deny read requests from other stations" }, + { 0x03, "Deny write requests from other stations" }, + { 0x04, "File detached" }, + { 0x05, "TTS holding detach" }, + { 0x06, "TTS holding open" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_allocate_mode_vals[] = { + { 0x0000, "Permanent Directory Handle" }, + { 0x0001, "Temporary Directory Handle" }, + { 0x0002, "Special Temporary Directory Handle" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_audit_enable_flag_vals[] = { + { 0x0000, "Auditing Disabled" }, + { 0x0100, "Auditing Enabled" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_audit_flag_vals[] = { + { 0x00, "Do NOT audit object" }, + { 0x01, "Audit object" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_audit_id_type_vals[] = { + { 0x0000, "Volume" }, + { 0x0001, "Container" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_bus_type_vals[] = { + { 0x00, "ISA" }, + { 0x01, "Micro Channel" }, + { 0x02, "EISA" }, + { 0x04, "PCI" }, + { 0x08, "PCMCIA" }, + { 0x10, "ISA" }, + { 0x14, "ISA" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_cc_function_vals[] = { + { 0x01, "Clear OP-Lock" }, + { 0x02, "Acknowledge Callback" }, + { 0x03, "Decline Callback" }, + { 0x04, "Level 2" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_channel_state_vals[] = { + { 0x00, "Channel is running" }, + { 0x01, "Channel is stopping" }, + { 0x02, "Channel is stopped" }, + { 0x03, "Channel is not functional" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_channel_synchronization_state_vals[] = { + { 0x00, "Channel is not being used" }, + { 0x02, "NetWare is using the channel; no one else wants it" }, + { 0x04, "NetWare is using the channel; someone else wants it" }, + { 0x06, "Someone else is using the channel; NetWare does not need it" }, + { 0x08, "Someone else is using the channel; NetWare needs it" }, + { 0x0a, "Someone else has released the channel; NetWare should use it" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_client_comp_flag_vals[] = { + { 0x0000, "Successful" }, + { 0x0001, "Illegal Station Number" }, + { 0x0002, "Client Not Logged In" }, + { 0x0003, "Client Not Accepting Messages" }, + { 0x0004, "Client Already has a Message" }, + { 0x0096, "No Alloc Space for the Message" }, + { 0x00fd, "Bad Station Number" }, + { 0x00ff, "Failure" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_connection_service_type_vals[] = { + { 0x01, "CLIB backward Compatibility" }, + { 0x02, "NCP Connection" }, + { 0x03, "NLM Connection" }, + { 0x04, "AFP Connection" }, + { 0x05, "FTAM Connection" }, + { 0x06, "ANCP Connection" }, + { 0x07, "ACP Connection" }, + { 0x08, "SMB Connection" }, + { 0x09, "Winsock Connection" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_connection_type_vals[] = { + { 0x00, "Not in use" }, + { 0x02, "NCP" }, + { 0x11, "UDP (for IP)" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_control_flags_vals[] = { + { 0x00, "Forced Record Locking is Off" }, + { 0x01, "Forced Record Locking is On" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_counter_mask_vals[] = { + { 0x00, "Counter is Valid" }, + { 0x01, "Counter is not Valid" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_cpu_type_vals[] = { + { 0x00, "80386" }, + { 0x01, "80486" }, + { 0x02, "Pentium" }, + { 0x03, "Pentium Pro" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_creator_name_space_number_vals[] = { + { 0x00, "DOS Name Space" }, + { 0x01, "MAC Name Space" }, + { 0x02, "NFS Name Space" }, + { 0x04, "Long Name Space" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_ctrl_flags_vals[] = { + { 0x0000, "Do Not Return File Name" }, + { 0x0001, "Return File Name" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_data_stream_vals[] = { + { 0x00, "Resource Fork or DOS" }, + { 0x01, "Data Fork" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_delete_existing_file_flag_vals[] = { + { 0x00, "Do Not Delete Existing File" }, + { 0x01, "Delete Existing File" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_dest_name_space_vals[] = { + { 0x00, "DOS Name Space" }, + { 0x01, "MAC Name Space" }, + { 0x02, "NFS Name Space" }, + { 0x04, "Long Name Space" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_disk_channel_table_vals[] = { + { 0x01, "XT" }, + { 0x02, "AT" }, + { 0x03, "SCSI" }, + { 0x04, "Disk Coprocessor" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_dm_flags_vals[] = { + { 0x00, "OnLine Media" }, + { 0x01, "OffLine Media" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_dm_info_level_vals[] = { + { 0x00, "Return Detailed DM Support Module Information" }, + { 0x01, "Return Number of DM Support Modules" }, + { 0x02, "Return DM Support Modules Names" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_dm_present_flag_vals[] = { + { 0x00, "Data Migration NLM is not loaded" }, + { 0x01, "Data Migration NLM has been loaded and is running" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_drive_removable_flag_vals[] = { + { 0x00, "Nonremovable" }, + { 0xff, "Removable" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_dst_ea_flags_vals[] = { + { 0x0000, "Return EAHandle,Information Level 0" }, + { 0x0001, "Return NetWareHandle,Information Level 0" }, + { 0x0002, "Return Volume/Directory Number,Information Level 0" }, + { 0x0004, "Return EAHandle,Close Handle on Error,Information Level 0" }, + { 0x0005, "Return NetWareHandle,Close Handle on Error,Information Level 0" }, + { 0x0006, "Return Volume/Directory Number,Close Handle on Error,Information Level 0" }, + { 0x0010, "Return EAHandle,Information Level 1" }, + { 0x0011, "Return NetWareHandle,Information Level 1" }, + { 0x0012, "Return Volume/Directory Number,Information Level 1" }, + { 0x0014, "Return EAHandle,Close Handle on Error,Information Level 1" }, + { 0x0015, "Return NetWareHandle,Close Handle on Error,Information Level 1" }, + { 0x0016, "Return Volume/Directory Number,Close Handle on Error,Information Level 1" }, + { 0x0020, "Return EAHandle,Information Level 2" }, + { 0x0021, "Return NetWareHandle,Information Level 2" }, + { 0x0022, "Return Volume/Directory Number,Information Level 2" }, + { 0x0024, "Return EAHandle,Close Handle on Error,Information Level 2" }, + { 0x0025, "Return NetWareHandle,Close Handle on Error,Information Level 2" }, + { 0x0026, "Return Volume/Directory Number,Close Handle on Error,Information Level 2" }, + { 0x0030, "Return EAHandle,Information Level 3" }, + { 0x0031, "Return NetWareHandle,Information Level 3" }, + { 0x0032, "Return Volume/Directory Number,Information Level 3" }, + { 0x0034, "Return EAHandle,Close Handle on Error,Information Level 3" }, + { 0x0035, "Return NetWareHandle,Close Handle on Error,Information Level 3" }, + { 0x0036, "Return Volume/Directory Number,Close Handle on Error,Information Level 3" }, + { 0x0040, "Return EAHandle,Information Level 4" }, + { 0x0041, "Return NetWareHandle,Information Level 4" }, + { 0x0042, "Return Volume/Directory Number,Information Level 4" }, + { 0x0044, "Return EAHandle,Close Handle on Error,Information Level 4" }, + { 0x0045, "Return NetWareHandle,Close Handle on Error,Information Level 4" }, + { 0x0046, "Return Volume/Directory Number,Close Handle on Error,Information Level 4" }, + { 0x0050, "Return EAHandle,Information Level 5" }, + { 0x0051, "Return NetWareHandle,Information Level 5" }, + { 0x0052, "Return Volume/Directory Number,Information Level 5" }, + { 0x0054, "Return EAHandle,Close Handle on Error,Information Level 5" }, + { 0x0055, "Return NetWareHandle,Close Handle on Error,Information Level 5" }, + { 0x0056, "Return Volume/Directory Number,Close Handle on Error,Information Level 5" }, + { 0x0060, "Return EAHandle,Information Level 6" }, + { 0x0061, "Return NetWareHandle,Information Level 6" }, + { 0x0062, "Return Volume/Directory Number,Information Level 6" }, + { 0x0064, "Return EAHandle,Close Handle on Error,Information Level 6" }, + { 0x0065, "Return NetWareHandle,Close Handle on Error,Information Level 6" }, + { 0x0066, "Return Volume/Directory Number,Close Handle on Error,Information Level 6" }, + { 0x0070, "Return EAHandle,Information Level 7" }, + { 0x0071, "Return NetWareHandle,Information Level 7" }, + { 0x0072, "Return Volume/Directory Number,Information Level 7" }, + { 0x0074, "Return EAHandle,Close Handle on Error,Information Level 7" }, + { 0x0075, "Return NetWareHandle,Close Handle on Error,Information Level 7" }, + { 0x0076, "Return Volume/Directory Number,Close Handle on Error,Information Level 7" }, + { 0x0080, "Return EAHandle,Information Level 0,Immediate Close Handle" }, + { 0x0081, "Return NetWareHandle,Information Level 0,Immediate Close Handle" }, + { 0x0082, "Return Volume/Directory Number,Information Level 0,Immediate Close Handle" }, + { 0x0084, "Return EAHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0085, "Return NetWareHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0086, "Return Volume/Directory Number,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0090, "Return EAHandle,Information Level 1,Immediate Close Handle" }, + { 0x0091, "Return NetWareHandle,Information Level 1,Immediate Close Handle" }, + { 0x0092, "Return Volume/Directory Number,Information Level 1,Immediate Close Handle" }, + { 0x0094, "Return EAHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x0095, "Return NetWareHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x0096, "Return Volume/Directory Number,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x00a0, "Return EAHandle,Information Level 2,Immediate Close Handle" }, + { 0x00a1, "Return NetWareHandle,Information Level 2,Immediate Close Handle" }, + { 0x00a2, "Return Volume/Directory Number,Information Level 2,Immediate Close Handle" }, + { 0x00a4, "Return EAHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00a5, "Return NetWareHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00a6, "Return Volume/Directory Number,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00b0, "Return EAHandle,Information Level 3,Immediate Close Handle" }, + { 0x00b1, "Return NetWareHandle,Information Level 3,Immediate Close Handle" }, + { 0x00b2, "Return Volume/Directory Number,Information Level 3,Immediate Close Handle" }, + { 0x00b4, "Return EAHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00b5, "Return NetWareHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00b6, "Return Volume/Directory Number,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00c0, "Return EAHandle,Information Level 4,Immediate Close Handle" }, + { 0x00c1, "Return NetWareHandle,Information Level 4,Immediate Close Handle" }, + { 0x00c2, "Return Volume/Directory Number,Information Level 4,Immediate Close Handle" }, + { 0x00c4, "Return EAHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00c5, "Return NetWareHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00c6, "Return Volume/Directory Number,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00d0, "Return EAHandle,Information Level 5,Immediate Close Handle" }, + { 0x00d1, "Return NetWareHandle,Information Level 5,Immediate Close Handle" }, + { 0x00d2, "Return Volume/Directory Number,Information Level 5,Immediate Close Handle" }, + { 0x00d4, "Return EAHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00d5, "Return NetWareHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00d6, "Return Volume/Directory Number,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00e0, "Return EAHandle,Information Level 6,Immediate Close Handle" }, + { 0x00e1, "Return NetWareHandle,Information Level 6,Immediate Close Handle" }, + { 0x00e2, "Return Volume/Directory Number,Information Level 6,Immediate Close Handle" }, + { 0x00e4, "Return EAHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00e5, "Return NetWareHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00e6, "Return Volume/Directory Number,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00f0, "Return EAHandle,Information Level 7,Immediate Close Handle" }, + { 0x00f1, "Return NetWareHandle,Information Level 7,Immediate Close Handle" }, + { 0x00f2, "Return Volume/Directory Number,Information Level 7,Immediate Close Handle" }, + { 0x00f4, "Return EAHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x00f5, "Return NetWareHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x00f6, "Return Volume/Directory Number,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_dst_ns_indicator_vals[] = { + { 0x0000, "Return Source Name Space Information" }, + { 0x0001, "Return Destination Name Space Information" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_ea_error_codes_vals[] = { + { 0x0000, "SUCCESSFUL" }, + { 0x00c8, "ERR_MISSING_EA_KEY" }, + { 0x00c9, "ERR_EA_NOT_FOUND" }, + { 0x00ca, "ERR_INVALID_EA_HANDLE_TYPE" }, + { 0x00cb, "ERR_EA_NO_KEY_NO_DATA" }, + { 0x00cc, "ERR_EA_NUMBER_MISMATCH" }, + { 0x00cd, "ERR_EXTENT_NUMBER_OUT_OF_RANGE" }, + { 0x00ce, "ERR_EA_BAD_DIR_NUM" }, + { 0x00cf, "ERR_INVALID_EA_HANDLE" }, + { 0x00d0, "ERR_EA_POSITION_OUT_OF_RANGE" }, + { 0x00d1, "ERR_EA_ACCESS_DENIED" }, + { 0x00d2, "ERR_DATA_PAGE_ODD_SIZE" }, + { 0x00d3, "ERR_EA_VOLUME_NOT_MOUNTED" }, + { 0x00d4, "ERR_BAD_PAGE_BOUNDARY" }, + { 0x00d5, "ERR_INSPECT_FAILURE" }, + { 0x00d6, "ERR_EA_ALREADY_CLAIMED" }, + { 0x00d7, "ERR_ODD_BUFFER_SIZE" }, + { 0x00d8, "ERR_NO_SCORECARDS" }, + { 0x00d9, "ERR_BAD_EDS_SIGNATURE" }, + { 0x00da, "ERR_EA_SPACE_LIMIT" }, + { 0x00db, "ERR_EA_KEY_CORRUPT" }, + { 0x00dc, "ERR_EA_KEY_LIMIT" }, + { 0x00dd, "ERR_TALLY_CORRUPT" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_ea_flags_vals[] = { + { 0x0000, "Return EAHandle,Information Level 0" }, + { 0x0001, "Return NetWareHandle,Information Level 0" }, + { 0x0002, "Return Volume/Directory Number,Information Level 0" }, + { 0x0004, "Return EAHandle,Close Handle on Error,Information Level 0" }, + { 0x0005, "Return NetWareHandle,Close Handle on Error,Information Level 0" }, + { 0x0006, "Return Volume/Directory Number,Close Handle on Error,Information Level 0" }, + { 0x0010, "Return EAHandle,Information Level 1" }, + { 0x0011, "Return NetWareHandle,Information Level 1" }, + { 0x0012, "Return Volume/Directory Number,Information Level 1" }, + { 0x0014, "Return EAHandle,Close Handle on Error,Information Level 1" }, + { 0x0015, "Return NetWareHandle,Close Handle on Error,Information Level 1" }, + { 0x0016, "Return Volume/Directory Number,Close Handle on Error,Information Level 1" }, + { 0x0020, "Return EAHandle,Information Level 2" }, + { 0x0021, "Return NetWareHandle,Information Level 2" }, + { 0x0022, "Return Volume/Directory Number,Information Level 2" }, + { 0x0024, "Return EAHandle,Close Handle on Error,Information Level 2" }, + { 0x0025, "Return NetWareHandle,Close Handle on Error,Information Level 2" }, + { 0x0026, "Return Volume/Directory Number,Close Handle on Error,Information Level 2" }, + { 0x0030, "Return EAHandle,Information Level 3" }, + { 0x0031, "Return NetWareHandle,Information Level 3" }, + { 0x0032, "Return Volume/Directory Number,Information Level 3" }, + { 0x0034, "Return EAHandle,Close Handle on Error,Information Level 3" }, + { 0x0035, "Return NetWareHandle,Close Handle on Error,Information Level 3" }, + { 0x0036, "Return Volume/Directory Number,Close Handle on Error,Information Level 3" }, + { 0x0040, "Return EAHandle,Information Level 4" }, + { 0x0041, "Return NetWareHandle,Information Level 4" }, + { 0x0042, "Return Volume/Directory Number,Information Level 4" }, + { 0x0044, "Return EAHandle,Close Handle on Error,Information Level 4" }, + { 0x0045, "Return NetWareHandle,Close Handle on Error,Information Level 4" }, + { 0x0046, "Return Volume/Directory Number,Close Handle on Error,Information Level 4" }, + { 0x0050, "Return EAHandle,Information Level 5" }, + { 0x0051, "Return NetWareHandle,Information Level 5" }, + { 0x0052, "Return Volume/Directory Number,Information Level 5" }, + { 0x0054, "Return EAHandle,Close Handle on Error,Information Level 5" }, + { 0x0055, "Return NetWareHandle,Close Handle on Error,Information Level 5" }, + { 0x0056, "Return Volume/Directory Number,Close Handle on Error,Information Level 5" }, + { 0x0060, "Return EAHandle,Information Level 6" }, + { 0x0061, "Return NetWareHandle,Information Level 6" }, + { 0x0062, "Return Volume/Directory Number,Information Level 6" }, + { 0x0064, "Return EAHandle,Close Handle on Error,Information Level 6" }, + { 0x0065, "Return NetWareHandle,Close Handle on Error,Information Level 6" }, + { 0x0066, "Return Volume/Directory Number,Close Handle on Error,Information Level 6" }, + { 0x0070, "Return EAHandle,Information Level 7" }, + { 0x0071, "Return NetWareHandle,Information Level 7" }, + { 0x0072, "Return Volume/Directory Number,Information Level 7" }, + { 0x0074, "Return EAHandle,Close Handle on Error,Information Level 7" }, + { 0x0075, "Return NetWareHandle,Close Handle on Error,Information Level 7" }, + { 0x0076, "Return Volume/Directory Number,Close Handle on Error,Information Level 7" }, + { 0x0080, "Return EAHandle,Information Level 0,Immediate Close Handle" }, + { 0x0081, "Return NetWareHandle,Information Level 0,Immediate Close Handle" }, + { 0x0082, "Return Volume/Directory Number,Information Level 0,Immediate Close Handle" }, + { 0x0084, "Return EAHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0085, "Return NetWareHandle,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0086, "Return Volume/Directory Number,Close Handle on Error,Information Level 0,Immediate Close Handle" }, + { 0x0090, "Return EAHandle,Information Level 1,Immediate Close Handle" }, + { 0x0091, "Return NetWareHandle,Information Level 1,Immediate Close Handle" }, + { 0x0092, "Return Volume/Directory Number,Information Level 1,Immediate Close Handle" }, + { 0x0094, "Return EAHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x0095, "Return NetWareHandle,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x0096, "Return Volume/Directory Number,Close Handle on Error,Information Level 1,Immediate Close Handle" }, + { 0x00a0, "Return EAHandle,Information Level 2,Immediate Close Handle" }, + { 0x00a1, "Return NetWareHandle,Information Level 2,Immediate Close Handle" }, + { 0x00a2, "Return Volume/Directory Number,Information Level 2,Immediate Close Handle" }, + { 0x00a4, "Return EAHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00a5, "Return NetWareHandle,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00a6, "Return Volume/Directory Number,Close Handle on Error,Information Level 2,Immediate Close Handle" }, + { 0x00b0, "Return EAHandle,Information Level 3,Immediate Close Handle" }, + { 0x00b1, "Return NetWareHandle,Information Level 3,Immediate Close Handle" }, + { 0x00b2, "Return Volume/Directory Number,Information Level 3,Immediate Close Handle" }, + { 0x00b4, "Return EAHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00b5, "Return NetWareHandle,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00b6, "Return Volume/Directory Number,Close Handle on Error,Information Level 3,Immediate Close Handle" }, + { 0x00c0, "Return EAHandle,Information Level 4,Immediate Close Handle" }, + { 0x00c1, "Return NetWareHandle,Information Level 4,Immediate Close Handle" }, + { 0x00c2, "Return Volume/Directory Number,Information Level 4,Immediate Close Handle" }, + { 0x00c4, "Return EAHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00c5, "Return NetWareHandle,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00c6, "Return Volume/Directory Number,Close Handle on Error,Information Level 4,Immediate Close Handle" }, + { 0x00d0, "Return EAHandle,Information Level 5,Immediate Close Handle" }, + { 0x00d1, "Return NetWareHandle,Information Level 5,Immediate Close Handle" }, + { 0x00d2, "Return Volume/Directory Number,Information Level 5,Immediate Close Handle" }, + { 0x00d4, "Return EAHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00d5, "Return NetWareHandle,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00d6, "Return Volume/Directory Number,Close Handle on Error,Information Level 5,Immediate Close Handle" }, + { 0x00e0, "Return EAHandle,Information Level 6,Immediate Close Handle" }, + { 0x00e1, "Return NetWareHandle,Information Level 6,Immediate Close Handle" }, + { 0x00e2, "Return Volume/Directory Number,Information Level 6,Immediate Close Handle" }, + { 0x00e4, "Return EAHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00e5, "Return NetWareHandle,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00e6, "Return Volume/Directory Number,Close Handle on Error,Information Level 6,Immediate Close Handle" }, + { 0x00f0, "Return EAHandle,Information Level 7,Immediate Close Handle" }, + { 0x00f1, "Return NetWareHandle,Information Level 7,Immediate Close Handle" }, + { 0x00f2, "Return Volume/Directory Number,Information Level 7,Immediate Close Handle" }, + { 0x00f4, "Return EAHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x00f5, "Return NetWareHandle,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x00f6, "Return Volume/Directory Number,Close Handle on Error,Information Level 7,Immediate Close Handle" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_file_ext_attr_vals[] = { + { 0x00, "Search On All Read Only Opens" }, + { 0x01, "Search On Read Only Opens With No Path" }, + { 0x02, "Shell Default Search Mode" }, + { 0x03, "Search On All Opens With No Path" }, + { 0x04, "Do Not Search" }, + { 0x05, "Reserved" }, + { 0x06, "Search On All Opens" }, + { 0x07, "Reserved" }, + { 0x08, "Search On All Read Only Opens/Indexed" }, + { 0x09, "Search On Read Only Opens With No Path/Indexed" }, + { 0x0a, "Shell Default Search Mode/Indexed" }, + { 0x0b, "Search On All Opens With No Path/Indexed" }, + { 0x0c, "Do Not Search/Indexed" }, + { 0x0d, "Indexed" }, + { 0x0e, "Search On All Opens/Indexed" }, + { 0x0f, "Indexed" }, + { 0x10, "Search On All Read Only Opens/Transactional" }, + { 0x11, "Search On Read Only Opens With No Path/Transactional" }, + { 0x12, "Shell Default Search Mode/Transactional" }, + { 0x13, "Search On All Opens With No Path/Transactional" }, + { 0x14, "Do Not Search/Transactional" }, + { 0x15, "Transactional" }, + { 0x16, "Search On All Opens/Transactional" }, + { 0x17, "Transactional" }, + { 0x18, "Search On All Read Only Opens/Indexed/Transactional" }, + { 0x19, "Search On Read Only Opens With No Path/Indexed/Transactional" }, + { 0x1a, "Shell Default Search Mode/Indexed/Transactional" }, + { 0x1b, "Search On All Opens With No Path/Indexed/Transactional" }, + { 0x1c, "Do Not Search/Indexed/Transactional" }, + { 0x1d, "Indexed/Transactional" }, + { 0x1e, "Search On All Opens/Indexed/Transactional" }, + { 0x1f, "Indexed/Transactional" }, + { 0x40, "Search On All Read Only Opens/Read Audit" }, + { 0x41, "Search On Read Only Opens With No Path/Read Audit" }, + { 0x42, "Shell Default Search Mode/Read Audit" }, + { 0x43, "Search On All Opens With No Path/Read Audit" }, + { 0x44, "Do Not Search/Read Audit" }, + { 0x45, "Read Audit" }, + { 0x46, "Search On All Opens/Read Audit" }, + { 0x47, "Read Audit" }, + { 0x48, "Search On All Read Only Opens/Indexed/Read Audit" }, + { 0x49, "Search On Read Only Opens With No Path/Indexed/Read Audit" }, + { 0x4a, "Shell Default Search Mode/Indexed/Read Audit" }, + { 0x4b, "Search On All Opens With No Path/Indexed/Read Audit" }, + { 0x4c, "Do Not Search/Indexed/Read Audit" }, + { 0x4d, "Indexed/Read Audit" }, + { 0x4e, "Search On All Opens/Indexed/Read Audit" }, + { 0x4f, "Indexed/Read Audit" }, + { 0x50, "Search On All Read Only Opens/Transactional/Read Audit" }, + { 0x51, "Search On Read Only Opens With No Path/Transactional/Read Audit" }, + { 0x52, "Shell Default Search Mode/Transactional/Read Audit" }, + { 0x53, "Search On All Opens With No Path/Transactional/Read Audit" }, + { 0x54, "Do Not Search/Transactional/Read Audit" }, + { 0x55, "Transactional/Read Audit" }, + { 0x56, "Search On All Opens/Transactional/Read Audit" }, + { 0x57, "Transactional/Read Audit" }, + { 0x58, "Search On All Read Only Opens/Indexed/Transactional/Read Audit" }, + { 0x59, "Search On Read Only Opens With No Path/Indexed/Transactional/Read Audit" }, + { 0x5a, "Shell Default Search Mode/Indexed/Transactional/Read Audit" }, + { 0x5b, "Search On All Opens With No Path/Indexed/Transactional/Read Audit" }, + { 0x5c, "Do Not Search/Indexed/Transactional/Read Audit" }, + { 0x5d, "Indexed/Transactional/Read Audit" }, + { 0x5e, "Search On All Opens/Indexed/Transactional/Read Audit" }, + { 0x5f, "Indexed/Transactional/Read Audit" }, + { 0x80, "Search On All Read Only Opens/Write Audit" }, + { 0x81, "Search On Read Only Opens With No Path/Write Audit" }, + { 0x82, "Shell Default Search Mode/Write Audit" }, + { 0x83, "Search On All Opens With No Path/Write Audit" }, + { 0x84, "Do Not Search/Write Audit" }, + { 0x85, "Write Audit" }, + { 0x86, "Search On All Opens/Write Audit" }, + { 0x87, "Write Audit" }, + { 0x88, "Search On All Read Only Opens/Indexed/Write Audit" }, + { 0x89, "Search On Read Only Opens With No Path/Indexed/Write Audit" }, + { 0x8a, "Shell Default Search Mode/Indexed/Write Audit" }, + { 0x8b, "Search On All Opens With No Path/Indexed/Write Audit" }, + { 0x8c, "Do Not Search/Indexed/Write Audit" }, + { 0x8d, "Indexed/Write Audit" }, + { 0x8e, "Search On All Opens/Indexed/Write Audit" }, + { 0x8f, "Indexed/Write Audit" }, + { 0x90, "Search On All Read Only Opens/Transactional/Write Audit" }, + { 0x91, "Search On Read Only Opens With No Path/Transactional/Write Audit" }, + { 0x92, "Shell Default Search Mode/Transactional/Write Audit" }, + { 0x93, "Search On All Opens With No Path/Transactional/Write Audit" }, + { 0x94, "Do Not Search/Transactional/Write Audit" }, + { 0x95, "Transactional/Write Audit" }, + { 0x96, "Search On All Opens/Transactional/Write Audit" }, + { 0x97, "Transactional/Write Audit" }, + { 0x98, "Search On All Read Only Opens/Indexed/Transactional/Write Audit" }, + { 0x99, "Search On Read Only Opens With No Path/Indexed/Transactional/Write Audit" }, + { 0x9a, "Shell Default Search Mode/Indexed/Transactional/Write Audit" }, + { 0x9b, "Search On All Opens With No Path/Indexed/Transactional/Write Audit" }, + { 0x9c, "Do Not Search/Indexed/Transactional/Write Audit" }, + { 0x9d, "Indexed/Transactional/Write Audit" }, + { 0x9e, "Search On All Opens/Indexed/Transactional/Write Audit" }, + { 0x9f, "Indexed/Transactional/Write Audit" }, + { 0xa0, "Search On All Read Only Opens/Read Audit/Write Audit" }, + { 0xa1, "Search On Read Only Opens With No Path/Read Audit/Write Audit" }, + { 0xa2, "Shell Default Search Mode/Read Audit/Write Audit" }, + { 0xa3, "Search On All Opens With No Path/Read Audit/Write Audit" }, + { 0xa4, "Do Not Search/Read Audit/Write Audit" }, + { 0xa5, "Read Audit/Write Audit" }, + { 0xa6, "Search On All Opens/Read Audit/Write Audit" }, + { 0xa7, "Read Audit/Write Audit" }, + { 0xa8, "Search On All Read Only Opens/Indexed/Read Audit/Write Audit" }, + { 0xa9, "Search On Read Only Opens With No Path/Indexed/Read Audit/Write Audit" }, + { 0xaa, "Shell Default Search Mode/Indexed/Read Audit/Write Audit" }, + { 0xab, "Search On All Opens With No Path/Indexed/Read Audit/Write Audit" }, + { 0xac, "Do Not Search/Indexed/Read Audit/Write Audit" }, + { 0xad, "Indexed/Read Audit/Write Audit" }, + { 0xae, "Search On All Opens/Indexed/Read Audit/Write Audit" }, + { 0xaf, "Indexed/Read Audit/Write Audit" }, + { 0xb0, "Search On All Read Only Opens/Transactional/Read Audit/Write Audit" }, + { 0xb1, "Search On Read Only Opens With No Path/Transactional/Read Audit/Write Audit" }, + { 0xb2, "Shell Default Search Mode/Transactional/Read Audit/Write Audit" }, + { 0xb3, "Search On All Opens With No Path/Transactional/Read Audit/Write Audit" }, + { 0xb4, "Do Not Search/Transactional/Read Audit/Write Audit" }, + { 0xb5, "Transactional/Read Audit/Write Audit" }, + { 0xb6, "Search On All Opens/Transactional/Read Audit/Write Audit" }, + { 0xb7, "Transactional/Read Audit/Write Audit" }, + { 0xb8, "Search On All Read Only Opens/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xb9, "Search On Read Only Opens With No Path/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xba, "Shell Default Search Mode/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xbb, "Search On All Opens With No Path/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xbc, "Do Not Search/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xbd, "Indexed/Transactional/Read Audit/Write Audit" }, + { 0xbe, "Search On All Opens/Indexed/Transactional/Read Audit/Write Audit" }, + { 0xbf, "Indexed/Transactional/Read Audit/Write Audit" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_file_write_flags_vals[] = { + { 0x01, "Writing" }, + { 0x02, "Write aborted" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_file_write_state_vals[] = { + { 0x00, "Not Writing" }, + { 0x01, "Write in Progress" }, + { 0x02, "Write Being Stopped" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_folder_flag_vals[] = { + { 0x00, "Not a Folder" }, + { 0x01, "Folder" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_force_flag_vals[] = { + { 0x00, "Down Server if No Files Are Open" }, + { 0xff, "Down Server Immediately, Auto-Close Open Files" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_fork_indicator_vals[] = { + { 0x00, "Data Fork" }, + { 0x01, "Resource Fork" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_get_set_flag_vals[] = { + { 0x00, "Get the default support module ID" }, + { 0x01, "Set the default support module ID" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_handle_flag_vals[] = { + { 0x00, "Short Directory Handle" }, + { 0x01, "Directory Base" }, + { 0xff, "No Handle Present" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_handle_info_level_vals[] = { + { 0x00, "Get Limited Information from a File Handle" }, + { 0x01, "Get Limited Information from a File Handle Using a Name Space" }, + { 0x02, "Get Information from a File Handle" }, + { 0x03, "Get Information from a Directory Handle" }, + { 0x04, "Get Complete Information from a Directory Handle" }, + { 0x05, "Get Complete Information from a File Handle" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_hot_fix_disabled_vals[] = { + { 0x00, "Enabled" }, + { 0x01, "Disabled" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_info_level_num_vals[] = { + { 0x01, "Volume Information Definition" }, + { 0x02, "Volume Information 2 Definition" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_lan_dvr_mode_flags_vals[] = { + { 0x80, "Canonical Address" }, + { 0x81, "Canonical Address" }, + { 0x82, "Canonical Address" }, + { 0x83, "Canonical Address" }, + { 0x84, "Canonical Address" }, + { 0x85, "Canonical Address" }, + { 0x86, "Canonical Address" }, + { 0x87, "Canonical Address" }, + { 0x88, "Canonical Address" }, + { 0x89, "Canonical Address" }, + { 0x8a, "Canonical Address" }, + { 0x8b, "Canonical Address" }, + { 0x8c, "Canonical Address" }, + { 0x8d, "Canonical Address" }, + { 0x8e, "Canonical Address" }, + { 0x8f, "Canonical Address" }, + { 0x90, "Canonical Address" }, + { 0x91, "Canonical Address" }, + { 0x92, "Canonical Address" }, + { 0x93, "Canonical Address" }, + { 0x94, "Canonical Address" }, + { 0x95, "Canonical Address" }, + { 0x96, "Canonical Address" }, + { 0x97, "Canonical Address" }, + { 0x98, "Canonical Address" }, + { 0x99, "Canonical Address" }, + { 0x9a, "Canonical Address" }, + { 0x9b, "Canonical Address" }, + { 0x9c, "Canonical Address" }, + { 0x9d, "Canonical Address" }, + { 0x9e, "Canonical Address" }, + { 0x9f, "Canonical Address" }, + { 0xa0, "Canonical Address" }, + { 0xa1, "Canonical Address" }, + { 0xa2, "Canonical Address" }, + { 0xa3, "Canonical Address" }, + { 0xa4, "Canonical Address" }, + { 0xa5, "Canonical Address" }, + { 0xa6, "Canonical Address" }, + { 0xa7, "Canonical Address" }, + { 0xa8, "Canonical Address" }, + { 0xa9, "Canonical Address" }, + { 0xaa, "Canonical Address" }, + { 0xab, "Canonical Address" }, + { 0xac, "Canonical Address" }, + { 0xad, "Canonical Address" }, + { 0xae, "Canonical Address" }, + { 0xaf, "Canonical Address" }, + { 0xb0, "Canonical Address" }, + { 0xb1, "Canonical Address" }, + { 0xb2, "Canonical Address" }, + { 0xb3, "Canonical Address" }, + { 0xb4, "Canonical Address" }, + { 0xb5, "Canonical Address" }, + { 0xb6, "Canonical Address" }, + { 0xb7, "Canonical Address" }, + { 0xb8, "Canonical Address" }, + { 0xb9, "Canonical Address" }, + { 0xba, "Canonical Address" }, + { 0xbb, "Canonical Address" }, + { 0xbc, "Canonical Address" }, + { 0xbd, "Canonical Address" }, + { 0xbe, "Canonical Address" }, + { 0xbf, "Canonical Address" }, + { 0xc0, "Non-Canonical Address" }, + { 0xc1, "Non-Canonical Address" }, + { 0xc2, "Non-Canonical Address" }, + { 0xc3, "Non-Canonical Address" }, + { 0xc4, "Non-Canonical Address" }, + { 0xc5, "Non-Canonical Address" }, + { 0xc6, "Non-Canonical Address" }, + { 0xc7, "Non-Canonical Address" }, + { 0xc8, "Non-Canonical Address" }, + { 0xc9, "Non-Canonical Address" }, + { 0xca, "Non-Canonical Address" }, + { 0xcb, "Non-Canonical Address" }, + { 0xcc, "Non-Canonical Address" }, + { 0xcd, "Non-Canonical Address" }, + { 0xce, "Non-Canonical Address" }, + { 0xcf, "Non-Canonical Address" }, + { 0xd0, "Non-Canonical Address" }, + { 0xd1, "Non-Canonical Address" }, + { 0xd2, "Non-Canonical Address" }, + { 0xd3, "Non-Canonical Address" }, + { 0xd4, "Non-Canonical Address" }, + { 0xd5, "Non-Canonical Address" }, + { 0xd6, "Non-Canonical Address" }, + { 0xd7, "Non-Canonical Address" }, + { 0xd8, "Non-Canonical Address" }, + { 0xd9, "Non-Canonical Address" }, + { 0xda, "Non-Canonical Address" }, + { 0xdb, "Non-Canonical Address" }, + { 0xdc, "Non-Canonical Address" }, + { 0xdd, "Non-Canonical Address" }, + { 0xde, "Non-Canonical Address" }, + { 0xdf, "Non-Canonical Address" }, + { 0xe0, "Non-Canonical Address" }, + { 0xe1, "Non-Canonical Address" }, + { 0xe2, "Non-Canonical Address" }, + { 0xe3, "Non-Canonical Address" }, + { 0xe4, "Non-Canonical Address" }, + { 0xe5, "Non-Canonical Address" }, + { 0xe6, "Non-Canonical Address" }, + { 0xe7, "Non-Canonical Address" }, + { 0xe8, "Non-Canonical Address" }, + { 0xe9, "Non-Canonical Address" }, + { 0xea, "Non-Canonical Address" }, + { 0xeb, "Non-Canonical Address" }, + { 0xec, "Non-Canonical Address" }, + { 0xed, "Non-Canonical Address" }, + { 0xee, "Non-Canonical Address" }, + { 0xef, "Non-Canonical Address" }, + { 0xf0, "Non-Canonical Address" }, + { 0xf1, "Non-Canonical Address" }, + { 0xf2, "Non-Canonical Address" }, + { 0xf3, "Non-Canonical Address" }, + { 0xf4, "Non-Canonical Address" }, + { 0xf5, "Non-Canonical Address" }, + { 0xf6, "Non-Canonical Address" }, + { 0xf7, "Non-Canonical Address" }, + { 0xf8, "Non-Canonical Address" }, + { 0xf9, "Non-Canonical Address" }, + { 0xfa, "Non-Canonical Address" }, + { 0xfb, "Non-Canonical Address" }, + { 0xfc, "Non-Canonical Address" }, + { 0xfd, "Non-Canonical Address" }, + { 0xfe, "Non-Canonical Address" }, + { 0xff, "Non-Canonical Address" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_lock_flag_vals[] = { + { 0x00, "Not Locked, Log for Future Exclusive Lock" }, + { 0x01, "Exclusive Lock (Read/Write)" }, + { 0x02, "Log for Future Shared Lock" }, + { 0x03, "Shareable Lock (Read-Only)" }, + { 0xfe, "Locked by a File Lock" }, + { 0xff, "Locked by Begin Share File Set" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_lock_status_vals[] = { + { 0x00, "Locked Exclusive" }, + { 0x01, "Locked Shareable" }, + { 0x02, "Logged" }, + { 0x06, "Lock is Held by TTS" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_lock_type_vals[] = { + { 0x00, "Locked" }, + { 0x01, "Open Shareable" }, + { 0x02, "Logged" }, + { 0x03, "Open Normal" }, + { 0x06, "TTS Holding Lock" }, + { 0x07, "Transaction Flag Set on This File" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_locked_vals[] = { + { 0x00, "Not Locked Exclusively" }, + { 0x01, "Locked Exclusively" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_media_object_type_vals[] = { + { 0x00, "Adapter" }, + { 0x01, "Changer" }, + { 0x02, "Removable Device" }, + { 0x03, "Device" }, + { 0x04, "Removable Media" }, + { 0x05, "Partition" }, + { 0x06, "Slot" }, + { 0x07, "Hotfix" }, + { 0x08, "Mirror" }, + { 0x09, "Parity" }, + { 0x0a, "Volume Segment" }, + { 0x0b, "Volume" }, + { 0x0c, "Clone" }, + { 0x0d, "Fixed Media" }, + { 0x0e, "Unknown" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_member_type_vals[] = { + { 0x0000, "Unknown" }, + { 0x0001, "User" }, + { 0x0002, "User group" }, + { 0x0003, "Print queue" }, + { 0x0004, "NetWare file server" }, + { 0x0005, "Job server" }, + { 0x0006, "Gateway" }, + { 0x0007, "Print server" }, + { 0x0008, "Archive queue" }, + { 0x0009, "Archive server" }, + { 0x000a, "Job queue" }, + { 0x000b, "Administration" }, + { 0x0021, "NAS SNA gateway" }, + { 0x0026, "Remote bridge server" }, + { 0x0027, "TCP/IP gateway" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_mixed_mode_path_flag_vals[] = { + { 0x00, "Mixed mode path handling is not available" }, + { 0x01, "Mixed mode path handling is available" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_more_flag_vals[] = { + { 0x00, "No More Segments/Entries Available" }, + { 0x01, "More Segments/Entries Available" }, + { 0xff, "More Segments/Entries Available" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_more_properties_vals[] = { + { 0x00, "No More Properties Available" }, + { 0x01, "No More Properties Available" }, + { 0xff, "More Properties Available" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_name_space_vals[] = { + { 0x00, "DOS" }, + { 0x01, "MAC" }, + { 0x02, "NFS" }, + { 0x03, "FTAM" }, + { 0x04, "OS/2, Long" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_nlm_type_vals[] = { + { 0x00, "Generic NLM (.NLM)" }, + { 0x01, "LAN Driver (.LAN)" }, + { 0x02, "Disk Driver (.DSK)" }, + { 0x03, "Name Space Support Module (.NAM)" }, + { 0x04, "Utility or Support Program (.NLM)" }, + { 0x05, "Mirrored Server Link (.MSL)" }, + { 0x06, "OS NLM (.NLM)" }, + { 0x07, "Paged High OS NLM (.NLM)" }, + { 0x08, "Host Adapter Module (.HAM)" }, + { 0x09, "Custom Device Module (.CDM)" }, + { 0x0a, "File System Engine (.NLM)" }, + { 0x0b, "Real Mode NLM (.NLM)" }, + { 0x0c, "Hidden NLM (.NLM)" }, + { 0x15, "NICI Support (.NLM)" }, + { 0x16, "NICI Support (.NLM)" }, + { 0x17, "Cryptography (.NLM)" }, + { 0x18, "Encryption (.NLM)" }, + { 0x19, "NICI Support (.NLM)" }, + { 0x1c, "NICI Support (.NLM)" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_o_c_ret_flags_vals[] = { + { 0x00, "No CallBack has been registered (No Op-Lock)" }, + { 0x01, "Request has been registered for CallBack (Op-Lock)" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_object_flags_vals[] = { + { 0x00, "Dynamic object" }, + { 0x01, "Static object" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_object_has_properites_vals[] = { + { 0x00, "No properties" }, + { 0xff, "One or more properties" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_object_security_vals[] = { + { 0x00, "Object Read (Anyone) / Object Write (Anyone)" }, + { 0x01, "Object Read (Logged in) / Object Write (Anyone)" }, + { 0x02, "Object Read (Logged in as Object) / Object Write (Anyone)" }, + { 0x03, "Object Read (Supervisor) / Object Write (Anyone)" }, + { 0x04, "Object Read (Operating System Only) / Object Write (Anyone)" }, + { 0x10, "Object Read (Anyone) / Object Write (Logged in)" }, + { 0x11, "Object Read (Logged in) / Object Write (Logged in)" }, + { 0x12, "Object Read (Logged in as Object) / Object Write (Logged in)" }, + { 0x13, "Object Read (Supervisor) / Object Write (Logged in)" }, + { 0x14, "Object Read (Operating System Only) / Object Write (Logged in)" }, + { 0x20, "Object Read (Anyone) / Object Write (Logged in as Object)" }, + { 0x21, "Object Read (Logged in) / Object Write (Logged in as Object)" }, + { 0x22, "Object Read (Logged in as Object) / Object Write (Logged in as Object)" }, + { 0x23, "Object Read (Supervisor) / Object Write (Logged in as Object)" }, + { 0x24, "Object Read (Operating System Only) / Object Write (Logged in as Object)" }, + { 0x30, "Object Read (Anyone) / Object Write (Supervisor)" }, + { 0x31, "Object Read (Logged in) / Object Write (Supervisor)" }, + { 0x32, "Object Read (Logged in as Object) / Object Write (Supervisor)" }, + { 0x33, "Object Read (Supervisor) / Object Write (Supervisor)" }, + { 0x34, "Object Read (Operating System Only) / Object Write (Supervisor)" }, + { 0x40, "Object Read (Anyone) / Object Write (Operating System Only)" }, + { 0x41, "Object Read (Logged in) / Object Write (Operating System Only)" }, + { 0x42, "Object Read (Logged in as Object) / Object Write (Operating System Only)" }, + { 0x43, "Object Read (Supervisor) / Object Write (Operating System Only)" }, + { 0x44, "Object Read (Operating System Only) / Object Write (Operating System Only)" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_object_type_vals[] = { + { 0x0000, "Unknown" }, + { 0x0001, "User" }, + { 0x0002, "User group" }, + { 0x0003, "Print queue" }, + { 0x0004, "NetWare file server" }, + { 0x0005, "Job server" }, + { 0x0006, "Gateway" }, + { 0x0007, "Print server" }, + { 0x0008, "Archive queue" }, + { 0x0009, "Archive server" }, + { 0x000a, "Job queue" }, + { 0x000b, "Administration" }, + { 0x0021, "NAS SNA gateway" }, + { 0x0026, "Remote bridge server" }, + { 0x0027, "TCP/IP gateway" }, + { 0x0047, "Novell Print Server" }, + { 0x004b, "Btrieve Server" }, + { 0x004c, "NetWare SQL Server" }, + { 0x0064, "ARCserve" }, + { 0x0066, "ARCserve 3.0" }, + { 0x0076, "NetWare SQL" }, + { 0x00a0, "Gupta SQL Base Server" }, + { 0x00a1, "Powerchute" }, + { 0x0107, "NetWare Remote Console" }, + { 0x01cb, "Shiva NetModem/E" }, + { 0x01cc, "Shiva LanRover/E" }, + { 0x01cd, "Shiva LanRover/T" }, + { 0x01d8, "Castelle FAXPress Server" }, + { 0x01da, "Castelle Print Server" }, + { 0x01dc, "Castelle Fax Server" }, + { 0x0200, "Novell SQL Server" }, + { 0x023a, "NetWare Lanalyzer Agent" }, + { 0x023c, "DOS Target Service Agent" }, + { 0x023f, "NetWare Server Target Service Agent" }, + { 0x024f, "Appletalk Remote Access Service" }, + { 0x0263, "NetWare Management Agent" }, + { 0x0264, "Global MHS" }, + { 0x0265, "SNMP" }, + { 0x026a, "NetWare Management/NMS Console" }, + { 0x026b, "NetWare Time Synchronization" }, + { 0x0273, "Nest Device" }, + { 0x0274, "GroupWise Message Multiple Servers" }, + { 0x0278, "NDS Replica Server" }, + { 0x0282, "NDPS Service Registry Service" }, + { 0x028a, "MPR/IPX Address Mapping Gateway" }, + { 0x028b, "ManageWise" }, + { 0x0293, "NetWare 6" }, + { 0x030c, "HP JetDirect" }, + { 0x0328, "Watcom SQL Server" }, + { 0x0355, "Backup Exec" }, + { 0x039b, "Lotus Notes" }, + { 0x03e1, "Univel Server" }, + { 0x03f5, "Microsoft SQL Server" }, + { 0x055e, "Lexmark Print Server" }, + { 0x0640, "Microsoft Gateway Services for NetWare" }, + { 0x064e, "Microsoft Internet Information Server" }, + { 0x077b, "Advantage Database Server" }, + { 0x07a7, "Backup Exec Job Queue" }, + { 0x07a8, "Backup Exec Job Manager" }, + { 0x07a9, "Backup Exec Job Service" }, + { 0x5555, "Site Lock" }, + { 0x8202, "NDPS Broker" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_path_cookie_flags_vals[] = { + { 0x0000, "Last component is Not a File Name" }, + { 0x0001, "Last component is a File Name" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_physical_drive_type_vals[] = { + { 0x01, "XT" }, + { 0x02, "AT" }, + { 0x03, "SCSI" }, + { 0x04, "Disk Coprocessor" }, + { 0x05, "PS/2 with MFM Controller" }, + { 0x06, "PS/2 with ESDI Controller" }, + { 0x07, "Convergent Technology SBIC" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_printer_halted_vals[] = { + { 0x00, "Printer is not Halted" }, + { 0xff, "Printer is Halted" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_printer_offline_vals[] = { + { 0x00, "Printer is On-Line" }, + { 0xff, "Printer is Off-Line" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_processor_type_vals[] = { + { 0x00, "Motorola 68000" }, + { 0x01, "Intel 8088 or 8086" }, + { 0x02, "Intel 80286" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_property_has_more_segments_vals[] = { + { 0x00, "Is last segment" }, + { 0xff, "More segments are available" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_property_type_vals[] = { + { 0x00, "Display Static property" }, + { 0x01, "Display Dynamic property" }, + { 0x02, "Set Static property" }, + { 0x03, "Set Dynamic property" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_purge_flags_vals[] = { + { 0x0000, "Do not Purge All" }, + { 0x0001, "Purge All" }, + { 0xffff, "Do not Purge All" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_record_in_use_vals[] = { + { 0x0000, "Record In Use" }, + { 0xffff, "Record Not In Use" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_request_code_vals[] = { + { 0x00, "Change Logged in to Temporary Authenticated" }, + { 0x01, "Change Temporary Authenticated to Logged in" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_restrictions_enforced_vals[] = { + { 0x00, "Enforced" }, + { 0xff, "Not Enforced" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_rev_query_flag_vals[] = { + { 0x00, "Do not query the locks engine for access rights" }, + { 0x01, "Query the locks engine and return the access rights" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_rpc_c_code_vals[] = { + { 0x0000, "Successful" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_s_day_of_week_vals[] = { + { 0x00, "Sunday" }, + { 0x01, "Monday" }, + { 0x02, "Tuesday" }, + { 0x03, "Wednesday" }, + { 0x04, "Thursday" }, + { 0x05, "Friday" }, + { 0x06, "Saturday" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_s_month_vals[] = { + { 0x01, "January" }, + { 0x02, "Febuary" }, + { 0x03, "March" }, + { 0x04, "April" }, + { 0x05, "May" }, + { 0x06, "June" }, + { 0x07, "July" }, + { 0x08, "August" }, + { 0x09, "September" }, + { 0x0a, "October" }, + { 0x0b, "November" }, + { 0x0c, "December" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_send_status_vals[] = { + { 0x00, "Successful" }, + { 0x01, "Illegal Station Number" }, + { 0x02, "Client Not Logged In" }, + { 0x03, "Client Not Accepting Messages" }, + { 0x04, "Client Already has a Message" }, + { 0x96, "No Alloc Space for the Message" }, + { 0xfd, "Bad Station Number" }, + { 0xff, "Failure" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_server_info_flags_vals[] = { + { 0x0000, "This server is not a member of a Cluster" }, + { 0x0001, "This server is a member of a Cluster" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_set_cmd_category_vals[] = { + { 0x00, "Communications" }, + { 0x01, "Memory" }, + { 0x02, "File Cache" }, + { 0x03, "Directory Cache" }, + { 0x04, "File System" }, + { 0x05, "Locks" }, + { 0x06, "Transaction Tracking" }, + { 0x07, "Disk" }, + { 0x08, "Time" }, + { 0x09, "NCP" }, + { 0x0a, "Miscellaneous" }, + { 0x0b, "Error Handling" }, + { 0x0c, "Directory Services" }, + { 0x0d, "MultiProcessor" }, + { 0x0e, "Service Location Protocol" }, + { 0x0f, "Licensing Services" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_set_cmd_type_vals[] = { + { 0x00, "Numeric Value" }, + { 0x01, "Boolean Value" }, + { 0x02, "Ticks Value" }, + { 0x04, "Time Value" }, + { 0x05, "String Value" }, + { 0x06, "Trigger Value" }, + { 0x07, "Numeric Value" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_sft_support_level_vals[] = { + { 0x01, "Server Offers Hot Disk Error Fixing" }, + { 0x02, "Server Offers Disk Mirroring and Transaction Tracking" }, + { 0x03, "Server Offers Physical Server Mirroring" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_src_name_space_vals[] = { + { 0x00, "DOS Name Space" }, + { 0x01, "MAC Name Space" }, + { 0x02, "NFS Name Space" }, + { 0x04, "Long Name Space" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_timesync_status_server_type_vals[] = { + { 0x00000001, "Client Time Server" }, + { 0x00000002, "Secondary Time Server" }, + { 0x00000003, "Primary Time Server" }, + { 0x00000004, "Reference Time Server" }, + { 0x00000005, "Single Reference Time Server" }, + { 0x00000000, NULL }, +}; + + +static const value_string ncp_transport_type_vals[] = { + { 0x01, "Internet Packet Exchange (IPX)" }, + { 0x05, "User Datagram Protocol (UDP)" }, + { 0x06, "Transmission Control Protocol (TCP)" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_user_info_use_count_vals[] = { + { 0x0000, "Connection is not in use" }, + { 0x0001, "Connection is in use" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_user_login_allowed_vals[] = { + { 0x00, "Client Login Disabled" }, + { 0x01, "Client Login Enabled" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_value_available_vals[] = { + { 0x00, "Has No Value" }, + { 0xff, "Has Value" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_volume_cached_flag_vals[] = { + { 0x00, "Volume is Not Cached" }, + { 0xff, "Volume is Cached" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_volume_hashed_flag_vals[] = { + { 0x00, "Volume is Not Hashed" }, + { 0xff, "Volume is Hashed" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_volume_mounted_flag_vals[] = { + { 0x00, "Volume is Not Mounted" }, + { 0xff, "Volume is Mounted" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_volume_removable_flag_vals[] = { + { 0x00, "Disk Cannot be Removed from Server" }, + { 0xff, "Disk Can be Removed from Server" }, + { 0x00, NULL }, +}; + + +static const value_string ncp_volume_request_flags_vals[] = { + { 0x0000, "Return name with volume number" }, + { 0x0001, "Do not return name with volume number" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_volume_type_vals[] = { + { 0x0000, "NetWare 386" }, + { 0x0001, "NetWare 286" }, + { 0x0002, "NetWare 386 Version 30" }, + { 0x0003, "NetWare 386 Version 31" }, + { 0x0000, NULL }, +}; + + +static const value_string ncp_year_vals[] = { + { 0x50, "1980" }, + { 0x51, "1981" }, + { 0x52, "1982" }, + { 0x53, "1983" }, + { 0x54, "1984" }, + { 0x55, "1985" }, + { 0x56, "1986" }, + { 0x57, "1987" }, + { 0x58, "1988" }, + { 0x59, "1989" }, + { 0x5a, "1990" }, + { 0x5b, "1991" }, + { 0x5c, "1992" }, + { 0x5d, "1993" }, + { 0x5e, "1994" }, + { 0x5f, "1995" }, + { 0x60, "1996" }, + { 0x61, "1997" }, + { 0x62, "1998" }, + { 0x63, "1999" }, + { 0x64, "2000" }, + { 0x65, "2001" }, + { 0x66, "2002" }, + { 0x67, "2003" }, + { 0x68, "2004" }, + { 0x69, "2005" }, + { 0x6a, "2006" }, + { 0x6b, "2007" }, + { 0x6c, "2008" }, + { 0x6d, "2009" }, + { 0x6e, "2010" }, + { 0x6f, "2011" }, + { 0x70, "2012" }, + { 0x71, "2013" }, + { 0x72, "2014" }, + { 0x73, "2015" }, + { 0x74, "2016" }, + { 0x75, "2017" }, + { 0x76, "2018" }, + { 0x77, "2019" }, + { 0x78, "2020" }, + { 0x79, "2021" }, + { 0x7a, "2022" }, + { 0x7b, "2023" }, + { 0x7c, "2024" }, + { 0x7d, "2025" }, + { 0x7e, "2026" }, + { 0x7f, "2027" }, + { 0xc0, "1984" }, + { 0xc1, "1985" }, + { 0xc2, "1986" }, + { 0xc3, "1987" }, + { 0xc4, "1988" }, + { 0xc5, "1989" }, + { 0xc6, "1990" }, + { 0xc7, "1991" }, + { 0xc8, "1992" }, + { 0xc9, "1993" }, + { 0xca, "1994" }, + { 0xcb, "1995" }, + { 0xcc, "1996" }, + { 0xcd, "1997" }, + { 0xce, "1998" }, + { 0xcf, "1999" }, + { 0xd0, "2000" }, + { 0xd1, "2001" }, + { 0xd2, "2002" }, + { 0xd3, "2003" }, + { 0xd4, "2004" }, + { 0xd5, "2005" }, + { 0xd6, "2006" }, + { 0xd7, "2007" }, + { 0xd8, "2008" }, + { 0xd9, "2009" }, + { 0xda, "2010" }, + { 0xdb, "2011" }, + { 0xdc, "2012" }, + { 0xdd, "2013" }, + { 0xde, "2014" }, + { 0xdf, "2015" }, + { 0x00, NULL }, +}; + +/* Error 0x0002 not used: Ok. The data has been written */ +/* Error 0x0100 not used: One or more of the Connection Numbers in the send list are invalid */ +/* Error 0x0103 not used: Queue server cannot add jobs */ +/* Error 0x0105 not used: Semaphore overflow */ +/* Error 0x0200 not used: One or more clients in the send list are not logged in */ +/* Error 0x0201 not used: Queue server cannot attach */ +/* Error 0x0400 not used: Client already has message */ +/* Error 0x0401 not used: Queue server cannot service job */ +/* Error 0x8c02 not used: Unauthorized to change the restriction on this volume */ +/* Error 0x8d01 not used: The affected file is in use */ +/* Error 0x9100 not used: Some of the affected files already exist */ +/* Error 0x9601 not used: No alloc space for message */ +/* Error 0x9801 not used: The volume associated with Volume Number is not mounted */ +/* Error 0x9803 not used: The destination volume is not mounted */ +/* Error 0x9b01 not used: A resulting directory handle is not associated with a valid directory path */ +/* Error 0x9b02 not used: The directory associated with DirHandle does not exist */ +/* Error 0x9c01 not used: The resulting file path is not valid */ +/* Error 0x9c02 not used: The resulting directory path is not valid */ +/* Error 0x9e01 not used: The new directory name does not conform to a legal name for this name space */ +/* Error 0xa200 not used: The request attempted to read from a file region that is physically locked */ +/* Error 0xc100 not used: The ACCOUNT_BALANCE property does not exist */ +/* Error 0xc300 not used: Too many holds have been placed against this account */ +/* Error 0xc502 not used: Server Login Locked */ +/* Error 0xc600 not used: The caller does not have operator priviliges */ +/* Error 0xca00 not used: Invalid EA Handle Type */ +/* Error 0xcc00 not used: EA Number Mismatch */ +/* Error 0xcd00 not used: Extent Number Out of Range */ +/* Error 0xd001 not used: EA Position Out of Range */ +/* Error 0xd201 not used: A queue server is not associated with the selected queue */ +/* Error 0xd401 not used: The queue associated with ObjectId is full and cannot accept another request */ +/* Error 0xd501 not used: No queue job */ +/* Error 0xd502 not used: The job associated with JobNumber does not exist in this queue */ +/* Error 0xd503 not used: Inspect Failure */ +/* Error 0xd602 not used: EA Already Claimed */ +/* Error 0xd702 not used: The job is currently being serviced */ +/* Error 0xd704 not used: Queue servicing */ +/* Error 0xd705 not used: Odd Buffer Size */ +/* Error 0xd801 not used: No Scorecards */ +/* Error 0xd901 not used: The client is not security equivalent to one of the objects in the Q_SERVERS group property of the target queue */ +/* Error 0xd903 not used: Bad EDS Signature */ +/* Error 0xda02 not used: EA Space Limit */ +/* Error 0xdb01 not used: The queue cannot attach another queue server */ +/* Error 0xdb03 not used: EA Key Corrupt */ +/* Error 0xdc01 not used: EA Key Limit */ +/* Error 0xdd00 not used: Tally Corrupt */ +/* Error 0xea01 not used: The bindery object is not a member of the set */ +/* Error 0xea02 not used: Non-existent member */ +/* Error 0xed01 not used: The property already exists */ +/* Error 0xed02 not used: An attempt was made to create a bindery object property that already exists */ +/* Error 0xee01 not used: The bindery object already exists */ +/* Error 0xef02 not used: Invalid name */ +/* Error 0xf102 not used: Invalid bindery security */ +/* Error 0xf401 not used: No object delete privileges */ +/* Error 0xf402 not used: Unauthorized to delete this queue */ +/* Error 0xf500 not used: Unauthorized to create this object */ +/* Error 0xf601 not used: Unauthorized to delete the property of this object */ +/* Error 0xf602 not used: Unauthorized to delete this property */ +/* Error 0xf701 not used: No property create privilege */ +/* Error 0xfb03 not used: The PASSWORD property does not exist for this bindery object */ +/* Error 0xfc00 not used: The message queue cannot accept another message */ +/* Error 0xfc04 not used: A bindery object does not exist that matches */ +/* Error 0xfc05 not used: The specified queue does not exist */ +/* Error 0xfe03 not used: No more restrictions were found */ +/* Error 0xfe05 not used: The file server was unable to lock all files within the specified time limit */ +/* Error 0xfe06 not used: The bindery object associated with ObjectID is not a valid trustee */ +/* Error 0xfe08 not used: Bindery locked */ +/* Error 0xfe09 not used: Invalid semaphore name length */ +/* Error 0xfe0a not used: The file server was unable to complete the operation within the specified time limit */ +/* Error 0xff02 not used: File not found */ +/* Error 0xff04 not used: Record not found */ +/* Error 0xff05 not used: The logical record was not found */ +/* Error 0xff07 not used: No such printer */ +/* Error 0xff08 not used: Unable to complete the request */ +/* Error 0xff0b not used: A file matching the search criteria was not found */ +/* Error 0xff0d not used: Object associated with ObjectID is not a manager */ +/* Error 0xff0e not used: Invalid initial semaphore value */ +/* Error 0xff0f not used: The semaphore handle is not valid */ +/* Error 0xff10 not used: SemaphoreHandle is not associated with a valid sempahore */ +/* Error 0xff11 not used: Invalid semaphore handle */ +/* Error 0xff13 not used: The transaction has not yet been written to disk */ +/* Error 0xff14 not used: Directory already exists */ +/* Error 0xff15 not used: The file already exists and the deletion flag was not set */ +/* Error 0xff1c not used: Not Accepting Messages */ + + +/* Error strings. */ +static const char *ncp_errors[] = { + /* 00 (0x0000) */ "Ok", + /* 01 (0xff00) */ "Failure", + /* 02 (0x8200) */ "Unauthorized to open the file", + /* 03 (0x9600) */ "The file server has run out of memory to service this request", + /* 04 (0xfe0d) */ "Timeout", + /* 05 (0xff01) */ "Lock error", + /* 06 (0x9b00) */ "DirHandle is not associated with a valid directory path", + /* 07 (0x9c03) */ "Invalid path", + /* 08 (0xff1a) */ "Unlock Error", + /* 09 (0x9804) */ "Disk Map Error", + /* 10 (0x9b03) */ "Bad directory handle", + /* 11 (0xa100) */ "An unrecoverable error occured on the affected directory", + /* 12 (0xfd00) */ "Bad station number", + /* 13 (0x0104) */ "Out of disk space", + /* 14 (0x8000) */ "Lock fail", + /* 15 (0x8101) */ "Out of File Handles", + /* 16 (0x8701) */ "Create Filename Error", + /* 17 (0x8800) */ "Invalid file handle", + /* 18 (0x8d00) */ "Some of the affected files are in use by another client", + /* 19 (0x8e00) */ "All of the affected files are in use by another client", + /* 20 (0x8f00) */ "Some of the affected files are read-only", + /* 21 (0x9001) */ "All of the affected files are read-only", + /* 22 (0x9400) */ "Unauthorized to write to this file", + /* 23 (0x9500) */ "The affected file is detached", + /* 24 (0x9900) */ "The file server has run out of directory space on the affected volume", + /* 25 (0xa201) */ "I/O Lock Error", + /* 26 (0xff19) */ "Failure, No files found", + /* 27 (0x9300) */ "Unauthorized to read from this file", + /* 28 (0x9d00) */ "A directory handle was not available for allocation", + /* 29 (0xd000) */ "Queue error", + /* 30 (0xd100) */ "The queue does not exist", + /* 31 (0xd202) */ "No queue server", + /* 32 (0xd300) */ "No queue rights", + /* 33 (0xd400) */ "The queue is full and cannot accept another request", + /* 34 (0xda01) */ "Queue halted", + /* 35 (0xe800) */ "Write to group", + /* 36 (0xea00) */ "No such member", + /* 37 (0xeb00) */ "The property is not a set property", + /* 38 (0xec00) */ "No such set", + /* 39 (0xfc06) */ "No such object", + /* 40 (0xfe07) */ "Directory locked", + /* 41 (0xff06) */ "The printer associated with Printer Number does not exist", + /* 42 (0xfb05) */ "Bad Directory Handle", + /* 43 (0x8400) */ "Unauthorized to create the directory", + /* 44 (0xfb0a) */ "Station Not Logged In", + /* 45 (0xfa00) */ "Temporary remap error", + /* 46 (0x9c00) */ "The resulting path is not valid", + /* 47 (0x8c00) */ "No set privileges", + /* 48 (0x9e00) */ "The name of the directory does not conform to a legal name for this name space", + /* 49 (0x8a00) */ "Unauthorized to delete this file/directory", + /* 50 (0x9f00) */ "The request attempted to delete a directory that is in use by another client", + /* 51 (0xa000) */ "The request attempted to delete a directory that is not empty", + /* 52 (0x8b00) */ "Unauthorized to rename a file in this directory", + /* 53 (0x9200) */ "Directory with the new name already exists", + /* 54 (0xef00) */ "Illegal name", + /* 55 (0x8100) */ "A file handle could not be allocated by the file server", + /* 56 (0xff16) */ "No matching files or directories were found", + /* 57 (0xfb01) */ "The file server does not support this request", + /* 58 (0xff1d) */ "No More Salvageable Files in Directory", + /* 59 (0x8401) */ "Unauthorized to create the file", + /* 60 (0xfe02) */ "A file with the specified name already exists in this directory", + /* 61 (0x8500) */ "Unauthorized to delete the specified file", + /* 62 (0x8900) */ "Unauthorized to search this file/directory", + /* 63 (0xbf00) */ "Requests for this name space are not valid on this volume", + /* 64 (0xfb00) */ "No such property", + /* 65 (0x9800) */ "The affected volume is not mounted", + /* 66 (0xfe0e) */ "User Not Found", + /* 67 (0x0101) */ "Invalid space limit", + /* 68 (0x0106) */ "Invalid Parameter", + /* 69 (0x9000) */ "An attempt to modify a read-only volume occurred", + /* 70 (0x9802) */ "The resulting volume does not exist", + /* 71 (0x9002) */ "Read Only Access to Volume", + /* 72 (0xfe0f) */ "Trustee Not Found", + /* 73 (0xff09) */ "Unauthorized to change privileges of this trustee", + /* 74 (0x0102) */ "Insufficient disk space", + /* 75 (0x9101) */ "Some Names Exist", + /* 76 (0x9201) */ "All of the affected files already exist", + /* 77 (0x9a00) */ "Invalid request to rename the affected file to another volume", + /* 78 (0xa400) */ "Invalid directory rename attempted", + /* 79 (0xff17) */ "A file or directory matching the search criteria was not found", + /* 80 (0xbe00) */ "Invalid Data Stream", + /* 81 (0x7e01) */ "Invalid Length", + /* 82 (0xfb08) */ "Attempt to use an invalid parameter (drive number, path, or flag value) during a set drive path call", + /* 83 (0x9602) */ "Server Out of Space", + /* 84 (0xc101) */ "No Account Balance", + /* 85 (0xc200) */ "The object has exceeded its credit limit", + /* 86 (0xc501) */ "Login lockout", + /* 87 (0xd700) */ "Bad account", + /* 88 (0xd900) */ "The file server cannot accept another connection as it has reached its limit", + /* 89 (0xda00) */ "Attempted to login to the file server during a restricted time period", + /* 90 (0xdb00) */ "Attempted to login to the file server from an unauthorized workstation or network", + /* 91 (0xde00) */ "Attempted to login to the file server with an incorrect password", + /* 92 (0xdf00) */ "Attempted to login to the file server with a password that has expired", + /* 93 (0xed00) */ "Property exists", + /* 94 (0xf001) */ "An illegal wildcard was detected in ObjectName", + /* 95 (0xf100) */ "The client does not have the rights to access this bindery object", + /* 96 (0xf200) */ "Unauthorized to read from this object", + /* 97 (0xf600) */ "No property delete", + /* 98 (0xd600) */ "The file server does not allow unencrypted passwords", + /* 99 (0xf101) */ "Bindery security", + /* 100 (0xf501) */ "No object create", + /* 101 (0xc500) */ "Access to the account has been denied because of intruder detection", + /* 102 (0xd904) */ "Attempt to log in using an account which has limits on the number of concurrent connections and that number has been reached.", + /* 103 (0xdc00) */ "Account Expired", + /* 104 (0xfb02) */ "The specified property does not exist", + /* 105 (0x0109) */ "Cannot Obtain License", + /* 106 (0x7a00) */ "Connection Already Temporary", + /* 107 (0x7b00) */ "Connection Already Logged in", + /* 108 (0x7c00) */ "Connection Not Authenticated", + /* 109 (0xe000) */ "No Login Connections Available", + /* 110 (0xfb06) */ "Unknown Request", + /* 111 (0x0107) */ "Invalid Number of Minutes to Delay", + /* 112 (0xef01) */ "Illegal characters in ObjectName field", + /* 113 (0xfc02) */ "The specified bindery object does not exist", + /* 114 (0xfe01) */ "The files containing the bindery on the file server are locked", + /* 115 (0xe700) */ "No disk track", + /* 116 (0xee00) */ "The object already exists", + /* 117 (0xf000) */ "A wildcard was detected in a field that does not support wildcards", + /* 118 (0xf400) */ "Unauthorized to delete this object", + /* 119 (0xf300) */ "Unauthorized to rename this object", + /* 120 (0xf700) */ "Unauthorized to create this property", + /* 121 (0xec01) */ "The set property does not exist", + /* 122 (0xf900) */ "Unauthorized to read this property", + /* 123 (0xf800) */ "Unauthorized to write to this property", + /* 124 (0xfc03) */ "The bindery object associated with ObjectID does not exist", + /* 125 (0xd701) */ "The old and new password strings are identical", + /* 126 (0xe900) */ "The object is already a member of the group property", + /* 127 (0x0003) */ "Calling Station is a Manager", + /* 128 (0xff1e) */ "Calling Station is Not a Manager", + /* 129 (0xff0c) */ "Verification failed", + /* 130 (0xd200) */ "A queue server is not associated with this queue", + /* 131 (0xd500) */ "A job does not exist in this queue", + /* 132 (0xd601) */ "No job right", + /* 133 (0xd703) */ "The queue is currently servicing a job", + /* 134 (0xd800) */ "Queue not active", + /* 135 (0xd902) */ "Station is not a server", + /* 136 (0xdb02) */ "Maximum queue servers", + /* 137 (0xfc07) */ "The queue associated with ObjectID does not exist", + /* 138 (0xff18) */ "The file already exists", + /* 139 (0xff1f) */ "Bindery Failure", + /* 140 (0xc000) */ "Unauthorized to retrieve accounting data", + /* 141 (0xc400) */ "The client account has been disabled", + /* 142 (0xc601) */ "The client does not have operator priviliges", + /* 143 (0xfd02) */ "Lock collision", + /* 144 (0xfe04) */ "The file server was unable to lock the file within the specified time limit", + /* 145 (0xff03) */ "The file not found or cannot be unlocked", + /* 146 (0x0001) */ "Transaction tracking is available", + /* 147 (0xfd03) */ "Transaction tracking is disabled", + /* 148 (0xff12) */ "Transaction tracking is not available", + /* 149 (0xfe0b) */ "Transaction restart", + /* 150 (0x8301) */ "Hard I/O Error", + /* 151 (0x9e02) */ "Bad File Name", + /* 152 (0xff0a) */ "No files matching the search criteria were found", + /* 153 (0xfe00) */ "I/O failure", + /* 154 (0xff20) */ "NCP Extension Not Found", + /* 155 (0xd504) */ "Unknown NCP Extension Number", + /* 156 (0x8501) */ "Unauthorized to overwrite an existing file in this directory", + /* 157 (0x8300) */ "Unable to read/write the volume. Possible bad sector on the file server", + /* 158 (0xff1b) */ "I/O Bound Error", + /* 159 (0xcf00) */ "Invalid EA Handle", + /* 160 (0xd301) */ "EA Volume Not Mounted", + /* 161 (0xc800) */ "Missing EA Key", + /* 162 (0xc900) */ "EA Not Found", + /* 163 (0xcb00) */ "EA No Key No Data", + /* 164 (0xce00) */ "EA Bad Directory Number", + /* 165 (0xd101) */ "EA Access Denied", + /* 166 (0xd203) */ "Data Page Odd Size", + /* 167 (0xd402) */ "Bad Page Boundary", + /* 168 (0x7f00) */ "Lock Waiting", + /* 169 (0x8001) */ "File in Use", + /* 170 (0xa500) */ "Invalid open create mode", + /* 171 (0xa802) */ "No Access Rights", + /* 172 (0x8700) */ "An unexpected character was encountered in the filename", + /* 173 (0x8c01) */ "Unauthorized to modify a file in this directory", + /* 174 (0xfc01) */ "The trustee associated with ObjectId does not exist", + /* 175 (0x7300) */ "Revoke Handle Rights Not Found", + /* 176 (0xa600) */ "Auditor Access has been Removed", + /* 177 (0xa801) */ "No Auditing Access Rights", + /* 178 (0x0300) */ "One or more clients in the send list are not accepting messages", + /* 179 (0xa800) */ "Invalid Support Module ID", + /* 180 (0xfb0b) */ "Secret Store not running on this server, NCP Not supported", + /* 181 (0xfb09) */ "NMAS not running on this server, NCP NOT Supported", + /* 182 (0xfb04) */ "NDS NCP not available", + /* 183 (0xfe0c) */ "Bad packet", + /* 184 (0xfd01) */ "The connection associated with ConnectionNumber is not active", + /* 185 (0xa700) */ "Error Auditing Version", + /* 186 (0x7e00) */ "NCP failed boundary check", + /* 187 (0x7900) */ "Invalid Parameter in Request Packet", + /* 188 (0x0108) */ "Invalid Start or Network Number", + /* 189 (0x7901) */ "Nothing being Compressed", + /* 190 (0xfb07) */ "Invalid Subfunction Request", +}; + +/* Group not used: directory = Directory */ +/* Group not used: extended = Extended Attribute */ +/* Group not used: migration = Data Migration */ +/* Group not used: misc = Miscellaneous */ +/* Group not used: name = Name Space */ +/* Group not used: print = Print */ +/* Group not used: queue = Queue */ +/* Group not used: sync = Synchronization */ +/* Group not used: unknown = Unknown */ + + +/* Group strings. */ +static const char *ncp_groups[] = { + /* 00 (file) */ "File", + /* 01 (qms) */ "Queue Management System (QMS)", + /* 02 (connection) */ "Connection", + /* 03 (fileserver) */ "File Server", + /* 04 (message) */ "Message", + /* 05 (bindery) */ "Bindery", + /* 06 (nds) */ "NetWare Directory", + /* 07 (accounting) */ "Accounting", + /* 08 (stats) */ "Server Statistics", + /* 09 (tts) */ "Transaction Tracking", + /* 10 (afp) */ "AFP", + /* 11 (auditing) */ "Auditing", + /* 12 (nmas) */ "Novell Modular Authentication Service", + /* 13 (sss) */ "SecretStore Services", + /* 14 (comm) */ "Communication", +}; + +#define NCP_GROUP_FILE 0 +#define NCP_GROUP_QMS 1 +#define NCP_GROUP_CONNECTION 2 +#define NCP_GROUP_FILESERVER 3 +#define NCP_GROUP_MESSAGE 4 +#define NCP_GROUP_BINDERY 5 +#define NCP_GROUP_NDS 6 +#define NCP_GROUP_ACCOUNTING 7 +#define NCP_GROUP_STATS 8 +#define NCP_GROUP_TTS 9 +#define NCP_GROUP_AFP 10 +#define NCP_GROUP_AUDITING 11 +#define NCP_GROUP_NMAS 12 +#define NCP_GROUP_SSS 13 +#define NCP_GROUP_COMM 14 + + +/* Request-Condition dfilter records. The NULL pointer + is replaced by a pointer to the created dfilter_t. */ +static conditional_record req_conds[] = { + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_mod == 1)", NULL }, + { "ncp.enum_info_name==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_create == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)", NULL }, + { "ncp.ns_info_mask_max_acc_mask == TRUE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_fname == 1)", NULL }, + { "ncp.handle_info_level==0x03", NULL }, + { "ncp.enum_info_auth==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_arch == 1)", NULL }, + { "ncp.ns_info_mask_modify == TRUE", NULL }, + { "ncp.enum_info_lock==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_attr == 1)", NULL }, + { "ncp.enum_info_account==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)", NULL }, + { "ncp.ext_info_mac_finder == 1", NULL }, + { "ncp.info_flags_name == TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)", NULL }, + { "ncp.sattr_sub!=TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_fname == 1)", NULL }, + { "ncp.ext_info_dos_name == 1", NULL }, + { "ncp.search_att_sub == TRUE", NULL }, + { "ncp.enum_info_time==TRUE", NULL }, + { "ncp.ns_info_mask_aid == TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)", NULL }, + { "ncp.ns_info_mask_udate == TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 0)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)", NULL }, + { "ncp.ret_info_mask_fname == 1", NULL }, + { "ncp.info_level_num==0x02", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 0)", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_size == 1)", NULL }, + { "ncp.ns_info_mask_uid == TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_rights == 1)", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_ns == 1)", NULL }, + { "ncp.ns_info_mask_atime == TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 0)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_ns == 1)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)", NULL }, + { "ncp.sattr_sub==TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 0)", NULL }, + { "ncp.ext_info_mac_date == 1", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 1)", NULL }, + { "ncp.dm_info_level == 0x01", NULL }, + { "ncp.dm_info_level == 0x00", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_alloc == 1)", NULL }, + { "ncp.dm_info_level == 0x02", NULL }, + { "ncp.ext_info_update == 1", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)", NULL }, + { "ncp.info_flags_flags == TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_mod == 0)", NULL }, + { "ncp.ext_info_parental == 1", NULL }, + { "ncp.handle_info_level==0x04", NULL }, + { "ncp.handle_info_level==0x05", NULL }, + { "ncp.handle_info_level==0x02", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_attr == 1)", NULL }, + { "ncp.handle_info_level==0x00", NULL }, + { "ncp.handle_info_level==0x01", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)", NULL }, + { "ncp.ext_info_access == 1", NULL }, + { "ncp.ns_info_mask_owner == TRUE", NULL }, + { "ncp.info_flags_security == TRUE", NULL }, + { "ncp.ext_info_sibling == 1", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)", NULL }, + { "ncp.ns_info_mask_cdate == TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_create == 0)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 1)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)", NULL }, + { "ncp.enum_info_transport==TRUE", NULL }, + { "ncp.enum_info_stats==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_tspace == 1)", NULL }, + { "ncp.info_level_num==0x01", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_eattr == 1)", NULL }, + { "ncp.ns_info_mask_adate == TRUE", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_arch == 0)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)", NULL }, + { "ncp.ctrl_flags==0x0000", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 0)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)", NULL }, + { "ncp.ns_info_mask_ctime == TRUE", NULL }, + { "ncp.ret_info_mask_actual == 1", NULL }, + { "ncp.ext_info_flush == 1", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 0)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_size == 1)", NULL }, + { "ncp.ext_info_effective == 1", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 1)", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_eattr == 1)", NULL }, + { "ncp.enum_info_print==TRUE", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_dir == 1)", NULL }, + { "ncp.ns_info_mask_fatt == TRUE", NULL }, + { "ncp.search_att_sub == FALSE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_dir == 1)", NULL }, + { "ncp.ns_info_mask_acc_date == TRUE", NULL }, + { "ncp.ns_info_mask_utime == TRUE", NULL }, + { "(ncp.ext_info_newstyle == 1) && (ncp.ret_info_mask_alloc == 1)", NULL }, + { "(ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_tspace == 0)", NULL }, + { "ncp.info_flags_type == TRUE", NULL }, + { "ncp.ret_info_mask_ns_attr == 1", NULL }, + { "(ncp.ret_info_mask != 0x0000) && (ncp.ext_info_newstyle == 0) && (ncp.ret_info_mask_rights == 0)", NULL }, + { "ncp.ret_info_mask_id == 1", NULL }, + { "ncp.ret_info_mask_logical == 1", NULL }, + { "ncp.ctrl_flags==0x0001", NULL }, +}; +#define NUM_REQ_CONDS 113 +#define NO_REQ_COND NUM_REQ_CONDS + + +/* PTVC records for bit-fields. */ +/* ncp_access_mode_bitfield */ +static gint ett_ncp_access_mode_bitfield; +static const ptvc_record ptvc_ncp_access_mode_bitfield[] = { + { &hf_ncp_acc_mode_comp, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_mode_deny_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_mode_deny_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_mode_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_mode_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_access_mode_bitfield = { + &ett_ncp_access_mode_bitfield, + NULL, + ptvc_ncp_access_mode_bitfield, +}; + +/* ncp_access_privileges_bitfield */ +static gint ett_ncp_access_privileges_bitfield; +static const ptvc_record ptvc_ncp_access_privileges_bitfield[] = { + { &hf_ncp_acc_priv_modify, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_search, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_parent, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_delete, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_priv_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_access_privileges_bitfield = { + &ett_ncp_access_privileges_bitfield, + NULL, + ptvc_ncp_access_privileges_bitfield, +}; + +/* ncp_access_rights_mask_bitfield */ +static gint ett_ncp_access_rights_mask_bitfield; +static const ptvc_record ptvc_ncp_access_rights_mask_bitfield[] = { + { &hf_ncp_acc_rights_modify, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_search, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_parent, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_delete, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_access_rights_mask_bitfield = { + &ett_ncp_access_rights_mask_bitfield, + NULL, + ptvc_ncp_access_rights_mask_bitfield, +}; + +/* ncp_access_rights_mask_word_bitfield */ +static gint ett_ncp_access_rights_mask_word_bitfield; +static const ptvc_record ptvc_ncp_access_rights_mask_word_bitfield[] = { + { &hf_ncp_acc_rights1_supervisor, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_delete, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acc_rights1_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_access_rights_mask_word_bitfield = { + &ett_ncp_access_rights_mask_word_bitfield, + NULL, + ptvc_ncp_access_rights_mask_word_bitfield, +}; + +/* ncp_action_flag_bitfield */ +static gint ett_ncp_action_flag_bitfield; +static const ptvc_record ptvc_ncp_action_flag_bitfield[] = { + { &hf_ncp_act_flag_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_act_flag_replace, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_act_flag_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_action_flag_bitfield = { + &ett_ncp_action_flag_bitfield, + NULL, + ptvc_ncp_action_flag_bitfield, +}; + +/* ncp_attr_def_bitfield */ +static gint ett_ncp_attr_def_bitfield; +static const ptvc_record ptvc_ncp_attr_def_bitfield[] = { + { &hf_ncp_att_def_shareable, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_archive, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_sub_only, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_execute, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_system, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_hidden, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_ro, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_attr_def_bitfield = { + &ett_ncp_attr_def_bitfield, + NULL, + ptvc_ncp_attr_def_bitfield, +}; + +/* ncp_attr_def_16_bitfield */ +static gint ett_ncp_attr_def_16_bitfield; +static const ptvc_record ptvc_ncp_attr_def_16_bitfield[] = { + { &hf_ncp_att_def16_write_audit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_read_audit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_transaction, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_shareable, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_archive, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_sub_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_execute, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_system, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_hidden, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def16_ro, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_attr_def_16_bitfield = { + &ett_ncp_attr_def_16_bitfield, + NULL, + ptvc_ncp_attr_def_16_bitfield, +}; + +/* ncp_attr_def_32_bitfield */ +static gint ett_ncp_attr_def_32_bitfield; +static const ptvc_record ptvc_ncp_attr_def_32_bitfield[] = { + { &hf_ncp_att_def_comp, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_im_comp, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_cpyinhibit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_delinhibit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_reninhibit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def_purge, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_write_audit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_read_audit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_transaction, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_shareable, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_archive, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_sub_only, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_execute, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_system, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_hidden, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_att_def32_ro, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_attr_def_32_bitfield = { + &ett_ncp_attr_def_32_bitfield, + NULL, + ptvc_ncp_attr_def_32_bitfield, +}; + +/* ncp_change_bits_bitfield */ +static gint ett_ncp_change_bits_bitfield; +static const ptvc_record ptvc_ncp_change_bits_bitfield[] = { + { &hf_ncp_change_bits_max_space, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_max_acc_mask, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_acc_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_uid, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_utime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_udate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_aid, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_atime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_adate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_owner, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_ctime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_cdate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_fatt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_change_bits_bitfield = { + &ett_ncp_change_bits_bitfield, + NULL, + ptvc_ncp_change_bits_bitfield, +}; + +/* ncp_conn_ctrl_bits_bitfield */ +static gint ett_ncp_conn_ctrl_bits_bitfield; +static const ptvc_record ptvc_ncp_conn_ctrl_bits_bitfield[] = { + { &hf_ncp_disable_wdog_messages, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_disable_personal_brdcasts, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_disable_brdcasts, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enable_wdog_messages, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enable_personal_brdcasts, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enable_brdcasts, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_conn_ctrl_bits_bitfield = { + &ett_ncp_conn_ctrl_bits_bitfield, + NULL, + ptvc_ncp_conn_ctrl_bits_bitfield, +}; + +/* ncp_desired_access_rights_bitfield */ +static gint ett_ncp_desired_access_rights_bitfield; +static const ptvc_record ptvc_ncp_desired_access_rights_bitfield[] = { + { &hf_ncp_dsired_acc_rights_del_file_cls, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_w_thru, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_compat, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_deny_w, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_deny_r, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_write_o, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dsired_acc_rights_read_o, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_desired_access_rights_bitfield = { + &ett_ncp_desired_access_rights_bitfield, + NULL, + ptvc_ncp_desired_access_rights_bitfield, +}; + +/* ncp_ea_access_flag_bitfield */ +static gint ett_ncp_ea_access_flag_bitfield; +static const ptvc_record ptvc_ncp_ea_access_flag_bitfield[] = { + { &hf_ncp_ea_write_in_progress, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_system_ea_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_delete_privileges, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_read_privileges, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_write_privileges, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_need_bit_flag, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_score_card_present, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_tally_need_update, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_new_tally_used, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_header_being_enlarged, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_in_progress, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_deep_freeze, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_permanent_memory, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_ea_access_flag_bitfield = { + &ett_ncp_ea_access_flag_bitfield, + NULL, + ptvc_ncp_ea_access_flag_bitfield, +}; + +/* ncp_effective_rights_bitfield */ +static gint ett_ncp_effective_rights_bitfield; +static const ptvc_record ptvc_ncp_effective_rights_bitfield[] = { + { &hf_ncp_effective_rights_modify, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_search, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_parental, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_delete, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_effective_rights_bitfield = { + &ett_ncp_effective_rights_bitfield, + NULL, + ptvc_ncp_effective_rights_bitfield, +}; + +/* ncp_enum_info_mask_bitfield */ +static gint ett_ncp_enum_info_mask_bitfield; +static const ptvc_record ptvc_ncp_enum_info_mask_bitfield[] = { + { &hf_ncp_enum_info_auth, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_account, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_stats, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_print, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_lock, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_name, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_time, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enum_info_transport, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_enum_info_mask_bitfield = { + &ett_ncp_enum_info_mask_bitfield, + NULL, + ptvc_ncp_enum_info_mask_bitfield, +}; + +/* ncp_ext_info_bitfield */ +static gint ett_ncp_ext_info_bitfield; +static const ptvc_record ptvc_ncp_ext_info_bitfield[] = { + { &hf_ncp_ext_info_newstyle, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_64_bit_fs, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_access, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_mac_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_effective, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_sibling, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_mac_finder, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_parental, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_flush, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_dos_name, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info_update, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_ext_info_bitfield = { + &ett_ncp_ext_info_bitfield, + NULL, + ptvc_ncp_ext_info_bitfield, +}; + +/* ncp_finder_attr_bitfield */ +static gint ett_ncp_finder_attr_bitfield; +static const ptvc_record ptvc_ncp_finder_attr_bitfield[] = { + { &hf_ncp_finder_attr_bundle, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr_invisible, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr_desktop, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_finder_attr_bitfield = { + &ett_ncp_finder_attr_bitfield, + NULL, + ptvc_ncp_finder_attr_bitfield, +}; + +/* ncp_info_flags_bitfield */ +static gint ett_ncp_info_flags_bitfield; +static const ptvc_record ptvc_ncp_info_flags_bitfield[] = { + { &hf_ncp_info_flags_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_security, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_name, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_info_flags_bitfield = { + &ett_ncp_info_flags_bitfield, + NULL, + ptvc_ncp_info_flags_bitfield, +}; + +/* ncp_info_mask_bitfield */ +static gint ett_ncp_info_mask_bitfield; +static const ptvc_record ptvc_ncp_info_mask_bitfield[] = { + { &hf_ncp_info_mask_c_name_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_mask_dosname, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_mac_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_effect_rights, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_sibling_cnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_mac_finder, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_prnt_base_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_flush_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_max_access_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_all_dirbase_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_all_attr, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_ea_present, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_ns_attr, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_ds_sizes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_ids, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_dos_attr, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_ref_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags_dos_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_mask_name, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_info_mask_bitfield = { + &ett_ncp_info_mask_bitfield, + NULL, + ptvc_ncp_info_mask_bitfield, +}; + +/* ncp_inheritance_revoke_mask_bitfield */ +static gint ett_ncp_inheritance_revoke_mask_bitfield; +static const ptvc_record ptvc_ncp_inheritance_revoke_mask_bitfield[] = { + { &hf_ncp_inh_revoke_supervisor, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_delete, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_revoke_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_inheritance_revoke_mask_bitfield = { + &ett_ncp_inheritance_revoke_mask_bitfield, + NULL, + ptvc_ncp_inheritance_revoke_mask_bitfield, +}; + +/* ncp_inherited_rights_mask_bitfield */ +static gint ett_ncp_inherited_rights_mask_bitfield; +static const ptvc_record ptvc_ncp_inherited_rights_mask_bitfield[] = { + { &hf_ncp_inh_rights_supervisor, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_delete, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inh_rights_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_inherited_rights_mask_bitfield = { + &ett_ncp_inherited_rights_mask_bitfield, + NULL, + ptvc_ncp_inherited_rights_mask_bitfield, +}; + +/* ncp_job_control_flags_bitfield */ +static gint ett_ncp_job_control_flags_bitfield; +static const ptvc_record ptvc_ncp_job_control_flags_bitfield[] = { + { &hf_ncp_job_control_operator_hold, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_user_hold, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_file_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_reservice, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_job_recovery, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_job_control_flags_bitfield = { + &ett_ncp_job_control_flags_bitfield, + NULL, + ptvc_ncp_job_control_flags_bitfield, +}; + +/* ncp_job_control_flags_word_bitfield */ +static gint ett_ncp_job_control_flags_word_bitfield; +static const ptvc_record ptvc_ncp_job_control_flags_word_bitfield[] = { + { &hf_ncp_job_control1_operator_hold, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control1_user_hold, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control1_file_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control1_reservice, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control1_job_recovery, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_job_control_flags_word_bitfield = { + &ett_ncp_job_control_flags_word_bitfield, + NULL, + ptvc_ncp_job_control_flags_word_bitfield, +}; + +/* ncp_log_file_flag_high_bitfield */ +static gint ett_ncp_log_file_flag_high_bitfield; +static const ptvc_record ptvc_ncp_log_file_flag_high_bitfield[] = { + { &hf_ncp_log_flag_call_back, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_log_file_flag_high_bitfield = { + &ett_ncp_log_file_flag_high_bitfield, + NULL, + ptvc_ncp_log_file_flag_high_bitfield, +}; + +/* ncp_log_file_flag_low_bitfield */ +static gint ett_ncp_log_file_flag_low_bitfield; +static const ptvc_record ptvc_ncp_log_file_flag_low_bitfield[] = { + { &hf_ncp_log_flag_lock_file, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_log_file_flag_low_bitfield = { + &ett_ncp_log_file_flag_low_bitfield, + NULL, + ptvc_ncp_log_file_flag_low_bitfield, +}; + +/* ncp_mac_attr_bitfield */ +static gint ett_ncp_mac_attr_bitfield; +static const ptvc_record ptvc_ncp_mac_attr_bitfield[] = { + { &hf_ncp_mac_attr_share, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_archive, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_subdirectory, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_execute_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_system, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_hidden, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_r_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_w_audit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_r_audit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_index, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_transaction, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_smode3, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_smode2, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr_smode1, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_mac_attr_bitfield = { + &ett_ncp_mac_attr_bitfield, + NULL, + ptvc_ncp_mac_attr_bitfield, +}; + +/* ncp_modify_dos_info_mask_bitfield */ +static gint ett_ncp_modify_dos_info_mask_bitfield; +static const ptvc_record ptvc_ncp_modify_dos_info_mask_bitfield[] = { + { &hf_ncp_modify_dos_max_space, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_inheritance, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_laccess, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_mid, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_mtime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_mdate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_delete, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_modify_dos_info_mask_bitfield = { + &ett_ncp_modify_dos_info_mask_bitfield, + NULL, + ptvc_ncp_modify_dos_info_mask_bitfield, +}; + +/* ncp_nds_request_flags_bitfield */ +static gint ett_ncp_nds_request_flags_bitfield; +static const ptvc_record ptvc_ncp_nds_request_flags_bitfield[] = { + { &hf_ncp_nds_request_flags_dn_ref, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_up_ref, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_trans_ref2, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_trans_ref, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_reply_data_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_req_data_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_req_cnt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_alias_ref, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_type_ref, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_local_entry, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_no_such_entry, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nds_request_flags_output, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_nds_request_flags_bitfield = { + &ett_ncp_nds_request_flags_bitfield, + NULL, + ptvc_ncp_nds_request_flags_bitfield, +}; + +/* ncp_new_access_rights_mask_bitfield */ +static gint ett_ncp_new_access_rights_mask_bitfield; +static const ptvc_record ptvc_ncp_new_access_rights_mask_bitfield[] = { + { &hf_ncp_new_access_rights_supervisor, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_parental, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_delete, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_new_access_rights_mask_bitfield = { + &ett_ncp_new_access_rights_mask_bitfield, + NULL, + ptvc_ncp_new_access_rights_mask_bitfield, +}; + +/* ncp_nlm_flags_bitfield */ +static gint ett_ncp_nlm_flags_bitfield; +static const ptvc_record ptvc_ncp_nlm_flags_bitfield[] = { + { &hf_ncp_nlm_flags_pseudo, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_flags_synchronize, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_flags_multiple, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_flags_reentrant, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_nlm_flags_bitfield = { + &ett_ncp_nlm_flags_bitfield, + NULL, + ptvc_ncp_nlm_flags_bitfield, +}; + +/* ncp_ns_info_mask_bitfield */ +static gint ett_ncp_ns_info_mask_bitfield; +static const ptvc_record ptvc_ncp_ns_info_mask_bitfield[] = { + { &hf_ncp_ns_info_mask_max_space, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_max_acc_mask, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_acc_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_uid, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_utime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_udate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_aid, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_atime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_adate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_owner, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_ctime, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_cdate, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_fatt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_ns_info_mask_bitfield = { + &ett_ncp_ns_info_mask_bitfield, + NULL, + ptvc_ncp_ns_info_mask_bitfield, +}; + +/* ncp_open_create_action_bitfield */ +static gint ett_ncp_open_create_action_bitfield; +static const ptvc_record ptvc_ncp_open_create_action_bitfield[] = { + { &hf_ncp_open_create_action_read_only, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action_compressed, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action_replaced, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action_created, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action_opened, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_open_create_action_bitfield = { + &ett_ncp_open_create_action_bitfield, + NULL, + ptvc_ncp_open_create_action_bitfield, +}; + +/* ncp_open_create_mode_bitfield */ +static gint ett_ncp_open_create_mode_bitfield; +static const ptvc_record ptvc_ncp_open_create_mode_bitfield[] = { + { &hf_ncp_open_create_mode_oplock, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_mode_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_mode_replace, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_mode_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_open_create_mode_bitfield = { + &ett_ncp_open_create_mode_bitfield, + NULL, + ptvc_ncp_open_create_mode_bitfield, +}; + +/* ncp_open_rights_bitfield */ +static gint ett_ncp_open_rights_bitfield; +static const ptvc_record ptvc_ncp_open_rights_bitfield[] = { + { &hf_ncp_open_rights_write_thru, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights_compat, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights_deny_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights_deny_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights_write_only, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights_read_only, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_open_rights_bitfield = { + &ett_ncp_open_rights_bitfield, + NULL, + ptvc_ncp_open_rights_bitfield, +}; + +/* ncp_print_flags_bitfield */ +static gint ett_ncp_print_flags_bitfield; +static const ptvc_record ptvc_ncp_print_flags_bitfield[] = { + { &hf_ncp_print_flags_banner, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_flags_exp_tabs, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_flags_del_spool, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_flags_cr, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_flags_ff, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_print_flags_bitfield = { + &ett_ncp_print_flags_bitfield, + NULL, + ptvc_ncp_print_flags_bitfield, +}; + +/* ncp_queue_status_bitfield */ +static gint ett_ncp_queue_status_bitfield; +static const ptvc_record ptvc_ncp_queue_status_bitfield[] = { + { &hf_ncp_queue_status_svc_jobs, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_status_pserver, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_status_new_jobs, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_queue_status_bitfield = { + &ett_ncp_queue_status_bitfield, + NULL, + ptvc_ncp_queue_status_bitfield, +}; + +/* ncp_remove_open_rights_bitfield */ +static gint ett_ncp_remove_open_rights_bitfield; +static const ptvc_record ptvc_ncp_remove_open_rights_bitfield[] = { + { &hf_ncp_remove_open_rights_write_thru, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights_comp, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights_dw, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights_dr, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights_wo, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights_ro, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_remove_open_rights_bitfield = { + &ett_ncp_remove_open_rights_bitfield, + NULL, + ptvc_ncp_remove_open_rights_bitfield, +}; + +/* ncp_rename_flag_bitfield */ +static gint ett_ncp_rename_flag_bitfield; +static const ptvc_record ptvc_ncp_rename_flag_bitfield[] = { + { &hf_ncp_rename_flag_no, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rename_flag_comp, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rename_flag_ren, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_rename_flag_bitfield = { + &ett_ncp_rename_flag_bitfield, + NULL, + ptvc_ncp_rename_flag_bitfield, +}; + +/* ncp_request_bit_map_bitfield */ +static gint ett_ncp_request_bit_map_bitfield; +static const ptvc_record ptvc_ncp_request_bit_map_bitfield[] = { + { &hf_ncp_request_bit_map_ret_long_nm, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_finder, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_bak_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_mod_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_acc_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_cr_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_afp_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ratt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_acc_priv, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_short, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_owner, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_num_off, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_res_fork, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_data_fork, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map_ret_afp_ent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_request_bit_map_bitfield = { + &ett_ncp_request_bit_map_bitfield, + NULL, + ptvc_ncp_request_bit_map_bitfield, +}; + +/* ncp_ret_info_mask_bitfield */ +static gint ett_ncp_ret_info_mask_bitfield; +static const ptvc_record ptvc_ncp_ret_info_mask_bitfield[] = { + { &hf_ncp_ret_info_mask_logical, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_actual, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_ns_attr, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_id, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_rights, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_dir, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_ns, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_mod, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_arch, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_eattr, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_tspace, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_attr, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_alloc, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask_fname, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_ret_info_mask_bitfield = { + &ett_ncp_ret_info_mask_bitfield, + NULL, + ptvc_ncp_ret_info_mask_bitfield, +}; + +/* ncp_rights_grant_mask_bitfield */ +static gint ett_ncp_rights_grant_mask_bitfield; +static const ptvc_record ptvc_ncp_rights_grant_mask_bitfield[] = { + { &hf_ncp_rights_grant_mask_mod, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_search, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_parent, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_del, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_rights_grant_mask_bitfield = { + &ett_ncp_rights_grant_mask_bitfield, + NULL, + ptvc_ncp_rights_grant_mask_bitfield, +}; + +/* ncp_rights_revoke_mask_bitfield */ +static gint ett_ncp_rights_revoke_mask_bitfield; +static const ptvc_record ptvc_ncp_rights_revoke_mask_bitfield[] = { + { &hf_ncp_rights_revoke_mask_mod, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_search, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_parent, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_del, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_create, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_open, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_write, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask_read, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_rights_revoke_mask_bitfield = { + &ett_ncp_rights_revoke_mask_bitfield, + NULL, + ptvc_ncp_rights_revoke_mask_bitfield, +}; + +/* ncp_sattr_bitfield */ +static gint ett_ncp_sattr_bitfield; +static const ptvc_record ptvc_ncp_sattr_bitfield[] = { + { &hf_ncp_sattr_shareable, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_execute_confirm, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_archive, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_sub, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_exonly, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_sys, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_hid, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr_ronly, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_sattr_bitfield = { + &ett_ncp_sattr_bitfield, + NULL, + ptvc_ncp_sattr_bitfield, +}; + +/* ncp_search_att_low_bitfield */ +static gint ett_ncp_search_att_low_bitfield; +static const ptvc_record ptvc_ncp_search_att_low_bitfield[] = { + { &hf_ncp_search_attr_all_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_shareable, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_execute_confirm, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_archive, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_sub, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_execute_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_system, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_hidden, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_read_only, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_search_att_low_bitfield = { + &ett_ncp_search_att_low_bitfield, + NULL, + ptvc_ncp_search_att_low_bitfield, +}; + +/* ncp_search_bit_map_bitfield */ +static gint ett_ncp_search_bit_map_bitfield; +static const ptvc_record ptvc_ncp_search_bit_map_bitfield[] = { + { &hf_ncp_search_bit_map_files, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_bit_map_sub, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_bit_map_sys, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_bit_map_hidden, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_search_bit_map_bitfield = { + &ett_ncp_search_bit_map_bitfield, + NULL, + ptvc_ncp_search_bit_map_bitfield, +}; + +/* ncp_security_flag_bitfield */ +static gint ett_ncp_security_flag_bitfield; +static const ptvc_record ptvc_ncp_security_flag_bitfield[] = { + { &hf_ncp_large_internet_packets, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_encryption, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_complete_signatures, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_signature, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_checksuming, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_security_flag_bitfield = { + &ett_ncp_security_flag_bitfield, + NULL, + ptvc_ncp_security_flag_bitfield, +}; + +/* ncp_set_cmd_flags_bitfield */ +static gint ett_ncp_set_cmd_flags_bitfield; +static const ptvc_record ptvc_ncp_set_cmd_flags_bitfield[] = { + { &hf_ncp_cmd_flags_secure, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmd_flags_later, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmd_flags_advanced, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmd_flags_hidden, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmd_flags_startup_only, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_set_cmd_flags_bitfield = { + &ett_ncp_set_cmd_flags_bitfield, + NULL, + ptvc_ncp_set_cmd_flags_bitfield, +}; + +/* ncp_status_bitfield */ +static gint ett_ncp_status_bitfield; +static const ptvc_record ptvc_ncp_status_bitfield[] = { + { &hf_ncp_user_info_bindery, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_int_login, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_logout, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_dsaudit_conn, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_audit_conn, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_temp_authen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_mac_station, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_need_sec, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_audited, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_being_abort, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_logged_in, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_status_bitfield = { + &ett_ncp_status_bitfield, + NULL, + ptvc_ncp_status_bitfield, +}; + +/* ncp_status_flag_bits_bitfield */ +static gint ett_ncp_status_flag_bits_bitfield; +static const ptvc_record ptvc_ncp_status_flag_bits_bitfield[] = { + { &hf_ncp_status_flag_bits_im_purge, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_ro, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_audit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_migrate, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_comp, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_suballoc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits_nss, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_status_flag_bits_bitfield = { + &ett_ncp_status_flag_bits_bitfield, + NULL, + ptvc_ncp_status_flag_bits_bitfield, +}; + +/* ncp_timesync_status_flags_bitfield */ +static gint ett_ncp_timesync_status_flags_bitfield; +static const ptvc_record ptvc_ncp_timesync_status_flags_bitfield[] = { + { &hf_ncp_timesync_status_ext_sync, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_server_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_external, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_active, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_net_sync, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_sync, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_timesync_status_flags_bitfield = { + &ett_ncp_timesync_status_flags_bitfield, + NULL, + ptvc_ncp_timesync_status_flags_bitfield, +}; + +/* ncp_trustee_rights_low_bitfield */ +static gint ett_ncp_trustee_rights_low_bitfield; +static const ptvc_record ptvc_ncp_trustee_rights_low_bitfield[] = { + { &hf_ncp_trustee_rights_super, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_modify, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_search, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_parent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_del, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_create, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_open, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_read, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record ncp_trustee_rights_low_bitfield = { + &ett_ncp_trustee_rights_low_bitfield, + NULL, + ptvc_ncp_trustee_rights_low_bitfield, +}; + +/* PTVC records for structs. */ +static gint ett_struct_acctng_info_struct; +static const ptvc_record ptvc_struct_acctng_info_struct[] = { + { &hf_ncp_hold_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_charge_amount, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_held_conn_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_held_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_held_bytes_read, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_held_bytes_write, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_acctng_info_struct = { + &ett_struct_acctng_info_struct, + "Accounting Information", + ptvc_struct_acctng_info_struct, +}; + +static gint ett_struct_afp_10_struct; +static const ptvc_record ptvc_struct_afp_10_struct[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_fork_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_offspring, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_long_name, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_short_name, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_privileges, 1, &ncp_access_privileges_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_afp_10_struct = { + &ett_struct_afp_10_struct, + "AFP Information", + ptvc_struct_afp_10_struct, +}; + +static gint ett_struct_afp_20_struct; +static const ptvc_record ptvc_struct_afp_20_struct[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_fork_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_offspring, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_long_name, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_short_name, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_privileges, 1, &ncp_access_privileges_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_afp_20_struct = { + &ett_struct_afp_20_struct, + "AFP Information", + ptvc_struct_afp_20_struct, +}; + +static gint ett_struct_archive_date_struct; +static const ptvc_record ptvc_struct_archive_date_struct[] = { + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_archive_date_struct = { + &ett_struct_archive_date_struct, + NULL, + ptvc_struct_archive_date_struct, +}; + +static gint ett_struct_archive_id_struct; +static const ptvc_record ptvc_struct_archive_id_struct[] = { + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_archive_id_struct = { + &ett_struct_archive_id_struct, + NULL, + ptvc_struct_archive_id_struct, +}; + +static gint ett_struct_archive_info_struct; +static const ptvc_record ptvc_struct_archive_info_struct[] = { + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_archive_info_struct = { + &ett_struct_archive_info_struct, + "Archive Information", + ptvc_struct_archive_info_struct, +}; + +static gint ett_struct_archive_time_struct; +static const ptvc_record ptvc_struct_archive_time_struct[] = { + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_archive_time_struct = { + &ett_struct_archive_time_struct, + NULL, + ptvc_struct_archive_time_struct, +}; + +static gint ett_struct_attributes_struct; +static const ptvc_record ptvc_struct_attributes_struct[] = { + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_flags_def, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_attributes_struct = { + &ett_struct_attributes_struct, + "Attributes", + ptvc_struct_attributes_struct, +}; + +static gint ett_struct_auth_info_struct; +static const ptvc_record ptvc_struct_auth_info_struct[] = { + { &hf_ncp_status, 2, &ncp_status_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_privileges, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_auth_info_struct = { + &ett_struct_auth_info_struct, + NULL, + ptvc_struct_auth_info_struct, +}; + +static gint ett_struct_board_name_struct; +static const ptvc_record ptvc_struct_board_name_struct[] = { + { &hf_ncp_driver_board_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_driver_short_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_driver_log_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_board_name_struct = { + &ett_struct_board_name_struct, + "Board Name", + ptvc_struct_board_name_struct, +}; + +static gint ett_struct_cache_info; +static const ptvc_record ptvc_struct_cache_info[] = { + { &hf_ncp_max_byte_cnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_min_num_of_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_min_cache_report_thresh, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_waiting, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ndirty_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_dirty_wait_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_max_concur_writes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_dirty_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_dir_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_byte_to_block, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_cache_info = { + &ett_struct_cache_info, + "Cache Information", + ptvc_struct_cache_info, +}; + +static gint ett_struct_common_lan_struct; +static const ptvc_record ptvc_struct_common_lan_struct[] = { + { &hf_ncp_not_supported_mask, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_tx_packet_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_rx_packet_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_ecb_available_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_tx_too_big_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_tx_too_small_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_rx_overflow_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_rx_too_big_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_rs_too_small_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_tx_misc_error_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packet_rx_misc_error_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_retry_tx_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_checksum_error_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hardware_rx_mismatch_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_common_lan_struct = { + &ett_struct_common_lan_struct, + "Common LAN Information", + ptvc_struct_common_lan_struct, +}; + +static gint ett_struct_comp_d_comp_stat; +static const ptvc_record ptvc_struct_comp_d_comp_stat[] = { + { &hf_ncp_cmphitickhigh, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmphitickcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmpbyteincount, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmpbyteoutcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmphibyteincnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cmphibyteoutcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decphitickhigh, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decphitickcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decpbyteincount, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decpbyteoutcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decphibyteincnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_decphibyteoutcnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_comp_d_comp_stat = { + &ett_struct_comp_d_comp_stat, + "Compression/Decompression Information", + ptvc_struct_comp_d_comp_stat, +}; + +static gint ett_struct_conn_file_struct; +static const ptvc_record ptvc_struct_conn_file_struct[] = { + { &hf_ncp_conn_number_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_control, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_conn_file_struct = { + &ett_struct_conn_file_struct, + "File Connection Information", + ptvc_struct_conn_file_struct, +}; + +static gint ett_struct_conn_struct; +static const ptvc_record ptvc_struct_conn_struct[] = { + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_control, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_conn_struct = { + &ett_struct_conn_struct, + "Connection Information", + ptvc_struct_conn_struct, +}; + +static gint ett_struct_conn_task_struct; +static const ptvc_record ptvc_struct_conn_task_struct[] = { + { &hf_ncp_conn_number_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_conn_task_struct = { + &ett_struct_conn_task_struct, + "Task Information", + ptvc_struct_conn_task_struct, +}; + +static gint ett_struct_counters_struct; +static const ptvc_record ptvc_struct_counters_struct[] = { + { &hf_ncp_read_exist_blck, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_read_exist_write_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_read_exist_part_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_read_exist_read_err, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wrt_blck_cnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wrt_entire_blck, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_need_to_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_someone_beat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_part_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_read_err, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_async_internl_dsk_get, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_async_internl_dsk_get_need_to_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_async_internl_dsk_get_someone_beat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_err_doing_async_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_no_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_no_read_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_no_read_someone_beat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_write, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_write_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_write_someone_beat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_err, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wait_on_sema, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck_i_had_to_wait_for, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck_i_had_to_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_counters_struct = { + &ett_struct_counters_struct, + "Disk Counter Information", + ptvc_struct_counters_struct, +}; + +static gint ett_struct_cpu_information; +static const ptvc_record ptvc_struct_cpu_information[] = { + { &hf_ncp_page_table_owner_flag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cpu_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_co_processor_flag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bus_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_io_engine_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fs_engine_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_non_ded_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cpu_string, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_co_proc_string, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bus_string, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_cpu_information = { + &ett_struct_cpu_information, + "CPU Information", + ptvc_struct_cpu_information, +}; + +static gint ett_struct_creation_date_struct; +static const ptvc_record ptvc_struct_creation_date_struct[] = { + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_creation_date_struct = { + &ett_struct_creation_date_struct, + NULL, + ptvc_struct_creation_date_struct, +}; + +static gint ett_struct_creation_info_struct; +static const ptvc_record ptvc_struct_creation_info_struct[] = { + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_creation_info_struct = { + &ett_struct_creation_info_struct, + "Creation Information", + ptvc_struct_creation_info_struct, +}; + +static gint ett_struct_creation_time_struct; +static const ptvc_record ptvc_struct_creation_time_struct[] = { + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_creation_time_struct = { + &ett_struct_creation_time_struct, + NULL, + ptvc_struct_creation_time_struct, +}; + +static gint ett_struct_custom_cnts_info; +static const ptvc_record ptvc_struct_custom_cnts_info[] = { + { &hf_ncp_custom_var_value, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_custom_string, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_custom_cnts_info = { + &ett_struct_custom_cnts_info, + "Custom Counters", + ptvc_struct_custom_cnts_info, +}; + +static gint ett_struct_d_stream_actual; +static const ptvc_record ptvc_struct_d_stream_actual[] = { + { &hf_ncp_reserved12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_d_stream_actual = { + &ett_struct_d_stream_actual, + NULL, + ptvc_struct_d_stream_actual, +}; + +static gint ett_struct_d_string_logical; +static const ptvc_record ptvc_struct_d_string_logical[] = { + { &hf_ncp_reserved12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_d_string_logical = { + &ett_struct_d_string_logical, + NULL, + ptvc_struct_d_string_logical, +}; + +static gint ett_struct_data_stream_info; +static const ptvc_record ptvc_struct_data_stream_info[] = { + { &hf_ncp_associated_name_space, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_data_stream_info = { + &ett_struct_data_stream_info, + NULL, + ptvc_struct_data_stream_info, +}; + +static gint ett_struct_data_stream_size_struct; +static const ptvc_record ptvc_struct_data_stream_size_struct[] = { + { &hf_ncp_data_stream_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_data_stream_size_struct = { + &ett_struct_data_stream_size_struct, + NULL, + ptvc_struct_data_stream_size_struct, +}; + +static gint ett_struct_dir_cache_info; +static const ptvc_record ptvc_struct_dir_cache_info[] = { + { &hf_ncp_min_time_since_file_delete, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_abs_min_time_since_file_delete, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_min_num_of_dir_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_dir_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_dir_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dc_min_non_ref_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dc_wait_time_before_new_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dc_max_concurrent_writes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dc_dirty_wait_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dc_double_read_flag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_map_hash_node_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_space_restriction_node_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_list_node_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_percent_of_vol_used_by_dirs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dir_cache_info = { + &ett_struct_dir_cache_info, + "Directory Cache Information", + ptvc_struct_dir_cache_info, +}; + +static gint ett_struct_dir_entry_struct; +static const ptvc_record ptvc_struct_dir_entry_struct[] = { + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dir_entry_struct = { + &ett_struct_dir_entry_struct, + "Directory Entry Information", + ptvc_struct_dir_entry_struct, +}; + +static gint ett_struct_directory_instance; +static const ptvc_record ptvc_struct_directory_instance[] = { + { &hf_ncp_search_sequence_word, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_id, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_attributes, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_access_rights, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_stamp, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_directory_instance = { + &ett_struct_directory_instance, + "Directory Information", + ptvc_struct_directory_instance, +}; + +static gint ett_struct_dm_info_level_0; +static const ptvc_record ptvc_struct_dm_info_level_0[] = { + { &hf_ncp_io_flag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sm_info_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_avail_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_used_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_module_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_m_info, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dm_info_level_0 = { + &ett_struct_dm_info_level_0, + NULL, + ptvc_struct_dm_info_level_0, +}; + +static gint ett_struct_dm_info_level_1; +static const ptvc_record ptvc_struct_dm_info_level_1[] = { + { &hf_ncp_number_of_sms, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_smids, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dm_info_level_1 = { + &ett_struct_dm_info_level_1, + NULL, + ptvc_struct_dm_info_level_1, +}; + +static gint ett_struct_dm_info_level_2; +static const ptvc_record ptvc_struct_dm_info_level_2[] = { + { &hf_ncp_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dm_info_level_2 = { + &ett_struct_dm_info_level_2, + NULL, + ptvc_struct_dm_info_level_2, +}; + +static gint ett_struct_dos_directory_entry_struct; +static const ptvc_record ptvc_struct_dos_directory_entry_struct[] = { + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_name, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_next_trustee_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved48, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dos_directory_entry_struct = { + &ett_struct_dos_directory_entry_struct, + "DOS Directory Information", + ptvc_struct_dos_directory_entry_struct, +}; + +static gint ett_struct_dos_file_entry_struct; +static const ptvc_record ptvc_struct_dos_file_entry_struct[] = { + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_first_fat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_trustee_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved36, 36, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_reserved28, 28, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_primary_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_list, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dos_file_entry_struct = { + &ett_struct_dos_file_entry_struct, + "DOS File Information", + ptvc_struct_dos_file_entry_struct, +}; + +static gint ett_struct_dos_name_struct; +static const ptvc_record ptvc_struct_dos_name_struct[] = { + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dos_name_struct = { + &ett_struct_dos_name_struct, + "DOS File Name", + ptvc_struct_dos_name_struct, +}; + +static gint ett_struct_ds_space_alloc_struct; +static const ptvc_record ptvc_struct_ds_space_alloc_struct[] = { + { &hf_ncp_data_stream_space_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ds_space_alloc_struct = { + &ett_struct_ds_space_alloc_struct, + NULL, + ptvc_struct_ds_space_alloc_struct, +}; + +static gint ett_struct_dyn_mem_struct; +static const ptvc_record ptvc_struct_dyn_mem_struct[] = { + { &hf_ncp_dyn_mem_struct_total, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dyn_mem_struct_max, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dyn_mem_struct_cur, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_dyn_mem_struct = { + &ett_struct_dyn_mem_struct, + "Dynamic Memory Information", + ptvc_struct_dyn_mem_struct, +}; + +static gint ett_struct_ea_info_struct; +static const ptvc_record ptvc_struct_ea_info_struct[] = { + { &hf_ncp_ea_data_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ea_info_struct = { + &ett_struct_ea_info_struct, + "Extended Attribute Information", + ptvc_struct_ea_info_struct, +}; + +static gint ett_struct_eff_rights_struct; +static const ptvc_record ptvc_struct_eff_rights_struct[] = { + { &hf_ncp_effective_rights, 1, &ncp_effective_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_eff_rights_struct = { + &ett_struct_eff_rights_struct, + NULL, + ptvc_struct_eff_rights_struct, +}; + +static gint ett_struct_extra_cache_cntrs; +static const ptvc_record ptvc_struct_extra_cache_cntrs[] = { + { &hf_ncp_internl_dsk_get_no_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_no_wait_need, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internl_dsk_get_no_wait_no_blk, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_sema, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_buffer, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_no_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_no_alloc_sema, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_id_get_no_read_no_wait_no_alloc_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_extra_cache_cntrs = { + &ett_struct_extra_cache_cntrs, + "Extra Cache Counters Information", + ptvc_struct_extra_cache_cntrs, +}; + +static gint ett_struct_file_attributes_struct; +static const ptvc_record ptvc_struct_file_attributes_struct[] = { + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_attributes_struct = { + &ett_struct_file_attributes_struct, + NULL, + ptvc_struct_file_attributes_struct, +}; + +static gint ett_struct_file_info_struct; +static const ptvc_record ptvc_struct_file_info_struct[] = { + { &hf_ncp_parent_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_blks_to_dcompress, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cur_blk_being_dcompress, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_info_struct = { + &ett_struct_file_info_struct, + "File Information", + ptvc_struct_file_info_struct, +}; + +static gint ett_struct_file_instance; +static const ptvc_record ptvc_struct_file_instance[] = { + { &hf_ncp_search_sequence_word, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_id, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_mode, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_instance = { + &ett_struct_file_instance, + "File Instance", + ptvc_struct_file_instance, +}; + +static gint ett_struct_file_name_struct; +static const ptvc_record ptvc_struct_file_name_struct[] = { + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_name_struct = { + &ett_struct_file_name_struct, + "File Name", + ptvc_struct_file_name_struct, +}; + +static gint ett_struct_file_server_counters; +static const ptvc_record ptvc_struct_file_server_counters[] = { + { &hf_ncp_too_many_hops, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unknown_network, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_space_for_service, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_receive_buff, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_not_my_network, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_netbios_progated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_pckts_srvcd, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_pckts_routed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_server_counters = { + &ett_struct_file_server_counters, + "File Server Counters", + ptvc_struct_file_server_counters, +}; + +static gint ett_struct_file_system_info; +static const ptvc_record ptvc_struct_file_system_info[] = { + { &hf_ncp_fat_moved, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fat_write_err, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_someone_else_did_it_0, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_someone_else_did_it_1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_someone_else_did_it_2, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_i_ran_out_someone_else_did_it_0, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_i_ran_out_someone_else_did_it_1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_i_ran_out_someone_else_did_it_2, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_turbo_fat_build_failed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_extra_use_count_node_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_extra_extra_use_count_node_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_error_read_last_fat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_someone_else_using_this_file, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_file_system_info = { + &ett_struct_file_system_info, + "File System Information", + ptvc_struct_file_system_info, +}; + +static gint ett_struct_flush_time_struct; +static const ptvc_record ptvc_struct_flush_time_struct[] = { + { &hf_ncp_flush_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_flush_time_struct = { + &ett_struct_flush_time_struct, + NULL, + ptvc_struct_flush_time_struct, +}; + +static gint ett_struct_generic_info_def; +static const ptvc_record ptvc_struct_generic_info_def[] = { + { &hf_ncp_generic_label, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_ident_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_ident_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_media_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_cartridge_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_unit_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_block_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_capacity, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_pref_unit_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_name, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_status, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_func_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_ctl_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_parent_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_sib_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_child_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_spec_info_sz, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_object_uniq_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_generic_media_slot, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_generic_info_def = { + &ett_struct_generic_info_def, + "Generic Information", + ptvc_struct_generic_info_def, +}; + +static gint ett_struct_handle_info_level_0; +static const ptvc_record ptvc_struct_handle_info_level_0[] = { + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_0 = { + &ett_struct_handle_info_level_0, + NULL, + ptvc_struct_handle_info_level_0, +}; + +static gint ett_struct_handle_info_level_1; +static const ptvc_record ptvc_struct_handle_info_level_1[] = { + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_1 = { + &ett_struct_handle_info_level_1, + NULL, + ptvc_struct_handle_info_level_1, +}; + +static gint ett_struct_handle_info_level_2; +static const ptvc_record ptvc_struct_handle_info_level_2[] = { + { &hf_ncp_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_2 = { + &ett_struct_handle_info_level_2, + NULL, + ptvc_struct_handle_info_level_2, +}; + +static gint ett_struct_handle_info_level_3; +static const ptvc_record ptvc_struct_handle_info_level_3[] = { + { &hf_ncp_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_3 = { + &ett_struct_handle_info_level_3, + NULL, + ptvc_struct_handle_info_level_3, +}; + +static gint ett_struct_handle_info_level_4; +static const ptvc_record ptvc_struct_handle_info_level_4[] = { + { &hf_ncp_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_4 = { + &ett_struct_handle_info_level_4, + NULL, + ptvc_struct_handle_info_level_4, +}; + +static gint ett_struct_handle_info_level_5; +static const ptvc_record ptvc_struct_handle_info_level_5[] = { + { &hf_ncp_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_handle_info_level_5 = { + &ett_struct_handle_info_level_5, + NULL, + ptvc_struct_handle_info_level_5, +}; + +static gint ett_struct_ipx_information; +static const ptvc_record ptvc_struct_ipx_information[] = { + { &hf_ncp_ipx_send_pkt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_malform_pkt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_get_ecb_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_get_ecb_fail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_aes_event, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_postponed_aes, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_max_conf_sock, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_max_open_sock, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_open_sock_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_listen_ecb, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_ecb_cancel_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_get_lcl_targ_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ipx_information = { + &ett_struct_ipx_information, + "IPX Information", + ptvc_struct_ipx_information, +}; + +static gint ett_struct_job_entry_time; +static const ptvc_record ptvc_struct_job_entry_time[] = { + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_job_entry_time = { + &ett_struct_job_entry_time, + "Job Entry Time", + ptvc_struct_job_entry_time, +}; + +static gint ett_struct_job_struct; +static const ptvc_record ptvc_struct_job_struct[] = { + { &hf_ncp_client_station, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_task_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_execution_time, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_entry_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_position, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_flags, 1, &ncp_job_control_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_task_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_text_job_description, 50, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_record_area, 152, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_job_struct = { + &ett_struct_job_struct, + "Job Information", + ptvc_struct_job_struct, +}; + +static gint ett_struct_job_struct_3x; +static const ptvc_record ptvc_struct_job_struct_3x[] = { + { &hf_ncp_record_in_use, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_previous_record, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_record, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_station_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_task_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_execution_time, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_entry_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_position_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_flags_word, 2, &ncp_job_control_flags_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_handle_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_task_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_text_job_description, 50, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_record_area, 152, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_job_struct_3x = { + &ett_struct_job_struct_3x, + "Job Information", + ptvc_struct_job_struct_3x, +}; + +static gint ett_struct_job_struct_new; +static const ptvc_record ptvc_struct_job_struct_new[] = { + { &hf_ncp_record_in_use, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_previous_record, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_record, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_station_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_task_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_execution_time, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_entry_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_position_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_flags_word, 2, &ncp_job_control_flags_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_handle_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_task_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_job_struct_new = { + &ett_struct_job_struct_new, + "Job Information", + ptvc_struct_job_struct_new, +}; + +static gint ett_struct_known_routes; +static const ptvc_record ptvc_struct_known_routes[] = { + { &hf_ncp_net_id_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hops_to_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_net_status, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_time_to_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_known_routes = { + &ett_struct_known_routes, + "Known Routes", + ptvc_struct_known_routes, +}; + +static gint ett_struct_known_server_struct; +static const ptvc_record ptvc_struct_known_server_struct[] = { + { &hf_ncp_server_address, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hops_to_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name_stringz, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_known_server_struct = { + &ett_struct_known_server_struct, + "Known Servers", + ptvc_struct_known_server_struct, +}; + +static gint ett_struct_lan_cfg_info; +static const ptvc_record ptvc_struct_lan_cfg_info[] = { + { &hf_ncp_lan_dvr_cfg_major_vrs, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_dvr_cfg_minor_vrs, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_dvr_node_addr, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_dvr_mode_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_bd_num, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_bd_inst, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_max_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_max_rcv_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_rcv_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_card_id, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_media_id, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_trans_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_src_route, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_line_speed, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_reserved, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_major_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_minor_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_snd_retries, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_link, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_share, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_slot, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_io_ports_and_ranges_1, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_io_ports_and_ranges_2, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_io_ports_and_ranges_3, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_io_ports_and_ranges_4, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_mem_decode_0, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_mem_length_0, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_mem_decode_1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_mem_length_1, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_interrupt1, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_interrupt2, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_dma_usage1, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_dma_usage2, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_log_name, 18, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_io_reserved, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lan_drv_card_name, 28, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_lan_cfg_info = { + &ett_struct_lan_cfg_info, + "LAN Configuration Information", + ptvc_struct_lan_cfg_info, +}; + +static gint ett_struct_last_access_struct; +static const ptvc_record ptvc_struct_last_access_struct[] = { + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_last_access_struct = { + &ett_struct_last_access_struct, + NULL, + ptvc_struct_last_access_struct, +}; + +static gint ett_struct_last_access_time_struct; +static const ptvc_record ptvc_struct_last_access_time_struct[] = { + { &hf_ncp_last_access_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_last_access_time_struct = { + &ett_struct_last_access_time_struct, + NULL, + ptvc_struct_last_access_time_struct, +}; + +static gint ett_struct_last_update_in_seconds_struct; +static const ptvc_record ptvc_struct_last_update_in_seconds_struct[] = { + { &hf_ncp_sec_rel_to_y2k, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_last_update_in_seconds_struct = { + &ett_struct_last_update_in_seconds_struct, + NULL, + ptvc_struct_last_update_in_seconds_struct, +}; + +static gint ett_struct_lock_info_struct; +static const ptvc_record ptvc_struct_lock_info_struct[] = { + { &hf_ncp_logical_lock_threshold, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_lock_threshold, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rec_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_lock_info_struct = { + &ett_struct_lock_info_struct, + "Lock Information", + ptvc_struct_lock_info_struct, +}; + +static gint ett_struct_lock_struct; +static const ptvc_record ptvc_struct_lock_struct[] = { + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_record_start, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_record_end, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_lock_struct = { + &ett_struct_lock_struct, + "Locks", + ptvc_struct_lock_struct, +}; + +static gint ett_struct_log_lock_struct; +static const ptvc_record ptvc_struct_log_lock_struct[] = { + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_status, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_log_lock_struct = { + &ett_struct_log_lock_struct, + "Logical Locks", + ptvc_struct_log_lock_struct, +}; + +static gint ett_struct_log_rec_struct; +static const ptvc_record ptvc_struct_log_rec_struct[] = { + { &hf_ncp_conn_number_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_status, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_log_rec_struct = { + &ett_struct_log_rec_struct, + "Logical Record Locks", + ptvc_struct_log_rec_struct, +}; + +static gint ett_struct_login_time; +static const ptvc_record ptvc_struct_login_time[] = { + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day_of_week, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_login_time = { + &ett_struct_login_time, + "Login Time", + ptvc_struct_login_time, +}; + +static gint ett_struct_lsl_information; +static const ptvc_record ptvc_struct_lsl_information[] = { + { &hf_ncp_rx_buffers, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rx_buffers_75, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rx_buffers_checked_out, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rx_buffer_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_phy_packet_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_time_rx_buff_was_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_protocols, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_media_types, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_tx_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_get_ecb_buf, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_get_ecb_fails, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_aes_event_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_post_poned_events, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ecb_cxl_fails, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_valid_bfrs_reused, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_enqueued_send_cnt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_rx_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unclaimed_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_table_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_table_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_lsl_information = { + &ett_struct_lsl_information, + "LSL Information", + ptvc_struct_lsl_information, +}; + +static gint ett_struct_mac_finder_info_struct; +static const ptvc_record ptvc_struct_mac_finder_info_struct[] = { + { &hf_ncp_mac_finder_info, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_mac_finder_info_struct = { + &ett_struct_mac_finder_info_struct, + NULL, + ptvc_struct_mac_finder_info_struct, +}; + +static gint ett_struct_mac_time_struct; +static const ptvc_record ptvc_struct_mac_time_struct[] = { + { &hf_ncp_mac_create_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_mac_create_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_mac_backup_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_mac_backup_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_mac_time_struct = { + &ett_struct_mac_time_struct, + NULL, + ptvc_struct_mac_time_struct, +}; + +static gint ett_struct_memory_counters; +static const ptvc_record ptvc_struct_memory_counters[] = { + { &hf_ncp_orig_num_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_curr_num_cache_buff, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_dirty_block_thresh, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wait_node, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wait_node_alloc_fail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_move_cache_node, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_move_cache_node_from_avai, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_accel_cache_node_write, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rem_cache_node, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rem_cache_node_from_avail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_memory_counters = { + &ett_struct_memory_counters, + "Memory Counters", + ptvc_struct_memory_counters, +}; + +static gint ett_struct_mlid_board_info; +static const ptvc_record ptvc_struct_mlid_board_info[] = { + { &hf_ncp_protocol_board_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_protocol_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_protocol_id, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_protocol_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_mlid_board_info = { + &ett_struct_mlid_board_info, + "MLID Board Information", + ptvc_struct_mlid_board_info, +}; + +static gint ett_struct_modify_info_struct; +static const ptvc_record ptvc_struct_modify_info_struct[] = { + { &hf_ncp_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modifier_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_modify_info_struct = { + &ett_struct_modify_info_struct, + "Modification Information", + ptvc_struct_modify_info_struct, +}; + +static gint ett_struct_name_info_struct; +static const ptvc_record ptvc_struct_name_info_struct[] = { + { &hf_ncp_object_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_login_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_name_info_struct = { + &ett_struct_name_info_struct, + "Name Information", + ptvc_struct_name_info_struct, +}; + +static gint ett_struct_ncp_network_address_struct; +static const ptvc_record ptvc_struct_ncp_network_address_struct[] = { + { &hf_ncp_transport_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_address, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ncp_network_address_struct = { + &ett_struct_ncp_network_address_struct, + "Network Address", + ptvc_struct_ncp_network_address_struct, +}; + +static gint ett_struct_net_addr_struct; +static const ptvc_record ptvc_struct_net_addr_struct[] = { + { &hf_ncp_transport_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transport_addr, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_net_addr_struct = { + &ett_struct_net_addr_struct, + "Network Address", + ptvc_struct_net_addr_struct, +}; + +static gint ett_struct_nlm_information; +static const ptvc_record ptvc_struct_nlm_information[] = { + { &hf_ncp_identification_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_flags, 1, &ncp_nlm_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_major_version, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_minor_version, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_revision, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_avail_byte, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_free_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_garbage_collect, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_message_language, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_ref_publics, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_nlm_information = { + &ett_struct_nlm_information, + "NLM Information", + ptvc_struct_nlm_information, +}; + +static gint ett_struct_ns_attrib_struct; +static const ptvc_record ptvc_struct_ns_attrib_struct[] = { + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ns_attrib_struct = { + &ett_struct_ns_attrib_struct, + NULL, + ptvc_struct_ns_attrib_struct, +}; + +static gint ett_struct_ns_info_struct; +static const ptvc_record ptvc_struct_ns_info_struct[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ns_info_struct = { + &ett_struct_ns_info_struct, + NULL, + ptvc_struct_ns_info_struct, +}; + +static gint ett_struct_nw_audit_status; +static const ptvc_record ptvc_struct_nw_audit_status[] = { + { &hf_ncp_audit_ver_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_audit_file_ver_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_audit_enable_flag, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_file_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modified_counter, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_file_max_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_file_size_threshold, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_record_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_auditing_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_nw_audit_status = { + &ett_struct_nw_audit_status, + "NetWare Audit Status", + ptvc_struct_nw_audit_status, +}; + +static gint ett_struct_object_flags_struct; +static const ptvc_record ptvc_struct_object_flags_struct[] = { + { &hf_ncp_object_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_object_flags_struct = { + &ett_struct_object_flags_struct, + NULL, + ptvc_struct_object_flags_struct, +}; + +static gint ett_struct_object_id_struct; +static const ptvc_record ptvc_struct_object_id_struct[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_restriction, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_object_id_struct = { + &ett_struct_object_id_struct, + NULL, + ptvc_struct_object_id_struct, +}; + +static gint ett_struct_object_name_struct; +static const ptvc_record ptvc_struct_object_name_struct[] = { + { &hf_ncp_object_name_stringz, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_object_name_struct = { + &ett_struct_object_name_struct, + NULL, + ptvc_struct_object_name_struct, +}; + +static gint ett_struct_object_security_struct; +static const ptvc_record ptvc_struct_object_security_struct[] = { + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_object_security_struct = { + &ett_struct_object_security_struct, + NULL, + ptvc_struct_object_security_struct, +}; + +static gint ett_struct_object_type_struct; +static const ptvc_record ptvc_struct_object_type_struct[] = { + { &hf_ncp_object_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_object_type_struct = { + &ett_struct_object_type_struct, + NULL, + ptvc_struct_object_type_struct, +}; + +static gint ett_struct_opn_files_struct; +static const ptvc_record ptvc_struct_opn_files_struct[] = { + { &hf_ncp_task_number_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_control, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_parent_directory_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_directory_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fork_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_opn_files_struct = { + &ett_struct_opn_files_struct, + "Open Files Information", + ptvc_struct_opn_files_struct, +}; + +static gint ett_struct_owner_id_struct; +static const ptvc_record ptvc_struct_owner_id_struct[] = { + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_owner_id_struct = { + &ett_struct_owner_id_struct, + NULL, + ptvc_struct_owner_id_struct, +}; + +static gint ett_struct_packet_burst_information; +static const ptvc_record ptvc_struct_packet_burst_information[] = { + { &hf_ncp_big_invalid_slot, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_forged_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_invalid_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_still_transmitting, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_still_doing_the_last_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_invalid_control_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_control_invalid_message_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_control_being_torn_down, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_repeat_the_file_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_send_extra_cc_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_return_abort_mess, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_invalid_mess, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_do_it_over, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_being_torn_down, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_previous_control_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_send_hold_off_message, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_no_data_avail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_trying_to_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_async_read_error, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_read_phy_read_err, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ctl_bad_ack_frag_list, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ctl_no_data_read, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_dup_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_shouldnt_be_ack_here, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_incon_packet_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_first_packet_isnt_a_write, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_trash_dup_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_write_inv_message_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_write_being_torn_down, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_big_write_being_abort, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_zero_ack_frag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_curr_trans, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_try_to_write_too_much, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_out_of_mem_for_ctl_nodes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_didnt_need_this_frag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_too_many_buf_check, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_timeout, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_got_an_ack0, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_got_an_ack1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_poll_abort_conn, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_may_had_out_of_order, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_had_an_out_of_order, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_moved_the_ack_bit_dn, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bumped_out_of_order, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_poll_rem_old_out_of_order, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_didnt_need_but_req_ack, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_trash_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_too_many_ack_frag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_saved_an_out_of_order_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_conn_being_aborted, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_packet_burst_information = { + &ett_struct_packet_burst_information, + "Packet Burst Information", + ptvc_struct_packet_burst_information, +}; + +static gint ett_struct_pad_archive_info; +static const ptvc_record ptvc_struct_pad_archive_info[] = { + { &hf_ncp_reserved8, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_archive_info = { + &ett_struct_pad_archive_info, + NULL, + ptvc_struct_pad_archive_info, +}; + +static gint ett_struct_pad_attributes; +static const ptvc_record ptvc_struct_pad_attributes[] = { + { &hf_ncp_reserved6, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_attributes = { + &ett_struct_pad_attributes, + NULL, + ptvc_struct_pad_attributes, +}; + +static gint ett_struct_pad_creation_info; +static const ptvc_record ptvc_struct_pad_creation_info[] = { + { &hf_ncp_reserved8, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_creation_info = { + &ett_struct_pad_creation_info, + NULL, + ptvc_struct_pad_creation_info, +}; + +static gint ett_struct_pad_data_stream_size; +static const ptvc_record ptvc_struct_pad_data_stream_size[] = { + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_data_stream_size = { + &ett_struct_pad_data_stream_size, + NULL, + ptvc_struct_pad_data_stream_size, +}; + +static gint ett_struct_pad_dir_entry; +static const ptvc_record ptvc_struct_pad_dir_entry[] = { + { &hf_ncp_reserved12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_dir_entry = { + &ett_struct_pad_dir_entry, + NULL, + ptvc_struct_pad_dir_entry, +}; + +static gint ett_struct_pad_ds_space_alloc; +static const ptvc_record ptvc_struct_pad_ds_space_alloc[] = { + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_ds_space_alloc = { + &ett_struct_pad_ds_space_alloc, + NULL, + ptvc_struct_pad_ds_space_alloc, +}; + +static gint ett_struct_pad_ea_info; +static const ptvc_record ptvc_struct_pad_ea_info[] = { + { &hf_ncp_reserved12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_ea_info = { + &ett_struct_pad_ea_info, + NULL, + ptvc_struct_pad_ea_info, +}; + +static gint ett_struct_pad_modify_info; +static const ptvc_record ptvc_struct_pad_modify_info[] = { + { &hf_ncp_reserved10, 10, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_modify_info = { + &ett_struct_pad_modify_info, + NULL, + ptvc_struct_pad_modify_info, +}; + +static gint ett_struct_pad_ns_info; +static const ptvc_record ptvc_struct_pad_ns_info[] = { + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_ns_info = { + &ett_struct_pad_ns_info, + NULL, + ptvc_struct_pad_ns_info, +}; + +static gint ett_struct_pad_rights_info; +static const ptvc_record ptvc_struct_pad_rights_info[] = { + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_rights_info = { + &ett_struct_pad_rights_info, + NULL, + ptvc_struct_pad_rights_info, +}; + +static gint ett_struct_pad_total_stream_size; +static const ptvc_record ptvc_struct_pad_total_stream_size[] = { + { &hf_ncp_reserved6, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_pad_total_stream_size = { + &ett_struct_pad_total_stream_size, + NULL, + ptvc_struct_pad_total_stream_size, +}; + +static gint ett_struct_parent_base_id_struct; +static const ptvc_record ptvc_struct_parent_base_id_struct[] = { + { &hf_ncp_parent_base_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_parent_base_id_struct = { + &ett_struct_parent_base_id_struct, + NULL, + ptvc_struct_parent_base_id_struct, +}; + +static gint ett_struct_phy_lock_struct; +static const ptvc_record ptvc_struct_phy_lock_struct[] = { + { &hf_ncp_logged_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_shareable_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_record_start, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_record_end, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_connection_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_phy_lock_struct = { + &ett_struct_phy_lock_struct, + "Physical Locks", + ptvc_struct_phy_lock_struct, +}; + +static gint ett_struct_print_info_struct; +static const ptvc_record ptvc_struct_print_info_struct[] = { + { &hf_ncp_print_flags, 1, &ncp_print_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_tab_size, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_copies, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_to_file_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_banner_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_ptr, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_form_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_print_info_struct = { + &ett_struct_print_info_struct, + "Print Information", + ptvc_struct_print_info_struct, +}; + +static gint ett_struct_r_tag_struct; +static const ptvc_record ptvc_struct_r_tag_struct[] = { + { &hf_ncp_r_tag_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_sig, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_r_tag_struct = { + &ett_struct_r_tag_struct, + "Resource Tag", + ptvc_struct_r_tag_struct, +}; + +static gint ett_struct_ref_id_struct; +static const ptvc_record ptvc_struct_ref_id_struct[] = { + { &hf_ncp_curr_ref_id, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_ref_id_struct = { + &ett_struct_ref_id_struct, + NULL, + ptvc_struct_ref_id_struct, +}; + +static gint ett_struct_rights_info_struct; +static const ptvc_record ptvc_struct_rights_info_struct[] = { + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_rights_info_struct = { + &ett_struct_rights_info_struct, + NULL, + ptvc_struct_rights_info_struct, +}; + +static gint ett_struct_routers_info; +static const ptvc_record ptvc_struct_routers_info[] = { + { &hf_ncp_node, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connected_lan, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_route_hops, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_route_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_routers_info = { + &ett_struct_routers_info, + "Router Information", + ptvc_struct_routers_info, +}; + +static gint ett_struct_scan_info_file_name; +static const ptvc_record ptvc_struct_scan_info_file_name[] = { + { &hf_ncp_salvageable_file_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_scan_info_file_name = { + &ett_struct_scan_info_file_name, + NULL, + ptvc_struct_scan_info_file_name, +}; + +static gint ett_struct_scan_info_file_no_name; +static const ptvc_record ptvc_struct_scan_info_file_no_name[] = { + { &hf_ncp_salvageable_file_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_scan_info_file_no_name = { + &ett_struct_scan_info_file_no_name, + NULL, + ptvc_struct_scan_info_file_no_name, +}; + +static gint ett_struct_segments; +static const ptvc_record ptvc_struct_segments[] = { + { &hf_ncp_volume_segment_dev_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_segment_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_segment_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_segments = { + &ett_struct_segments, + "Volume Segment Information", + ptvc_struct_segments, +}; + +static gint ett_struct_sema_info_struct; +static const ptvc_record ptvc_struct_sema_info_struct[] = { + { &hf_ncp_logical_connection_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_sema_info_struct = { + &ett_struct_sema_info_struct, + NULL, + ptvc_struct_sema_info_struct, +}; + +static gint ett_struct_sema_struct; +static const ptvc_record ptvc_struct_sema_struct[] = { + { &hf_ncp_open_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_value, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_task_num_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_sema_struct = { + &ett_struct_sema_struct, + "Semaphore Information", + ptvc_struct_sema_struct, +}; + +static gint ett_struct_server_info; +static const ptvc_record ptvc_struct_server_info[] = { + { &hf_ncp_reply_canceled, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_held_off, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_write_held_off_with_dup, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_invalid_req_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_being_aborted, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_already_doing_realloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dealloc_invalid_slot, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dealloc_being_proc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dealloc_forged_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dealloc_still_transmit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_station_error, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_invalid_slot, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_being_processed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_forged_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_still_transmitting, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reexecute_request, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_invalid_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dup_is_being_sent, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sent_pos_ack, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sent_a_dup_reply, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_mem_for_station, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_avail_conns, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_realloc_slot, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_realloc_slot_came_too_soon, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_server_info = { + &ett_struct_server_info, + "Server Information", + ptvc_struct_server_info, +}; + +static gint ett_struct_servers_src_info; +static const ptvc_record ptvc_struct_servers_src_info[] = { + { &hf_ncp_server_node, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connected_lan, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hops_to_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_servers_src_info = { + &ett_struct_servers_src_info, + "Source Server Information", + ptvc_struct_servers_src_info, +}; + +static gint ett_struct_sibling_count_struct; +static const ptvc_record ptvc_struct_sibling_count_struct[] = { + { &hf_ncp_sibling_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_sibling_count_struct = { + &ett_struct_sibling_count_struct, + NULL, + ptvc_struct_sibling_count_struct, +}; + +static gint ett_struct_space_struct; +static const ptvc_record ptvc_struct_space_struct[] = { + { &hf_ncp_level, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_maxspace, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_space_struct = { + &ett_struct_space_struct, + "Space Information", + ptvc_struct_space_struct, +}; + +static gint ett_struct_spx_information; +static const ptvc_record ptvc_struct_spx_information[] = { + { &hf_ncp_spx_max_conn, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_max_used_conn, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_est_conn_req, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_est_conn_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_listen_con_req, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_listen_con_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_send, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_window_choke, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_bad_send, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_send_fail, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_abort_conn, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_listen_pkt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_bad_listen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_incoming_pkt, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_bad_in_pkt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_supp_pkt, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_no_ses_listen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_spx_watch_dog, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_spx_information = { + &ett_struct_spx_information, + "SPX Information", + ptvc_struct_spx_information, +}; + +static gint ett_struct_stack_info; +static const ptvc_record ptvc_struct_stack_info[] = { + { &hf_ncp_stack_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_short_name, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_stack_info = { + &ett_struct_stack_info, + "Stack Information", + ptvc_struct_stack_info, +}; + +static gint ett_struct_stats_info_struct; +static const ptvc_record ptvc_struct_stats_info_struct[] = { + { &hf_ncp_user_info_ttl_bytes_rd, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_ttl_bytes_wrt, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_request, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_stats_info_struct = { + &ett_struct_stats_info_struct, + "Statistics", + ptvc_struct_stats_info_struct, +}; + +static gint ett_struct_the_time_struct; +static const ptvc_record ptvc_struct_the_time_struct[] = { + { &hf_ncp_uts_time_in_seconds, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fractional_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timesync_status_flags, 4, &ncp_timesync_status_flags_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_the_time_struct = { + &ett_struct_the_time_struct, + NULL, + ptvc_struct_the_time_struct, +}; + +static gint ett_struct_time_info; +static const ptvc_record ptvc_struct_time_info[] = { + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day_of_week, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_login_expiration_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_time_info = { + &ett_struct_time_info, + NULL, + ptvc_struct_time_info, +}; + +static gint ett_struct_total_stream_size_struct; +static const ptvc_record ptvc_struct_total_stream_size_struct[] = { + { &hf_ncp_total_stream_size_struct_space_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_data_streams, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_total_stream_size_struct = { + &ett_struct_total_stream_size_struct, + NULL, + ptvc_struct_total_stream_size_struct, +}; + +static gint ett_struct_trend_counters; +static const ptvc_record ptvc_struct_trend_counters[] = { + { &hf_ncp_num_of_cache_checks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_cache_hits, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_dirty_cache_checks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_cache_dirty_checks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_used_while_check, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wait_till_dirty_blcks_dec, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck_frm_avail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck_frm_lru, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_alloc_blck_already_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lru_sit_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_cache_check_no_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_cache_hits_no_wait, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_trend_counters = { + &ett_struct_trend_counters, + "Trend Counters", + ptvc_struct_trend_counters, +}; + +static gint ett_struct_trustee_struct; +static const ptvc_record ptvc_struct_trustee_struct[] = { + { &hf_ncp_object_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask_word, 2, &ncp_access_rights_mask_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_trustee_struct = { + &ett_struct_trustee_struct, + NULL, + ptvc_struct_trustee_struct, +}; + +static gint ett_struct_update_date_struct; +static const ptvc_record ptvc_struct_update_date_struct[] = { + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_update_date_struct = { + &ett_struct_update_date_struct, + NULL, + ptvc_struct_update_date_struct, +}; + +static gint ett_struct_update_id_struct; +static const ptvc_record ptvc_struct_update_id_struct[] = { + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_update_id_struct = { + &ett_struct_update_id_struct, + NULL, + ptvc_struct_update_id_struct, +}; + +static gint ett_struct_update_time_struct; +static const ptvc_record ptvc_struct_update_time_struct[] = { + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_update_time_struct = { + &ett_struct_update_time_struct, + NULL, + ptvc_struct_update_time_struct, +}; + +static gint ett_struct_user_info; +static const ptvc_record ptvc_struct_user_info[] = { + { &hf_ncp_connection_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_use_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_service_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day_of_week, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status, 2, &ncp_status_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_expiration_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_tts_flag, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_lock_threshold, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_write_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_write_state, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rec_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_ttl_bytes_rd, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_ttl_bytes_wrt, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_request, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_held_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_held_bytes_read, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_held_bytes_write, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_user_info = { + &ett_struct_user_info, + "User Information", + ptvc_struct_user_info, +}; + +static gint ett_struct_vol_info_struct; +static const ptvc_record ptvc_struct_vol_info_struct[] = { + { &hf_ncp_volume_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_status_flag_bits, 4, &ncp_status_flag_bits_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sector_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sectors_per_cluster_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_size_in_clusters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_freed_clusters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_alloc_freeable_clusters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_freeable_limbo_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_non_freeable_limbo_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_non_freeable_avail_sub_alloc_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_not_usable_sub_alloc_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_alloc_clusters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_streams_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_limbo_data_streams_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_oldest_deleted_file_age_in_ticks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compressed_data_streams_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compressed_limbo_data_streams_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_un_compressable_data_streams_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pre_compressed_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compressed_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_migrated_files, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_migrated_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_clusters_used_by_fat, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_clusters_used_by_directories, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_clusters_used_by_extended_dirs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_dir_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_un_used_directory_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_extended_directory_extants, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_un_used_extended_directory_extants, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_extended_attributes_defined, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_extended_attribute_extants_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_services_object_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_last_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_volume_last_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_vol_info_struct = { + &ett_struct_vol_info_struct, + "Volume Information", + ptvc_struct_vol_info_struct, +}; + +static gint ett_struct_vol_info_struct_2; +static const ptvc_record ptvc_struct_vol_info_struct_2[] = { + { &hf_ncp_volume_active_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_use_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_root_ids, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_last_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_volume_last_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_volume_reference_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compression_lower_limit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_outstanding_ios, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_outstanding_compression_ios, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compression_ios_limit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_vol_info_struct_2 = { + &ett_struct_vol_info_struct_2, + "Extended Volume Information", + ptvc_struct_vol_info_struct_2, +}; + +static gint ett_struct_volume_struct; +static const ptvc_record ptvc_struct_volume_struct[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, NO_LENGTH, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; +static const sub_ptvc_record struct_volume_struct = { + &ett_struct_volume_struct, + NULL, + ptvc_struct_volume_struct, +}; + +/* PTVC records. These are re-used to save space. */ +static const ptvc_record ncp_0x3_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timeout_limit, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4_request[] = { + { &hf_ncp_timeout_limit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x9_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timeout_limit, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_record_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0xa_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timeout_limit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0xb_request[] = { + { &hf_ncp_logical_record_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1100_request[] = { + { &hf_ncp_data, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1101_request[] = { + { &hf_ncp_abort_q_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1102_request[] = { + { &hf_ncp_print_flags, 1, &ncp_print_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_tab_size, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_ptr, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_copies, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_form_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_banner_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1103_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1106_request[] = { + { &hf_ncp_target_ptr, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1106_reply[] = { + { &hf_ncp_printer_halted, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_printer_offline, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_form_type, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_redirected_printer, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x110a_reply[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x12_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x12_reply[] = { + { &hf_ncp_sectors_per_cluster, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_volume_clusters, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_clusters, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_directory_slots, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_directory_slots, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_removable_flag, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x13_reply[] = { + { &hf_ncp_station_number, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x14_reply[] = { + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day_of_week, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1500_request[] = { + { &hf_ncp_client_list_len, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_client_list, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_message, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1500_reply[] = { + { &hf_ncp_client_list_len, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_send_status, 1, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1501_reply[] = { + { &hf_ncp_target_message, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x150a_request[] = { + { &hf_ncp_client_list_cnt, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_message, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x150a_reply[] = { + { &hf_ncp_client_list_cnt, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_comp_flag, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x150c_request[] = { + { &hf_ncp_conn_ctrl_bits, 1, &ncp_conn_ctrl_bits_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_conn_list_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1600_request[] = { + { &hf_ncp_target_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1601_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1601_reply[] = { + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1602_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_search_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1602_reply[] = { + { &hf_ncp_directory_path, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creation_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_search_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1603_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_search_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1603_reply[] = { + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1604_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_grant_mask, 1, &ncp_rights_grant_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rights_revoke_mask, 1, &ncp_rights_revoke_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1605_request[] = { + { &hf_ncp_volume_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160a_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160b_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160c_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_set_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160c_reply[] = { + { &hf_ncp_directory_path, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creation_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160d_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160e_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x160f_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1611_reply[] = { + { &hf_ncp_old_file_name, 15, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_file_name, 15, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1612_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1612_reply[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1617_reply[] = { + { &hf_ncp_server_network_address, 10, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1619_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161a_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number_word, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161b_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161b_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_directory, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_flags_def, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved44, 44, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_deleted_file_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deleted_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_deleted_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_delete_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161c_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_file_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161e_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_file_attributes, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_pattern, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161e_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_directory, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved44, 44, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_reserved28, 28, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x161f_reply[] = { + { &hf_ncp_sub_directory, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_next_trustee_entry, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved48, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_space, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_undefined_28, 28, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1620_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1620_reply[] = { + { &hf_ncp_number_of_entries, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_object_id_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1621_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_disk_space_limit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1622_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1623_reply[] = { + { &hf_ncp_number_of_entries, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_level, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_maxspace, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1624_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_disk_space_limit, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1625_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_change_bits, 2, &ncp_change_bits_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_directory, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_directory_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 22, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_file_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 101, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1626_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_byte, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1626_reply[] = { + { &hf_ncp_number_of_entries, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask_word, 2, &ncp_access_rights_mask_word_bitfield, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1627_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_rights_low, 2, &ncp_trustee_rights_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1628_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_pattern, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1628_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_directory, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_first_fat, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_trustee_entry, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved36, 36, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_deleted_file_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deleted_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_deleted_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_delete_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_undefined_8, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_primary_entry, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_list, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_other_file_fork_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_other_file_fork_fat, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1629_reply[] = { + { &hf_ncp_restriction, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_in_use, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162a_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162a_reply[] = { + { &hf_ncp_access_rights_mask_word, 2, &ncp_access_rights_mask_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162b_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_un_used, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162c_reply[] = { + { &hf_ncp_total_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_free_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purgeable_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_not_yet_purgeable_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_dir_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_dir_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sectors_per_block, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162d_reply[] = { + { &hf_ncp_total_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_dir_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_dir_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sectors_per_block, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162e_request[] = { + { &hf_ncp_source_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_component_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_component_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x162f_reply[] = { + { &hf_ncp_defined_name_spaces, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space_name, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_defined_data_streams, 1, NULL, BE, 1, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_info, NO_ENDIANNESS, NO_VAR, 1, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_loaded_name_spaces, 1, NULL, BE, 2, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_index_number, 1, NULL, BE, NO_VAR, 2, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1630_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_sequence, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1630_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sub_directory, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unique_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_flags, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_length, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_update_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_update_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_update_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved44, 44, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1631_request[] = { + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights, 1, &ncp_open_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1631_reply[] = { + { &hf_ncp_cc_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1632_request[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1632_reply[] = { + { &hf_ncp_trustee_rights_low, 2, &ncp_trustee_rights_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1633_reply[] = { + { &hf_ncp_vol_info_reply_len, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_vol_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1634_request[] = { + { &hf_ncp_start_volume_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_request_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_src_name_space, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1634_reply[] = { + { &hf_ncp_items_in_packet, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_volume_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_volume_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1700_request[] = { + { &hf_ncp_user_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1701_request[] = { + { &hf_ncp_user_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1702_request[] = { + { &hf_ncp_user_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1702_reply[] = { + { &hf_ncp_connection_number_list, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1705_request[] = { + { &hf_ncp_target_connection_number, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1705_reply[] = { + { &hf_ncp_user_name_16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_login_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_full_name, 39, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_security_equiv_list, 128, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved64, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1707_reply[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name_len, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x170c_request[] = { + { &hf_ncp_server_serial_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x170e_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x170e_reply[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_trustee_id_set, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cluster_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x170f_request[] = { + { &hf_ncp_last_search_index, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x170f_reply[] = { + { &hf_ncp_next_search_index, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_reserved56, 56, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1710_request[] = { + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_reserved56, 56, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1711_reply[] = { + { &hf_ncp_server_name, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connections_supported_max, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connections_in_use, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volumes_supported_max, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_revision, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sft_support_level, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_tts_level, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connections_max_used, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acct_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vap_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_qms_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_print_server_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_virtual_console_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_security_restriction_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internet_bridge_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mixed_mode_path_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_local_login_info_ccode, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_product_major_version, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_product_minor_version, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_product_revision_version, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_language_id, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_64_bit_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved50, 50, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1712_reply[] = { + { &hf_ncp_server_serial_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_application_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1713_reply[] = { + { &hf_ncp_network_address, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_network_node_address, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_network_socket, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1714_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1715_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1716_reply[] = { + { &hf_ncp_user_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name_len, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_login_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1717_reply[] = { + { &hf_ncp_login_key, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1718_request[] = { + { &hf_ncp_login_key, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171a_reply[] = { + { &hf_ncp_network_address, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_network_node_address, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_network_socket, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171b_request[] = { + { &hf_ncp_search_conn_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171b_reply[] = { + { &hf_ncp_conn_list_len, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_number_list, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171c_request[] = { + { &hf_ncp_target_connection_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171d_request[] = { + { &hf_ncp_request_code, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171e_request[] = { + { &hf_ncp_number_of_minutes_to_delay, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x171f_request[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1720_request[] = { + { &hf_ncp_next_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_flags, 4, &ncp_info_flags_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1720_reply[] = { + { &hf_ncp_object_info_rtn_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id_info, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_object_type_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 107, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_object_security_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 71, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_object_flags_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 58, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_object_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 16, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1721_request[] = { + { &hf_ncp_return_info_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1721_reply[] = { + { &hf_ncp_return_info_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_guid, 16, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1732_request[] = { + { &hf_ncp_object_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1733_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1734_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1737_request[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1737_reply[] = { + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name_len, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_has_properites, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1738_request[] = { + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1739_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173a_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173b_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173c_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_instance, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173c_reply[] = { + { &hf_ncp_property_name_16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_instance, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_value_available, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_more_properties, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173d_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_segment, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173d_reply[] = { + { &hf_ncp_property_data, 128, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_has_more_segments, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173e_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_segment, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_more_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_value, 128, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x173f_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1740_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1741_request[] = { + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_member_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_member_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1746_reply[] = { + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logged_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1747_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1747_reply[] = { + { &hf_ncp_last_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1748_reply[] = { + { &hf_ncp_object_security, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x174b_request[] = { + { &hf_ncp_login_key, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_password, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x174c_request[] = { + { &hf_ncp_last_seen, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_property_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x174c_reply[] = { + { &hf_ncp_relations_count, 2, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1764_request[] = { + { &hf_ncp_queue_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_base, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1764_reply[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1766_reply[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_status, 1, &ncp_queue_status_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_entries, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_servers, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station_list, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1767_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_status, 1, &ncp_queue_status_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1768_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1768_reply[] = { + { &hf_ncp_client_station, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_task_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_client_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_execution_time, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_entry_time, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_position, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_control_flags, 1, &ncp_job_control_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_name, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_task_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1769_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x176b_reply[] = { + { &hf_ncp_job_count, 2, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x176c_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_job_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x176e_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_position, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1771_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_Service_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1772_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_charge_information, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1776_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1776_reply[] = { + { &hf_ncp_server_status_record, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1777_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_status_record, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1778_reply[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1779_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_job_struct_3x, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1779_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_job_struct_new, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x177a_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x177a_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_job_struct_3x, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x177c_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_Service_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x177d_reply[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_status, 1, &ncp_queue_status_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_entries, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_servers, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station_long, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1781_reply[] = { + { &hf_ncp_total_queue_jobs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reply_queue_job_numbers, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1782_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_priority, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1783_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_charge_information, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1786_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_id_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_station, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1788_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dst_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1788_reply[] = { + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1789_request[] = { + { &hf_ncp_queue_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_queue_start_position, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_form_type_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_form_type, 2, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1789_reply[] = { + { &hf_ncp_total_queue_jobs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_job_number_long, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1796_reply[] = { + { &hf_ncp_account_balance, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_credit_limit, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved120, 120, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_holder_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1797_request[] = { + { &hf_ncp_Service_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_charge_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hold_cancel_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_comment_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_comment, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1798_request[] = { + { &hf_ncp_hold_cancel_amount, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1799_request[] = { + { &hf_ncp_Service_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_comment_type, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_comment, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17c9_reply[] = { + { &hf_ncp_description_string, 100, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ca_request[] = { + { &hf_ncp_year, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_month, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_day, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_hour, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_minute, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_second, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17cd_reply[] = { + { &hf_ncp_user_login_allowed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d1_request[] = { + { &hf_ncp_number_of_stations, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_station_list, 1, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_message, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d2_request[] = { + { &hf_ncp_connection_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d3_request[] = { + { &hf_ncp_force_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d4_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_configured_max_open_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_open_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_open_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_files_opened, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_read_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_write_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_changed_fats, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_changed_fats, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fat_write_errors, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fatal_fat_write_errors, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fat_scan_errors, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_indexed_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_active_indexed_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attached_indexed_files, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_available_indexed_files, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d5_request[] = { + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d5_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_tracking_supported, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_tracking_enabled, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_volume_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cfg_max_simultaneous_transactions, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_sim_trans, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_trans_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_trans_performed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_write_trans_performed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_trans_backed_out, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_unfilled_backout_requests, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_disk_space, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_fat_allocations, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_file_size_changes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_transaction_files_truncated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_entries, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_conn_task_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d6_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_buffer_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_buffer_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dirty_cache_buffers, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_read_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_write_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_hits, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_misses, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_read_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_write_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_read_errors, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_write_errors, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_get_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_full_write_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_partial_write_requests, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_background_dirty_writes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_background_aged_writes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_cache_writes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_allocations, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_thrashing_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lru_block_was_dirty, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_read_beyond_write, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fragment_write_occurred, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_hit_on_unavailable_block, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cache_block_scrapped, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d7_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sft_support_level, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_drive_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_drive_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_disk_channel_table, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pending_io_commands, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_mapping_table, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_mirror_table, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dead_mirror_table, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_re_mirror_drive_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_filler, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_re_mirror_current_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sft_error_table, 60, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d8_request[] = { + { &hf_ncp_physical_disk_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d8_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_disk_channel, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_removable_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_drive_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_controller_drive_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_controller_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_controller_type, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_cylinders, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_heads, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sectors_per_track, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_drive_definition_string, 64, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_io_error_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hot_fix_table_start, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hot_fix_table_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hot_fix_blocks_available, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hot_fix_disabled, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d9_request[] = { + { &hf_ncp_disk_channel_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17d9_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_channel_state, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_channel_synchronization_state, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_software_driver_type, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_software_major_version_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_software_minor_version_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_software_description, 65, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_io_addresses_used, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_shared_memory_addresses, 10, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_interrupt_numbers_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dma_channels_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_flag_bits, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_configuration_description, 80, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17db_request[] = { + { &hf_ncp_connection_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17db_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_conn_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17dc_request[] = { + { &hf_ncp_last_record_seen, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17dc_reply[] = { + { &hf_ncp_user_info_use_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_for_read_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_for_write_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deny_read_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deny_write_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_request_record, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_locked, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_conn_file_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17dd_request[] = { + { &hf_ncp_target_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_id, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17dd_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_locks, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17de_request[] = { + { &hf_ncp_target_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17de_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_locks, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_phy_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17df_request[] = { + { &hf_ncp_target_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17df_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_log_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e0_request[] = { + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_record_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e0_reply[] = { + { &hf_ncp_user_info_use_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_shareable_lock_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_locked, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_log_rec_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e1_request[] = { + { &hf_ncp_connection_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e1_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_semaphores, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sema_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e2_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_value, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 1, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sema_info_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e3_request[] = { + { &hf_ncp_lan_driver_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e3_reply[] = { + { &hf_ncp_network_address, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_host_address, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_board_installed, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_option_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_configuration_text, 160, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e5_request[] = { + { &hf_ncp_connection_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e5_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bytes_read, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bytes_written, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_request_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e6_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_unused_disk_blocks, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_restrictions_enforced, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e7_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_configured_max_routing_buffers, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_used_routing_buffers, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_currently_used_routing_buffers, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_file_service_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_turbo_used_for_file_service, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_from_invalid_connection, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bad_logical_connection_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_received_during_processing, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_requests_reprocessed, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_with_bad_sequence_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_duplicate_replies_sent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_positive_acknowledges_sent, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_with_bad_request_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attach_during_processing, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attach_while_processing_attach, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_forged_detached_requests, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_detach_for_bad_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_detach_during_processing, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_replies_cancelled, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_discarded_by_hop_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_packets_discarded_unknown_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_incoming_packet_discarded_no_dgroup, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_outgoing_packet_discarded_no_turbo_buffer, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ipx_not_my_network, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_netbios_broadcast_was_propogated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_other_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_routed_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e8_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_processor_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_service_processes, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_utilization_percentage, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_configured_max_bindery_objects, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_bindery_objects, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_used_bindery_objects, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_server_memory, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wasted_server_memory, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_dynamic_memory_areas, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dyn_mem_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17e9_reply[] = { + { &hf_ncp_system_interval_marker, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_logical_drive_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_block_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_starting_block, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_blocks, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_free_blocks, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_dir_entries, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_free_directory_entries, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_actual_max_used_directory_entries, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_hashed_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_cached_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_removable_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_mounted_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ea_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_attributes, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attributes, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17eb_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_opn_files_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ec_request[] = { + { &hf_ncp_data_stream_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ec_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_use_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_for_read_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_for_write_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deny_read_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deny_write_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_locked, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fork_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_conn_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ed_request[] = { + { &hf_ncp_target_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ed_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_locks, 2, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ee_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_locks, 2, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_phy_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ef_request[] = { + { &hf_ncp_target_connection_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_record_seen, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17ef_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_log_lock_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17f0_reply[] = { + { &hf_ncp_shareable_lock_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_info_use_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_locked, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_log_rec_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17f1_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_semaphores, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sema_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17f2_reply[] = { + { &hf_ncp_next_request_record, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_value, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_records, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sema_info_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17f3_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17f4_reply[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17fd_request[] = { + { &hf_ncp_number_of_stations, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_station_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_message, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x17fe_request[] = { + { &hf_ncp_connection_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1a_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_areas_start_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_area_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_timeout, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1b_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_timeout, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1c_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_areas_start_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_area_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x1e_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_areas_start_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_area_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2000_request[] = { + { &hf_ncp_initial_semaphore_value, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2000_reply[] = { + { &hf_ncp_semaphore_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_open_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2001_request[] = { + { &hf_ncp_semaphore_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2001_reply[] = { + { &hf_ncp_semaphore_value, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_open_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2002_request[] = { + { &hf_ncp_semaphore_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_time_out, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x21_request[] = { + { &hf_ncp_buffer_size, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2202_reply[] = { + { &hf_ncp_transaction_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2205_reply[] = { + { &hf_ncp_logical_lock_threshold, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_physical_lock_threshold, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2209_reply[] = { + { &hf_ncp_control_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2301_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2301_reply[] = { + { &hf_ncp_new_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2302_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_delete_existing_file_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2303_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2304_reply[] = { + { &hf_ncp_target_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2305_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map, 2, &ncp_request_bit_map_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2305_reply[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_fork_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_offspring, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_long_name, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_short_name, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_privileges, 1, &ncp_access_privileges_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2306_request[] = { + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2306_reply[] = { + { &hf_ncp_volume_id, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fork_indicator, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2307_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_source_base_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_destination_base_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_file_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2308_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fork_indicator, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_mode, 1, &ncp_access_mode_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2308_reply[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_netware_access_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2309_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map, 2, &ncp_request_bit_map_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_attr, 2, &ncp_mac_attr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230a_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_last_seen_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_desired_response_count, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_bit_map, 2, &ncp_search_bit_map_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map, 2, &ncp_request_bit_map_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230a_reply[] = { + { &hf_ncp_actual_response_count, 2, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_afp_10_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230b_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230c_reply[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230d_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230e_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_delete_existing_file_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x230f_reply[] = { + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_fork_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_fork_len, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_offspring, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_long_name, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_short_name, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_privileges, 1, &ncp_access_privileges_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2310_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_mac_base_directory_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_request_bit_map, 2, &ncp_request_bit_map_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2311_reply[] = { + { &hf_ncp_actual_response_count, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_afp_20_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2312_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_afp_entry_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2313_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_number, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2313_reply[] = { + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_finder_attr, 2, &ncp_finder_attr_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_horiz_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vert_location, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_dir_win, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_pro_dos_info, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_resource_fork_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2400_request[] = { + { &hf_ncp_ncp_extension_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2400_reply[] = { + { &hf_ncp_ncp_extension_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_extension_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_extension_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_extension_revision_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_extension_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2401_reply[] = { + { &hf_ncp_ncp_data_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2402_request[] = { + { &hf_ncp_ncp_extension_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2403_reply[] = { + { &hf_ncp_number_of_ncp_extensions, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2404_request[] = { + { &hf_ncp_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2404_reply[] = { + { &hf_ncp_returned_list_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_extension_numbers, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x2406_reply[] = { + { &hf_ncp_ncp_data_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x3b_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x3e_reply[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_id, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x3f_request[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_id, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x3f_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_directory_instance, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 47, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_instance, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 19, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x40_request[] = { + { &hf_ncp_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x40_reply[] = { + { &hf_ncp_sequence_number, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_execute_type, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x41_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x41_reply[] = { + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name_14, 14, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_execute_type, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_last_access_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x43_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x45_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_file_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x46_request[] = { + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x47_reply[] = { + { &hf_ncp_file_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x48_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_bytes, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x48_reply[] = { + { &hf_ncp_num_bytes, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4a_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_file_offset, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bytes_to_copy, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4a_reply[] = { + { &hf_ncp_bytes_actually_transferred, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4b_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_time, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_file_date, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4c_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sattr, 1, &ncp_sattr_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x4f_request[] = { + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x54_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def, 1, &ncp_attr_def_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask, 1, &ncp_access_rights_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_action_flag, 1, &ncp_action_flag_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x55_request[] = { + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x55_reply[] = { + { &hf_ncp_allocation_block_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_bit_map, 512, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5601_request[] = { + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5602_request[] = { + { &hf_ncp_ea_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle_or_netware_handle_or_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved_or_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_write_data_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_access_flag, 4, &ncp_ea_access_flag_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_value_length, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_value_rep, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5602_reply[] = { + { &hf_ncp_ea_error_codes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_bytes_written, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_ea_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5603_request[] = { + { &hf_ncp_ea_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle_or_netware_handle_or_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved_or_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inspect_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5603_reply[] = { + { &hf_ncp_ea_error_codes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_values_length, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_ea_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_access_flag, 4, &ncp_ea_access_flag_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_value, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5604_request[] = { + { &hf_ncp_ea_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle_or_netware_handle_or_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved_or_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inspect_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5604_reply[] = { + { &hf_ncp_ea_error_codes, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_eas, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_eas_data_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_eas_key_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_ea_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5605_request[] = { + { &hf_ncp_ea_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dst_ea_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle_or_netware_handle_or_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved_or_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_handle_or_netware_handle_or_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved_or_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5605_reply[] = { + { &hf_ncp_ea_duplicate_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_data_size_duplicated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key_size_duplicated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5701_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_mode, 1, &ncp_open_create_mode_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_desired_access_rights, 2, &ncp_desired_access_rights_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5701_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action, 1, &ncp_open_create_action_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 54, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 40, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 46, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 32, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 94, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 92, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 73, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 88, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 36, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 48, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 17, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 57, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 67, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 84, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 76, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 109, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 93, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 77, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 82, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 27, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 44, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 33, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ref_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 110, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_attrib_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 108, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_stream_actual, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 90, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_string_logical, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 111, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_update_in_seconds_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 56, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 21, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_flush_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 91, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_parent_base_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 60, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_finder_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 15, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sibling_count_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 72, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_eff_rights_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 95, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 50, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 69, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 30, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5702_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5702_reply[] = { + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5703_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_sequence, 9, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_pattern, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5703_reply[] = { + { &hf_ncp_search_sequence, 9, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 54, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 40, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 46, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 32, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 94, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 92, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 73, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 88, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 36, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 48, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 17, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 57, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 67, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 84, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 76, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 109, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 93, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 77, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 82, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 27, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 44, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 33, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ref_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 110, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_attrib_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 108, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_stream_actual, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 90, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_string_logical, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 111, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_update_in_seconds_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 56, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 21, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_flush_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 91, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_parent_base_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 60, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_finder_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 15, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sibling_count_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 72, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_eff_rights_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 95, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 50, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 69, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 30, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5704_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rename_flag, 1, &ncp_rename_flag_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 1, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 1, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5705_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5705_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id_count, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_trustee_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5706_request[] = { + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5706_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ref_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 110, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_attrib_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 108, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_stream_actual, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 90, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_string_logical, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 111, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_update_in_seconds_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 56, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 21, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_flush_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 91, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_parent_base_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 60, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_finder_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 15, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sibling_count_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 72, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_eff_rights_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 95, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 50, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 69, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 30, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5707_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modify_dos_info_mask, 2, &ncp_modify_dos_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_16, 2, &ncp_attr_def_16_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_mode, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_ext_attr, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_modifier_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inheritance_revoke_mask, 2, &ncp_inheritance_revoke_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_maxspace, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5708_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5709_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x570a_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask_word, 2, &ncp_access_rights_mask_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id_count, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 1, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 1, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_trustee_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x570b_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id_count, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 1, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 1, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_trustee_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x570c_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_allocate_mode, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x570c_reply[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5710_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5710_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_deleted_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_deleted_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_delete_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 20, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 5, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5711_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5712_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5713_request[] = { + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask, 2, &ncp_ns_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5713_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 9, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 100, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_date_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 74, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 89, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_owner_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 70, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_date_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 83, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 39, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 24, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_update_date_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 26, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_update_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 104, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_update_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 35, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 103, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 4, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5714_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_return_info_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_sequence, 9, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_pattern, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5714_reply[] = { + { &hf_ncp_search_sequence, 9, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_more_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ref_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 110, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_attrib_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 108, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_stream_actual, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 90, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_string_logical, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 111, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_update_in_seconds_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 56, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 21, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_flush_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 91, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_parent_base_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 60, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_finder_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 15, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sibling_count_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 72, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_eff_rights_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 95, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 50, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 69, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 30, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5715_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5716_request[] = { + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dst_ns_indicator, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5716_reply[] = { + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_directory_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5717_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5717_reply[] = { + { &hf_ncp_fixed_bit_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_variable_bit_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_bit_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fixed_bits_defined, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_variable_bits_defined, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_bits_defined, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_fields_len_table, 32, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5718_request[] = { + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5718_reply[] = { + { &hf_ncp_number_of_ns_loaded, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5719_request[] = { + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_info_mask, 2, &ncp_ns_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ns_specific_info, 512, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571a_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_bit_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_state_info, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571a_reply[] = { + { &hf_ncp_next_huge_state_info, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_data, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571b_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_bit_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_state_info, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_data, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571b_reply[] = { + { &hf_ncp_next_huge_state_info, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_huge_data_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571c_request[] = { + { &hf_ncp_src_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_cookie_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cookie_1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cookie_2, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571c_reply[] = { + { &hf_ncp_path_cookie_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cookie_1, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cookie_2, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_component_size, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_component_count, 2, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571d_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dest_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571d_reply[] = { + { &hf_ncp_effective_rights, 2, &ncp_effective_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 20, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 5, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571e_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_mode, 1, &ncp_open_create_mode_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_desired_access_rights, 2, &ncp_desired_access_rights_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571e_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action, 1, &ncp_open_create_action_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 20, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 5, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571f_request[] = { + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_info_level, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x571f_reply[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_0, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 65, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_1, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 66, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_2, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 63, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_3, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 6, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_4, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 61, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_handle_info_level_5, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 62, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5720_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action, 1, &ncp_open_create_action_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_o_c_ret_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 54, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 40, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 46, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 32, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 94, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 92, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 73, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 88, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 36, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 48, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 17, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 57, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 67, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 84, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 76, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 109, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 93, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 77, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 82, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 27, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 44, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 33, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ref_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 110, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_attrib_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 108, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_stream_actual, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 90, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_d_string_logical, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 111, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_update_in_seconds_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 56, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dos_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 21, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_flush_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 91, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_parent_base_id_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 60, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_finder_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 15, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_sibling_count_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 72, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_eff_rights_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 95, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mac_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 50, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_last_access_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 69, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 30, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5721_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_create_action, 1, &ncp_open_create_action_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_o_c_ret_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream_space_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_stream_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_ds_disk_space_alloc, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_data_streams, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creation_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_creation_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_creator_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_modified_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_modified_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_modifier_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_last_access_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archived_time, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_TIME }, + { &hf_ncp_archived_date, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NW_DATE }, + { &hf_ncp_archiver_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_inherited_rights_mask, 2, &ncp_inherited_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dos_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_data_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ea_key_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_creator_name_space_number, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5722_request[] = { + { &hf_ncp_cc_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cc_function, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5723_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_flags, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_search_att_low, 2, &ncp_search_att_low_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ret_info_mask, 2, &ncp_ret_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_info, 2, &ncp_ext_info_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5723_reply[] = { + { &hf_ncp_items_checked, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_changed, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attribute_valid_flag, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_attr_def_32, 4, &ncp_attr_def_32_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5724_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_log_file_flag_low, 1, &ncp_log_file_flag_low_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_log_file_flag_high, 1, &ncp_log_file_flag_high_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_wait_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5725_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5727_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5727_reply[] = { + { &hf_ncp_number_of_entries, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_space_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5728_reply[] = { + { &hf_ncp_search_sequence, 9, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_more_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_count, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 43, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ds_space_alloc, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 29, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 64, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_attributes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 49, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 85, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_data_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 68, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 96, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_total_stream_size, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 106, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 51, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_creation_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 75, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 41, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_modify_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 59, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 3, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_archive_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 18, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 42, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_rights_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 14, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 99, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_dir_entry, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 87, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 11, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ea_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 25, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 45, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_pad_ns_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 28, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 20, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ds_space_alloc_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 105, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_attributes_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 12, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_data_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 34, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_total_stream_size_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 80, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_creation_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 2, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_modify_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 0, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_archive_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 8, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_rights_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 37, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_entry_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 102, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ea_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 97, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ns_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 38, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 5, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5729_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ctrl_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_handle_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_count, 1, NULL, BE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path, 1, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5729_reply[] = { + { &hf_ncp_sequence_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_scan_items, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_scan_info_file_name, NO_ENDIANNESS, NO_VAR, 0, 112, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_scan_info_file_no_name, NO_ENDIANNESS, NO_VAR, 0, 86, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572a_request[] = { + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572a_reply[] = { + { &hf_ncp_purge_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_purge_c_code, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572b_request[] = { + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rev_query_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remove_open_rights, 1, &ncp_remove_open_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572b_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_open_rights, 1, &ncp_open_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572c_request[] = { + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_access_rights_mask_word, 2, &ncp_access_rights_mask_word_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_access_rights_mask, 2, &ncp_new_access_rights_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x572c_reply[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_effective_rights, 4, &ncp_effective_rights_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5740_request[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_offset_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_bytes, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5742_request[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5742_reply[] = { + { &hf_ncp_f_size_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5743_request[] = { + { &hf_ncp_lock_flag, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_offset_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_length_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_timeout, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5744_request[] = { + { &hf_ncp_file_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_s_offset_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_length_64bit, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5801_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_nw_audit_status, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5802_request[] = { + { &hf_ncp_audit_id_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_audit_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a01_request[] = { + { &hf_ncp_info_mask, 4, &ncp_info_mask_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved4, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_limb_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a01_reply[] = { + { &hf_ncp_limb_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_limb_scan_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncompletion_code, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_folder_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a0a_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a0a_reply[] = { + { &hf_ncp_reference_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a0b_request[] = { + { &hf_ncp_dir_handle, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a0c_request[] = { + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_suggested_file_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a0c_reply[] = { + { &hf_ncp_old_file_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_new_file_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a80_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dm_flags, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a81_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name_space, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a81_reply[] = { + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_restore_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dm_info_entries, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_data_size, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a82_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a82_reply[] = { + { &hf_ncp_num_of_files_migrated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_migrated_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_space_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_limbo_used, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_space_migrated, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_limbo, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a83_reply[] = { + { &hf_ncp_dm_present_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dm_major_version, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dm_minor_version, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a84_request[] = { + { &hf_ncp_dm_info_level, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a84_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_dm_info_level_0, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 53, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dm_info_level_1, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 52, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dm_info_level_2, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 55, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a86_request[] = { + { &hf_ncp_get_set_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a86_reply[] = { + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a87_request[] = { + { &hf_ncp_support_module_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_dir_base, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a87_reply[] = { + { &hf_ncp_block_size_in_sectors, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_used_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x5a88_request[] = { + { &hf_ncp_verb, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_verb_data, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x61_request[] = { + { &hf_ncp_proposed_max_size, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_security_flag, 1, &ncp_security_flag_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x61_reply[] = { + { &hf_ncp_accepted_max_size, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_echo_socket, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_security_flag, 1, &ncp_security_flag_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x65_request[] = { + { &hf_ncp_local_connection_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_local_max_packet_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_local_target_socket, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_local_max_send_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_local_max_recv_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x65_reply[] = { + { &hf_ncp_remote_target_id, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_remote_max_packet_size, 4, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6803_request[] = { + { &hf_ncp_fragger_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6804_reply[] = { + { &hf_ncp_bindery_context, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6806_request[] = { + { &hf_ncp_nds_request_flags, 2, &ncp_nds_request_flags_bitfield, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6808_reply[] = { + { &hf_ncp_nds_status, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x69_request[] = { + { &hf_ncp_dir_handle, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timeout_limit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_path, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6b_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_timeout_limit, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_synch_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6d_request[] = { + { &hf_ncp_lock_flag, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_handle, 6, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_areas_start_offset, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_area_len, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_timeout, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6f00_request[] = { + { &hf_ncp_initial_semaphore_value, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6f00_reply[] = { + { &hf_ncp_semaphore_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_open_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6f01_request[] = { + { &hf_ncp_semaphore_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6f02_request[] = { + { &hf_ncp_semaphore_handle, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lock_timeout, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x6f04_reply[] = { + { &hf_ncp_semaphore_open_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_semaphore_share_count, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7201_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_the_time_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_offset, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7202_request[] = { + { &hf_ncp_protocol_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_node_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_originate_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_receive_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_transmit_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_return_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_offset, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7202_reply[] = { + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_protocol_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_node_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_originate_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_receive_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_target_transmit_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_source_return_time, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_offset, 8, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_event_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7205_request[] = { + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7205_reply[] = { + { &hf_ncp_name_type, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name, 48, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_list_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_number_flag, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x720c_reply[] = { + { &hf_ncp_version, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b01_request[] = { + { &hf_ncp_version_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_revision_number, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b01_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_counters_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_extra_cache_cntrs, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_memory_counters, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_trend_counters, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_cache_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b02_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_sta_in_use, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ncp_peak_sta_in_use, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_ncp_reqs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_utilization, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_server_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_server_counters, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b03_request[] = { + { &hf_ncp_file_system_id, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b03_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_system_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b04_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_user_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_user_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b05_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_packet_burst_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b06_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ipx_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_spx_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b07_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_failed_alloc_req, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_allocs, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_no_more_mem_avail, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_garb_coll, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_found_some_mem, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_checks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b08_request[] = { + { &hf_ncp_cpu_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b08_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_cpus, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_cpu_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b09_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_lfs_counters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_current_lfs_counters, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_lfs_counters, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0a_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlms_in_list, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_numbers, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0b_request[] = { + { &hf_ncp_nlm_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0b_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_nlm_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_copyright, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0c_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_dir_cache_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0d_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_os_revision, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_acct_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vap_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_qms_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_security_restriction_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_internet_bridge_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_vol, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_conn, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_users, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_nme_sps, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_lans, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_medias, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_stacks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_dir_depth, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_data_streams, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_spool_pr, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_serial_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_app_num, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0e_request[] = { + { &hf_ncp_start_conn_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_connection_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0e_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_active_conn_bit_list, 512, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0f_request[] = { + { &hf_ncp_nlm_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_start_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b0f_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_num_of_r_tags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cur_num_of_r_tags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_r_tag_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b10_request[] = { + { &hf_ncp_enum_info_mask, 1, &ncp_enum_info_mask_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_in_list, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_conn_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b10_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_in_packet, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_net_addr_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 78, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_time_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 23, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_name_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 1, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_lock_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 10, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_print_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 98, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_stats_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 79, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_acctng_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 13, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_auth_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 7, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b11_request[] = { + { &hf_ncp_search_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b11_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_info_flags, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_guid, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nxt_search_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_in_packet, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_ncp_network_address_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b14_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_lans, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_items_in_packet, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_board_numbers, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b15_request[] = { + { &hf_ncp_board_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b15_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_lan_cfg_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b16_request[] = { + { &hf_ncp_board_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_block_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b16_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_common_cnts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_cnt_blocks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_custom_counters, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_cnt_block, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_common_lan_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b17_request[] = { + { &hf_ncp_board_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b17_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_cc_in_pkt, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_custom_cnts_info, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b18_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_board_name_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b19_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_lsl_information, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1a_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_log_ttl_tx_pkts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_log_ttl_rx_pkts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_un_claimed_packets, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1b_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_protocols, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_mlid_board_info, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1e_request[] = { + { &hf_ncp_object_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1e_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_generic_info_def, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1f_request[] = { + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_media_object_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b1f_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_object_id, 4, NULL, BE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b20_request[] = { + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_media_object_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_parent_object_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b21_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b21_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_segments, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_segments, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b22_request[] = { + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_level_num, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b22_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_info_level_num, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_vol_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 81, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_vol_info_struct_2, NO_ENDIANNESS, NO_VAR, NO_REPEAT, 31, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b28_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_lans, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_stack_info, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b29_request[] = { + { &hf_ncp_stack_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b29_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_config_major_vn, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_config_minor_vn, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_major_vn, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_minor_vn, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_short_stack_name, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_full_name_str, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2a_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_major_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stat_minor_version, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_com_cnts, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_counter_mask, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_tx_pkts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_total_rx_pkts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ignored_rx_pkts, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_custom_cnts, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2b_request[] = { + { &hf_ncp_stack_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2b_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_custom_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_custom_cnts_info, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2c_request[] = { + { &hf_ncp_media_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2c_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_stack_number, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2e_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_media_name, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b2f_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_max_num_of_medias, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_media_list_count, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_media_list, 4, NULL, LE, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b32_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rip_socket_num, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_router_dn_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_track_on_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ext_router_active_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_sap_socket_number, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_rpy_nearest_srv_flag, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b33_request[] = { + { &hf_ncp_network_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b33_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_known_routes, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b34_request[] = { + { &hf_ncp_network_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b34_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_entries, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_routers_info, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b35_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_entries, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_known_routes, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b36_request[] = { + { &hf_ncp_server_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b36_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_address, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_hops_to_net, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b37_request[] = { + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_name_len, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b37_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_entries, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_servers_src_info, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b38_request[] = { + { &hf_ncp_start_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_server_type, 2, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b38_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_num_of_entries, 4, NULL, LE, 0, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_known_server_struct, NO_ENDIANNESS, NO_VAR, 0, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b3c_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_num_of_set_cmds, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_category, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_flags, 1, &ncp_set_cmd_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_name, 100, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_value_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b3d_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_number_of_set_categories, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_category_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b3e_request[] = { + { &hf_ncp_set_parm_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b3e_reply[] = { + { &hf_ncp_current_server_time, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_ver, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_vconsole_rev, 1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved2, 2, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_num_of_set_cmds, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_next_starting_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_category, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_flags, 1, &ncp_set_cmd_flags_bitfield, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b46_reply[] = { + { &hf_ncp_parent_id, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_directory_entry_number, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compression_stage, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_inter_blks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_ttl_comp_blks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cur_inter_blks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cur_comp_blks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_cur_initial_blks, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_file_flags, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_projected_comp_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_original_size, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_compress_volume, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b47_reply[] = { + { &hf_ncp_file_list_count, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { PTVC_STRUCT, NO_LENGTH, &struct_file_info_struct, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x7b48_reply[] = { + { PTVC_STRUCT, NO_LENGTH, &struct_comp_d_comp_stat, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8301_request[] = { + { &hf_ncp_nlm_load_options, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_and_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8301_reply[] = { + { &hf_ncp_rpc_c_code, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8302_request[] = { + { &hf_ncp_reserved20, 20, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_nlm_name_stringz, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8303_request[] = { + { &hf_ncp_reserved20, 20, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_name_stringz, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8303_reply[] = { + { &hf_ncp_rpc_c_code, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved16, 16, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_volume_number_long, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8305_request[] = { + { &hf_ncp_reserved20, 20, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_add_nm_spc_and_vol, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8306_request[] = { + { &hf_ncp_set_cmd_type, 1, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved3, 3, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_value_num, 4, NULL, LE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_reserved12, 12, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_set_cmd_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +static const ptvc_record ncp_0x8307_request[] = { + { &hf_ncp_reserved20, 20, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { &hf_ncp_path_and_name, -1, NULL, BE, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE }, + { NULL, 0, NULL, NO_ENDIANNESS, NO_VAR, NO_REPEAT, NO_REQ_COND, NCP_FMT_NONE } +}; + +/* Error-Equivalency Tables. These are re-used to save space. */ +static const error_equivalency ncp_0x1_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x3_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x82, 2 }, /* 0x8200 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x4_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x9_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0xa_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0xb_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1100_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 13 }, /* 0x0104 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xff, 26 }, /* 0xff19 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1101_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9d, 28 }, /* 0x9d00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 31 }, /* 0xd202 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 41 }, /* 0xff06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1102_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xd2, 31 }, /* 0xd202 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 41 }, /* 0xff06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1106_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfb, 42 }, /* 0xfb05 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 41 }, /* 0xff06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1109_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 31 }, /* 0xd202 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 41 }, /* 0xff06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x110a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xff, 41 }, /* 0xff06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x12_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1500_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1502_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfb, 44 }, /* 0xfb0a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1600_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfa, 45 }, /* 0xfa00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1601_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1604_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfa, 45 }, /* 0xfa00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1605_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1606_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 48 }, /* 0x9e00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9f, 50 }, /* 0x9f00 */ + { 0xa0, 51 }, /* 0xa000 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x160f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8b, 52 }, /* 0x8b00 */ + { 0x92, 53 }, /* 0x9200 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 48 }, /* 0x9e00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xef, 54 }, /* 0xef00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1610_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x81, 55 }, /* 0x8100 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1611_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1612_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9d, 28 }, /* 0x9d00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1613_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9d, 28 }, /* 0x9d00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1614_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1617_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1618_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0x9d, 28 }, /* 0x9d00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1619_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x161a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x161b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfb, 57 }, /* 0xfb01 */ + { 0xff, 58 }, /* 0xff1d */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x161c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfe, 60 }, /* 0xfe02 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x161d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x85, 61 }, /* 0x8500 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x161f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x89, 62 }, /* 0x8900 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1620_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 65 }, /* 0x9800 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1621_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 65 }, /* 0x9800 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1622_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0xfe, 66 }, /* 0xfe0e */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1624_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 67 }, /* 0x0101 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1625_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 68 }, /* 0x0106 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1626_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 65 }, /* 0x9800 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1627_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x90, 69 }, /* 0x9000 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1628_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfb, 57 }, /* 0xfb01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1629_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 70 }, /* 0x9802 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x162a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x162b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x90, 71 }, /* 0x9002 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfe, 72 }, /* 0xfe0f */ + { 0xff, 73 }, /* 0xff09 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x162e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 74 }, /* 0x0102 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8b, 52 }, /* 0x8b00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x91, 75 }, /* 0x9101 */ + { 0x92, 76 }, /* 0x9201 */ + { 0x9a, 77 }, /* 0x9a00 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa4, 78 }, /* 0xa400 */ + { 0xff, 79 }, /* 0xff17 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x162f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x98, 70 }, /* 0x9802 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1630_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x98, 70 }, /* 0x9802 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1631_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x82, 2 }, /* 0x8200 */ + { 0x90, 71 }, /* 0x9002 */ + { 0xbe, 80 }, /* 0xbe00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1632_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1633_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0x98, 9 }, /* 0x9804 */ + { 0xfb, 82 }, /* 0xfb08 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1700_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc2, 85 }, /* 0xc200 */ + { 0xc5, 86 }, /* 0xc501 */ + { 0xd7, 87 }, /* 0xd700 */ + { 0xd9, 88 }, /* 0xd900 */ + { 0xda, 89 }, /* 0xda00 */ + { 0xdb, 90 }, /* 0xdb00 */ + { 0xde, 91 }, /* 0xde00 */ + { 0xdf, 92 }, /* 0xdf00 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xed, 93 }, /* 0xed00 */ + { 0xef, 54 }, /* 0xef00 */ + { 0xf0, 94 }, /* 0xf001 */ + { 0xf1, 95 }, /* 0xf100 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1701_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xd6, 98 }, /* 0xd600 */ + { 0xf0, 94 }, /* 0xf001 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf5, 100 }, /* 0xf501 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1702_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf0, 94 }, /* 0xf001 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1705_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1707_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x170d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 55 }, /* 0x8100 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x170e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x170f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 6 }, /* 0x9b00 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 79 }, /* 0xff17 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1710_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 79 }, /* 0xff17 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1711_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1714_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc2, 85 }, /* 0xc200 */ + { 0xc5, 86 }, /* 0xc501 */ + { 0xd6, 98 }, /* 0xd600 */ + { 0xd7, 87 }, /* 0xd700 */ + { 0xd9, 88 }, /* 0xd900 */ + { 0xda, 89 }, /* 0xda00 */ + { 0xdb, 90 }, /* 0xdb00 */ + { 0xde, 91 }, /* 0xde00 */ + { 0xdf, 92 }, /* 0xdf00 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xed, 93 }, /* 0xed00 */ + { 0xef, 54 }, /* 0xef00 */ + { 0xf0, 94 }, /* 0xf001 */ + { 0xf1, 95 }, /* 0xf100 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1716_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xfb, 44 }, /* 0xfb0a */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1717_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1718_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc2, 85 }, /* 0xc200 */ + { 0xc5, 101 }, /* 0xc500 */ + { 0xd9, 102 }, /* 0xd904 */ + { 0xda, 89 }, /* 0xda00 */ + { 0xdb, 90 }, /* 0xdb00 */ + { 0xdc, 103 }, /* 0xdc00 */ + { 0xde, 91 }, /* 0xde00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x171c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 83 }, /* 0x9602 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x171d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 105 }, /* 0x0109 */ + { 0x7a, 106 }, /* 0x7a00 */ + { 0x7b, 107 }, /* 0x7b00 */ + { 0x7c, 108 }, /* 0x7c00 */ + { 0xe0, 109 }, /* 0xe000 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x171e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 111 }, /* 0x0107 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1720_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xef, 112 }, /* 0xef01 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1732_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xe7, 115 }, /* 0xe700 */ + { 0xee, 116 }, /* 0xee00 */ + { 0xef, 54 }, /* 0xef00 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf5, 100 }, /* 0xf501 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1733_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xf4, 118 }, /* 0xf400 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1734_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xee, 116 }, /* 0xee00 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf3, 119 }, /* 0xf300 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1735_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xef, 112 }, /* 0xef01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1736_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1738_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf5, 100 }, /* 0xf501 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1739_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xed, 93 }, /* 0xed00 */ + { 0xef, 54 }, /* 0xef00 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xf7, 120 }, /* 0xf700 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x173a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x173b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xf6, 97 }, /* 0xf600 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x173d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 95 }, /* 0xf100 */ + { 0xf9, 122 }, /* 0xf900 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x173e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf8, 123 }, /* 0xf800 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x173f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 99 }, /* 0xf101 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1740_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xc5, 86 }, /* 0xc501 */ + { 0xd7, 125 }, /* 0xd701 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 94 }, /* 0xf001 */ + { 0xf1, 95 }, /* 0xf100 */ + { 0xf8, 123 }, /* 0xf800 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1741_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xe9, 126 }, /* 0xe900 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf8, 123 }, /* 0xf800 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1742_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf8, 123 }, /* 0xf800 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1743_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 121 }, /* 0xec01 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xfb, 104 }, /* 0xfb02 */ + { 0xfc, 124 }, /* 0xfc03 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1747_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf1, 95 }, /* 0xf100 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xfc, 113 }, /* 0xfc02 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1749_errors[] = { + { 0x00, 127 }, /* 0x0003 */ + { 0xff, 128 }, /* 0xff1e */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x174a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc5, 101 }, /* 0xc500 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 129 }, /* 0xff0c */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x174c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xf2, 96 }, /* 0xf200 */ + { 0xfe, 114 }, /* 0xfe01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1764_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 130 }, /* 0xd200 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xd7, 133 }, /* 0xd703 */ + { 0xd8, 134 }, /* 0xd800 */ + { 0xd9, 135 }, /* 0xd902 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xdb, 136 }, /* 0xdb02 */ + { 0xee, 116 }, /* 0xee00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1765_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 130 }, /* 0xd200 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xd7, 133 }, /* 0xd703 */ + { 0xd8, 134 }, /* 0xd800 */ + { 0xd9, 135 }, /* 0xd902 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xdb, 136 }, /* 0xdb02 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1767_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 130 }, /* 0xd200 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xd7, 133 }, /* 0xd703 */ + { 0xd8, 134 }, /* 0xd800 */ + { 0xd9, 135 }, /* 0xd902 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xdb, 136 }, /* 0xdb02 */ + { 0xfc, 137 }, /* 0xfc07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x176d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 130 }, /* 0xd200 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xd7, 133 }, /* 0xd703 */ + { 0xd8, 134 }, /* 0xd800 */ + { 0xd9, 135 }, /* 0xd902 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xdb, 136 }, /* 0xdb02 */ + { 0xff, 138 }, /* 0xff18 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x176e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 139 }, /* 0xff1f */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x176f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x99, 24 }, /* 0x9900 */ + { 0xd0, 29 }, /* 0xd000 */ + { 0xd1, 30 }, /* 0xd100 */ + { 0xd2, 130 }, /* 0xd200 */ + { 0xd3, 32 }, /* 0xd300 */ + { 0xd4, 33 }, /* 0xd400 */ + { 0xd5, 131 }, /* 0xd500 */ + { 0xd6, 132 }, /* 0xd601 */ + { 0xd7, 133 }, /* 0xd703 */ + { 0xd8, 134 }, /* 0xd800 */ + { 0xd9, 135 }, /* 0xd902 */ + { 0xda, 34 }, /* 0xda01 */ + { 0xdb, 136 }, /* 0xdb02 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1788_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1796_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xc0, 140 }, /* 0xc000 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc4, 141 }, /* 0xc400 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1797_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 74 }, /* 0x0102 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xc0, 140 }, /* 0xc000 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc2, 85 }, /* 0xc200 */ + { 0xc4, 141 }, /* 0xc400 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xfe, 40 }, /* 0xfe07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1799_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 74 }, /* 0x0102 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xc0, 140 }, /* 0xc000 */ + { 0xc1, 84 }, /* 0xc101 */ + { 0xc4, 141 }, /* 0xc400 */ + { 0xe8, 35 }, /* 0xe800 */ + { 0xea, 36 }, /* 0xea00 */ + { 0xeb, 37 }, /* 0xeb00 */ + { 0xec, 38 }, /* 0xec00 */ + { 0xf0, 117 }, /* 0xf000 */ + { 0xfc, 39 }, /* 0xfc06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17c8_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17cd_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfb, 57 }, /* 0xfb01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17d1_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17d3_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17d4_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17dd_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x17f3_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x9c, 46 }, /* 0x9c00 */ + { 0xc6, 142 }, /* 0xc601 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfd, 143 }, /* 0xfd02 */ + { 0xfe, 144 }, /* 0xfe04 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x1c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfd, 143 }, /* 0xfd02 */ + { 0xfe, 144 }, /* 0xfe04 */ + { 0xff, 145 }, /* 0xff03 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2000_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2200_errors[] = { + { 0x00, 146 }, /* 0x0001 */ + { 0xfd, 147 }, /* 0xfd03 */ + { 0xff, 148 }, /* 0xff12 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2202_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2203_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfd, 147 }, /* 0xfd03 */ + { 0xfe, 149 }, /* 0xfe0b */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2301_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 151 }, /* 0x9e02 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 138 }, /* 0xff18 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2302_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 151 }, /* 0x9e02 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 138 }, /* 0xff18 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2303_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 69 }, /* 0x9000 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 151 }, /* 0x9e02 */ + { 0xa0, 51 }, /* 0xa000 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 26 }, /* 0xff19 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2304_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 26 }, /* 0xff19 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2306_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2307_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8b, 52 }, /* 0x8b00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x92, 76 }, /* 0x9201 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 48 }, /* 0x9e00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 152 }, /* 0xff0a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2308_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2309_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 13 }, /* 0x0104 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x230a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x230b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9d, 28 }, /* 0x9d00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x230c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x230d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 48 }, /* 0x9e00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x230e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x83, 150 }, /* 0x8301 */ + { 0x84, 43 }, /* 0x8400 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0x9e, 48 }, /* 0x9e00 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2312_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2313_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2400_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfe, 153 }, /* 0xfe00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x2402_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfe, 153 }, /* 0xfe00 */ + { 0xff, 154 }, /* 0xff20 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x25_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xd5, 155 }, /* 0xd504 */ + { 0xee, 116 }, /* 0xee00 */ + { 0xfe, 153 }, /* 0xfe00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x3b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x98, 9 }, /* 0x9804 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x3e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x3f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x40_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x41_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x82, 2 }, /* 0x8200 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x42_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x43_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x99, 24 }, /* 0x9900 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x44_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x45_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8b, 52 }, /* 0x8b00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x91, 75 }, /* 0x9101 */ + { 0x92, 76 }, /* 0x9201 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9a, 77 }, /* 0x9a00 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x46_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x8c, 47 }, /* 0x8c00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa1, 11 }, /* 0xa100 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x47_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x48_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 157 }, /* 0x8300 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0xff, 158 }, /* 0xff1b */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x49_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 13 }, /* 0x0104 */ + { 0x83, 157 }, /* 0x8300 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xff, 158 }, /* 0xff1b */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x4a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 13 }, /* 0x0104 */ + { 0x83, 157 }, /* 0x8300 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xff, 158 }, /* 0xff1b */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x4b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfb, 82 }, /* 0xfb08 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x54_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5601_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xcf, 159 }, /* 0xcf00 */ + { 0xd3, 160 }, /* 0xd301 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5602_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc8, 161 }, /* 0xc800 */ + { 0xc9, 162 }, /* 0xc900 */ + { 0xcb, 163 }, /* 0xcb00 */ + { 0xce, 164 }, /* 0xce00 */ + { 0xcf, 159 }, /* 0xcf00 */ + { 0xd1, 165 }, /* 0xd101 */ + { 0xd2, 166 }, /* 0xd203 */ + { 0xd3, 160 }, /* 0xd301 */ + { 0xd4, 167 }, /* 0xd402 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5603_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xc9, 162 }, /* 0xc900 */ + { 0xce, 164 }, /* 0xce00 */ + { 0xcf, 159 }, /* 0xcf00 */ + { 0xd1, 165 }, /* 0xd101 */ + { 0xd3, 160 }, /* 0xd301 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5604_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0xc9, 162 }, /* 0xc900 */ + { 0xce, 164 }, /* 0xce00 */ + { 0xcf, 159 }, /* 0xcf00 */ + { 0xd1, 165 }, /* 0xd101 */ + { 0xd3, 160 }, /* 0xd301 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5605_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xd1, 165 }, /* 0xd101 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5701_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x80, 169 }, /* 0x8001 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa5, 170 }, /* 0xa500 */ + { 0xa8, 171 }, /* 0xa802 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5702_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5704_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x92, 53 }, /* 0x9200 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9a, 77 }, /* 0x9a00 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5706_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 172 }, /* 0x8700 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa8, 171 }, /* 0xa802 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5707_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8c, 173 }, /* 0x8c01 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5708_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x89, 62 }, /* 0x8900 */ + { 0x8a, 49 }, /* 0x8a00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8e, 19 }, /* 0x8e00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x570a_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfc, 174 }, /* 0xfc01 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5719_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8b, 52 }, /* 0x8b00 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5720_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5722_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x88, 17 }, /* 0x8800 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x572c_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x73, 175 }, /* 0x7300 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5740_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 157 }, /* 0x8300 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x93, 27 }, /* 0x9300 */ + { 0x95, 23 }, /* 0x9500 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 158 }, /* 0xff1b */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5741_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x83, 157 }, /* 0x8300 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x94, 22 }, /* 0x9400 */ + { 0x95, 23 }, /* 0x9500 */ + { 0xa2, 25 }, /* 0xa201 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 158 }, /* 0xff1b */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5742_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfd, 143 }, /* 0xfd02 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5743_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfb, 82 }, /* 0xfb08 */ + { 0xfd, 143 }, /* 0xfd02 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5744_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x73, 175 }, /* 0x7300 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xbf, 63 }, /* 0xbf00 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 8 }, /* 0xff1a */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5801_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x73, 175 }, /* 0x7300 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa6, 176 }, /* 0xa600 */ + { 0xa8, 177 }, /* 0xa801 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x580d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x03, 178 }, /* 0x0300 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa6, 176 }, /* 0xa600 */ + { 0xa8, 177 }, /* 0xa801 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5a01_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5a80_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa8, 179 }, /* 0xa800 */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0x80, 14 }, /* 0x8000 */ + { 0x81, 15 }, /* 0x8101 */ + { 0x84, 59 }, /* 0x8401 */ + { 0x85, 156 }, /* 0x8501 */ + { 0x87, 16 }, /* 0x8701 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x8d, 18 }, /* 0x8d00 */ + { 0x8f, 20 }, /* 0x8f00 */ + { 0x90, 21 }, /* 0x9001 */ + { 0x96, 3 }, /* 0x9600 */ + { 0x98, 9 }, /* 0x9804 */ + { 0x9b, 10 }, /* 0x9b03 */ + { 0x9c, 7 }, /* 0x9c03 */ + { 0xa8, 179 }, /* 0xa800 */ + { 0xfb, 180 }, /* 0xfb0b */ + { 0xfd, 12 }, /* 0xfd00 */ + { 0xff, 56 }, /* 0xff16 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x5e01_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfb, 181 }, /* 0xfb09 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6801_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x81, 55 }, /* 0x8100 */ + { 0xfb, 182 }, /* 0xfb04 */ + { 0xfe, 183 }, /* 0xfe0c */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6802_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfd, 184 }, /* 0xfd01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6804_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfe, 183 }, /* 0xfe0c */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6805_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfe, 183 }, /* 0xfe0c */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x68c8_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0xa7, 185 }, /* 0xa700 */ + { 0xfb, 64 }, /* 0xfb00 */ + { 0xfe, 183 }, /* 0xfe0c */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x69_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x82, 2 }, /* 0x8200 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6b_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfe, 4 }, /* 0xfe0d */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6d_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7f, 168 }, /* 0x7f00 */ + { 0x82, 2 }, /* 0x8200 */ + { 0x88, 17 }, /* 0x8800 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfd, 143 }, /* 0xfd02 */ + { 0xfe, 144 }, /* 0xfe04 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x6f02_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x96, 3 }, /* 0x9600 */ + { 0xfe, 144 }, /* 0xfe04 */ + { 0xff, 5 }, /* 0xff01 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7201_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 186 }, /* 0x7e00 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b01_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x79, 187 }, /* 0x7900 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b02_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x79, 187 }, /* 0x7900 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b0e_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x79, 187 }, /* 0x7900 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfd, 184 }, /* 0xfd01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b11_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x79, 187 }, /* 0x7900 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfb, 57 }, /* 0xfb01 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b2f_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b33_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x01, 188 }, /* 0x0108 */ + { 0x7e, 81 }, /* 0x7e01 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x7b46_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x79, 189 }, /* 0x7901 */ + { 0x7e, 186 }, /* 0x7e00 */ + { 0xfb, 110 }, /* 0xfb06 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +static const error_equivalency ncp_0x8301_errors[] = { + { 0x00, 0 }, /* 0x0000 */ + { 0x7e, 186 }, /* 0x7e00 */ + { 0xfb, 190 }, /* 0xfb07 */ + { 0xff, 1 }, /* 0xff00 */ + { 0x00, -1 } +}; + +/* Request Condition Indexes */ +static const int ncp_0x1720_req_cond_indexes[] = { + 16, 58, 71, 107, -1 }; + +static const int ncp_0x3f_req_cond_indexes[] = { + 19, 47, -1 }; + +static const int ncp_0x5701_req_cond_indexes[] = { + 0, 2, 8, 12, 15, 17, 21, 27, 30, 32, 33, 34, 36, 37, 38, 40, 44, 46, 48, 50, 54, 56, 57, 60, 67, 69, 72, 73, 76, 77, 80, 82, 84, 88, 90, 91, 92, 93, 94, 95, 97, 102, 105, 108, 109, 110, 111, -1 }; + +static const int ncp_0x5706_req_cond_indexes[] = { + 0, 2, 3, 8, 11, 12, 14, 15, 18, 21, 25, 28, 29, 30, 34, 37, 38, 41, 42, 43, 45, 49, 50, 51, 56, 59, 60, 64, 68, 69, 72, 75, 80, 85, 87, 90, 91, 95, 96, 97, 99, 102, 105, 106, 108, 110, 111, -1 }; + +static const int ncp_0x5710_req_cond_indexes[] = { + 0, 2, 3, 5, 8, 11, 12, 14, 18, 20, 25, 28, 29, 34, 37, 38, 41, 42, 43, 45, 49, 51, 59, 64, 68, 75, 80, 85, 87, 96, 97, 99, 102, 105, 106, -1 }; + +static const int ncp_0x5713_req_cond_indexes[] = { + 4, 9, 24, 26, 35, 39, 70, 74, 83, 89, 100, 103, 104, -1 }; + +static const int ncp_0x571f_req_cond_indexes[] = { + 6, 61, 62, 63, 65, 66, -1 }; + +static const int ncp_0x5729_req_cond_indexes[] = { + 86, 112, -1 }; + +static const int ncp_0x5a84_req_cond_indexes[] = { + 52, 53, 55, -1 }; + +static const int ncp_0x7b10_req_cond_indexes[] = { + 1, 7, 10, 13, 23, 78, 79, 98, -1 }; + +static const int ncp_0x7b22_req_cond_indexes[] = { + 31, 81, -1 }; + +/* Info Strings */ +static const info_string_t info_str_0x9_req = { + &hf_ncp_logical_record_name, + "Log Logical Record: %s", + ", %s" +}; + +static const info_string_t info_str_0xb_req = { + &hf_ncp_logical_record_name, + "Clear Logical Record: %s", + ", %s" +}; + +static const info_string_t info_str_0xc_req = { + &hf_ncp_logical_record_name, + "Release Logical Record: %s", + ", %s" +}; + +static const info_string_t info_str_0x1100_req = { + &hf_ncp_data, + "Write to Spool File: %s", + ", %s" +}; + +static const info_string_t info_str_0x1103_req = { + &hf_ncp_data, + "Spool a Disk File: %s", + ", %s" +}; + +static const info_string_t info_str_0x1109_req = { + &hf_ncp_data, + "Create Spool File: %s", + ", %s" +}; + +static const info_string_t info_str_0x12_req = { + &hf_ncp_volume_number, + "Get Volume Information for Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x1500_req = { + &hf_ncp_target_message, + "Send Broadcast Message: %s", + ", %s" +}; + +static const info_string_t info_str_0x1509_req = { + &hf_ncp_target_message, + "Broadcast to Console: %s", + ", %s" +}; + +static const info_string_t info_str_0x150a_req = { + &hf_ncp_target_message, + "Send Broadcast Message: %s", + ", %s" +}; + +static const info_string_t info_str_0x1600_req = { + &hf_ncp_path, + "Set Directory Handle to: %s", + ", %s" +}; + +static const info_string_t info_str_0x1601_req = { + &hf_ncp_dir_handle, + "Get Directory Path for Directory Handle %d", + ", %d" +}; + +static const info_string_t info_str_0x1602_req = { + &hf_ncp_path, + "Scan Directory Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x1603_req = { + &hf_ncp_path, + "Get Effective Directory Rights: %s", + ", %s" +}; + +static const info_string_t info_str_0x1604_req = { + &hf_ncp_path, + "Modify Maximum Rights Mask: %s", + ", %s" +}; + +static const info_string_t info_str_0x1605_req = { + &hf_ncp_volume_name_len, + "Get Volume Number for: %s", + ", %s" +}; + +static const info_string_t info_str_0x1606_req = { + &hf_ncp_volume_number, + "Get Name for Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x160a_req = { + &hf_ncp_path, + "Create Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x160b_req = { + &hf_ncp_path, + "Delete Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x160c_req = { + &hf_ncp_path, + "Scan Directory for Trustees: %s", + ", %s" +}; + +static const info_string_t info_str_0x160d_req = { + &hf_ncp_path, + "Add Trustee to Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x160e_req = { + &hf_ncp_path, + "Delete Trustee from Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x160f_req = { + &hf_ncp_path, + "Rename Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x1611_req = { + &hf_ncp_dir_handle, + "Recover Erased File from Directory Handle %d", + ", %d" +}; + +static const info_string_t info_str_0x1612_req = { + &hf_ncp_path, + "Allocate Permanent Directory Handle: %s", + ", %s" +}; + +static const info_string_t info_str_0x1613_req = { + &hf_ncp_path, + "Allocate Temporary Directory Handle: %s", + ", %s" +}; + +static const info_string_t info_str_0x1614_req = { + &hf_ncp_dir_handle, + "Deallocate Directory Handle %d", + ", %d" +}; + +static const info_string_t info_str_0x1615_req = { + &hf_ncp_dir_handle, + "Get Volume Information with Handle %d", + ", %d" +}; + +static const info_string_t info_str_0x1616_req = { + &hf_ncp_path, + "Allocate Special Temporary Directory Handle: %s", + ", %s" +}; + +static const info_string_t info_str_0x1617_req = { + &hf_ncp_dir_handle, + "Extract a Base Handle from Directory Handle %d", + ", %d" +}; + +static const info_string_t info_str_0x1619_req = { + &hf_ncp_path, + "Set Directory Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x161c_req = { + &hf_ncp_file_name, + "Recover File: %s", + ", %s" +}; + +static const info_string_t info_str_0x161e_req = { + &hf_ncp_search_pattern, + "Scan a Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x1626_req = { + &hf_ncp_path, + "Scan for Extended Trustees: %s", + ", %s" +}; + +static const info_string_t info_str_0x1627_req = { + &hf_ncp_path, + "Add Extended Trustee: %s", + ", %s" +}; + +static const info_string_t info_str_0x1628_req = { + &hf_ncp_search_pattern, + "Scan Directory Disk Space: %s", + ", %s" +}; + +static const info_string_t info_str_0x162a_req = { + &hf_ncp_path, + "Get Effective Rights: %s", + ", %s" +}; + +static const info_string_t info_str_0x162b_req = { + &hf_ncp_path, + "Remove Extended Trustee from %s", + ", %s" +}; + +static const info_string_t info_str_0x162c_req = { + &hf_ncp_volume_number, + "Get Volume and Purge Information for Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x162e_req = { + &hf_ncp_source_path, + "Rename or Move: %s", + ", %s" +}; + +static const info_string_t info_str_0x162f_req = { + &hf_ncp_volume_number, + "Get Name Space Information for Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x1631_req = { + &hf_ncp_file_name, + "Open Data Stream: %s", + ", %s" +}; + +static const info_string_t info_str_0x1632_req = { + &hf_ncp_path, + "Get Object Effective Rights: %s", + ", %s" +}; + +static const info_string_t info_str_0x1633_req = { + &hf_ncp_volume_number, + "Get Extended Volume Information for Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x1700_req = { + &hf_ncp_user_name, + "Login User: %s", + ", %s" +}; + +static const info_string_t info_str_0x1701_req = { + &hf_ncp_user_name, + "Change Password for User: %s", + ", %s" +}; + +static const info_string_t info_str_0x1702_req = { + &hf_ncp_user_name, + "Get User Connection: %s", + ", %s" +}; + +static const info_string_t info_str_0x1703_req = { + &hf_ncp_user_name, + "Get User Number: %s", + ", %s" +}; + +static const info_string_t info_str_0x1705_req = { + &hf_ncp_target_connection_number, + "Get Station's Logged Information on Connection %d", + ", %d" +}; + +static const info_string_t info_str_0x170d_req = { + &hf_ncp_target_message, + "Log Network Message: %s", + ", %s" +}; + +static const info_string_t info_str_0x170f_req = { + &hf_ncp_file_name, + "Scan File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x1710_req = { + &hf_ncp_file_name, + "Set Information for File: %s", + ", %s" +}; + +static const info_string_t info_str_0x1713_req = { + &hf_ncp_target_connection_number, + "Get Internet Address for Connection %d", + ", %d" +}; + +static const info_string_t info_str_0x1714_req = { + &hf_ncp_user_name, + "Login Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1715_req = { + &hf_ncp_user_name, + "Get Object Connection List: %s", + ", %s" +}; + +static const info_string_t info_str_0x1718_req = { + &hf_ncp_object_name, + "Keyed Object Login: %s", + ", %s" +}; + +static const info_string_t info_str_0x171b_req = { + &hf_ncp_object_name, + "Get Object Connection List: %s", + ", %s" +}; + +static const info_string_t info_str_0x1720_req = { + &hf_ncp_object_name, + "Scan Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1732_req = { + &hf_ncp_object_name, + "Create Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1733_req = { + &hf_ncp_object_name, + "Delete Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1734_req = { + &hf_ncp_object_name, + "Rename Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1735_req = { + &hf_ncp_object_name, + "Get Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1737_req = { + &hf_ncp_object_name, + "Scan Bindery Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1738_req = { + &hf_ncp_object_name, + "Change Bindery Object Security: %s", + ", %s" +}; + +static const info_string_t info_str_0x1739_req = { + &hf_ncp_property_name, + "Create Property: %s", + ", %s" +}; + +static const info_string_t info_str_0x173a_req = { + &hf_ncp_property_name, + "Delete Property: %s", + ", %s" +}; + +static const info_string_t info_str_0x173b_req = { + &hf_ncp_property_name, + "Change Property Security: %s", + ", %s" +}; + +static const info_string_t info_str_0x173c_req = { + &hf_ncp_property_name, + "Scan Property: %s", + ", %s" +}; + +static const info_string_t info_str_0x173d_req = { + &hf_ncp_property_name, + "Read Property Value: %s", + ", %s" +}; + +static const info_string_t info_str_0x173e_req = { + &hf_ncp_property_name, + "Write Property Value: %s", + ", %s" +}; + +static const info_string_t info_str_0x173f_req = { + &hf_ncp_object_name, + "Verify Bindery Object Password: %s", + ", %s" +}; + +static const info_string_t info_str_0x1740_req = { + &hf_ncp_object_name, + "Change Bindery Object Password: %s", + ", %s" +}; + +static const info_string_t info_str_0x1741_req = { + &hf_ncp_member_name, + "Add Bindery Object to Set: %s", + ", %s" +}; + +static const info_string_t info_str_0x1742_req = { + &hf_ncp_member_name, + "Delete Bindery Object from Set: %s", + ", %s" +}; + +static const info_string_t info_str_0x1743_req = { + &hf_ncp_member_name, + "Is Bindery Object in Set: %s", + ", %s" +}; + +static const info_string_t info_str_0x174a_req = { + &hf_ncp_object_name, + "Keyed Verify Password: %s", + ", %s" +}; + +static const info_string_t info_str_0x174b_req = { + &hf_ncp_object_name, + "Keyed Change Password: %s", + ", %s" +}; + +static const info_string_t info_str_0x174c_req = { + &hf_ncp_object_name, + "List Relations of an Object: %s", + ", %s" +}; + +static const info_string_t info_str_0x1764_req = { + &hf_ncp_queue_name, + "Create Queue: %s", + ", %s" +}; + +static const info_string_t info_str_0x1796_req = { + &hf_ncp_object_name, + "Get Current Account Status: %s", + ", %s" +}; + +static const info_string_t info_str_0x1797_req = { + &hf_ncp_object_name, + "Submit Account Charge: %s", + ", %s" +}; + +static const info_string_t info_str_0x1798_req = { + &hf_ncp_object_name, + "Submit Account Hold: %s", + ", %s" +}; + +static const info_string_t info_str_0x1799_req = { + &hf_ncp_object_name, + "Submit Account Note: %s", + ", %s" +}; + +static const info_string_t info_str_0x17d1_req = { + &hf_ncp_target_message, + "Send Console Broadcast: %s", + ", %s" +}; + +static const info_string_t info_str_0x17d2_req = { + &hf_ncp_connection_number, + "Clear Connection Number %d", + ", %d" +}; + +static const info_string_t info_str_0x17dc_req = { + &hf_ncp_path, + "Get Connection Using File: %s", + ", %s" +}; + +static const info_string_t info_str_0x17dd_req = { + &hf_ncp_file_name_14, + "Get Physical Record Locks by Connection and File: %s", + ", %s" +}; + +static const info_string_t info_str_0x17de_req = { + &hf_ncp_path, + "Get Physical Record Locks by File: %s", + ", %s" +}; + +static const info_string_t info_str_0x17e0_req = { + &hf_ncp_logical_record_name, + "Get Logical Record Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x17e2_req = { + &hf_ncp_semaphore_name, + "Get Semaphore Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x17e9_req = { + &hf_ncp_volume_number, + "Get Information on Volume %d", + ", %d" +}; + +static const info_string_t info_str_0x17f2_req = { + &hf_ncp_semaphore_name, + "Get Semaphore Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x17f4_req = { + &hf_ncp_path, + "Convert Path to Directory Entry: %s", + ", %s" +}; + +static const info_string_t info_str_0x17fd_req = { + &hf_ncp_target_message, + "Send Console Broadcast: %s", + ", %s" +}; + +static const info_string_t info_str_0x1a_req = { + &hf_ncp_lock_area_len, + "Lock Record - Length of %d", + "%d" +}; + +static const info_string_t info_str_0x1c_req = { + &hf_ncp_lock_area_len, + "Release Lock Record - Length of %d", + "%d" +}; + +static const info_string_t info_str_0x1e_req = { + &hf_ncp_lock_area_len, + "Clear Lock Record - Length of %d", + "%d" +}; + +static const info_string_t info_str_0x2301_req = { + &hf_ncp_path, + "AFP Create Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x2302_req = { + &hf_ncp_path, + "AFP Create File: %s", + ", %s" +}; + +static const info_string_t info_str_0x2303_req = { + &hf_ncp_path, + "AFP Delete: %s", + ", %s" +}; + +static const info_string_t info_str_0x2304_req = { + &hf_ncp_path, + "AFP Get Entry from Name: %s", + ", %s" +}; + +static const info_string_t info_str_0x2305_req = { + &hf_ncp_path, + "AFP Get File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x2307_req = { + &hf_ncp_path, + "AFP Rename: %s", + ", %s" +}; + +static const info_string_t info_str_0x2308_req = { + &hf_ncp_path, + "AFP Open File Fork: %s", + ", %s" +}; + +static const info_string_t info_str_0x2309_req = { + &hf_ncp_path, + "AFP Set File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x230a_req = { + &hf_ncp_path, + "AFP Scan File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x230b_req = { + &hf_ncp_path, + "AFP Allocate Temporary Directory Handle: %s", + ", %s" +}; + +static const info_string_t info_str_0x230c_req = { + &hf_ncp_path, + "AFP Get Entry ID from Path Name: %s", + ", %s" +}; + +static const info_string_t info_str_0x230d_req = { + &hf_ncp_path, + "AFP 2.0 Create Directory: %s", + ", %s" +}; + +static const info_string_t info_str_0x230e_req = { + &hf_ncp_path, + "AFP 2.0 Create File: %s", + ", %s" +}; + +static const info_string_t info_str_0x230f_req = { + &hf_ncp_path, + "AFP 2.0 Get Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x2310_req = { + &hf_ncp_path, + "AFP 2.0 Set File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x2311_req = { + &hf_ncp_path, + "AFP 2.0 Scan File Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x2402_req = { + &hf_ncp_ncp_extension_name, + "Get NCP Extension Information by Name: %s", + ", %s" +}; + +static const info_string_t info_str_0x3b_req = { + &hf_ncp_file_handle, + "Commit File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x3e_req = { + &hf_ncp_path, + "Initialize File Search: %s", + ", %s" +}; + +static const info_string_t info_str_0x3f_req = { + &hf_ncp_path, + "File Search Continue: %s", + ", %s" +}; + +static const info_string_t info_str_0x40_req = { + &hf_ncp_file_name, + "Search for File: %s", + ", %s" +}; + +static const info_string_t info_str_0x41_req = { + &hf_ncp_file_name, + "Open File: %s", + ", %s" +}; + +static const info_string_t info_str_0x42_req = { + &hf_ncp_file_handle, + "Close File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x43_req = { + &hf_ncp_file_name, + "Create File: %s", + ", %s" +}; + +static const info_string_t info_str_0x44_req = { + &hf_ncp_file_name, + "Erase File: %s", + ", %s" +}; + +static const info_string_t info_str_0x45_req = { + &hf_ncp_file_name, + "Rename File: %s", + ", %s" +}; + +static const info_string_t info_str_0x46_req = { + &hf_ncp_file_name, + "Set File Attributes: %s", + ", %s" +}; + +static const info_string_t info_str_0x47_req = { + &hf_ncp_file_handle, + "Get Current Size of File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x48_req = { + &hf_ncp_file_handle, + "Read From File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x49_req = { + &hf_ncp_file_handle, + "Write to a File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x4b_req = { + &hf_ncp_file_handle, + "Set Time and Date Stamp for File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x4c_req = { + &hf_ncp_file_name, + "Open File: %s", + ", %s" +}; + +static const info_string_t info_str_0x4d_req = { + &hf_ncp_file_name, + "Create File: %s", + ", %s" +}; + +static const info_string_t info_str_0x4f_req = { + &hf_ncp_file_name, + "Set File Extended Attributes: %s", + ", %s" +}; + +static const info_string_t info_str_0x54_req = { + &hf_ncp_file_name, + "Open/Create File: %s", + ", %s" +}; + +static const info_string_t info_str_0x55_req = { + &hf_ncp_file_handle, + "Get Sparse File Data Block Bitmap for File - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x5602_req = { + &hf_ncp_ea_key, + "Write Extended Attribute: %s", + ", %s" +}; + +static const info_string_t info_str_0x5603_req = { + &hf_ncp_ea_key, + "Read Extended Attribute: %s", + ", %s" +}; + +static const info_string_t info_str_0x5604_req = { + &hf_ncp_ea_key, + "Enumerate Extended Attribute: %s", + ", %s" +}; + +static const info_string_t info_str_0x5701_req = { + &hf_ncp_path, + "Open or Create: %s", + "/%s" +}; + +static const info_string_t info_str_0x5702_req = { + &hf_ncp_path, + "Set Search Pointer to: %s", + "/%s" +}; + +static const info_string_t info_str_0x5703_req = { + &hf_ncp_search_pattern, + "Search for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5704_req = { + &hf_ncp_path, + "Rename or Move: %s", + "/%s" +}; + +static const info_string_t info_str_0x5705_req = { + &hf_ncp_path, + "Scan Trustees for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5706_req = { + &hf_ncp_path, + "Obtain Info for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5707_req = { + &hf_ncp_path, + "Modify DOS Information for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5708_req = { + &hf_ncp_path, + "Delete a File or Subdirectory: %s", + "/%s" +}; + +static const info_string_t info_str_0x5709_req = { + &hf_ncp_path, + "Set Short Directory Handle to: %s", + "/%s" +}; + +static const info_string_t info_str_0x570a_req = { + &hf_ncp_path, + "Add Trustee Set to: %s", + "/%s" +}; + +static const info_string_t info_str_0x570b_req = { + &hf_ncp_path, + "Delete Trustee Set from: %s", + "/%s" +}; + +static const info_string_t info_str_0x570c_req = { + &hf_ncp_path, + "Allocate Short Directory Handle to: %s", + "/%s" +}; + +static const info_string_t info_str_0x5710_req = { + &hf_ncp_path, + "Scan for Deleted Files in: %s", + "/%s" +}; + +static const info_string_t info_str_0x5711_req = { + &hf_ncp_file_name, + "Recover Deleted File: %s", + ", %s" +}; + +static const info_string_t info_str_0x5716_req = { + &hf_ncp_path, + "Get Volume and Directory Base from: %s", + "/%s" +}; + +static const info_string_t info_str_0x571c_req = { + &hf_ncp_path, + "Get Full Path from: %s", + "/%s" +}; + +static const info_string_t info_str_0x571d_req = { + &hf_ncp_path, + "Get Effective Rights for: %s", + "/%s" +}; + +static const info_string_t info_str_0x571e_req = { + &hf_ncp_path, + "Open or Create File: %s", + "/%s" +}; + +static const info_string_t info_str_0x571f_req = { + &hf_ncp_file_handle, + "Get File Information - 0x%s", + ", %s" +}; + +static const info_string_t info_str_0x5720_req = { + &hf_ncp_path, + "Open or Create with Op-Lock: %s", + "/%s" +}; + +static const info_string_t info_str_0x5721_req = { + &hf_ncp_file_path, + "Open or Create II with Op-Lock: %s", + "/%s" +}; + +static const info_string_t info_str_0x5723_req = { + &hf_ncp_path, + "Modify DOS Attributes for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5724_req = { + &hf_ncp_path, + "Lock File: %s", + "/%s" +}; + +static const info_string_t info_str_0x5725_req = { + &hf_ncp_path, + "Release Lock on: %s", + "/%s" +}; + +static const info_string_t info_str_0x5726_req = { + &hf_ncp_path, + "Clear File: %s", + "/%s" +}; + +static const info_string_t info_str_0x5727_req = { + &hf_ncp_path, + "Get Disk Space Restriction for: %s", + "/%s" +}; + +static const info_string_t info_str_0x5728_req = { + &hf_ncp_search_pattern, + "Search for: %s", + ", %s" +}; + +static const info_string_t info_str_0x5729_req = { + &hf_ncp_path, + "Scan Deleted Files: %s", + "/%s" +}; + +static const info_string_t info_str_0x61_req = { + &hf_ncp_proposed_max_size, + "Get Big Max Packet Size - %d", + ", %d" +}; + +static const info_string_t info_str_0x69_req = { + &hf_ncp_file_path, + "Log File: %s", + "/%s" +}; + +static const info_string_t info_str_0x6b_req = { + &hf_ncp_synch_name, + "Log Logical Record: %s", + ", %s" +}; + +static const info_string_t info_str_0x6f00_req = { + &hf_ncp_semaphore_name, + "Open/Create Semaphore: %s", + ", %s" +}; + +static const info_string_t info_str_0x7202_req = { + &hf_ncp_server_name_len, + "Timesync Exchange Time: %s", + ", %s" +}; + +static const info_string_t info_str_0x7b36_req = { + &hf_ncp_server_name_len, + "Get Server Information: %s", + ", %s" +}; + +static const info_string_t info_str_0x7b37_req = { + &hf_ncp_server_name_len, + "Get Server Sources Info: %s", + ", %s" +}; + +static const info_string_t info_str_0x7b3e_req = { + &hf_ncp_set_parm_name, + "Get Server Set Command Info for: %s", + ", %s" +}; + +static const info_string_t info_str_0x8301_req = { + &hf_ncp_path_and_name, + "RPC Load NLM: %s", + ", %s" +}; + +static const info_string_t info_str_0x8302_req = { + &hf_ncp_nlm_name_stringz, + "RPC Unload NLM: %s", + ", %s" +}; + +static const info_string_t info_str_0x8303_req = { + &hf_ncp_volume_name_stringz, + "RPC Mount Volume: %s", + ", %s" +}; + +static const info_string_t info_str_0x8304_req = { + &hf_ncp_volume_name_stringz, + "RPC Dismount Volume: %s", + ", %s" +}; + +static const info_string_t info_str_0x8305_req = { + &hf_ncp_add_nm_spc_and_vol, + "RPC Add Name Space to Volume: %s", + ", %s" +}; + +static const info_string_t info_str_0x8306_req = { + &hf_ncp_set_cmd_name, + "RPC Set Command Value: %s", + ", %s" +}; + +static const info_string_t info_str_0x8307_req = { + &hf_ncp_path_and_name, + "RPC Execute NCF File: %s", + ", %s" +}; + +#define SUBFUNC_WITH_LENGTH 0x02 +#define SUBFUNC_NO_LENGTH 0x01 +#define NO_SUBFUNC 0x00 +/* ncp_record structs for packets */ +static const ncp_record ncp_packets[] = { + { 0x01, 0x00, NO_SUBFUNC, "File Set Lock", 0 /* file */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x02, 0x00, NO_SUBFUNC, "File Release Lock", 0 /* file */, + NULL, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x03, 0x00, NO_SUBFUNC, "Log File Exclusive", 0 /* file */, + ncp_0x3_request, NULL, ncp_0x3_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x04, 0x00, NO_SUBFUNC, "Lock File Set", 0 /* file */, + ncp_0x4_request, NULL, ncp_0x4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x05, 0x00, NO_SUBFUNC, "Release File", 0 /* file */, + ncp_0x5_request, NULL, ncp_0x5_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x06, 0x00, NO_SUBFUNC, "Release File Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x07, 0x00, NO_SUBFUNC, "Clear File", 0 /* file */, + ncp_0x5_request, NULL, ncp_0x7_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x08, 0x00, NO_SUBFUNC, "Clear File Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x09, 0x00, NO_SUBFUNC, "Log Logical Record", 0 /* file */, + ncp_0x9_request, NULL, ncp_0x9_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x9_req }, + + { 0x0a, 0x00, NO_SUBFUNC, "Lock Logical Record Set", 0 /* file */, + ncp_0xa_request, NULL, ncp_0xa_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x0b, 0x00, NO_SUBFUNC, "Clear Logical Record", 0 /* file */, + ncp_0xb_request, NULL, ncp_0xb_errors, NULL, NO_REQ_COND_SIZE, &info_str_0xb_req }, + + { 0x0c, 0x00, NO_SUBFUNC, "Release Logical Record", 0 /* file */, + ncp_0xb_request, NULL, ncp_0xb_errors, NULL, NO_REQ_COND_SIZE, &info_str_0xc_req }, + + { 0x0d, 0x00, NO_SUBFUNC, "Release Logical Record Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x0e, 0x00, NO_SUBFUNC, "Clear Logical Record Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x11, 0x00, SUBFUNC_WITH_LENGTH, "Write to Spool File", 1 /* qms */, + ncp_0x1100_request, NULL, ncp_0x1100_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1100_req }, + + { 0x11, 0x01, SUBFUNC_WITH_LENGTH, "Close Spool File", 1 /* qms */, + ncp_0x1101_request, NULL, ncp_0x1101_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x11, 0x02, SUBFUNC_WITH_LENGTH, "Set Spool File Flags", 1 /* qms */, + ncp_0x1102_request, NULL, ncp_0x1102_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x11, 0x03, SUBFUNC_WITH_LENGTH, "Spool A Disk File", 1 /* qms */, + ncp_0x1103_request, NULL, ncp_0x1101_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1103_req }, + + { 0x11, 0x06, SUBFUNC_WITH_LENGTH, "Get Printer Status", 1 /* qms */, + ncp_0x1106_request, ncp_0x1106_reply, ncp_0x1106_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x11, 0x09, SUBFUNC_WITH_LENGTH, "Create Spool File", 1 /* qms */, + ncp_0x1103_request, NULL, ncp_0x1109_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1109_req }, + + { 0x11, 0x0a, SUBFUNC_WITH_LENGTH, "Get Printer's Queue", 1 /* qms */, + ncp_0x1106_request, ncp_0x110a_reply, ncp_0x110a_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x12, 0x00, NO_SUBFUNC, "Get Volume Info with Number", 0 /* file */, + ncp_0x12_request, ncp_0x12_reply, ncp_0x12_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x12_req }, + + { 0x13, 0x00, NO_SUBFUNC, "Get Station Number", 2 /* connection */, + NULL, ncp_0x13_reply, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x14, 0x00, NO_SUBFUNC, "Get File Server Date And Time", 3 /* fileserver */, + NULL, ncp_0x14_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x15, 0x00, SUBFUNC_WITH_LENGTH, "Send Broadcast Message", 4 /* message */, + ncp_0x1500_request, ncp_0x1500_reply, ncp_0x1500_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1500_req }, + + { 0x15, 0x01, SUBFUNC_WITH_LENGTH, "Get Broadcast Message", 4 /* message */, + NULL, ncp_0x1501_reply, ncp_0x1500_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x15, 0x02, SUBFUNC_WITH_LENGTH, "Disable Broadcasts", 4 /* message */, + NULL, NULL, ncp_0x1502_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x15, 0x03, SUBFUNC_WITH_LENGTH, "Enable Broadcasts", 4 /* message */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x15, 0x09, SUBFUNC_WITH_LENGTH, "Broadcast To Console", 4 /* message */, + ncp_0x1501_reply, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1509_req }, + + { 0x15, 0x0a, SUBFUNC_WITH_LENGTH, "Send Broadcast Message", 4 /* message */, + ncp_0x150a_request, ncp_0x150a_reply, ncp_0x1500_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x150a_req }, + + { 0x15, 0x0b, SUBFUNC_WITH_LENGTH, "Get Broadcast Message", 4 /* message */, + NULL, ncp_0x1501_reply, ncp_0x1500_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x15, 0x0c, SUBFUNC_WITH_LENGTH, "Connection Message Control", 4 /* message */, + ncp_0x150c_request, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x00, SUBFUNC_WITH_LENGTH, "Set Directory Handle", 3 /* fileserver */, + ncp_0x1600_request, NULL, ncp_0x1600_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1600_req }, + + { 0x16, 0x01, SUBFUNC_WITH_LENGTH, "Get Directory Path", 3 /* fileserver */, + ncp_0x1601_request, ncp_0x1601_reply, ncp_0x1601_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1601_req }, + + { 0x16, 0x02, SUBFUNC_WITH_LENGTH, "Scan Directory Information", 3 /* fileserver */, + ncp_0x1602_request, ncp_0x1602_reply, ncp_0x1600_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1602_req }, + + { 0x16, 0x03, SUBFUNC_WITH_LENGTH, "Get Effective Directory Rights", 3 /* fileserver */, + ncp_0x1603_request, ncp_0x1603_reply, ncp_0x1600_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1603_req }, + + { 0x16, 0x04, SUBFUNC_WITH_LENGTH, "Modify Maximum Rights Mask", 3 /* fileserver */, + ncp_0x1604_request, NULL, ncp_0x1604_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1604_req }, + + { 0x16, 0x05, SUBFUNC_WITH_LENGTH, "Get Volume Number", 3 /* fileserver */, + ncp_0x1605_request, ncp_0x12_request, ncp_0x1605_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1605_req }, + + { 0x16, 0x06, SUBFUNC_WITH_LENGTH, "Get Volume Name", 3 /* fileserver */, + ncp_0x12_request, ncp_0x1605_request, ncp_0x1606_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1606_req }, + + { 0x16, 0x0a, SUBFUNC_WITH_LENGTH, "Create Directory", 3 /* fileserver */, + ncp_0x160a_request, NULL, ncp_0x160a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160a_req }, + + { 0x16, 0x0b, SUBFUNC_WITH_LENGTH, "Delete Directory", 3 /* fileserver */, + ncp_0x160b_request, NULL, ncp_0x160b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160b_req }, + + { 0x16, 0x0c, SUBFUNC_WITH_LENGTH, "Scan Directory for Trustees", 3 /* fileserver */, + ncp_0x160c_request, ncp_0x160c_reply, ncp_0x160c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160c_req }, + + { 0x16, 0x0d, SUBFUNC_WITH_LENGTH, "Add Trustee to Directory", 3 /* fileserver */, + ncp_0x160d_request, NULL, ncp_0x160d_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160d_req }, + + { 0x16, 0x0e, SUBFUNC_WITH_LENGTH, "Delete Trustee from Directory", 3 /* fileserver */, + ncp_0x160e_request, NULL, ncp_0x160e_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160e_req }, + + { 0x16, 0x0f, SUBFUNC_WITH_LENGTH, "Rename Directory", 3 /* fileserver */, + ncp_0x160f_request, NULL, ncp_0x160f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x160f_req }, + + { 0x16, 0x10, SUBFUNC_WITH_LENGTH, "Purge Erased Files", 0 /* file */, + NULL, NULL, ncp_0x1610_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x11, SUBFUNC_WITH_LENGTH, "Recover Erased File", 3 /* fileserver */, + ncp_0x1601_request, ncp_0x1611_reply, ncp_0x1611_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1611_req }, + + { 0x16, 0x12, SUBFUNC_WITH_LENGTH, "Alloc Permanent Directory Handle", 3 /* fileserver */, + ncp_0x1612_request, ncp_0x1612_reply, ncp_0x1612_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1612_req }, + + { 0x16, 0x13, SUBFUNC_WITH_LENGTH, "Alloc Temporary Directory Handle", 3 /* fileserver */, + ncp_0x1612_request, ncp_0x1612_reply, ncp_0x1613_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1613_req }, + + { 0x16, 0x14, SUBFUNC_WITH_LENGTH, "Deallocate Directory Handle", 3 /* fileserver */, + ncp_0x1601_request, NULL, ncp_0x1614_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1614_req }, + + { 0x16, 0x15, SUBFUNC_WITH_LENGTH, "Get Volume Info with Handle", 0 /* file */, + ncp_0x1601_request, ncp_0x12_reply, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1615_req }, + + { 0x16, 0x16, SUBFUNC_WITH_LENGTH, "Alloc Special Temporary Directory Handle", 3 /* fileserver */, + ncp_0x1612_request, ncp_0x1612_reply, ncp_0x1613_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1616_req }, + + { 0x16, 0x17, SUBFUNC_WITH_LENGTH, "Extract a Base Handle", 3 /* fileserver */, + ncp_0x1601_request, ncp_0x1617_reply, ncp_0x1617_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1617_req }, + + { 0x16, 0x18, SUBFUNC_WITH_LENGTH, "Restore an Extracted Base Handle", 3 /* fileserver */, + ncp_0x1617_reply, ncp_0x1612_reply, ncp_0x1618_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x19, SUBFUNC_WITH_LENGTH, "Set Directory Information", 3 /* fileserver */, + ncp_0x1619_request, NULL, ncp_0x1619_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1619_req }, + + { 0x16, 0x1a, SUBFUNC_WITH_LENGTH, "Get Path Name of a Volume-Directory Number Pair", 3 /* fileserver */, + ncp_0x161a_request, ncp_0x1601_reply, ncp_0x161a_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x1b, SUBFUNC_WITH_LENGTH, "Scan Salvageable Files", 3 /* fileserver */, + ncp_0x161b_request, ncp_0x161b_reply, ncp_0x161b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x1c, SUBFUNC_WITH_LENGTH, "Recover Salvageable File", 3 /* fileserver */, + ncp_0x161c_request, NULL, ncp_0x161c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x161c_req }, + + { 0x16, 0x1d, SUBFUNC_WITH_LENGTH, "Purge Salvageable File", 3 /* fileserver */, + ncp_0x161b_request, NULL, ncp_0x161d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x1e, SUBFUNC_WITH_LENGTH, "Scan a Directory", 3 /* fileserver */, + ncp_0x161e_request, ncp_0x161e_reply, ncp_0x161d_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x161e_req }, + + { 0x16, 0x1f, SUBFUNC_WITH_LENGTH, "Get Directory Entry", 3 /* fileserver */, + ncp_0x1601_request, ncp_0x161f_reply, ncp_0x161f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x20, SUBFUNC_WITH_LENGTH, "Scan Volume's User Disk Restrictions", 3 /* fileserver */, + ncp_0x1620_request, ncp_0x1620_reply, ncp_0x1620_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x21, SUBFUNC_WITH_LENGTH, "Add User Disk Space Restriction", 3 /* fileserver */, + ncp_0x1621_request, NULL, ncp_0x1621_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x22, SUBFUNC_WITH_LENGTH, "Remove User Disk Space Restrictions", 3 /* fileserver */, + ncp_0x1622_request, NULL, ncp_0x1622_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x23, SUBFUNC_WITH_LENGTH, "Get Directory Disk Space Restriction", 3 /* fileserver */, + ncp_0x1601_request, ncp_0x1623_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x24, SUBFUNC_WITH_LENGTH, "Set Directory Disk Space Restriction", 3 /* fileserver */, + ncp_0x1624_request, NULL, ncp_0x1624_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x25, SUBFUNC_WITH_LENGTH, "Set Directory Entry Information", 3 /* fileserver */, + ncp_0x1625_request, NULL, ncp_0x1625_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x26, SUBFUNC_WITH_LENGTH, "Scan File or Directory for Extended Trustees", 3 /* fileserver */, + ncp_0x1626_request, ncp_0x1626_reply, ncp_0x1626_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1626_req }, + + { 0x16, 0x27, SUBFUNC_WITH_LENGTH, "Add Extended Trustee to Directory or File", 3 /* fileserver */, + ncp_0x1627_request, NULL, ncp_0x1627_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1627_req }, + + { 0x16, 0x28, SUBFUNC_WITH_LENGTH, "Scan Directory Disk Space", 3 /* fileserver */, + ncp_0x1628_request, ncp_0x1628_reply, ncp_0x1628_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1628_req }, + + { 0x16, 0x29, SUBFUNC_WITH_LENGTH, "Get Object Disk Usage and Restrictions", 3 /* fileserver */, + ncp_0x1622_request, ncp_0x1629_reply, ncp_0x1629_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x2a, SUBFUNC_WITH_LENGTH, "Get Effective Rights for Directory Entry", 3 /* fileserver */, + ncp_0x162a_request, ncp_0x162a_reply, ncp_0x162a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x162a_req }, + + { 0x16, 0x2b, SUBFUNC_WITH_LENGTH, "Remove Extended Trustee from Dir or File", 3 /* fileserver */, + ncp_0x162b_request, NULL, ncp_0x162b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x162b_req }, + + { 0x16, 0x2c, SUBFUNC_WITH_LENGTH, "Get Volume and Purge Information", 0 /* file */, + ncp_0x12_request, ncp_0x162c_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x162c_req }, + + { 0x16, 0x2d, SUBFUNC_WITH_LENGTH, "Get Directory Information", 0 /* file */, + ncp_0x1601_request, ncp_0x162d_reply, ncp_0x1614_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x2e, SUBFUNC_WITH_LENGTH, "Rename Or Move", 0 /* file */, + ncp_0x162e_request, NULL, ncp_0x162e_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x162e_req }, + + { 0x16, 0x2f, SUBFUNC_WITH_LENGTH, "Get Name Space Information", 0 /* file */, + ncp_0x12_request, ncp_0x162f_reply, ncp_0x162f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x162f_req }, + + { 0x16, 0x30, SUBFUNC_WITH_LENGTH, "Get Name Space Directory Entry", 0 /* file */, + ncp_0x1630_request, ncp_0x1630_reply, ncp_0x1630_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x16, 0x31, SUBFUNC_WITH_LENGTH, "Open Data Stream", 0 /* file */, + ncp_0x1631_request, ncp_0x1631_reply, ncp_0x1631_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1631_req }, + + { 0x16, 0x32, SUBFUNC_WITH_LENGTH, "Get Object Effective Rights for Directory Entry", 0 /* file */, + ncp_0x1632_request, ncp_0x1632_reply, ncp_0x1632_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1632_req }, + + { 0x16, 0x33, SUBFUNC_WITH_LENGTH, "Get Extended Volume Information", 0 /* file */, + ncp_0x12_request, ncp_0x1633_reply, ncp_0x1633_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1633_req }, + + { 0x16, 0x34, SUBFUNC_WITH_LENGTH, "Get Mount Volume List", 0 /* file */, + ncp_0x1634_request, ncp_0x1634_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x00, SUBFUNC_WITH_LENGTH, "Login User", 0 /* file */, + ncp_0x1700_request, NULL, ncp_0x1700_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1700_req }, + + { 0x17, 0x01, SUBFUNC_WITH_LENGTH, "Change User Password", 0 /* file */, + ncp_0x1701_request, NULL, ncp_0x1701_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1701_req }, + + { 0x17, 0x02, SUBFUNC_WITH_LENGTH, "Get User Connection List", 0 /* file */, + ncp_0x1702_request, ncp_0x1702_reply, ncp_0x1702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1702_req }, + + { 0x17, 0x03, SUBFUNC_WITH_LENGTH, "Get User Number", 0 /* file */, + ncp_0x1702_request, ncp_0x110a_reply, ncp_0x1702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1703_req }, + + { 0x17, 0x05, SUBFUNC_WITH_LENGTH, "Get Station's Logged Info", 0 /* file */, + ncp_0x1705_request, ncp_0x1705_reply, ncp_0x1705_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1705_req }, + + { 0x17, 0x07, SUBFUNC_WITH_LENGTH, "Get Group Number", 0 /* file */, + ncp_0x110a_reply, ncp_0x1707_reply, ncp_0x1707_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x0c, SUBFUNC_WITH_LENGTH, "Verify Serialization", 0 /* file */, + ncp_0x170c_request, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x0d, SUBFUNC_WITH_LENGTH, "Log Network Message", 0 /* file */, + ncp_0x1501_reply, NULL, ncp_0x170d_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x170d_req }, + + { 0x17, 0x0e, SUBFUNC_WITH_LENGTH, "Get Disk Utilization", 0 /* file */, + ncp_0x170e_request, ncp_0x170e_reply, ncp_0x170e_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x0f, SUBFUNC_WITH_LENGTH, "Scan File Information", 0 /* file */, + ncp_0x170f_request, ncp_0x170f_reply, ncp_0x170f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x170f_req }, + + { 0x17, 0x10, SUBFUNC_WITH_LENGTH, "Set File Information", 0 /* file */, + ncp_0x1710_request, NULL, ncp_0x1710_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1710_req }, + + { 0x17, 0x11, SUBFUNC_WITH_LENGTH, "Get File Server Information", 3 /* fileserver */, + NULL, ncp_0x1711_reply, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x12, SUBFUNC_WITH_LENGTH, "Get Network Serial Number", 3 /* fileserver */, + NULL, ncp_0x1712_reply, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x13, SUBFUNC_WITH_LENGTH, "Get Internet Address", 3 /* fileserver */, + ncp_0x1705_request, ncp_0x1713_reply, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1713_req }, + + { 0x17, 0x14, SUBFUNC_WITH_LENGTH, "Login Object", 5 /* bindery */, + ncp_0x1714_request, NULL, ncp_0x1714_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1714_req }, + + { 0x17, 0x15, SUBFUNC_WITH_LENGTH, "Get Object Connection List", 5 /* bindery */, + ncp_0x1715_request, ncp_0x1702_reply, ncp_0x1702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1715_req }, + + { 0x17, 0x16, SUBFUNC_WITH_LENGTH, "Get Station's Logged Info", 5 /* bindery */, + ncp_0x1705_request, ncp_0x1716_reply, ncp_0x1716_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x17, SUBFUNC_WITH_LENGTH, "Get Login Key", 5 /* bindery */, + NULL, ncp_0x1717_reply, ncp_0x1717_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x18, SUBFUNC_WITH_LENGTH, "Keyed Object Login", 5 /* bindery */, + ncp_0x1718_request, NULL, ncp_0x1718_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1718_req }, + + { 0x17, 0x1a, SUBFUNC_WITH_LENGTH, "Get Internet Address", 3 /* fileserver */, + ncp_0x1705_request, ncp_0x171a_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x1b, SUBFUNC_WITH_LENGTH, "Get Object Connection List", 5 /* bindery */, + ncp_0x171b_request, ncp_0x171b_reply, ncp_0x1702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x171b_req }, + + { 0x17, 0x1c, SUBFUNC_WITH_LENGTH, "Get Station's Logged Info", 2 /* connection */, + ncp_0x171c_request, ncp_0x1716_reply, ncp_0x171c_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x1d, SUBFUNC_WITH_LENGTH, "Change Connection State", 2 /* connection */, + ncp_0x171d_request, NULL, ncp_0x171d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x1e, SUBFUNC_WITH_LENGTH, "Set Watchdog Delay Interval", 2 /* connection */, + ncp_0x171e_request, NULL, ncp_0x171e_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x1f, SUBFUNC_WITH_LENGTH, "Get Connection List From Object", 5 /* bindery */, + ncp_0x171f_request, ncp_0x1702_reply, ncp_0x1702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x20, SUBFUNC_WITH_LENGTH, "Scan Bindery Object (List)", 5 /* bindery */, + ncp_0x1720_request, ncp_0x1720_reply, ncp_0x1720_errors, ncp_0x1720_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x1720_req }, + + { 0x17, 0x21, SUBFUNC_WITH_LENGTH, "Generate GUIDs", 6 /* nds */, + ncp_0x1721_request, ncp_0x1721_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x32, SUBFUNC_WITH_LENGTH, "Create Bindery Object", 5 /* bindery */, + ncp_0x1732_request, NULL, ncp_0x1732_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1732_req }, + + { 0x17, 0x33, SUBFUNC_WITH_LENGTH, "Delete Bindery Object", 5 /* bindery */, + ncp_0x1733_request, NULL, ncp_0x1733_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1733_req }, + + { 0x17, 0x34, SUBFUNC_WITH_LENGTH, "Rename Bindery Object", 5 /* bindery */, + ncp_0x1734_request, NULL, ncp_0x1734_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1734_req }, + + { 0x17, 0x35, SUBFUNC_WITH_LENGTH, "Get Bindery Object ID", 5 /* bindery */, + ncp_0x1733_request, ncp_0x1707_reply, ncp_0x1735_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1735_req }, + + { 0x17, 0x36, SUBFUNC_WITH_LENGTH, "Get Bindery Object Name", 5 /* bindery */, + ncp_0x110a_reply, ncp_0x1707_reply, ncp_0x1736_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x37, SUBFUNC_WITH_LENGTH, "Scan Bindery Object", 5 /* bindery */, + ncp_0x1737_request, ncp_0x1737_reply, ncp_0x1720_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1737_req }, + + { 0x17, 0x38, SUBFUNC_WITH_LENGTH, "Change Bindery Object Security", 5 /* bindery */, + ncp_0x1738_request, NULL, ncp_0x1738_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1738_req }, + + { 0x17, 0x39, SUBFUNC_WITH_LENGTH, "Create Property", 5 /* bindery */, + ncp_0x1739_request, NULL, ncp_0x1739_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1739_req }, + + { 0x17, 0x3a, SUBFUNC_WITH_LENGTH, "Delete Property", 5 /* bindery */, + ncp_0x173a_request, NULL, ncp_0x173a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173a_req }, + + { 0x17, 0x3b, SUBFUNC_WITH_LENGTH, "Change Property Security", 5 /* bindery */, + ncp_0x173b_request, NULL, ncp_0x173b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173b_req }, + + { 0x17, 0x3c, SUBFUNC_WITH_LENGTH, "Scan Property", 5 /* bindery */, + ncp_0x173c_request, ncp_0x173c_reply, ncp_0x173b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173c_req }, + + { 0x17, 0x3d, SUBFUNC_WITH_LENGTH, "Read Property Value", 5 /* bindery */, + ncp_0x173d_request, ncp_0x173d_reply, ncp_0x173d_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173d_req }, + + { 0x17, 0x3e, SUBFUNC_WITH_LENGTH, "Write Property Value", 5 /* bindery */, + ncp_0x173e_request, NULL, ncp_0x173e_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173e_req }, + + { 0x17, 0x3f, SUBFUNC_WITH_LENGTH, "Verify Bindery Object Password", 5 /* bindery */, + ncp_0x173f_request, NULL, ncp_0x173f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x173f_req }, + + { 0x17, 0x40, SUBFUNC_WITH_LENGTH, "Change Bindery Object Password", 5 /* bindery */, + ncp_0x1740_request, NULL, ncp_0x1740_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1740_req }, + + { 0x17, 0x41, SUBFUNC_WITH_LENGTH, "Add Bindery Object To Set", 5 /* bindery */, + ncp_0x1741_request, NULL, ncp_0x1741_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1741_req }, + + { 0x17, 0x42, SUBFUNC_WITH_LENGTH, "Delete Bindery Object From Set", 5 /* bindery */, + ncp_0x1741_request, NULL, ncp_0x1742_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1742_req }, + + { 0x17, 0x43, SUBFUNC_WITH_LENGTH, "Is Bindery Object In Set", 5 /* bindery */, + ncp_0x1741_request, NULL, ncp_0x1743_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1743_req }, + + { 0x17, 0x44, SUBFUNC_WITH_LENGTH, "Close Bindery", 5 /* bindery */, + NULL, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x45, SUBFUNC_WITH_LENGTH, "Open Bindery", 5 /* bindery */, + NULL, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x46, SUBFUNC_WITH_LENGTH, "Get Bindery Access Level", 5 /* bindery */, + NULL, ncp_0x1746_reply, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x47, SUBFUNC_WITH_LENGTH, "Scan Bindery Object Trustee Paths", 5 /* bindery */, + ncp_0x1747_request, ncp_0x1747_reply, ncp_0x1747_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x48, SUBFUNC_WITH_LENGTH, "Get Bindery Object Access Level", 5 /* bindery */, + ncp_0x110a_reply, ncp_0x1748_reply, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x49, SUBFUNC_WITH_LENGTH, "Is Calling Station a Manager", 5 /* bindery */, + NULL, NULL, ncp_0x1749_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x4a, SUBFUNC_WITH_LENGTH, "Keyed Verify Password", 5 /* bindery */, + ncp_0x1718_request, NULL, ncp_0x174a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x174a_req }, + + { 0x17, 0x4b, SUBFUNC_WITH_LENGTH, "Keyed Change Password", 5 /* bindery */, + ncp_0x174b_request, NULL, ncp_0x174a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x174b_req }, + + { 0x17, 0x4c, SUBFUNC_WITH_LENGTH, "List Relations Of an Object", 5 /* bindery */, + ncp_0x174c_request, ncp_0x174c_reply, ncp_0x174c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x174c_req }, + + { 0x17, 0x64, SUBFUNC_WITH_LENGTH, "Create Queue", 1 /* qms */, + ncp_0x1764_request, ncp_0x1764_reply, ncp_0x1764_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1764_req }, + + { 0x17, 0x65, SUBFUNC_WITH_LENGTH, "Destroy Queue", 1 /* qms */, + ncp_0x1764_reply, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x66, SUBFUNC_WITH_LENGTH, "Read Queue Current Status", 1 /* qms */, + ncp_0x1764_reply, ncp_0x1766_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x67, SUBFUNC_WITH_LENGTH, "Set Queue Current Status", 1 /* qms */, + ncp_0x1767_request, NULL, ncp_0x1767_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x68, SUBFUNC_WITH_LENGTH, "Create Queue Job And File", 1 /* qms */, + ncp_0x1768_request, ncp_0x1768_reply, ncp_0x1767_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x69, SUBFUNC_WITH_LENGTH, "Close File And Start Queue Job", 1 /* qms */, + ncp_0x1769_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6a, SUBFUNC_WITH_LENGTH, "Remove Job From Queue", 1 /* qms */, + ncp_0x1769_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6b, SUBFUNC_WITH_LENGTH, "Get Queue Job List", 1 /* qms */, + ncp_0x1764_reply, ncp_0x176b_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6c, SUBFUNC_WITH_LENGTH, "Read Queue Job Entry", 1 /* qms */, + ncp_0x1769_request, ncp_0x176c_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6d, SUBFUNC_WITH_LENGTH, "Change Queue Job Entry", 1 /* qms */, + ncp_0x176c_reply, NULL, ncp_0x176d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6e, SUBFUNC_WITH_LENGTH, "Change Queue Job Position", 1 /* qms */, + ncp_0x176e_request, NULL, ncp_0x176e_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x6f, SUBFUNC_WITH_LENGTH, "Attach Queue Server To Queue", 1 /* qms */, + ncp_0x1764_reply, NULL, ncp_0x176f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x70, SUBFUNC_WITH_LENGTH, "Detach Queue Server From Queue", 1 /* qms */, + ncp_0x1764_reply, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x71, SUBFUNC_WITH_LENGTH, "Service Queue Job", 1 /* qms */, + ncp_0x1771_request, ncp_0x1768_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x72, SUBFUNC_WITH_LENGTH, "Finish Servicing Queue Job", 1 /* qms */, + ncp_0x1772_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x73, SUBFUNC_WITH_LENGTH, "Abort Servicing Queue Job", 1 /* qms */, + ncp_0x1769_request, NULL, ncp_0x176d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x74, SUBFUNC_WITH_LENGTH, "Change To Client Rights", 1 /* qms */, + ncp_0x1769_request, NULL, ncp_0x176d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x75, SUBFUNC_WITH_LENGTH, "Restore Queue Server Rights", 1 /* qms */, + NULL, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x76, SUBFUNC_WITH_LENGTH, "Read Queue Server Current Status", 1 /* qms */, + ncp_0x1776_request, ncp_0x1776_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x77, SUBFUNC_WITH_LENGTH, "Set Queue Server Current Status", 1 /* qms */, + ncp_0x1777_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x78, SUBFUNC_WITH_LENGTH, "Get Queue Job File Size", 1 /* qms */, + ncp_0x1769_request, ncp_0x1778_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x79, SUBFUNC_WITH_LENGTH, "Create Queue Job And File", 1 /* qms */, + ncp_0x1779_request, ncp_0x1779_reply, ncp_0x1767_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7a, SUBFUNC_WITH_LENGTH, "Read Queue Job Entry", 1 /* qms */, + ncp_0x177a_request, ncp_0x177a_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7b, SUBFUNC_WITH_LENGTH, "Change Queue Job Entry", 1 /* qms */, + ncp_0x1768_request, NULL, ncp_0x1767_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7c, SUBFUNC_WITH_LENGTH, "Service Queue Job", 1 /* qms */, + ncp_0x177c_request, ncp_0x1779_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7d, SUBFUNC_WITH_LENGTH, "Read Queue Current Status", 1 /* qms */, + ncp_0x1764_reply, ncp_0x177d_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7e, SUBFUNC_WITH_LENGTH, "Set Queue Current Status", 1 /* qms */, + ncp_0x1767_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x7f, SUBFUNC_WITH_LENGTH, "Close File And Start Queue Job", 1 /* qms */, + ncp_0x177a_request, NULL, ncp_0x1767_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x80, SUBFUNC_WITH_LENGTH, "Remove Job From Queue", 1 /* qms */, + ncp_0x177a_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x81, SUBFUNC_WITH_LENGTH, "Get Queue Job List", 1 /* qms */, + ncp_0x177a_request, ncp_0x1781_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x82, SUBFUNC_WITH_LENGTH, "Change Job Priority", 1 /* qms */, + ncp_0x1782_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x83, SUBFUNC_WITH_LENGTH, "Finish Servicing Queue Job", 1 /* qms */, + ncp_0x1783_request, NULL, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x84, SUBFUNC_WITH_LENGTH, "Abort Servicing Queue Job", 1 /* qms */, + ncp_0x177a_request, NULL, ncp_0x176d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x85, SUBFUNC_WITH_LENGTH, "Change To Client Rights", 1 /* qms */, + ncp_0x177a_request, NULL, ncp_0x176d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x86, SUBFUNC_WITH_LENGTH, "Read Queue Server Current Status", 1 /* qms */, + ncp_0x1786_request, ncp_0x1776_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x87, SUBFUNC_WITH_LENGTH, "Get Queue Job File Size", 1 /* qms */, + ncp_0x177a_request, ncp_0x1778_reply, ncp_0x1765_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x88, SUBFUNC_WITH_LENGTH, "Move Queue Job From Src Q to Dst Q", 1 /* qms */, + ncp_0x1788_request, ncp_0x1788_reply, ncp_0x1788_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x89, SUBFUNC_WITH_LENGTH, "Get Queue Jobs From Form List", 1 /* qms */, + ncp_0x1789_request, ncp_0x1789_reply, ncp_0x1788_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x8a, SUBFUNC_WITH_LENGTH, "Service Queue Job By Form List", 1 /* qms */, + ncp_0x1789_request, ncp_0x1779_reply, ncp_0x1788_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0x96, SUBFUNC_WITH_LENGTH, "Get Current Account Status", 7 /* accounting */, + ncp_0x1733_request, ncp_0x1796_reply, ncp_0x1796_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1796_req }, + + { 0x17, 0x97, SUBFUNC_WITH_LENGTH, "Submit Account Charge", 7 /* accounting */, + ncp_0x1797_request, NULL, ncp_0x1797_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1797_req }, + + { 0x17, 0x98, SUBFUNC_WITH_LENGTH, "Submit Account Hold", 7 /* accounting */, + ncp_0x1798_request, NULL, ncp_0x1797_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1798_req }, + + { 0x17, 0x99, SUBFUNC_WITH_LENGTH, "Submit Account Note", 7 /* accounting */, + ncp_0x1799_request, NULL, ncp_0x1799_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1799_req }, + + { 0x17, 0xc8, SUBFUNC_WITH_LENGTH, "Check Console Privileges", 8 /* stats */, + NULL, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xc9, SUBFUNC_WITH_LENGTH, "Get File Server Description Strings", 8 /* stats */, + NULL, ncp_0x17c9_reply, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xca, SUBFUNC_WITH_LENGTH, "Set File Server Date And Time", 8 /* stats */, + ncp_0x17ca_request, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xcb, SUBFUNC_WITH_LENGTH, "Disable File Server Login", 8 /* stats */, + NULL, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xcc, SUBFUNC_WITH_LENGTH, "Enable File Server Login", 8 /* stats */, + NULL, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xcd, SUBFUNC_WITH_LENGTH, "Get File Server Login Status", 8 /* stats */, + NULL, ncp_0x17cd_reply, ncp_0x17cd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xcf, SUBFUNC_WITH_LENGTH, "Disable Transaction Tracking", 8 /* stats */, + NULL, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd0, SUBFUNC_WITH_LENGTH, "Enable Transaction Tracking", 8 /* stats */, + NULL, NULL, ncp_0x17c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd1, SUBFUNC_WITH_LENGTH, "Send Console Broadcast", 8 /* stats */, + ncp_0x17d1_request, NULL, ncp_0x17d1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17d1_req }, + + { 0x17, 0xd2, SUBFUNC_WITH_LENGTH, "Clear Connection Number", 8 /* stats */, + ncp_0x17d2_request, NULL, ncp_0x17d1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17d2_req }, + + { 0x17, 0xd3, SUBFUNC_WITH_LENGTH, "Down File Server", 8 /* stats */, + ncp_0x17d3_request, NULL, ncp_0x17d3_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd4, SUBFUNC_WITH_LENGTH, "Get File System Statistics", 8 /* stats */, + NULL, ncp_0x17d4_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd5, SUBFUNC_WITH_LENGTH, "Get Transaction Tracking Statistics", 8 /* stats */, + ncp_0x17d5_request, ncp_0x17d5_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd6, SUBFUNC_WITH_LENGTH, "Read Disk Cache Statistics", 8 /* stats */, + NULL, ncp_0x17d6_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd7, SUBFUNC_WITH_LENGTH, "Get Drive Mapping Table", 8 /* stats */, + NULL, ncp_0x17d7_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd8, SUBFUNC_WITH_LENGTH, "Read Physical Disk Statistics", 8 /* stats */, + ncp_0x17d8_request, ncp_0x17d8_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xd9, SUBFUNC_WITH_LENGTH, "Get Disk Channel Statistics", 8 /* stats */, + ncp_0x17d9_request, ncp_0x17d9_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xdb, SUBFUNC_WITH_LENGTH, "Get Connection's Open Files", 0 /* file */, + ncp_0x17db_request, ncp_0x17db_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xdc, SUBFUNC_WITH_LENGTH, "Get Connection Using A File", 0 /* file */, + ncp_0x17dc_request, ncp_0x17dc_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17dc_req }, + + { 0x17, 0xdd, SUBFUNC_WITH_LENGTH, "Get Physical Record Locks By Connection And File", 0 /* file */, + ncp_0x17dd_request, ncp_0x17dd_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17dd_req }, + + { 0x17, 0xde, SUBFUNC_WITH_LENGTH, "Get Physical Record Locks By File", 0 /* file */, + ncp_0x17de_request, ncp_0x17de_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17de_req }, + + { 0x17, 0xdf, SUBFUNC_WITH_LENGTH, "Get Logical Records By Connection", 0 /* file */, + ncp_0x17df_request, ncp_0x17df_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe0, SUBFUNC_WITH_LENGTH, "Get Logical Record Information", 0 /* file */, + ncp_0x17e0_request, ncp_0x17e0_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17e0_req }, + + { 0x17, 0xe1, SUBFUNC_WITH_LENGTH, "Get Connection's Semaphores", 0 /* file */, + ncp_0x17e1_request, ncp_0x17e1_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe2, SUBFUNC_WITH_LENGTH, "Get Semaphore Information", 0 /* file */, + ncp_0x17d5_request, ncp_0x17e2_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17e2_req }, + + { 0x17, 0xe3, SUBFUNC_WITH_LENGTH, "Get LAN Driver Configuration Information", 8 /* stats */, + ncp_0x17e3_request, ncp_0x17e3_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe5, SUBFUNC_WITH_LENGTH, "Get Connection Usage Statistics", 8 /* stats */, + ncp_0x17e5_request, ncp_0x17e5_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe6, SUBFUNC_WITH_LENGTH, "Get Object's Remaining Disk Space", 8 /* stats */, + ncp_0x110a_reply, ncp_0x17e6_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe7, SUBFUNC_WITH_LENGTH, "Get File Server LAN I/O Statistics", 8 /* stats */, + NULL, ncp_0x17e7_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe8, SUBFUNC_WITH_LENGTH, "Get File Server Misc Information", 8 /* stats */, + NULL, ncp_0x17e8_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xe9, SUBFUNC_WITH_LENGTH, "Get Volume Information", 8 /* stats */, + ncp_0x12_request, ncp_0x17e9_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17e9_req }, + + { 0x17, 0xea, SUBFUNC_WITH_LENGTH, "Get Connection's Task Information", 8 /* stats */, + ncp_0x17e5_request, ncp_0x17ea_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xeb, SUBFUNC_WITH_LENGTH, "Get Connection's Open Files", 0 /* file */, + ncp_0x17e1_request, ncp_0x17eb_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xec, SUBFUNC_WITH_LENGTH, "Get Connection Using A File", 0 /* file */, + ncp_0x17ec_request, ncp_0x17ec_reply, ncp_0x17d4_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xed, SUBFUNC_WITH_LENGTH, "Get Physical Record Locks By Connection And File", 0 /* file */, + ncp_0x17ed_request, ncp_0x17ed_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xee, SUBFUNC_WITH_LENGTH, "Get Physical Record Locks By File", 0 /* file */, + ncp_0x17ec_request, ncp_0x17ee_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xef, SUBFUNC_WITH_LENGTH, "Get Logical Records By Connection", 0 /* file */, + ncp_0x17ef_request, ncp_0x17ef_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xf0, SUBFUNC_WITH_LENGTH, "Get Logical Record Information (old)", 0 /* file */, + ncp_0x17e0_request, ncp_0x17f0_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xf1, SUBFUNC_WITH_LENGTH, "Get Connection's Semaphores", 0 /* file */, + ncp_0x17e1_request, ncp_0x17f1_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xf2, SUBFUNC_WITH_LENGTH, "Get Semaphore Information", 0 /* file */, + ncp_0x17d5_request, ncp_0x17f2_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17f2_req }, + + { 0x17, 0xf3, SUBFUNC_WITH_LENGTH, "Map Directory Number to Path", 0 /* file */, + ncp_0x17f3_request, ncp_0x1601_reply, ncp_0x17f3_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x17, 0xf4, SUBFUNC_WITH_LENGTH, "Convert Path to Dir Entry", 0 /* file */, + ncp_0x162a_request, ncp_0x17f4_reply, ncp_0x17dd_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17f4_req }, + + { 0x17, 0xfd, SUBFUNC_WITH_LENGTH, "Send Console Broadcast", 8 /* stats */, + ncp_0x17fd_request, NULL, ncp_0x17d1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x17fd_req }, + + { 0x17, 0xfe, SUBFUNC_WITH_LENGTH, "Clear Connection Number", 8 /* stats */, + ncp_0x17fe_request, NULL, ncp_0x17d1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x18, 0x00, NO_SUBFUNC, "End of Job", 2 /* connection */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x19, 0x00, NO_SUBFUNC, "Logout", 2 /* connection */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x1a, 0x00, NO_SUBFUNC, "Log Physical Record", 0 /* file */, + ncp_0x1a_request, NULL, ncp_0x1a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1a_req }, + + { 0x1b, 0x00, NO_SUBFUNC, "Lock Physical Record Set", 0 /* file */, + ncp_0x1b_request, NULL, ncp_0x1a_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x1c, 0x00, NO_SUBFUNC, "Release Physical Record", 0 /* file */, + ncp_0x1c_request, NULL, ncp_0x1c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1c_req }, + + { 0x1d, 0x00, NO_SUBFUNC, "Release Physical Record Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1c_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x1e, 0x00, NO_SUBFUNC, "Clear Physical Record", 0 /* file */, + ncp_0x1e_request, NULL, ncp_0x1c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x1e_req }, + + { 0x1f, 0x00, NO_SUBFUNC, "Clear Physical Record Set", 0 /* file */, + ncp_0x6_request, NULL, ncp_0x1c_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x20, 0x00, SUBFUNC_NO_LENGTH, "Open Semaphore", 0 /* file */, + ncp_0x2000_request, ncp_0x2000_reply, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x20, 0x01, SUBFUNC_NO_LENGTH, "Examine Semaphore", 0 /* file */, + ncp_0x2001_request, ncp_0x2001_reply, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x20, 0x02, SUBFUNC_NO_LENGTH, "Wait On Semaphore", 0 /* file */, + ncp_0x2002_request, NULL, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x20, 0x03, SUBFUNC_NO_LENGTH, "Signal Semaphore", 0 /* file */, + ncp_0x2001_request, NULL, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x20, 0x04, SUBFUNC_NO_LENGTH, "Close Semaphore", 0 /* file */, + ncp_0x2001_request, NULL, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x21, 0x00, NO_SUBFUNC, "Negotiate Buffer Size", 2 /* connection */, + ncp_0x21_request, ncp_0x21_request, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x00, SUBFUNC_NO_LENGTH, "TTS Is Available", 9 /* tts */, + NULL, NULL, ncp_0x2200_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x01, SUBFUNC_NO_LENGTH, "TTS Begin Transaction", 9 /* tts */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x02, SUBFUNC_NO_LENGTH, "TTS End Transaction", 9 /* tts */, + NULL, ncp_0x2202_reply, ncp_0x2202_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x03, SUBFUNC_NO_LENGTH, "TTS Abort Transaction", 9 /* tts */, + NULL, NULL, ncp_0x2203_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x04, SUBFUNC_NO_LENGTH, "TTS Transaction Status", 9 /* tts */, + ncp_0x2202_reply, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x05, SUBFUNC_NO_LENGTH, "TTS Get Application Thresholds", 9 /* tts */, + NULL, ncp_0x2205_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x06, SUBFUNC_NO_LENGTH, "TTS Set Application Thresholds", 9 /* tts */, + ncp_0x2205_reply, NULL, ncp_0x1711_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x07, SUBFUNC_NO_LENGTH, "TTS Get Workstation Thresholds", 9 /* tts */, + ncp_0x2205_reply, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x08, SUBFUNC_NO_LENGTH, "TTS Set Workstation Thresholds", 9 /* tts */, + ncp_0x2205_reply, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x09, SUBFUNC_NO_LENGTH, "TTS Get Transaction Bits", 9 /* tts */, + NULL, ncp_0x2209_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x22, 0x0a, SUBFUNC_NO_LENGTH, "TTS Set Transaction Bits", 9 /* tts */, + ncp_0x2209_reply, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x23, 0x01, SUBFUNC_WITH_LENGTH, "AFP Create Directory", 10 /* afp */, + ncp_0x2301_request, ncp_0x2301_reply, ncp_0x2301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2301_req }, + + { 0x23, 0x02, SUBFUNC_WITH_LENGTH, "AFP Create File", 10 /* afp */, + ncp_0x2302_request, ncp_0x2301_reply, ncp_0x2302_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2302_req }, + + { 0x23, 0x03, SUBFUNC_WITH_LENGTH, "AFP Delete", 10 /* afp */, + ncp_0x2303_request, NULL, ncp_0x2303_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2303_req }, + + { 0x23, 0x04, SUBFUNC_WITH_LENGTH, "AFP Get Entry ID From Name", 10 /* afp */, + ncp_0x2303_request, ncp_0x2304_reply, ncp_0x2304_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2304_req }, + + { 0x23, 0x05, SUBFUNC_WITH_LENGTH, "AFP Get File Information", 10 /* afp */, + ncp_0x2305_request, ncp_0x2305_reply, ncp_0x2304_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2305_req }, + + { 0x23, 0x06, SUBFUNC_WITH_LENGTH, "AFP Get Entry ID From NetWare Handle", 10 /* afp */, + ncp_0x2306_request, ncp_0x2306_reply, ncp_0x2306_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x23, 0x07, SUBFUNC_WITH_LENGTH, "AFP Rename", 10 /* afp */, + ncp_0x2307_request, NULL, ncp_0x2307_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2307_req }, + + { 0x23, 0x08, SUBFUNC_WITH_LENGTH, "AFP Open File Fork", 10 /* afp */, + ncp_0x2308_request, ncp_0x2308_reply, ncp_0x2308_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2308_req }, + + { 0x23, 0x09, SUBFUNC_WITH_LENGTH, "AFP Set File Information", 10 /* afp */, + ncp_0x2309_request, NULL, ncp_0x2309_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2309_req }, + + { 0x23, 0x0a, SUBFUNC_WITH_LENGTH, "AFP Scan File Information", 10 /* afp */, + ncp_0x230a_request, ncp_0x230a_reply, ncp_0x230a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230a_req }, + + { 0x23, 0x0b, SUBFUNC_WITH_LENGTH, "AFP Alloc Temporary Directory Handle", 10 /* afp */, + ncp_0x230b_request, ncp_0x1612_reply, ncp_0x230b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230b_req }, + + { 0x23, 0x0c, SUBFUNC_WITH_LENGTH, "AFP Get Entry ID From Path Name", 10 /* afp */, + ncp_0x162a_request, ncp_0x230c_reply, ncp_0x230c_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230c_req }, + + { 0x23, 0x0d, SUBFUNC_WITH_LENGTH, "AFP 2.0 Create Directory", 10 /* afp */, + ncp_0x230d_request, ncp_0x2301_reply, ncp_0x230d_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230d_req }, + + { 0x23, 0x0e, SUBFUNC_WITH_LENGTH, "AFP 2.0 Create File", 10 /* afp */, + ncp_0x230e_request, ncp_0x2301_reply, ncp_0x230e_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230e_req }, + + { 0x23, 0x0f, SUBFUNC_WITH_LENGTH, "AFP 2.0 Get File Or Directory Information", 10 /* afp */, + ncp_0x2305_request, ncp_0x230f_reply, ncp_0x2304_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x230f_req }, + + { 0x23, 0x10, SUBFUNC_WITH_LENGTH, "AFP 2.0 Set File Information", 10 /* afp */, + ncp_0x2310_request, NULL, ncp_0x2309_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2310_req }, + + { 0x23, 0x11, SUBFUNC_WITH_LENGTH, "AFP 2.0 Scan File Information", 10 /* afp */, + ncp_0x230a_request, ncp_0x2311_reply, ncp_0x230a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2311_req }, + + { 0x23, 0x12, SUBFUNC_WITH_LENGTH, "AFP Get DOS Name From Entry ID", 10 /* afp */, + ncp_0x2312_request, ncp_0x1601_reply, ncp_0x2312_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x23, 0x13, SUBFUNC_WITH_LENGTH, "AFP Get Macintosh Info On Deleted File", 10 /* afp */, + ncp_0x2313_request, ncp_0x2313_reply, ncp_0x2313_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x00, SUBFUNC_WITH_LENGTH, "Get NCP Extension Information", 3 /* fileserver */, + ncp_0x2400_request, ncp_0x2400_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x01, SUBFUNC_WITH_LENGTH, "Get NCP Extension Maximum Data Size", 3 /* fileserver */, + NULL, ncp_0x2401_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x02, SUBFUNC_WITH_LENGTH, "Get NCP Extension Information by Name", 3 /* fileserver */, + ncp_0x2402_request, ncp_0x2400_reply, ncp_0x2402_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x2402_req }, + + { 0x24, 0x03, SUBFUNC_WITH_LENGTH, "Get Number of Registered NCP Extensions", 3 /* fileserver */, + NULL, ncp_0x2403_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x04, SUBFUNC_WITH_LENGTH, "Get NCP Extension Registered Verbs List", 3 /* fileserver */, + ncp_0x2404_request, ncp_0x2404_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x05, SUBFUNC_WITH_LENGTH, "Return NCP Extension Information", 3 /* fileserver */, + ncp_0x2400_request, ncp_0x2400_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x24, 0x06, SUBFUNC_WITH_LENGTH, "Return NCP Extension Maximum Data Size", 3 /* fileserver */, + NULL, ncp_0x2406_reply, ncp_0x2400_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x25, 0x00, NO_SUBFUNC, "Execute NCP Extension", 3 /* fileserver */, + ncp_0x2400_request, NULL, ncp_0x25_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x3b, 0x00, NO_SUBFUNC, "Commit File", 0 /* file */, + ncp_0x3b_request, NULL, ncp_0x3b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x3b_req }, + + { 0x3e, 0x00, NO_SUBFUNC, "File Search Initialize", 0 /* file */, + ncp_0x162a_request, ncp_0x3e_reply, ncp_0x3e_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x3e_req }, + + { 0x3f, 0x00, NO_SUBFUNC, "File Search Continue", 0 /* file */, + ncp_0x3f_request, ncp_0x3f_reply, ncp_0x3f_errors, ncp_0x3f_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x3f_req }, + + { 0x40, 0x00, NO_SUBFUNC, "Search for a File", 0 /* file */, + ncp_0x40_request, ncp_0x40_reply, ncp_0x40_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x40_req }, + + { 0x41, 0x00, NO_SUBFUNC, "Open File", 0 /* file */, + ncp_0x41_request, ncp_0x41_reply, ncp_0x41_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x41_req }, + + { 0x42, 0x00, NO_SUBFUNC, "Close File", 0 /* file */, + ncp_0x3b_request, NULL, ncp_0x42_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x42_req }, + + { 0x43, 0x00, NO_SUBFUNC, "Create File", 0 /* file */, + ncp_0x43_request, ncp_0x41_reply, ncp_0x43_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x43_req }, + + { 0x44, 0x00, NO_SUBFUNC, "Erase File", 0 /* file */, + ncp_0x41_request, NULL, ncp_0x44_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x44_req }, + + { 0x45, 0x00, NO_SUBFUNC, "Rename File", 0 /* file */, + ncp_0x45_request, NULL, ncp_0x45_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x45_req }, + + { 0x46, 0x00, NO_SUBFUNC, "Set File Attributes", 0 /* file */, + ncp_0x46_request, NULL, ncp_0x46_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x46_req }, + + { 0x47, 0x00, NO_SUBFUNC, "Get Current Size of File", 0 /* file */, + ncp_0x3b_request, ncp_0x47_reply, ncp_0x47_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x47_req }, + + { 0x48, 0x00, NO_SUBFUNC, "Read From A File", 0 /* file */, + ncp_0x48_request, ncp_0x48_reply, ncp_0x48_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x48_req }, + + { 0x49, 0x00, NO_SUBFUNC, "Write to a File", 0 /* file */, + ncp_0x48_request, NULL, ncp_0x49_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x49_req }, + + { 0x4a, 0x00, NO_SUBFUNC, "Copy from One File to Another", 0 /* file */, + ncp_0x4a_request, ncp_0x4a_reply, ncp_0x4a_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x4b, 0x00, NO_SUBFUNC, "Set File Time Date Stamp", 0 /* file */, + ncp_0x4b_request, NULL, ncp_0x4b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x4b_req }, + + { 0x4c, 0x00, NO_SUBFUNC, "Open File", 0 /* file */, + ncp_0x4c_request, ncp_0x41_reply, ncp_0x41_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x4c_req }, + + { 0x4d, 0x00, NO_SUBFUNC, "Create File", 0 /* file */, + ncp_0x43_request, ncp_0x41_reply, ncp_0x43_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x4d_req }, + + { 0x4f, 0x00, NO_SUBFUNC, "Set File Extended Attributes", 0 /* file */, + ncp_0x4f_request, NULL, ncp_0x46_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x4f_req }, + + { 0x54, 0x00, NO_SUBFUNC, "Open/Create File", 0 /* file */, + ncp_0x54_request, ncp_0x41_reply, ncp_0x54_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x54_req }, + + { 0x55, 0x00, NO_SUBFUNC, "Get Sparse File Data Block Bit Map", 0 /* file */, + ncp_0x55_request, ncp_0x55_reply, ncp_0x47_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x55_req }, + + { 0x56, 0x01, SUBFUNC_NO_LENGTH, "Close Extended Attribute Handle", 0 /* file */, + ncp_0x5601_request, NULL, ncp_0x5601_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x56, 0x02, SUBFUNC_NO_LENGTH, "Write Extended Attribute", 0 /* file */, + ncp_0x5602_request, ncp_0x5602_reply, ncp_0x5602_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5602_req }, + + { 0x56, 0x03, SUBFUNC_NO_LENGTH, "Read Extended Attribute", 0 /* file */, + ncp_0x5603_request, ncp_0x5603_reply, ncp_0x5603_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5603_req }, + + { 0x56, 0x04, SUBFUNC_NO_LENGTH, "Enumerate Extended Attribute", 0 /* file */, + ncp_0x5604_request, ncp_0x5604_reply, ncp_0x5604_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5604_req }, + + { 0x56, 0x05, SUBFUNC_NO_LENGTH, "Duplicate Extended Attributes", 0 /* file */, + ncp_0x5605_request, ncp_0x5605_reply, ncp_0x5605_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x01, SUBFUNC_NO_LENGTH, "Open/Create File or Subdirectory", 0 /* file */, + ncp_0x5701_request, ncp_0x5701_reply, ncp_0x5701_errors, ncp_0x5701_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5701_req }, + + { 0x57, 0x02, SUBFUNC_NO_LENGTH, "Initialize Search", 0 /* file */, + ncp_0x5702_request, ncp_0x5702_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5702_req }, + + { 0x57, 0x03, SUBFUNC_NO_LENGTH, "Search for File or Subdirectory", 0 /* file */, + ncp_0x5703_request, ncp_0x5703_reply, ncp_0x5702_errors, ncp_0x5701_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5703_req }, + + { 0x57, 0x04, SUBFUNC_NO_LENGTH, "Rename Or Move a File or Subdirectory", 0 /* file */, + ncp_0x5704_request, NULL, ncp_0x5704_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5704_req }, + + { 0x57, 0x05, SUBFUNC_NO_LENGTH, "Scan File or Subdirectory for Trustees", 0 /* file */, + ncp_0x5705_request, ncp_0x5705_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5705_req }, + + { 0x57, 0x06, SUBFUNC_NO_LENGTH, "Obtain File or SubDirectory Information", 0 /* file */, + ncp_0x5706_request, ncp_0x5706_reply, ncp_0x5706_errors, ncp_0x5706_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5706_req }, + + { 0x57, 0x07, SUBFUNC_NO_LENGTH, "Modify File or Subdirectory DOS Information", 0 /* file */, + ncp_0x5707_request, NULL, ncp_0x5707_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5707_req }, + + { 0x57, 0x08, SUBFUNC_NO_LENGTH, "Delete a File or Subdirectory", 0 /* file */, + ncp_0x5708_request, NULL, ncp_0x5708_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5708_req }, + + { 0x57, 0x09, SUBFUNC_NO_LENGTH, "Set Short Directory Handle", 0 /* file */, + ncp_0x5709_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5709_req }, + + { 0x57, 0x0a, SUBFUNC_NO_LENGTH, "Add Trustee Set to File or Subdirectory", 0 /* file */, + ncp_0x570a_request, NULL, ncp_0x570a_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x570a_req }, + + { 0x57, 0x0b, SUBFUNC_NO_LENGTH, "Delete Trustee Set from File or SubDirectory", 0 /* file */, + ncp_0x570b_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x570b_req }, + + { 0x57, 0x0c, SUBFUNC_NO_LENGTH, "Allocate Short Directory Handle", 0 /* file */, + ncp_0x570c_request, ncp_0x570c_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x570c_req }, + + { 0x57, 0x10, SUBFUNC_NO_LENGTH, "Scan Salvageable Files", 0 /* file */, + ncp_0x5710_request, ncp_0x5710_reply, ncp_0x5702_errors, ncp_0x5710_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5710_req }, + + { 0x57, 0x11, SUBFUNC_NO_LENGTH, "Recover Salvageable File", 0 /* file */, + ncp_0x5711_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5711_req }, + + { 0x57, 0x12, SUBFUNC_NO_LENGTH, "Purge Salvageable Files", 0 /* file */, + ncp_0x5712_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x13, SUBFUNC_NO_LENGTH, "Get Name Space Information", 0 /* file */, + ncp_0x5713_request, ncp_0x5713_reply, ncp_0x5702_errors, ncp_0x5713_req_cond_indexes, REQ_COND_SIZE_VARIABLE, NULL }, + + { 0x57, 0x14, SUBFUNC_NO_LENGTH, "Search for File or Subdirectory Set", 0 /* file */, + ncp_0x5714_request, ncp_0x5714_reply, ncp_0x5702_errors, ncp_0x5706_req_cond_indexes, REQ_COND_SIZE_VARIABLE, NULL }, + + { 0x57, 0x15, SUBFUNC_NO_LENGTH, "Get Path String from Short Directory Handle", 0 /* file */, + ncp_0x5715_request, ncp_0x1601_reply, ncp_0x54_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x16, SUBFUNC_NO_LENGTH, "Generate Directory Base and Volume Number", 0 /* file */, + ncp_0x5716_request, ncp_0x5716_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5716_req }, + + { 0x57, 0x17, SUBFUNC_NO_LENGTH, "Query Name Space Information Format", 0 /* file */, + ncp_0x5717_request, ncp_0x5717_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x18, SUBFUNC_NO_LENGTH, "Get Name Spaces Loaded List from Volume Number", 0 /* file */, + ncp_0x5718_request, ncp_0x5718_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x19, SUBFUNC_NO_LENGTH, "Set Name Space Information", 0 /* file */, + ncp_0x5719_request, NULL, ncp_0x5719_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x1a, SUBFUNC_NO_LENGTH, "Get Huge Name Space Information", 0 /* file */, + ncp_0x571a_request, ncp_0x571a_reply, ncp_0x5719_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x1b, SUBFUNC_NO_LENGTH, "Set Huge Name Space Information", 0 /* file */, + ncp_0x571b_request, ncp_0x571b_reply, ncp_0x5719_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x1c, SUBFUNC_NO_LENGTH, "Get Full Path String", 0 /* file */, + ncp_0x571c_request, ncp_0x571c_reply, ncp_0x5719_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x571c_req }, + + { 0x57, 0x1d, SUBFUNC_NO_LENGTH, "Get Effective Directory Rights", 0 /* file */, + ncp_0x571d_request, ncp_0x571d_reply, ncp_0x5702_errors, ncp_0x5710_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x571d_req }, + + { 0x57, 0x1e, SUBFUNC_NO_LENGTH, "Open/Create File or Subdirectory", 0 /* file */, + ncp_0x571e_request, ncp_0x571e_reply, ncp_0x5702_errors, ncp_0x5710_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x571e_req }, + + { 0x57, 0x1f, SUBFUNC_NO_LENGTH, "Get File Information", 0 /* file */, + ncp_0x571f_request, ncp_0x571f_reply, ncp_0x5702_errors, ncp_0x571f_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x571f_req }, + + { 0x57, 0x20, SUBFUNC_NO_LENGTH, "Open/Create File or Subdirectory with Callback", 0 /* file */, + ncp_0x5701_request, ncp_0x5720_reply, ncp_0x5720_errors, ncp_0x5701_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5720_req }, + + { 0x57, 0x21, SUBFUNC_NO_LENGTH, "Open/Create File or Subdirectory II with Callback", 0 /* file */, + ncp_0x571e_request, ncp_0x5721_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5721_req }, + + { 0x57, 0x22, SUBFUNC_NO_LENGTH, "Open CallBack Control (Op-Lock)", 0 /* file */, + ncp_0x5722_request, NULL, ncp_0x5722_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x23, SUBFUNC_NO_LENGTH, "Modify DOS Attributes on a File or Subdirectory", 0 /* file */, + ncp_0x5723_request, ncp_0x5723_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5723_req }, + + { 0x57, 0x24, SUBFUNC_NO_LENGTH, "Log File", 0 /* file */, + ncp_0x5724_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5724_req }, + + { 0x57, 0x25, SUBFUNC_NO_LENGTH, "Release File", 0 /* file */, + ncp_0x5725_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5725_req }, + + { 0x57, 0x26, SUBFUNC_NO_LENGTH, "Clear File", 0 /* file */, + ncp_0x5725_request, NULL, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5726_req }, + + { 0x57, 0x27, SUBFUNC_NO_LENGTH, "Get Directory Disk Space Restriction", 0 /* file */, + ncp_0x5727_request, ncp_0x5727_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x5727_req }, + + { 0x57, 0x28, SUBFUNC_NO_LENGTH, "Search for File or Subdirectory Set (Extended Errors)", 0 /* file */, + ncp_0x5714_request, ncp_0x5728_reply, ncp_0x5702_errors, ncp_0x5710_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5728_req }, + + { 0x57, 0x29, SUBFUNC_NO_LENGTH, "Scan Salvageable Files", 0 /* file */, + ncp_0x5729_request, ncp_0x5729_reply, ncp_0x5702_errors, ncp_0x5729_req_cond_indexes, REQ_COND_SIZE_VARIABLE, &info_str_0x5729_req }, + + { 0x57, 0x2a, SUBFUNC_NO_LENGTH, "Purge Salvageable File List", 0 /* file */, + ncp_0x572a_request, ncp_0x572a_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x2b, SUBFUNC_NO_LENGTH, "Revoke File Handle Rights", 0 /* file */, + ncp_0x572b_request, ncp_0x572b_reply, ncp_0x5702_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x2c, SUBFUNC_NO_LENGTH, "Update File Handle Rights", 0 /* file */, + ncp_0x572c_request, ncp_0x572c_reply, ncp_0x572c_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x40, SUBFUNC_NO_LENGTH, "Read from File", 0 /* file */, + ncp_0x5740_request, ncp_0x48_reply, ncp_0x5740_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x41, SUBFUNC_NO_LENGTH, "Write to File", 0 /* file */, + ncp_0x5740_request, NULL, ncp_0x5741_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x42, SUBFUNC_NO_LENGTH, "Get Current Size of File", 0 /* file */, + ncp_0x5742_request, ncp_0x5742_reply, ncp_0x5742_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x43, SUBFUNC_NO_LENGTH, "Log Physical Record", 0 /* file */, + ncp_0x5743_request, NULL, ncp_0x5743_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x44, SUBFUNC_NO_LENGTH, "Release Physical Record", 0 /* file */, + ncp_0x5744_request, NULL, ncp_0x5744_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x57, 0x45, SUBFUNC_NO_LENGTH, "Clear Physical Record", 0 /* file */, + ncp_0x5744_request, NULL, ncp_0x5744_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x01, SUBFUNC_NO_LENGTH, "Query Volume Audit Status", 11 /* auditing */, + ncp_0x17fe_request, ncp_0x5801_reply, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x02, SUBFUNC_NO_LENGTH, "Add User Audit Property", 11 /* auditing */, + ncp_0x5802_request, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x03, SUBFUNC_NO_LENGTH, "Add Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x04, SUBFUNC_NO_LENGTH, "Change Auditor Volume Password", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x05, SUBFUNC_NO_LENGTH, "Check Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x06, SUBFUNC_NO_LENGTH, "Delete User Audit Property", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x07, SUBFUNC_NO_LENGTH, "Disable Auditing On A Volume", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x08, SUBFUNC_NO_LENGTH, "Enable Auditing On A Volume", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x09, SUBFUNC_NO_LENGTH, "Query User Being Audited", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x0a, SUBFUNC_NO_LENGTH, "Read Audit Bit Map", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x0b, SUBFUNC_NO_LENGTH, "Read Audit File Configuration Header", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x0d, SUBFUNC_NO_LENGTH, "Remove Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x580d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x0e, SUBFUNC_NO_LENGTH, "Reset Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x0f, SUBFUNC_NO_LENGTH, "Auditing NCP", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x10, SUBFUNC_NO_LENGTH, "Write Audit Bit Map", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x11, SUBFUNC_NO_LENGTH, "Write Audit File Configuration Header", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x12, SUBFUNC_NO_LENGTH, "Change Auditor Volume Password2", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x13, SUBFUNC_NO_LENGTH, "Return Audit Flags", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x14, SUBFUNC_NO_LENGTH, "Close Old Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x16, SUBFUNC_NO_LENGTH, "Check Level Two Access", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x17, SUBFUNC_NO_LENGTH, "Return Old Audit File List", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x18, SUBFUNC_NO_LENGTH, "Init Audit File Reads", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x19, SUBFUNC_NO_LENGTH, "Read Auditing File", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x1a, SUBFUNC_NO_LENGTH, "Delete Old Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x1e, SUBFUNC_NO_LENGTH, "Restart Volume auditing", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x58, 0x1f, SUBFUNC_NO_LENGTH, "Set Volume Password", 11 /* auditing */, + NULL, NULL, ncp_0x5801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x01, SUBFUNC_WITH_LENGTH, "Parse Tree", 0 /* file */, + ncp_0x5a01_request, ncp_0x5a01_reply, ncp_0x5a01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x0a, SUBFUNC_WITH_LENGTH, "Get Reference Count from Dir Entry Number", 0 /* file */, + ncp_0x5a0a_request, ncp_0x5a0a_reply, ncp_0x5a01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x0b, SUBFUNC_WITH_LENGTH, "Get Reference Count from Dir Handle", 0 /* file */, + ncp_0x5a0b_request, ncp_0x5a0a_reply, ncp_0x5a01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x0c, SUBFUNC_WITH_LENGTH, "Set Compressed File Size", 0 /* file */, + ncp_0x5a0c_request, ncp_0x5a0c_reply, ncp_0x5a01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x80, SUBFUNC_WITH_LENGTH, "Move File Data To Data Migration", 0 /* file */, + ncp_0x5a80_request, NULL, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x81, SUBFUNC_WITH_LENGTH, "Data Migration File Information", 0 /* file */, + ncp_0x5a81_request, ncp_0x5a81_reply, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x82, SUBFUNC_WITH_LENGTH, "Volume Data Migration Status", 0 /* file */, + ncp_0x5a82_request, ncp_0x5a82_reply, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x83, SUBFUNC_WITH_LENGTH, "Migrator Status Info", 0 /* file */, + NULL, ncp_0x5a83_reply, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x84, SUBFUNC_WITH_LENGTH, "Data Migration Support Module Information", 0 /* file */, + ncp_0x5a84_request, ncp_0x5a84_reply, ncp_0x5a80_errors, ncp_0x5a84_req_cond_indexes, REQ_COND_SIZE_VARIABLE, NULL }, + + { 0x5a, 0x85, SUBFUNC_WITH_LENGTH, "Move File Data From Data Migration", 0 /* file */, + ncp_0x5a81_request, NULL, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x86, SUBFUNC_WITH_LENGTH, "Get/Set Default Read-Write Support Module ID", 0 /* file */, + ncp_0x5a86_request, ncp_0x5a86_reply, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x87, SUBFUNC_WITH_LENGTH, "Data Migration Support Module Capacity Request", 0 /* file */, + ncp_0x5a87_request, ncp_0x5a87_reply, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5a, 0x88, SUBFUNC_WITH_LENGTH, "RTDM Request", 0 /* file */, + ncp_0x5a88_request, NULL, ncp_0x5a80_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5b, 0x00, NO_SUBFUNC, "NMAS Graded Authentication", 12 /* nmas */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x01, SUBFUNC_NO_LENGTH, "SecretStore Services (Ping Server)", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x02, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x03, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x04, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x05, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x06, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x07, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x08, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x09, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5c, 0x0a, SUBFUNC_NO_LENGTH, "SecretStore Services", 13 /* sss */, + NULL, NULL, ncp_0x5b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5e, 0x01, SUBFUNC_NO_LENGTH, "NMAS Communications Packet", 12 /* nmas */, + NULL, NULL, ncp_0x5e01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5e, 0x02, SUBFUNC_NO_LENGTH, "NMAS Communications Packet", 12 /* nmas */, + NULL, NULL, ncp_0x5e01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x5e, 0x03, SUBFUNC_NO_LENGTH, "NMAS Communications Packet", 12 /* nmas */, + NULL, NULL, ncp_0x5e01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x61, 0x00, NO_SUBFUNC, "Get Big Packet NCP Max Packet Size", 14 /* comm */, + ncp_0x61_request, ncp_0x61_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x61_req }, + + { 0x63, 0x00, NO_SUBFUNC, "Undocumented Packet Burst", 14 /* comm */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x64, 0x00, NO_SUBFUNC, "Undocumented Packet Burst", 14 /* comm */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x65, 0x00, NO_SUBFUNC, "Packet Burst Connection Request", 14 /* comm */, + ncp_0x65_request, ncp_0x65_reply, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x66, 0x00, NO_SUBFUNC, "Undocumented Packet Burst", 14 /* comm */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x67, 0x00, NO_SUBFUNC, "Undocumented Packet Burst", 14 /* comm */, + NULL, NULL, ncp_0x1_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x01, SUBFUNC_NO_LENGTH, "Ping for NDS NCP", 6 /* nds */, + NULL, NULL, ncp_0x6801_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x02, SUBFUNC_NO_LENGTH, "Send NDS Fragmented Request/Reply", 6 /* nds */, + NULL, NULL, ncp_0x6802_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x03, SUBFUNC_NO_LENGTH, "Fragment Close", 6 /* nds */, + ncp_0x6803_request, NULL, ncp_0x2_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x04, SUBFUNC_NO_LENGTH, "Return Bindery Context", 6 /* nds */, + NULL, ncp_0x6804_reply, ncp_0x6804_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x05, SUBFUNC_NO_LENGTH, "Monitor NDS Connection", 6 /* nds */, + NULL, NULL, ncp_0x6805_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x06, SUBFUNC_NO_LENGTH, "Return NDS Statistics", 6 /* nds */, + ncp_0x6806_request, NULL, ncp_0x6805_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x07, SUBFUNC_NO_LENGTH, "Clear NDS Statistics", 6 /* nds */, + NULL, NULL, ncp_0x6805_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0x08, SUBFUNC_NO_LENGTH, "Reload NDS Software", 6 /* nds */, + NULL, ncp_0x6808_reply, ncp_0x6805_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xc8, SUBFUNC_NO_LENGTH, "Query Container Audit Status", 11 /* auditing */, + ncp_0x17fe_request, ncp_0x5801_reply, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xca, SUBFUNC_NO_LENGTH, "Add Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xcb, SUBFUNC_NO_LENGTH, "Change Auditor Container Password", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xcc, SUBFUNC_NO_LENGTH, "Check Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x80, 0xce, SUBFUNC_NO_LENGTH, "Disable Container Auditing", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xcf, SUBFUNC_NO_LENGTH, "Enable Container Auditing", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd1, SUBFUNC_NO_LENGTH, "Read Audit File Header", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd3, SUBFUNC_NO_LENGTH, "Remove Auditor Access", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd4, SUBFUNC_NO_LENGTH, "Reset Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd6, SUBFUNC_NO_LENGTH, "Write Audit File Configuration Header", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd7, SUBFUNC_NO_LENGTH, "Change Auditor Container Password2", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd8, SUBFUNC_NO_LENGTH, "Return Audit Flags", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xd9, SUBFUNC_NO_LENGTH, "Close Old Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xdb, SUBFUNC_NO_LENGTH, "Check Level Two Access", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xdc, SUBFUNC_NO_LENGTH, "Check Object Audited", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xdd, SUBFUNC_NO_LENGTH, "Change Object Audited", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xde, SUBFUNC_NO_LENGTH, "Return Old Audit File List", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xdf, SUBFUNC_NO_LENGTH, "Init Audit File Reads", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xe0, SUBFUNC_NO_LENGTH, "Read Auditing File", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xe1, SUBFUNC_NO_LENGTH, "Delete Old Audit File", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xe5, SUBFUNC_NO_LENGTH, "Set Audit Password", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x68, 0xe7, SUBFUNC_NO_LENGTH, "External Audit Append To File", 11 /* auditing */, + NULL, NULL, ncp_0x68c8_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x69, 0x00, NO_SUBFUNC, "Log File", 0 /* file */, + ncp_0x69_request, NULL, ncp_0x69_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x69_req }, + + { 0x6a, 0x00, NO_SUBFUNC, "Lock File Set", 0 /* file */, + ncp_0x4_request, NULL, ncp_0x69_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6b, 0x00, NO_SUBFUNC, "Log Logical Record", 0 /* file */, + ncp_0x6b_request, NULL, ncp_0x6b_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x6b_req }, + + { 0x6c, 0x00, NO_SUBFUNC, "Log Logical Record", 0 /* file */, + ncp_0xa_request, NULL, ncp_0x6b_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6d, 0x00, NO_SUBFUNC, "Log Physical Record", 0 /* file */, + ncp_0x6d_request, NULL, ncp_0x6d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6e, 0x00, NO_SUBFUNC, "Lock Physical Record Set", 0 /* file */, + ncp_0x1b_request, NULL, ncp_0x6d_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6f, 0x00, SUBFUNC_NO_LENGTH, "Open/Create a Semaphore", 0 /* file */, + ncp_0x6f00_request, ncp_0x6f00_reply, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x6f00_req }, + + { 0x6f, 0x01, SUBFUNC_NO_LENGTH, "Examine Semaphore", 0 /* file */, + ncp_0x6f01_request, ncp_0x2001_reply, ncp_0x2000_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6f, 0x02, SUBFUNC_NO_LENGTH, "Wait On (P) Semaphore", 0 /* file */, + ncp_0x6f02_request, NULL, ncp_0x6f02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6f, 0x03, SUBFUNC_NO_LENGTH, "Signal (V) Semaphore", 0 /* file */, + ncp_0x6f01_request, NULL, ncp_0x6f02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x6f, 0x04, SUBFUNC_NO_LENGTH, "Close Semaphore", 0 /* file */, + ncp_0x6f01_request, ncp_0x6f04_reply, ncp_0x6f02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x72, 0x01, SUBFUNC_WITH_LENGTH, "Timesync Get Time", 0 /* file */, + NULL, ncp_0x7201_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x72, 0x02, SUBFUNC_WITH_LENGTH, "Timesync Exchange Time", 0 /* file */, + ncp_0x7202_request, ncp_0x7202_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x7202_req }, + + { 0x72, 0x05, SUBFUNC_WITH_LENGTH, "Timesync Get Server List", 0 /* file */, + ncp_0x7205_request, ncp_0x7205_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x72, 0x06, SUBFUNC_WITH_LENGTH, "Timesync Set Server List", 0 /* file */, + ncp_0x7205_request, ncp_0x7205_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x72, 0x0c, SUBFUNC_WITH_LENGTH, "Timesync Get Version", 0 /* file */, + NULL, ncp_0x720c_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x01, SUBFUNC_WITH_LENGTH, "Get Cache Information", 8 /* stats */, + ncp_0x7b01_request, ncp_0x7b01_reply, ncp_0x7b01_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x02, SUBFUNC_WITH_LENGTH, "Get File Server Information", 8 /* stats */, + NULL, ncp_0x7b02_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x03, SUBFUNC_WITH_LENGTH, "NetWare File System Information", 8 /* stats */, + ncp_0x7b03_request, ncp_0x7b03_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x04, SUBFUNC_WITH_LENGTH, "User Information", 8 /* stats */, + ncp_0x17fe_request, ncp_0x7b04_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x05, SUBFUNC_WITH_LENGTH, "Packet Burst Information", 8 /* stats */, + NULL, ncp_0x7b05_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x06, SUBFUNC_WITH_LENGTH, "IPX SPX Information", 8 /* stats */, + NULL, ncp_0x7b06_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x07, SUBFUNC_WITH_LENGTH, "Garbage Collection Information", 8 /* stats */, + NULL, ncp_0x7b07_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x08, SUBFUNC_WITH_LENGTH, "CPU Information", 8 /* stats */, + ncp_0x7b08_request, ncp_0x7b08_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x09, SUBFUNC_WITH_LENGTH, "Volume Switch Information", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b09_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0a, SUBFUNC_WITH_LENGTH, "Get NLM Loaded List", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b0a_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0b, SUBFUNC_WITH_LENGTH, "NLM Information", 8 /* stats */, + ncp_0x7b0b_request, ncp_0x7b0b_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0c, SUBFUNC_WITH_LENGTH, "Get Directory Cache Information", 8 /* stats */, + NULL, ncp_0x7b0c_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0d, SUBFUNC_WITH_LENGTH, "Get Operating System Version Information", 8 /* stats */, + NULL, ncp_0x7b0d_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0e, SUBFUNC_WITH_LENGTH, "Get Active Connection List by Type", 8 /* stats */, + ncp_0x7b0e_request, ncp_0x7b0e_reply, ncp_0x7b0e_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x0f, SUBFUNC_WITH_LENGTH, "Get NLM Resource Tag List", 8 /* stats */, + ncp_0x7b0f_request, ncp_0x7b0f_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x10, SUBFUNC_WITH_LENGTH, "Enumerate Connection Information from Connection List", 8 /* stats */, + ncp_0x7b10_request, ncp_0x7b10_reply, ncp_0x7b02_errors, ncp_0x7b10_req_cond_indexes, REQ_COND_SIZE_VARIABLE, NULL }, + + { 0x7b, 0x11, SUBFUNC_WITH_LENGTH, "Enumerate NCP Service Network Addresses", 8 /* stats */, + ncp_0x7b11_request, ncp_0x7b11_reply, ncp_0x7b11_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x14, SUBFUNC_WITH_LENGTH, "Active LAN Board List", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b14_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x15, SUBFUNC_WITH_LENGTH, "LAN Configuration Information", 8 /* stats */, + ncp_0x7b15_request, ncp_0x7b15_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x16, SUBFUNC_WITH_LENGTH, "LAN Common Counters Information", 8 /* stats */, + ncp_0x7b16_request, ncp_0x7b16_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x17, SUBFUNC_WITH_LENGTH, "LAN Custom Counters Information", 8 /* stats */, + ncp_0x7b17_request, ncp_0x7b17_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x18, SUBFUNC_WITH_LENGTH, "LAN Name Information", 8 /* stats */, + ncp_0x7b15_request, ncp_0x7b18_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x19, SUBFUNC_WITH_LENGTH, "LSL Information", 8 /* stats */, + NULL, ncp_0x7b19_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x1a, SUBFUNC_WITH_LENGTH, "LSL Logical Board Statistics", 8 /* stats */, + ncp_0x7b15_request, ncp_0x7b1a_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x1b, SUBFUNC_WITH_LENGTH, "MLID Board Information", 8 /* stats */, + ncp_0x7b15_request, ncp_0x7b1b_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x1e, SUBFUNC_WITH_LENGTH, "Get Media Manager Object Information", 8 /* stats */, + ncp_0x7b1e_request, ncp_0x7b1e_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x1f, SUBFUNC_WITH_LENGTH, "Get Media Manager Objects List", 8 /* stats */, + ncp_0x7b1f_request, ncp_0x7b1f_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x20, SUBFUNC_WITH_LENGTH, "Get Media Manager Object Childrens List", 8 /* stats */, + ncp_0x7b20_request, ncp_0x7b1f_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x21, SUBFUNC_WITH_LENGTH, "Get Volume Segment List", 8 /* stats */, + ncp_0x7b21_request, ncp_0x7b21_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x22, SUBFUNC_WITH_LENGTH, "Get Volume Information by Level", 8 /* stats */, + ncp_0x7b22_request, ncp_0x7b22_reply, ncp_0x7b02_errors, ncp_0x7b22_req_cond_indexes, REQ_COND_SIZE_VARIABLE, NULL }, + + { 0x7b, 0x28, SUBFUNC_WITH_LENGTH, "Active Protocol Stacks", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b28_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x29, SUBFUNC_WITH_LENGTH, "Get Protocol Stack Configuration Information", 8 /* stats */, + ncp_0x7b29_request, ncp_0x7b29_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2a, SUBFUNC_WITH_LENGTH, "Get Protocol Stack Statistics Information", 8 /* stats */, + ncp_0x7b29_request, ncp_0x7b2a_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2b, SUBFUNC_WITH_LENGTH, "Get Protocol Stack Custom Information", 8 /* stats */, + ncp_0x7b2b_request, ncp_0x7b2b_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2c, SUBFUNC_WITH_LENGTH, "Get Protocol Stack Numbers by Media Number", 8 /* stats */, + ncp_0x7b2c_request, ncp_0x7b2c_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2d, SUBFUNC_WITH_LENGTH, "Get Protocol Stack Numbers by LAN Board Number", 8 /* stats */, + ncp_0x7b15_request, ncp_0x7b2c_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2e, SUBFUNC_WITH_LENGTH, "Get Media Name by Media Number", 8 /* stats */, + ncp_0x7b2c_request, ncp_0x7b2e_reply, ncp_0x7b02_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x2f, SUBFUNC_WITH_LENGTH, "Get Loaded Media Number", 8 /* stats */, + NULL, ncp_0x7b2f_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x32, SUBFUNC_WITH_LENGTH, "Get General Router and SAP Information", 8 /* stats */, + NULL, ncp_0x7b32_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x33, SUBFUNC_WITH_LENGTH, "Get Network Router Information", 8 /* stats */, + ncp_0x7b33_request, ncp_0x7b33_reply, ncp_0x7b33_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x34, SUBFUNC_WITH_LENGTH, "Get Network Routers Information", 8 /* stats */, + ncp_0x7b34_request, ncp_0x7b34_reply, ncp_0x7b33_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x35, SUBFUNC_WITH_LENGTH, "Get Known Networks Information", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b35_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x36, SUBFUNC_WITH_LENGTH, "Get Server Information", 8 /* stats */, + ncp_0x7b36_request, ncp_0x7b36_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x7b36_req }, + + { 0x7b, 0x37, SUBFUNC_WITH_LENGTH, "Get Server Sources Information", 8 /* stats */, + ncp_0x7b37_request, ncp_0x7b37_reply, ncp_0x7b33_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x7b37_req }, + + { 0x7b, 0x38, SUBFUNC_WITH_LENGTH, "Get Known Servers Information", 8 /* stats */, + ncp_0x7b38_request, ncp_0x7b38_reply, ncp_0x7b33_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x3c, SUBFUNC_WITH_LENGTH, "Get Server Set Commands Information", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b3c_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x3d, SUBFUNC_WITH_LENGTH, "Get Server Set Categories", 8 /* stats */, + ncp_0x7205_request, ncp_0x7b3d_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x3e, SUBFUNC_WITH_LENGTH, "Get Server Set Commands Information By Name", 8 /* stats */, + ncp_0x7b3e_request, ncp_0x7b3e_reply, ncp_0x7b2f_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x7b3e_req }, + + { 0x7b, 0x46, SUBFUNC_WITH_LENGTH, "Get Current Compressing File", 8 /* stats */, + ncp_0x7b21_request, ncp_0x7b46_reply, ncp_0x7b46_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x47, SUBFUNC_WITH_LENGTH, "Get Current DeCompressing File Info List", 8 /* stats */, + ncp_0x7b21_request, ncp_0x7b47_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x7b, 0x48, SUBFUNC_WITH_LENGTH, "Get Compression and Decompression Time and Counts", 8 /* stats */, + ncp_0x7b21_request, ncp_0x7b48_reply, ncp_0x7201_errors, NULL, NO_REQ_COND_SIZE, NULL }, + + { 0x83, 0x01, SUBFUNC_WITH_LENGTH, "RPC Load an NLM", 3 /* fileserver */, + ncp_0x8301_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8301_req }, + + { 0x83, 0x02, SUBFUNC_WITH_LENGTH, "RPC Unload an NLM", 3 /* fileserver */, + ncp_0x8302_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8302_req }, + + { 0x83, 0x03, SUBFUNC_WITH_LENGTH, "RPC Mount Volume", 3 /* fileserver */, + ncp_0x8303_request, ncp_0x8303_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8303_req }, + + { 0x83, 0x04, SUBFUNC_WITH_LENGTH, "RPC Dismount Volume", 3 /* fileserver */, + ncp_0x8303_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8304_req }, + + { 0x83, 0x05, SUBFUNC_WITH_LENGTH, "RPC Add Name Space To Volume", 3 /* fileserver */, + ncp_0x8305_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8305_req }, + + { 0x83, 0x06, SUBFUNC_WITH_LENGTH, "RPC Set Command Value", 3 /* fileserver */, + ncp_0x8306_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8306_req }, + + { 0x83, 0x07, SUBFUNC_WITH_LENGTH, "RPC Execute NCF File", 3 /* fileserver */, + ncp_0x8307_request, ncp_0x8301_reply, ncp_0x8301_errors, NULL, NO_REQ_COND_SIZE, &info_str_0x8307_req }, + + { 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NO_REQ_COND_SIZE, NULL } +}; + +/* ncp funcs that require a subfunc */ +static const guint8 ncp_func_requires_subfunc[] = { + 0x11, + 0x15, + 0x16, + 0x17, + 0x20, + 0x22, + 0x23, + 0x24, + 0x56, + 0x57, + 0x58, + 0x5a, + 0x5c, + 0x5e, + 0x68, + 0x80, + 0x6f, + 0x72, + 0x7b, + 0x83, + 0 +}; + +/* ncp funcs that have no length parameter */ +static const guint8 ncp_func_has_no_length_parameter[] = { + 0x20, + 0x22, + 0x56, + 0x57, + 0x58, + 0x5c, + 0x5e, + 0x68, + 0x6f, + 0x80, + 0 +}; + + +void +final_registration_ncp2222(void) +{ + int i; + + + for (i = 0; i < NUM_REQ_CONDS; i++) { + if (!dfilter_compile((const gchar*)req_conds[i].dfilter_text, + &req_conds[i].dfilter)) { + g_message("NCP dissector failed to compiler dfilter: %s\n", + req_conds[i].dfilter_text); + g_assert_not_reached(); + } + } +} + + +static const value_string ncp_nds_verb_vals[] = { + { 1, "Resolve Name" }, + { 2, "Read Entry Information" }, + { 3, "Read" }, + { 4, "Compare" }, + { 5, "List" }, + { 6, "Search Entries" }, + { 7, "Add Entry" }, + { 8, "Remove Entry" }, + { 9, "Modify Entry" }, + { 10, "Modify RDN" }, + { 11, "Create Attribute" }, + { 12, "Read Attribute Definition" }, + { 13, "Remove Attribute Definition" }, + { 14, "Define Class" }, + { 15, "Read Class Definition" }, + { 16, "Modify Class Definition" }, + { 17, "Remove Class Definition" }, + { 18, "List Containable Classes" }, + { 19, "Get Effective Rights" }, + { 20, "Add Partition" }, + { 21, "Remove Partition" }, + { 22, "List Partitions" }, + { 23, "Split Partition" }, + { 24, "Join Partitions" }, + { 25, "Add Replica" }, + { 26, "Remove Replica" }, + { 27, "Open Stream" }, + { 28, "Search Filter" }, + { 29, "Create Subordinate Reference" }, + { 30, "Link Replica" }, + { 31, "Change Replica Type" }, + { 32, "Start Update Schema" }, + { 33, "End Update Schema" }, + { 34, "Update Schema" }, + { 35, "Start Update Replica" }, + { 36, "End Update Replica" }, + { 37, "Update Replica" }, + { 38, "Synchronize Partition" }, + { 39, "Synchronize Schema" }, + { 40, "Read Syntaxes" }, + { 41, "Get Replica Root ID" }, + { 42, "Begin Move Entry" }, + { 43, "Finish Move Entry" }, + { 44, "Release Moved Entry" }, + { 45, "Backup Entry" }, + { 46, "Restore Entry" }, + { 47, "Save DIB" }, + { 48, "Control" }, + { 49, "Remove Backlink" }, + { 50, "Close Iteration" }, + { 51, "Unused" }, + { 52, "Audit Skulking" }, + { 53, "Get Server Address" }, + { 54, "Set Keys" }, + { 55, "Change Password" }, + { 56, "Verify Password" }, + { 57, "Begin Login" }, + { 58, "Finish Login" }, + { 59, "Begin Authentication" }, + { 60, "Finish Authentication" }, + { 61, "Logout" }, + { 62, "Repair Ring" }, + { 63, "Repair Timestamps" }, + { 64, "Create Back Link" }, + { 65, "Delete External Reference" }, + { 66, "Rename External Reference" }, + { 67, "Create Directory Entry" }, + { 68, "Remove Directory Entry" }, + { 69, "Designate New Master" }, + { 70, "Change Tree Name" }, + { 71, "Partition Entry Count" }, + { 72, "Check Login Restrictions" }, + { 73, "Start Join" }, + { 74, "Low Level Split" }, + { 75, "Low Level Join" }, + { 76, "Abort Low Level Join" }, + { 77, "Get All Servers" }, + { 255, "EDirectory Call" }, + { 0, NULL } +}; + +void +proto_register_ncp2222(void) +{ + + static hf_register_info hf[] = { + { &hf_ncp_func, + { "Function", "ncp.func", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_length, + { "Packet Length", "ncp.length", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_subfunc, + { "SubFunction", "ncp.subfunc", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_completion_code, + { "Completion Code", "ncp.completion_code", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fragment_handle, + { "NDS Fragment Handle", "ncp.ndsfrag", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fragment_size, + { "NDS Fragment Size", "ncp.ndsfragsize", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_message_size, + { "Message Size", "ncp.ndsmessagesize", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nds_flag, + { "Flags", "ncp.ndsflag", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nds_verb, + { "NDS Verb", "ncp.ndsverb", FT_UINT8, BASE_HEX, VALS(ncp_nds_verb_vals), 0x0, "", HFILL }}, + + { &hf_ping_version, + { "NDS Version", "ncp.ping_version", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_version, + { "NDS Version", "ncp.nds_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_tree_name, + { "Tree Name", "ncp.nds_tree_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + /* + * XXX - the page at + * + * http://www.odyssea.com/whats_new/tcpipnet/tcpipnet.html + * + * says of the connection status "The Connection Code field may + * contain values that indicate the status of the client host to + * server connection. A value of 1 in the fourth bit of this data + * byte indicates that the server is unavailable (server was + * downed). + * + * The page at + * + * http://www.unm.edu/~network/presentations/course/appendix/appendix_f/tsld088.htm + * + * says that bit 0 is "bad service", bit 2 is "no connection + * available", bit 4 is "service down", and bit 6 is "server + * has a broadcast message waiting for the client". + * + * Should it be displayed in hex, and should those bits (and any + * other bits with significance) be displayed as bitfields + * underneath it? + */ + { &hf_ncp_connection_status, + { "Connection Status", "ncp.connection_status", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_req_frame_num, + { "Response to Request in Frame Number", "ncp.req_frame_num", FT_FRAMENUM, BASE_NONE, + NULL, 0x0, "", HFILL }}, + + { &hf_ncp_req_frame_time, + { "Time from Request", "ncp.time", FT_RELATIVE_TIME, BASE_NONE, + NULL, 0x0, "Time between request and response in seconds", HFILL }}, + + { &hf_nds_flags, + { "NDS Return Flags", "ncp.nds_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + + { &hf_nds_reply_depth, + { "Distance from Root", "ncp.ndsdepth", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_reply_rev, + { "NDS Revision", "ncp.ndsrev", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_reply_flags, + { "Flags", "ncp.ndsflags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_p1type, + { "NDS Parameter Type", "ncp.p1type", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_uint32value, + { "NDS Value", "ncp.uint32value", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_bit1, + { "Typeless", "ncp.nds_bit1", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_nds_bit2, + { "All Containers", "ncp.nds_bit2", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_nds_bit3, + { "Slashed", "ncp.nds_bit3", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_nds_bit4, + { "Dotted", "ncp.nds_bit4", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_nds_bit5, + { "Tuned", "ncp.nds_bit5", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_nds_bit6, + { "Not Defined", "ncp.nds_bit6", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_nds_bit7, + { "Not Defined", "ncp.nds_bit7", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_nds_bit8, + { "Not Defined", "ncp.nds_bit8", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_nds_bit9, + { "Not Defined", "ncp.nds_bit9", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_nds_bit10, + { "Not Defined", "ncp.nds_bit10", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_nds_bit11, + { "Not Defined", "ncp.nds_bit11", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_nds_bit12, + { "Not Defined", "ncp.nds_bit12", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_nds_bit13, + { "Not Defined", "ncp.nds_bit13", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_nds_bit14, + { "Not Defined", "ncp.nds_bit14", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_nds_bit15, + { "Not Defined", "ncp.nds_bit15", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_nds_bit16, + { "Not Defined", "ncp.nds_bit16", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1outflags, + { "Output Flags", "ncp.bit1outflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2outflags, + { "Entry ID", "ncp.bit2outflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3outflags, + { "Replica State", "ncp.bit3outflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4outflags, + { "Modification Timestamp", "ncp.bit4outflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5outflags, + { "Purge Time", "ncp.bit5outflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6outflags, + { "Local Partition ID", "ncp.bit6outflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7outflags, + { "Distinguished Name", "ncp.bit7outflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8outflags, + { "Replica Type", "ncp.bit8outflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9outflags, + { "Partition Busy", "ncp.bit9outflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10outflags, + { "Not Defined", "ncp.bit10outflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11outflags, + { "Not Defined", "ncp.bit11outflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12outflags, + { "Not Defined", "ncp.bit12outflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13outflags, + { "Not Defined", "ncp.bit13outflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14outflags, + { "Not Defined", "ncp.bit14outflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15outflags, + { "Not Defined", "ncp.bit15outflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16outflags, + { "Not Defined", "ncp.bit16outflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1nflags, + { "Entry ID", "ncp.bit1nflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2nflags, + { "Readable", "ncp.bit2nflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3nflags, + { "Writeable", "ncp.bit3nflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4nflags, + { "Master", "ncp.bit4nflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5nflags, + { "Create ID", "ncp.bit5nflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6nflags, + { "Walk Tree", "ncp.bit6nflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7nflags, + { "Dereference Alias", "ncp.bit7nflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8nflags, + { "Not Defined", "ncp.bit8nflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9nflags, + { "Not Defined", "ncp.bit9nflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10nflags, + { "Not Defined", "ncp.bit10nflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11nflags, + { "Not Defined", "ncp.bit11nflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12nflags, + { "Not Defined", "ncp.bit12nflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13nflags, + { "Not Defined", "ncp.bit13nflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14nflags, + { "Prefer Referrals", "ncp.bit14nflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15nflags, + { "Prefer Only Referrals", "ncp.bit15nflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16nflags, + { "Not Defined", "ncp.bit16nflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1rflags, + { "Typeless", "ncp.bit1rflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2rflags, + { "Slashed", "ncp.bit2rflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3rflags, + { "Dotted", "ncp.bit3rflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4rflags, + { "Tuned", "ncp.bit4rflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5rflags, + { "Not Defined", "ncp.bit5rflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6rflags, + { "Not Defined", "ncp.bit6rflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7rflags, + { "Not Defined", "ncp.bit7rflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8rflags, + { "Not Defined", "ncp.bit8rflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9rflags, + { "Not Defined", "ncp.bit9rflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10rflags, + { "Not Defined", "ncp.bit10rflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11rflags, + { "Not Defined", "ncp.bit11rflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12rflags, + { "Not Defined", "ncp.bit12rflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13rflags, + { "Not Defined", "ncp.bit13rflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14rflags, + { "Not Defined", "ncp.bit14rflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15rflags, + { "Not Defined", "ncp.bit15rflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16rflags, + { "Not Defined", "ncp.bit16rflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1eflags, + { "Alias Entry", "ncp.bit1eflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2eflags, + { "Partition Root", "ncp.bit2eflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3eflags, + { "Container Entry", "ncp.bit3eflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4eflags, + { "Container Alias", "ncp.bit4eflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5eflags, + { "Matches List Filter", "ncp.bit5eflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6eflags, + { "Reference Entry", "ncp.bit6eflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7eflags, + { "40x Reference Entry", "ncp.bit7eflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8eflags, + { "Back Linked", "ncp.bit8eflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9eflags, + { "New Entry", "ncp.bit9eflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10eflags, + { "Temporary Reference", "ncp.bit10eflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11eflags, + { "Audited", "ncp.bit11eflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12eflags, + { "Entry Not Present", "ncp.bit12eflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13eflags, + { "Entry Verify CTS", "ncp.bit13eflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14eflags, + { "Entry Damaged", "ncp.bit14eflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15eflags, + { "Not Defined", "ncp.bit15rflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16eflags, + { "Not Defined", "ncp.bit16rflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1infoflagsl, + { "Output Flags", "ncp.bit1infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2infoflagsl, + { "Entry ID", "ncp.bit2infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3infoflagsl, + { "Entry Flags", "ncp.bit3infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4infoflagsl, + { "Subordinate Count", "ncp.bit4infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5infoflagsl, + { "Modification Time", "ncp.bit5infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6infoflagsl, + { "Modification Timestamp", "ncp.bit6infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7infoflagsl, + { "Creation Timestamp", "ncp.bit7infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8infoflagsl, + { "Partition Root ID", "ncp.bit8infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9infoflagsl, + { "Parent ID", "ncp.bit9infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10infoflagsl, + { "Revision Count", "ncp.bit10infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11infoflagsl, + { "Replica Type", "ncp.bit11infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12infoflagsl, + { "Base Class", "ncp.bit12infoflagsl", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13infoflagsl, + { "Relative Distinguished Name", "ncp.bit13infoflagsl", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14infoflagsl, + { "Distinguished Name", "ncp.bit14infoflagsl", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15infoflagsl, + { "Root Distinguished Name", "ncp.bit15infoflagsl", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16infoflagsl, + { "Parent Distinguished Name", "ncp.bit16infoflagsl", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1infoflagsh, + { "Purge Time", "ncp.bit1infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2infoflagsh, + { "Dereference Base Class", "ncp.bit2infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3infoflagsh, + { "Not Defined", "ncp.bit3infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4infoflagsh, + { "Not Defined", "ncp.bit4infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5infoflagsh, + { "Not Defined", "ncp.bit5infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6infoflagsh, + { "Not Defined", "ncp.bit6infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7infoflagsh, + { "Not Defined", "ncp.bit7infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8infoflagsh, + { "Not Defined", "ncp.bit8infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9infoflagsh, + { "Not Defined", "ncp.bit9infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10infoflagsh, + { "Not Defined", "ncp.bit10infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11infoflagsh, + { "Not Defined", "ncp.bit11infoflagsh", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12infoflagsh, + { "Not Defined", "ncp.bit12infoflagshs", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13infoflagsh, + { "Not Defined", "ncp.bit13infoflagsh", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14infoflagsh, + { "Not Defined", "ncp.bit14infoflagsh", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15infoflagsh, + { "Not Defined", "ncp.bit15infoflagsh", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16infoflagsh, + { "Not Defined", "ncp.bit16infoflagsh", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1lflags, + { "List Typeless", "ncp.bit1lflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2lflags, + { "List Containers", "ncp.bit2lflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3lflags, + { "List Slashed", "ncp.bit3lflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4lflags, + { "List Dotted", "ncp.bit4lflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5lflags, + { "Dereference Alias", "ncp.bit5lflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6lflags, + { "List All Containers", "ncp.bit6lflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7lflags, + { "List Obsolete", "ncp.bit7lflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8lflags, + { "List Tuned Output", "ncp.bit8lflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9lflags, + { "List External Reference", "ncp.bit9lflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10lflags, + { "Not Defined", "ncp.bit10lflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11lflags, + { "Not Defined", "ncp.bit11lflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12lflags, + { "Not Defined", "ncp.bit12lflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13lflags, + { "Not Defined", "ncp.bit13lflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14lflags, + { "Not Defined", "ncp.bit14lflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15lflags, + { "Not Defined", "ncp.bit15lflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16lflags, + { "Not Defined", "ncp.bit16lflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1l1flagsl, + { "Output Flags", "ncp.bit1l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2l1flagsl, + { "Entry ID", "ncp.bit2l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3l1flagsl, + { "Replica State", "ncp.bit3l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4l1flagsl, + { "Modification Timestamp", "ncp.bit4l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5l1flagsl, + { "Purge Time", "ncp.bit5l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6l1flagsl, + { "Local Partition ID", "ncp.bit6l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7l1flagsl, + { "Distinguished Name", "ncp.bit7l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8l1flagsl, + { "Replica Type", "ncp.bit8l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9l1flagsl, + { "Partition Busy", "ncp.bit9l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10l1flagsl, + { "Not Defined", "ncp.bit10l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11l1flagsl, + { "Not Defined", "ncp.bit11l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12l1flagsl, + { "Not Defined", "ncp.bit12l1flagsl", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13l1flagsl, + { "Not Defined", "ncp.bit13l1flagsl", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14l1flagsl, + { "Not Defined", "ncp.bit14l1flagsl", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15l1flagsl, + { "Not Defined", "ncp.bit15l1flagsl", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16l1flagsl, + { "Not Defined", "ncp.bit16l1flagsl", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1l1flagsh, + { "Not Defined", "ncp.bit1l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2l1flagsh, + { "Not Defined", "ncp.bit2l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3l1flagsh, + { "Not Defined", "ncp.bit3l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4l1flagsh, + { "Not Defined", "ncp.bit4l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5l1flagsh, + { "Not Defined", "ncp.bit5l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6l1flagsh, + { "Not Defined", "ncp.bit6l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7l1flagsh, + { "Not Defined", "ncp.bit7l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8l1flagsh, + { "Not Defined", "ncp.bit8l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9l1flagsh, + { "Not Defined", "ncp.bit9l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10l1flagsh, + { "Not Defined", "ncp.bit10l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11l1flagsh, + { "Not Defined", "ncp.bit11l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12l1flagsh, + { "Not Defined", "ncp.bit12l1flagsh", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13l1flagsh, + { "Not Defined", "ncp.bit13l1flagsh", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14l1flagsh, + { "Not Defined", "ncp.bit14l1flagsh", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15l1flagsh, + { "Not Defined", "ncp.bit15l1flagsh", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16l1flagsh, + { "Not Defined", "ncp.bit16l1flagsh", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1vflags, + { "Naming", "ncp.bit1vflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2vflags, + { "Base Class", "ncp.bit2vflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3vflags, + { "Present", "ncp.bit3vflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4vflags, + { "Value Damaged", "ncp.bit4vflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5vflags, + { "Not Defined", "ncp.bit5vflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6vflags, + { "Not Defined", "ncp.bit6vflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7vflags, + { "Not Defined", "ncp.bit7vflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8vflags, + { "Not Defined", "ncp.bit8vflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9vflags, + { "Not Defined", "ncp.bit9vflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10vflags, + { "Not Defined", "ncp.bit10vflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11vflags, + { "Not Defined", "ncp.bit11vflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12vflags, + { "Not Defined", "ncp.bit12vflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13vflags, + { "Not Defined", "ncp.bit13vflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14vflags, + { "Not Defined", "ncp.bit14vflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15vflags, + { "Not Defined", "ncp.bit15vflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16vflags, + { "Not Defined", "ncp.bit16vflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1cflags, + { "Ambiguous Containment", "ncp.bit1cflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2cflags, + { "Ambiguous Naming", "ncp.bit2cflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3cflags, + { "Class Definition Cannot be Removed", "ncp.bit3cflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4cflags, + { "Effective Class", "ncp.bit4cflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5cflags, + { "Container Class", "ncp.bit5cflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6cflags, + { "Not Defined", "ncp.bit6cflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7cflags, + { "Not Defined", "ncp.bit7cflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8cflags, + { "Not Defined", "ncp.bit8cflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9cflags, + { "Not Defined", "ncp.bit9cflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10cflags, + { "Not Defined", "ncp.bit10cflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11cflags, + { "Not Defined", "ncp.bit11cflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12cflags, + { "Not Defined", "ncp.bit12cflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13cflags, + { "Not Defined", "ncp.bit13cflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14cflags, + { "Not Defined", "ncp.bit14cflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15cflags, + { "Not Defined", "ncp.bit15cflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16cflags, + { "Not Defined", "ncp.bit16cflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1acflags, + { "Single Valued", "ncp.bit1acflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2acflags, + { "Sized", "ncp.bit2acflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3acflags, + { "Non-Removable", "ncp.bit3acflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4acflags, + { "Read Only", "ncp.bit4acflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5acflags, + { "Hidden", "ncp.bit5acflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6acflags, + { "String", "ncp.bit6acflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7acflags, + { "Synchronize Immediate", "ncp.bit7acflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8acflags, + { "Public Read", "ncp.bit8acflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9acflags, + { "Server Read", "ncp.bit9acflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10acflags, + { "Write Managed", "ncp.bit10acflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11acflags, + { "Per Replica", "ncp.bit11acflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12acflags, + { "Never Schedule Synchronization", "ncp.bit12acflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13acflags, + { "Operational", "ncp.bit13acflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14acflags, + { "Not Defined", "ncp.bit14acflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15acflags, + { "Not Defined", "ncp.bit15acflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16acflags, + { "Not Defined", "ncp.bit16acflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + + { &hf_nds_reply_error, + { "NDS Error", "ncp.ndsreplyerror", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_net, + { "Network","ncp.ndsnet", FT_IPXNET, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_node, + { "Node", "ncp.ndsnode", FT_ETHER, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_socket, + { "Socket", "ncp.ndssocket", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_add_ref_ip, + { "Address Referral", "ncp.ipref", FT_IPv4, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_add_ref_udp, + { "Address Referral", "ncp.udpref", FT_IPv4, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_add_ref_tcp, + { "Address Referral", "ncp.tcpref", FT_IPv4, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_referral_record, + { "Referral Record", "ncp.ref_rec", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_referral_addcount, + { "Address Count", "ncp.ref_addcount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_port, + { "Port", "ncp.ndsport", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_mv_string, + { "Attribute Name ", "ncp.mv_string", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_syntax, + { "Attribute Syntax ", "ncp.nds_syntax", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_value_string, + { "Value ", "ncp.value_string", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_stream_name, + { "Stream Name ", "ncp.nds_stream_name", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_buffer_size, + { "NDS Reply Buffer Size", "ncp.nds_reply_buf", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_ver, + { "NDS Version", "ncp.nds_ver", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_nflags, + { "Flags", "ncp.nds_nflags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_rflags, + { "Request Flags", "ncp.nds_rflags", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_eflags, + { "Entry Flags", "ncp.nds_eflags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_scope, + { "Scope", "ncp.nds_scope", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_name, + { "Name", "ncp.nds_name", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_name_type, + { "Name Type", "ncp.nds_name_type", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_comm_trans, + { "Communications Transport", "ncp.nds_comm_trans", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_tree_trans, + { "Tree Walker Transport", "ncp.nds_tree_trans", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_iteration, + { "Iteration Handle", "ncp.nds_iteration", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_file_handle, + { "File Handle", "ncp.nds_file_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_file_size, + { "File Size", "ncp.nds_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_eid, + { "NDS EID", "ncp.nds_eid", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_depth, + { "Distance object is from Root", "ncp.nds_depth", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_info_type, + { "Info Type", "ncp.nds_info_type", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_class_def_type, + { "Class Definition Type", "ncp.nds_class_def_type", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_all_attr, + { "All Attributes", "ncp.nds_all_attr", FT_UINT32, BASE_DEC, NULL, 0x0, "Return all Attributes?", HFILL }}, + + { &hf_nds_return_all_classes, + { "All Classes", "ncp.nds_return_all_classes", FT_STRING, BASE_NONE, NULL, 0x0, "Return all Classes?", HFILL }}, + + { &hf_nds_req_flags, + { "Request Flags", "ncp.nds_req_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_attr, + { "Attributes", "ncp.nds_attributes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_classes, + { "Classes", "ncp.nds_classes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_crc, + { "CRC", "ncp.nds_crc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_referrals, + { "Referrals", "ncp.nds_referrals", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_result_flags, + { "Result Flags", "ncp.nds_result_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_stream_flags, + { "Streams Flags", "ncp.nds_stream_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_tag_string, + { "Tags", "ncp.nds_tags", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_value_bytes, + { "Bytes", "ncp.value_bytes", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_replica_type, + { "Replica Type", "ncp.rtype", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_replica_state, + { "Replica State", "ncp.rstate", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_rnum, + { "Replica Number", "ncp.rnum", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_revent, + { "Event", "ncp.revent", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_replica_number, + { "Replica Number", "ncp.rnum", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_min_nds_ver, + { "Minimum NDS Version", "ncp.min_nds_version", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_ver_include, + { "Include NDS Version", "ncp.inc_nds_ver", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_ver_exclude, + { "Exclude NDS Version", "ncp.exc_nds_ver", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_es, + { "Input Entry Specifier", "ncp.nds_es", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_es_type, + { "Entry Specifier Type", "ncp.nds_es_type", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_rdn_string, + { "RDN", "ncp.nds_rdn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_delim_string, + { "Delimeter", "ncp.nds_delim", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_dn_output_type, + { "Output Entry Specifier Type", "ncp.nds_out_es_type", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_nested_output_type, + { "Nested Output Entry Specifier Type", "ncp.nds_nested_out_es", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_output_delimiter, + { "Output Delimiter", "ncp.nds_out_delimiter", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_output_entry_specifier, + { "Output Entry Specifier", "ncp.nds_out_es", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_es_value, + { "Entry Specifier Value", "ncp.nds_es_value", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_es_rdn_count, + { "RDN Count", "ncp.nds_es_rdn_count", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_replica_num, + { "Replica Number", "ncp.nds_replica_num", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_es_seconds, + { "Seconds", "ncp.nds_es_seconds", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_event_num, + { "Event Number", "ncp.nds_event_num", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_compare_results, + { "Compare Results", "ncp.nds_compare_results", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_parent, + { "Parent ID", "ncp.nds_parent", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_name_filter, + { "Name Filter", "ncp.nds_name_filter", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_class_filter, + { "Class Filter", "ncp.nds_class_filter", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_time_filter, + { "Time Filter", "ncp.nds_time_filter", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_partition_root_id, + { "Partition Root ID", "ncp.nds_partition_root_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_replicas, + { "Replicas", "ncp.nds_replicas", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_purge, + { "Purge Time", "ncp.nds_purge", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_local_partition, + { "Local Partition ID", "ncp.nds_local_partition", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_partition_busy, + { "Partition Busy", "ncp.nds_partition_busy", FT_BOOLEAN, 16, NULL, 0x0, "", HFILL }}, + + { &hf_nds_number_of_changes, + { "Number of Attribute Changes", "ncp.nds_number_of_changes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_sub_count, + { "Subordinate Count", "ncp.sub_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_revision, + { "Revision Count", "ncp.nds_rev_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_base_class, + { "Base Class", "ncp.nds_base_class", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_relative_dn, + { "Relative Distinguished Name", "ncp.nds_relative_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_root_dn, + { "Root Distinguished Name", "ncp.nds_root_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_parent_dn, + { "Parent Distinguished Name", "ncp.nds_parent_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_deref_base, + { "Dereference Base Class", "ncp.nds_deref_base", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_base, + { "Base Class", "ncp.nds_base", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_super, + { "Super Class", "ncp.nds_super", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_entry_info, + { "Entry Information", "ncp.nds_entry_info", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_privileges, + { "Privileges", "ncp.nds_privileges", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_vflags, + { "Value Flags", "ncp.nds_vflags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_value_len, + { "Value Length", "ncp.nds_vlength", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_cflags, + { "Class Flags", "ncp.nds_cflags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_asn1, + { "ASN.1 ID", "ncp.nds_asn1", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_acflags, + { "Attribute Constraint Flags", "ncp.nds_acflags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_upper, + { "Upper Limit Value", "ncp.nds_upper", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_lower, + { "Lower Limit Value", "ncp.nds_lower", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_trustee_dn, + { "Trustee Distinguished Name", "ncp.nds_trustee_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_attribute_dn, + { "Attribute Name", "ncp.nds_attribute_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_acl_add, + { "Access Control Lists to Add", "ncp.nds_acl_add", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_acl_del, + { "Access Control Lists to Delete", "ncp.nds_acl_del", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_att_add, + { "Attribute to Add", "ncp.nds_att_add", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_att_del, + { "Attribute to Delete", "ncp.nds_att_del", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_keep, + { "Delete Original RDN", "ncp.nds_keep", FT_BOOLEAN, 32, NULL, 0x0, "", HFILL }}, + + { &hf_nds_new_rdn, + { "New Relative Distinguished Name", "ncp.nds_new_rdn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_time_delay, + { "Time Delay", "ncp.nds_time_delay", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_root_name, + { "Root Most Object Name", "ncp.nds_root_name", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_new_part_id, + { "New Partition Root ID", "ncp.nds_new_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_child_part_id, + { "Child Partition Root ID", "ncp.nds_child_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_master_part_id, + { "Master Partition Root ID", "ncp.nds_master_part_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_target_name, + { "Target Server Name", "ncp.nds_target_dn", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + + { &hf_bit1pingflags1, + { "Supported Fields", "ncp.bit1pingflags1", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2pingflags1, + { "Depth", "ncp.bit2pingflags1", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3pingflags1, + { "Revision", "ncp.bit3pingflags1", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4pingflags1, + { "Flags", "ncp.bit4pingflags1", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5pingflags1, + { "Verification Flags", "ncp.bit5pingflags1", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6pingflags1, + { "Letter Version", "ncp.bit6pingflags1", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7pingflags1, + { "OS Version", "ncp.bit7pingflags1", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8pingflags1, + { "License Flags", "ncp.bit8pingflags1", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9pingflags1, + { "DS Time", "ncp.bit9pingflags1", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10pingflags1, + { "Not Defined", "ncp.bit10pingflags1", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11pingflags1, + { "Not Defined", "ncp.bit11pingflags1", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12pingflags1, + { "Not Defined", "ncp.bit12pingflags1", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13pingflags1, + { "Not Defined", "ncp.bit13pingflags1", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14pingflags1, + { "Not Defined", "ncp.bit14pingflags1", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15pingflags1, + { "Not Defined", "ncp.bit15pingflags1", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16pingflags1, + { "Not Defined", "ncp.bit16pingflags1", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1pingflags2, + { "Sap Name", "ncp.bit1pingflags2", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2pingflags2, + { "Tree Name", "ncp.bit2pingflags2", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3pingflags2, + { "OS Name", "ncp.bit3pingflags2", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4pingflags2, + { "Hardware Name", "ncp.bit4pingflags2", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5pingflags2, + { "Vendor Name", "ncp.bit5pingflags2", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6pingflags2, + { "Not Defined", "ncp.bit6pingflags2", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7pingflags2, + { "Not Defined", "ncp.bit7pingflags2", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8pingflags2, + { "Not Defined", "ncp.bit8pingflags2", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9pingflags2, + { "Not Defined", "ncp.bit9pingflags2", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10pingflags2, + { "Not Defined", "ncp.bit10pingflags2", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11pingflags2, + { "Not Defined", "ncp.bit11pingflags2", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12pingflags2, + { "Not Defined", "ncp.bit12pingflags2", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13pingflags2, + { "Not Defined", "ncp.bit13pingflags2", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14pingflags2, + { "Not Defined", "ncp.bit14pingflags2", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15pingflags2, + { "Not Defined", "ncp.bit15pingflags2", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16pingflags2, + { "Not Defined", "ncp.bit16pingflags2", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1pingpflags1, + { "Root Most Master Replica", "ncp.bit1pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2pingpflags1, + { "Time Synchronized", "ncp.bit2pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3pingpflags1, + { "Not Defined", "ncp.bit3pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4pingpflags1, + { "Not Defined", "ncp.bit4pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5pingpflags1, + { "Not Defined", "ncp.bit5pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6pingpflags1, + { "Not Defined", "ncp.bit6pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7pingpflags1, + { "Not Defined", "ncp.bit7pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8pingpflags1, + { "Not Defined", "ncp.bit8pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9pingpflags1, + { "Not Defined", "ncp.bit9pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10pingpflags1, + { "Not Defined", "ncp.bit10pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11pingpflags1, + { "Not Defined", "ncp.bit11pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12pingpflags1, + { "Not Defined", "ncp.bit12pingpflags1", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13pingpflags1, + { "Not Defined", "ncp.bit13pingpflags1", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14pingpflags1, + { "Not Defined", "ncp.bit14pingpflags1", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15pingpflags1, + { "Not Defined", "ncp.bit15pingpflags1", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16pingpflags1, + { "Not Defined", "ncp.bit16pingpflags1", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_bit1pingvflags1, + { "Checksum", "ncp.bit1pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2pingvflags1, + { "CRC32", "ncp.bit2pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3pingvflags1, + { "Not Defined", "ncp.bit3pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4pingvflags1, + { "Not Defined", "ncp.bit4pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5pingvflags1, + { "Not Defined", "ncp.bit5pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6pingvflags1, + { "Not Defined", "ncp.bit6pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7pingvflags1, + { "Not Defined", "ncp.bit7pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8pingvflags1, + { "Not Defined", "ncp.bit8pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9pingvflags1, + { "Not Defined", "ncp.bit9pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10pingvflags1, + { "Not Defined", "ncp.bit10pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11pingvflags1, + { "Not Defined", "ncp.bit11pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12pingvflags1, + { "Not Defined", "ncp.bit12pingvflags1", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13pingvflags1, + { "Not Defined", "ncp.bit13pingvflags1", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14pingvflags1, + { "Not Defined", "ncp.bit14pingvflags1", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15pingvflags1, + { "Not Defined", "ncp.bit15pingvflags1", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16pingvflags1, + { "Not Defined", "ncp.bit16pingvflags1", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_nds_letter_ver, + { "Letter Version", "ncp.nds_letter_ver", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_os_ver, + { "OS Version", "ncp.nds_os_ver", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_lic_flags, + { "License Flags", "ncp.nds_lic_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_ds_time, + { "DS Time", "ncp.nds_ds_time", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_nds_ping_version, + { "Ping Version", "ncp.nds_ping_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_nds_search_scope, + { "Search Scope", "ncp.nds_search_scope", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL }}, + + { &hf_nds_num_objects, + { "Number of Objects to Search", "ncp.nds_num_objects", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + + { &hf_bit1siflags, + { "Names", "ncp.bit1siflags", FT_BOOLEAN, 16, NULL, 0x00000001, "", HFILL }}, + + { &hf_bit2siflags, + { "Names and Values", "ncp.bit2siflags", FT_BOOLEAN, 16, NULL, 0x00000002, "", HFILL }}, + + { &hf_bit3siflags, + { "Effective Privileges", "ncp.bit3siflags", FT_BOOLEAN, 16, NULL, 0x00000004, "", HFILL }}, + + { &hf_bit4siflags, + { "Value Info", "ncp.bit4siflags", FT_BOOLEAN, 16, NULL, 0x00000008, "", HFILL }}, + + { &hf_bit5siflags, + { "Abbreviated Value", "ncp.bit5siflags", FT_BOOLEAN, 16, NULL, 0x00000010, "", HFILL }}, + + { &hf_bit6siflags, + { "Not Defined", "ncp.bit6siflags", FT_BOOLEAN, 16, NULL, 0x00000020, "", HFILL }}, + + { &hf_bit7siflags, + { "Not Defined", "ncp.bit7siflags", FT_BOOLEAN, 16, NULL, 0x00000040, "", HFILL }}, + + { &hf_bit8siflags, + { "Not Defined", "ncp.bit8siflags", FT_BOOLEAN, 16, NULL, 0x00000080, "", HFILL }}, + + { &hf_bit9siflags, + { "Expanded Class", "ncp.bit9siflags", FT_BOOLEAN, 16, NULL, 0x00000100, "", HFILL }}, + + { &hf_bit10siflags, + { "Not Defined", "ncp.bit10siflags", FT_BOOLEAN, 16, NULL, 0x00000200, "", HFILL }}, + + { &hf_bit11siflags, + { "Not Defined", "ncp.bit11siflags", FT_BOOLEAN, 16, NULL, 0x00000400, "", HFILL }}, + + { &hf_bit12siflags, + { "Not Defined", "ncp.bit12siflags", FT_BOOLEAN, 16, NULL, 0x00000800, "", HFILL }}, + + { &hf_bit13siflags, + { "Not Defined", "ncp.bit13siflags", FT_BOOLEAN, 16, NULL, 0x00001000, "", HFILL }}, + + { &hf_bit14siflags, + { "Not Defined", "ncp.bit14siflags", FT_BOOLEAN, 16, NULL, 0x00002000, "", HFILL }}, + + { &hf_bit15siflags, + { "Not Defined", "ncp.bit15siflags", FT_BOOLEAN, 16, NULL, 0x00004000, "", HFILL }}, + + { &hf_bit16siflags, + { "Not Defined", "ncp.bit16siflags", FT_BOOLEAN, 16, NULL, 0x00008000, "", HFILL }}, + + { &hf_nds_segment_overlap, + { "Segment overlap", "nds.segment.overlap", FT_BOOLEAN, BASE_NONE, + NULL, 0x0, "Segment overlaps with other segments", HFILL }}, + + { &hf_nds_segment_overlap_conflict, + { "Conflicting data in segment overlap", "nds.segment.overlap.conflict", + FT_BOOLEAN, BASE_NONE, + NULL, 0x0, "Overlapping segments contained conflicting data", HFILL }}, + + { &hf_nds_segment_multiple_tails, + { "Multiple tail segments found", "nds.segment.multipletails", + FT_BOOLEAN, BASE_NONE, + NULL, 0x0, "Several tails were found when desegmenting the packet", HFILL }}, + + { &hf_nds_segment_too_long_segment, + { "Segment too long", "nds.segment.toolongsegment", FT_BOOLEAN, BASE_NONE, + NULL, 0x0, "Segment contained data past end of packet", HFILL }}, + + { &hf_nds_segment_error, + {"Desegmentation error", "nds.segment.error", FT_FRAMENUM, BASE_NONE, + NULL, 0x0, "Desegmentation error due to illegal segments", HFILL }}, + + { &hf_nds_segment, + { "NDS Fragment", "nds.fragment", FT_FRAMENUM, BASE_NONE, + NULL, 0x0, "NDPS Fragment", HFILL }}, + + { &hf_nds_segments, + { "NDS Fragments", "nds.fragments", FT_NONE, BASE_NONE, + NULL, 0x0, "NDPS Fragments", HFILL }}, + + + + + { &hf_ncp_64_bit_flag, + { "64 Bit Support", "ncp.64_bit_flag", FT_UINT8, BASE_HEX, VALS(ncp_64_bit_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_Service_type, + { "Service Type", "ncp.Service_type", FT_UINT16, BASE_HEX, VALS(ncp_Service_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_abort_q_flag, + { "Abort Queue Flag", "ncp.abort_q_flag", FT_UINT8, BASE_HEX, VALS(ncp_abort_q_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_abs_min_time_since_file_delete, + { "Absolute Minimum Time Since File Delete", "ncp.abs_min_time_since_file_delete", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_acc_mode_comp, + { "Compatibility Mode", "ncp.acc_mode_comp", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_acc_mode_deny_read, + { "Deny Read Access", "ncp.acc_mode_deny_read", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_acc_mode_deny_write, + { "Deny Write Access", "ncp.acc_mode_deny_write", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_acc_mode_read, + { "Read Access", "ncp.acc_mode_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_acc_mode_write, + { "Write Access", "ncp.acc_mode_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_acc_priv_create, + { "Create Privileges (files only)", "ncp.acc_priv_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_acc_priv_delete, + { "Delete Privileges (files only)", "ncp.acc_priv_delete", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_acc_priv_modify, + { "Modify File Status Flags Privileges (files and directories)", "ncp.acc_priv_modify", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_acc_priv_open, + { "Open Privileges (files only)", "ncp.acc_priv_open", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_acc_priv_parent, + { "Parental Privileges (directories only for creating, deleting, and renaming)", "ncp.acc_priv_parent", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_acc_priv_read, + { "Read Privileges (files only)", "ncp.acc_priv_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_acc_priv_search, + { "Search Privileges (directories only)", "ncp.acc_priv_search", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_acc_priv_write, + { "Write Privileges (files only)", "ncp.acc_priv_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_acc_rights1_create, + { "Create Rights", "ncp.acc_rights1_create", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_acc_rights1_delete, + { "Delete Rights", "ncp.acc_rights1_delete", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_acc_rights1_modify, + { "Modify Rights", "ncp.acc_rights1_modify", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_acc_rights1_open, + { "Open Rights", "ncp.acc_rights1_open", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_acc_rights1_parent, + { "Parental Rights", "ncp.acc_rights1_parent", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_acc_rights1_read, + { "Read Rights", "ncp.acc_rights1_read", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_acc_rights1_search, + { "Search Rights", "ncp.acc_rights1_search", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_acc_rights1_supervisor, + { "Supervisor Access Rights", "ncp.acc_rights1_supervisor", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_acc_rights1_write, + { "Write Rights", "ncp.acc_rights1_write", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_acc_rights_create, + { "Create Rights", "ncp.acc_rights_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_acc_rights_delete, + { "Delete Rights", "ncp.acc_rights_delete", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_acc_rights_modify, + { "Modify Rights", "ncp.acc_rights_modify", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_acc_rights_open, + { "Open Rights", "ncp.acc_rights_open", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_acc_rights_parent, + { "Parental Rights", "ncp.acc_rights_parent", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_acc_rights_read, + { "Read Rights", "ncp.acc_rights_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_acc_rights_search, + { "Search Rights", "ncp.acc_rights_search", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_acc_rights_write, + { "Write Rights", "ncp.acc_rights_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_accel_cache_node_write, + { "Accelerate Cache Node Write Count", "ncp.accel_cache_node_write", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_accepted_max_size, + { "Accepted Max Size", "ncp.accepted_max_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_access_control, + { "Access Control", "ncp.access_control", FT_UINT8, BASE_HEX, VALS(ncp_access_control_vals), 0x0, "", HFILL }}, + + { &hf_ncp_access_date, + { "Access Date", "ncp.access_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_access_mode, + { "Access Mode", "ncp.access_mode", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_access_privileges, + { "Access Privileges", "ncp.access_privileges", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_access_rights_mask, + { "Access Rights", "ncp.access_rights_mask", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_access_rights_mask_word, + { "Access Rights", "ncp.access_rights_mask_word", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_account_balance, + { "Account Balance", "ncp.account_balance", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_acct_version, + { "Acct Version", "ncp.acct_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_act_flag_create, + { "Create", "ncp.act_flag_create", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_act_flag_open, + { "Open", "ncp.act_flag_open", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_act_flag_replace, + { "Replace", "ncp.act_flag_replace", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_action_flag, + { "Action Flag", "ncp.action_flag", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_active_conn_bit_list, + { "Active Connection List", "ncp.active_conn_bit_list", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_active_indexed_files, + { "Active Indexed Files", "ncp.active_indexed_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_bindery_objects, + { "Actual Max Bindery Objects", "ncp.actual_max_bindery_objects", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_indexed_files, + { "Actual Max Indexed Files", "ncp.actual_max_indexed_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_open_files, + { "Actual Max Open Files", "ncp.actual_max_open_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_sim_trans, + { "Actual Max Simultaneous Transactions", "ncp.actual_max_sim_trans", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_used_directory_entries, + { "Actual Max Used Directory Entries", "ncp.actual_max_used_directory_entries", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_max_used_routing_buffers, + { "Actual Max Used Routing Buffers", "ncp.actual_max_used_routing_buffers", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_actual_response_count, + { "Actual Response Count", "ncp.actual_response_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_add_nm_spc_and_vol, + { "Add Name Space and Volume", "ncp.add_nm_spc_and_vol", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_address, + { "Address", "ncp.address", FT_UINT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_aes_event_count, + { "AES Event Count", "ncp.aes_event_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_afp_entry_id, + { "AFP Entry ID", "ncp.afp_entry_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_avail_byte, + { "Bytes Available for Allocation", "ncp.alloc_avail_byte", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck, + { "Allocate Block Count", "ncp.alloc_blck", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck_already_wait, + { "Allocate Block Already Waiting", "ncp.alloc_blck_already_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck_frm_avail, + { "Allocate Block From Available Count", "ncp.alloc_blck_frm_avail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck_frm_lru, + { "Allocate Block From LRU Count", "ncp.alloc_blck_frm_lru", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck_i_had_to_wait, + { "Allocate Block I Had To Wait Count", "ncp.alloc_blck_i_had_to_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_blck_i_had_to_wait_for, + { "Allocate Block I Had To Wait For Someone Count", "ncp.alloc_blck_i_had_to_wait_for", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_free_count, + { "Reclaimable Free Bytes", "ncp.alloc_free_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_alloc_waiting, + { "Allocate Waiting Count", "ncp.alloc_waiting", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_allocate_mode, + { "Allocate Mode", "ncp.allocate_mode", FT_UINT16, BASE_HEX, VALS(ncp_allocate_mode_vals), 0x0, "", HFILL }}, + + { &hf_ncp_allocation_block_size, + { "Allocation Block Size", "ncp.allocation_block_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_already_doing_realloc, + { "Already Doing Re-Allocate Count", "ncp.already_doing_realloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_application_number, + { "Application Number", "ncp.application_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_archived_date, + { "Archived Date", "ncp.archived_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_archived_time, + { "Archived Time", "ncp.archived_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_archiver_id, + { "Archiver ID", "ncp.archiver_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_associated_name_space, + { "Associated Name Space", "ncp.associated_name_space", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_async_internl_dsk_get, + { "Async Internal Disk Get Count", "ncp.async_internl_dsk_get", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_async_internl_dsk_get_need_to_alloc, + { "Async Internal Disk Get Need To Alloc", "ncp.async_internl_dsk_get_need_to_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_async_internl_dsk_get_someone_beat, + { "Async Internal Disk Get Someone Beat Me", "ncp.async_internl_dsk_get_someone_beat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_async_read_error, + { "Async Read Error Count", "ncp.async_read_error", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_att_def16_archive, + { "Archive", "ncp.att_def16_archive", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_att_def16_execute, + { "Execute", "ncp.att_def16_execute", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_att_def16_hidden, + { "Hidden", "ncp.att_def16_hidden", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_att_def16_read_audit, + { "Read Audit", "ncp.att_def16_read_audit", FT_BOOLEAN, 16, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_att_def16_ro, + { "Read Only", "ncp.att_def16_ro", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_att_def16_shareable, + { "Shareable", "ncp.att_def16_shareable", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_att_def16_sub_only, + { "Subdirectory", "ncp.att_def16_sub_only", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_att_def16_system, + { "System", "ncp.att_def16_system", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_att_def16_transaction, + { "Transactional", "ncp.att_def16_transaction", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_att_def16_write_audit, + { "Write Audit", "ncp.att_def16_write_audit", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_att_def32_archive, + { "Archive", "ncp.att_def32_archive", FT_BOOLEAN, 32, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_att_def32_execute, + { "Execute", "ncp.att_def32_execute", FT_BOOLEAN, 32, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_att_def32_hidden, + { "Hidden", "ncp.att_def32_hidden", FT_BOOLEAN, 32, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_att_def32_read_audit, + { "Read Audit", "ncp.att_def32_read_audit", FT_BOOLEAN, 32, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_att_def32_ro, + { "Read Only", "ncp.att_def32_ro", FT_BOOLEAN, 32, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_att_def32_shareable, + { "Shareable", "ncp.att_def32_shareable", FT_BOOLEAN, 32, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_att_def32_sub_only, + { "Subdirectory", "ncp.att_def32_sub_only", FT_BOOLEAN, 32, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_att_def32_system, + { "System", "ncp.att_def32_system", FT_BOOLEAN, 32, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_att_def32_transaction, + { "Transactional", "ncp.att_def32_transaction", FT_BOOLEAN, 32, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_att_def32_write_audit, + { "Write Audit", "ncp.att_def32_write_audit", FT_BOOLEAN, 32, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_att_def_archive, + { "Archive", "ncp.att_def_archive", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_att_def_comp, + { "Compressed", "ncp.att_def_comp", FT_BOOLEAN, 32, NULL, 0x4000000, "", HFILL }}, + + { &hf_ncp_att_def_cpyinhibit, + { "Copy Inhibit", "ncp.att_def_cpyinhibit", FT_BOOLEAN, 32, NULL, 0x80000, "", HFILL }}, + + { &hf_ncp_att_def_delinhibit, + { "Delete Inhibit", "ncp.att_def_delinhibit", FT_BOOLEAN, 32, NULL, 0x40000, "", HFILL }}, + + { &hf_ncp_att_def_execute, + { "Execute", "ncp.att_def_execute", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_att_def_hidden, + { "Hidden", "ncp.att_def_hidden", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_att_def_im_comp, + { "Immediate Compress", "ncp.att_def_im_comp", FT_BOOLEAN, 32, NULL, 0x2000000, "", HFILL }}, + + { &hf_ncp_att_def_purge, + { "Purge", "ncp.att_def_purge", FT_BOOLEAN, 32, NULL, 0x10000, "", HFILL }}, + + { &hf_ncp_att_def_reninhibit, + { "Rename Inhibit", "ncp.att_def_reninhibit", FT_BOOLEAN, 32, NULL, 0x20000, "", HFILL }}, + + { &hf_ncp_att_def_ro, + { "Read Only", "ncp.att_def_ro", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_att_def_shareable, + { "Shareable", "ncp.att_def_shareable", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_att_def_sub_only, + { "Subdirectory", "ncp.att_def_sub_only", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_att_def_system, + { "System", "ncp.att_def_system", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_attach_during_processing, + { "Attach During Processing", "ncp.attach_during_processing", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attach_while_processing_attach, + { "Attach While Processing Attach", "ncp.attach_while_processing_attach", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attached_indexed_files, + { "Attached Indexed Files", "ncp.attached_indexed_files", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attr_def, + { "Attributes", "ncp.attr_def", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attr_def_16, + { "Attributes", "ncp.attr_def_16", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attr_def_32, + { "Attributes", "ncp.attr_def_32", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attribute_valid_flag, + { "Attribute Valid Flag", "ncp.attribute_valid_flag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_attributes, + { "Attributes", "ncp.attributes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_enable_flag, + { "Auditing Enabled Flag", "ncp.audit_enable_flag", FT_UINT16, BASE_HEX, VALS(ncp_audit_enable_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_audit_file_max_size, + { "Audit File Maximum Size", "ncp.audit_file_max_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_file_size, + { "Audit File Size", "ncp.audit_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_file_size_threshold, + { "Audit File Size Threshold", "ncp.audit_file_size_threshold", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_file_ver_date, + { "Audit File Version Date", "ncp.audit_file_ver_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_flag, + { "Audit Flag", "ncp.audit_flag", FT_UINT8, BASE_HEX, VALS(ncp_audit_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_audit_handle, + { "Audit File Handle", "ncp.audit_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_id, + { "Audit ID", "ncp.audit_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_id_type, + { "Audit ID Type", "ncp.audit_id_type", FT_UINT16, BASE_HEX, VALS(ncp_audit_id_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_audit_record_count, + { "Audit Record Count", "ncp.audit_record_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_audit_ver_date, + { "Auditing Version Date", "ncp.audit_ver_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_auditing_flags, + { "Auditing Flags", "ncp.auditing_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_avail_space, + { "Available Space", "ncp.avail_space", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_available_blocks, + { "Available Blocks", "ncp.available_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_available_clusters, + { "Available Clusters", "ncp.available_clusters", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_available_dir_entries, + { "Available Directory Entries", "ncp.available_dir_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_available_directory_slots, + { "Available Directory Slots", "ncp.available_directory_slots", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_available_indexed_files, + { "Available Indexed Files", "ncp.available_indexed_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_background_aged_writes, + { "Background Aged Writes", "ncp.background_aged_writes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_background_dirty_writes, + { "Background Dirty Writes", "ncp.background_dirty_writes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bad_logical_connection_count, + { "Bad Logical Connection Count", "ncp.bad_logical_connection_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_banner_name, + { "Banner Name", "ncp.banner_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_base_directory_id, + { "Base Directory ID", "ncp.base_directory_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_being_aborted, + { "Being Aborted Count", "ncp.being_aborted", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_being_processed, + { "Being Processed Count", "ncp.being_processed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_forged_packet, + { "Big Forged Packet Count", "ncp.big_forged_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_invalid_packet, + { "Big Invalid Packet Count", "ncp.big_invalid_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_invalid_slot, + { "Big Invalid Slot Count", "ncp.big_invalid_slot", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_being_torn_down, + { "Big Read Being Torn Down Count", "ncp.big_read_being_torn_down", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_do_it_over, + { "Big Read Do It Over Count", "ncp.big_read_do_it_over", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_invalid_mess, + { "Big Read Invalid Message Number Count", "ncp.big_read_invalid_mess", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_no_data_avail, + { "Big Read No Data Available Count", "ncp.big_read_no_data_avail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_phy_read_err, + { "Big Read Physical Read Error Count", "ncp.big_read_phy_read_err", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_read_trying_to_read, + { "Big Read Trying To Read Too Much Count", "ncp.big_read_trying_to_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_repeat_the_file_read, + { "Big Repeat the File Read Count", "ncp.big_repeat_the_file_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_return_abort_mess, + { "Big Return Abort Message Count", "ncp.big_return_abort_mess", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_send_extra_cc_count, + { "Big Send Extra CC Count", "ncp.big_send_extra_cc_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_still_transmitting, + { "Big Still Transmitting Count", "ncp.big_still_transmitting", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_write_being_abort, + { "Big Write Being Aborted Count", "ncp.big_write_being_abort", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_write_being_torn_down, + { "Big Write Being Torn Down Count", "ncp.big_write_being_torn_down", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_big_write_inv_message_num, + { "Big Write Invalid Message Number Count", "ncp.big_write_inv_message_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bindery_context, + { "Bindery Context", "ncp.bindery_context", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bit_map, + { "Bit Map", "ncp.bit_map", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_block_number, + { "Block Number", "ncp.block_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_block_size, + { "Block Size", "ncp.block_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_block_size_in_sectors, + { "Block Size in Sectors", "ncp.block_size_in_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_board_installed, + { "Board Installed", "ncp.board_installed", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_board_number, + { "Board Number", "ncp.board_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_board_numbers, + { "Board Numbers", "ncp.board_numbers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_buffer_size, + { "Buffer Size", "ncp.buffer_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bumped_out_of_order, + { "Bumped Out Of Order Write Count", "ncp.bumped_out_of_order", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bus_string, + { "Bus String", "ncp.bus_string", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bus_type, + { "Bus Type", "ncp.bus_type", FT_UINT8, BASE_HEX, VALS(ncp_bus_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_bytes_actually_transferred, + { "Bytes Actually Transferred", "ncp.bytes_actually_transferred", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bytes_read, + { "Bytes Read", "ncp.bytes_read", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bytes_to_copy, + { "Bytes to Copy", "ncp.bytes_to_copy", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_bytes_written, + { "Bytes Written", "ncp.bytes_written", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_allocations, + { "Cache Allocations", "ncp.cache_allocations", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_block_scrapped, + { "Cache Block Scrapped", "ncp.cache_block_scrapped", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_buffer_count, + { "Cache Buffer Count", "ncp.cache_buffer_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_buffer_size, + { "Cache Buffer Size", "ncp.cache_buffer_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_byte_to_block, + { "Cache Byte To Block Shift Factor", "ncp.cache_byte_to_block", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_dirty_block_thresh, + { "Cache Dirty Block Threshold", "ncp.cache_dirty_block_thresh", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_dirty_wait_time, + { "Cache Dirty Wait Time", "ncp.cache_dirty_wait_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_full_write_requests, + { "Cache Full Write Requests", "ncp.cache_full_write_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_get_requests, + { "Cache Get Requests", "ncp.cache_get_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_hit_on_unavailable_block, + { "Cache Hit On Unavailable Block", "ncp.cache_hit_on_unavailable_block", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_hits, + { "Cache Hits", "ncp.cache_hits", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_max_concur_writes, + { "Cache Maximum Concurrent Writes", "ncp.cache_max_concur_writes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_misses, + { "Cache Misses", "ncp.cache_misses", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_partial_write_requests, + { "Cache Partial Write Requests", "ncp.cache_partial_write_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_read_requests, + { "Cache Read Requests", "ncp.cache_read_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_used_while_check, + { "Cache Used While Checking", "ncp.cache_used_while_check", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cache_write_requests, + { "Cache Write Requests", "ncp.cache_write_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_category_name, + { "Category Name", "ncp.category_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cc_file_handle, + { "File Handle", "ncp.cc_file_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cc_function, + { "OP-Lock Flag", "ncp.cc_function", FT_UINT8, BASE_HEX, VALS(ncp_cc_function_vals), 0x0, "", HFILL }}, + + { &hf_ncp_cfg_max_simultaneous_transactions, + { "Configured Max Simultaneous Transactions", "ncp.cfg_max_simultaneous_transactions", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_change_bits, + { "Change Bits", "ncp.change_bits", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_change_bits_acc_date, + { "Access Date", "ncp.change_bits_acc_date", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_change_bits_adate, + { "Archive Date", "ncp.change_bits_adate", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_change_bits_aid, + { "Archiver ID", "ncp.change_bits_aid", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_change_bits_atime, + { "Archive Time", "ncp.change_bits_atime", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_change_bits_cdate, + { "Creation Date", "ncp.change_bits_cdate", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_change_bits_ctime, + { "Creation Time", "ncp.change_bits_ctime", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_change_bits_fatt, + { "File Attributes", "ncp.change_bits_fatt", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_change_bits_max_acc_mask, + { "Maximum Access Mask", "ncp.change_bits_max_acc_mask", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_change_bits_max_space, + { "Maximum Space", "ncp.change_bits_max_space", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_change_bits_modify, + { "Modify Name", "ncp.change_bits_modify", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_change_bits_owner, + { "Owner ID", "ncp.change_bits_owner", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_change_bits_udate, + { "Update Date", "ncp.change_bits_udate", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_change_bits_uid, + { "Update ID", "ncp.change_bits_uid", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_change_bits_utime, + { "Update Time", "ncp.change_bits_utime", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_channel_state, + { "Channel State", "ncp.channel_state", FT_UINT8, BASE_HEX, VALS(ncp_channel_state_vals), 0x0, "", HFILL }}, + + { &hf_ncp_channel_synchronization_state, + { "Channel Synchronization State", "ncp.channel_synchronization_state", FT_UINT8, BASE_HEX, VALS(ncp_channel_synchronization_state_vals), 0x0, "", HFILL }}, + + { &hf_ncp_charge_amount, + { "Charge Amount", "ncp.charge_amount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_charge_information, + { "Charge Information", "ncp.charge_information", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_checksum_error_count, + { "Checksum Error Count", "ncp.checksum_error_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_checksuming, + { "Checksumming", "ncp.checksuming", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_client_comp_flag, + { "Completion Flag", "ncp.client_comp_flag", FT_UINT16, BASE_HEX, VALS(ncp_client_comp_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_client_id_number, + { "Client ID Number", "ncp.client_id_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_list, + { "Client List", "ncp.client_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_list_cnt, + { "Client List Count", "ncp.client_list_cnt", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_list_len, + { "Client List Length", "ncp.client_list_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_name, + { "Client Name", "ncp.client_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_record_area, + { "Client Record Area", "ncp.client_record_area", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_station, + { "Client Station", "ncp.client_station", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_station_long, + { "Client Station", "ncp.client_station_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_task_number, + { "Client Task Number", "ncp.client_task_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_client_task_number_long, + { "Client Task Number", "ncp.client_task_number_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cluster_count, + { "Cluster Count", "ncp.cluster_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_clusters_used_by_directories, + { "Clusters Used by Directories", "ncp.clusters_used_by_directories", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_clusters_used_by_extended_dirs, + { "Clusters Used by Extended Directories", "ncp.clusters_used_by_extended_dirs", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_clusters_used_by_fat, + { "Clusters Used by FAT", "ncp.clusters_used_by_fat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmd_flags_advanced, + { "Advanced", "ncp.cmd_flags_advanced", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_cmd_flags_hidden, + { "Hidden", "ncp.cmd_flags_hidden", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_cmd_flags_later, + { "Restart Server Required to Take Effect", "ncp.cmd_flags_later", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_cmd_flags_secure, + { "Console Secured", "ncp.cmd_flags_secure", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_cmd_flags_startup_only, + { "Startup.ncf Only", "ncp.cmd_flags_startup_only", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_cmpbyteincount, + { "Compress Byte In Count", "ncp.cmpbyteincount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmpbyteoutcnt, + { "Compress Byte Out Count", "ncp.cmpbyteoutcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmphibyteincnt, + { "Compress High Byte In Count", "ncp.cmphibyteincnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmphibyteoutcnt, + { "Compress High Byte Out Count", "ncp.cmphibyteoutcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmphitickcnt, + { "Compress High Tick Count", "ncp.cmphitickcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cmphitickhigh, + { "Compress High Tick", "ncp.cmphitickhigh", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_co_proc_string, + { "CoProcessor String", "ncp.co_proc_string", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_co_processor_flag, + { "CoProcessor Present Flag", "ncp.co_processor_flag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_com_cnts, + { "Communication Counters", "ncp.com_cnts", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_comment, + { "Comment", "ncp.comment", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_comment_type, + { "Comment Type", "ncp.comment_type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_complete_signatures, + { "Complete Signatures", "ncp.complete_signatures", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_compress_volume, + { "Volume Compression", "ncp.compress_volume", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compressed_data_streams_count, + { "Compressed Data Streams Count", "ncp.compressed_data_streams_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compressed_limbo_data_streams_count, + { "Compressed Limbo Data Streams Count", "ncp.compressed_limbo_data_streams_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compressed_sectors, + { "Compressed Sectors", "ncp.compressed_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compression_ios_limit, + { "Compression IOs Limit", "ncp.compression_ios_limit", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compression_lower_limit, + { "Compression Lower Limit", "ncp.compression_lower_limit", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_compression_stage, + { "Compression Stage", "ncp.compression_stage", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_config_major_vn, + { "Configuration Major Version Number", "ncp.config_major_vn", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_config_minor_vn, + { "Configuration Minor Version Number", "ncp.config_minor_vn", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_configuration_description, + { "Configuration Description", "ncp.configuration_description", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_configuration_text, + { "Configuration Text", "ncp.configuration_text", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_configured_max_bindery_objects, + { "Configured Max Bindery Objects", "ncp.configured_max_bindery_objects", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_configured_max_open_files, + { "Configured Max Open Files", "ncp.configured_max_open_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_configured_max_routing_buffers, + { "Configured Max Routing Buffers", "ncp.configured_max_routing_buffers", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_being_aborted, + { "Connection Being Aborted Count", "ncp.conn_being_aborted", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_ctrl_bits, + { "Connection Control", "ncp.conn_ctrl_bits", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_list, + { "Connection List", "ncp.conn_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_list_count, + { "Connection List Count", "ncp.conn_list_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_list_len, + { "Connection List Length", "ncp.conn_list_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_number_byte, + { "Connection Number", "ncp.conn_number_byte", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_conn_number_word, + { "Connection Number", "ncp.conn_number_word", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connected_lan, + { "LAN Adapter", "ncp.connected_lan", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connection_list, + { "Connection List", "ncp.connection_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connection_number, + { "Connection Number", "ncp.connection_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connection_number_list, + { "Connection Number List", "ncp.connection_number_list", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connection_service_type, + { "Connection Service Type", "ncp.connection_service_type", FT_UINT8, BASE_HEX, VALS(ncp_connection_service_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_connection_type, + { "Connection Type", "ncp.connection_type", FT_UINT8, BASE_HEX, VALS(ncp_connection_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_connections_in_use, + { "Connections In Use", "ncp.connections_in_use", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connections_max_used, + { "Connections Max Used", "ncp.connections_max_used", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_connections_supported_max, + { "Connections Supported Max", "ncp.connections_supported_max", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_control_being_torn_down, + { "Control Being Torn Down Count", "ncp.control_being_torn_down", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_control_flags, + { "Control Flags", "ncp.control_flags", FT_UINT8, BASE_HEX, VALS(ncp_control_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_control_invalid_message_number, + { "Control Invalid Message Number Count", "ncp.control_invalid_message_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_controller_drive_number, + { "Controller Drive Number", "ncp.controller_drive_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_controller_number, + { "Controller Number", "ncp.controller_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_controller_type, + { "Controller Type", "ncp.controller_type", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cookie_1, + { "Cookie 1", "ncp.cookie_1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cookie_2, + { "Cookie 2", "ncp.cookie_2", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_copies, + { "Copies", "ncp.copies", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_copyright, + { "Copyright", "ncp.copyright", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_counter_mask, + { "Counter Mask", "ncp.counter_mask", FT_UINT8, BASE_HEX, VALS(ncp_counter_mask_vals), 0x0, "", HFILL }}, + + { &hf_ncp_cpu_number, + { "CPU Number", "ncp.cpu_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cpu_string, + { "CPU String", "ncp.cpu_string", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cpu_type, + { "CPU Type", "ncp.cpu_type", FT_UINT8, BASE_HEX, VALS(ncp_cpu_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_creation_date, + { "Creation Date", "ncp.creation_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_creation_time, + { "Creation Time", "ncp.creation_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_creator_id, + { "Creator ID", "ncp.creator_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_creator_name_space_number, + { "Creator Name Space Number", "ncp.creator_name_space_number", FT_UINT8, BASE_HEX, VALS(ncp_creator_name_space_number_vals), 0x0, "", HFILL }}, + + { &hf_ncp_credit_limit, + { "Credit Limit", "ncp.credit_limit", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ctl_bad_ack_frag_list, + { "Control Bad ACK Fragment List Count", "ncp.ctl_bad_ack_frag_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ctl_no_data_read, + { "Control No Data Read Count", "ncp.ctl_no_data_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ctrl_flags, + { "Control Flags", "ncp.ctrl_flags", FT_UINT16, BASE_HEX, VALS(ncp_ctrl_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_cur_blk_being_dcompress, + { "Current Block Being Decompressed", "ncp.cur_blk_being_dcompress", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cur_comp_blks, + { "Current Compression Blocks", "ncp.cur_comp_blks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cur_initial_blks, + { "Current Initial Blocks", "ncp.cur_initial_blks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cur_inter_blks, + { "Current Intermediate Blocks", "ncp.cur_inter_blks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_cur_num_of_r_tags, + { "Current Number of Resource Tags", "ncp.cur_num_of_r_tags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_curr_num_cache_buff, + { "Current Number Of Cache Buffers", "ncp.curr_num_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_curr_ref_id, + { "Current Reference ID", "ncp.curr_ref_id", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_changed_fats, + { "Current Changed FAT Entries", "ncp.current_changed_fats", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_entries, + { "Current Entries", "ncp.current_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_form_type, + { "Current Form Type", "ncp.current_form_type", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_lfs_counters, + { "Current LFS Counters", "ncp.current_lfs_counters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_open_files, + { "Current Open Files", "ncp.current_open_files", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_server_time, + { "Time Elapsed Since Server Was Brought Up", "ncp.current_server_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_servers, + { "Current Servers", "ncp.current_servers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_space, + { "Current Space", "ncp.current_space", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_trans_count, + { "Current Transaction Count", "ncp.current_trans_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_current_used_bindery_objects, + { "Current Used Bindery Objects", "ncp.current_used_bindery_objects", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_currently_used_routing_buffers, + { "Currently Used Routing Buffers", "ncp.currently_used_routing_buffers", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_custom_cnts, + { "Custom Counters", "ncp.custom_cnts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_custom_count, + { "Custom Count", "ncp.custom_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_custom_counters, + { "Custom Counters", "ncp.custom_counters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_custom_string, + { "Custom String", "ncp.custom_string", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_custom_var_value, + { "Custom Variable Value", "ncp.custom_var_value", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data, + { "Data", "ncp.data", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_fork_first_fat, + { "Data Fork First FAT Entry", "ncp.data_fork_first_fat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_fork_len, + { "Data Fork Len", "ncp.data_fork_len", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_fork_size, + { "Data Fork Size", "ncp.data_fork_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_size, + { "Data Size", "ncp.data_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_stream, + { "Data Stream", "ncp.data_stream", FT_UINT8, BASE_HEX, VALS(ncp_data_stream_vals), 0x0, "", HFILL }}, + + { &hf_ncp_data_stream_name, + { "Data Stream Name", "ncp.data_stream_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_stream_number, + { "Data Stream Number", "ncp.data_stream_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_stream_size, + { "Size", "ncp.data_stream_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_stream_space_alloc, + { "Space Allocated for Data Stream", "ncp.data_stream_space_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_data_streams_count, + { "Data Streams Count", "ncp.data_streams_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dc_dirty_wait_time, + { "DC Dirty Wait Time", "ncp.dc_dirty_wait_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dc_double_read_flag, + { "DC Double Read Flag", "ncp.dc_double_read_flag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dc_max_concurrent_writes, + { "DC Maximum Concurrent Writes", "ncp.dc_max_concurrent_writes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dc_min_non_ref_time, + { "DC Minimum Non-Referenced Time", "ncp.dc_min_non_ref_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dc_wait_time_before_new_buff, + { "DC Wait Time Before New Buffer", "ncp.dc_wait_time_before_new_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dead_mirror_table, + { "Dead Mirror Table", "ncp.dead_mirror_table", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dealloc_being_proc, + { "De-Allocate Being Processed Count", "ncp.dealloc_being_proc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dealloc_forged_packet, + { "De-Allocate Forged Packet Count", "ncp.dealloc_forged_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dealloc_invalid_slot, + { "De-Allocate Invalid Slot Count", "ncp.dealloc_invalid_slot", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dealloc_still_transmit, + { "De-Allocate Still Transmitting Count", "ncp.dealloc_still_transmit", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decpbyteincount, + { "DeCompress Byte In Count", "ncp.decpbyteincount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decpbyteoutcnt, + { "DeCompress Byte Out Count", "ncp.decpbyteoutcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decphibyteincnt, + { "DeCompress High Byte In Count", "ncp.decphibyteincnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decphibyteoutcnt, + { "DeCompress High Byte Out Count", "ncp.decphibyteoutcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decphitickcnt, + { "DeCompress High Tick Count", "ncp.decphitickcnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_decphitickhigh, + { "DeCompress High Tick", "ncp.decphitickhigh", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_defined_data_streams, + { "Defined Data Streams", "ncp.defined_data_streams", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_defined_name_spaces, + { "Defined Name Spaces", "ncp.defined_name_spaces", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_delete_existing_file_flag, + { "Delete Existing File Flag", "ncp.delete_existing_file_flag", FT_UINT8, BASE_HEX, VALS(ncp_delete_existing_file_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_delete_id, + { "Deleted ID", "ncp.delete_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_deleted_date, + { "Deleted Date", "ncp.deleted_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_deleted_file_time, + { "Deleted File Time", "ncp.deleted_file_time", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_deleted_time, + { "Deleted Time", "ncp.deleted_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_deny_read_count, + { "Deny Read Count", "ncp.deny_read_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_deny_write_count, + { "Deny Write Count", "ncp.deny_write_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_description_string, + { "Description", "ncp.description_string", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_desired_access_rights, + { "Desired Access Rights", "ncp.desired_access_rights", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_desired_response_count, + { "Desired Response Count", "ncp.desired_response_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dest_component_count, + { "Destination Path Component Count", "ncp.dest_component_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dest_dir_handle, + { "Destination Directory Handle", "ncp.dest_dir_handle", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dest_name_space, + { "Destination Name Space", "ncp.dest_name_space", FT_UINT8, BASE_HEX, VALS(ncp_dest_name_space_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dest_path, + { "Destination Path", "ncp.dest_path", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_detach_during_processing, + { "Detach During Processing", "ncp.detach_during_processing", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_detach_for_bad_connection_number, + { "Detach For Bad Connection Number", "ncp.detach_for_bad_connection_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dir_base, + { "Directory Base", "ncp.dir_base", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dir_count, + { "Directory Count", "ncp.dir_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dir_handle, + { "Directory Handle", "ncp.dir_handle", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dir_handle_long, + { "Directory Handle", "ncp.dir_handle_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dir_handle_name, + { "Handle Name", "ncp.dir_handle_name", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_access_rights, + { "Directory Access Rights", "ncp.directory_access_rights", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_attributes, + { "Directory Attributes", "ncp.directory_attributes", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_entry_number, + { "Directory Entry Number", "ncp.directory_entry_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_entry_number_word, + { "Directory Entry Number", "ncp.directory_entry_number_word", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_id, + { "Directory ID", "ncp.directory_id", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_name, + { "Directory Name", "ncp.directory_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_name_14, + { "Directory Name", "ncp.directory_name_14", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_name_len, + { "Directory Name Length", "ncp.directory_name_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_number, + { "Directory Number", "ncp.directory_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_path, + { "Directory Path", "ncp.directory_path", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_services_object_id, + { "Directory Services Object ID", "ncp.directory_services_object_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_directory_stamp, + { "Directory Stamp (0xD1D1)", "ncp.directory_stamp", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dirty_cache_buffers, + { "Dirty Cache Buffers", "ncp.dirty_cache_buffers", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_disable_brdcasts, + { "Disable Broadcasts", "ncp.disable_brdcasts", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_disable_personal_brdcasts, + { "Disable Personal Broadcasts", "ncp.disable_personal_brdcasts", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_disable_wdog_messages, + { "Disable Watchdog Message", "ncp.disable_wdog_messages", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_disk_channel_number, + { "Disk Channel Number", "ncp.disk_channel_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_disk_channel_table, + { "Disk Channel Table", "ncp.disk_channel_table", FT_UINT8, BASE_HEX, VALS(ncp_disk_channel_table_vals), 0x0, "", HFILL }}, + + { &hf_ncp_disk_space_limit, + { "Disk Space Limit", "ncp.disk_space_limit", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dm_flags, + { "DM Flags", "ncp.dm_flags", FT_UINT8, BASE_HEX, VALS(ncp_dm_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dm_info_entries, + { "DM Info Entries", "ncp.dm_info_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dm_info_level, + { "DM Info Level", "ncp.dm_info_level", FT_UINT8, BASE_HEX, VALS(ncp_dm_info_level_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dm_major_version, + { "DM Major Version", "ncp.dm_major_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dm_minor_version, + { "DM Minor Version", "ncp.dm_minor_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dm_present_flag, + { "Data Migration Present Flag", "ncp.dm_present_flag", FT_UINT8, BASE_HEX, VALS(ncp_dm_present_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dma_channels_used, + { "DMA Channels Used", "ncp.dma_channels_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_directory_base, + { "DOS Directory Base", "ncp.dos_directory_base", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_directory_entry, + { "DOS Directory Entry", "ncp.dos_directory_entry", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_directory_entry_number, + { "DOS Directory Entry Number", "ncp.dos_directory_entry_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_file_attributes, + { "DOS File Attributes", "ncp.dos_file_attributes", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_parent_directory_entry, + { "DOS Parent Directory Entry", "ncp.dos_parent_directory_entry", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dos_sequence, + { "DOS Sequence", "ncp.dos_sequence", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_cylinders, + { "Drive Cylinders", "ncp.drive_cylinders", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_definition_string, + { "Drive Definition", "ncp.drive_definition_string", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_heads, + { "Drive Heads", "ncp.drive_heads", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_mapping_table, + { "Drive Mapping Table", "ncp.drive_mapping_table", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_mirror_table, + { "Drive Mirror Table", "ncp.drive_mirror_table", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_drive_removable_flag, + { "Drive Removable Flag", "ncp.drive_removable_flag", FT_UINT8, BASE_HEX, VALS(ncp_drive_removable_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_drive_size, + { "Drive Size", "ncp.drive_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_driver_board_name, + { "Driver Board Name", "ncp.driver_board_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_driver_log_name, + { "Driver Logical Name", "ncp.driver_log_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_driver_short_name, + { "Driver Short Name", "ncp.driver_short_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_compat, + { "Compatibility", "ncp.dsired_acc_rights_compat", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_del_file_cls, + { "Delete File Close", "ncp.dsired_acc_rights_del_file_cls", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_deny_r, + { "Deny Read", "ncp.dsired_acc_rights_deny_r", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_deny_w, + { "Deny Write", "ncp.dsired_acc_rights_deny_w", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_read_o, + { "Read Only", "ncp.dsired_acc_rights_read_o", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_w_thru, + { "File Write Through", "ncp.dsired_acc_rights_w_thru", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_dsired_acc_rights_write_o, + { "Write Only", "ncp.dsired_acc_rights_write_o", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_dst_ea_flags, + { "Destination EA Flags", "ncp.dst_ea_flags", FT_UINT16, BASE_HEX, VALS(ncp_dst_ea_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dst_ns_indicator, + { "Destination Name Space Indicator", "ncp.dst_ns_indicator", FT_UINT16, BASE_HEX, VALS(ncp_dst_ns_indicator_vals), 0x0, "", HFILL }}, + + { &hf_ncp_dst_queue_id, + { "Destination Queue ID", "ncp.dst_queue_id", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dup_is_being_sent, + { "Duplicate Is Being Sent Already Count", "ncp.dup_is_being_sent", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_duplicate_replies_sent, + { "Duplicate Replies Sent", "ncp.duplicate_replies_sent", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dyn_mem_struct_cur, + { "Current Used Dynamic Space", "ncp.dyn_mem_struct_cur", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dyn_mem_struct_max, + { "Max Used Dynamic Space", "ncp.dyn_mem_struct_max", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_dyn_mem_struct_total, + { "Total Dynamic Space", "ncp.dyn_mem_struct_total", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_access_flag, + { "EA Access Flag", "ncp.ea_access_flag", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_bytes_written, + { "Bytes Written", "ncp.ea_bytes_written", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_count, + { "Count", "ncp.ea_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_data_size, + { "Data Size", "ncp.ea_data_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_data_size_duplicated, + { "Data Size Duplicated", "ncp.ea_data_size_duplicated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_deep_freeze, + { "Deep Freeze", "ncp.ea_deep_freeze", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_ea_delete_privileges, + { "Delete Privileges", "ncp.ea_delete_privileges", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_ea_duplicate_count, + { "Duplicate Count", "ncp.ea_duplicate_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_error_codes, + { "EA Error Codes", "ncp.ea_error_codes", FT_UINT16, BASE_HEX, VALS(ncp_ea_error_codes_vals), 0x0, "", HFILL }}, + + { &hf_ncp_ea_flags, + { "EA Flags", "ncp.ea_flags", FT_UINT16, BASE_HEX, VALS(ncp_ea_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_ea_handle, + { "EA Handle", "ncp.ea_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_handle_or_netware_handle_or_volume, + { "EAHandle or NetWare Handle or Volume (see EAFlags)", "ncp.ea_handle_or_netware_handle_or_volume", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_header_being_enlarged, + { "Header Being Enlarged", "ncp.ea_header_being_enlarged", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_ea_in_progress, + { "In Progress", "ncp.ea_in_progress", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_ea_key, + { "EA Key", "ncp.ea_key", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_key_size, + { "Key Size", "ncp.ea_key_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_key_size_duplicated, + { "Key Size Duplicated", "ncp.ea_key_size_duplicated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_need_bit_flag, + { "EA Need Bit Flag", "ncp.ea_need_bit_flag", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_ea_new_tally_used, + { "New Tally Used", "ncp.ea_new_tally_used", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_ea_permanent_memory, + { "Permanent Memory", "ncp.ea_permanent_memory", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_ea_read_privileges, + { "Read Privileges", "ncp.ea_read_privileges", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_ea_score_card_present, + { "Score Card Present", "ncp.ea_score_card_present", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_ea_system_ea_only, + { "System EA Only", "ncp.ea_system_ea_only", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_ea_tally_need_update, + { "Tally Need Update", "ncp.ea_tally_need_update", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_ea_value, + { "EA Value", "ncp.ea_value", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_value_length, + { "Value Length", "ncp.ea_value_length", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_value_rep, + { "EA Value", "ncp.ea_value_rep", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ea_write_in_progress, + { "Write In Progress", "ncp.ea_write_in_progress", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_ea_write_privileges, + { "Write Privileges", "ncp.ea_write_privileges", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_ecb_cxl_fails, + { "ECB Cancel Failures", "ncp.ecb_cxl_fails", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_echo_socket, + { "Echo Socket", "ncp.echo_socket", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_effective_rights, + { "Effective Rights", "ncp.effective_rights", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_effective_rights_create, + { "Create Rights", "ncp.effective_rights_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_effective_rights_delete, + { "Delete Rights", "ncp.effective_rights_delete", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_effective_rights_modify, + { "Modify Rights", "ncp.effective_rights_modify", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_effective_rights_open, + { "Open Rights", "ncp.effective_rights_open", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_effective_rights_parental, + { "Parental Rights", "ncp.effective_rights_parental", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_effective_rights_read, + { "Read Rights", "ncp.effective_rights_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_effective_rights_search, + { "Search Rights", "ncp.effective_rights_search", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_effective_rights_write, + { "Write Rights", "ncp.effective_rights_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_enable_brdcasts, + { "Enable Broadcasts", "ncp.enable_brdcasts", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_enable_personal_brdcasts, + { "Enable Personal Broadcasts", "ncp.enable_personal_brdcasts", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_enable_wdog_messages, + { "Enable Watchdog Message", "ncp.enable_wdog_messages", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_encryption, + { "Encryption", "ncp.encryption", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_enqueued_send_cnt, + { "Enqueued Send Count", "ncp.enqueued_send_cnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_enum_info_account, + { "Accounting Information", "ncp.enum_info_account", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_enum_info_auth, + { "Authentication Information", "ncp.enum_info_auth", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_enum_info_lock, + { "Lock Information", "ncp.enum_info_lock", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_enum_info_mask, + { "Return Information Mask", "ncp.enum_info_mask", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_enum_info_name, + { "Name Information", "ncp.enum_info_name", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_enum_info_print, + { "Print Information", "ncp.enum_info_print", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_enum_info_stats, + { "Statistical Information", "ncp.enum_info_stats", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_enum_info_time, + { "Time Information", "ncp.enum_info_time", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_enum_info_transport, + { "Transport Information", "ncp.enum_info_transport", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_err_doing_async_read, + { "Error Doing Async Read Count", "ncp.err_doing_async_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_error_read_last_fat, + { "Error Reading Last FAT Count", "ncp.error_read_last_fat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_event_offset, + { "Event Offset", "ncp.event_offset", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_event_time, + { "Event Time", "ncp.event_time", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_expiration_time, + { "Expiration Time", "ncp.expiration_time", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ext_info, + { "Extended Return Information", "ncp.ext_info", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ext_info_64_bit_fs, + { "64 Bit File Sizes", "ncp.ext_info_64_bit_fs", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_ext_info_access, + { "Last Access", "ncp.ext_info_access", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_ext_info_dos_name, + { "DOS Name", "ncp.ext_info_dos_name", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_ext_info_effective, + { "Effective", "ncp.ext_info_effective", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_ext_info_flush, + { "Flush", "ncp.ext_info_flush", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_ext_info_mac_date, + { "MAC Date", "ncp.ext_info_mac_date", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_ext_info_mac_finder, + { "MAC Finder", "ncp.ext_info_mac_finder", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_ext_info_newstyle, + { "New Style", "ncp.ext_info_newstyle", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_ext_info_parental, + { "Parental", "ncp.ext_info_parental", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_ext_info_sibling, + { "Sibling", "ncp.ext_info_sibling", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_ext_info_update, + { "Update", "ncp.ext_info_update", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_ext_router_active_flag, + { "External Router Active Flag", "ncp.ext_router_active_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_extended_attribute_extants_used, + { "Extended Attribute Extants Used", "ncp.extended_attribute_extants_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_extended_attributes_defined, + { "Extended Attributes Defined", "ncp.extended_attributes_defined", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_extra_extra_use_count_node_count, + { "Errors allocating an additional use count node for TTS", "ncp.extra_extra_use_count_node_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_extra_use_count_node_count, + { "Errors allocating a use count node for TTS", "ncp.extra_use_count_node_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_f_size_64bit, + { "64bit File Size", "ncp.f_size_64bit", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_failed_alloc_req, + { "Failed Alloc Request Count", "ncp.failed_alloc_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fat_moved, + { "Number of times the OS has move the location of FAT", "ncp.fat_moved", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fat_scan_errors, + { "FAT Scan Errors", "ncp.fat_scan_errors", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fat_write_err, + { "Number of write errors in both original and mirrored copies of FAT", "ncp.fat_write_err", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fat_write_errors, + { "FAT Write Errors", "ncp.fat_write_errors", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fatal_fat_write_errors, + { "Fatal FAT Write Errors", "ncp.fatal_fat_write_errors", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fields_len_table, + { "Fields Len Table", "ncp.fields_len_table", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_count, + { "File Count", "ncp.file_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_date, + { "File Date", "ncp.file_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_dir_win, + { "File/Dir Window", "ncp.file_dir_win", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_execute_type, + { "File Execute Type", "ncp.file_execute_type", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_ext_attr, + { "File Extended Attributes", "ncp.file_ext_attr", FT_UINT8, BASE_HEX, VALS(ncp_file_ext_attr_vals), 0x0, "", HFILL }}, + + { &hf_ncp_file_flags, + { "File Flags", "ncp.file_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_handle, + { "File Handle", "ncp.file_handle", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_limbo, + { "File Limbo", "ncp.file_limbo", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_list_count, + { "File List Count", "ncp.file_list_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_lock_count, + { "File Lock Count", "ncp.file_lock_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_mode, + { "File Mode", "ncp.file_mode", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_name, + { "Filename", "ncp.file_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_name_12, + { "Filename", "ncp.file_name_12", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_name_14, + { "Filename", "ncp.file_name_14", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_name_len, + { "Filename Length", "ncp.file_name_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_offset, + { "File Offset", "ncp.file_offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_path, + { "File Path", "ncp.file_path", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_size, + { "File Size", "ncp.file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_system_id, + { "File System ID", "ncp.file_system_id", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_time, + { "File Time", "ncp.file_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_file_write_flags, + { "File Write Flags", "ncp.file_write_flags", FT_UINT8, BASE_HEX, VALS(ncp_file_write_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_file_write_state, + { "File Write State", "ncp.file_write_state", FT_UINT8, BASE_HEX, VALS(ncp_file_write_state_vals), 0x0, "", HFILL }}, + + { &hf_ncp_filler, + { "Filler", "ncp.filler", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_finder_attr, + { "Finder Info Attributes", "ncp.finder_attr", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_finder_attr_bundle, + { "Object Has Bundle", "ncp.finder_attr_bundle", FT_BOOLEAN, 16, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_finder_attr_desktop, + { "Object on Desktop", "ncp.finder_attr_desktop", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_finder_attr_invisible, + { "Object is Invisible", "ncp.finder_attr_invisible", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_first_packet_isnt_a_write, + { "First Packet Isn't A Write Count", "ncp.first_packet_isnt_a_write", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fixed_bit_mask, + { "Fixed Bit Mask", "ncp.fixed_bit_mask", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fixed_bits_defined, + { "Fixed Bits Defined", "ncp.fixed_bits_defined", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_flag_bits, + { "Flag Bits", "ncp.flag_bits", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_flags, + { "Flags", "ncp.flags", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_flags_def, + { "Flags", "ncp.flags_def", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_flush_time, + { "Flush Time", "ncp.flush_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_folder_flag, + { "Folder Flag", "ncp.folder_flag", FT_UINT8, BASE_HEX, VALS(ncp_folder_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_force_flag, + { "Force Server Down Flag", "ncp.force_flag", FT_UINT8, BASE_HEX, VALS(ncp_force_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_forged_detached_requests, + { "Forged Detached Requests", "ncp.forged_detached_requests", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_forged_packet, + { "Forged Packet Count", "ncp.forged_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fork_count, + { "Fork Count", "ncp.fork_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fork_indicator, + { "Fork Indicator", "ncp.fork_indicator", FT_UINT8, BASE_HEX, VALS(ncp_fork_indicator_vals), 0x0, "", HFILL }}, + + { &hf_ncp_form_type, + { "Form Type", "ncp.form_type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_form_type_count, + { "Form Types Count", "ncp.form_type_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_found_some_mem, + { "Found Some Memory", "ncp.found_some_mem", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fractional_time, + { "Fractional Time in Seconds", "ncp.fractional_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fragger_handle, + { "Fragment Handle", "ncp.fragger_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fragment_write_occurred, + { "Fragment Write Occurred", "ncp.fragment_write_occurred", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_free_blocks, + { "Free Blocks", "ncp.free_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_free_directory_entries, + { "Free Directory Entries", "ncp.free_directory_entries", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_freeable_limbo_sectors, + { "Freeable Limbo Sectors", "ncp.freeable_limbo_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_freed_clusters, + { "Freed Clusters", "ncp.freed_clusters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_fs_engine_flag, + { "FS Engine Flag", "ncp.fs_engine_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_full_name, + { "Full Name", "ncp.full_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_block_size, + { "Block Size", "ncp.generic_block_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_capacity, + { "Capacity", "ncp.generic_capacity", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_cartridge_type, + { "Cartridge Type", "ncp.generic_cartridge_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_child_count, + { "Child Count", "ncp.generic_child_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_ctl_mask, + { "Control Mask", "ncp.generic_ctl_mask", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_func_mask, + { "Function Mask", "ncp.generic_func_mask", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_ident_time, + { "Identification Time", "ncp.generic_ident_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_ident_type, + { "Identification Type", "ncp.generic_ident_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_label, + { "Label", "ncp.generic_label", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_media_slot, + { "Media Slot", "ncp.generic_media_slot", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_media_type, + { "Media Type", "ncp.generic_media_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_name, + { "Name", "ncp.generic_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_object_uniq_id, + { "Unique Object ID", "ncp.generic_object_uniq_id", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_parent_count, + { "Parent Count", "ncp.generic_parent_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_pref_unit_size, + { "Preferred Unit Size", "ncp.generic_pref_unit_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_sib_count, + { "Sibling Count", "ncp.generic_sib_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_spec_info_sz, + { "Specific Information Size", "ncp.generic_spec_info_sz", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_status, + { "Status", "ncp.generic_status", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_type, + { "Type", "ncp.generic_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_generic_unit_size, + { "Unit Size", "ncp.generic_unit_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_get_ecb_buf, + { "Get ECB Buffers", "ncp.get_ecb_buf", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_get_ecb_fails, + { "Get ECB Failures", "ncp.get_ecb_fails", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_get_set_flag, + { "Get Set Flag", "ncp.get_set_flag", FT_UINT8, BASE_HEX, VALS(ncp_get_set_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_guid, + { "GUID", "ncp.guid", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_had_an_out_of_order, + { "Had An Out Of Order Write Count", "ncp.had_an_out_of_order", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_handle_flag, + { "Handle Flag", "ncp.handle_flag", FT_UINT8, BASE_HEX, VALS(ncp_handle_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_handle_info_level, + { "Handle Info Level", "ncp.handle_info_level", FT_UINT8, BASE_HEX, VALS(ncp_handle_info_level_vals), 0x0, "", HFILL }}, + + { &hf_ncp_hardware_rx_mismatch_count, + { "Hardware Receive Mismatch Count", "ncp.hardware_rx_mismatch_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_held_bytes_read, + { "Held Bytes Read", "ncp.held_bytes_read", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_held_bytes_write, + { "Held Bytes Written", "ncp.held_bytes_write", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_held_conn_time, + { "Held Connect Time in Minutes", "ncp.held_conn_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hold_amount, + { "Hold Amount", "ncp.hold_amount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hold_cancel_amount, + { "Hold Cancel Amount", "ncp.hold_cancel_amount", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hold_time, + { "Hold Time", "ncp.hold_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_holder_id, + { "Holder ID", "ncp.holder_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hops_to_net, + { "Hop Count", "ncp.hops_to_net", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_horiz_location, + { "Horizontal Location", "ncp.horiz_location", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_host_address, + { "Host Address", "ncp.host_address", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hot_fix_blocks_available, + { "Hot Fix Blocks Available", "ncp.hot_fix_blocks_available", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hot_fix_disabled, + { "Hot Fix Disabled", "ncp.hot_fix_disabled", FT_UINT8, BASE_HEX, VALS(ncp_hot_fix_disabled_vals), 0x0, "", HFILL }}, + + { &hf_ncp_hot_fix_table_size, + { "Hot Fix Table Size", "ncp.hot_fix_table_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_hot_fix_table_start, + { "Hot Fix Table Start", "ncp.hot_fix_table_start", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_huge_bit_mask, + { "Huge Bit Mask", "ncp.huge_bit_mask", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_huge_bits_defined, + { "Huge Bits Defined", "ncp.huge_bits_defined", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_huge_data, + { "Huge Data", "ncp.huge_data", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_huge_data_used, + { "Huge Data Used", "ncp.huge_data_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_huge_state_info, + { "Huge State Info", "ncp.huge_state_info", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_i_ran_out_someone_else_did_it_0, + { "I Ran Out Someone Else Did It Count 0", "ncp.i_ran_out_someone_else_did_it_0", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_i_ran_out_someone_else_did_it_1, + { "I Ran Out Someone Else Did It Count 1", "ncp.i_ran_out_someone_else_did_it_1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_i_ran_out_someone_else_did_it_2, + { "I Ran Out Someone Else Did It Count 2", "ncp.i_ran_out_someone_else_did_it_2", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait, + { "ID Get No Read No Wait Count", "ncp.id_get_no_read_no_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_alloc, + { "ID Get No Read No Wait Allocate Count", "ncp.id_get_no_read_no_wait_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_buffer, + { "ID Get No Read No Wait No Buffer Count", "ncp.id_get_no_read_no_wait_buffer", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_no_alloc, + { "ID Get No Read No Wait No Alloc Count", "ncp.id_get_no_read_no_wait_no_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_no_alloc_alloc, + { "ID Get No Read No Wait No Alloc Allocate Count", "ncp.id_get_no_read_no_wait_no_alloc_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_no_alloc_sema, + { "ID Get No Read No Wait No Alloc Semaphored Count", "ncp.id_get_no_read_no_wait_no_alloc_sema", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_id_get_no_read_no_wait_sema, + { "ID Get No Read No Wait Semaphored Count", "ncp.id_get_no_read_no_wait_sema", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_identification_number, + { "Identification Number", "ncp.identification_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ignored_rx_pkts, + { "Ignored Receive Packets", "ncp.ignored_rx_pkts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_in_use, + { "Bytes in Use", "ncp.in_use", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_incoming_packet_discarded_no_dgroup, + { "Incoming Packet Discarded No DGroup", "ncp.incoming_packet_discarded_no_dgroup", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_index_number, + { "Index Number", "ncp.index_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_info_count, + { "Info Count", "ncp.info_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_info_flags, + { "Info Flags", "ncp.info_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_info_flags_all_attr, + { "All Attributes", "ncp.info_flags_all_attr", FT_BOOLEAN, 32, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_info_flags_all_dirbase_num, + { "All Directory Base Numbers", "ncp.info_flags_all_dirbase_num", FT_BOOLEAN, 32, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_info_flags_dos_attr, + { "DOS Attributes", "ncp.info_flags_dos_attr", FT_BOOLEAN, 32, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_info_flags_dos_time, + { "DOS Time", "ncp.info_flags_dos_time", FT_BOOLEAN, 32, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_info_flags_ds_sizes, + { "Data Stream Sizes", "ncp.info_flags_ds_sizes", FT_BOOLEAN, 32, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_info_flags_ea_present, + { "EA Present Flag", "ncp.info_flags_ea_present", FT_BOOLEAN, 32, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_info_flags_effect_rights, + { "Effective Rights", "ncp.info_flags_effect_rights", FT_BOOLEAN, 32, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_info_flags_flags, + { "Return Object Flags", "ncp.info_flags_flags", FT_BOOLEAN, 32, NULL, 0x20000000, "", HFILL }}, + + { &hf_ncp_info_flags_flush_time, + { "Flush Time", "ncp.info_flags_flush_time", FT_BOOLEAN, 32, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_info_flags_ids, + { "ID's", "ncp.info_flags_ids", FT_BOOLEAN, 32, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_info_flags_mac_finder, + { "Mac Finder Information", "ncp.info_flags_mac_finder", FT_BOOLEAN, 32, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_info_flags_mac_time, + { "Mac Time", "ncp.info_flags_mac_time", FT_BOOLEAN, 32, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_info_flags_max_access_mask, + { "Maximum Access Mask", "ncp.info_flags_max_access_mask", FT_BOOLEAN, 32, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_info_flags_name, + { "Return Object Name", "ncp.info_flags_name", FT_BOOLEAN, 32, NULL, 0x80000000, "", HFILL }}, + + { &hf_ncp_info_flags_ns_attr, + { "Name Space Attributes", "ncp.info_flags_ns_attr", FT_BOOLEAN, 32, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_info_flags_prnt_base_id, + { "Parent Base ID", "ncp.info_flags_prnt_base_id", FT_BOOLEAN, 32, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_info_flags_ref_count, + { "Reference Count", "ncp.info_flags_ref_count", FT_BOOLEAN, 32, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_info_flags_security, + { "Return Object Security", "ncp.info_flags_security", FT_BOOLEAN, 32, NULL, 0x10000000, "", HFILL }}, + + { &hf_ncp_info_flags_sibling_cnt, + { "Sibling Count", "ncp.info_flags_sibling_cnt", FT_BOOLEAN, 32, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_info_flags_type, + { "Return Object Type", "ncp.info_flags_type", FT_BOOLEAN, 32, NULL, 0x40000000, "", HFILL }}, + + { &hf_ncp_info_level_num, + { "Information Level Number", "ncp.info_level_num", FT_UINT8, BASE_HEX, VALS(ncp_info_level_num_vals), 0x0, "", HFILL }}, + + { &hf_ncp_info_mask, + { "Information Mask", "ncp.info_mask", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_info_mask_c_name_space, + { "Creator Name Space & Name", "ncp.info_mask_c_name_space", FT_BOOLEAN, 32, NULL, 0x40000000, "", HFILL }}, + + { &hf_ncp_info_mask_dosname, + { "DOS Name", "ncp.info_mask_dosname", FT_BOOLEAN, 32, NULL, 0x20000000, "", HFILL }}, + + { &hf_ncp_info_mask_name, + { "Name", "ncp.info_mask_name", FT_BOOLEAN, 32, NULL, 0x80000000, "", HFILL }}, + + { &hf_ncp_inh_revoke_create, + { "Create Rights", "ncp.inh_revoke_create", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_inh_revoke_delete, + { "Delete Rights", "ncp.inh_revoke_delete", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_inh_revoke_modify, + { "Modify Rights", "ncp.inh_revoke_modify", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_inh_revoke_open, + { "Open Rights", "ncp.inh_revoke_open", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_inh_revoke_parent, + { "Change Access", "ncp.inh_revoke_parent", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_inh_revoke_read, + { "Read Rights", "ncp.inh_revoke_read", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_inh_revoke_search, + { "See Files Flag", "ncp.inh_revoke_search", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_inh_revoke_supervisor, + { "Supervisor", "ncp.inh_revoke_supervisor", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_inh_revoke_write, + { "Write Rights", "ncp.inh_revoke_write", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_inh_rights_create, + { "Create Rights", "ncp.inh_rights_create", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_inh_rights_delete, + { "Delete Rights", "ncp.inh_rights_delete", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_inh_rights_modify, + { "Modify Rights", "ncp.inh_rights_modify", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_inh_rights_open, + { "Open Rights", "ncp.inh_rights_open", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_inh_rights_parent, + { "Change Access", "ncp.inh_rights_parent", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_inh_rights_read, + { "Read Rights", "ncp.inh_rights_read", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_inh_rights_search, + { "See Files Flag", "ncp.inh_rights_search", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_inh_rights_supervisor, + { "Supervisor", "ncp.inh_rights_supervisor", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_inh_rights_write, + { "Write Rights", "ncp.inh_rights_write", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_inheritance_revoke_mask, + { "Revoke Rights Mask", "ncp.inheritance_revoke_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_inherited_rights_mask, + { "Inherited Rights Mask", "ncp.inherited_rights_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_initial_semaphore_value, + { "Initial Semaphore Value", "ncp.initial_semaphore_value", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_inspect_size, + { "Inspect Size", "ncp.inspect_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internet_bridge_version, + { "Internet Bridge Version", "ncp.internet_bridge_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get, + { "Internal Disk Get Count", "ncp.internl_dsk_get", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_need_to_alloc, + { "Internal Disk Get Need To Allocate Count", "ncp.internl_dsk_get_need_to_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_read, + { "Internal Disk Get No Read Count", "ncp.internl_dsk_get_no_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_read_alloc, + { "Internal Disk Get No Read Allocate Count", "ncp.internl_dsk_get_no_read_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_read_someone_beat, + { "Internal Disk Get No Read Someone Beat Me Count", "ncp.internl_dsk_get_no_read_someone_beat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_wait, + { "Internal Disk Get No Wait Count", "ncp.internl_dsk_get_no_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_wait_need, + { "Internal Disk Get No Wait Need To Allocate Count", "ncp.internl_dsk_get_no_wait_need", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_no_wait_no_blk, + { "Internal Disk Get No Wait No Block Count", "ncp.internl_dsk_get_no_wait_no_blk", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_part_read, + { "Internal Disk Get Partial Read Count", "ncp.internl_dsk_get_part_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_read_err, + { "Internal Disk Get Read Error Count", "ncp.internl_dsk_get_read_err", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_get_someone_beat, + { "Internal Disk Get Someone Beat My Count", "ncp.internl_dsk_get_someone_beat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_write, + { "Internal Disk Write Count", "ncp.internl_dsk_write", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_write_alloc, + { "Internal Disk Write Allocate Count", "ncp.internl_dsk_write_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_internl_dsk_write_someone_beat, + { "Internal Disk Write Someone Beat Me Count", "ncp.internl_dsk_write_someone_beat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_interrupt_numbers_used, + { "Interrupt Numbers Used", "ncp.interrupt_numbers_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_invalid_control_req, + { "Invalid Control Request Count", "ncp.invalid_control_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_invalid_req_type, + { "Invalid Request Type Count", "ncp.invalid_req_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_invalid_sequence_number, + { "Invalid Sequence Number Count", "ncp.invalid_sequence_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_invalid_slot, + { "Invalid Slot Count", "ncp.invalid_slot", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_io_addresses_used, + { "IO Addresses Used", "ncp.io_addresses_used", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_io_engine_flag, + { "IO Engine Flag", "ncp.io_engine_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_io_error_count, + { "IO Error Count", "ncp.io_error_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_io_flag, + { "IO Flag", "ncp.io_flag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_aes_event, + { "IPX AES Event Count", "ncp.ipx_aes_event", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_ecb_cancel_fail, + { "IPX ECB Cancel Fail Count", "ncp.ipx_ecb_cancel_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_get_ecb_fail, + { "IPX Get ECB Fail Count", "ncp.ipx_get_ecb_fail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_get_ecb_req, + { "IPX Get ECB Request Count", "ncp.ipx_get_ecb_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_get_lcl_targ_fail, + { "IPX Get Local Target Fail Count", "ncp.ipx_get_lcl_targ_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_listen_ecb, + { "IPX Listen ECB Count", "ncp.ipx_listen_ecb", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_malform_pkt, + { "IPX Malformed Packet Count", "ncp.ipx_malform_pkt", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_max_conf_sock, + { "IPX Max Configured Socket Count", "ncp.ipx_max_conf_sock", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_max_open_sock, + { "IPX Max Open Socket Count", "ncp.ipx_max_open_sock", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_not_my_network, + { "IPX Not My Network", "ncp.ipx_not_my_network", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_open_sock_fail, + { "IPX Open Socket Fail Count", "ncp.ipx_open_sock_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_postponed_aes, + { "IPX Postponed AES Count", "ncp.ipx_postponed_aes", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ipx_send_pkt, + { "IPX Send Packet Count", "ncp.ipx_send_pkt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_items_changed, + { "Items Changed", "ncp.items_changed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_items_checked, + { "Items Checked", "ncp.items_checked", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_items_count, + { "Items Count", "ncp.items_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_items_in_list, + { "Items in List", "ncp.items_in_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_items_in_packet, + { "Items in Packet", "ncp.items_in_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_control1_file_open, + { "File Open", "ncp.job_control1_file_open", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_job_control1_job_recovery, + { "Job Recovery", "ncp.job_control1_job_recovery", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_job_control1_operator_hold, + { "Operator Hold", "ncp.job_control1_operator_hold", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_job_control1_reservice, + { "ReService Job", "ncp.job_control1_reservice", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_job_control1_user_hold, + { "User Hold", "ncp.job_control1_user_hold", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_job_control_file_open, + { "File Open", "ncp.job_control_file_open", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_job_control_flags, + { "Job Control Flags", "ncp.job_control_flags", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_control_flags_word, + { "Job Control Flags", "ncp.job_control_flags_word", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_control_job_recovery, + { "Job Recovery", "ncp.job_control_job_recovery", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_job_control_operator_hold, + { "Operator Hold", "ncp.job_control_operator_hold", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_job_control_reservice, + { "ReService Job", "ncp.job_control_reservice", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_job_control_user_hold, + { "User Hold", "ncp.job_control_user_hold", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_job_count, + { "Job Count", "ncp.job_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_file_handle, + { "Job File Handle", "ncp.job_file_handle", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_file_handle_long, + { "Job File Handle", "ncp.job_file_handle_long", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_file_name, + { "Job File Name", "ncp.job_file_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_number, + { "Job Number", "ncp.job_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_number_long, + { "Job Number", "ncp.job_number_long", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_position, + { "Job Position", "ncp.job_position", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_position_word, + { "Job Position", "ncp.job_position_word", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_job_type, + { "Job Type", "ncp.job_type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_driver_number, + { "LAN Driver Number", "ncp.lan_driver_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_bd_inst, + { "LAN Driver Board Instance", "ncp.lan_drv_bd_inst", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_bd_num, + { "LAN Driver Board Number", "ncp.lan_drv_bd_num", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_card_id, + { "LAN Driver Card ID", "ncp.lan_drv_card_id", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_card_name, + { "LAN Driver Card Name", "ncp.lan_drv_card_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_dma_usage1, + { "Primary DMA Channel", "ncp.lan_drv_dma_usage1", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_dma_usage2, + { "Secondary DMA Channel", "ncp.lan_drv_dma_usage2", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_flags, + { "LAN Driver Flags", "ncp.lan_drv_flags", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_interrupt1, + { "Primary Interrupt Vector", "ncp.lan_drv_interrupt1", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_interrupt2, + { "Secondary Interrupt Vector", "ncp.lan_drv_interrupt2", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_io_ports_and_ranges_1, + { "Primary Base I/O Port", "ncp.lan_drv_io_ports_and_ranges_1", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_io_ports_and_ranges_2, + { "Number of I/O Ports", "ncp.lan_drv_io_ports_and_ranges_2", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_io_ports_and_ranges_3, + { "Secondary Base I/O Port", "ncp.lan_drv_io_ports_and_ranges_3", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_io_ports_and_ranges_4, + { "Number of I/O Ports", "ncp.lan_drv_io_ports_and_ranges_4", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_io_reserved, + { "LAN Driver IO Reserved", "ncp.lan_drv_io_reserved", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_line_speed, + { "LAN Driver Line Speed", "ncp.lan_drv_line_speed", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_link, + { "LAN Driver Link", "ncp.lan_drv_link", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_log_name, + { "LAN Driver Logical Name", "ncp.lan_drv_log_name", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_major_ver, + { "LAN Driver Major Version", "ncp.lan_drv_major_ver", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_max_rcv_size, + { "LAN Driver Maximum Receive Size", "ncp.lan_drv_max_rcv_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_max_size, + { "LAN Driver Maximum Size", "ncp.lan_drv_max_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_media_id, + { "LAN Driver Media ID", "ncp.lan_drv_media_id", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_mem_decode_0, + { "LAN Driver Memory Decode 0", "ncp.lan_drv_mem_decode_0", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_mem_decode_1, + { "LAN Driver Memory Decode 1", "ncp.lan_drv_mem_decode_1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_mem_length_0, + { "LAN Driver Memory Length 0", "ncp.lan_drv_mem_length_0", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_mem_length_1, + { "LAN Driver Memory Length 1", "ncp.lan_drv_mem_length_1", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_minor_ver, + { "LAN Driver Minor Version", "ncp.lan_drv_minor_ver", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_rcv_size, + { "LAN Driver Receive Size", "ncp.lan_drv_rcv_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_reserved, + { "LAN Driver Reserved", "ncp.lan_drv_reserved", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_share, + { "LAN Driver Sharing Flags", "ncp.lan_drv_share", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_slot, + { "LAN Driver Slot", "ncp.lan_drv_slot", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_snd_retries, + { "LAN Driver Send Retries", "ncp.lan_drv_snd_retries", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_src_route, + { "LAN Driver Source Routing", "ncp.lan_drv_src_route", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_drv_trans_time, + { "LAN Driver Transport Time", "ncp.lan_drv_trans_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_dvr_cfg_major_vrs, + { "LAN Driver Config - Major Version", "ncp.lan_dvr_cfg_major_vrs", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_dvr_cfg_minor_vrs, + { "LAN Driver Config - Minor Version", "ncp.lan_dvr_cfg_minor_vrs", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lan_dvr_mode_flags, + { "LAN Driver Mode Flags", "ncp.lan_dvr_mode_flags", FT_UINT8, BASE_HEX, VALS(ncp_lan_dvr_mode_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_lan_dvr_node_addr, + { "LAN Driver Node Address", "ncp.lan_dvr_node_addr", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_large_internet_packets, + { "Large Internet Packets (LIP) Disabled", "ncp.large_internet_packets", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_last_access_date, + { "Last Accessed Date", "ncp.last_access_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_access_time, + { "Last Accessed Time", "ncp.last_access_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_garbage_collect, + { "Last Garbage Collection", "ncp.last_garbage_collect", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_instance, + { "Last Instance", "ncp.last_instance", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_record_seen, + { "Last Record Seen", "ncp.last_record_seen", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_search_index, + { "Search Index", "ncp.last_search_index", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_seen, + { "Last Seen", "ncp.last_seen", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_sequence_number, + { "Sequence Number", "ncp.last_sequence_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_last_time_rx_buff_was_alloc, + { "Last Time a Receive Buffer was Allocated", "ncp.last_time_rx_buff_was_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_length_64bit, + { "64bit Length", "ncp.length_64bit", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_level, + { "Level", "ncp.level", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lfs_counters, + { "LFS Counters", "ncp.lfs_counters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_limb_count, + { "Limb Count", "ncp.limb_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_limbo_data_streams_count, + { "Limbo Data Streams Count", "ncp.limbo_data_streams_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_limbo_used, + { "Limbo Used", "ncp.limbo_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_loaded_name_spaces, + { "Loaded Name Spaces", "ncp.loaded_name_spaces", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_connection_id, + { "Local Connection ID", "ncp.local_connection_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_login_info_ccode, + { "Local Login Info C Code", "ncp.local_login_info_ccode", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_max_packet_size, + { "Local Max Packet Size", "ncp.local_max_packet_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_max_recv_size, + { "Local Max Recv Size", "ncp.local_max_recv_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_max_send_size, + { "Local Max Send Size", "ncp.local_max_send_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_local_target_socket, + { "Local Target Socket", "ncp.local_target_socket", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lock_area_len, + { "Lock Area Length", "ncp.lock_area_len", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lock_areas_start_offset, + { "Lock Areas Start Offset", "ncp.lock_areas_start_offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lock_flag, + { "Lock Flag", "ncp.lock_flag", FT_UINT8, BASE_HEX, VALS(ncp_lock_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_lock_name, + { "Lock Name", "ncp.lock_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lock_status, + { "Lock Status", "ncp.lock_status", FT_UINT8, BASE_HEX, VALS(ncp_lock_status_vals), 0x0, "", HFILL }}, + + { &hf_ncp_lock_timeout, + { "Lock Timeout", "ncp.lock_timeout", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lock_type, + { "Lock Type", "ncp.lock_type", FT_UINT8, BASE_HEX, VALS(ncp_lock_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_locked, + { "Locked Flag", "ncp.locked", FT_UINT8, BASE_HEX, VALS(ncp_locked_vals), 0x0, "", HFILL }}, + + { &hf_ncp_log_file_flag_high, + { "Log File Flag (byte 2)", "ncp.log_file_flag_high", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_log_file_flag_low, + { "Log File Flag", "ncp.log_file_flag_low", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_log_flag_call_back, + { "Call Back Requested", "ncp.log_flag_call_back", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_log_flag_lock_file, + { "Lock File Immediately", "ncp.log_flag_lock_file", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_log_ttl_rx_pkts, + { "Total Received Packets", "ncp.log_ttl_rx_pkts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_log_ttl_tx_pkts, + { "Total Transmitted Packets", "ncp.log_ttl_tx_pkts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logged_count, + { "Logged Count", "ncp.logged_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logged_object_id, + { "Logged in Object ID", "ncp.logged_object_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logical_connection_number, + { "Logical Connection Number", "ncp.logical_connection_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logical_drive_count, + { "Logical Drive Count", "ncp.logical_drive_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logical_drive_number, + { "Logical Drive Number", "ncp.logical_drive_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logical_lock_threshold, + { "LogicalLockThreshold", "ncp.logical_lock_threshold", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_logical_record_name, + { "Logical Record Name", "ncp.logical_record_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_login_expiration_time, + { "Login Expiration Time", "ncp.login_expiration_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_login_key, + { "Login Key", "ncp.login_key", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_login_name, + { "Login Name", "ncp.login_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_long_name, + { "Long Name", "ncp.long_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lru_block_was_dirty, + { "LRU Block Was Dirty", "ncp.lru_block_was_dirty", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_lru_sit_time, + { "LRU Sitting Time", "ncp.lru_sit_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_attr, + { "Attributes", "ncp.mac_attr", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_attr_archive, + { "Archive", "ncp.mac_attr_archive", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_mac_attr_execute_only, + { "Execute Only", "ncp.mac_attr_execute_only", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_mac_attr_hidden, + { "Hidden", "ncp.mac_attr_hidden", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_mac_attr_index, + { "Index", "ncp.mac_attr_index", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_mac_attr_r_audit, + { "Read Audit", "ncp.mac_attr_r_audit", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_mac_attr_r_only, + { "Read Only", "ncp.mac_attr_r_only", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_mac_attr_share, + { "Shareable File", "ncp.mac_attr_share", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_mac_attr_smode1, + { "Search Mode", "ncp.mac_attr_smode1", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_mac_attr_smode2, + { "Search Mode", "ncp.mac_attr_smode2", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_mac_attr_smode3, + { "Search Mode", "ncp.mac_attr_smode3", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_mac_attr_subdirectory, + { "Subdirectory", "ncp.mac_attr_subdirectory", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_mac_attr_system, + { "System", "ncp.mac_attr_system", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_mac_attr_transaction, + { "Transaction", "ncp.mac_attr_transaction", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_mac_attr_w_audit, + { "Write Audit", "ncp.mac_attr_w_audit", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_mac_backup_date, + { "Mac Backup Date", "ncp.mac_backup_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_backup_time, + { "Mac Backup Time", "ncp.mac_backup_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_base_directory_id, + { "Mac Base Directory ID", "ncp.mac_base_directory_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_create_date, + { "Mac Create Date", "ncp.mac_create_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_create_time, + { "Mac Create Time", "ncp.mac_create_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_destination_base_id, + { "Mac Destination Base ID", "ncp.mac_destination_base_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_finder_info, + { "Mac Finder Information", "ncp.mac_finder_info", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_last_seen_id, + { "Mac Last Seen ID", "ncp.mac_last_seen_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_root_ids, + { "MAC Root IDs", "ncp.mac_root_ids", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mac_source_base_id, + { "Mac Source Base ID", "ncp.mac_source_base_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_major_version, + { "Major Version", "ncp.major_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_map_hash_node_count, + { "Map Hash Node Count", "ncp.map_hash_node_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_byte_cnt, + { "Maximum Byte Count", "ncp.max_byte_cnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_bytes, + { "Maximum Number of Bytes", "ncp.max_bytes", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_data_streams, + { "Maximum Data Streams", "ncp.max_data_streams", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_dir_depth, + { "Maximum Directory Depth", "ncp.max_dir_depth", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_dirty_time, + { "Maximum Dirty Time", "ncp.max_dirty_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_conn, + { "Maximum Number of Connections", "ncp.max_num_of_conn", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_dir_cache_buff, + { "Maximum Number Of Directory Cache Buffers", "ncp.max_num_of_dir_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_lans, + { "Maximum Number Of LAN's", "ncp.max_num_of_lans", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_media_types, + { "Maximum Number of Media Types", "ncp.max_num_of_media_types", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_medias, + { "Maximum Number Of Media's", "ncp.max_num_of_medias", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_nme_sps, + { "Maximum Number Of Name Spaces", "ncp.max_num_of_nme_sps", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_protocols, + { "Maximum Number of Protocols", "ncp.max_num_of_protocols", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_spool_pr, + { "Maximum Number Of Spool Printers", "ncp.max_num_of_spool_pr", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_stacks, + { "Maximum Number Of Stacks", "ncp.max_num_of_stacks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_users, + { "Maximum Number Of Users", "ncp.max_num_of_users", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_num_of_vol, + { "Maximum Number of Volumes", "ncp.max_num_of_vol", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_phy_packet_size, + { "Maximum Physical Packet Size", "ncp.max_phy_packet_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_max_space, + { "Maximum Space", "ncp.max_space", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_maxspace, + { "Maximum Space", "ncp.maxspace", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_may_had_out_of_order, + { "Maybe Had Out Of Order Writes Count", "ncp.may_had_out_of_order", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_media_list, + { "Media List", "ncp.media_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_media_list_count, + { "Media List Count", "ncp.media_list_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_media_name, + { "Media Name", "ncp.media_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_media_number, + { "Media Number", "ncp.media_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_media_object_type, + { "Object Type", "ncp.media_object_type", FT_UINT8, BASE_HEX, VALS(ncp_media_object_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_member_name, + { "Member Name", "ncp.member_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_member_type, + { "Member Type", "ncp.member_type", FT_UINT16, BASE_HEX, VALS(ncp_member_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_message_language, + { "NLM Language", "ncp.message_language", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_migrated_files, + { "Migrated Files", "ncp.migrated_files", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_migrated_sectors, + { "Migrated Sectors", "ncp.migrated_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_min_cache_report_thresh, + { "Minimum Cache Report Threshold", "ncp.min_cache_report_thresh", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_min_num_of_cache_buff, + { "Minimum Number Of Cache Buffers", "ncp.min_num_of_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_min_num_of_dir_cache_buff, + { "Minimum Number Of Directory Cache Buffers", "ncp.min_num_of_dir_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_min_time_since_file_delete, + { "Minimum Time Since File Delete", "ncp.min_time_since_file_delete", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_minor_version, + { "Minor Version", "ncp.minor_version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_mixed_mode_path_flag, + { "Mixed Mode Path Flag", "ncp.mixed_mode_path_flag", FT_UINT8, BASE_HEX, VALS(ncp_mixed_mode_path_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_modified_counter, + { "Modified Counter", "ncp.modified_counter", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_modified_date, + { "Modified Date", "ncp.modified_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_modified_time, + { "Modified Time", "ncp.modified_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_modifier_id, + { "Modifier ID", "ncp.modifier_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_modify_dos_create, + { "Creator ID", "ncp.modify_dos_create", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_modify_dos_delete, + { "Archive Date", "ncp.modify_dos_delete", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_modify_dos_info_mask, + { "Modify DOS Info Mask", "ncp.modify_dos_info_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_modify_dos_inheritance, + { "Inheritance", "ncp.modify_dos_inheritance", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_modify_dos_laccess, + { "Last Access", "ncp.modify_dos_laccess", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_modify_dos_max_space, + { "Maximum Space", "ncp.modify_dos_max_space", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_modify_dos_mdate, + { "Modify Date", "ncp.modify_dos_mdate", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_modify_dos_mid, + { "Modifier ID", "ncp.modify_dos_mid", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_modify_dos_mtime, + { "Modify Time", "ncp.modify_dos_mtime", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_modify_dos_open, + { "Creation Time", "ncp.modify_dos_open", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_modify_dos_parent, + { "Archive Time", "ncp.modify_dos_parent", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_modify_dos_read, + { "Attributes", "ncp.modify_dos_read", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_modify_dos_search, + { "Archiver ID", "ncp.modify_dos_search", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_modify_dos_write, + { "Creation Date", "ncp.modify_dos_write", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_more_flag, + { "More Flag", "ncp.more_flag", FT_UINT8, BASE_HEX, VALS(ncp_more_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_more_properties, + { "More Properties", "ncp.more_properties", FT_UINT8, BASE_HEX, VALS(ncp_more_properties_vals), 0x0, "", HFILL }}, + + { &hf_ncp_move_cache_node, + { "Move Cache Node Count", "ncp.move_cache_node", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_move_cache_node_from_avai, + { "Move Cache Node From Avail Count", "ncp.move_cache_node_from_avai", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_moved_the_ack_bit_dn, + { "Moved The ACK Bit Down Count", "ncp.moved_the_ack_bit_dn", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name, + { "Name", "ncp.name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name12, + { "Name", "ncp.name12", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name_len, + { "Name Space Length", "ncp.name_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name_length, + { "Name Length", "ncp.name_length", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name_list, + { "Name List", "ncp.name_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name_space, + { "Name Space", "ncp.name_space", FT_UINT8, BASE_HEX, VALS(ncp_name_space_vals), 0x0, "", HFILL }}, + + { &hf_ncp_name_space_name, + { "Name Space Name", "ncp.name_space_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_name_type, + { "nameType", "ncp.name_type", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncompletion_code, + { "Completion Code", "ncp.ncompletion_code", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_data_size, + { "NCP Data Size", "ncp.ncp_data_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_major_version, + { "NCP Extension Major Version", "ncp.ncp_extension_major_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_minor_version, + { "NCP Extension Minor Version", "ncp.ncp_extension_minor_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_name, + { "NCP Extension Name", "ncp.ncp_extension_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_number, + { "NCP Extension Number", "ncp.ncp_extension_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_numbers, + { "NCP Extension Numbers", "ncp.ncp_extension_numbers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_extension_revision_number, + { "NCP Extension Revision Number", "ncp.ncp_extension_revision_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_peak_sta_in_use, + { "Peak Number of Connections since Server was brought up", "ncp.ncp_peak_sta_in_use", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ncp_sta_in_use, + { "Number of Workstations Connected to Server", "ncp.ncp_sta_in_use", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ndirty_blocks, + { "Number of Dirty Blocks", "ncp.ndirty_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nds_request_flags, + { "NDS Request Flags", "ncp.nds_request_flags", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nds_request_flags_alias_ref, + { "Alias Referral", "ncp.nds_request_flags_alias_ref", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_nds_request_flags_dn_ref, + { "Down Referral", "ncp.nds_request_flags_dn_ref", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_nds_request_flags_local_entry, + { "Local Entry", "ncp.nds_request_flags_local_entry", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_nds_request_flags_no_such_entry, + { "No Such Entry", "ncp.nds_request_flags_no_such_entry", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_nds_request_flags_output, + { "Output Fields", "ncp.nds_request_flags_output", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_nds_request_flags_reply_data_size, + { "Reply Data Size", "ncp.nds_request_flags_reply_data_size", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_nds_request_flags_req_cnt, + { "Request Count", "ncp.nds_request_flags_req_cnt", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_nds_request_flags_req_data_size, + { "Request Data Size", "ncp.nds_request_flags_req_data_size", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_nds_request_flags_trans_ref, + { "Transport Referral", "ncp.nds_request_flags_trans_ref", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_nds_request_flags_trans_ref2, + { "Transport Referral", "ncp.nds_request_flags_trans_ref2", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_nds_request_flags_type_ref, + { "Type Referral", "ncp.nds_request_flags_type_ref", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_nds_request_flags_up_ref, + { "Up Referral", "ncp.nds_request_flags_up_ref", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_nds_status, + { "NDS Status", "ncp.nds_status", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_net_id_number, + { "Net ID Number", "ncp.net_id_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_net_status, + { "Network Status", "ncp.net_status", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_netbios_broadcast_was_propogated, + { "NetBIOS Broadcast Was Propogated", "ncp.netbios_broadcast_was_propogated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_netbios_progated, + { "NetBIOS Propagated Count", "ncp.netbios_progated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_netware_access_handle, + { "NetWare Access Handle", "ncp.netware_access_handle", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_network_address, + { "Network Address", "ncp.network_address", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_network_node_address, + { "Network Node Address", "ncp.network_node_address", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_network_number, + { "Network Number", "ncp.network_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_network_socket, + { "Network Socket", "ncp.network_socket", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_access_rights_create, + { "Create", "ncp.new_access_rights_create", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_new_access_rights_delete, + { "Delete", "ncp.new_access_rights_delete", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_new_access_rights_mask, + { "New Access Rights", "ncp.new_access_rights_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_access_rights_modify, + { "Modify", "ncp.new_access_rights_modify", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_new_access_rights_open, + { "Open", "ncp.new_access_rights_open", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_new_access_rights_parental, + { "Parental", "ncp.new_access_rights_parental", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_new_access_rights_read, + { "Read", "ncp.new_access_rights_read", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_new_access_rights_search, + { "Search", "ncp.new_access_rights_search", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_new_access_rights_supervisor, + { "Supervisor", "ncp.new_access_rights_supervisor", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_new_access_rights_write, + { "Write", "ncp.new_access_rights_write", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_new_directory_id, + { "New Directory ID", "ncp.new_directory_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_ea_handle, + { "New EA Handle", "ncp.new_ea_handle", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_file_name, + { "New File Name", "ncp.new_file_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_file_name_len, + { "New File Name", "ncp.new_file_name_len", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_file_size, + { "New File Size", "ncp.new_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_object_name, + { "New Object Name", "ncp.new_object_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_password, + { "New Password", "ncp.new_password", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_path, + { "New Path", "ncp.new_path", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_new_position, + { "New Position", "ncp.new_position", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_cnt_block, + { "Next Count Block", "ncp.next_cnt_block", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_huge_state_info, + { "Next Huge State Info", "ncp.next_huge_state_info", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_limb_scan_num, + { "Next Limb Scan Number", "ncp.next_limb_scan_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_object_id, + { "Next Object ID", "ncp.next_object_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_record, + { "Next Record", "ncp.next_record", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_request_record, + { "Next Request Record", "ncp.next_request_record", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_search_index, + { "Next Search Index", "ncp.next_search_index", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_search_number, + { "Next Search Number", "ncp.next_search_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_starting_number, + { "Next Starting Number", "ncp.next_starting_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_trustee_entry, + { "Next Trustee Entry", "ncp.next_trustee_entry", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_next_volume_number, + { "Next Volume Number", "ncp.next_volume_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_count, + { "NLM Count", "ncp.nlm_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_flags, + { "Flags", "ncp.nlm_flags", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_flags_multiple, + { "Can Load Multiple Times", "ncp.nlm_flags_multiple", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_nlm_flags_pseudo, + { "PseudoPreemption", "ncp.nlm_flags_pseudo", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_nlm_flags_reentrant, + { "ReEntrant", "ncp.nlm_flags_reentrant", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_nlm_flags_synchronize, + { "Synchronize Start", "ncp.nlm_flags_synchronize", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_nlm_load_options, + { "NLM Load Options", "ncp.nlm_load_options", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_name_stringz, + { "NLM Name", "ncp.nlm_name_stringz", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_number, + { "NLM Number", "ncp.nlm_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_numbers, + { "NLM Numbers", "ncp.nlm_numbers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_start_num, + { "NLM Start Number", "ncp.nlm_start_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nlm_type, + { "NLM Type", "ncp.nlm_type", FT_UINT8, BASE_HEX, VALS(ncp_nlm_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_nlms_in_list, + { "NLM's in List", "ncp.nlms_in_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_avail_conns, + { "No Available Connections Count", "ncp.no_avail_conns", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_ecb_available_count, + { "No ECB Available Count", "ncp.no_ecb_available_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_mem_for_station, + { "No Memory For Station Control Count", "ncp.no_mem_for_station", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_more_mem_avail, + { "No More Memory Available Count", "ncp.no_more_mem_avail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_receive_buff, + { "No Receive Buffers", "ncp.no_receive_buff", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_no_space_for_service, + { "No Space For Service", "ncp.no_space_for_service", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_node, + { "Node", "ncp.node", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_node_flags, + { "Node Flags", "ncp.node_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_non_ded_flag, + { "Non Dedicated Flag", "ncp.non_ded_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_non_freeable_avail_sub_alloc_sectors, + { "Non Freeable Available Sub Alloc Sectors", "ncp.non_freeable_avail_sub_alloc_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_non_freeable_limbo_sectors, + { "Non Freeable Limbo Sectors", "ncp.non_freeable_limbo_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_not_my_network, + { "Not My Network", "ncp.not_my_network", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_not_supported_mask, + { "Bit Counter Supported", "ncp.not_supported_mask", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_not_usable_sub_alloc_sectors, + { "Not Usable Sub Alloc Sectors", "ncp.not_usable_sub_alloc_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_not_yet_purgeable_blocks, + { "Not Yet Purgeable Blocks", "ncp.not_yet_purgeable_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ns_info_mask, + { "Names Space Info Mask", "ncp.ns_info_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ns_info_mask_acc_date, + { "Access Date", "ncp.ns_info_mask_acc_date", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_ns_info_mask_adate, + { "Archive Date", "ncp.ns_info_mask_adate", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_ns_info_mask_aid, + { "Archiver ID", "ncp.ns_info_mask_aid", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_ns_info_mask_atime, + { "Archive Time", "ncp.ns_info_mask_atime", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_ns_info_mask_cdate, + { "Creation Date", "ncp.ns_info_mask_cdate", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_ns_info_mask_ctime, + { "Creation Time", "ncp.ns_info_mask_ctime", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_ns_info_mask_fatt, + { "File Attributes", "ncp.ns_info_mask_fatt", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_ns_info_mask_max_acc_mask, + { "Inheritance", "ncp.ns_info_mask_max_acc_mask", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_ns_info_mask_max_space, + { "Maximum Space", "ncp.ns_info_mask_max_space", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_ns_info_mask_modify, + { "Modify Name", "ncp.ns_info_mask_modify", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_ns_info_mask_owner, + { "Owner ID", "ncp.ns_info_mask_owner", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_ns_info_mask_udate, + { "Update Date", "ncp.ns_info_mask_udate", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_ns_info_mask_uid, + { "Update ID", "ncp.ns_info_mask_uid", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_ns_info_mask_utime, + { "Update Time", "ncp.ns_info_mask_utime", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_ns_specific_info, + { "Name Space Specific Info", "ncp.ns_specific_info", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_bytes, + { "Number of Bytes", "ncp.num_bytes", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_dir_cache_buff, + { "Number Of Directory Cache Buffers", "ncp.num_dir_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_allocs, + { "Number of Allocations", "ncp.num_of_allocs", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cache_check_no_wait, + { "Number Of Cache Check No Wait", "ncp.num_of_cache_check_no_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cache_checks, + { "Number Of Cache Checks", "ncp.num_of_cache_checks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cache_dirty_checks, + { "Number Of Cache Dirty Checks", "ncp.num_of_cache_dirty_checks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cache_hits, + { "Number Of Cache Hits", "ncp.num_of_cache_hits", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cache_hits_no_wait, + { "Number Of Cache Hits No Wait", "ncp.num_of_cache_hits_no_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_cc_in_pkt, + { "Number of Custom Counters in Packet", "ncp.num_of_cc_in_pkt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_checks, + { "Number of Checks", "ncp.num_of_checks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_dir_cache_buff, + { "Number Of Directory Cache Buffers", "ncp.num_of_dir_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_dirty_cache_checks, + { "Number Of Dirty Cache Checks", "ncp.num_of_dirty_cache_checks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_entries, + { "Number of Entries", "ncp.num_of_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_files_migrated, + { "Number Of Files Migrated", "ncp.num_of_files_migrated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_garb_coll, + { "Number of Garbage Collections", "ncp.num_of_garb_coll", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_ncp_reqs, + { "Number of NCP Requests since Server was brought up", "ncp.num_of_ncp_reqs", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_ref_publics, + { "Number of Referenced Public Symbols", "ncp.num_of_ref_publics", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_num_of_segments, + { "Number of Segments", "ncp.num_of_segments", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_attributes, + { "Number of Attributes", "ncp.number_of_attributes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_cpus, + { "Number of CPU's", "ncp.number_of_cpus", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_data_streams, + { "Number of Data Streams", "ncp.number_of_data_streams", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_dynamic_memory_areas, + { "Number Of Dynamic Memory Areas", "ncp.number_of_dynamic_memory_areas", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_entries, + { "Number of Entries", "ncp.number_of_entries", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_locks, + { "Number of Locks", "ncp.number_of_locks", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_minutes_to_delay, + { "Number of Minutes to Delay", "ncp.number_of_minutes_to_delay", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_ncp_extensions, + { "Number Of NCP Extensions", "ncp.number_of_ncp_extensions", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_ns_loaded, + { "Number Of Name Spaces Loaded", "ncp.number_of_ns_loaded", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_protocols, + { "Number of Protocols", "ncp.number_of_protocols", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_records, + { "Number of Records", "ncp.number_of_records", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_semaphores, + { "Number Of Semaphores", "ncp.number_of_semaphores", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_service_processes, + { "Number Of Service Processes", "ncp.number_of_service_processes", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_set_categories, + { "Number Of Set Categories", "ncp.number_of_set_categories", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_sms, + { "Number Of Storage Medias", "ncp.number_of_sms", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_number_of_stations, + { "Number of Stations", "ncp.number_of_stations", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_nxt_search_num, + { "Next Search Number", "ncp.nxt_search_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_o_c_ret_flags, + { "Open Create Return Flags", "ncp.o_c_ret_flags", FT_UINT8, BASE_HEX, VALS(ncp_o_c_ret_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_object_count, + { "Object Count", "ncp.object_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_flags, + { "Object Flags", "ncp.object_flags", FT_UINT8, BASE_HEX, VALS(ncp_object_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_object_has_properites, + { "Object Has Properties", "ncp.object_has_properites", FT_UINT8, BASE_HEX, VALS(ncp_object_has_properites_vals), 0x0, "", HFILL }}, + + { &hf_ncp_object_id, + { "Object ID", "ncp.object_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_id_count, + { "Object ID Count", "ncp.object_id_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_id_info, + { "Object Information", "ncp.object_id_info", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_info_rtn_count, + { "Object Information Count", "ncp.object_info_rtn_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_name, + { "Object Name", "ncp.object_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_name_len, + { "Object Name", "ncp.object_name_len", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_name_stringz, + { "Object Name", "ncp.object_name_stringz", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_number, + { "Object Number", "ncp.object_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_object_security, + { "Object Security", "ncp.object_security", FT_UINT8, BASE_HEX, VALS(ncp_object_security_vals), 0x0, "", HFILL }}, + + { &hf_ncp_object_type, + { "Object Type", "ncp.object_type", FT_UINT16, BASE_HEX, VALS(ncp_object_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_old_file_name, + { "Old File Name", "ncp.old_file_name", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_old_file_size, + { "Old File Size", "ncp.old_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_oldest_deleted_file_age_in_ticks, + { "Oldest Deleted File Age in Ticks", "ncp.oldest_deleted_file_age_in_ticks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_count, + { "Open Count", "ncp.open_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_create_action, + { "Open Create Action", "ncp.open_create_action", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_create_action_compressed, + { "Compressed", "ncp.open_create_action_compressed", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_open_create_action_created, + { "Created", "ncp.open_create_action_created", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_open_create_action_opened, + { "Opened", "ncp.open_create_action_opened", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_open_create_action_read_only, + { "Read Only", "ncp.open_create_action_read_only", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_open_create_action_replaced, + { "Replaced", "ncp.open_create_action_replaced", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_open_create_mode, + { "Open Create Mode", "ncp.open_create_mode", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_create_mode_create, + { "Create new file or subdirectory (file or subdirectory cannot exist)", "ncp.open_create_mode_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_open_create_mode_open, + { "Open existing file (file must exist)", "ncp.open_create_mode_open", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_open_create_mode_oplock, + { "Open Callback (Op-Lock)", "ncp.open_create_mode_oplock", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_open_create_mode_replace, + { "Replace existing file", "ncp.open_create_mode_replace", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_open_for_read_count, + { "Open For Read Count", "ncp.open_for_read_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_for_write_count, + { "Open For Write Count", "ncp.open_for_write_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_rights, + { "Open Rights", "ncp.open_rights", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_open_rights_compat, + { "Compatibility", "ncp.open_rights_compat", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_open_rights_deny_read, + { "Deny Read", "ncp.open_rights_deny_read", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_open_rights_deny_write, + { "Deny Write", "ncp.open_rights_deny_write", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_open_rights_read_only, + { "Read Only", "ncp.open_rights_read_only", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_open_rights_write_only, + { "Write Only", "ncp.open_rights_write_only", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_open_rights_write_thru, + { "Write Through", "ncp.open_rights_write_thru", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_option_number, + { "Option Number", "ncp.option_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_orig_num_cache_buff, + { "Original Number Of Cache Buffers", "ncp.orig_num_cache_buff", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_original_size, + { "Original Size", "ncp.original_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_os_language_id, + { "OS Language ID", "ncp.os_language_id", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_os_major_version, + { "OS Major Version", "ncp.os_major_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_os_minor_version, + { "OS Minor Version", "ncp.os_minor_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_os_revision, + { "OS Revision", "ncp.os_revision", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_other_file_fork_fat, + { "Other File Fork FAT Entry", "ncp.other_file_fork_fat", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_other_file_fork_size, + { "Other File Fork Size", "ncp.other_file_fork_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_outgoing_packet_discarded_no_turbo_buffer, + { "Outgoing Packet Discarded No Turbo Buffer", "ncp.outgoing_packet_discarded_no_turbo_buffer", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_outstanding_compression_ios, + { "Outstanding Compression IOs", "ncp.outstanding_compression_ios", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_outstanding_ios, + { "Outstanding IOs", "ncp.outstanding_ios", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_rs_too_small_count, + { "Receive Packet Too Small Count", "ncp.packet_rs_too_small_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_rx_misc_error_count, + { "Receive Packet Misc Error Count", "ncp.packet_rx_misc_error_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_rx_overflow_count, + { "Receive Packet Overflow Count", "ncp.packet_rx_overflow_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_rx_too_big_count, + { "Receive Packet Too Big Count", "ncp.packet_rx_too_big_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_tx_misc_error_count, + { "Transmit Packet Misc Error Count", "ncp.packet_tx_misc_error_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_tx_too_big_count, + { "Transmit Packet Too Big Count", "ncp.packet_tx_too_big_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packet_tx_too_small_count, + { "Transmit Packet Too Small Count", "ncp.packet_tx_too_small_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_discarded_by_hop_count, + { "Packets Discarded By Hop Count", "ncp.packets_discarded_by_hop_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_discarded_unknown_net, + { "Packets Discarded Unknown Net", "ncp.packets_discarded_unknown_net", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_from_invalid_connection, + { "Packets From Invalid Connection", "ncp.packets_from_invalid_connection", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_received_during_processing, + { "Packets Received During Processing", "ncp.packets_received_during_processing", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_with_bad_request_type, + { "Packets With Bad Request Type", "ncp.packets_with_bad_request_type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_packets_with_bad_sequence_number, + { "Packets With Bad Sequence Number", "ncp.packets_with_bad_sequence_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_page_table_owner_flag, + { "Page Table Owner", "ncp.page_table_owner_flag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_parent_base_id, + { "Parent Base ID", "ncp.parent_base_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_parent_directory_base, + { "Parent Directory Base", "ncp.parent_directory_base", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_parent_dos_directory_base, + { "Parent DOS Directory Base", "ncp.parent_dos_directory_base", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_parent_id, + { "Parent ID", "ncp.parent_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_parent_object_number, + { "Parent Object Number", "ncp.parent_object_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_password, + { "Password", "ncp.password", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path, + { "Path", "ncp.path", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path_and_name, + { "Path and Name", "ncp.path_and_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path_base, + { "Path Base", "ncp.path_base", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path_component_count, + { "Path Component Count", "ncp.path_component_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path_component_size, + { "Path Component Size", "ncp.path_component_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_path_cookie_flags, + { "Path Cookie Flags", "ncp.path_cookie_flags", FT_UINT16, BASE_HEX, VALS(ncp_path_cookie_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_path_count, + { "Path Count", "ncp.path_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_pending_io_commands, + { "Pending IO Commands", "ncp.pending_io_commands", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_percent_of_vol_used_by_dirs, + { "Percent Of Volume Used By Directories", "ncp.percent_of_vol_used_by_dirs", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_disk_channel, + { "Physical Disk Channel", "ncp.physical_disk_channel", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_disk_number, + { "Physical Disk Number", "ncp.physical_disk_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_drive_count, + { "Physical Drive Count", "ncp.physical_drive_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_drive_type, + { "Physical Drive Type", "ncp.physical_drive_type", FT_UINT8, BASE_HEX, VALS(ncp_physical_drive_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_physical_lock_threshold, + { "Physical Lock Threshold", "ncp.physical_lock_threshold", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_read_errors, + { "Physical Read Errors", "ncp.physical_read_errors", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_read_requests, + { "Physical Read Requests", "ncp.physical_read_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_write_errors, + { "Physical Write Errors", "ncp.physical_write_errors", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_physical_write_requests, + { "Physical Write Requests", "ncp.physical_write_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_poll_abort_conn, + { "Poller Aborted The Connnection Count", "ncp.poll_abort_conn", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_poll_rem_old_out_of_order, + { "Poller Removed Old Out Of Order Count", "ncp.poll_rem_old_out_of_order", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_positive_acknowledges_sent, + { "Positive Acknowledges Sent", "ncp.positive_acknowledges_sent", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_post_poned_events, + { "Postponed Events", "ncp.post_poned_events", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_pre_compressed_sectors, + { "Precompressed Sectors", "ncp.pre_compressed_sectors", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_previous_control_packet, + { "Previous Control Packet Count", "ncp.previous_control_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_previous_record, + { "Previous Record", "ncp.previous_record", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_primary_entry, + { "Primary Entry", "ncp.primary_entry", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_print_flags, + { "Print Flags", "ncp.print_flags", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_print_flags_banner, + { "Print Banner Page", "ncp.print_flags_banner", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_print_flags_cr, + { "Create", "ncp.print_flags_cr", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_print_flags_del_spool, + { "Delete Spool File after Printing", "ncp.print_flags_del_spool", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_print_flags_exp_tabs, + { "Expand Tabs in the File", "ncp.print_flags_exp_tabs", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_print_flags_ff, + { "Suppress Form Feeds", "ncp.print_flags_ff", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_print_server_version, + { "Print Server Version", "ncp.print_server_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_print_to_file_flag, + { "Print to File Flag", "ncp.print_to_file_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_printer_halted, + { "Printer Halted", "ncp.printer_halted", FT_UINT8, BASE_HEX, VALS(ncp_printer_halted_vals), 0x0, "", HFILL }}, + + { &hf_ncp_printer_offline, + { "Printer Off-Line", "ncp.printer_offline", FT_UINT8, BASE_HEX, VALS(ncp_printer_offline_vals), 0x0, "", HFILL }}, + + { &hf_ncp_priority, + { "Priority", "ncp.priority", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_privileges, + { "Login Privileges", "ncp.privileges", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_pro_dos_info, + { "Pro DOS Info", "ncp.pro_dos_info", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_processor_type, + { "Processor Type", "ncp.processor_type", FT_UINT8, BASE_HEX, VALS(ncp_processor_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_product_major_version, + { "Product Major Version", "ncp.product_major_version", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_product_minor_version, + { "Product Minor Version", "ncp.product_minor_version", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_product_revision_version, + { "Product Revision Version", "ncp.product_revision_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_projected_comp_size, + { "Projected Compression Size", "ncp.projected_comp_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_property_data, + { "Property Data", "ncp.property_data", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_property_has_more_segments, + { "Property Has More Segments", "ncp.property_has_more_segments", FT_UINT8, BASE_HEX, VALS(ncp_property_has_more_segments_vals), 0x0, "", HFILL }}, + + { &hf_ncp_property_name, + { "Property Name", "ncp.property_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_property_name_16, + { "Property Name", "ncp.property_name_16", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_property_segment, + { "Property Segment", "ncp.property_segment", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_property_type, + { "Property Type", "ncp.property_type", FT_UINT8, BASE_HEX, VALS(ncp_property_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_property_value, + { "Property Value", "ncp.property_value", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_proposed_max_size, + { "Proposed Max Size", "ncp.proposed_max_size", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_protocol_board_num, + { "Protocol Board Number", "ncp.protocol_board_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_protocol_flags, + { "Protocol Flags", "ncp.protocol_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_protocol_id, + { "Protocol ID", "ncp.protocol_id", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_protocol_name, + { "Protocol Name", "ncp.protocol_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_protocol_number, + { "Protocol Number", "ncp.protocol_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_purge_c_code, + { "Purge Completion Code", "ncp.purge_c_code", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_purge_count, + { "Purge Count", "ncp.purge_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_purge_flags, + { "Purge Flags", "ncp.purge_flags", FT_UINT16, BASE_HEX, VALS(ncp_purge_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_purge_list, + { "Purge List", "ncp.purge_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_purgeable_blocks, + { "Purgeable Blocks", "ncp.purgeable_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_qms_version, + { "QMS Version", "ncp.qms_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_queue_id, + { "Queue ID", "ncp.queue_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_queue_name, + { "Queue Name", "ncp.queue_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_queue_start_position, + { "Queue Start Position", "ncp.queue_start_position", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_queue_status, + { "Queue Status", "ncp.queue_status", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_queue_status_new_jobs, + { "Operator does not want to add jobs to the queue", "ncp.queue_status_new_jobs", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_queue_status_pserver, + { "Operator does not want additional servers attaching", "ncp.queue_status_pserver", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_queue_status_svc_jobs, + { "Operator does not want servers to service jobs", "ncp.queue_status_svc_jobs", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_queue_type, + { "Queue Type", "ncp.queue_type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_r_tag_num, + { "Resource Tag Number", "ncp.r_tag_num", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_re_mirror_current_offset, + { "ReMirror Current Offset", "ncp.re_mirror_current_offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_re_mirror_drive_number, + { "ReMirror Drive Number", "ncp.re_mirror_drive_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_read_beyond_write, + { "Read Beyond Write", "ncp.read_beyond_write", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_read_exist_blck, + { "Read Existing Block Count", "ncp.read_exist_blck", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_read_exist_part_read, + { "Read Existing Partial Read Count", "ncp.read_exist_part_read", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_read_exist_read_err, + { "Read Existing Read Error Count", "ncp.read_exist_read_err", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_read_exist_write_wait, + { "Read Existing Write Wait Count", "ncp.read_exist_write_wait", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_realloc_slot, + { "Re-Allocate Slot Count", "ncp.realloc_slot", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_realloc_slot_came_too_soon, + { "Re-Allocate Slot Came Too Soon Count", "ncp.realloc_slot_came_too_soon", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rec_lock_count, + { "Record Lock Count", "ncp.rec_lock_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_record_end, + { "Record End", "ncp.record_end", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_record_in_use, + { "Record in Use", "ncp.record_in_use", FT_UINT16, BASE_HEX, VALS(ncp_record_in_use_vals), 0x0, "", HFILL }}, + + { &hf_ncp_record_start, + { "Record Start", "ncp.record_start", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_redirected_printer, + { "Redirected Printer", "ncp.redirected_printer", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reexecute_request, + { "Re-Execute Request Count", "ncp.reexecute_request", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reference_count, + { "Reference Count", "ncp.reference_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_relations_count, + { "Relations Count", "ncp.relations_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rem_cache_node, + { "Remove Cache Node Count", "ncp.rem_cache_node", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rem_cache_node_from_avail, + { "Remove Cache Node From Avail Count", "ncp.rem_cache_node_from_avail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_remote_max_packet_size, + { "Remote Max Packet Size", "ncp.remote_max_packet_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_remote_target_id, + { "Remote Target ID", "ncp.remote_target_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_removable_flag, + { "Removable Flag", "ncp.removable_flag", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_remove_open_rights, + { "Remove Open Rights", "ncp.remove_open_rights", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_remove_open_rights_comp, + { "Compatibility", "ncp.remove_open_rights_comp", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_remove_open_rights_dr, + { "Deny Read", "ncp.remove_open_rights_dr", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_remove_open_rights_dw, + { "Deny Write", "ncp.remove_open_rights_dw", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_remove_open_rights_ro, + { "Read Only", "ncp.remove_open_rights_ro", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_remove_open_rights_wo, + { "Write Only", "ncp.remove_open_rights_wo", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_remove_open_rights_write_thru, + { "Write Through", "ncp.remove_open_rights_write_thru", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_rename_flag, + { "Rename Flag", "ncp.rename_flag", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rename_flag_comp, + { "Compatability allows files that are marked read only to be opened with read/write access", "ncp.rename_flag_comp", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_rename_flag_no, + { "Name Only renames only the specified name space entry name", "ncp.rename_flag_no", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_rename_flag_ren, + { "Rename to Myself allows file to be renamed to it's original name", "ncp.rename_flag_ren", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_replies_cancelled, + { "Replies Cancelled", "ncp.replies_cancelled", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reply_canceled, + { "Reply Canceled Count", "ncp.reply_canceled", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reply_queue_job_numbers, + { "Reply Queue Job Numbers", "ncp.reply_queue_job_numbers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_request_bit_map, + { "Request Bit Map", "ncp.request_bit_map", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_request_bit_map_ratt, + { "Return Attributes", "ncp.request_bit_map_ratt", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_acc_date, + { "Access Date", "ncp.request_bit_map_ret_acc_date", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_acc_priv, + { "Access Privileges", "ncp.request_bit_map_ret_acc_priv", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_afp_ent, + { "AFP Entry ID", "ncp.request_bit_map_ret_afp_ent", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_afp_parent, + { "AFP Parent Entry ID", "ncp.request_bit_map_ret_afp_parent", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_bak_date, + { "Backup Date&Time", "ncp.request_bit_map_ret_bak_date", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_cr_date, + { "Creation Date", "ncp.request_bit_map_ret_cr_date", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_data_fork, + { "Data Fork Length", "ncp.request_bit_map_ret_data_fork", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_finder, + { "Finder Info", "ncp.request_bit_map_ret_finder", FT_BOOLEAN, 16, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_long_nm, + { "Long Name", "ncp.request_bit_map_ret_long_nm", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_mod_date, + { "Modify Date&Time", "ncp.request_bit_map_ret_mod_date", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_num_off, + { "Number of Offspring", "ncp.request_bit_map_ret_num_off", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_owner, + { "Owner ID", "ncp.request_bit_map_ret_owner", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_res_fork, + { "Resource Fork Length", "ncp.request_bit_map_ret_res_fork", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_request_bit_map_ret_short, + { "Short Name", "ncp.request_bit_map_ret_short", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_request_code, + { "Request Code", "ncp.request_code", FT_UINT8, BASE_HEX, VALS(ncp_request_code_vals), 0x0, "", HFILL }}, + + { &hf_ncp_requests_reprocessed, + { "Requests Reprocessed", "ncp.requests_reprocessed", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved, + { "Reserved", "ncp.reserved", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved10, + { "Reserved", "ncp.reserved10", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved12, + { "Reserved", "ncp.reserved12", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved120, + { "Reserved", "ncp.reserved120", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved16, + { "Reserved", "ncp.reserved16", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved2, + { "Reserved", "ncp.reserved2", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved20, + { "Reserved", "ncp.reserved20", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved28, + { "Reserved", "ncp.reserved28", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved3, + { "Reserved", "ncp.reserved3", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved36, + { "Reserved", "ncp.reserved36", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved4, + { "Reserved", "ncp.reserved4", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved44, + { "Reserved", "ncp.reserved44", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved48, + { "Reserved", "ncp.reserved48", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved50, + { "Reserved", "ncp.reserved50", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved56, + { "Reserved", "ncp.reserved56", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved6, + { "Reserved", "ncp.reserved6", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved64, + { "Reserved", "ncp.reserved64", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved8, + { "Reserved", "ncp.reserved8", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_reserved_or_directory_number, + { "Reserved or Directory Number (see EAFlags)", "ncp.reserved_or_directory_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_resource_count, + { "Resource Count", "ncp.resource_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_resource_fork_len, + { "Resource Fork Len", "ncp.resource_fork_len", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_resource_fork_size, + { "Resource Fork Size", "ncp.resource_fork_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_resource_name, + { "Resource Name", "ncp.resource_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_resource_sig, + { "Resource Signature", "ncp.resource_sig", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_restore_time, + { "Restore Time", "ncp.restore_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_restriction, + { "Disk Space Restriction", "ncp.restriction", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_restrictions_enforced, + { "Disk Restrictions Enforce Flag", "ncp.restrictions_enforced", FT_UINT8, BASE_HEX, VALS(ncp_restrictions_enforced_vals), 0x0, "", HFILL }}, + + { &hf_ncp_ret_info_mask, + { "Return Information", "ncp.ret_info_mask", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ret_info_mask_actual, + { "Return Actual Information", "ncp.ret_info_mask_actual", FT_BOOLEAN, 16, NULL, 0x4000, "", HFILL }}, + + { &hf_ncp_ret_info_mask_alloc, + { "Return Allocation Space Information", "ncp.ret_info_mask_alloc", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_ret_info_mask_arch, + { "Return Archive Information", "ncp.ret_info_mask_arch", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_ret_info_mask_attr, + { "Return Attribute Information", "ncp.ret_info_mask_attr", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_ret_info_mask_create, + { "Return Creation Information", "ncp.ret_info_mask_create", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_ret_info_mask_dir, + { "Return Directory Information", "ncp.ret_info_mask_dir", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_ret_info_mask_eattr, + { "Return Extended Attributes Information", "ncp.ret_info_mask_eattr", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_ret_info_mask_fname, + { "Return File Name Information", "ncp.ret_info_mask_fname", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_ret_info_mask_id, + { "Return ID Information", "ncp.ret_info_mask_id", FT_BOOLEAN, 16, NULL, 0x1000, "", HFILL }}, + + { &hf_ncp_ret_info_mask_logical, + { "Return Logical Information", "ncp.ret_info_mask_logical", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_ret_info_mask_mod, + { "Return Modify Information", "ncp.ret_info_mask_mod", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_ret_info_mask_ns, + { "Return Name Space Information", "ncp.ret_info_mask_ns", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_ret_info_mask_ns_attr, + { "Return Name Space Attributes Information", "ncp.ret_info_mask_ns_attr", FT_BOOLEAN, 16, NULL, 0x2000, "", HFILL }}, + + { &hf_ncp_ret_info_mask_rights, + { "Return Rights Information", "ncp.ret_info_mask_rights", FT_BOOLEAN, 16, NULL, 0x800, "", HFILL }}, + + { &hf_ncp_ret_info_mask_size, + { "Return Size Information", "ncp.ret_info_mask_size", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_ret_info_mask_tspace, + { "Return Total Space Information", "ncp.ret_info_mask_tspace", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_retry_tx_count, + { "Transmit Retry Count", "ncp.retry_tx_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_return_info_count, + { "Return Information Count", "ncp.return_info_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_returned_list_count, + { "Returned List Count", "ncp.returned_list_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rev_query_flag, + { "Revoke Rights Query Flag", "ncp.rev_query_flag", FT_UINT8, BASE_HEX, VALS(ncp_rev_query_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_revision, + { "Revision", "ncp.revision", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_revision_number, + { "Revision", "ncp.revision_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rights_grant_mask, + { "Grant Rights", "ncp.rights_grant_mask", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_create, + { "Create", "ncp.rights_grant_mask_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_del, + { "Delete", "ncp.rights_grant_mask_del", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_mod, + { "Modify", "ncp.rights_grant_mask_mod", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_open, + { "Open", "ncp.rights_grant_mask_open", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_parent, + { "Parental", "ncp.rights_grant_mask_parent", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_read, + { "Read", "ncp.rights_grant_mask_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_search, + { "Search", "ncp.rights_grant_mask_search", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_rights_grant_mask_write, + { "Write", "ncp.rights_grant_mask_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask, + { "Revoke Rights", "ncp.rights_revoke_mask", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_create, + { "Create", "ncp.rights_revoke_mask_create", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_del, + { "Delete", "ncp.rights_revoke_mask_del", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_mod, + { "Modify", "ncp.rights_revoke_mask_mod", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_open, + { "Open", "ncp.rights_revoke_mask_open", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_parent, + { "Parental", "ncp.rights_revoke_mask_parent", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_read, + { "Read", "ncp.rights_revoke_mask_read", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_search, + { "Search", "ncp.rights_revoke_mask_search", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_rights_revoke_mask_write, + { "Write", "ncp.rights_revoke_mask_write", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_rip_socket_num, + { "RIP Socket Number", "ncp.rip_socket_num", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_route_hops, + { "Hop Count", "ncp.route_hops", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_route_time, + { "Route Time", "ncp.route_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_router_dn_flag, + { "Router Down Flag", "ncp.router_dn_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rpc_c_code, + { "RPC Completion Code", "ncp.rpc_c_code", FT_UINT16, BASE_HEX, VALS(ncp_rpc_c_code_vals), 0x0, "", HFILL }}, + + { &hf_ncp_rpy_nearest_srv_flag, + { "Reply to Nearest Server Flag", "ncp.rpy_nearest_srv_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rx_buffer_size, + { "Receive Buffer Size", "ncp.rx_buffer_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rx_buffers, + { "Receive Buffers", "ncp.rx_buffers", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rx_buffers_75, + { "Receive Buffers Warning Level", "ncp.rx_buffers_75", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_rx_buffers_checked_out, + { "Receive Buffers Checked Out Count", "ncp.rx_buffers_checked_out", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_day, + { "Day", "ncp.s_day", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_day_of_week, + { "Day of Week", "ncp.s_day_of_week", FT_UINT8, BASE_HEX, VALS(ncp_s_day_of_week_vals), 0x0, "", HFILL }}, + + { &hf_ncp_s_hour, + { "Hour", "ncp.s_hour", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_m_info, + { "Storage Media Information", "ncp.s_m_info", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_minute, + { "Minutes", "ncp.s_minute", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_module_name, + { "Storage Module Name", "ncp.s_module_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_month, + { "Month", "ncp.s_month", FT_UINT8, BASE_HEX, VALS(ncp_s_month_vals), 0x0, "", HFILL }}, + + { &hf_ncp_s_offset_64bit, + { "64bit Starting Offset", "ncp.s_offset_64bit", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_s_second, + { "Seconds", "ncp.s_second", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_salvageable_file_entry_number, + { "Salvageable File Entry Number", "ncp.salvageable_file_entry_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sap_socket_number, + { "SAP Socket Number", "ncp.sap_socket_number", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sattr, + { "Search Attributes", "ncp.sattr", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sattr_archive, + { "Archive", "ncp.sattr_archive", FT_BOOLEAN, 8, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_sattr_execute_confirm, + { "Execute Confirm", "ncp.sattr_execute_confirm", FT_BOOLEAN, 8, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_sattr_exonly, + { "Execute-Only Files Allowed", "ncp.sattr_exonly", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_sattr_hid, + { "Hidden Files Allowed", "ncp.sattr_hid", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_sattr_ronly, + { "Read-Only Files Allowed", "ncp.sattr_ronly", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_sattr_shareable, + { "Shareable", "ncp.sattr_shareable", FT_BOOLEAN, 8, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_sattr_sub, + { "Subdirectories Only", "ncp.sattr_sub", FT_BOOLEAN, 8, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_sattr_sys, + { "System Files Allowed", "ncp.sattr_sys", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_saved_an_out_of_order_packet, + { "Saved An Out Of Order Packet Count", "ncp.saved_an_out_of_order_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_scan_items, + { "Number of Items returned from Scan", "ncp.scan_items", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_att_archive, + { "Archive", "ncp.search_att_archive", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_search_att_execute_confirm, + { "Execute Confirm", "ncp.search_att_execute_confirm", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_search_att_execute_only, + { "Execute-Only", "ncp.search_att_execute_only", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_search_att_hidden, + { "Hidden Files Allowed", "ncp.search_att_hidden", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_search_att_low, + { "Search Attributes", "ncp.search_att_low", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_att_read_only, + { "Read-Only", "ncp.search_att_read_only", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_search_att_shareable, + { "Shareable", "ncp.search_att_shareable", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_search_att_sub, + { "Subdirectories Only", "ncp.search_att_sub", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_search_att_system, + { "System", "ncp.search_att_system", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_search_attr_all_files, + { "All Files and Directories", "ncp.search_attr_all_files", FT_BOOLEAN, 16, NULL, 0x8000, "", HFILL }}, + + { &hf_ncp_search_bit_map, + { "Search Bit Map", "ncp.search_bit_map", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_bit_map_files, + { "Files", "ncp.search_bit_map_files", FT_BOOLEAN, 8, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_search_bit_map_hidden, + { "Hidden", "ncp.search_bit_map_hidden", FT_BOOLEAN, 8, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_search_bit_map_sub, + { "Subdirectory", "ncp.search_bit_map_sub", FT_BOOLEAN, 8, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_search_bit_map_sys, + { "System", "ncp.search_bit_map_sys", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_search_conn_number, + { "Search Connection Number", "ncp.search_conn_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_instance, + { "Search Instance", "ncp.search_instance", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_number, + { "Search Number", "ncp.search_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_pattern, + { "Search Pattern", "ncp.search_pattern", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_sequence, + { "Search Sequence", "ncp.search_sequence", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_search_sequence_word, + { "Search Sequence", "ncp.search_sequence_word", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sec_rel_to_y2k, + { "Seconds Relative to the Year 2000", "ncp.sec_rel_to_y2k", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sector_size, + { "Sector Size", "ncp.sector_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sectors_per_block, + { "Sectors Per Block", "ncp.sectors_per_block", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sectors_per_cluster, + { "Sectors Per Cluster", "ncp.sectors_per_cluster", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sectors_per_cluster_long, + { "Sectors Per Cluster", "ncp.sectors_per_cluster_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sectors_per_track, + { "Sectors Per Track", "ncp.sectors_per_track", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_security_equiv_list, + { "Security Equivalent List", "ncp.security_equiv_list", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_security_flag, + { "Security Flag", "ncp.security_flag", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_security_restriction_version, + { "Security Restriction Version", "ncp.security_restriction_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_handle, + { "Semaphore Handle", "ncp.semaphore_handle", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_name, + { "Semaphore Name", "ncp.semaphore_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_name_len, + { "Semaphore Name Len", "ncp.semaphore_name_len", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_open_count, + { "Semaphore Open Count", "ncp.semaphore_open_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_share_count, + { "Semaphore Share Count", "ncp.semaphore_share_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_time_out, + { "Semaphore Time Out", "ncp.semaphore_time_out", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_semaphore_value, + { "Semaphore Value", "ncp.semaphore_value", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_send_hold_off_message, + { "Send Hold Off Message Count", "ncp.send_hold_off_message", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_send_status, + { "Send Status", "ncp.send_status", FT_UINT8, BASE_HEX, VALS(ncp_send_status_vals), 0x0, "", HFILL }}, + + { &hf_ncp_sent_a_dup_reply, + { "Sent A Duplicate Reply Count", "ncp.sent_a_dup_reply", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sent_pos_ack, + { "Sent Positive Acknowledge Count", "ncp.sent_pos_ack", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sequence_byte, + { "Sequence", "ncp.sequence_byte", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sequence_number, + { "Sequence Number", "ncp.sequence_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_address, + { "Server Address", "ncp.server_address", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_app_num, + { "Server App Number", "ncp.server_app_num", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_id_number, + { "Server ID", "ncp.server_id_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_info_flags, + { "Server Information Flags", "ncp.server_info_flags", FT_UINT16, BASE_HEX, VALS(ncp_server_info_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_server_list_flags, + { "Server List Flags", "ncp.server_list_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_name, + { "Server Name", "ncp.server_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_name_len, + { "Server Name", "ncp.server_name_len", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_name_stringz, + { "Server Name", "ncp.server_name_stringz", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_network_address, + { "Server Network Address", "ncp.server_network_address", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_node, + { "Server Node", "ncp.server_node", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_serial_number, + { "Server Serial Number", "ncp.server_serial_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_station, + { "Server Station", "ncp.server_station", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_station_list, + { "Server Station List", "ncp.server_station_list", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_station_long, + { "Server Station", "ncp.server_station_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_status_record, + { "Server Status Record", "ncp.server_status_record", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_task_number, + { "Server Task Number", "ncp.server_task_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_task_number_long, + { "Server Task Number", "ncp.server_task_number_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_type, + { "Server Type", "ncp.server_type", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_utilization, + { "Server Utilization", "ncp.server_utilization", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_server_utilization_percentage, + { "Server Utilization Percentage", "ncp.server_utilization_percentage", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_set_cmd_category, + { "Set Command Category", "ncp.set_cmd_category", FT_UINT8, BASE_HEX, VALS(ncp_set_cmd_category_vals), 0x0, "", HFILL }}, + + { &hf_ncp_set_cmd_flags, + { "Set Command Flags", "ncp.set_cmd_flags", FT_UINT8, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_set_cmd_name, + { "Set Command Name", "ncp.set_cmd_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_set_cmd_type, + { "Set Command Type", "ncp.set_cmd_type", FT_UINT8, BASE_HEX, VALS(ncp_set_cmd_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_set_cmd_value_num, + { "Set Command Value", "ncp.set_cmd_value_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_set_parm_name, + { "Set Parameter Name", "ncp.set_parm_name", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sft_error_table, + { "SFT Error Table", "ncp.sft_error_table", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sft_support_level, + { "SFT Support Level", "ncp.sft_support_level", FT_UINT8, BASE_HEX, VALS(ncp_sft_support_level_vals), 0x0, "", HFILL }}, + + { &hf_ncp_shareable_lock_count, + { "Shareable Lock Count", "ncp.shareable_lock_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_shared_memory_addresses, + { "Shared Memory Addresses", "ncp.shared_memory_addresses", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_short_name, + { "Short Name", "ncp.short_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_short_stack_name, + { "Short Stack Name", "ncp.short_stack_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_shouldnt_be_ack_here, + { "Shouldn't Be ACKing Here Count", "ncp.shouldnt_be_ack_here", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sibling_count, + { "Sibling Count", "ncp.sibling_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_signature, + { "Signature", "ncp.signature", FT_BOOLEAN, 8, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_sm_info_size, + { "Storage Module Information Size", "ncp.sm_info_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_smids, + { "Storage Media ID's", "ncp.smids", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_software_description, + { "Software Description", "ncp.software_description", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_software_driver_type, + { "Software Driver Type", "ncp.software_driver_type", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_software_major_version_number, + { "Software Major Version Number", "ncp.software_major_version_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_software_minor_version_number, + { "Software Minor Version Number", "ncp.software_minor_version_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_someone_else_did_it_0, + { "Someone Else Did It Count 0", "ncp.someone_else_did_it_0", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_someone_else_did_it_1, + { "Someone Else Did It Count 1", "ncp.someone_else_did_it_1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_someone_else_did_it_2, + { "Someone Else Did It Count 2", "ncp.someone_else_did_it_2", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_someone_else_using_this_file, + { "Someone Else Using This File Count", "ncp.someone_else_using_this_file", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_source_component_count, + { "Source Path Component Count", "ncp.source_component_count", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_source_dir_handle, + { "Source Directory Handle", "ncp.source_dir_handle", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_source_originate_time, + { "Source Originate Time", "ncp.source_originate_time", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_source_path, + { "Source Path", "ncp.source_path", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_source_return_time, + { "Source Return Time", "ncp.source_return_time", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_space_migrated, + { "Space Migrated", "ncp.space_migrated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_space_restriction_node_count, + { "Space Restriction Node Count", "ncp.space_restriction_node_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_space_used, + { "Space Used", "ncp.space_used", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_abort_conn, + { "SPX Aborted Connection", "ncp.spx_abort_conn", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_bad_in_pkt, + { "SPX Bad In Packet Count", "ncp.spx_bad_in_pkt", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_bad_listen, + { "SPX Bad Listen Count", "ncp.spx_bad_listen", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_bad_send, + { "SPX Bad Send Count", "ncp.spx_bad_send", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_est_conn_fail, + { "SPX Establish Connection Fail", "ncp.spx_est_conn_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_est_conn_req, + { "SPX Establish Connection Requests", "ncp.spx_est_conn_req", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_incoming_pkt, + { "SPX Incoming Packet Count", "ncp.spx_incoming_pkt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_listen_con_fail, + { "SPX Listen Connect Fail", "ncp.spx_listen_con_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_listen_con_req, + { "SPX Listen Connect Request", "ncp.spx_listen_con_req", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_listen_pkt, + { "SPX Listen Packet Count", "ncp.spx_listen_pkt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_max_conn, + { "SPX Max Connections Count", "ncp.spx_max_conn", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_max_used_conn, + { "SPX Max Used Connections", "ncp.spx_max_used_conn", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_no_ses_listen, + { "SPX No Session Listen ECB Count", "ncp.spx_no_ses_listen", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_send, + { "SPX Send Count", "ncp.spx_send", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_send_fail, + { "SPX Send Fail Count", "ncp.spx_send_fail", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_supp_pkt, + { "SPX Suppressed Packet Count", "ncp.spx_supp_pkt", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_watch_dog, + { "SPX Watch Dog Destination Session Count", "ncp.spx_watch_dog", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_spx_window_choke, + { "SPX Window Choke Count", "ncp.spx_window_choke", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_src_name_space, + { "Source Name Space", "ncp.src_name_space", FT_UINT8, BASE_HEX, VALS(ncp_src_name_space_vals), 0x0, "", HFILL }}, + + { &hf_ncp_stack_count, + { "Stack Count", "ncp.stack_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stack_full_name_str, + { "Stack Full Name", "ncp.stack_full_name_str", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stack_major_vn, + { "Stack Major Version Number", "ncp.stack_major_vn", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stack_minor_vn, + { "Stack Minor Version Number", "ncp.stack_minor_vn", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stack_number, + { "Stack Number", "ncp.stack_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stack_short_name, + { "Stack Short Name", "ncp.stack_short_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_conn_num, + { "Starting Connection Number", "ncp.start_conn_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_number, + { "Start Number", "ncp.start_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_number_flag, + { "Start Number Flag", "ncp.start_number_flag", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_search_number, + { "Start Search Number", "ncp.start_search_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_station_error, + { "Start Station Error Count", "ncp.start_station_error", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_start_volume_number, + { "Starting Volume Number", "ncp.start_volume_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_starting_block, + { "Starting Block", "ncp.starting_block", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_starting_number, + { "Starting Number", "ncp.starting_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stat_major_version, + { "Statistics Table Major Version", "ncp.stat_major_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stat_minor_version, + { "Statistics Table Minor Version", "ncp.stat_minor_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stat_table_major_version, + { "Statistics Table Major Version", "ncp.stat_table_major_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_stat_table_minor_version, + { "Statistics Table Minor Version", "ncp.stat_table_minor_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_station_list, + { "Station List", "ncp.station_list", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_station_number, + { "Station Number", "ncp.station_number", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_status, + { "Status", "ncp.status", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_status_flag_bits, + { "Status Flag", "ncp.status_flag_bits", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_status_flag_bits_audit, + { "Audit", "ncp.status_flag_bits_audit", FT_BOOLEAN, 32, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_status_flag_bits_comp, + { "Compression", "ncp.status_flag_bits_comp", FT_BOOLEAN, 32, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_status_flag_bits_im_purge, + { "Immediate Purge", "ncp.status_flag_bits_im_purge", FT_BOOLEAN, 32, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_status_flag_bits_migrate, + { "Migration", "ncp.status_flag_bits_migrate", FT_BOOLEAN, 32, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_status_flag_bits_nss, + { "NSS Volume", "ncp.status_flag_bits_nss", FT_BOOLEAN, 32, NULL, 0x80000000, "", HFILL }}, + + { &hf_ncp_status_flag_bits_ro, + { "Read Only", "ncp.status_flag_bits_ro", FT_BOOLEAN, 32, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_status_flag_bits_suballoc, + { "Sub Allocation", "ncp.status_flag_bits_suballoc", FT_BOOLEAN, 32, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_still_doing_the_last_req, + { "Still Doing The Last Request Count", "ncp.still_doing_the_last_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_still_transmitting, + { "Still Transmitting Count", "ncp.still_transmitting", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sub_alloc_clusters, + { "Sub Alloc Clusters", "ncp.sub_alloc_clusters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sub_alloc_freeable_clusters, + { "Sub Alloc Freeable Clusters", "ncp.sub_alloc_freeable_clusters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_sub_directory, + { "Subdirectory", "ncp.sub_directory", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_suggested_file_size, + { "Suggested File Size", "ncp.suggested_file_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_support_module_id, + { "Support Module ID", "ncp.support_module_id", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_synch_name, + { "Synch Name", "ncp.synch_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_system_interval_marker, + { "System Interval Marker", "ncp.system_interval_marker", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_tab_size, + { "Tab Size", "ncp.tab_size", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_client_list, + { "Target Client List", "ncp.target_client_list", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_connection_number, + { "Target Connection Number", "ncp.target_connection_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_dir_handle, + { "Target Directory Handle", "ncp.target_dir_handle", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_entry_id, + { "Target Entry ID", "ncp.target_entry_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_execution_time, + { "Target Execution Time", "ncp.target_execution_time", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_file_handle, + { "Target File Handle", "ncp.target_file_handle", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_file_offset, + { "Target File Offset", "ncp.target_file_offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_message, + { "Message", "ncp.target_message", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_ptr, + { "Target Printer", "ncp.target_ptr", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_receive_time, + { "Target Receive Time", "ncp.target_receive_time", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_server_id_number, + { "Target Server ID Number", "ncp.target_server_id_number", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_target_transmit_time, + { "Target Transmit Time", "ncp.target_transmit_time", FT_BYTES, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_task_num_byte, + { "Task Number", "ncp.task_num_byte", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_task_number_word, + { "Task Number", "ncp.task_number_word", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_text_job_description, + { "Text Job Description", "ncp.text_job_description", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_thrashing_count, + { "Thrashing Count", "ncp.thrashing_count", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_time_to_net, + { "Time To Net", "ncp.time_to_net", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_timeout_limit, + { "Timeout Limit", "ncp.timeout_limit", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_timesync_status_active, + { "Time Synchronization is Active", "ncp.timesync_status_active", FT_BOOLEAN, 32, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_timesync_status_ext_sync, + { "External Clock Status", "ncp.timesync_status_ext_sync", FT_BOOLEAN, 32, NULL, 0xf0000, "", HFILL }}, + + { &hf_ncp_timesync_status_external, + { "External Time Synchronization Active", "ncp.timesync_status_external", FT_BOOLEAN, 32, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_timesync_status_flags, + { "Timesync Status", "ncp.timesync_status_flags", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_timesync_status_net_sync, + { "Time is Synchronized to the Network", "ncp.timesync_status_net_sync", FT_BOOLEAN, 32, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_timesync_status_server_type, + { "Time Server Type", "ncp.timesync_status_server_type", FT_UINT32, BASE_HEX, VALS(ncp_timesync_status_server_type_vals), 0x700, "", HFILL }}, + + { &hf_ncp_timesync_status_sync, + { "Time is Synchronized", "ncp.timesync_status_sync", FT_BOOLEAN, 32, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_too_many_ack_frag, + { "Too Many ACK Fragments Count", "ncp.too_many_ack_frag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_too_many_hops, + { "Too Many Hops", "ncp.too_many_hops", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_blks_to_dcompress, + { "Total Blocks To Decompress", "ncp.total_blks_to_dcompress", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_blocks, + { "Total Blocks", "ncp.total_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_cache_writes, + { "Total Cache Writes", "ncp.total_cache_writes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_changed_fats, + { "Total Changed FAT Entries", "ncp.total_changed_fats", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_cnt_blocks, + { "Total Count Blocks", "ncp.total_cnt_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_common_cnts, + { "Total Common Counts", "ncp.total_common_cnts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_dir_entries, + { "Total Directory Entries", "ncp.total_dir_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_directory_slots, + { "Total Directory Slots", "ncp.total_directory_slots", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_extended_directory_extants, + { "Total Extended Directory Extants", "ncp.total_extended_directory_extants", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_file_service_packets, + { "Total File Service Packets", "ncp.total_file_service_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_files_opened, + { "Total Files Opened", "ncp.total_files_opened", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_lfs_counters, + { "Total LFS Counters", "ncp.total_lfs_counters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_offspring, + { "Total Offspring", "ncp.total_offspring", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_other_packets, + { "Total Other Packets", "ncp.total_other_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_queue_jobs, + { "Total Queue Jobs", "ncp.total_queue_jobs", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_read_requests, + { "Total Read Requests", "ncp.total_read_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_request, + { "Total Requests", "ncp.total_request", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_request_packets, + { "Total Request Packets", "ncp.total_request_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_routed_packets, + { "Total Routed Packets", "ncp.total_routed_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_rx_packet_count, + { "Total Receive Packet Count", "ncp.total_rx_packet_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_rx_packets, + { "Total Receive Packets", "ncp.total_rx_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_rx_pkts, + { "Total Receive Packets", "ncp.total_rx_pkts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_server_memory, + { "Total Server Memory", "ncp.total_server_memory", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_stream_size_struct_space_alloc, + { "Total Data Stream Disk Space Alloc", "ncp.total_stream_size_struct_space_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_trans_backed_out, + { "Total Transactions Backed Out", "ncp.total_trans_backed_out", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_trans_performed, + { "Total Transactions Performed", "ncp.total_trans_performed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_tx_packet_count, + { "Total Transmit Packet Count", "ncp.total_tx_packet_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_tx_packets, + { "Total Transmit Packets", "ncp.total_tx_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_tx_pkts, + { "Total Transmit Packets", "ncp.total_tx_pkts", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_unfilled_backout_requests, + { "Total Unfilled Backout Requests", "ncp.total_unfilled_backout_requests", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_volume_clusters, + { "Total Volume Clusters", "ncp.total_volume_clusters", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_write_requests, + { "Total Write Requests", "ncp.total_write_requests", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_total_write_trans_performed, + { "Total Write Transactions Performed", "ncp.total_write_trans_performed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_track_on_flag, + { "Track On Flag", "ncp.track_on_flag", FT_BOOLEAN, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_disk_space, + { "Transaction Disk Space", "ncp.transaction_disk_space", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_fat_allocations, + { "Transaction FAT Allocations", "ncp.transaction_fat_allocations", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_file_size_changes, + { "Transaction File Size Changes", "ncp.transaction_file_size_changes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_files_truncated, + { "Transaction Files Truncated", "ncp.transaction_files_truncated", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_number, + { "Transaction Number", "ncp.transaction_number", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_tracking_enabled, + { "Transaction Tracking Enabled", "ncp.transaction_tracking_enabled", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_tracking_supported, + { "Transaction Tracking Supported", "ncp.transaction_tracking_supported", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transaction_volume_number, + { "Transaction Volume Number", "ncp.transaction_volume_number", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transport_addr, + { "Transport Address", "ncp.transport_addr", FT_UINT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_transport_type, + { "Communications Type", "ncp.transport_type", FT_UINT8, BASE_HEX, VALS(ncp_transport_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_trustee_id_set, + { "Trustee ID", "ncp.trustee_id_set", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_trustee_list_node_count, + { "Trustee List Node Count", "ncp.trustee_list_node_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_trustee_rights_create, + { "Create", "ncp.trustee_rights_create", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_trustee_rights_del, + { "Delete", "ncp.trustee_rights_del", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_trustee_rights_low, + { "Trustee Rights", "ncp.trustee_rights_low", FT_UINT16, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_trustee_rights_modify, + { "Modify", "ncp.trustee_rights_modify", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_trustee_rights_open, + { "Open", "ncp.trustee_rights_open", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_trustee_rights_parent, + { "Parental", "ncp.trustee_rights_parent", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_trustee_rights_read, + { "Read", "ncp.trustee_rights_read", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_trustee_rights_search, + { "Search", "ncp.trustee_rights_search", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_trustee_rights_super, + { "Supervisor", "ncp.trustee_rights_super", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_trustee_rights_write, + { "Write", "ncp.trustee_rights_write", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_trustee_set_number, + { "Trustee Set Number", "ncp.trustee_set_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_try_to_write_too_much, + { "Trying To Write Too Much Count", "ncp.try_to_write_too_much", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_comp_blks, + { "Total Compression Blocks", "ncp.ttl_comp_blks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_ds_disk_space_alloc, + { "Total Streams Space Allocated", "ncp.ttl_ds_disk_space_alloc", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_eas, + { "Total EA's", "ncp.ttl_eas", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_eas_data_size, + { "Total EA's Data Size", "ncp.ttl_eas_data_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_eas_key_size, + { "Total EA's Key Size", "ncp.ttl_eas_key_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_inter_blks, + { "Total Intermediate Blocks", "ncp.ttl_inter_blks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_migrated_size, + { "Total Migrated Size", "ncp.ttl_migrated_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_num_of_r_tags, + { "Total Number of Resource Tags", "ncp.ttl_num_of_r_tags", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_num_of_set_cmds, + { "Total Number of Set Commands", "ncp.ttl_num_of_set_cmds", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_pckts_routed, + { "Total Packets Routed", "ncp.ttl_pckts_routed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_pckts_srvcd, + { "Total Packets Serviced", "ncp.ttl_pckts_srvcd", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_values_length, + { "Total Values Length", "ncp.ttl_values_length", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_ttl_write_data_size, + { "Total Write Data Size", "ncp.ttl_write_data_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_tts_flag, + { "Transaction Tracking Flag", "ncp.tts_flag", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_tts_level, + { "TTS Level", "ncp.tts_level", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_turbo_fat_build_failed, + { "Turbo FAT Build Failed Count", "ncp.turbo_fat_build_failed", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_turbo_used_for_file_service, + { "Turbo Used For File Service", "ncp.turbo_used_for_file_service", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_un_claimed_packets, + { "Unclaimed Packets", "ncp.un_claimed_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_un_compressable_data_streams_count, + { "Uncompressable Data Streams Count", "ncp.un_compressable_data_streams_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_un_used, + { "Unused", "ncp.un_used", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_un_used_directory_entries, + { "Unused Directory Entries", "ncp.un_used_directory_entries", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_un_used_extended_directory_extants, + { "Unused Extended Directory Extants", "ncp.un_used_extended_directory_extants", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_unclaimed_packets, + { "Unclaimed Packets", "ncp.unclaimed_packets", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_undefined_28, + { "Undefined", "ncp.undefined_28", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_undefined_8, + { "Undefined", "ncp.undefined_8", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_unique_id, + { "Unique ID", "ncp.unique_id", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_unknown_network, + { "Unknown Network", "ncp.unknown_network", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_unused_disk_blocks, + { "Unused Disk Blocks", "ncp.unused_disk_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_update_date, + { "Update Date", "ncp.update_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_update_id, + { "Update ID", "ncp.update_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_update_time, + { "Update Time", "ncp.update_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_used_blocks, + { "Used Blocks", "ncp.used_blocks", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_used_space, + { "Used Space", "ncp.used_space", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_id, + { "User ID", "ncp.user_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_info_audit_conn, + { "Audit Connection Recorded", "ncp.user_info_audit_conn", FT_BOOLEAN, 16, NULL, 0x40, "", HFILL }}, + + { &hf_ncp_user_info_audited, + { "Audited", "ncp.user_info_audited", FT_BOOLEAN, 16, NULL, 0x4, "", HFILL }}, + + { &hf_ncp_user_info_being_abort, + { "Being Aborted", "ncp.user_info_being_abort", FT_BOOLEAN, 16, NULL, 0x2, "", HFILL }}, + + { &hf_ncp_user_info_bindery, + { "Bindery Connection", "ncp.user_info_bindery", FT_BOOLEAN, 16, NULL, 0x400, "", HFILL }}, + + { &hf_ncp_user_info_dsaudit_conn, + { "DS Audit Connection Recorded", "ncp.user_info_dsaudit_conn", FT_BOOLEAN, 16, NULL, 0x80, "", HFILL }}, + + { &hf_ncp_user_info_held_req, + { "Held Requests", "ncp.user_info_held_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_info_int_login, + { "Internal Login", "ncp.user_info_int_login", FT_BOOLEAN, 16, NULL, 0x200, "", HFILL }}, + + { &hf_ncp_user_info_logged_in, + { "Logged In", "ncp.user_info_logged_in", FT_BOOLEAN, 16, NULL, 0x1, "", HFILL }}, + + { &hf_ncp_user_info_logout, + { "Logout in Progress", "ncp.user_info_logout", FT_BOOLEAN, 16, NULL, 0x100, "", HFILL }}, + + { &hf_ncp_user_info_mac_station, + { "MAC Station", "ncp.user_info_mac_station", FT_BOOLEAN, 16, NULL, 0x10, "", HFILL }}, + + { &hf_ncp_user_info_need_sec, + { "Needs Security Change", "ncp.user_info_need_sec", FT_BOOLEAN, 16, NULL, 0x8, "", HFILL }}, + + { &hf_ncp_user_info_temp_authen, + { "Temporary Authenticated", "ncp.user_info_temp_authen", FT_BOOLEAN, 16, NULL, 0x20, "", HFILL }}, + + { &hf_ncp_user_info_ttl_bytes_rd, + { "Total Bytes Read", "ncp.user_info_ttl_bytes_rd", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_info_ttl_bytes_wrt, + { "Total Bytes Written", "ncp.user_info_ttl_bytes_wrt", FT_BYTES, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_info_use_count, + { "Use Count", "ncp.user_info_use_count", FT_UINT16, BASE_HEX, VALS(ncp_user_info_use_count_vals), 0x0, "", HFILL }}, + + { &hf_ncp_user_login_allowed, + { "Login Status", "ncp.user_login_allowed", FT_UINT8, BASE_HEX, VALS(ncp_user_login_allowed_vals), 0x0, "", HFILL }}, + + { &hf_ncp_user_name, + { "User Name", "ncp.user_name", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_user_name_16, + { "User Name", "ncp.user_name_16", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_uts_time_in_seconds, + { "UTC Time in Seconds", "ncp.uts_time_in_seconds", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_valid_bfrs_reused, + { "Valid Buffers Reused", "ncp.valid_bfrs_reused", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_value_available, + { "Value Available", "ncp.value_available", FT_UINT8, BASE_HEX, VALS(ncp_value_available_vals), 0x0, "", HFILL }}, + + { &hf_ncp_vap_version, + { "VAP Version", "ncp.vap_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_variable_bit_mask, + { "Variable Bit Mask", "ncp.variable_bit_mask", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_variable_bits_defined, + { "Variable Bits Defined", "ncp.variable_bits_defined", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_vconsole_rev, + { "Console Revision", "ncp.vconsole_rev", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_vconsole_ver, + { "Console Version", "ncp.vconsole_ver", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_verb, + { "Verb", "ncp.verb", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_verb_data, + { "Verb Data", "ncp.verb_data", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_version, + { "Version", "ncp.version", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_version_number, + { "Version", "ncp.version_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_vert_location, + { "Vertical Location", "ncp.vert_location", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_virtual_console_version, + { "Virtual Console Version", "ncp.virtual_console_version", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_vol_info_reply_len, + { "Volume Information Reply Length", "ncp.vol_info_reply_len", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_active_count, + { "Volume Active Count", "ncp.volume_active_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_cached_flag, + { "Volume Cached Flag", "ncp.volume_cached_flag", FT_UINT8, BASE_HEX, VALS(ncp_volume_cached_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_hashed_flag, + { "Volume Hashed Flag", "ncp.volume_hashed_flag", FT_UINT8, BASE_HEX, VALS(ncp_volume_hashed_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_id, + { "Volume ID", "ncp.volume_id", FT_UINT32, BASE_HEX, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_last_modified_date, + { "Volume Last Modified Date", "ncp.volume_last_modified_date", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_last_modified_time, + { "Volume Last Modified Time", "ncp.volume_last_modified_time", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_mounted_flag, + { "Volume Mounted Flag", "ncp.volume_mounted_flag", FT_UINT8, BASE_HEX, VALS(ncp_volume_mounted_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_name, + { "Volume Name", "ncp.volume_name", FT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_name_len, + { "Volume Name", "ncp.volume_name_len", FT_UINT_STRING, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_name_stringz, + { "Volume Name", "ncp.volume_name_stringz", FT_STRINGZ, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_number, + { "Volume Number", "ncp.volume_number", FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_number_long, + { "Volume Number", "ncp.volume_number_long", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_reference_count, + { "Volume Reference Count", "ncp.volume_reference_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_removable_flag, + { "Volume Removable Flag", "ncp.volume_removable_flag", FT_UINT8, BASE_HEX, VALS(ncp_volume_removable_flag_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_request_flags, + { "Volume Request Flags", "ncp.volume_request_flags", FT_UINT16, BASE_HEX, VALS(ncp_volume_request_flags_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_segment_dev_num, + { "Volume Segment Device Number", "ncp.volume_segment_dev_num", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_segment_offset, + { "Volume Segment Offset", "ncp.volume_segment_offset", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_segment_size, + { "Volume Segment Size", "ncp.volume_segment_size", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_size_in_clusters, + { "Volume Size in Clusters", "ncp.volume_size_in_clusters", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volume_type, + { "Volume Type", "ncp.volume_type", FT_UINT16, BASE_HEX, VALS(ncp_volume_type_vals), 0x0, "", HFILL }}, + + { &hf_ncp_volume_use_count, + { "Volume Use Count", "ncp.volume_use_count", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_volumes_supported_max, + { "Volumes Supported Max", "ncp.volumes_supported_max", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wait_node, + { "Wait Node Count", "ncp.wait_node", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wait_node_alloc_fail, + { "Wait Node Alloc Failure Count", "ncp.wait_node_alloc_fail", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wait_on_sema, + { "Wait On Semaphore Count", "ncp.wait_on_sema", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wait_till_dirty_blcks_dec, + { "Wait Till Dirty Blocks Decrease Count", "ncp.wait_till_dirty_blcks_dec", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wait_time, + { "Wait Time", "ncp.wait_time", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wasted_server_memory, + { "Wasted Server Memory", "ncp.wasted_server_memory", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_curr_trans, + { "Write Currently Transmitting Count", "ncp.write_curr_trans", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_didnt_need_but_req_ack, + { "Write Didn't Need But Requested ACK Count", "ncp.write_didnt_need_but_req_ack", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_didnt_need_this_frag, + { "Write Didn't Need This Fragment Count", "ncp.write_didnt_need_this_frag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_dup_req, + { "Write Duplicate Request Count", "ncp.write_dup_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_err, + { "Write Error Count", "ncp.write_err", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_got_an_ack0, + { "Write Got An ACK Count 0", "ncp.write_got_an_ack0", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_got_an_ack1, + { "Write Got An ACK Count 1", "ncp.write_got_an_ack1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_held_off, + { "Write Held Off Count", "ncp.write_held_off", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_held_off_with_dup, + { "Write Held Off With Duplicate Request", "ncp.write_held_off_with_dup", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_incon_packet_len, + { "Write Inconsistent Packet Lengths Count", "ncp.write_incon_packet_len", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_out_of_mem_for_ctl_nodes, + { "Write Out Of Memory For Control Nodes Count", "ncp.write_out_of_mem_for_ctl_nodes", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_timeout, + { "Write Time Out Count", "ncp.write_timeout", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_too_many_buf_check, + { "Write Too Many Buffers Checked Out Count", "ncp.write_too_many_buf_check", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_trash_dup_req, + { "Write Trashed Duplicate Request Count", "ncp.write_trash_dup_req", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_write_trash_packet, + { "Write Trashed Packet Count", "ncp.write_trash_packet", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wrt_blck_cnt, + { "Write Block Count", "ncp.wrt_blck_cnt", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_wrt_entire_blck, + { "Write Entire Block Count", "ncp.wrt_entire_blck", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + { &hf_ncp_year, + { "Year", "ncp.year", FT_UINT8, BASE_HEX, VALS(ncp_year_vals), 0x0, "", HFILL }}, + + { &hf_ncp_zero_ack_frag, + { "Zero ACK Fragment Count", "ncp.zero_ack_frag", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, + + }; + + static gint *ett[] = { + &ett_ncp_access_mode_bitfield, + &ett_ncp_access_privileges_bitfield, + &ett_ncp_access_rights_mask_bitfield, + &ett_ncp_access_rights_mask_word_bitfield, + &ett_ncp_action_flag_bitfield, + &ett_ncp_attr_def_16_bitfield, + &ett_ncp_attr_def_32_bitfield, + &ett_ncp_attr_def_bitfield, + &ett_ncp_change_bits_bitfield, + &ett_ncp_conn_ctrl_bits_bitfield, + &ett_ncp_desired_access_rights_bitfield, + &ett_ncp_ea_access_flag_bitfield, + &ett_ncp_effective_rights_bitfield, + &ett_ncp_enum_info_mask_bitfield, + &ett_ncp_ext_info_bitfield, + &ett_ncp_finder_attr_bitfield, + &ett_ncp_info_flags_bitfield, + &ett_ncp_info_mask_bitfield, + &ett_ncp_inheritance_revoke_mask_bitfield, + &ett_ncp_inherited_rights_mask_bitfield, + &ett_ncp_job_control_flags_bitfield, + &ett_ncp_job_control_flags_word_bitfield, + &ett_ncp_log_file_flag_high_bitfield, + &ett_ncp_log_file_flag_low_bitfield, + &ett_ncp_mac_attr_bitfield, + &ett_ncp_modify_dos_info_mask_bitfield, + &ett_ncp_nds_request_flags_bitfield, + &ett_ncp_new_access_rights_mask_bitfield, + &ett_ncp_nlm_flags_bitfield, + &ett_ncp_ns_info_mask_bitfield, + &ett_ncp_open_create_action_bitfield, + &ett_ncp_open_create_mode_bitfield, + &ett_ncp_open_rights_bitfield, + &ett_ncp_print_flags_bitfield, + &ett_ncp_queue_status_bitfield, + &ett_ncp_remove_open_rights_bitfield, + &ett_ncp_rename_flag_bitfield, + &ett_ncp_request_bit_map_bitfield, + &ett_ncp_ret_info_mask_bitfield, + &ett_ncp_rights_grant_mask_bitfield, + &ett_ncp_rights_revoke_mask_bitfield, + &ett_ncp_sattr_bitfield, + &ett_ncp_search_att_low_bitfield, + &ett_ncp_search_bit_map_bitfield, + &ett_ncp_security_flag_bitfield, + &ett_ncp_set_cmd_flags_bitfield, + &ett_ncp_status_bitfield, + &ett_ncp_status_flag_bits_bitfield, + &ett_ncp_timesync_status_flags_bitfield, + &ett_ncp_trustee_rights_low_bitfield, + &ett_struct_acctng_info_struct, + &ett_struct_afp_10_struct, + &ett_struct_afp_20_struct, + &ett_struct_archive_info_struct, + &ett_struct_attributes_struct, + &ett_struct_board_name_struct, + &ett_struct_cache_info, + &ett_struct_common_lan_struct, + &ett_struct_comp_d_comp_stat, + &ett_struct_conn_file_struct, + &ett_struct_conn_struct, + &ett_struct_conn_task_struct, + &ett_struct_counters_struct, + &ett_struct_cpu_information, + &ett_struct_creation_info_struct, + &ett_struct_custom_cnts_info, + &ett_struct_dir_cache_info, + &ett_struct_dir_entry_struct, + &ett_struct_directory_instance, + &ett_struct_dos_directory_entry_struct, + &ett_struct_dos_file_entry_struct, + &ett_struct_dos_name_struct, + &ett_struct_dyn_mem_struct, + &ett_struct_ea_info_struct, + &ett_struct_extra_cache_cntrs, + &ett_struct_file_info_struct, + &ett_struct_file_instance, + &ett_struct_file_name_struct, + &ett_struct_file_server_counters, + &ett_struct_file_system_info, + &ett_struct_generic_info_def, + &ett_struct_ipx_information, + &ett_struct_job_entry_time, + &ett_struct_job_struct, + &ett_struct_job_struct_3x, + &ett_struct_job_struct_new, + &ett_struct_known_routes, + &ett_struct_known_server_struct, + &ett_struct_lan_cfg_info, + &ett_struct_lock_info_struct, + &ett_struct_lock_struct, + &ett_struct_log_lock_struct, + &ett_struct_log_rec_struct, + &ett_struct_login_time, + &ett_struct_lsl_information, + &ett_struct_memory_counters, + &ett_struct_mlid_board_info, + &ett_struct_modify_info_struct, + &ett_struct_name_info_struct, + &ett_struct_ncp_network_address_struct, + &ett_struct_net_addr_struct, + &ett_struct_nlm_information, + &ett_struct_nw_audit_status, + &ett_struct_opn_files_struct, + &ett_struct_packet_burst_information, + &ett_struct_phy_lock_struct, + &ett_struct_print_info_struct, + &ett_struct_r_tag_struct, + &ett_struct_routers_info, + &ett_struct_segments, + &ett_struct_sema_struct, + &ett_struct_server_info, + &ett_struct_servers_src_info, + &ett_struct_space_struct, + &ett_struct_spx_information, + &ett_struct_stack_info, + &ett_struct_stats_info_struct, + &ett_struct_trend_counters, + &ett_struct_user_info, + &ett_struct_vol_info_struct, + &ett_struct_vol_info_struct_2, + }; + + + proto_register_field_array(proto_ncp, hf, array_length(hf)); + + + proto_register_subtree_array(ett, array_length(ett)); + + + register_init_routine(&ncp_init_protocol); + register_postseq_cleanup_routine(&ncp_postseq_cleanup); + register_final_registration_routine(final_registration_ncp2222); + +} + +#include "packet-ncp2222.inc" diff -x entries -urN ethereal/prefs.c ethereal-win32/prefs.c --- ethereal/prefs.c 2004-07-21 15:26:50.926499400 -0500 +++ ethereal-win32/prefs.c 2004-07-20 15:58:03.000000000 -0500 @@ -946,6 +946,9 @@ #ifdef WIN32 prefs.gui_font_name1 = g_strdup("-*-lucida console-medium-r-*-*-*-100-*-*-*-*-*-*"); prefs.gui_font_name2 = g_strdup("Lucida Console 10"); + prefs.gui_win32_font_name = g_strdup(""); + prefs.gui_win32_font_style = g_strdup(""); + prefs.gui_win32_font_size = 12; #else /* * XXX - for now, we make the initial font name a pattern that matches @@ -1103,7 +1106,7 @@ return &prefs; } -/* read the preferences file (or similiar) and call the callback +/* read the preferences file (or similiar) and call the callback * function to set each key/value pair found */ int read_prefs_file(const char *pf_path, FILE *pf, pref_set_pair_cb pref_set_pair_fct) @@ -1307,6 +1310,9 @@ #define PRS_GUI_HEX_DUMP_HIGHLIGHT_STYLE "gui.hex_dump_highlight_style" #define PRS_GUI_FONT_NAME_1 "gui.font_name" #define PRS_GUI_FONT_NAME_2 "gui.gtk2.font_name" +#define PRS_GUI_WIN32_FONT_NAME "gui.win32.font_name" +#define PRS_GUI_WIN32_FONT_STYLE "gui.win32.font_style" +#define PRS_GUI_WIN32_FONT_SIZE "gui.win32.font_size" #define PRS_GUI_MARKED_FG "gui.marked_frame.fg" #define PRS_GUI_MARKED_BG "gui.marked_frame.bg" #define PRS_GUI_CONSOLE_OPEN "gui.console_open" @@ -1585,6 +1591,19 @@ if (prefs.gui_font_name2 != NULL) g_free(prefs.gui_font_name2); prefs.gui_font_name2 = g_strdup(value); + } else if (strcmp(pref_name, PRS_GUI_WIN32_FONT_NAME) == 0) { + if (prefs.gui_win32_font_name != NULL) + g_free(prefs.gui_win32_font_name); + prefs.gui_win32_font_name = g_strdup(value); + } else if (strcmp(pref_name, PRS_GUI_WIN32_FONT_STYLE) == 0) { + if (prefs.gui_win32_font_style != NULL) + g_free(prefs.gui_win32_font_style); + prefs.gui_win32_font_style = g_strdup(value); + } else if (strcmp(pref_name, PRS_GUI_WIN32_FONT_SIZE) == 0) { + prefs.gui_win32_font_size = strtoul(value, NULL, 10); + if (prefs.gui_win32_font_size == 0) { + prefs.gui_win32_font_size = 12; + } } else if (strcmp(pref_name, PRS_GUI_MARKED_FG) == 0) { cval = strtoul(value, NULL, 16); prefs.gui_marked_fg.pixel = 0; @@ -2121,7 +2140,7 @@ "# Ethereal. Making manual changes should be safe, however.\n", pf); fprintf (pf, "\n######## User Interface ########\n"); - + fprintf(pf, "\n# Vertical scrollbars should be on right side?\n"); fprintf(pf, "# TRUE or FALSE (case-insensitive).\n"); fprintf(pf, PRS_GUI_SCROLLBAR_ON_RIGHT ": %s\n", @@ -2176,12 +2195,12 @@ fprintf(pf, "# TRUE or FALSE (case-insensitive).\n"); fprintf(pf, PRS_GUI_GEOMETRY_SAVE_SIZE ": %s\n", prefs.gui_geometry_save_size == TRUE ? "TRUE" : "FALSE"); - + fprintf(pf, "\n# Save window maximized state at exit (GTK2 only)?\n"); fprintf(pf, "# TRUE or FALSE (case-insensitive).\n"); fprintf(pf, PRS_GUI_GEOMETRY_SAVE_MAXIMIZED ": %s\n", prefs.gui_geometry_save_maximized == TRUE ? "TRUE" : "FALSE"); - + fprintf(pf, "\n# Open a console window (WIN32 only)?\n"); fprintf(pf, "# One of: NEVER, AUTOMATIC, ALWAYS\n"); fprintf(pf, PRS_GUI_CONSOLE_OPEN ": %s\n", @@ -2226,7 +2245,7 @@ gui_layout_content_text[prefs.gui_layout_content_3]); fprintf (pf, "\n######## User Interface: Columns ########\n"); - + clp = prefs.col_list; col_l = NULL; while (clp) { @@ -2251,6 +2270,15 @@ fprintf(pf, "\n# Font name for packet list, protocol tree, and hex dump panes (GTK version 2).\n"); fprintf(pf, PRS_GUI_FONT_NAME_2 ": %s\n", prefs.gui_font_name2); + fprintf(pf, "\n# Font name for protocol tree and hex dump panes (Windows native).\n"); + fprintf(pf, PRS_GUI_WIN32_FONT_NAME ": %s\n", prefs.gui_win32_font_name); + + fprintf(pf, "\n# Font style for protocol tree and hex dump panes (Windows native).\n"); + fprintf(pf, PRS_GUI_WIN32_FONT_STYLE ": %s\n", prefs.gui_win32_font_style); + + fprintf(pf, "\n# Font size for protocol tree and hex dump panes (Windows native).\n"); + fprintf(pf, PRS_GUI_WIN32_FONT_SIZE ": %d\n", prefs.gui_win32_font_size); + fprintf (pf, "\n######## User Interface: Colors ########\n"); fprintf (pf, "\n# Color preferences for a marked frame.\n"); @@ -2284,7 +2312,7 @@ (prefs.st_server_bg.blue * 255 / 65535)); fprintf(pf, "\n####### Capture ########\n"); - + if (prefs.capture_device != NULL) { fprintf(pf, "\n# Default capture device\n"); fprintf(pf, PRS_CAP_DEVICE ": %s\n", prefs.capture_device); @@ -2339,7 +2367,7 @@ "%s: %s\n", PRS_PRINT_CMD, prefs.pr_cmd); fprintf(pf, "\n####### Name Resolution ########\n"); - + fprintf(pf, "\n# Resolve addresses to names?\n"); fprintf(pf, "# TRUE or FALSE (case-insensitive), or a list of address types to resolve.\n"); fprintf(pf, PRS_NAME_RESOLVE ": %s\n", diff -x entries -urN ethereal/prefs.h ethereal-win32/prefs.h --- ethereal/prefs.h 2004-07-21 15:26:51.757694600 -0500 +++ ethereal-win32/prefs.h 2004-07-20 15:58:03.000000000 -0500 @@ -119,6 +119,9 @@ gint gui_toolbar_main_style; gchar *gui_font_name1; gchar *gui_font_name2; + gchar *gui_win32_font_name; + gchar *gui_win32_font_style; + guint gui_win32_font_size; color_t gui_marked_fg; color_t gui_marked_bg; gboolean gui_geometry_save_position; diff -x entries -urN ethereal/xulender/README ethereal-win32/xulender/README --- ethereal/xulender/README 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/README 2004-06-14 14:44:01.000000000 -0500 @@ -0,0 +1,77 @@ +This directory contains the code necessary to build native front-ends for +Ethereal. At the present time Windows is the only platform supported. + + +Introduction: + +Each front-end is made up of code created by feeding a set of XUL files to +a Python script. The only frontend script we have so far (win32csdk.py) +creates plain C code and uses the Windows Platform SDK. + +The XUL files and parsers are currently pseudo-XUL, and do not strictly +conform to the spec. + +This environment is very stripped-down compared to Mozilla's XPFE. There +is no JavaScript, XBL, chrome, or XPCOM. + +There's no reason a frontend couldn't use C++, Java, C#, Python, Perl, +assembler, or any other language, as long as it can link with the rest of +Ethereal's code base. We could also create virtual frontends, e.g. for +unit/regression testing. + +This directory contains the following: + + - ethereal-main.xul, *-dialog.xul + + These are XUL files used to generate the main Ethereal window and each + dialog + + - *.py + + Python scripts that read the XUL files and generate code. The main + script is xulender.py; it should be run without any arguments. + It calls routines in win32csdk.py to create code. + + Each frontend module MUST: + + - Define a function named "get_func_prefix()" that returns a prefix + name for the module. The prefix name for win32csdk.py is "win32". + + - Define start and stop (if needed) functions for for each XUL entity + name. Start functions MUST be named <module>_gen_<entity>, + e.g. win32_gen_menuitem. Stop functions MUST be named + <module>_gen_<entity>_end, e.g. kde_gen_checkbox_end. + + Each function MUST take one argument, a Python xml.dom Node object. + + Utility routines can be found in frontendutil.py. + + - win32-c-sdk/ + + This directory contains code generated by win32csdk.py along with + hand-written glue routines. + + +Example: + +In order to build "ethereal-main.c" in the "win32-c-sdk" directory, +Makefile.nmake runs "$(PYTHON) ..\xulender.py ethereal-main.xul". + +When xulender.py encounters the "<splitter />" tag, it calls +"win32_gen_splitter()" in the win32csdk.py module. This adds + + /* Begin <splitter> */ + win32_box_add_splitter(cur_box, -1); + /* End <splitter> */ + +to ethereal-main.c. + + +To do: +- Have xulender create a list of required glue routines. +- Add more frontends, of course! MacOS X and QT seem like good candidates. +- Actually link <menuitem>s to <command>s, and link them in both directions + so that disabling will work according to the spec? +- Move CodeGenError class out of win32-c-sdk.py, so that xulender.py can use + it. +- Move hierarchy checks from win32-c-sdk.py to xulender.py? diff -x entries -urN ethereal/xulender/README.win32csdk ethereal-win32/xulender/README.win32csdk --- ethereal/xulender/README.win32csdk 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/README.win32csdk 2004-07-21 15:22:40.000000000 -0500 @@ -0,0 +1,33 @@ +Overall architecture + +The win32csdk.py module generates native Windows interface code using +the Win32 C SDK. XUL elements are implemented using common controls, +custom controls, and plain windows. + + +Bugs/Caveats + +- Markup in <description> text isn't handled at all. + + +To do: + +- Is it the responsibility of each element to set its min/normal/max width + and height? It would seem so. + +- We treat dialogs as normal windows. That is, we don't use CreateDialog(), + nor do we use the normal dialog event/lifecycle mechanism. + Instead we use CreateWindow() and try to fake it as best we can. We may + want to switch to using normal Windows dialogs at some point. This means + that for each element we'd have to have "window" code and "dialog template" + code. That just seems messy. + +- Some of our element constructors return HWNDs and some return + win32_element_t *'s. We should standardize on the latter. + +- Once in a while, clicking in the packet list causes a crash for + some reason. The MS debugger doesn't give much helpful information + when this happens. + +- Function names and parameters need to be normalized, e.g. + win32_menulist_get_selection() vs win32_listbox_set_selected(). diff -x entries -urN ethereal/xulender/about-dialog.xul ethereal-win32/xulender/about-dialog.xul --- ethereal/xulender/about-dialog.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/about-dialog.xul 2004-06-21 15:25:11.000000000 -0500 @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<dialog + id="about-dialog" + title="About Ethereal" + width="250" + height="100" + > + + <vbox + id="about-dlg.vbox" + > + <hbox> + + <spacer flex="1" /> + <button + id="about-ok" + label="OK" + default="True" + oncommand="about_dialog_hide" + /> + + </hbox> + </vbox> +</dialog> diff -x entries -urN ethereal/xulender/capture-dialog.xul ethereal-win32/xulender/capture-dialog.xul --- ethereal/xulender/capture-dialog.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/capture-dialog.xul 2004-07-14 15:10:31.000000000 -0500 @@ -0,0 +1,223 @@ +<?xml version="1.0"?> +<dialog + id="capture-dialog" + title="Capture Options" + > + + <vbox> + <groupbox> + <caption>Capture</caption> + <hbox> + <description>Interface:</description> + <ethereal:combobox id="capture-dialog.interface-combo" flex="1" /> + </hbox> + <hbox> + <description>Link-layer header type:</description> + <description>Buffer size:</description> + <ethereal:spinner id="capture-dialog.buffer-size" /> + <description>megabyte(s)</description> + </hbox> + <checkbox + id="capture-dialog.promiscuous" + label="Capture packets in promiscuous mode" + /> + <hbox> + <checkbox + id="capture-dialog.packet-size-cb" + label="Limit each packet to" + oncommand="capture_dialog_limit_packet_size" + /> + <ethereal:spinner id="capture-dialog.packet-size-spinner" /> + <description>bytes</description> + </hbox> + <hbox> + <button + label="Capture Filter:" + /> + <textbox id="capture-dialog.capture-filter" flex="1" /> + </hbox> + </groupbox> + + <hbox> + <vbox> + <groupbox> + <caption>Capture File(s)</caption> + <hbox> + <description>File:</description> + <textbox id="capture-dialog.save-file" flex="1" /> + <button + label="..." + /> + </hbox> + <checkbox + id="capture-dialog.use-multiple-files" + label="Use multiple files" + oncommand="capture_dialog_adjust_sensitivity" + /> + <grid> + <columns> + <column/> + <column/> + <column/> + </columns> + + <rows> + <row> + <checkbox + id="capture-dialog.next-file-every-size-cb" + label="Next file every" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.next-file-every-size-spinner" /> + <menulist id="capture-dialog.next-file-every-size-ml"> + <menupopup> + <menuitem label="byte(s)" /> + <menuitem label="kilobyte(s)" /> + <menuitem label="megabyte(s)" selected="true" /> + <menuitem label="gigabyte(s)" /> + </menupopup> + </menulist> + </row> + <row> + <checkbox + id="capture-dialog.next-file-every-time-cb" + label="Next file every" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.next-file-every-time-spinner" /> + <menulist id="capture-dialog.next-file-every-time-ml"> + <menupopup> + <menuitem label="second(s)" /> + <menuitem label="minute(s)" selected="true" /> + <menuitem label="hour(s)" /> + <menuitem label="day(s)" /> + </menupopup> + </menulist> + </row> + <row> + <checkbox + id="capture-dialog.ring-buffer-with-cb" + label="Ring buffer with" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.ring-buffer-with-spinner" /> + <description id="capture-dialog.ring-buffer-with-descr"> + Files + </description> + </row> + <row> + <checkbox + id="capture-dialog.stop-capture-after-cb" + label="Stop capture after" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.stop-capture-after-spinner" /> + <description id="capture-dialog.stop-capture-after-descr"> + File(s) + </description> + </row> + </rows> + </grid> + </groupbox> + <groupbox> + <caption>Stop Capture ...</caption> + <hbox> + <checkbox + id="capture-dialog.stop-after-packets-cb" + label="... after" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.stop-after-packets-spinner" /> + <description id="capture-dialog.stop-after-packets-descr"> + File(s) + </description> + </hbox> + <hbox> + <checkbox + id="capture-dialog.stop-after-size-cb" + label="... after" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.stop-after-size-spinner" /> + <menulist id="capture-dialog.stop-after-size-ml"> + <menupopup> + <menuitem label="byte(s)" /> + <menuitem label="kilobyte(s)" /> + <menuitem label="megabyte(s)" selected="true" /> + <menuitem label="gigabyte(s)" /> + </menupopup> + </menulist> + </hbox> + <hbox> + <checkbox + id="capture-dialog.stop-after-time-cb" + label="... after" + oncommand="capture_dialog_adjust_sensitivity" + /> + <ethereal:spinner id="capture-dialog.stop-after-time-spinner" /> + <menulist id="capture-dialog.stop-after-time-ml"> + <menupopup> + <menuitem label="second(s)" /> + <menuitem label="minute(s)" selected="true" /> + <menuitem label="hour(s)" /> + <menuitem label="day(s)" /> + </menupopup> + </menulist> + </hbox> + </groupbox> + </vbox> + + <vbox> + <groupbox flex="1"> + <caption>Display Options</caption> + <checkbox + id="capture-dialog.update-real-time" + label="Update list of packets in real time" + oncommand="capture_dialog_adjust_sensitivity" + /> + <checkbox + id="capture-dialog.auto-scroll-live" + label="Automatic scrolling in live capture" + /> + <checkbox + id="capture-dialog.show_info" + label="Hide capture info window" + /> + </groupbox> + <groupbox flex="1"> + <caption>Name Resolution</caption> + <checkbox + id="capture-mac-resolution" + label="Enable MAC name resolution" + /> + <checkbox + id="capture-network-resolution" + label="Enable network name resolution" + /> + <checkbox + id="capture-transport-resolution" + label="Enable transport name resolution" + /> + </groupbox> + </vbox> + </hbox> + + <hbox> + + <spacer flex="1" /> + <button + id="capture-ok" + label="OK" + default="True" + oncommand="capture_dialog_start_capture" + /> + + <button + id="capture-cancel" + label="Cancel" + oncommand="capture_dialog_hide" + /> + + </hbox> + </vbox> +</dialog> diff -x entries -urN ethereal/xulender/capture-info-dialog.xul ethereal-win32/xulender/capture-info-dialog.xul --- ethereal/xulender/capture-info-dialog.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/capture-info-dialog.xul 2004-05-19 15:01:21.000000000 -0500 @@ -0,0 +1,245 @@ +<?xml version="1.0"?> +<dialog + id="capture-info-dialog" + title="Ethereal: Capture" + > + + <vbox id="debug-element"> + <groupbox orient="vertical"> + <caption>Captured Packets</caption> + + <hbox> + <description>Total: </description> + <description id="capture-count-total" flex="1">0</description> + </hbox> + + <hbox> + <description>Running: </description> + <description id="capture-run-time" flex="1">Unknown</description> + </hbox> + + <grid> <!-- Protocol-specific counts --> + <columns> + <column/> <!-- Protocol name --> + <column/> <!-- Count --> + <column flex="1" /> <!-- Progress meter --> + <column/> <!-- Percentage --> + </columns> + + <rows> + <row> + <description flex="1">SCTP: </description> + <description + id="capture-sctp-count" + flex="1" + style="text-align: right;" + > + 0000 + </description> + <progressmeter id="capture-sctp-progress" /> + <description + id="capture-sctp-percent" + flex="1" + style="text-align: right;" + > + 000.0% + </description> + </row> + + <row> + <description>TCP: </description> + <description + id="capture-tcp-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-tcp-progress" /> + <description + id="capture-tcp-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>UDP: </description> + <description + id="capture-udp-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-udp-progress" /> + <description + id="capture-udp-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>ICMP: </description> + <description + id="capture-icmp-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-icmp-progress" /> + <description + id="capture-icmp-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>ARP: </description> + <description + id="capture-arp-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-arp-progress" /> + <description + id="capture-arp-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>OSPF: </description> + <description + id="capture-ospf-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-ospf-progress" /> + <description + id="capture-ospf-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>GRE: </description> + <description + id="capture-gre-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-gre-progress" /> + <description + id="capture-gre-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>NetBIOS: </description> + <description + id="capture-netbios-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-netbios-progress" /> + <description + id="capture-netbios-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>IPX: </description> + <description + id="capture-ipx-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-ipx-progress" /> + <description + id="capture-ipx-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>VINES: </description> + <description + id="capture-vines-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-vines-progress" /> + <description + id="capture-vines-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + <row> + <description>Other: </description> + <description + id="capture-other-count" + flex="1" + style="text-align: right;" + > + 0 + </description> + <progressmeter id="capture-other-progress" /> + <description + id="capture-other-percent" + style="text-align: right;" + > + 0.0% + </description> + </row> + + </rows> + </grid> + </groupbox> + + <hbox> + <spacer flex="1" /> + <button + id="capture-info-stop" + label="Stop" + default="True" + oncommand="capture_info_dialog_stop_capture" + /> + <spacer flex="1" /> + </hbox> + + </vbox> +</dialog> diff -x entries -urN ethereal/xulender/ethereal-main.xul ethereal-win32/xulender/ethereal-main.xul --- ethereal/xulender/ethereal-main.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/ethereal-main.xul 2004-06-29 09:59:26.000000000 -0500 @@ -0,0 +1,136 @@ +<?xml version="1.0"?> +<window + title="Ethereal" + id="ethereal-main" + width="620" + height="420" + xmlns:ethereal="http://www.ethereal.com/development.html" + > + + <menubar autostretch="always"> + <menu label="File"> + <menupopup> + <menuitem + label="Open..." + command="ethereal-main-open" + /> + <menuitem + label="Open Recent" + command="ethereal-main-open-recent" + /> + <menuitem + label="Close" + command="ethereal-main-close" + /> + <menuseparator/> + <menuitem + label="Save" + command="ethereal-main-save" + /> + <menuitem + label="Save As..." + command="ethereal-main-save-as" + /> + <menuseparator/> + <menuitem + label="Export" + command="ethereal-main-export" + /> + <menuseparator/> + <menuitem + label="Print..." + command="ethereal-main-print" + /> + <menuseparator/> + <menuitem + label="Exit" + command="ethereal-main-exit" + /> + </menupopup> + </menu> + + <menu label="Edit"> + <menupopup> + <menuitem + label="Preferences..." + command="ethereal-main-edit-preferences" + /> + </menupopup> + </menu> + + <menu label="Capture"> + <menupopup> + <menuitem + label="Start" + command="ethereal-main-capture-start" + /> + <menuitem + label="Stop" + command="ethereal-main-capture-stop" + /> + <menuitem + label="Capture Filters..." + command="ethereal-main-capture-filters" + /> + </menupopup> + </menu> + + <menu label="Help"> + <menupopup> + <menuitem + label="Contents" + command="ethereal-main-about-contents" + /> + <menuitem + label="Supported Protocols" + command="ethereal-main-about-supported-protocols" + /> + <menuseparator/> + <menuitem + label="About Plugins" + command="ethereal-main-about-plugins" + /> + <menuitem + label="About Ethereal" + command="ethereal-main-about-ethereal" + /> + </menupopup> + </menu> + + </menubar> + + <vbox + flex="1" + > + + <ethereal:packetlist flex="1" /> + + <splitter /> + + <ethereal:treeview id="main-treeview" flex="1" /> + + <splitter /> + + <ethereal:byteview id="main-byteview" flex="1" /> + + <!-- Should we use a statusbar instead? --> + <hbox> + <button label="Filter:" /> + <ethereal:combobox id="dfilter-entry" flex="1"/> + <button + label="Clear" + oncommand="filter_clear_cb" + /> + <button + label="Apply" + oncommand="filter_apply_cb" + /> +<!-- + <textbox readonly="True" id="statusbar" /> +--> + </hbox> + + </vbox> + +</window> + diff -x entries -urN ethereal/xulender/frontendutil.py ethereal-win32/xulender/frontendutil.py --- ethereal/xulender/frontendutil.py 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/frontendutil.py 2004-01-15 09:31:36.000000000 -0600 @@ -0,0 +1,55 @@ +# frontendutil.py - Frontend utility functions + +def id_to_name(id): + '''Convert an id name (which may have dashes or other "odd" charaters to + a valid C-style identifier.''' + for ch in ' -:': id = id.replace(ch, '_') + return id + +def get_attribute(node, attr_name, notfound = None): + '''If a node has a particular attribute, return that attribute. + Otherwise return the value of "notfound".''' + try: + return node.attributes[attr_name].value + except: + pass + + return notfound + +class counter: + '''Create a "counter" that increments each time get_count() is called. + This is useful for resource IDs, etc.''' + def __init__(self, start=0): + self.count = start + + def get_count(self): + return self.count + +class sect_file: + '''File objects that have headers, bodies, and footers. The file's + contents aren't written until the close() method is called.''' + def __init__(self, file_path): + self.file_path = file_path + self.header = '''/* %s */ +/* THIS FILE HAS BEEN AUTOMATICALLY GENERATED. */ +/* Do not modify by hand. */ +''' % (file_path) + self.body = '' + self.footer = '' + + def write_header(self, text): + self.header = self.header + text + + def write_body(self, text): + self.body = self.body + text + + def write_footer(self, text): + self.footer = self.footer + text + + def close(self): + print 'Writing ' + self.file_path + fp = open(self.file_path, 'w') + fp.write(self.header) + fp.write(self.body) + fp.write(self.footer) + fp.close() Files ethereal/xulender/frontendutil.pyc and ethereal-win32/xulender/frontendutil.pyc differ diff -x entries -urN ethereal/xulender/preferences-dialog.xul ethereal-win32/xulender/preferences-dialog.xul --- ethereal/xulender/preferences-dialog.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/preferences-dialog.xul 2004-07-14 14:24:11.000000000 -0500 @@ -0,0 +1,540 @@ +<?xml version="1.0"?> +<dialog + id="preferences-dialog" + title="Ethereal: Preferences" + width="250" + height="100" + > + + <!-- + Preferences dialog. Each row in the tree corresponds to a panel in + the deck. To make things easy code-wise, tree row IDs are in the + form "prefs-dialog.tree.[unique name]" and panel IDs are in the form + "prefs-dialog.deck.[unique name]". + --> + + <vbox> + <hbox> + <tree + id="prefs-dialog.tree" + onselect="prefs_tree_select" + > + <treecols> + <treecol id="prefs-dialog.tree" primary="true" hideheader="true" /> + </treecols> + <treechildren> + <treeitem container="true" open="true"> + <treerow id="prefs-dialog.tree.user-interface"> + <treecell label="User Interface" /> + </treerow> + <treechildren> + <treeitem> + <treerow id="prefs-dialog.tree.columns"> + <treecell label="Columns" /> + </treerow> + </treeitem> + <treeitem> + <treerow id="prefs-dialog.tree.font"> + <treecell label="Font" /> + </treerow> + </treeitem> <treeitem> + <treerow id="prefs-dialog.tree.colors"> + <treecell label="Colors" /> + </treerow> + </treeitem> + </treechildren> + </treeitem> + <treeitem> + <treerow id="prefs-dialog.tree.capture"> + <treecell label="Capture" /> + </treerow> + </treeitem> + <treeitem> + <treerow id="prefs-dialog.tree.printing"> + <treecell label="Printing" /> + </treerow> + </treeitem> + <treeitem> + <treerow id="prefs-dialog.tree.name-resolution"> + <treecell label="Name Resolution" /> + </treerow> + </treeitem> + </treechildren> + </tree> + + <deck id="prefs-dialog.deck"> + + <!-- User Interface --> + <groupbox id="prefs-dialog.deck.user-interface"> + <caption>User Interface</caption> + <grid> + <columns> + <column/> + <column/> + </columns> + <rows> + <row> + <description style="text-align: right;"> + Packet list selection mode: + </description> + <menulist id="prefs.gui_plist_sel_browse"> + <menupopup> + <menuitem label="Selects" /> + <menuitem label="Browses" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Protocol tree selection mode: + </description> + <menulist id="prefs.gui_ptree_sel_browse"> + <menupopup> + <menuitem label="Selects" /> + <menuitem label="Browses" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Hex display highlight style: + </description> + <menulist id="prefs.gui_hex_dump_highlight_style"> + <menupopup> + <menuitem label="Bold" /> + <menuitem label="Inverse" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Toolbar style: + </description> + <menulist id="prefs.gui_toolbar_main_style"> + <menupopup> + <menuitem label="Icons only" /> + <menuitem label="Text only" /> + <menuitem label="Icons & Text" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Filter toolbar placement: + </description> + <menulist id="prefs.filter_toolbar_show_in_statusbar"> + <menupopup> + <menuitem label="Below main toolbar" /> + <menuitem label="Inside status bar" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Save window position: + </description> + <checkbox id="prefs.gui_geometry_save_position" /> + </row> + <row> + <description style="text-align: right;"> + Save window size: + </description> + <checkbox id="prefs.gui_geometry_save_size" /> + </row> + <row> + <description style="text-align: right;"> + Save maximized state: + </description> + <checkbox id="prefs.gui_geometry_save_maximized" /> + </row> + <row> + <description style="text-align: right;"> + Open a console window: + </description> + <menulist id="prefs.gui_console_open"> + <menupopup> + <menuitem label="Never" /> + <menuitem label="Automatic (advanced users)" /> + <menuitem label="Always (debugging)" /> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + \"File Open\" dialog behavior: + </description> + <radiogroup orient="horizontal"> + <radio + label="Remember last directory" + id="prefs.gui_fo_style_last_opened" + oncommand="prefs_fileopen_style" + /> + <radio + label="Always start in:" + id="prefs.gui_fo_style_specified" + oncommand="prefs_fileopen_style" + /> + </radiogroup> + </row> + <row> + <description style="text-align: right;"> + Directory: + </description> + <textbox flex="1" id="prefs.gui_fileopen_dir" /> + </row> + <row> + <description style="text-align: right;"> + \"Open Recent\" maximum entries: + </description> + <ethereal:spinner id="prefs.gui_recent_files_count_max" /> + </row> + </rows> + </grid> + </groupbox> + + <!-- Columns --> + <groupbox id="prefs-dialog.deck.columns"> + <caption>Columns</caption> + <hbox flex="1"> + <groupbox> + <caption>Edit</caption> + <spacer flex="1.5" /> + <button + id="prefs-dialog.cols.new" + label="New" + oncommand="prefs_dialog_new_column" + /> + <spacer flex="1" /> + <button + id="prefs-dialog.cols.delete" + label="Delete" + oncommand="prefs_dialog_delete_column" + /> + <spacer flex="1.5" /> + </groupbox> + <groupbox flex="1"> + <caption>Columns</caption> + <listbox + id="prefs-dialog.cols.list" + flex="1" + onselect="prefs_col_list_select" + > + <listhead> + <listheader label="Title" /> + <listheader label="Format" /> + </listhead> + </listbox> + </groupbox> + <groupbox> + <caption>Order</caption> + <spacer flex="1.5" /> + <button + id="prefs-dialog.cols.up" + label="Up" + oncommand="prefs_dialog_move_column" + /> + <spacer flex="1" /> + <button + id="prefs-dialog.cols.down" + label="Down" + oncommand="prefs_dialog_move_column" + /> + <spacer flex="1.5" /> + </groupbox> + </hbox> + <groupbox> + <caption>Properties</caption> + <grid flex="1"> + <columns> + <column /> + <column /> + </columns> + <rows> + <row> + <description style="text-align: right;">Title:</description> + <textbox + flex="1" + id="prefs-dialog.cols.title" + oninput="prefs_dialog_set_column_title" + /> + </row> + <row> + <description style="text-align: right;">Format:</description> + <menulist + id="prefs-dialog.cols.format" + oncommand="prefs_dialog_set_column_format" + > + <menupopup> + </menupopup> + </menulist> + </row> + </rows> + </grid> + </groupbox> + </groupbox> + + <!-- Font --> + <groupbox id="prefs-dialog.deck.font"> + <caption>Font</caption> + <grid flex="1"> + <columns> + <column flex="3.5" /> + <column flex="2.0" /> + <column flex="1.0" /> + </columns> + <rows> + <row> + <description>Font</description> + <description>Font style</description> + <description>Size</description> + </row> + <row> + <textbox id="prefs-dialog.font.tb.name" /> + <textbox id="prefs-dialog.font.tb.style" /> + <textbox id="prefs-dialog.font.tb.size" /> + </row> + <row flex="1"> + <listbox + id="prefs-dialog.font.lb.name" + onselect="prefs_font_name_list_select" + sortdirection="ascending" + /> + <listbox + id="prefs-dialog.font.lb.style" + onselect="prefs_font_style_list_select" + /> + <listbox + id="prefs-dialog.font.lb.size" + onselect="prefs_font_size_list_select" + /> + </row> + </rows> + </grid> + <groupbox> + <caption>Preview</caption> + <textbox + flex="1" + id="prefs-dialog.font.tb.sample" + minheight="40" + value="abcdefghijk ABCDEFGHIJK" + /> + </groupbox> + </groupbox> + + <!-- Colors --> + <groupbox id="prefs-dialog.deck.colors"> + <caption>Colors</caption> + <hbox> + <!-- This should be better, but we haven't implemented + <colorpicker> yet. --> + <button + id="prefs-dialog.color.set" + label="Set..." + oncommand="prefs_dialog_set_color" + /> + <menulist id="prefs-dialog.color.select"> + <menupopup> + <menuitem label="Marked packet foreground" /> + <menuitem label="Marked packet background" /> + <menuitem label="TCP stream client foreground" /> + <menuitem label="TCP stream client background" /> + <menuitem label="TCP stream server foreground" /> + <menuitem label="TCP stream server background" /> + </menupopup> + </menulist> + <textbox + flex="1" + id="prefs-dialog.color.sample" + multiline="true" + rows="3" + /> + </hbox> + </groupbox> + + <!-- Capture --> + <groupbox id="prefs-dialog.deck.capture"> + <caption>Capture</caption> + <grid> + <columns> + <column/> + <column flex="1" /> + </columns> + + <rows> + <row> + <description style="text-align: right;"> + Default interface: + </description> + <!-- XXX - this should be a combobox --> + <menulist + flex="1" + id="prefs-dialog.capture.iflist" + > + <menupopup> + </menupopup> + </menulist> + </row> + <row> + <description style="text-align: right;"> + Interface: + </description> + <button + label="Edit..." + /> + </row> + <row> + <description style="text-align: right;"> + Capture packets in promiscuous mode: + </description> + <checkbox id="prefs.capture_prom_mode" /> + </row> + <row> + <description style="text-align: right;"> + Update list of packets in real time: + </description> + <checkbox id="prefs.capture_real_time" /> + </row> + <row> + <description style="text-align: right;"> + Automatic scrolling in live capture: + </description> + <checkbox id="prefs.capture_auto_scroll" /> + </row> + <row> + <description style="text-align: right;"> + Hide capture info window: + </description> + <checkbox id="prefs.capture_show_info" /> + </row> + </rows> + </grid> + </groupbox> + + <!-- Printing --> + <groupbox id="prefs-dialog.deck.printing"> + <caption>Printing</caption> + <grid> + <columns> + <column/> + <column flex="1" /> + </columns> + <rows> + <row> + <description style="text-align: right;"> + Format: + </description> + <radiogroup orient="horizontal"> + <radio + id="prefs.pr_format_plain" + label="Plain text" + /> + <radio + id="prefs.pr_format_ps" + label="Postscript" + /> + </radiogroup> + </row> + <row> + <description style="text-align: right;"> + Print to: + </description> + <radiogroup orient="horizontal"> + <radio + id="prefs.pr_dest_printer" + label="Printer" + /> + <radio + id="prefs.pr_dest_file" + label="File" + /> + </radiogroup> + </row> + <row> + <description style="text-align: right;"> + File: + </description> + <hbox> + <textbox flex="1" id="prefs.pr_file" /> + <button label="..." /> + </hbox> + </row> + </rows> + </grid> + </groupbox> + + <!-- Name Resolution --> + <groupbox id="prefs-dialog.deck.name-resolution"> + <caption>Name Resolution</caption> + <grid> + <columns> + <column/> + <column/> + </columns> + <rows> + <row> + <description style="text-align: right;"> + Enable MAC name resolution: + </description> + <checkbox id="prefs.name_resolve_mac" /> + </row> + <row> + <description style="text-align: right;"> + Enable network name resolution: + </description> + <checkbox id="prefs.name_resolve_network" /> + </row> + <row> + <description style="text-align: right;"> + Enable transport name resolution: + </description> + <checkbox id="prefs.name_resolve_transport" /> + </row> + <row> + <description style="text-align: right;"> + Enable concurrent DNS name resolution: + </description> + <checkbox id="prefs.name_resolve_concurrent" /> + </row> + <row> + <description style="text-align: right;"> + Maximumn concurrent requests: + </description> + <ethereal:spinner id="prefs.name_resolve_concurrency" /> + </row> + </rows> + </grid> + </groupbox> + </deck> + </hbox> + + <hbox> + <spacer flex="1" /> + + <button + id="prefs-dialog.ok" + label="OK" + default="True" + oncommand="prefs_dialog_ok" + /> + + <button + id="prefs-dialog.apply" + label="Apply" + oncommand="prefs_dialog_apply" + /> + + <button + id="prefs-dialog.save" + label="Save" + oncommand="prefs_dialog_save" + /> + + <button + id="prefs-dialog.cancel" + label="Cancel" + oncommand="prefs_dialog_cancel" + /> + + </hbox> + </vbox> +</dialog> diff -x entries -urN ethereal/xulender/progress-dialog.xul ethereal-win32/xulender/progress-dialog.xul --- ethereal/xulender/progress-dialog.xul 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/progress-dialog.xul 2004-06-16 13:10:17.000000000 -0500 @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<dialog + id="progress-dialog" + title="" + width="250" + height="100" + > + + <vbox> + <grid> <!-- Labels --> + <columns> + <column/> <!-- Static labels --> + <column flex="1" /> <!-- Dynamic labels --> + </columns> + + <rows> + <row> + <description + flex="1" + id="progress-dlg.task_title" + style="text-align: right;" + > </description> + <description + id="progress-dlg.item_title" + flex="1" + > </description> + </row> + + <row> + <description + flex="1" + style="text-align: right;" + >Status: </description> + <description + id="progress-dlg.status" + flex="1" + > </description> + </row> + + <row> + <description + flex="1" + style="text-align: right;" + >Elapsed Time: </description> + <description + id="progress-dlg.time.elapsed" + flex="1" + >00:00</description> + </row> + + <row> + <description + flex="1" + style="text-align: right;" + >Time Left: </description> + <description + id="progress-dlg.time.left" + flex="1" + >--:--</description> + </row> + + <row> + <description + flex="1" + style="text-align: right;" + >Progress: </description> + <hbox> + <progressmeter + id="progress-dlg.progress" + /> + <description + id="progress-dlg.percentage" + >0%</description> + </hbox> + </row> + </rows> + </grid> + + <hbox> + <spacer flex="1" /> + <button + id="progress-dlg.cancel" + label="Cancel" + oncommand="progress_dialog_destroy" + /> + <spacer flex="1" /> + </hbox> + + </vbox> +</dialog> diff -x entries -urN ethereal/xulender/win32-c-sdk/Makefile.nmake ethereal-win32/xulender/win32-c-sdk/Makefile.nmake --- ethereal/xulender/win32-c-sdk/Makefile.nmake 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/Makefile.nmake 2004-07-13 18:44:11.000000000 -0500 @@ -0,0 +1,104 @@ +include <win32.mak> +include ..\..\config.nmake + +.SUFFIXES : .xul + +CC = cl +LINK = link + +CFLAGS=-DHAVE_CONFIG_H $(LOCAL_CFLAGS) $(GLIB_CFLAGS) /I. /Iwiretap \ + /I..\.. /Igenerated /Istdelements /Ilocalelements \ + $(ZLIB_CFLAGS) /I$(PCAP_DIR)\include \ + /I$(NET_SNMP_DIR)\include /I$(NET_SNMP_DIR)\win32 \ + $(ADNS_CFLAGS) $(PCRE_CFLAGS) -D_U_="" -D_NEED_VAR_IMPORT_ + +CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL + +XULENDERFLAGS=-I.. -f win32csdk + +.c.obj:: + $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $< + +{localelements}.c.obj:: + $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $< + +{stdelements}.c.obj:: + $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c $< + +{..\}.xul.obj: + cd generated + $(PYTHON) ..\..\xulender.py $(XULENDERFLAGS) $< + cd .. + $(CC) $(CVARSDLL) $(CFLAGS) -Fd.\ -c generated\$(*B).c + +GENERATED_OBJECTS = \ + ethereal-main.obj \ + about-dialog.obj \ + capture-dialog.obj \ + capture-info-dialog.obj \ + preferences-dialog.obj \ + progress-dialog.obj + +LOCAL_OBJECTS = \ + ethereal-byteview.obj \ + ethereal-combobox.obj \ + ethereal-packetlist.obj \ + ethereal-spinner.obj \ + ethereal-treeview.obj + +STD_OBJECTS = \ + win32-box.obj \ + win32-button.obj \ + win32-checkbox.obj \ + win32-description.obj \ + win32-deck.obj \ + win32-element.obj \ + win32-grid.obj \ + win32-groupbox.obj \ + win32-listbox.obj \ + win32-menulist.obj \ + win32-progressmeter.obj \ + win32-radio.obj \ + win32-spacer.obj \ + win32-textbox.obj \ + win32-tree.obj + +OBJECTS = \ + $(GENERATED_OBJECTS) \ + $(LOCAL_OBJECTS) \ + $(STD_OBJECTS) \ + about-dlg.obj \ + capture_combo_utils.obj \ + capture-util.obj \ + prefs-dlg.obj \ + ui_util.obj \ + win32-color-filters.obj \ + win32-file-dlg.obj \ + win32-main.obj \ + win32-menu.obj \ + win32-progress-dlg.obj \ + win32-simple-dialog.obj \ + win32-statusbar.obj \ + win32-tap-register.obj \ + win32-util.obj + +RESOURCES = win32-main.res + +XUL_SCRIPTS = \ + ..\frontendutil.py \ + ..\xulender.py \ + ..\win32csdk.py + +all: win32-c-sdk.lib $(RESOURCES) + +$(GENERATED_OBJECTS): $(XUL_SCRIPTS) + +win32-c-sdk.lib : $(OBJECTS) + lib /out:win32-c-sdk.lib $(OBJECTS) + +clean: + rm -f generated/* *.obj *.lib *.exe $(RESOURCES) + +# XXX - Change this to delete any autogenerated files +distclean: clean + rm -rf generated/* *.obj diff -x entries -urN ethereal/xulender/win32-c-sdk/about-dlg.c ethereal-win32/xulender/win32-c-sdk/about-dlg.c --- ethereal/xulender/win32-c-sdk/about-dlg.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/about-dlg.c 2004-07-08 10:06:29.000000000 -0500 @@ -0,0 +1,103 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> + + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" +#include "about-dlg.h" + +#include "about-dialog.h" + +extern GString *comp_info_str, *runtime_info_str; + +void +about_dialog_init(HWND hw_parent) { + win32_element_t *about_dlg = win32_identifier_get_str("about-dialog"); + HWND hw_about; + win32_element_t *about_vbox; + win32_element_t *descr; + int i = 0; + GString *line; + + if (! about_dlg) { + hw_about = about_dialog_dialog_create(hw_parent); + about_dlg = (win32_element_t *) GetWindowLong(hw_about, GWL_USERDATA); + about_vbox = win32_identifier_get_str("about-dlg.vbox"); + win32_element_assert(about_vbox); + + descr = win32_description_new(about_vbox->h_wnd, "Ethereal - Network Protocol Analyzer\n"); + win32_box_add(about_vbox, descr, i++); + + line = g_string_new("Version " VERSION +#ifdef CVSVERSION + " (" CVSVERSION ")" +#endif + " (C) 1998-2004 Gerald Combs <gerald@xxxxxxxxxxxx>\n"); + + descr = win32_description_new(about_vbox->h_wnd, line->str); + win32_box_add(about_vbox, descr, i++); + + g_string_printf(line, "%s\n", comp_info_str->str); + descr = win32_description_new(about_vbox->h_wnd, line->str); + win32_box_add(about_vbox, descr, i++); + + g_string_printf(line, "%s\n", runtime_info_str->str); + descr = win32_description_new(about_vbox->h_wnd, line->str); + win32_box_add(about_vbox, descr, i++); + + g_string_printf(line, "%s\n", "Ethereal is Open Source Software released under the GNU General Public License."); + descr = win32_description_new(about_vbox->h_wnd, line->str); + win32_box_add(about_vbox, descr, i++); + + g_string_printf(line, "%s\n", "Check the man page and http://www.ethereal.com for more information."); + descr = win32_description_new(about_vbox->h_wnd, line->str); + win32_box_add(about_vbox, descr, i++); + + win32_element_resize(about_dlg, -1, -1); + } + about_dialog_dialog_show(about_dlg->h_wnd); +} + +BOOL CALLBACK +about_dialog_dlg_proc(HWND hw_about, UINT msg, WPARAM w_param, LPARAM l_param) +{ + win32_element_t *dlg_box; + + switch( msg ) { + case WM_INITDIALOG: + about_dialog_handle_wm_initdialog(hw_about); + dlg_box = (win32_element_t *) GetWindowLong(hw_about, GWL_USERDATA); + win32_element_assert (dlg_box); + win32_element_resize(dlg_box, -1, -1); + return 0; + break; + case WM_COMMAND: + return 0; + break; + case WM_CLOSE: + about_dialog_dialog_hide(hw_about); + return 1; + break; + default: + return 0; + } + return 0; +} + +void +about_dialog_hide(win32_element_t *ok_el) { + win32_element_t *about_el = win32_identifier_get_str("about-dialog"); + + win32_element_assert(about_el); + about_dialog_dialog_hide(about_el->h_wnd); +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/about-dlg.h ethereal-win32/xulender/win32-c-sdk/about-dlg.h --- ethereal/xulender/win32-c-sdk/about-dlg.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/about-dlg.h 2004-06-21 15:39:56.000000000 -0500 @@ -0,0 +1,8 @@ +/* about-dlg.h */ + +#ifndef ABOUT_DLG_H +#define ABOUT_DLG_H + +void about_dialog_init(HWND hw_parent); + +#endif /* prefs-dlg.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/capture-util.c ethereal-win32/xulender/win32-c-sdk/capture-util.c --- ethereal/xulender/win32-c-sdk/capture-util.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/capture-util.c 2004-07-14 15:24:49.000000000 -0500 @@ -0,0 +1,677 @@ +/* capture-util.c + * UI utility routines + * + * $Id: ui_util.c,v 1.19 2004/02/13 00:53:37 guy Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/* + * Much (most?) of this stuff was copied from gtk/ui_util.c and + * gtk/capture_info_dlg.c, and modified accordingly. + */ + +#include "config.h" + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "globals.h" +#include <glib.h> + +#include "ringbuffer.h" +#include "pcap-util.h" + +#include "win32-globals.h" +#include "win32-c-sdk.h" +#include "ethereal-win32.h" + +#include <epan/packet.h> +#include <epan/resolv.h> +#include "capture.h" +#include "simple_dialog.h" +#include <epan/filesystem.h> + +#include "capture-util.h" +#include "capture-dialog.h" +#include "capture-info-dialog.h" + +/* + * These should match the element IDs in capture-info-dialog.xul AND + * the packet_counts struct in epan/packet.h. + */ +gchar *info_element_id[] = { + "sctp", + "tcp", + "udp", + "icmp", + "arp", + "ospf", + "gre", + "netbios", + "ipx", + "vines", + "other" + /* We handle "total" elsewhere. */ +}; + + +/* capture_info_counts_t and capture_info_ui_t wer +/* a single capture counter value (with title, pointer to value and GtkWidgets) */ +/* as the packet_counts is a struct, not an array, keep a pointer to the */ +/* corresponding value packet_counts, to speed up (and simplify) output of values */ +typedef struct { + gint *value_ptr; + win32_element_t *value_ds, *percent_pm, *percent_ds; +} capture_info_counts_t; + +/* all data we need to know of this dialog, after creation finished */ +typedef struct { + win32_element_t *cap_info_dlg, *total_el, *running_time_el; + capture_info_counts_t counts[CAPTURE_PACKET_COUNTS - 1]; +} capture_info_ui_t; + +static guint32 time_unit_menulist_get_value(win32_element_t *ml_el, guint32 value); +static guint32 size_unit_menulist_get_value(win32_element_t *ml_el, guint32 value); + + +/* XXX - Move this to epan/strutil.c */ +/* calculate the percentage of the current packet type */ +static float +pct(gint num, gint denom) { + if (denom) { + return (float) (num * 100.0 / denom); + } else { + return 0.0; + } +} + +/* Defined in capture.h */ + +/* create the capture info dialog */ +void +capture_info_create(capture_info *cinfo, gchar *iface) { + capture_info_ui_t *info; + gchar id_str[64]; + int i; + + if (! g_hw_capture_info_dlg) { + g_hw_capture_info_dlg = capture_info_dialog_dialog_create(g_hw_mainwin); + } + SetWindowText(g_hw_capture_info_dlg, + g_strdup_printf("Ethereal: Capture - Interface %s", iface)); + + info = g_malloc0(sizeof(capture_info_ui_t)); + + info->cap_info_dlg = (win32_element_t *) GetWindowLong(g_hw_capture_info_dlg, GWL_USERDATA); + info->total_el = win32_identifier_get_str("capture-count-total"); + win32_element_assert(info->total_el); + info->running_time_el = win32_identifier_get_str("capture-run-time"); + win32_element_assert(info->running_time_el); + + info->counts[0].value_ptr = &(cinfo->counts->sctp); + info->counts[1].value_ptr = &(cinfo->counts->tcp); + info->counts[2].value_ptr = &(cinfo->counts->udp); + info->counts[3].value_ptr = &(cinfo->counts->icmp); + info->counts[4].value_ptr = &(cinfo->counts->arp); + info->counts[5].value_ptr = &(cinfo->counts->ospf); + info->counts[6].value_ptr = &(cinfo->counts->gre); + info->counts[7].value_ptr = &(cinfo->counts->netbios); + info->counts[8].value_ptr = &(cinfo->counts->ipx); + info->counts[9].value_ptr = &(cinfo->counts->vines); + info->counts[10].value_ptr = &(cinfo->counts->other); + + for (i = 0; i < CAPTURE_PACKET_COUNTS - 1; i++) { + g_snprintf(id_str, sizeof(id_str), "capture-%s-count", info_element_id[i]); + info->counts[i].value_ds = win32_identifier_get_str(id_str); + win32_element_assert(info->counts[i].value_ds); + g_snprintf(id_str, sizeof(id_str), "capture-%s-progress", info_element_id[i]); + info->counts[i].percent_pm = win32_identifier_get_str(id_str); + win32_element_assert(info->counts[i].percent_pm); + g_snprintf(id_str, sizeof(id_str), "capture-%s-percent", info_element_id[i]); + info->counts[i].percent_ds = win32_identifier_get_str(id_str); + win32_element_assert(info->counts[i].percent_ds); + } + + capture_info_dialog_dialog_show(g_hw_capture_info_dlg); + + cinfo->ui = info; +} + +/* Update the capture info counters in the dialog */ +void +capture_info_update(capture_info *cinfo) { + int i; + gchar label_str[64]; + capture_info_ui_t *info = cinfo->ui; + + g_snprintf(label_str, sizeof(label_str), "%02ld:%02ld:%02ld", + (long)(cinfo->running_time/3600), (long)((cinfo->running_time%3600)/60), + (long)(cinfo->running_time%60)); + SetWindowText(info->running_time_el->h_wnd, label_str); + + g_snprintf(label_str, sizeof(label_str), "%d", cinfo->counts->total); + SetWindowText(info->total_el->h_wnd, label_str); + + for (i = 0; i < CAPTURE_PACKET_COUNTS - 1; i++) { + g_snprintf(label_str, sizeof(label_str), "%d", *info->counts[i].value_ptr); + SetWindowText(info->counts[i].value_ds->h_wnd, label_str); + SendMessage(info->counts[i].percent_pm->h_wnd, PBM_SETPOS, + (int) (pct(*info->counts[i].value_ptr, cinfo->counts->total)), 0); + g_snprintf(label_str, sizeof(label_str), "%.1f%%", + pct(*info->counts[i].value_ptr, cinfo->counts->total)); + SetWindowText(info->counts[i].percent_ds->h_wnd, label_str); + } +// XXX - Fix resizing. +// win32_element_resize(info->cap_info_dlg, -1, -1); +} + +/* destroy the capture info dialog again */ +void +capture_info_destroy(capture_info *cinfo) { + capture_info_dialog_dialog_hide(g_hw_capture_info_dlg); + g_free(cinfo->ui); +} + +/* Defined in capture-util.h */ + +/* Collect our capture parameters and start capturing. This is the + counterpart to gtk/capture_dlg.c:capture_prep_ok_cb(). */ + +void +capture_dialog_start_capture (win32_element_t *ok_el) { + gchar *save_file = NULL, *g_save_file = NULL; + gchar *if_name = NULL; + gchar *filter_text = NULL; + win32_element_t *if_el, *cd_el = win32_identifier_get_str("capture-dialog"); + win32_element_t *cb_el, *sp_el, *tb_el, *ml_el; + int len; + gchar *cf_name, *dirname; + guint32 tmp; + + win32_element_assert(ok_el); + win32_element_assert(cd_el); + + /* Fetch our interface settings */ + if_el = win32_identifier_get_str("capture-dialog.interface-combo"); + len = SendMessage(if_el->h_wnd, WM_GETTEXTLENGTH, 0, 0); + if (len > 0) { + len++; + if_name = g_malloc(len); + SendMessage(if_el->h_wnd, WM_GETTEXT, (WPARAM) len, (LPARAM) if_name); + } + + if (*if_name == '\0' || if_name == NULL) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "You didn't specify an interface on which to capture packets."); + if (if_name) + g_free(if_name); + return; + } + + if (cfile.iface) + g_free(cfile.iface); + cfile.iface = g_strdup(if_name); + g_free(if_name); + + /* XXX - We haven't implemented linktype options yet. */ + capture_opts.linktype = -1; + + /* Fetch the capture buffer size */ + sp_el = win32_identifier_get_str("capture-dialog.buffer-size"); + capture_opts.buffer_size = ethereal_spinner_get_pos(sp_el); + + /* Fetch the snapshot length */ + cb_el = win32_identifier_get_str("capture-dialog.packet-size-cb"); + capture_opts.has_snaplen = win32_checkbox_get_state(cb_el); + if (capture_opts.has_snaplen) { + sp_el = win32_identifier_get_str("capture-dialog.packet-size-spinner"); + capture_opts.snaplen = ethereal_spinner_get_pos(sp_el); + if (capture_opts.snaplen < 1) + capture_opts.snaplen = WTAP_MAX_PACKET_SIZE; + else if (capture_opts.snaplen < MIN_PACKET_SIZE) + capture_opts.snaplen = MIN_PACKET_SIZE; + } + + /* Promiscuous mode */ + cb_el = win32_identifier_get_str("capture-dialog.promiscuous"); + capture_opts.promisc_mode = win32_checkbox_get_state(cb_el); + + /* Fetch the capture filter */ + /* XXX - don't try to get clever and set "cfile.filter" to NULL if the + filter string is empty, as an indication that we don't have a filter + and thus don't have to set a filter when capturing - the version of + libpcap in Red Hat Linux 6.1, and versions based on later patches + in that series, don't bind the AF_PACKET socket to an interface + until a filter is set, which means they aren't bound at all if + no filter is set, which means no packets arrive as input on that + socket, which means Ethereal never sees any packets. */ + tb_el = win32_identifier_get_str("capture-dialog.capture-filter"); + filter_text = win32_textbox_get_text(tb_el); + g_assert(filter_text != NULL); + + if (cfile.cfilter) + g_free(cfile.cfilter); + + cfile.cfilter = filter_text; + + /* Fetch the save file */ + tb_el = win32_identifier_get_str("capture-dialog.save-file"); + g_save_file = win32_textbox_get_text(tb_el); + if (g_save_file && g_save_file[0]) { + /* User specified a file to which the capture should be written. */ + save_file = g_save_file; + /* Save the directory name for future file dialogs. */ + cf_name = g_strdup(g_save_file); + dirname = get_dirname(cf_name); /* Overwrites cf_name */ + set_last_open_dir(dirname); + g_free(cf_name); + } else { + /* User didn't specify a file; save to a temporary file. */ + if (g_save_file) + g_free(g_save_file); + save_file = NULL; + } + + /* Fetch our autostop settings */ + cb_el = win32_identifier_get_str("capture-dialog.stop-after-packets-cb"); + capture_opts.has_autostop_packets = win32_checkbox_get_state(cb_el); + if (capture_opts.has_autostop_packets) { + sp_el = win32_identifier_get_str("capture-dialog.stop-after-packets-spinner"); + capture_opts.autostop_packets = ethereal_spinner_get_pos(sp_el); + } + + cb_el = win32_identifier_get_str("capture-dialog.stop-after-time-cb"); + capture_opts.has_autostop_duration = win32_checkbox_get_state(cb_el); + if (capture_opts.has_autostop_duration) { + sp_el = win32_identifier_get_str("capture-dialog.stop-after-time-spinner"); + ml_el = win32_identifier_get_str("capture-dialog.stop-after-time-ml"); + capture_opts.autostop_duration = ethereal_spinner_get_pos(sp_el); + capture_opts.autostop_duration = + time_unit_menulist_get_value(ml_el, capture_opts.autostop_duration); + } + + cb_el = win32_identifier_get_str("capture-dialog.update-real-time"); + capture_opts.sync_mode = win32_checkbox_get_state(cb_el); + + cb_el = win32_identifier_get_str("capture-dialog.auto-scroll-live"); + auto_scroll_live = win32_checkbox_get_state(cb_el); + + cb_el = win32_identifier_get_str("capture-dialog.show_info"); + capture_opts.show_info = ! win32_checkbox_get_state(cb_el); + + /* Fetch our name resolution settings */ + cb_el = win32_identifier_get_str("capture-mac-resolution"); + if (win32_checkbox_get_state(cb_el)) + g_resolv_flags |= RESOLV_MAC; + + cb_el = win32_identifier_get_str("capture-network-resolution"); + if (win32_checkbox_get_state(cb_el)) + g_resolv_flags |= RESOLV_NETWORK; + + cb_el = win32_identifier_get_str("capture-transport-resolution"); + if (win32_checkbox_get_state(cb_el)) + g_resolv_flags |= RESOLV_TRANSPORT; + + cb_el = win32_identifier_get_str("capture-dialog.ring-buffer-with-cb"); + capture_opts.has_ring_num_files = win32_checkbox_get_state(cb_el); + + sp_el = win32_identifier_get_str("capture-dialog.ring-buffer-with-spinner"); + capture_opts.ring_num_files = ethereal_spinner_get_pos(sp_el); + if (capture_opts.ring_num_files > RINGBUFFER_MAX_NUM_FILES) + capture_opts.ring_num_files = RINGBUFFER_MAX_NUM_FILES; +#if RINGBUFFER_MIN_NUM_FILES > 0 + else if (capture_opts.ring_num_files < RINGBUFFER_MIN_NUM_FILES) + capture_opts.ring_num_files = RINGBUFFER_MIN_NUM_FILES; +#endif + + cb_el = win32_identifier_get_str("capture-dialog.use-multiple-files"); + capture_opts.multi_files_on = win32_checkbox_get_state(cb_el); + + if(capture_opts.sync_mode) + capture_opts.multi_files_on = FALSE; + + if (capture_opts.multi_files_on) { + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-size-cb"); + capture_opts.has_autostop_filesize = win32_checkbox_get_state(cb_el); + if (capture_opts.has_autostop_filesize) { + sp_el = win32_identifier_get_str("capture-dialog.stop-after-size-spinner"); + tmp = ethereal_spinner_get_pos(sp_el); + tmp = size_unit_menulist_get_value(sp_el, tmp); + if(tmp != 0) { + capture_opts.autostop_filesize = tmp; + } else { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Multiple files: Requested filesize too large!\n\n" + "The setting \"Next file every x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT); + return; + } + } + /* test if the settings are ok for a ringbuffer */ + if (save_file == NULL) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Multiple files: No capture file name given!\n\n" + "You must specify a filename if you want to use multiple files."); + return; + } else if (!capture_opts.has_autostop_filesize) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Multiple files: No file limit given!\n\n" + "You must specify a file size at which is switched to the next capture file\n" + "if you want to use multiple files."); + g_free(save_file); + return; + } + } else { + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-size-cb"); + capture_opts.has_autostop_filesize = win32_checkbox_get_state(cb_el); + if (capture_opts.has_autostop_filesize) { + sp_el = win32_identifier_get_str("capture-dialog.stop-after-size-spinner"); + tmp = ethereal_spinner_get_pos(sp_el); + tmp = size_unit_menulist_get_value(sp_el, tmp); + if(tmp != 0) { + capture_opts.autostop_filesize = tmp; + } else { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Stop Capture: Requested filesize too large!\n\n" + "The setting \"... after x byte(s)\" can't be greater than %u bytes (2GB).", G_MAXINT); + return; + } + } + } + + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-time-cb"); + capture_opts.has_file_duration = win32_checkbox_get_state(cb_el); + + if (capture_opts.has_file_duration) { + sp_el = win32_identifier_get_str("capture-dialog.next-file-every-time-spinner"); + capture_opts.file_duration = ethereal_spinner_get_pos(sp_el); + capture_opts.file_duration = time_unit_menulist_get_value(sp_el, capture_opts.file_duration); + } + + cb_el = win32_identifier_get_str("capture-dialog.stop-capture-after-cb"); + capture_opts.has_autostop_files = win32_checkbox_get_state(cb_el); + + if (capture_opts.has_autostop_files) { + sp_el = win32_identifier_get_str("capture-dialog.stop-capture-after-spinner"); + capture_opts.file_duration = ethereal_spinner_get_pos(sp_el); + } + + capture_dialog_dialog_hide(cd_el->h_wnd); + + do_capture(save_file); + if (save_file != NULL) + g_free(save_file); +} + +void +capture_info_dialog_stop_capture(win32_element_t *cid_el) { + capture_stop(); +} + +/* Defined in capture-dialog.h */ + +void +capture_dialog_hide(win32_element_t *cancel_el) { + win32_element_t *cd_el = win32_identifier_get_str("capture-dialog"); + + win32_element_assert(cd_el); + + capture_dialog_dialog_hide(cd_el->h_wnd); +} + +void +capture_dialog_limit_packet_size(win32_element_t *cb_el) { + win32_element_t *sp_el; + + capture_opts.has_snaplen = win32_checkbox_get_state(cb_el); + + sp_el = win32_identifier_get_str("capture-dialog.packet-size-spinner"); + win32_element_set_enabled(sp_el, win32_checkbox_get_state(cb_el)); +} + +/* + * This is the counterpart of capture_prep_adjust_sensitivity() in + * gtk/capture_dlg.c. We have several controls in the capture dialog + * that affect the behavior of other controls. Adjust them all here. + */ +void +capture_dialog_adjust_sensitivity(win32_element_t *cb_el) { + win32_element_t *sync_cb, *multi_files_on_cb, *auto_scroll_cb, + *ring_filesize_cb, *ring_filesize_sp, + *ring_filesize_ml, *file_duration_cb, + *file_duration_sp, *file_duration_ml, + *ringbuffer_nbf_cb, *ringbuffer_nbf_sp, + *ringbuffer_nbf_ds, *stop_filesize_cb, + *stop_filesize_sp, *stop_filesize_ml, + *stop_files_cb, *stop_files_sp, *stop_files_ds, + *stop_packets_cb, *stop_packets_sp, *stop_packets_ds, + *stop_duration_cb, *stop_duration_sp, *stop_duration_ml, + *hide_info_cb; + + sync_cb = win32_identifier_get_str("capture-dialog.update-real-time"); + multi_files_on_cb = win32_identifier_get_str("capture-dialog.use-multiple-files"); + auto_scroll_cb = win32_identifier_get_str("capture-dialog.auto-scroll-live"); + hide_info_cb = win32_identifier_get_str("capture-dialog.show_info"); + ring_filesize_cb = win32_identifier_get_str("capture-dialog.next-file-every-size-cb"); + ring_filesize_sp = win32_identifier_get_str("capture-dialog.next-file-every-size-spinner"); + ring_filesize_ml = win32_identifier_get_str("capture-dialog.next-file-every-size-ml"); + file_duration_cb = win32_identifier_get_str("capture-dialog.next-file-every-time-cb"); + file_duration_sp = win32_identifier_get_str("capture-dialog.next-file-every-time-spinner"); + file_duration_ml = win32_identifier_get_str("capture-dialog.next-file-every-time-ml"); + ringbuffer_nbf_cb = win32_identifier_get_str("capture-dialog.ring-buffer-with-cb"); + ringbuffer_nbf_sp = win32_identifier_get_str("capture-dialog.ring-buffer-with-spinner"); + ringbuffer_nbf_ds = win32_identifier_get_str("capture-dialog.ring-buffer-with-descr"); + stop_filesize_cb = win32_identifier_get_str("capture-dialog.stop-after-size-cb"); + stop_filesize_sp = win32_identifier_get_str("capture-dialog.stop-after-size-spinner"); + stop_filesize_ml = win32_identifier_get_str("capture-dialog.stop-after-size-ml"); + stop_files_cb = win32_identifier_get_str("capture-dialog.stop-capture-after-cb"); + stop_files_sp = win32_identifier_get_str("capture-dialog.stop-capture-after-spinner"); + stop_files_ds = win32_identifier_get_str("capture-dialog.stop-capture-after-descr"); + stop_packets_cb = win32_identifier_get_str("capture-dialog.stop-after-packets-cb"); + stop_packets_sp = win32_identifier_get_str("capture-dialog.stop-after-packets-spinner"); + stop_packets_ds = win32_identifier_get_str("capture-dialog.stop-after-packets-descr"); + stop_duration_cb = win32_identifier_get_str("capture-dialog.stop-after-time-cb"); + stop_duration_sp = win32_identifier_get_str("capture-dialog.stop-after-time-spinner"); + stop_duration_ml = win32_identifier_get_str("capture-dialog.stop-after-time-ml"); + + if (win32_checkbox_get_state(sync_cb)) { + /* "Update list of packets in real time" captures enabled; we don't + support ring buffer mode for those captures, so turn ring buffer + mode off if it's on, and make its toggle button, and the spin + button for the number of ring buffer files (and the spin button's + label), insensitive. */ + win32_checkbox_set_state(multi_files_on_cb, FALSE); + win32_element_set_enabled(multi_files_on_cb, FALSE); + + /* Auto-scroll mode is meaningful only in "Update list of packets + in real time" captures, so make its toggle button sensitive. */ + win32_element_set_enabled(auto_scroll_cb, TRUE); + } else { + /* "Update list of packets in real time" captures disabled; that + means ring buffer mode is OK, so make its toggle button + sensitive. */ + win32_element_set_enabled(multi_files_on_cb, TRUE); + + /* Auto-scroll mode is meaningful only in "Update list of packets + in real time" captures, so make its toggle button insensitive. */ + win32_element_set_enabled(auto_scroll_cb, FALSE); + } + + if (win32_checkbox_get_state(multi_files_on_cb)) { + /* Ring buffer mode enabled. */ + /* Filesize is currently forced */ + win32_element_set_enabled(ring_filesize_cb, TRUE); + win32_checkbox_set_state(ring_filesize_cb, TRUE); + + win32_element_set_enabled(ringbuffer_nbf_cb, TRUE); + win32_element_set_enabled(ringbuffer_nbf_sp, + win32_checkbox_get_state(ringbuffer_nbf_cb)); + win32_element_set_enabled(ringbuffer_nbf_ds, + win32_checkbox_get_state(ringbuffer_nbf_cb)); + + /* The ring filesize spinbox is sensitive if the "Next capture file + after N kilobytes" checkbox is on. */ + win32_element_set_enabled(ring_filesize_sp, + win32_checkbox_get_state(ring_filesize_cb)); + win32_element_set_enabled(ring_filesize_ml, + win32_checkbox_get_state(ring_filesize_cb)); + + /* The ring duration spinbox is sensitive if the "Next capture file + after N seconds" checkbox is on. */ + win32_element_set_enabled(file_duration_cb, TRUE); + win32_element_set_enabled(file_duration_sp, + win32_checkbox_get_state(file_duration_cb)); + win32_element_set_enabled(file_duration_ml, + win32_checkbox_get_state(file_duration_cb)); + + win32_element_set_enabled(stop_filesize_cb, FALSE); + win32_element_set_enabled(stop_filesize_sp, FALSE); + win32_element_set_enabled(stop_filesize_ml, FALSE); + + win32_element_set_enabled(stop_files_cb, TRUE); + win32_element_set_enabled(stop_files_sp, + win32_checkbox_get_state(stop_files_cb)); + win32_element_set_enabled(stop_files_ds, + win32_checkbox_get_state(stop_files_cb)); + } else { + /* Ring buffer mode disabled. */ + win32_element_set_enabled(ringbuffer_nbf_cb, FALSE); + win32_element_set_enabled(ringbuffer_nbf_sp, FALSE); + win32_element_set_enabled(ringbuffer_nbf_ds, FALSE); + + win32_element_set_enabled(ring_filesize_cb, FALSE); + win32_element_set_enabled(ring_filesize_sp, FALSE); + win32_element_set_enabled(ring_filesize_ml, FALSE); + + win32_element_set_enabled(file_duration_cb, FALSE); + win32_element_set_enabled(file_duration_sp, FALSE); + win32_element_set_enabled(file_duration_ml, FALSE); + + /* The maximum file size spinbox is sensitive if the "Stop capture + after N kilobytes" checkbox is on. */ + win32_element_set_enabled(stop_filesize_cb, TRUE); + win32_element_set_enabled(stop_filesize_sp, + win32_checkbox_get_state(stop_filesize_cb)); + win32_element_set_enabled(stop_filesize_ml, + win32_checkbox_get_state(stop_filesize_cb)); + + win32_element_set_enabled(stop_files_cb, FALSE); + win32_element_set_enabled(stop_files_sp, FALSE); + win32_element_set_enabled(stop_files_ds, FALSE); + } + /* The maximum packet count spinbox is sensitive if the "Stop capture + after N packets" checkbox is on. */ + win32_element_set_enabled(stop_packets_sp, + win32_checkbox_get_state(stop_packets_cb)); + win32_element_set_enabled(stop_packets_ds, + win32_checkbox_get_state(stop_packets_cb)); + + /* The capture duration spinbox is sensitive if the "Stop capture + after N seconds" checkbox is on. */ + win32_element_set_enabled(stop_duration_sp, + win32_checkbox_get_state(stop_duration_cb)); + win32_element_set_enabled(stop_duration_ml, + win32_checkbox_get_state(stop_duration_cb)); +} + +/* + * Private + */ + +#define TIME_UNIT_SECOND 0 +#define TIME_UNIT_MINUTE 1 +#define TIME_UNIT_HOUR 2 +#define TIME_UNIT_DAY 3 +#define MAX_TIME_UNITS 4 + +static guint32 +time_unit_menulist_get_value(win32_element_t *ml_el, guint32 value) { + int unit; + + win32_element_assert(ml_el); + unit = SendMessage(ml_el->h_wnd, CB_GETCURSEL, 0, 0); + + switch(unit) { + case(TIME_UNIT_SECOND): + return value; + break; + case(TIME_UNIT_MINUTE): + return value * 60; + break; + case(TIME_UNIT_HOUR): + return value * 60 * 60; + break; + case(TIME_UNIT_DAY): + return value * 60 * 60 * 24; + break; + default: + g_assert_not_reached(); + return 0; + } +} + +#define SIZE_UNIT_BYTES 0 +#define SIZE_UNIT_KILOBYTES 1 +#define SIZE_UNIT_MEGABYTES 2 +#define SIZE_UNIT_GIGABYTES 3 +#define MAX_SIZE_UNITS 4 + +static guint32 +size_unit_menulist_get_value(win32_element_t *ml_el, guint32 value) { + int unit; + + win32_element_assert(ml_el); + unit = SendMessage(ml_el->h_wnd, CB_GETCURSEL, 0, 0); + + + switch(unit) { + case(SIZE_UNIT_BYTES): + return value; + break; + case(SIZE_UNIT_KILOBYTES): + if(value > G_MAXINT / 1024) { + return 0; + } else { + return value * 1024; + } + break; + case(SIZE_UNIT_MEGABYTES): + if(value > G_MAXINT / (1024 * 1024)) { + return 0; + } else { + return value * 1024 * 1024; + } + break; + case(SIZE_UNIT_GIGABYTES): + if(value > G_MAXINT / (1024 * 1024 * 1024)) { + return 0; + } else { + return value * 1024 * 1024 * 1024; + } + break; + default: + g_assert_not_reached(); + return 0; + } +} diff -x entries -urN ethereal/xulender/win32-c-sdk/capture-util.h ethereal-win32/xulender/win32-c-sdk/capture-util.h --- ethereal/xulender/win32-c-sdk/capture-util.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/capture-util.h 2004-04-02 15:28:20.000000000 -0600 @@ -0,0 +1,6 @@ +/* capture-util.h */ + +#ifndef CAPTURE_UTIL_H +#define CAPTURE_UTIL_H + +#endif /* capture-util.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/capture_combo_utils.c ethereal-win32/xulender/win32-c-sdk/capture_combo_utils.c --- ethereal/xulender/win32-c-sdk/capture_combo_utils.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/capture_combo_utils.c 2004-06-02 10:00:17.000000000 -0500 @@ -0,0 +1,160 @@ +/* capture_combo_utils.c + * Utilities for combo box of interface names + * + * $Id: capture_combo_utils.c,v 1.4 2003/12/21 12:17:58 ulfl Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP + +#include <pcap.h> +#include <string.h> + +#include "prefs.h" +#include "pcap-util.h" +#include "capture_combo_utils.h" + +/* + * Find capture device description that matches interface name. + */ +static char * +capture_dev_descr_find(const gchar *if_name) +{ + char *p; + char *p2 = NULL; + char *descr = NULL; + int lp = 0; + int ct = 0; + + if (prefs.capture_devices_descr == NULL) { + /* There are no descriptions. */ + return NULL; + } + + if ((p = strstr(prefs.capture_devices_descr, if_name)) == NULL) { + /* There are, but there isn't one for this interface. */ + return NULL; + } + + while (*p != '\0') { + /* error: ran into next interface description */ + if (*p == ',') + return NULL; + /* found left parenthesis, start of description */ + else if (*p == '(') { + ct = 0; + lp++; + /* skip over left parenthesis */ + p++; + /* save pointer to beginning of description */ + p2 = p; + continue; + } + else if (*p == ')') { + /* end of description */ + break; + } + else { + p++; + ct++; + } + } + + if ((lp == 1) && (ct > 0) && (p2 != NULL)) { + /* Allocate enough space to return the string, + which runs from p2 to p, plus a terminating + '\0'. */ + descr = g_malloc(p - p2 + 1); + memcpy(descr, p2, p - p2); + descr[p - p2] = '\0'; + return descr; + } + else + return NULL; +} + +GList * +build_capture_combo_list(GList *if_list, gboolean do_hide) +{ + GList *combo_list; + GList *if_entry; + if_info_t *if_info; + char *if_string; + gchar *descr; + + combo_list = NULL; + if (if_list != NULL) { + /* Scan through the list and build a list of strings to display. */ + for (if_entry = if_list; if_entry != NULL; + if_entry = g_list_next(if_entry)) { + if_info = if_entry->data; + + /* Is this interface hidden and, if so, should we include it + anyway? */ + if (prefs.capture_devices_hide == NULL || + strstr(prefs.capture_devices_hide, if_info->name) == NULL || + !do_hide) { + /* It's not hidden, or it is but we should include it in the list. */ + + /* Do we have a user-supplied description? */ + descr = capture_dev_descr_find(if_info->name); + if (descr != NULL) { + /* Yes, we have a user-supplied description; use it. */ + if_string = g_strdup_printf("%s: %s", descr, if_info->name); + g_free(descr); + } else { + /* No, we don't have a user-supplied description; did we get + one from the OS or libpcap? */ + if (if_info->description != NULL) { + /* Yes - use it. */ + if_string = g_strdup_printf("%s: %s", if_info->description, + if_info->name); + } else { + /* No. */ + if_string = g_strdup(if_info->name); + } + } + combo_list = g_list_append(combo_list, if_string); + } + } + } + return combo_list; +} + +static void +free_if_string(gpointer data, gpointer user_data _U_) +{ + g_free(data); +} + +void +free_capture_combo_list(GList *combo_list) +{ + if (combo_list != NULL) { + g_list_foreach(combo_list, free_if_string, NULL); + g_list_free(combo_list); + } +} + +#endif /* HAVE_LIBPCAP */ diff -x entries -urN ethereal/xulender/win32-c-sdk/capture_combo_utils.h ethereal-win32/xulender/win32-c-sdk/capture_combo_utils.h --- ethereal/xulender/win32-c-sdk/capture_combo_utils.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/capture_combo_utils.h 2004-06-02 09:40:27.000000000 -0500 @@ -0,0 +1,31 @@ +/* capture_combo_utils.c + * Declarations of tilities for combo box of interface names + * + * $Id: capture_combo_utils.h,v 1.1 2003/09/10 05:35:25 guy Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __CAPTURE_COMBO_UTILS_H__ +#define __CAPTURE_COMBO_UTILS_H__ + +GList *build_capture_combo_list(GList *if_list, gboolean do_hide); +void free_capture_combo_list(GList *combo_list); + +#endif diff -x entries -urN ethereal/xulender/win32-c-sdk/ethereal-win32.h ethereal-win32/xulender/win32-c-sdk/ethereal-win32.h --- ethereal/xulender/win32-c-sdk/ethereal-win32.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/ethereal-win32.h 2004-04-28 16:11:53.000000000 -0500 @@ -0,0 +1,12 @@ +#ifndef __ETHEREAL_WIN32_H__ +#define __ETHEREAL_WIN32_H__ + +#include "ethereal-byteview.h" +#include "ethereal-combobox.h" +#include "ethereal-packetlist.h" +#include "ethereal-spinner.h" +#include "ethereal-treeview.h" + +#include "win32-main.h" + +#endif /* ethereal-win32.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-byteview.c ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-byteview.c --- ethereal/xulender/win32-c-sdk/localelements/ethereal-byteview.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-byteview.c 2004-07-09 10:33:18.000000000 -0500 @@ -0,0 +1,841 @@ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> +#include <tchar.h> +#include <richedit.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + +#include "ethereal-byteview.h" +#include "ethereal-treeview.h" + +#include <epan/epan.h> +#include <epan/filesystem.h> +#include <epan/epan_dissect.h> +#include <epan/packet.h> +#include "util.h" + +static LRESULT CALLBACK ethereal_byteview_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static void ethereal_byteview_show_hide(HWND tab); +static void ethereal_byteview_empty(win32_element_t *byteview); +static void ethereal_byteview_resize(HWND hw_byteview); +static LRESULT ethereal_byteview_notify(HWND, LPARAM, capture_file *); +static void add_byte_tab(HWND tab, const char *name, tvbuff_t *tvb, + int encoding, win32_element_t *treeview); +static void packet_hex_print_common(HWND hw_bv, const guint8 *pd, int len, + int bstart, int bend); +static void byteview_select(win32_element_t *byteview, HWND edit, LONG selpt); + +typedef struct _byteview_data_t { + HWND tab; /* Notebook/tab control */ + proto_tree *tree; /* Associated protocol tree */ + gboolean in_hex_print; /* Are we in the middle of printing? */ +} byteview_data_t; + +typedef struct _byte_tab_data_t { + tvbuff_t *tvb; + win32_element_t *treeview; + int encoding; +} byte_tab_data_t; + +#define EWC_BYTE_PANE "ByteViewPane" +#define EWC_BYTE_TEXT "ByteViewTextArea" +#define ETHEREAL_BYTEVIEW_DATA "_ethereal_byteview_data" + + +/* + * Copied from gtk/proto_draw.c. + */ +#define BYTE_VIEW_WIDTH 16 +#define BYTE_VIEW_SEP 8 + +#define MAX_OFFSET_LEN 8 /* max length of hex offset of bytes */ +#define BYTES_PER_LINE 16 /* max byte values in a line */ +#define HEX_DUMP_LEN (BYTES_PER_LINE*3 + 1) + /* max number of characters hex dump takes - + 2 digits plus trailing blank + plus separator between first and + second 8 digits */ +#define DATA_DUMP_LEN (HEX_DUMP_LEN + 2 + BYTES_PER_LINE) + /* number of characters those bytes take; + 3 characters per byte of hex dump, + 2 blanks separating hex from ASCII, + 1 character per byte of ASCII dump */ +#define MAX_LINE_LEN (MAX_OFFSET_LEN + 2 + DATA_DUMP_LEN) + /* number of characters per line; + offset, 2 blanks separating offset + from data dump, data dump */ + +/* + * Creates a ByteView control + */ + +win32_element_t * +ethereal_byteview_new(HWND hw_parent) { + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + win32_element_t *byteview; + byteview_data_t *bd; + WNDCLASS wc; + + wc.lpszClassName = EWC_BYTE_PANE; + wc.lpfnWndProc = ethereal_byteview_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_WINDOWFRAME+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + g_assert(hw_parent != NULL); + + byteview = win32_element_new(NULL); + + byteview->h_wnd = CreateWindow( + EWC_BYTE_PANE, + EWC_BYTE_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + (LPSTR) NULL); + ShowWindow(byteview->h_wnd, SW_SHOW); + UpdateWindow(byteview->h_wnd); + + /* Attach the byteview address to our HWND. */ + SetWindowLong(byteview->h_wnd, GWL_USERDATA, (LONG) byteview); + SendMessage(byteview->h_wnd, WM_SETFONT, (WPARAM) g_fixed_font, FALSE); + + bd = g_malloc(sizeof(byteview_data_t)); + win32_element_set_data(byteview, ETHEREAL_BYTEVIEW_DATA, bd); + bd->tree = NULL; + + /* + * XXX - According to + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tab/styles.asp + * TCS_BOTTOM isn't supported in ComCtl32.dll version 6. Yay. + */ + bd->tab = CreateWindowEx( + 0, + WC_TABCONTROL, + "", + WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_CLIPSIBLINGS /* | TCS_BOTTOM */, + 0, 0, 50, 25, + byteview->h_wnd, + NULL, + h_instance, + (LPSTR) NULL); + + SendMessage(bd->tab, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + ShowWindow(bd->tab, SW_HIDE); + UpdateWindow(bd->tab); + + ethereal_byteview_empty(byteview); + add_byte_tab(bd->tab, "", NULL, CHAR_ASCII, NULL); + ethereal_byteview_resize(byteview->h_wnd); + + return byteview; +} + +/* XXX Add a "destroy" routine */ + +static LRESULT CALLBACK +ethereal_byteview_wnd_proc(HWND hw_byteview, UINT msg, + WPARAM w_param, LPARAM l_param) { + win32_element_t *byteview; + byteview_data_t *bd; + int count, i; + TCITEM tci; + HWND edit; + LPNMHDR lpnmh; + SELCHANGE *selchg; + + switch (msg) { + case WM_CREATE: + break; + case WM_SIZE: + if (GetWindowLong(hw_byteview, GWL_USERDATA) != 0) { + ethereal_byteview_resize (hw_byteview); + } + break; + case WM_NOTIFY: + lpnmh = (LPNMHDR) l_param; + switch (lpnmh->code) { + case NM_CLICK: + ethereal_byteview_show_hide(lpnmh->hwndFrom); + ethereal_byteview_resize(hw_byteview); + break; + case EN_SELCHANGE: + selchg = (SELCHANGE *) l_param; + byteview = (win32_element_t *) GetWindowLong(hw_byteview, GWL_USERDATA); + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + if (bd && bd->in_hex_print) break; + + byteview_select(byteview, lpnmh->hwndFrom, selchg->chrg.cpMin); + default: + break; + } + break; + case WM_SETFONT: + byteview = (win32_element_t *) GetWindowLong(hw_byteview, GWL_USERDATA); + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + if (bd) { + count = TabCtrl_GetItemCount(bd->tab); + for (i = 0; i < count; i++) { + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, i, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) continue; + SendMessage(edit, WM_SETFONT, w_param, l_param); + } + } + + break; + default: + return (DefWindowProc(hw_byteview, msg, w_param, l_param)); + } + return (DefWindowProc(hw_byteview, msg, w_param, l_param)); +} + +static void +ethereal_byteview_resize(HWND hw_byteview) { + win32_element_t *byteview; + byteview_data_t *bd; + RECT pr; + int item; + TCITEM tci; + HWND edit; + + byteview = (win32_element_t *) GetWindowLong(hw_byteview, GWL_USERDATA); + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + GetClientRect(hw_byteview, &pr); + + item = TabCtrl_GetItemCount(bd->tab); + if (item < 1) return; + + /* If we have one item, the first item is the only visible window. + Otherwise, we size the tab control, then the current window */ + if (item > 1) { + MoveWindow(bd->tab, pr.left, pr.top, pr.right - pr.left, + pr.bottom - pr.top, TRUE); + TabCtrl_AdjustRect(bd->tab, FALSE, &pr); + } + + item = TabCtrl_GetCurSel(bd->tab); + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, item, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) return; + MoveWindow(edit, pr.left, pr.top, pr.right - pr.left, + pr.bottom - pr.top, TRUE); +} + +static void +ethereal_byteview_show_hide(HWND tab) { + HWND edit; + TCITEM tci; + int count, i, cur_sel; + + cur_sel = TabCtrl_GetCurSel(tab); + count = TabCtrl_GetItemCount(tab); + if (count > 1) { + ShowWindow(tab, SW_SHOW); + } else { + ShowWindow(tab, SW_HIDE); + } + + for (i = 0; i < count; i++) { + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(tab, i, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) continue; + if (i == cur_sel) { + ShowWindow(edit, SW_SHOW); + } else { + ShowWindow(edit, SW_HIDE); + UpdateWindow(edit); + } + } +} + +static void +ethereal_byteview_empty(win32_element_t *byteview) { + byteview_data_t *bd; + byte_tab_data_t *btd; + TCITEM tci; + int count, i; + HWND edit; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + count = TabCtrl_GetItemCount(bd->tab); + for (i = 0; i < count; i++) { + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, i, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) continue; + btd = (byte_tab_data_t *) GetWindowLong(edit, GWL_USERDATA); + g_free(btd); + DestroyWindow(edit); + } + TabCtrl_DeleteAllItems(bd->tab); + ShowWindow(bd->tab, SW_HIDE); +} + +/* + * Get the data and length for a byte view, given the byte view page. + * Return the pointer, or NULL on error, and set "*data_len" to the length. + */ +/* + * Copied from gtk/proto_draw.c. + * XXX - Maybe this should be an epan/tvbuff routine? + */ +const guint8 * +get_byteview_data_and_length(win32_element_t *byteview, guint *data_len) +{ + byteview_data_t *bd; + byte_tab_data_t *btd; + const guint8 *data_ptr; + int cur_sel; + TCITEM tci; + HWND edit; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + cur_sel = TabCtrl_GetCurSel(bd->tab); + if (cur_sel < 0) return NULL; + + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, cur_sel, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) return NULL; + + btd = (byte_tab_data_t *) GetWindowLong(edit, GWL_USERDATA); + + if (btd->tvb == NULL) return NULL; + + data_ptr = tvb_get_ptr(btd->tvb, 0, -1); + *data_len = tvb_length(btd->tvb); + return data_ptr; +} + +/* + * Create byte views in the main window. Defined in ui_util.h. + * Many bits copied from gtk/proto_draw.c. + */ +/* XXX - Add selection */ +// proto_draw.c:add_byte_tab() does this: +// - Add a tab to the notebook widget +// - Create a scrolled window/text widget and add it to the notebook +// - Disable editing, word wrap and line wrap in the text widget +// - Show tabs if there is more than one notebook page +// proto_draw.c:byte_view_realize_cb() does this: +// - Gets the tvb data and length +// - Calls packet_hex_print on the textarea + +/* Corresponds to add_byte_views() in gtk/proto_draw.c */ +void +ethereal_byteview_add(epan_dissect_t *edt, win32_element_t *byteview, win32_element_t *treeview) { + byteview_data_t *bd; + GSList *src_le = edt->pi.data_src; + data_source *src; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + bd->tree = edt->tree; + + ethereal_byteview_empty(byteview); + + for (src_le = edt->pi.data_src; src_le != NULL; src_le = src_le->next) { + src = src_le->data; + add_byte_tab(bd->tab, src->name, src->tvb, edt->pi.fd->flags.encoding, treeview); + } + + /* + * Initially select the first byte view. + */ + TabCtrl_SetCurFocus(bd->tab, 0); + ethereal_byteview_show_hide(bd->tab); +} + +void set_notebook_page(win32_element_t *byteview, tvbuff_t *tvb) { + byteview_data_t *bd; + byte_tab_data_t *btd; + int count, i; + TCITEM tci; + HWND edit; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + count = TabCtrl_GetItemCount(bd->tab); + for (i = 0; i < count; i++) { + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, i, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) continue; + btd = (byte_tab_data_t *) GetWindowLong(edit, GWL_USERDATA); + if (btd->tvb == tvb) { + TabCtrl_SetCurSel(bd->tab, count); + } + } +} + +void +packet_hex_print(win32_element_t *byteview, const guint8 *pd, frame_data *fd, + field_info *finfo, guint len) { + byteview_data_t *bd; + int cur_sel, bstart, bend = -1, blen; + TCITEM tci; + HWND edit; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + cur_sel = TabCtrl_GetCurSel(bd->tab); + if (cur_sel < 0) return; + + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_PARAM; + TabCtrl_GetItem(bd->tab, cur_sel, &tci); + edit = (HWND) tci.lParam; + if (edit == NULL) return; + + if (finfo != NULL) { + bstart = finfo->start; + blen = finfo->length; + } else { + bstart = -1; + blen = -1; + } + if (bstart >= 0 && blen >= 0) { + bend = bstart + blen; + } + + bd->in_hex_print = TRUE; + packet_hex_print_common(edit, pd, len, bstart, bend); + bd->in_hex_print = FALSE; +} + +void +ethereal_byteview_clear(win32_element_t *byteview) { + byteview_data_t *bd; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + ethereal_byteview_empty(byteview); + + add_byte_tab(bd->tab, "", NULL, CHAR_ASCII, NULL); +} + + + +/* + * Private routines + */ + +static void +add_byte_tab(HWND tab, const char *name, tvbuff_t *tvb, + int encoding, win32_element_t *treeview) { + byte_tab_data_t *btd; + int count; + const guint8 *pd = NULL; + int len = 0; + TCITEM tci; + HWND edit, hw_parent = GetParent(tab); + + if (tvb) { + len = tvb_length(tvb); + pd = tvb_get_ptr(tvb, 0, -1); + } + count = TabCtrl_GetItemCount(tab); + + btd = g_malloc(sizeof(byte_tab_data_t)); + btd->tvb = tvb; + btd->treeview = treeview; + btd->encoding = encoding; + + edit = CreateWindowEx( + WS_EX_CLIENTEDGE, + RICHEDIT_CLASS, + "", + WS_CHILD | WS_TABSTOP | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | + ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | + ES_NOHIDESEL | ES_READONLY /* | ES_SUNKEN */, + 0, 0, 0, 0, + hw_parent, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + NULL); + SendMessage(edit, WM_SETFONT, (WPARAM) g_fixed_font, FALSE); + SetWindowLong(edit, GWL_USERDATA, (LONG) btd); + + ZeroMemory(&tci, sizeof(tci)); + tci.mask = TCIF_TEXT | TCIF_PARAM; + tci.pszText = name; + tci.cchTextMax = lstrlen(name); + tci.lParam = (LPARAM) edit; + + TabCtrl_InsertItem(tab, count, &tci); + ethereal_byteview_show_hide(tab); + + if (pd) { + packet_hex_print_common(edit, pd, len, 0, 0); + } + ethereal_byteview_resize(GetParent(tab)); +} + + +static void +packet_hex_print_common(HWND edit, const guint8 *pd, int len, int bstart, + int bend) { + byte_tab_data_t *btd; + int i = 0, j, k, cur; + unsigned int use_digits; + TCHAR line[MAX_LINE_LEN + 2]; + gboolean reverse, newreverse; + static guchar hexchars[16] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + guchar c = '\0'; + CHARFORMAT2 normal_fmt, hilite_fmt; + COLORREF fg, bg; + + btd = (byte_tab_data_t *) GetWindowLong(edit, GWL_USERDATA); + + /* + * How many of the leading digits of the offset will we supply? + * We always supply at least 4 digits, but if the maximum offset + * won't fit in 4 digits, we use as many digits as will be needed. + */ + if (((len - 1) & 0xF0000000) != 0) + use_digits = 8; /* need all 8 digits */ + else if (((len - 1) & 0x0F000000) != 0) + use_digits = 7; /* need 7 digits */ + else if (((len - 1) & 0x00F00000) != 0) + use_digits = 6; /* need 6 digits */ + else if (((len - 1) & 0x000F0000) != 0) + use_digits = 5; /* need 5 digits */ + else + use_digits = 4; /* we'll supply 4 digits */ + + SendMessage(edit, WM_SETTEXT, (WPARAM) 0, (LPARAM) ""); + fg = GetSysColor(COLOR_WINDOWTEXT); + bg = GetSysColor(COLOR_WINDOW); + + ZeroMemory(&normal_fmt, sizeof(normal_fmt)); + normal_fmt.cbSize = sizeof(normal_fmt); + normal_fmt.dwMask = CFM_COLOR| CFM_BACKCOLOR; + normal_fmt.crTextColor = fg; + normal_fmt.crBackColor = bg; + + /* XXX - Add "bold". */ + ZeroMemory(&hilite_fmt, sizeof(hilite_fmt)); + hilite_fmt.cbSize = sizeof(hilite_fmt); + hilite_fmt.dwMask = CFM_COLOR| CFM_BACKCOLOR; + hilite_fmt.crTextColor = bg; + hilite_fmt.crBackColor = fg; + + SendMessage(edit, EM_SETEVENTMASK, (WPARAM) 0, (LPARAM) (DWORD) ENM_NONE); + + while (i < len) { + /* Print the line number */ + j = use_digits; + cur = 0; + do { + j--; + c = (i >> (j*4)) & 0xF; + line[cur++] = hexchars[c]; + } while (j != 0); + line[cur++] = ' '; + line[cur++] = ' '; + line[cur] = '\0'; + + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &normal_fmt); + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + + reverse = i >= bstart && i < bend; + j = i; + k = i + BYTE_VIEW_WIDTH; + cur = 0; + /* Do we start in reverse? */ + if (reverse) + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &hilite_fmt); + /* Print the hex bit */ + while (i < k) { + if (i < len) { + line[cur++] = hexchars[(pd[i] & 0xf0) >> 4]; + line[cur++] = hexchars[pd[i] & 0x0f]; + } else { + line[cur++] = ' '; line[cur++] = ' '; + } + i++; + newreverse = i >= bstart && i < bend; + /* Have we gone from reverse to plain? */ + if (reverse && (reverse != newreverse)) { + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &normal_fmt); + cur = 0; + } + + /* Inter byte space if not at end of line */ + if (i < k) { + line[cur++] = ' '; + /* insert a space every BYTE_VIEW_SEP bytes */ + if( ( i % BYTE_VIEW_SEP ) == 0 ) { + line[cur++] = ' '; + } + } + /* Have we gone from plain to reversed? */ + if (!reverse && (reverse != newreverse)) { + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &hilite_fmt); + cur = 0; + } + reverse = newreverse; + } + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &normal_fmt); + cur = 0; + line[cur++] = ' '; line[cur++] = ' '; line[cur++] = ' '; + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + cur = 0; + + /* Print the ASCII bit */ + i = j; + /* Do we start in reverse? */ + reverse = i >= bstart && i < bend; + if (reverse) + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &hilite_fmt); + while (i < k) { + if (i < len) { + if (btd->encoding == CHAR_ASCII) { + c = pd[i]; + } else if (btd->encoding == CHAR_EBCDIC) { + c = EBCDIC_to_ASCII1(pd[i]); + } else { + g_assert_not_reached(); + } + line[cur++] = isprint(c) ? c : '.'; + } else { + line[cur++] = ' '; + } + i++; + + newreverse = i >= bstart && i < bend; + /* Have we gone from reverse to plain? */ + if (reverse && (reverse != newreverse)) { + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &normal_fmt); + cur = 0; + } + if (i < k) { + /* insert a space every BYTE_VIEW_SEP bytes */ + if( ( i % BYTE_VIEW_SEP ) == 0 ) { + line[cur++] = ' '; + } + } + /* Have we gone from plain to reversed? */ + if (!reverse && (reverse != newreverse)) { + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &hilite_fmt); + cur = 0; + } + reverse = newreverse; + } + line[cur++] = '\r'; + line[cur++] = '\n'; + line[cur] = '\0'; + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) line); + } + + /* Lop off the last CR/LF */ + i = GetWindowTextLength (edit); + SendMessage(edit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &normal_fmt); + SendMessage(edit, EM_SETEVENTMASK, (WPARAM) 0, (LPARAM) (DWORD) ENM_SELCHANGE); + SendMessage(edit, EM_SETSEL, (WPARAM) i - 5, (LPARAM) i); + SendMessage(edit, EM_REPLACESEL, FALSE, (LPARAM)(LPCTSTR) ""); + SendMessage(edit, EM_SETSEL, (WPARAM) 0, (LPARAM) 0); + +} + +/* Which byte the offset is referring to. Associates + * whitespace with the preceding digits. */ +static int +byte_num(int offset, int start_point) +{ + return (offset - start_point) / 3; +} + +static void +byteview_select(win32_element_t *byteview, HWND edit, LONG selpt) { + byte_tab_data_t *btd; + byteview_data_t *bd; + int line_len = (int) SendMessage(edit, EM_LINELENGTH, 0, 0) + 1; + int row = (int) SendMessage(edit, EM_EXLINEFROMCHAR, 0, (LPARAM) (DWORD) selpt); + int column = selpt % line_len; + int ndigits, byte = 0; + int digits_start_1, digits_end_1, digits_start_2, digits_end_2; + int text_start_1, text_end_1, text_start_2, text_end_2; + field_info *finfo; + HTREEITEM hti; + + win32_element_assert(byteview); + bd = win32_element_get_data(byteview, ETHEREAL_BYTEVIEW_DATA); + + if (bd->tree == NULL) return; + if (bd->in_hex_print) return; + + btd = (byte_tab_data_t *) GetWindowLong(edit, GWL_USERDATA); + + /* + * Get the number of digits of offset being displayed, and + * compute the columns of various parts of the display. + */ + ndigits = MAX_LINE_LEN - line_len + 2; + + /* + * The column of the first hex digit in the first half. + * That starts after "ndigits" digits of offset and two + * separating blanks. + */ + digits_start_1 = ndigits + 2; + + /* + * The column of the last hex digit in the first half. + * There are BYTES_PER_LINE/2 bytes displayed in the first + * half; there are 2 characters per byte, plus a separating + * blank after all but the last byte's characters. + * + * Then subtract 1 to get the last column of the first half + * rather than the first column after the first half. + */ + digits_end_1 = digits_start_1 + (BYTES_PER_LINE/2)*2 + + (BYTES_PER_LINE/2 - 1) - 1; + + /* + * The column of the first hex digit in the second half. + * Add back the 1 to get the first column after the first + * half, and then add 2 for the 2 separating blanks between + * the halves. + */ + digits_start_2 = digits_end_1 + 3; + + /* + * The column of the last hex digit in the second half. + * Add the same value we used to get "digits_end_1" from + * "digits_start_1". + */ + digits_end_2 = digits_start_2 + (BYTES_PER_LINE/2)*2 + + (BYTES_PER_LINE/2 - 1) - 1; + + /* + * The column of the first "text dump" character in the first half. + * Add back the 1 to get the first column after the second + * half's hex dump, and then add 3 for the 3 separating blanks + * between the hex and text dummp. + */ + text_start_1 = digits_end_2 + 4; + + /* + * The column of the last "text dump" character in the first half. + * There are BYTES_PER_LINE/2 bytes displayed in the first + * half; there is 1 character per byte. + * + * Then subtract 1 to get the last column of the first half + * rather than the first column after the first half. + */ + text_end_1 = text_start_1 + BYTES_PER_LINE/2 - 1; + + /* + * The column of the first "text dump" character in the second half. + * Add back the 1 to get the first column after the first half, + * and then add 1 for the separating blank between the halves. + */ + text_start_2 = text_end_1 + 2; + + /* + * The column of the last "text dump" character in second half. + * Add the same value we used to get "text_end_1" from + * "text_start_1". + */ + text_end_2 = text_start_2 + BYTES_PER_LINE/2 - 1; + + /* Given the column and row, determine which byte offset + * the user clicked on. */ + if (column >= digits_start_1 && column <= digits_end_1) { + byte = byte_num(column, digits_start_1); + if (byte == -1) { + return; + } + } + else if (column >= digits_start_2 && column <= digits_end_2) { + byte = byte_num(column, digits_start_2); + if (byte == -1) { + return; + } + byte += 8; + } + else if (column >= text_start_1 && column <= text_end_1) { + byte = column - text_start_1; + } + else if (column >= text_start_2 && column <= text_end_2) { + byte = 8 + column - text_start_2; + } + else { + /* The user didn't select a hex digit or + * text-dump character. */ + return; + } + + /* Add the number of bytes from the previous rows. */ + byte += row * 16; + + finfo = proto_find_field_from_offset(bd->tree, byte, btd->tvb); + + if (finfo == NULL) return; + + hti = ethereal_treeview_find_finfo(btd->treeview, finfo); + + ethereal_treeview_select(btd->treeview, hti); +} diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-byteview.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-byteview.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-byteview.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-byteview.h 2004-07-09 09:20:46.000000000 -0500 @@ -0,0 +1,14 @@ + +#ifndef __ETHEREAL_BYTEVIEW_H__ +#define __ETHEREAL_BYTEVIEW_H__ + +#define ID_BYTE_VIEW 5002 + +win32_element_t * ethereal_byteview_new(HWND hw_parent); +void ethereal_byteview_add(epan_dissect_t *edt, win32_element_t *byteview, win32_element_t *treeview); +void ethereal_byteview_clear(win32_element_t *byteview); +const guint8 * get_byteview_data_and_length(win32_element_t *byteview, guint *data_len); +void set_notebook_page(win32_element_t *byteview, tvbuff_t *tvb); +void packet_hex_print(win32_element_t *byteview, const guint8 *pd, frame_data *fd, field_info *finfo, guint len); + +#endif /* ethereal-byteview.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-combobox.c ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-combobox.c --- ethereal/xulender/win32-c-sdk/localelements/ethereal-combobox.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-combobox.c 2004-06-17 13:49:46.000000000 -0500 @@ -0,0 +1,69 @@ +/* + * Combobox widget/control. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#include "ethereal-combobox.h" + +/* XXX - We need to subclass our own window proc so that we can catch + * the "return" key. + * Or maybe we'll just catch it in win32_box_wnd_proc() like everything + * else. + */ + +/* + * Create a ComboBox control. + */ + +win32_element_t * +ethereal_combobox_new(HWND hw_parent) { + win32_element_t *combobox; + RECT wr; + + g_assert(hw_parent != NULL); + + combobox = win32_element_new(NULL); + + combobox->h_wnd = CreateWindow( + "COMBOBOX", + "ComboBox", + WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWN | + CBS_AUTOHSCROLL, + 0, 0, 50, 50, + hw_parent, + (HMENU) ID_COMBOBOX, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(combobox->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + GetWindowRect(combobox->h_wnd, &wr); + combobox->minwidth = wr.right - wr.left; + combobox->minheight = wr.bottom - wr.top; + + ShowWindow(combobox->h_wnd, SW_SHOW); + UpdateWindow(combobox->h_wnd); + + /* Attach the combobox address to our HWND. */ + SetWindowLong(combobox->h_wnd, GWL_USERDATA, (LONG) combobox); + + return combobox; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-combobox.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-combobox.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-combobox.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-combobox.h 2004-05-03 14:59:31.000000000 -0500 @@ -0,0 +1,8 @@ +#ifndef __ETHEREAL_COMBOBOX_H__ +#define __ETHEREAL_COMBOBOX_H__ + + +win32_element_t * ethereal_combobox_new(HWND hw_parent); +#define ID_COMBOBOX 5003 + +#endif /* ethereal-combobox.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-elements.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-elements.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-elements.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-elements.h 2004-04-28 13:52:01.000000000 -0500 @@ -0,0 +1,12 @@ +#ifndef __ETHEREAL_WIN32_H__ +#define __ETHEREAL_WIN32_H__ + +#include "ethereal-byteview.h" +#include "ethereal-combobox.h" +#include "ethereal-packetlist.h" +#include "ethereal-spinner.h" +#include "ethereal-treeview.h" + +#include "win32-main.h" + +#endif /* ethereal-win32.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-packetlist.c ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-packetlist.c --- ethereal/xulender/win32-c-sdk/localelements/ethereal-packetlist.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-packetlist.c 2004-07-01 09:45:40.000000000 -0500 @@ -0,0 +1,421 @@ +/* + * Packet list control (widget) MUST: + * - Have unlimited length + * - Tie into packet list glist? + * - Set fg & bg colors + * - Allow column resizing + * + * It SHOULD + * - Allow column names and data types to be changed on the fly + * - Allow multiple selects? + * - Allow columns to be moved around + */ + +/* + * Some of the stuff used here, e.g. LVS_EX_FULLROWSELECT requires commctrl.dll + * version 4.70, which ships with IE 3.x according to + * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/versions.asp + * Therefore, we require IE 3.x or greater. This is probably a safe + * requirement. :) + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + +#include "ethereal-packetlist.h" + +#include <epan/epan.h> +#include <epan/filesystem.h> +#include <epan/epan_dissect.h> +#include <epan/column-utils.h> +#include "prefs.h" +#include "column.h" + +typedef struct _packet_list_item { + gchar **text; + gpointer data; + color_t *fg; + color_t *bg; +} packet_list_item; + +/* Globals */ +GList *packet_list, *first, *last = NULL; +gint rows; +HWND g_hw_packetlist = NULL, g_hw_packetlist_pane; + +static LRESULT CALLBACK ethereal_packetlist_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static LRESULT ethereal_packetlist_notify(HWND, LPARAM, capture_file *); + +#define EWC_LIST_PANE "PacketListPane" + + +/* + * Creates a ListView control using the LVS_OWNERDATA flag + */ + +win32_element_t * +ethereal_packetlist_new(HWND hw_parent) { + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + win32_element_t *packetlist; + WNDCLASS wc; + + /* XXX - Is this really needed? We're just using the enclosing pane + * to draw an inset. */ + wc.lpszClassName = EWC_LIST_PANE; + wc.lpfnWndProc = ethereal_packetlist_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_WINDOWFRAME+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + g_assert(hw_parent != NULL); + + packetlist = win32_element_new(NULL); + + packetlist->h_wnd = CreateWindow( + EWC_LIST_PANE, + EWC_LIST_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + (LPSTR) NULL); + + ShowWindow(packetlist->h_wnd, SW_SHOW); + UpdateWindow(packetlist->h_wnd); + + ethereal_packetlist_resize(packetlist->h_wnd, hw_parent); + + /* Attach the packetlist address to our HWND. */ + SetWindowLong(packetlist->h_wnd, GWL_USERDATA, (LONG) packetlist); + + g_hw_packetlist_pane = packetlist->h_wnd; + return packetlist; +} + +/* XXX Add a "destroy" routine */ + +static LRESULT CALLBACK +ethereal_packetlist_wnd_proc(HWND hw_packetlist_pane, UINT msg, + WPARAM w_param, LPARAM l_param) { + LV_COLUMN col; + int i; + + switch (msg) { + case WM_CREATE: + /* Build the column format array */ + /* XXX - this is duplicated in gtk/main.c _and_ tethereal.c */ + col_setup(&cfile.cinfo, prefs.num_cols); + for (i = 0; i < cfile.cinfo.num_cols; i++) { + cfile.cinfo.col_fmt[i] = get_column_format(i); + cfile.cinfo.col_title[i] = g_strdup(get_column_title(i)); + cfile.cinfo.fmt_matx[i] = (gboolean *) g_malloc0(sizeof(gboolean) * + NUM_COL_FMTS); + get_column_format_matches(cfile.cinfo.fmt_matx[i], cfile.cinfo.col_fmt[i]); + cfile.cinfo.col_data[i] = NULL; + if (cfile.cinfo.col_fmt[i] == COL_INFO) + cfile.cinfo.col_buf[i] = (gchar *) g_malloc(sizeof(gchar) * COL_MAX_INFO_LEN); + else + cfile.cinfo.col_buf[i] = (gchar *) g_malloc(sizeof(gchar) * COL_MAX_LEN); + cfile.cinfo.col_fence[i] = 0; + cfile.cinfo.col_expr[i] = (gchar *) g_malloc(sizeof(gchar) * COL_MAX_LEN); + cfile.cinfo.col_expr_val[i] = (gchar *) g_malloc(sizeof(gchar) * COL_MAX_LEN); + } + for (i = 0; i < cfile.cinfo.num_cols; i++) { + int j; + + for (j = 0; j < NUM_COL_FMTS; j++) { + if (!cfile.cinfo.fmt_matx[i][j]) + continue; + + if (cfile.cinfo.col_first[j] == -1) + cfile.cinfo.col_first[j] = i; + cfile.cinfo.col_last[j] = i; + } + } + + g_hw_packetlist = CreateWindowEx( + WS_EX_CLIENTEDGE, + WC_LISTVIEW, + "", + WS_CHILD | WS_TABSTOP | WS_VISIBLE | LVS_OWNERDATA | LVS_REPORT | + LVS_SHOWSELALWAYS | LVS_SINGLESEL, + 0, 0, 0, 0, + hw_packetlist_pane, + (HMENU) ID_PACKET_LIST, + (HINSTANCE) GetWindowLong(hw_packetlist_pane, GWL_HINSTANCE), + NULL); + + /* XXX set extra styles, e.g. LVS_EX_HEADERDRAGDROP? */ + ListView_SetExtendedListViewStyle(g_hw_packetlist, LVS_EX_FULLROWSELECT); + + /* XXX - Set width and justification */ + col.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; + col.fmt = LVCFMT_LEFT; + col.cx = 120; + for (i = 0; i < cfile.cinfo.num_cols; i++) { + col.pszText = cfile.cinfo.col_title[i]; + ListView_InsertColumn(g_hw_packetlist, i, &col); + } + + packet_list = first = last = NULL; + rows = -1; + break; + case WM_SIZE: + ethereal_packetlist_resize (g_hw_packetlist, g_hw_packetlist_pane); + break; + case WM_NOTIFY: + return ethereal_packetlist_notify(g_hw_packetlist, l_param, &cfile); + break; + default: + return(DefWindowProc(hw_packetlist_pane, msg, w_param, l_param)); + } + return(DefWindowProc(hw_packetlist_pane, msg, w_param, l_param)); +} + +void +ethereal_packetlist_resize(HWND hw_packetlist, HWND hw_parent) { + RECT pr; + + GetClientRect(hw_parent, &pr); + MoveWindow(g_hw_packetlist, pr.left, pr.top, pr.right - pr.left, + pr.bottom - pr.top, TRUE); +} + +void +ethereal_packetlist_clear(HWND hw_packetlist) { + packet_list_item *pli; + int i; + + ListView_DeleteAllItems(g_hw_packetlist); + packet_list = first; + while (packet_list) { + pli = (packet_list_item *) packet_list->data; + for (i = 0; i < prefs.num_cols; i++) { + g_free(pli->text[i]); + pli->text[i] = NULL; + } + g_free(pli->text); + pli->text = NULL; + if (pli->fg) + g_free(pli->fg); + if (pli->bg) + g_free(pli->bg); + pli->fg = NULL; + pli->bg = NULL; + g_free(pli); + pli = NULL; + packet_list = g_list_next(packet_list); + } + packet_list = first; + g_list_free(packet_list); + packet_list = first = last = NULL; + rows = -1; +} + +void +ethereal_packetlist_init(capture_file *cfile) { + ListView_SetItemCount(g_hw_packetlist, rows + 1); +} + +static LRESULT +ethereal_packetlist_notify(HWND hw_packetlist, LPARAM l_param, capture_file *cfile) { + LPNMHDR lpnmh = (LPNMHDR) l_param; + NMLVCUSTOMDRAW *lvcdparam; + LV_DISPINFO *lpdi; + packet_list_item *pli; + int col_num = 0, sel_item; + + switch(lpnmh->code) { + case LVN_GETDISPINFO: + lpdi = (LV_DISPINFO *)l_param; + + if (lpdi->item.iSubItem) { /* Our column number isn't zero. */ + /* This probably isn't needed, but we may want + * to add icons at a later date. + */ + if (lpdi->item.mask & LVIF_TEXT) { + col_num = lpdi->item.iSubItem; + } + } + g_assert (packet_list != NULL && cfile->count != 0); + pli = g_list_nth_data(first, lpdi->item.iItem); + lstrcpyn(lpdi->item.pszText, pli->text[col_num], lpdi->item.cchTextMax); + return 0; + break; + case LVN_ITEMCHANGED: + sel_item = ListView_GetNextItem(hw_packetlist, -1, LVNI_SELECTED); + if (sel_item >= 0) { + select_packet(cfile, sel_item); + } + return 0; + break; + case LVN_DELETEALLITEMS: + /* + * XXX - Should we move packet list deletion here? Calling + * ListView_DeleteAllItems() (in ethereal_packetlist_clear()) + * triggers this message. + */ + return TRUE; + break; + case NM_CUSTOMDRAW: /* Apply colors to each item */ + lvcdparam = (NMLVCUSTOMDRAW *) l_param; + switch (lvcdparam->nmcd.dwDrawStage) { + case CDDS_PREPAINT: + return CDRF_NOTIFYITEMDRAW; + break; + case CDDS_ITEMPREPAINT: + pli = g_list_nth_data(first, lvcdparam->nmcd.dwItemSpec); + if (pli != NULL && pli->fg != NULL && pli->bg != NULL) { + lvcdparam->clrText = COLOR_T2COLORREF(pli->fg); + lvcdparam->clrTextBk = COLOR_T2COLORREF(pli->bg); + return CDRF_NEWFONT; + } + return CDRF_DODEFAULT; + break; + } + break; + } + return 0; +} + +/* These are defined in ui_util.h */ + +void +packet_list_clear(void) { + ethereal_packetlist_clear(g_hw_packetlist); +} + +void +packet_list_freeze(void) { +// ListView_SetItemCount(g_hw_packetlist, 0); +} + +void +packet_list_thaw(void) { + ListView_SetItemCount(g_hw_packetlist, rows + 1); +} + +void packet_list_select_row(gint row) { +} + +void packet_list_set_column_auto_resize(gint column, gboolean auto_resize) { +} + +void packet_list_set_column_resizeable(gint column, gboolean resizeable) { +} + +void packet_list_set_column_width(gint column, gint width) { +} + +void packet_list_moveto_end(void) { +} + +gint +packet_list_append(gchar *text[], gpointer data) { + packet_list_item *pli; + int i; + + pli = g_malloc(sizeof(packet_list_item)); + pli->text = g_malloc(sizeof(gchar *) * prefs.num_cols); + for (i = 0; i < prefs.num_cols; i++) { + pli->text[i] = g_strdup(text[i]); + } + pli->data = data; + pli->fg = NULL; + pli->bg = NULL; + + packet_list = g_list_append(last, pli); + last = g_list_last(packet_list); + if (first == NULL) + first = g_list_first(packet_list); + rows++; + + /* XXX - ...and so is this. */ + return rows; +} + +void +packet_list_set_colors(gint row, color_t *fg, color_t *bg) { + packet_list_item *pli; + + pli = g_list_nth_data(first, row); + if (pli != NULL) { + if (pli->fg == NULL) + pli->fg = g_malloc(sizeof(color_t)); + if (pli->bg == NULL) + pli->bg = g_malloc(sizeof(color_t)); + pli->fg->pixel = fg->pixel; + pli->fg->red = fg->red; + pli->fg->green = fg->green; + pli->fg->blue = fg->blue; + pli->bg->pixel = bg->pixel; + pli->bg->red = bg->red; + pli->bg->green = bg->green; + pli->bg->blue = bg->blue; + } +} + +gint +packet_list_find_row_from_data_compare_func(gconstpointer list_data, gconstpointer compare_data) { + if (((packet_list_item *) list_data)->data == compare_data) + return 0; + return 1; +} + +gint packet_list_find_row_from_data(gpointer data) { + GList *entry; + entry = g_list_find_custom(first, data, packet_list_find_row_from_data_compare_func); + if (entry) + return g_list_position(first, entry); + return 0; +} + +void +packet_list_set_text(gint row, gint column, const gchar *text) { + packet_list_item *pli; + + pli = g_list_nth_data(first, row); + if (pli->text[column]) + g_free(pli->text[column]); + pli->text[column] = g_strdup(text); +} + +void +packet_list_set_cls_time_width(gint column) { +} + +gpointer +packet_list_get_row_data(gint row) { + gpointer pdata; + pdata = g_list_nth_data(first, row); + return ((packet_list_item *) pdata)->data; +} + +void +packet_list_set_selected_row(gint row) { +} + + diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-packetlist.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-packetlist.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-packetlist.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-packetlist.h 2004-06-14 15:11:40.000000000 -0500 @@ -0,0 +1,12 @@ +#ifndef __ETHEREAL_PACKETLIST_H__ +#define __ETHEREAL_PACKETLIST_H__ + + +#define ID_PACKET_LIST 5000 + +win32_element_t * ethereal_packetlist_new(HWND hw_parent); +void ethereal_packetlist_resize(HWND hw_packetlist, HWND hw_parent); +void ethereal_packetlist_delete(HWND hw_packetlist); +void ethereal_packetlist_init(capture_file *cfile); + +#endif /* ethereal-packetlist.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-spinner.c ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-spinner.c --- ethereal/xulender/win32-c-sdk/localelements/ethereal-spinner.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-spinner.c 2004-06-17 14:07:52.000000000 -0500 @@ -0,0 +1,214 @@ +/* + * Spinner widget/control. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#include "ethereal-spinner.h" + +static void ethereal_spinner_destroy(win32_element_t *spinner, gboolean destroy_window); +static LRESULT CALLBACK ethereal_spinner_wnd_proc(HWND, UINT, WPARAM, LPARAM); + +typedef struct _spinner_data_t { + HWND edit; + HWND updown; +} spinner_data_t; + +#define EWC_SPINNER_PANE "SpinnerPane" +#define ETHEREAL_SPINNER_DATA "_ethereal_spinner_data" + +#define DEF_UPDOWN_WIDTH 15 + +/* + * Create a spinner (a.k.a. spinbutton, a.k.a. up-down) control. We create + * a wrapper window to handle sizing and any events we may need to catch. + */ + +win32_element_t * +ethereal_spinner_new(HWND hw_parent) { + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + win32_element_t *spinner; + spinner_data_t *sd; + WNDCLASS wc; + SIZE sz; + + g_assert(hw_parent != NULL); + + spinner = win32_element_new(NULL); + + if (! GetClassInfo(h_instance, EWC_SPINNER_PANE, &wc)) { + wc.lpszClassName = EWC_SPINNER_PANE; + wc.lpfnWndProc = ethereal_spinner_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + } + + spinner->h_wnd = CreateWindow( + EWC_SPINNER_PANE, + EWC_SPINNER_PANE, + WS_CHILD | WS_VISIBLE | WS_TABSTOP, + 0, 0, 50, 25, + hw_parent, + (HMENU) ID_SPINNER, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(spinner->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(spinner->h_wnd, "12345678", &sz); + sz.cx += 4; + sz.cy += 4; + MoveWindow(spinner->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + spinner->minwidth = sz.cx; + spinner->minheight = sz.cy; + spinner->destroy = ethereal_spinner_destroy; + + sd = g_malloc(sizeof(spinner_data_t)); + + ShowWindow(spinner->h_wnd, SW_SHOW); + UpdateWindow(spinner->h_wnd); + + /* Attach the spinner address to our HWND. */ + SetWindowLong(spinner->h_wnd, GWL_USERDATA, (LONG) spinner); + win32_element_set_data(spinner, ETHEREAL_SPINNER_DATA, sd); + + /* Create our text entry and up-down controls */ + sd->edit = CreateWindowEx( + WS_EX_CLIENTEDGE, + "EDIT", + "", + WS_CHILD | WS_VISIBLE | ES_NUMBER, + 0, 0, sz.cx, sz.cy, + spinner->h_wnd, + (HMENU) 0, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + sd->updown = CreateUpDownControl( + WS_VISIBLE | WS_CHILD | + UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT, + 0, 0, DIALOG2PIXELX(DEF_UPDOWN_WIDTH), sz.cy, + spinner->h_wnd, + 0, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + sd->edit, + 100, 0, 0); + + SendMessage(sd->edit, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + ShowWindow(sd->edit, SW_SHOW); + UpdateWindow(sd->edit); + + SendMessage(sd->updown, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + ShowWindow(sd->updown, SW_SHOW); + UpdateWindow(sd->updown); + + return spinner; +} + +/* + * Public routines + */ + +void +ethereal_spinner_set_range(win32_element_t *spinner, int low, int high) { + spinner_data_t *sd; + + win32_element_assert(spinner); + sd = (spinner_data_t *) win32_element_get_data(spinner, ETHEREAL_SPINNER_DATA); + + SendMessage(sd->updown, UDM_SETRANGE32, (WPARAM) low, (LPARAM) high); +} + +void +ethereal_spinner_set_pos(win32_element_t *spinner, int pos) { + spinner_data_t *sd; + + win32_element_assert(spinner); + sd = (spinner_data_t *) win32_element_get_data(spinner, ETHEREAL_SPINNER_DATA); + + SendMessage(sd->updown, UDM_SETPOS, (WPARAM) 0, (LPARAM) pos); +} + +int +ethereal_spinner_get_pos(win32_element_t *spinner) { + spinner_data_t *sd; + + win32_element_assert(spinner); + sd = (spinner_data_t *) win32_element_get_data(spinner, ETHEREAL_SPINNER_DATA); + + return (int) SendMessage(sd->updown, UDM_GETPOS, (WPARAM) 0, (LPARAM) 0); +} + + +/* + * Private routines + */ + +static void +ethereal_spinner_destroy(win32_element_t *spinner, gboolean destroy_window) { + spinner_data_t *sd; + + win32_element_assert(spinner); + + sd = (spinner_data_t *) win32_element_get_data(spinner, ETHEREAL_SPINNER_DATA); + g_free(sd); +} + +static LRESULT CALLBACK +ethereal_spinner_wnd_proc(HWND hw_spinner, UINT msg, WPARAM w_param, LPARAM l_param) { + win32_element_t *el; + spinner_data_t *sd; +// RECT dcrect; + + switch (msg) { +// case WM_COMMAND: +// /* onCommand commands */ +// if (HIWORD(w_param) == BN_CLICKED && l_param != NULL) { +// el = (win32_element_t *) GetWindowLong((HWND) l_param, GWL_USERDATA); +// if (el->oncommand != NULL) el->oncommand(el); +// /* Resize our combobox dropdown boxes */ +// /* XXX - Get the number of items in the list and size accordingly */ +// } else if (HIWORD(w_param) == CBN_DROPDOWN && (int) LOWORD(w_param) == ID_COMBOBOX) { +// GetWindowRect((HWND) l_param, &dcrect); +// SetWindowPos((HWND) l_param, HWND_TOP, 0, 0, dcrect.right - dcrect.left, 150, +// SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); +// } +// break; + + case WM_ENABLE: + el = (win32_element_t *) GetWindowLong(hw_spinner, GWL_USERDATA); + win32_element_assert(el); + sd = (spinner_data_t *) win32_element_get_data(el, ETHEREAL_SPINNER_DATA); + EnableWindow(sd->edit, (BOOL) w_param); + EnableWindow(sd->updown, (BOOL) w_param); + break; + + default: + return(DefWindowProc(hw_spinner, msg, w_param, l_param)); + } + return 0; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-spinner.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-spinner.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-spinner.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-spinner.h 2004-04-30 19:18:20.000000000 -0500 @@ -0,0 +1,12 @@ +#ifndef __ETHEREAL_SPINNER_H__ +#define __ETHEREAL_SPINNER_H__ + + +win32_element_t *ethereal_spinner_new(HWND hw_parent); +void ethereal_spinner_set_range(win32_element_t *spinner, int low, int high); +void ethereal_spinner_set_pos(win32_element_t *spinner, int pos); +int ethereal_spinner_get_pos(win32_element_t *spinner); + +#define ID_SPINNER 5004 + +#endif /* ethereal-spinner.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-treeview.c ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-treeview.c --- ethereal/xulender/win32-c-sdk/localelements/ethereal-treeview.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-treeview.c 2004-07-09 09:23:04.000000000 -0500 @@ -0,0 +1,365 @@ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + +#include "ethereal-treeview.h" +#include "ethereal-byteview.h" + +#include <epan/epan.h> +#include <epan/filesystem.h> +#include <epan/epan_dissect.h> + +/* Structures */ + +typedef struct _treeview_data_t { + HWND tv_ctrl; + win32_element_t *byteview; +} treeview_data_t; + +typedef struct _add_node_t { + HWND tv_ctrl; + HTREEITEM node; +} add_node_t; + +static void ethereal_treeview_resize(HWND hw_treeview); +static LRESULT CALLBACK ethereal_treeview_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static LRESULT ethereal_treeview_notify(HWND, LPARAM, capture_file *); +static HTREEITEM ethereal_treeview_find_lparam(HWND tv_ctrl, HTREEITEM last_ti, LPARAM lp_data); + +#define EWC_TREE_PANE "TreeViewPane" +#define ETHEREAL_TREEVIEW_DATA "_ethereal_treeview_data" + +/* + * Creates a TreeView control + */ + +win32_element_t * +ethereal_treeview_new(HWND hw_parent) { + win32_element_t *treeview; + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + WNDCLASS wc; + + wc.lpszClassName = EWC_TREE_PANE; + wc.lpfnWndProc = ethereal_treeview_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_WINDOWFRAME+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + g_assert(hw_parent != NULL); + + treeview = win32_element_new(NULL); + + treeview->h_wnd = CreateWindow( + EWC_TREE_PANE, + EWC_TREE_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + treeview); + + ShowWindow(treeview->h_wnd, SW_SHOW); + UpdateWindow(treeview->h_wnd); + + ethereal_treeview_resize(treeview->h_wnd); + + return treeview; +} + +void +ethereal_treeview_clear(win32_element_t *treeview) { + treeview_data_t *td; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + + SendMessage(td->tv_ctrl, WM_SETREDRAW, FALSE, 0); + TreeView_DeleteAllItems(td->tv_ctrl); + SendMessage(td->tv_ctrl, WM_SETREDRAW, TRUE, 0); +} + +static void +ethereal_treeview_add_node(proto_node *node, gpointer data) +{ + add_node_t info; + add_node_t *parent_info = (add_node_t *) data; + HTREEITEM parent; + field_info *fi = PITEM_FINFO(node); + TVITEM tv_node; + TVINSERTSTRUCT tv_is; + gchar label_str[ITEM_LABEL_LENGTH]; + gchar *label_ptr; + gboolean is_leaf, is_expanded; + + if (PROTO_ITEM_IS_HIDDEN(node)) + return; + + /* was a free format label produced? */ + if (fi->rep) { + label_ptr = fi->rep->representation; + } else { /* no, make a generic label */ + label_ptr = label_str; + proto_item_fill_label(fi, label_str); + } + + if (node->first_child != NULL) { + is_leaf = FALSE; + g_assert(fi->tree_type >= 0 && fi->tree_type < num_tree_types); + if (tree_is_expanded[fi->tree_type]) { + is_expanded = TRUE; + } else { + is_expanded = FALSE; + } + } else { + is_leaf = TRUE; + is_expanded = FALSE; + } + + if(PROTO_ITEM_IS_GENERATED(node)) { + label_ptr = g_strdup_printf("[%s]", label_ptr); + } + + info.tv_ctrl = parent_info->tv_ctrl; + ZeroMemory(&tv_node, sizeof(tv_node)); + ZeroMemory(&tv_is, sizeof(tv_is)); + + /* Load our node data */ + tv_node.mask = TVIF_TEXT | TVIF_PARAM; + tv_node.pszText = label_ptr; + tv_node.cchTextMax = lstrlen(label_ptr); + tv_node.lParam = (LPARAM) fi; + + /* Prep the node for insertion */ + tv_is.hParent = parent_info->node; + tv_is.hInsertAfter = TVI_LAST; + tv_is.item = tv_node; + + /* Insert the node */ + parent = TreeView_InsertItem(info.tv_ctrl, &tv_is); + + if(PROTO_ITEM_IS_GENERATED(node)) { + g_free(label_ptr); + } + + if (!is_leaf) { /* Our node contains more items to add. */ + info.node = parent; + proto_tree_children_foreach(node, ethereal_treeview_add_node, &info); + + if (is_expanded) { + ZeroMemory(&tv_node, sizeof(tv_node)); + tv_node.mask = TVIF_STATE; + tv_node.state = TVIS_EXPANDED; + tv_node.stateMask = TVIS_EXPANDED; + TreeView_SetItem(info.tv_ctrl, info.node); + } + } +} + +void +ethereal_treeview_draw(win32_element_t *treeview, proto_tree *tree, win32_element_t *byteview) { + treeview_data_t *td; + add_node_t node_data; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + td->byteview = byteview; + + ethereal_treeview_clear(treeview); + node_data.tv_ctrl = td->tv_ctrl; + node_data.node = NULL; + + proto_tree_children_foreach(tree, ethereal_treeview_add_node, &node_data); +} + +HTREEITEM +ethereal_treeview_find_finfo(win32_element_t *treeview, field_info *fi) { + treeview_data_t *td; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + + return ethereal_treeview_find_lparam(td->tv_ctrl, NULL, (LPARAM) fi); +} + +void +ethereal_treeview_select(win32_element_t *treeview, HTREEITEM hti) { + treeview_data_t *td; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + + TreeView_Select(td->tv_ctrl, hti, TVGN_FIRSTVISIBLE); + TreeView_Select(td->tv_ctrl, hti, TVGN_CARET); +} + +/* + * Private routines + */ +static void +ethereal_treeview_resize(HWND hw_treeview) { + win32_element_t *treeview = (win32_element_t *) GetWindowLong(hw_treeview, GWL_USERDATA); + treeview_data_t *td; + RECT pr; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + + GetClientRect(hw_treeview, &pr); + MoveWindow(td->tv_ctrl, pr.left, pr.top, pr.right - pr.left, + pr.bottom - pr.top, TRUE); +} + +static LRESULT CALLBACK +ethereal_treeview_wnd_proc(HWND hw_treeview, UINT msg, + WPARAM w_param, LPARAM l_param) { + win32_element_t *treeview; + treeview_data_t *td; + LPCREATESTRUCT cs = (LPCREATESTRUCT) l_param; + + switch (msg) { + case WM_CREATE: + /* Attach the treeview address to our HWND. */ + treeview = (win32_element_t *) cs->lpCreateParams; + g_assert(treeview != NULL); + treeview->h_wnd = hw_treeview; + SetWindowLong(hw_treeview, GWL_USERDATA, (LONG) treeview); + + td = g_malloc(sizeof(treeview_data_t)); + + td->tv_ctrl = CreateWindowEx( + WS_EX_CLIENTEDGE, + WC_TREEVIEW, + "", + WS_CHILD | WS_TABSTOP | WS_VISIBLE | + TVS_DISABLEDRAGDROP | TVS_FULLROWSELECT | TVS_HASBUTTONS | + TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS, + 0, 0, 0, 0, + hw_treeview, + (HMENU) ID_TREE_VIEW, + (HINSTANCE) GetWindowLong(hw_treeview, GWL_HINSTANCE), + NULL); + td->byteview = NULL; + win32_element_set_data(treeview, ETHEREAL_TREEVIEW_DATA, td); + break; + case WM_SIZE: + ethereal_treeview_resize (hw_treeview); + break; + case WM_NOTIFY: + return ethereal_treeview_notify(hw_treeview, l_param, &cfile); + break; + default: + return(DefWindowProc(hw_treeview, msg, w_param, l_param)); + } + return 0; +} + +static LRESULT +ethereal_treeview_notify(HWND hw_treeview, LPARAM l_param, capture_file *cfile) { + win32_element_t *treeview = (win32_element_t *) GetWindowLong(hw_treeview, GWL_USERDATA); + treeview_data_t *td; + LPNMHDR lpnmh = (LPNMHDR) l_param; + LPNMTREEVIEW tv_sel; + field_info *finfo; + const guint8 *byte_data; + guint byte_len; + + win32_element_assert(treeview); + td = (treeview_data_t *) win32_element_get_data(treeview, ETHEREAL_TREEVIEW_DATA); + + switch(lpnmh->code) { + case TVN_SELCHANGED: + /* Bah. For some reason, we crash if we select a + * packet, then click on a tree view label. Forcing + * the focus to the treeview window seems to fix this. + */ + SetFocus(td->tv_ctrl); + tv_sel = (LPNMTREEVIEW) l_param; + finfo = (field_info *) tv_sel->itemNew.lParam; + if (! finfo) return 0; + + set_notebook_page(td->byteview, finfo->ds_tvb); + + byte_data = get_byteview_data_and_length(td->byteview, &byte_len); + g_assert(byte_data != NULL); + + cfile->finfo_selected = finfo; + + packet_hex_print(td->byteview, byte_data, cfile->current_frame, + finfo, byte_len); + + // XXX - Set menus + // XXX - Push data to the statusbar + // XXX - Get our bv HWND and data ptr info + + break; + default: + break; + } + return 0; +} + +/* Find a TreeView item by its lParam value */ +/* XXX - We could eliminate this by adding a generic pointer to the + * proto_node or field_info structs, which we could use to store an + * HTREEITEM pointer. + */ +static HTREEITEM +ethereal_treeview_find_lparam(HWND tv_ctrl, HTREEITEM last_ti, LPARAM lp_data) { + TVITEM tvi; + HTREEITEM hti, ret; + + if (last_ti == NULL) { /* Start at the root */ + hti = TreeView_GetRoot(tv_ctrl); + if (hti == NULL) return NULL; + return ethereal_treeview_find_lparam(tv_ctrl, hti, lp_data); + } + + ZeroMemory(&tvi, sizeof(tvi)); + tvi.mask = TVIF_PARAM; + tvi.hItem = last_ti; + + if (TreeView_GetItem(tv_ctrl, &tvi)) { + if (tvi.lParam == lp_data) { + return tvi.hItem; + } + } + + hti = TreeView_GetChild(tv_ctrl, last_ti); + if (hti != NULL) { + ret = ethereal_treeview_find_lparam(tv_ctrl, hti, lp_data); + if (ret != NULL) return ret; + } + + hti = TreeView_GetNextSibling(tv_ctrl, last_ti); + if (hti != NULL) { + ret = ethereal_treeview_find_lparam(tv_ctrl, hti, lp_data); + if (ret != NULL) return ret; + } + + return NULL; +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/localelements/ethereal-treeview.h ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-treeview.h --- ethereal/xulender/win32-c-sdk/localelements/ethereal-treeview.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/localelements/ethereal-treeview.h 2004-07-09 08:18:55.000000000 -0500 @@ -0,0 +1,14 @@ +#ifndef __ETHEREAL_TREEVIEW_H__ +#define __ETHEREAL_TREEVIEW_H__ + +#define ID_TREE_VIEW 5001 + +win32_element_t * ethereal_treeview_new(HWND hw_parent); +void ethereal_treeview_clear(win32_element_t* treeview); +void ethereal_treeview_delete(HWND hw_treeview); +HTREEITEM ethereal_treeview_find_finfo(win32_element_t *treeview, field_info *fi); +void ethereal_treeview_select(win32_element_t *treeview, HTREEITEM hti); +void ethereal_treeview_show_tree(capture_file *cfile); +void ethereal_treeview_draw(win32_element_t *treeview, proto_tree *tree, win32_element_t *byteview); + +#endif /* ethereal-treeview.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/prefs-dlg.c ethereal-win32/xulender/win32-c-sdk/prefs-dlg.c --- ethereal/xulender/win32-c-sdk/prefs-dlg.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/prefs-dlg.c 2004-07-14 15:09:02.000000000 -0500 @@ -0,0 +1,1935 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include <pcap.h> +#include "pcap-util.h" + +#include <epan/filesystem.h> +#include "prefs.h" +#include "column.h" +#include "print.h" +#include "epan/resolv.h" +#include "prefs-int.h" +#include "capture-wpcap.h" +#include "simple_dialog.h" + +#include "win32-c-sdk.h" +#include "ethereal-win32.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#include "win32-color-filters.h" +#include "capture_combo_utils.h" + +#include "preferences-dialog.h" + +/* XXX - We should split this file into column_prefs.c, stream_prefs.c, etc. + * like GTK version. */ +static void gui_prefs_init(win32_element_t *prefs_dlg); +static void column_prefs_init(win32_element_t *prefs_dlg); +static void font_prefs_init(win32_element_t *prefs_dlg); +static void color_prefs_init(win32_element_t *prefs_dlg); +static void capture_prefs_init(win32_element_t *prefs_dlg); +static void printer_prefs_init(win32_element_t *prefs_dlg); +static void nameres_prefs_init(win32_element_t *prefs_dlg); +static void protocol_prefs_init(win32_element_t *prefs_dlg); +static int CALLBACK font_style_enum_proc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, + int font_type, LPARAM l_param); +static int CALLBACK font_size_enum_proc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, + int font_type, LPARAM l_param); +static void show_font_selection(); +static void set_sample_colors(); +static void prefs_main_fetch_all(gboolean *must_redissect); +static void prefs_main_apply_all(); +static void toggle_column_buttons(int cur_sel); +static void module_prefs_revert(module_t *module, gpointer user_data); + +typedef struct _module_data_t { + win32_element_t *tree; + win32_element_t *deck; +} module_data_t; + +typedef struct _menulist_val_map { + gchar *name; + gint *val; +} menulist_val_map; + +typedef struct _checkbox_val_map { + gchar *name; + gboolean *val; +} checkbox_val_map; + +typedef struct _radio_val_t { + gchar *name; + gint val; +} radio_val_t; + +typedef struct _textbox_val_map { + gchar *name; + gchar **val; +} textbox_val_map; + +typedef struct _spinner_val_map { + gchar *name; + gint *val; + gint low; + gint high; +} spinner_val_map; + +/* From gtk/stream_prefs.c */ +#define SAMPLE_MARKED_TEXT "Sample marked packet text\n" +#define SAMPLE_CLIENT_TEXT "Sample TCP stream client text\n" +#define SAMPLE_SERVER_TEXT "Sample TCP stream server text\n" +#define MFG_IDX 0 +#define MBG_IDX 1 +#define CFG_IDX 2 +#define CBG_IDX 3 +#define SFG_IDX 4 +#define SBG_IDX 5 +#define MAX_IDX 6 /* set this to the number of IDX values */ + +#define NAMRES_MAX_CONCURRENCY 100000 + +static color_t tcolors[MAX_IDX]; +static COLORREF cust_colors[16]; +static HFONT old_fixed_font = NULL; +static gboolean font_changed; +static e_prefs saved_prefs, tmp_prefs; + +static menulist_val_map gui_ml_map[] = { + { "prefs.gui_plist_sel_browse", &tmp_prefs.gui_plist_sel_browse }, + { "prefs.gui_ptree_sel_browse", &tmp_prefs.gui_ptree_sel_browse }, + { "prefs.gui_hex_dump_highlight_style", &tmp_prefs.gui_hex_dump_highlight_style }, + { "prefs.gui_toolbar_main_style", &tmp_prefs.gui_toolbar_main_style }, + { "prefs.filter_toolbar_show_in_statusbar", &tmp_prefs.filter_toolbar_show_in_statusbar }, + { "prefs.gui_console_open", &tmp_prefs.gui_console_open }, + { NULL, NULL } +}; + +static checkbox_val_map gui_cb_map[] = { + { "prefs.gui_geometry_save_position", &tmp_prefs.gui_geometry_save_position }, + { "prefs.gui_geometry_save_size", &tmp_prefs.gui_geometry_save_size }, + { "prefs.gui_geometry_save_maximized", &tmp_prefs.gui_geometry_save_maximized }, + { NULL, NULL } +}; + +static radio_val_t gui_fs_radio_vals[] = { + { "prefs.gui_fo_style_last_opened", FO_STYLE_LAST_OPENED, }, + { "prefs.gui_fo_style_specified", FO_STYLE_SPECIFIED, }, + { NULL, 0 } +}; + +static textbox_val_map gui_tb_map[] = { + { "prefs.gui_fileopen_dir", &tmp_prefs.gui_fileopen_dir }, + { NULL, NULL } +}; + +static spinner_val_map gui_sp_map[] = { + { "prefs.gui_recent_files_count_max", &tmp_prefs.gui_recent_files_count_max, 0, 128 }, + { NULL, NULL, 0, 0} +}; + +static checkbox_val_map capture_cb_map[] = { + { "prefs.capture_prom_mode", &tmp_prefs.capture_prom_mode }, + { "prefs.capture_real_time", &tmp_prefs.capture_real_time }, + { "prefs.capture_auto_scroll", &tmp_prefs.capture_auto_scroll }, + { "prefs.capture_show_info", &tmp_prefs.capture_show_info }, + { NULL, NULL } +}; + +static radio_val_t print_format_radio_vals[] = { + { "prefs.pr_format_plain", PR_FMT_TEXT, }, + { "prefs.pr_format_ps", PR_FMT_PS, }, + { NULL, 0 } +}; + +static radio_val_t print_dest_radio_vals[] = { + { "prefs.pr_dest_printer", PR_DEST_CMD, }, + { "prefs.pr_dest_file", PR_DEST_FILE, }, + { NULL, 0 } +}; + + +/* Create the dialog (if needed), initialize its controls, and display it */ +void +prefs_dialog_init(HWND parent) { + HWND hw_prefs; + win32_element_t *prefs_dlg = win32_identifier_get_str("preferences-dialog"); + + if (! prefs_dlg) { + hw_prefs = preferences_dialog_dialog_create(parent); + prefs_dlg = (win32_element_t *) GetWindowLong(hw_prefs, GWL_USERDATA); + + copy_prefs(&saved_prefs, &prefs); + + /* XXX - We use tmp_prefs so that we can feed a const to the various + * gui_*_map structs above. Is there a way we can use "prefs" directly? + */ + copy_prefs(&tmp_prefs, &prefs); + + /* Load our prefs */ + gui_prefs_init(prefs_dlg); + column_prefs_init(prefs_dlg); + font_prefs_init(prefs_dlg); + color_prefs_init(prefs_dlg); + capture_prefs_init(prefs_dlg); + printer_prefs_init(prefs_dlg); + nameres_prefs_init(prefs_dlg); + protocol_prefs_init(prefs_dlg); + } else { + win32_element_assert(prefs_dlg); + hw_prefs = prefs_dlg->h_wnd; + } + win32_element_resize(prefs_dlg, -1, -1); + preferences_dialog_dialog_show(hw_prefs); +} + +/* Command sent by element type <button>, id "prefs-dialog.ok" */ +void +prefs_dialog_ok (win32_element_t *ok_el) { + win32_element_t *pd_el = win32_identifier_get_str("preferences-dialog"); + gboolean must_redissect = FALSE; + + prefs_main_fetch_all(&must_redissect); + + prefs_main_apply_all(); + + win32_element_assert(pd_el); + win32_element_destroy(pd_el, TRUE); + + if (must_redissect) { + redissect_packets(&cfile); + } +} + +/* Command sent by element type <button>, id "prefs-dialog.apply" */ +void +prefs_dialog_apply (win32_element_t *apply_el) { + gboolean must_redissect = FALSE; + + prefs_main_fetch_all(&must_redissect); + + prefs_main_apply_all(); + + if (must_redissect) { + /* Redissect all the packets, and re-evaluate the display filter. */ + redissect_packets(&cfile); + } +} + +/* Command sent by element type <button>, id "prefs-dialog.save" */ +void +prefs_dialog_save (win32_element_t *save_el) { + gboolean must_redissect = FALSE; + int err; + char *pf_dir_path, *pf_path; + + prefs_main_fetch_all(&must_redissect); + + /* Create the directory that holds personal configuration files, if + necessary. */ + if (create_persconffile_dir(&pf_dir_path) == -1) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't create directory\n\"%s\"\nfor preferences file: %s.", pf_dir_path, + strerror(errno)); + g_free(pf_dir_path); + } else { + /* Write the preferencs out. */ + err = write_prefs(&pf_path); + if (err != 0) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't open preferences file\n\"%s\": %s.", pf_path, + strerror(err)); + g_free(pf_path); + } + } + + /* Now apply those preferences. + XXX - should we do this? The user didn't click "OK" or "Apply". + However: + + 1) by saving the preferences they presumably indicate that they + like them; + + 2) the next time they fire Ethereal up, those preferences will + apply; + + 3) we'd have to buffer "must_redissect" so that if they do + "Apply" after this, we know we have to redissect; + + 4) we did apply the protocol preferences, at least, in the past. */ + prefs_main_apply_all(); + + if (must_redissect) { + /* Redissect all the packets, and re-evaluate the display filter. */ + redissect_packets(&cfile); + } +} + +/* Command sent by element type <button>, id "prefs-dialog.cancel" */ +void +prefs_dialog_cancel (win32_element_t *cancel_el) { + win32_element_t *pd_el = win32_identifier_get_str("preferences-dialog"); + gboolean must_redissect = FALSE; + + win32_element_assert(pd_el); + + /* Free up the current preferences and copy the saved preferences to the + current preferences. */ + free_prefs(&prefs); + copy_prefs(&prefs, &saved_prefs); + + /* Now revert the registered preferences. */ + prefs_modules_foreach(module_prefs_revert, &must_redissect); + + /* Now apply the reverted-to preferences. */ + prefs_main_apply_all(); + + win32_element_destroy(pd_el, TRUE); + + if (must_redissect) { + /* Redissect all the packets, and re-evaluate the display filter. */ + redissect_packets(&cfile); + } +} + +#define PREFS_DLG_ID_PREFIX "prefs-dialog." +void +prefs_tree_select (win32_element_t *tree_el, NMTREEVIEW *tv_sel) { + tree_row *row; + gchar *panel_id; + win32_element_t *deck, *panel; + gint offset = strlen(PREFS_DLG_ID_PREFIX); + + win32_element_assert(tree_el); + + deck = win32_identifier_get_str("prefs-dialog.deck"); + win32_element_assert(deck); + + row = (tree_row *) tv_sel->itemNew.lParam; + g_assert(row != NULL); + g_assert(row->id != NULL); + panel_id = g_strdup(row->id); + g_assert(strlen(panel_id) > offset + strlen("tree.")); + + memcpy(panel_id + offset, "deck", 4); + panel = win32_identifier_get_str(panel_id); + + if (panel != NULL) { + win32_deck_set_selectedpanel(deck, panel); + } + g_free(panel_id); +} + +void +prefs_col_list_select(win32_element_t *listbox, LPNMLISTVIEW nmlv) { + win32_element_t *col_tb, *col_ml; + int sel_item; + fmt_data *cfmt; + gboolean enabled = FALSE; + + col_tb = win32_identifier_get_str("prefs-dialog.cols.title"); + win32_element_assert(col_tb); + + col_ml = win32_identifier_get_str("prefs-dialog.cols.format"); + win32_element_assert(col_ml); + + sel_item = ListView_GetNextItem(nmlv->hdr.hwndFrom, -1, LVNI_SELECTED); + toggle_column_buttons(sel_item); + + cfmt = (fmt_data *) win32_listbox_get_row_data(listbox, sel_item); + if (sel_item >= 0 && nmlv->uNewState & LVIS_SELECTED && cfmt != NULL) { + win32_textbox_set_text(col_tb, cfmt->title); + sel_item = get_column_format_from_str(cfmt->fmt); + win32_menulist_set_selection(col_ml, sel_item); + enabled = TRUE; + } +} + +void +prefs_font_name_list_select(win32_element_t *listbox, LPNMLISTVIEW nmlv) { + win32_element_t *name_tb, *style_lb, *size_lb; + int sel_name, sel_style, sel_size, row = 0; + LVITEM item; + gchar font_name[LF_FULLFACESIZE]; + LOGFONT lfinfo; + HDC hdc; + gpointer row_data; + + name_tb = win32_identifier_get_str("prefs-dialog.font.tb.name"); + win32_element_assert(name_tb); + + style_lb = win32_identifier_get_str("prefs-dialog.font.lb.style"); + win32_element_assert(style_lb); + + size_lb = win32_identifier_get_str("prefs-dialog.font.lb.size"); + win32_element_assert(size_lb); + + sel_name = ListView_GetNextItem(nmlv->hdr.hwndFrom, -1, LVNI_SELECTED); + sel_style = win32_listbox_get_selected(style_lb); + sel_size = win32_listbox_get_selected(size_lb); + if (sel_name >= 0 && nmlv->uNewState & LVIS_SELECTED) { + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_TEXT; + item.iItem = sel_name; + item.iSubItem = 0; + item.pszText = font_name; + item.cchTextMax = LF_FULLFACESIZE; + ListView_GetItem(nmlv->hdr.hwndFrom, &item); + win32_textbox_set_text(name_tb, font_name); + + ZeroMemory(&lfinfo, sizeof(lfinfo)); + lfinfo.lfCharSet = ANSI_CHARSET; /* XXX - Do we need to be this restrictive? */ + lstrcpyn(lfinfo.lfFaceName, font_name, LF_FACESIZE); + lfinfo.lfPitchAndFamily = FIXED_PITCH | FF_MODERN; + + if (style_lb != NULL) { + for (row = 0; row < win32_listbox_get_row_count(style_lb); row++) { + row_data = win32_listbox_get_row_data(style_lb, row); + if (row_data) { + g_free(row_data); + } + } + win32_listbox_clear(style_lb); + } + if (size_lb != NULL) { + win32_listbox_clear(size_lb); + } + hdc = GetDC(listbox->h_wnd); + EnumFontFamiliesEx(hdc, &lfinfo, (FONTENUMPROC) font_style_enum_proc, + (LONG) style_lb, 0); + EnumFontFamiliesEx(hdc, &lfinfo, (FONTENUMPROC) font_size_enum_proc, + (LONG) size_lb, 0); + ReleaseDC(listbox->h_wnd, hdc); + } else { + win32_textbox_set_text(name_tb, ""); + } + win32_listbox_set_selected(style_lb, sel_style); + win32_listbox_set_selected(size_lb, sel_size); + + show_font_selection(); + font_changed = TRUE; +} + +void +prefs_font_style_list_select(win32_element_t *listbox, LPNMLISTVIEW nmlv) { + win32_element_t *style_tb = win32_identifier_get_str("prefs-dialog.font.tb.style"); + int sel_item; + LVITEM item; + gchar font_style[LF_FACESIZE]; + + win32_element_assert(style_tb); + + sel_item = ListView_GetNextItem(nmlv->hdr.hwndFrom, -1, LVNI_SELECTED); + if (sel_item >= 0 && nmlv->uNewState & LVIS_SELECTED) { + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_TEXT; + item.iItem = sel_item; + item.iSubItem = 0; + item.pszText = font_style; + item.cchTextMax = LF_FACESIZE; + ListView_GetItem(nmlv->hdr.hwndFrom, &item); + win32_textbox_set_text(style_tb, font_style); + } else { + win32_textbox_set_text(style_tb, ""); + } + + show_font_selection(); + font_changed = TRUE; +} + +void +prefs_font_size_list_select(win32_element_t *listbox, LPNMLISTVIEW nmlv) { + win32_element_t *size_tb = win32_identifier_get_str("prefs-dialog.font.tb.size"); + int sel_item; + LVITEM item; + gchar font_size[LF_FACESIZE]; + + win32_element_assert(size_tb); + + sel_item = ListView_GetNextItem(nmlv->hdr.hwndFrom, -1, LVNI_SELECTED); + if (sel_item >= 0 && nmlv->uNewState & LVIS_SELECTED) { + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_TEXT; + item.iItem = sel_item; + item.iSubItem = 0; + item.pszText = font_size; + item.cchTextMax = LF_FACESIZE; + ListView_GetItem(nmlv->hdr.hwndFrom, &item); + win32_textbox_set_text(size_tb, font_size); + } else { + win32_textbox_set_text(size_tb, ""); + } + + show_font_selection(); + font_changed = TRUE; +} + +/* Command sent by element type <button>, id "prefs-dialog.color.set" */ +void +prefs_dialog_set_color (win32_element_t *set_el) { + win32_element_t *color_ml; + CHOOSECOLOR cc; + int cur_sel; + + color_ml = win32_identifier_get_str("prefs-dialog.color.select"); + win32_element_assert(color_ml); + + cur_sel = win32_menulist_get_selection(color_ml); + g_assert(cur_sel >= 0 && cur_sel < MAX_IDX); + + ZeroMemory(&cc, sizeof(cc)); + cc.lStructSize = sizeof(cc); + cc.Flags = CC_FULLOPEN | CC_RGBINIT; + cc.rgbResult = COLOR_T2COLORREF(&tcolors[cur_sel]); + cc.lpCustColors = cust_colors; + if (ChooseColor(&cc)) { + colorref2color_t(cc.rgbResult, &tcolors[cur_sel]); + set_sample_colors(); + } +} + +/* Command sent by element type <radio>, id "prefs.gui_fo_style_last_opened" */ +/* Command sent by element type <radio>, id "prefs.gui_fo_style_specified" */ +void +prefs_fileopen_style (win32_element_t *rd_el) { + win32_element_t *cur_el, *text_el; + + cur_el = win32_identifier_get_str("prefs.gui_fo_style_specified"); + win32_element_assert(cur_el); + + text_el = win32_identifier_get_str("prefs.gui_fileopen_dir"); + win32_element_assert(text_el); + + if (win32_radio_get_state(cur_el)) { + win32_element_set_enabled(text_el, TRUE); + } else { + win32_element_set_enabled(text_el, FALSE); + } +} + +/* Command sent by element type <button>, id "prefs-dialog.cols.new" */ +void prefs_dialog_new_column (win32_element_t *button) { + win32_element_t *listbox, *textbox, *menulist; + fmt_data *cfmt; + gchar *title = "New Column"; + gint row; + + win32_element_assert(button); + + + listbox = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(listbox); + + textbox = win32_identifier_get_str("prefs-dialog.cols.title"); + win32_element_assert(textbox); + + menulist = win32_identifier_get_str("prefs-dialog.cols.format"); + win32_element_assert(menulist); + + cfmt = g_malloc(sizeof(fmt_data)); + cfmt->title = g_strdup(title); + cfmt->fmt = g_strdup(col_format_to_string(0)); + prefs.col_list = g_list_append(prefs.col_list, cfmt); + + row = win32_listbox_add_item(listbox, -1, NULL, ""); + win32_listbox_add_cell(listbox, NULL, ""); + win32_listbox_set_row_data(listbox, row, cfmt); + win32_listbox_set_selected(listbox, row); + + win32_textbox_set_text(textbox, cfmt->title); + win32_menulist_set_selection(menulist, 0); +} + +/* Command sent by element type <button>, id "prefs-dialog.cols.delete" */ +void prefs_dialog_delete_column (win32_element_t *button) { + win32_element_t *listbox; + int row; + fmt_data *cfmt; + + listbox = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(listbox); + + win32_element_assert(button); + + row = win32_listbox_get_selected(listbox); + if (row < 0 || row >= win32_listbox_get_row_count(listbox)) { + return; + } + cfmt = (fmt_data *) win32_listbox_get_row_data(listbox, row); + + prefs.col_list = g_list_remove(prefs.col_list, cfmt); + g_free(cfmt->title); + g_free(cfmt->fmt); + g_free(cfmt); + win32_listbox_delete_item(listbox, row); +} + +/* Command sent by element type <button>, id "prefs-dialog.cols.up" */ +/* Command sent by element type <button>, id "prefs-dialog.cols.down" */ +void prefs_dialog_move_column (win32_element_t *button) { + win32_element_t *listbox, *textbox, *menulist; + int row, inc = 1; + fmt_data *cfmt; + + listbox = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(listbox); + + textbox = win32_identifier_get_str("prefs-dialog.cols.title"); + win32_element_assert(textbox); + + menulist = win32_identifier_get_str("prefs-dialog.cols.format"); + win32_element_assert(menulist); + + win32_element_assert(button); + if (button->id && strcmp(button->id, "prefs-dialog.cols.up") == 0) { + inc = -1; + } + + row = win32_listbox_get_selected(listbox); + if (row < 0 || row >= win32_listbox_get_row_count(listbox)) { + return; + } + if (row < 1 && inc == -1) { + return; + } + if (row >= win32_listbox_get_row_count(listbox) - 1 && inc == 1) { + return; + } + cfmt = (fmt_data *) win32_listbox_get_row_data(listbox, row); + + prefs.col_list = g_list_remove(prefs.col_list, cfmt); + prefs.col_list = g_list_insert(prefs.col_list, cfmt, row + inc); + win32_listbox_delete_item(listbox, row); + row += inc; + win32_listbox_add_item(listbox, row, NULL, ""); + win32_listbox_add_cell(listbox, NULL, ""); + win32_listbox_set_row_data(listbox, row, cfmt); + win32_listbox_set_selected(listbox, row); + + win32_textbox_set_text(textbox, cfmt->title); + win32_menulist_set_selection(menulist, 0); +} + +/* Command sent by element type <textbox>, id "prefs-dialog.cols.title" */ +void +prefs_dialog_set_column_title (win32_element_t *textbox) { + win32_element_t *listbox; + gchar *title; + int row; + fmt_data *cfmt; + + listbox = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(listbox); + + win32_element_assert(textbox); + + row = win32_listbox_get_selected(listbox); + if (row < 0 || row >= win32_listbox_get_row_count(listbox)) { + return; + } + cfmt = (fmt_data *) win32_listbox_get_row_data(listbox, row); + title = win32_textbox_get_text(textbox); + + win32_listbox_set_text(listbox, row, 0, title); + g_free(cfmt->title); + cfmt->title = g_strdup(title); +} + +/* Command sent by element type <menulist>, id "prefs-dialog.cols.format" */ +void prefs_dialog_set_column_format (win32_element_t *menulist) { + win32_element_t *listbox; + gchar *format; + int row, sel; + fmt_data *cfmt; + + + listbox = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(listbox); + + win32_element_assert(menulist); + + row = win32_listbox_get_selected(listbox); + if (row < 0 || row >= win32_listbox_get_row_count(listbox)) { + return; + } + cfmt = (fmt_data *) win32_listbox_get_row_data(listbox, row); + sel = win32_menulist_get_selection(menulist); + g_free(cfmt->fmt); + cfmt->fmt = g_strdup(col_format_to_string(sel)); + format = col_format_desc(sel); + win32_listbox_set_text(listbox, row, 1, format); +} + +BOOL CALLBACK +preferences_dialog_dlg_proc(HWND hw_prefs, UINT msg, WPARAM w_param, LPARAM l_param) +{ + win32_element_t *dlg_box; + + switch( msg ) { + case WM_INITDIALOG: + preferences_dialog_handle_wm_initdialog(hw_prefs); + dlg_box = (win32_element_t *) GetWindowLong(hw_prefs, GWL_USERDATA); + win32_element_assert (dlg_box); + win32_element_resize(dlg_box, -1, -1); + return 0; + break; + case WM_COMMAND: + g_warning("w_param: %04x", LOWORD(w_param)); + return 0; + break; + case WM_CLOSE: + prefs_dialog_cancel(NULL); + return 1; + break; + default: + return 0; + } + return 0; +} + +/* + * Private routines + */ + +static void +gui_prefs_fetch() { + win32_element_t *cur_el; + int i; + + /* Fetch our menulist values */ + i = 0; + while (gui_ml_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_ml_map[i].name); + win32_element_assert(cur_el); + *gui_ml_map[i].val = win32_menulist_get_selection(cur_el); + i++; + } + + /* Fetch our checkbox values */ + i = 0; + while (gui_cb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_cb_map[i].name); + win32_element_assert(cur_el); + *gui_cb_map[i].val = win32_checkbox_get_state(cur_el); + i++; + } + + /* Fetch our textbox values */ + i = 0; + while (gui_tb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_tb_map[i].name); + win32_element_assert(cur_el); + if (*gui_tb_map[i].val != NULL) { + g_free(*gui_tb_map[i].val); + } + *gui_tb_map[i].val = win32_textbox_get_text(cur_el); + i++; + } + + /* Fetch our spinner values */ + i = 0; + while (gui_sp_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_sp_map[i].name); + win32_element_assert(cur_el); + *gui_sp_map[i].val = ethereal_spinner_get_pos(cur_el); + i++; + } + + /* File open radio buttons / file open style */ + i = 0; + while (gui_fs_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_fs_radio_vals[i].name); + if (win32_radio_get_state(cur_el)) { + prefs.gui_fileopen_style = gui_fs_radio_vals[i].val; + } + i++; + } +} + +static void +font_prefs_fetch() { + win32_element_t *style_lb, *size_lb; + LOGFONT *lfinfo; + int row, pointsz; + HDC hdc; + gchar *font_style; + + style_lb = win32_identifier_get_str("prefs-dialog.font.lb.style"); + win32_element_assert(style_lb); + + size_lb = win32_identifier_get_str("prefs-dialog.font.lb.size"); + win32_element_assert(size_lb); + + row = win32_listbox_get_selected(style_lb); + if (row < 0 || row >= win32_listbox_get_row_count(style_lb)) { + return; + } + lfinfo = win32_listbox_get_row_data(style_lb, row); + font_style = win32_listbox_get_text(style_lb, row, 0); + if (font_style == NULL) { + return; + } + + row = win32_listbox_get_selected(size_lb); + if (row < 0 || row >= win32_listbox_get_row_count(size_lb)) { + return; + } + pointsz = (int) win32_listbox_get_row_data(size_lb, row); + + hdc = GetDC(size_lb->h_wnd); + lfinfo->lfHeight = - MulDiv(pointsz, GetDeviceCaps(hdc, LOGPIXELSY), 72); + ReleaseDC(size_lb->h_wnd, hdc); + old_fixed_font = g_fixed_font; + g_fixed_font = CreateFontIndirect(lfinfo); + + g_free(prefs.gui_win32_font_name); + g_free(prefs.gui_win32_font_style); + prefs.gui_win32_font_name = g_strdup(lfinfo->lfFaceName); + prefs.gui_win32_font_style = g_strdup(font_style); + prefs.gui_win32_font_size = pointsz; +} + +static void +column_prefs_fetch() { + /* XXX - Column prefs are changed by the new/delete/up/down callbacks, + * just as they are in the GTK+ code. Should they be changed here instead? + */ +} + +static void +stream_prefs_fetch() { + CopyMemory(&prefs.gui_marked_fg, &tcolors[MFG_IDX], sizeof(color_t)); + CopyMemory(&prefs.gui_marked_bg, &tcolors[MBG_IDX], sizeof(color_t)); + CopyMemory(&prefs.st_client_fg, &tcolors[CFG_IDX], sizeof(color_t)); + CopyMemory(&prefs.st_client_bg, &tcolors[CBG_IDX], sizeof(color_t)); + CopyMemory(&prefs.st_server_fg, &tcolors[SFG_IDX], sizeof(color_t)); + CopyMemory(&prefs.st_server_bg, &tcolors[SBG_IDX], sizeof(color_t)); +} + +static void +capture_prefs_fetch() { + win32_element_t *iflist_ml, *cur_el; + gchar *if_text; + int sel_item, i; + + iflist_ml = win32_identifier_get_str("prefs-dialog.capture.iflist"); + win32_element_assert(iflist_ml); + + /* Fetch the capture device */ + if (prefs.capture_device != NULL) { + g_free(prefs.capture_device); + prefs.capture_device = NULL; + } + + sel_item = win32_menulist_get_selection(iflist_ml); + if_text = win32_menulist_get_string(iflist_ml, sel_item); + if (if_text != NULL) { + prefs.capture_device = if_text; + } + + /* Fetch in our checkbox values */ + i = 0; + while (capture_cb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(capture_cb_map[i].name); + win32_element_assert(cur_el); + *capture_cb_map[i].val = win32_checkbox_get_state(cur_el); + i++; + } + /* ...then invert show_info */ + tmp_prefs.capture_show_info = ! tmp_prefs.capture_show_info; +} + +static void +printer_prefs_fetch () { + win32_element_t *cur_el; + int i; + + /* File open radio buttons / file open style */ + i = 0; + while (gui_fs_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_fs_radio_vals[i].name); + if (win32_radio_get_state(cur_el)) { + prefs.gui_fileopen_style = gui_fs_radio_vals[i].val; + } + i++; + } + + + /* Print format radio buttons */ + i = 0; + while (print_format_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(print_format_radio_vals[i].name); + if (win32_radio_get_state(cur_el)) { + prefs.pr_format = print_format_radio_vals[i].val; + } + i++; + } + + /* Print destination radio buttons */ + i = 0; + while (print_dest_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(print_dest_radio_vals[i].name); + if (win32_radio_get_state(cur_el)) { + prefs.pr_dest = print_dest_radio_vals[i].val; + } + i++; + } + + cur_el = win32_identifier_get_str("prefs.pr_file"); + win32_element_assert(cur_el); + + if (prefs.pr_file != NULL) { + g_free(prefs.pr_file); + prefs.pr_file = NULL; + } + prefs.pr_file = g_strdup(win32_textbox_get_text(cur_el)); +} + +static void +nameres_prefs_fetch() { + win32_element_t *cur_el; + + prefs.name_resolve = RESOLV_NONE; + /* Fetch our checkbox values */ + cur_el = win32_identifier_get_str("prefs.name_resolve_mac"); + win32_element_assert(cur_el); + if (win32_checkbox_get_state(cur_el)) + prefs.name_resolve |= RESOLV_MAC; + + cur_el = win32_identifier_get_str("prefs.name_resolve_network"); + win32_element_assert(cur_el); + if (win32_checkbox_get_state(cur_el)) + prefs.name_resolve |= RESOLV_NETWORK; + + cur_el = win32_identifier_get_str("prefs.name_resolve_transport"); + win32_element_assert(cur_el); + if (win32_checkbox_get_state(cur_el)) + prefs.name_resolve |= RESOLV_TRANSPORT; + + cur_el = win32_identifier_get_str("prefs.name_resolve_concurrent"); + win32_element_assert(cur_el); + if (win32_checkbox_get_state(cur_el)) + prefs.name_resolve |= RESOLV_CONCURRENT; + + /* Fetch the spinbutton value */ + cur_el = win32_identifier_get_str("prefs.name_resolve_concurrency"); + win32_element_assert(cur_el); + prefs.name_resolve_concurrency = ethereal_spinner_get_pos(cur_el); +} + +gint +fetch_preference_radio_buttons_val(GSList *rb_group, const enum_val_t *enumvals) { + win32_element_t *radio; + const enum_val_t *enum_valp; + GSList *rb_entry = rb_group; + + for (enum_valp = enumvals; enum_valp->name != NULL; enum_valp++) { + radio = (win32_element_t *) rb_entry->data; + win32_element_assert(radio); + if (win32_radio_get_state(radio)) { + break; + } + rb_entry = g_slist_next(rb_entry); + } + + return enum_valp->value; +} + +static guint +pref_fetch(pref_t *pref, gpointer user_data) +{ + win32_element_t *cur_el = (win32_element_t *) pref->control; + gchar *str_val; + char *p; + guint uval; + gboolean bval; + gint enumval, i; + gboolean *pref_changed_p = user_data; + + /* Fetch the value of the preference, and set the appropriate variable + to it. */ + switch (pref->type) { + + case PREF_UINT: + win32_element_assert(cur_el); + str_val = win32_textbox_get_text(cur_el); + uval = strtoul(str_val, &p, pref->info.base); +#if 0 + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ +#endif + if (*pref->varp.uint != uval) { + *pref_changed_p = TRUE; + *pref->varp.uint = uval; + } + g_free(str_val); + break; + + case PREF_BOOL: + win32_element_assert(cur_el); + bval = win32_checkbox_get_state(cur_el); + if (*pref->varp.boolp != bval) { + *pref_changed_p = TRUE; + *pref->varp.boolp = bval; + } + break; + + case PREF_ENUM: + if (pref->info.enum_info.radio_buttons) { + enumval = fetch_preference_radio_buttons_val((GSList *) pref->control, + pref->info.enum_info.enumvals); + } else { + win32_element_assert(cur_el); + i = win32_menulist_get_selection(cur_el); + enumval = pref->info.enum_info.enumvals[i].value; + } + + if (*pref->varp.enump != enumval) { + *pref_changed_p = TRUE; + *pref->varp.enump = enumval; + } + break; + + case PREF_STRING: + win32_element_assert(cur_el); + str_val = win32_textbox_get_text(cur_el); + if (strcmp(*pref->varp.string, str_val) != 0) { + *pref_changed_p = TRUE; + g_free(*pref->varp.string); + *pref->varp.string = str_val; + } + break; + + case PREF_OBSOLETE: + g_assert_not_reached(); + break; + } + return 0; +} + +static void +module_prefs_fetch(module_t *module, gpointer user_data) { + gboolean *must_redissect_p = user_data; + + /* For all preferences in this module, fetch its value from this + module's notebook page. Find out whether any of them changed. */ + module->prefs_changed = FALSE; /* assume none of them changed */ + prefs_pref_foreach(module, pref_fetch, &module->prefs_changed); + + /* If any of them changed, indicate that we must redissect and refilter + the current capture (if we have one), as the preference change + could cause packets to be dissected differently. */ + if (module->prefs_changed) + *must_redissect_p = TRUE; +} + +/* fetch all pref values from all pages */ +static void +prefs_main_fetch_all(gboolean *must_redissect) +{ + /* Fetch the preferences (i.e., make sure all the values set in all of + the preferences panes have been copied to "prefs" and the registered + preferences). */ + gui_prefs_fetch(); +// layout_prefs_fetch(); + column_prefs_fetch(); + font_prefs_fetch(); + stream_prefs_fetch(); + +#ifdef HAVE_LIBPCAP + /* Is WPcap loaded? */ + if (has_wpcap) { + capture_prefs_fetch(); + } +#endif /* HAVE_LIBPCAP */ + printer_prefs_fetch(); + nameres_prefs_fetch(); + + prefs_modules_foreach(module_prefs_fetch, must_redissect); + + copy_prefs(&prefs, &tmp_prefs); +} + +static void +gui_prefs_apply() { + + /* user immediately wants to see a console */ + if (prefs.gui_console_open == console_open_always) { +// create_console(); + } + + if (font_changed) { + font_apply(); + } + +// redraw_hex_dump_all(); + + /* Redraw the help window(s). */ +// supported_redraw(); +// help_redraw(); + + /* XXX: redraw the toolbar only, if style changed */ +// toolbar_redraw_all(); + +// set_scrollbar_placement_all(); +// set_plist_sel_browse(prefs.gui_plist_sel_browse); +// set_ptree_sel_browse_all(prefs.gui_ptree_sel_browse); +// set_tree_styles_all(); +// main_widgets_rearrange(); + +} + +static void +column_prefs_apply() { +} + +void +stream_prefs_apply() +{ +// follow_redraw_all(); + +// update_marked_frames(); +} + +static void +capture_prefs_apply() { +} + +static void +printer_prefs_apply() { +} + +static void +nameres_prefs_apply() +{ + /* + * XXX - force a regeneration of the protocol list if this has + * changed? + */ + g_resolv_flags = prefs.name_resolve; +// menu_name_resolution_changed(); +} + +/* apply all pref values to the real world */ +static void +prefs_main_apply_all() +{ + /* Now apply those preferences. */ + gui_prefs_apply(); +// layout_prefs_apply(); + column_prefs_apply(); + stream_prefs_apply(); + +#ifdef HAVE_LIBPCAP + /* Is WPcap loaded? */ + if (has_wpcap) { + capture_prefs_apply(); + } +#endif /* HAVE_LIBPCAP */ + printer_prefs_apply(); + nameres_prefs_apply(); + + prefs_apply_all(); +} + +static void +gui_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *cur_el; + int i; + + /* Fill in our menulist values */ + i = 0; + while (gui_ml_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_ml_map[i].name); + win32_element_assert(cur_el); + win32_menulist_set_selection(cur_el, *gui_ml_map[i].val); + i++; + } + + /* Fill in our checkbox values */ + i = 0; + while (gui_cb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_cb_map[i].name); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, *gui_cb_map[i].val); + i++; + } + + /* Fill in our textbox values */ + i = 0; + while (gui_tb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_tb_map[i].name); + win32_element_assert(cur_el); + if (*gui_tb_map[i].val != NULL) { + win32_textbox_set_text(cur_el, *gui_tb_map[i].val); + } + i++; + } + + /* Fill in our spinner values */ + i = 0; + while (gui_sp_map[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_sp_map[i].name); + win32_element_assert(cur_el); + ethereal_spinner_set_range(cur_el, gui_sp_map[i].low, gui_sp_map[i].high); + ethereal_spinner_set_pos(cur_el, *gui_sp_map[i].val); + i++; + } + + /* File open radio buttons */ + i = 0; + while (gui_fs_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(gui_fs_radio_vals[i].name); + if (gui_fs_radio_vals[i].val == prefs.gui_fileopen_style) { + win32_radio_set_state(cur_el, TRUE); + prefs_fileopen_style(cur_el); + } else { + win32_radio_set_state(cur_el, FALSE); + } + i++; + } +} + +static void +column_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *col_lb, *col_ml; + GList *clp = NULL; + fmt_data *cfmt; + gint row, i; + gchar *title, *descr; + + col_lb = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(col_lb); + + clp = g_list_first(prefs.col_list); + while (clp) { + cfmt = (fmt_data *) clp->data; + title = cfmt->title; + descr = col_format_desc(get_column_format_from_str(cfmt->fmt)); + row = win32_listbox_add_item(col_lb, -1, NULL, title); + win32_listbox_add_cell(col_lb, NULL, descr); + win32_listbox_set_row_data(col_lb, row, cfmt); + + clp = clp->next; + } + + col_ml = win32_identifier_get_str("prefs-dialog.cols.format"); + win32_element_assert(col_ml); + + for (i = 0; i < NUM_COL_FMTS; i++) { + win32_menulist_add(col_ml, col_format_desc(i), FALSE); + } +} + +static int CALLBACK +font_name_enum_proc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, + int font_type, LPARAM l_param) { + win32_element_t *name_lb = (win32_element_t *) l_param; + + if (name_lb == NULL) { + return 1; + } + /* + * Under Windows XP (and possibly other versions of Windows), Unicode + * fonts appear twice -- once with '@' at the beginning of lfFaceName + * and once with the bare name. + */ + if (!isalnum(lpelfe->elfLogFont.lfFaceName[0])) { + return 1; + } + + /* Filter out duplicates */ + if (win32_listbox_find_text(name_lb, 0, lpelfe->elfLogFont.lfFaceName) >= 0) { + return 1; + } + + /* Fixed pitched only. XXX - Is this too restrictive? */ + if (lpelfe->elfLogFont.lfPitchAndFamily & FIXED_PITCH) { + win32_listbox_add_item(name_lb, -1, NULL, lpelfe->elfFullName); + } + + return 1; +} + +static int CALLBACK +font_style_enum_proc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, + int font_type, LPARAM l_param) { + win32_element_t *style_lb = (win32_element_t *) l_param; + LOGFONT *lfdata; + int row; + + if (font_type & TRUETYPE_FONTTYPE) { + row = win32_listbox_add_item(style_lb, -1, NULL, lpelfe->elfStyle); + lfdata = g_memdup(&(lpelfe->elfLogFont), sizeof(LOGFONT)); + win32_listbox_set_row_data(style_lb, row, lfdata); + } else if (win32_listbox_get_row_count(style_lb) == 0) { + row = win32_listbox_add_item(style_lb, -1, NULL, "Regular"); + lfdata = g_memdup(&(lpelfe->elfLogFont), sizeof(LOGFONT)); + lfdata->lfWeight = FW_REGULAR; + lfdata->lfItalic = FALSE; + win32_listbox_set_row_data(style_lb, row, lfdata); + + row = win32_listbox_add_item(style_lb, -1, NULL, "Bold"); + lfdata = g_memdup(&(lpelfe->elfLogFont), sizeof(LOGFONT)); + lfdata->lfWeight = FW_BOLD; + lfdata->lfItalic = FALSE; + win32_listbox_set_row_data(style_lb, row, lfdata); + + row = win32_listbox_add_item(style_lb, -1, NULL, "Bold Italic"); + lfdata = g_memdup(&(lpelfe->elfLogFont), sizeof(LOGFONT)); + lfdata->lfWeight = FW_BOLD; + lfdata->lfItalic = TRUE; + win32_listbox_set_row_data(style_lb, row, lfdata); + + row = win32_listbox_add_item(style_lb, -1, NULL, "Italic"); + lfdata = g_memdup(&(lpelfe->elfLogFont), sizeof(LOGFONT)); + lfdata->lfWeight = FW_REGULAR; + lfdata->lfItalic = TRUE; + win32_listbox_set_row_data(style_lb, row, lfdata); + } + + return 1; +} + +static int CALLBACK +font_size_enum_proc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, + int font_type, LPARAM l_param) { + win32_element_t *size_lb = (win32_element_t *) l_param; + TEXTMETRIC *lptm = (TEXTMETRIC *) lpntme; + int i, row, rawsz, pointsz; + HDC hdc; + + static int tt_size[] = { 8, 9, 10, 11, 12, 14, 16, 18, 20, + 22, 24, 26, 28, 36 }; + gchar size_str[LF_FACESIZE]; + + if (font_type & TRUETYPE_FONTTYPE) { + if (win32_listbox_get_row_count(size_lb) == 0) { + for (i = 0; i < sizeof(tt_size) / sizeof(int); i++) { + g_snprintf(size_str, LF_FACESIZE, "%d", tt_size[i]); + row = win32_listbox_add_item(size_lb, -1, NULL, size_str); + win32_listbox_set_row_data(size_lb, row, (gpointer) tt_size[i]); + } + } + } else { + hdc = GetDC(size_lb->h_wnd); + rawsz = lptm->tmHeight - lptm->tmInternalLeading; + pointsz = MulDiv(rawsz, 72, GetDeviceCaps(hdc, LOGPIXELSY)); + ReleaseDC(size_lb->h_wnd, hdc); + g_snprintf(size_str, LF_FACESIZE, "%d", pointsz); + row = win32_listbox_add_item(size_lb, -1, NULL, size_str); + win32_listbox_set_row_data(size_lb, row, (gpointer) pointsz); + } + + return 1; +} + +static void +font_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *name_lb, *style_lb, *size_lb; + LOGFONT lfinfo; + HDC hdc; + gchar font_size[LF_FACESIZE]; + + name_lb = win32_identifier_get_str("prefs-dialog.font.lb.name"); + win32_element_assert(name_lb); + + style_lb = win32_identifier_get_str("prefs-dialog.font.lb.style"); + win32_element_assert(style_lb); + + size_lb = win32_identifier_get_str("prefs-dialog.font.lb.size"); + win32_element_assert(size_lb); + + ZeroMemory(&lfinfo, sizeof(lfinfo)); + lfinfo.lfCharSet = ANSI_CHARSET; /* XXX - Do we need to be this restrictive? */ + lfinfo.lfFaceName[0] = '\0'; + lfinfo.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE; + + hdc = GetDC(prefs_dlg->h_wnd); + EnumFontFamiliesEx(hdc, &lfinfo, (FONTENUMPROC) font_name_enum_proc, + (LONG) name_lb, 0); + ReleaseDC(prefs_dlg->h_wnd, hdc); + + g_snprintf(font_size, LF_FACESIZE, "%d", prefs.gui_win32_font_size); + win32_listbox_set_selected(name_lb, win32_listbox_find_text(name_lb, 0, prefs.gui_win32_font_name)); + win32_listbox_set_selected(style_lb, win32_listbox_find_text(style_lb, 0, prefs.gui_win32_font_style)); + win32_listbox_set_selected(size_lb, win32_listbox_find_text(size_lb, 0, font_size)); + + font_changed = FALSE; +} + +static void +show_font_selection() { + win32_element_t *style_lb, *size_lb, *sample_tb; + LOGFONT *lfinfo; + int row, pointsz; + HDC hdc; + HFONT hfont, old_font; + + style_lb = win32_identifier_get_str("prefs-dialog.font.lb.style"); + win32_element_assert(style_lb); + + size_lb = win32_identifier_get_str("prefs-dialog.font.lb.size"); + win32_element_assert(size_lb); + + sample_tb = win32_identifier_get_str("prefs-dialog.font.tb.sample"); + win32_element_assert(sample_tb); + + row = win32_listbox_get_selected(style_lb); + if (row < 0 || row >= win32_listbox_get_row_count(style_lb)) { + return; + } + + lfinfo = win32_listbox_get_row_data(style_lb, row); + + row = win32_listbox_get_selected(size_lb); + if (row < 0 || row >= win32_listbox_get_row_count(size_lb)) { + return; + } + + pointsz = (int) win32_listbox_get_row_data(size_lb, row); + + old_font = (HFONT) SendMessage(sample_tb->h_wnd, WM_GETFONT, 0, 0); + hdc = GetDC(size_lb->h_wnd); + lfinfo->lfHeight = - MulDiv(pointsz, GetDeviceCaps(hdc, LOGPIXELSY), 72); + hfont = CreateFontIndirect(lfinfo); + SelectObject(hdc, hfont); + ReleaseDC(size_lb->h_wnd, hdc); + + SendMessage(sample_tb->h_wnd, WM_SETFONT, (WPARAM) hfont, (LPARAM) TRUE); + DeleteObject(old_font); +} + +static void +set_sample_colors() { + win32_element_t *sample_tb; + CHARFORMAT2 char_fmt; + + sample_tb = win32_identifier_get_str("prefs-dialog.color.sample"); + win32_element_assert(sample_tb); + + ZeroMemory(&char_fmt, sizeof(char_fmt)); + char_fmt.cbSize = sizeof(char_fmt); + char_fmt.dwMask = CFM_COLOR | CFM_BACKCOLOR; + + win32_textbox_set_text(sample_tb, ""); + + char_fmt.crTextColor = COLOR_T2COLORREF(&tcolors[MFG_IDX]); + char_fmt.crBackColor = COLOR_T2COLORREF(&tcolors[MBG_IDX]); + win32_textbox_insert(sample_tb, SAMPLE_MARKED_TEXT, -1, + (CHARFORMAT *) &char_fmt); + + char_fmt.crTextColor = COLOR_T2COLORREF(&tcolors[CFG_IDX]); + char_fmt.crBackColor = COLOR_T2COLORREF(&tcolors[CBG_IDX]); + win32_textbox_insert(sample_tb, SAMPLE_CLIENT_TEXT, -1, + (CHARFORMAT *) &char_fmt); + + char_fmt.crTextColor = COLOR_T2COLORREF(&tcolors[SFG_IDX]); + char_fmt.crBackColor = COLOR_T2COLORREF(&tcolors[SBG_IDX]); + win32_textbox_insert(sample_tb, SAMPLE_SERVER_TEXT, -1, + (CHARFORMAT *) &char_fmt); +} + +static void +color_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *color_ml; + + color_ml = win32_identifier_get_str("prefs-dialog.color.select"); + win32_element_assert(color_ml); + + win32_menulist_set_selection(color_ml, 0); + + CopyMemory(&tcolors[MFG_IDX], &prefs.gui_marked_fg, sizeof(color_t)); + CopyMemory(&tcolors[MBG_IDX], &prefs.gui_marked_bg, sizeof(color_t)); + CopyMemory(&tcolors[CFG_IDX], &prefs.st_client_fg, sizeof(color_t)); + CopyMemory(&tcolors[CBG_IDX], &prefs.st_client_bg, sizeof(color_t)); + CopyMemory(&tcolors[SFG_IDX], &prefs.st_server_fg, sizeof(color_t)); + CopyMemory(&tcolors[SBG_IDX], &prefs.st_server_bg, sizeof(color_t)); + + set_sample_colors(); +} + +static void +capture_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *iflist_ml, *cur_el; + GList *if_list, *combo_list, *cl_item; + int err, idx = 0, i; + char err_str[PCAP_ERRBUF_SIZE]; + + iflist_ml = win32_identifier_get_str("prefs-dialog.capture.iflist"); + win32_element_assert(iflist_ml); + + if_list = get_interface_list(&err, err_str); + combo_list = build_capture_combo_list(if_list, FALSE); + free_interface_list(if_list); + + cl_item = g_list_first(combo_list); + while(cl_item != NULL) { + win32_menulist_add(iflist_ml, cl_item->data, FALSE); + cl_item = g_list_next(cl_item); + } + if (combo_list != NULL) { + free_capture_combo_list(combo_list); + } + if (prefs.capture_device != NULL) { + idx = win32_menulist_find_string(iflist_ml, prefs.capture_device); + if (idx < 0) { + idx = 0; + } + } + win32_menulist_set_selection(iflist_ml, idx); + /* XXX - This is a hack to get around the super-long interface names */ + iflist_ml->minwidth = 50; + + /* Fill in our checkbox values */ + i = 0; + /* First, invert show_info */ + tmp_prefs.capture_show_info = ! tmp_prefs.capture_show_info; + while (capture_cb_map[i].name != NULL) { + cur_el = win32_identifier_get_str(capture_cb_map[i].name); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, *capture_cb_map[i].val); + i++; + } +} + +static void +printer_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *cur_el; + int i; + + /* Print format radio buttons */ + i = 0; + while (print_format_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(print_format_radio_vals[i].name); + if (print_format_radio_vals[i].val == prefs.pr_format) { + win32_radio_set_state(cur_el, TRUE); + } else { + win32_radio_set_state(cur_el, FALSE); + } + i++; + } + + /* Print destination radio buttons */ + i = 0; + while (print_dest_radio_vals[i].name != NULL) { + cur_el = win32_identifier_get_str(print_dest_radio_vals[i].name); + if (print_dest_radio_vals[i].val == prefs.pr_dest) { + win32_radio_set_state(cur_el, TRUE); + } else { + win32_radio_set_state(cur_el, FALSE); + } + i++; + } + + cur_el = win32_identifier_get_str("prefs.pr_file"); + win32_element_assert(cur_el); + + if (prefs.pr_file != NULL) { + win32_textbox_set_text(cur_el, prefs.pr_file); + } +} + +static void +nameres_prefs_init(win32_element_t *prefs_dlg) { + win32_element_t *cur_el; + + /* Fill in our checkbox values */ + cur_el = win32_identifier_get_str("prefs.name_resolve_mac"); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, prefs.name_resolve & RESOLV_MAC); + + cur_el = win32_identifier_get_str("prefs.name_resolve_network"); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, prefs.name_resolve & RESOLV_NETWORK); + + cur_el = win32_identifier_get_str("prefs.name_resolve_transport"); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, prefs.name_resolve & RESOLV_TRANSPORT); + + cur_el = win32_identifier_get_str("prefs.name_resolve_concurrent"); + win32_element_assert(cur_el); + win32_checkbox_set_state(cur_el, prefs.name_resolve & RESOLV_CONCURRENT); + + cur_el = win32_identifier_get_str("prefs.name_resolve_concurrency"); + win32_element_assert(cur_el); + ethereal_spinner_set_range(cur_el, 0, NAMRES_MAX_CONCURRENCY); + ethereal_spinner_set_pos(cur_el, prefs.name_resolve_concurrency); +} + +/* XXX - Most of the protocol (module) prefs code was taken from + * gtk/prefs_dlg.c + */ + +win32_element_t * +create_preference_entry(win32_element_t *grid, const gchar *label_text, + const gchar *tooltip_text, char *value) { + win32_element_t *label, *entry; + + win32_element_assert(grid); + + win32_grid_add_row(grid, 0.0, 0); + + label = win32_description_new(grid->h_wnd, label_text); + label->text_align = CSS_TEXT_ALIGN_RIGHT; + win32_description_apply_styles(label); + win32_box_add(grid, label, -1); + + entry = win32_textbox_new(grid->h_wnd, FALSE); + win32_box_add(grid, entry, -1); + win32_textbox_set_text(entry, value); + + return entry; +} + +win32_element_t * +create_preference_check_button(win32_element_t *grid, const gchar *label_text, + const gchar *tooltip_text, gboolean active) { + win32_element_t *label, *checkbox; + + win32_element_assert(grid); + + win32_grid_add_row(grid, 0.0, 0); + + label = win32_description_new(grid->h_wnd, label_text); + label->text_align = CSS_TEXT_ALIGN_RIGHT; + win32_description_apply_styles(label); + win32_box_add(grid, label, -1); + + checkbox = win32_checkbox_new(grid->h_wnd, ""); + win32_box_add(grid, checkbox, -1); + win32_checkbox_set_state(checkbox, active); + + return checkbox; +} + +GSList * +create_preference_radio_buttons(win32_element_t *grid, const gchar *label_text, + const gchar *tooltip_text, const enum_val_t *enumvals, gint current_val) { + win32_element_t *label, *hbox, *radio; + const enum_val_t *enum_valp; + gboolean start_group = TRUE; + GSList *rb_group = NULL; + + win32_element_assert(grid); + + win32_grid_add_row(grid, 0.0, 0); + + label = win32_description_new(grid->h_wnd, label_text); + label->text_align = CSS_TEXT_ALIGN_RIGHT; + win32_description_apply_styles(label); + win32_box_add(grid, label, -1); + + hbox = win32_hbox_new(NULL, grid->h_wnd); + win32_box_add(grid, hbox, -1); + + for (enum_valp = enumvals; enum_valp->name != NULL; enum_valp++) { + radio = win32_radio_new(grid->h_wnd, enum_valp->description, start_group); + win32_box_add(hbox, radio, -1); + if (enum_valp->value == current_val) { + win32_radio_set_state(radio, TRUE); + } + start_group = FALSE; + rb_group = g_slist_append(rb_group, radio); + } + + return rb_group; +} + +win32_element_t * +create_preference_option_menu(win32_element_t *grid, const gchar *label_text, + const gchar *tooltip_text, const enum_val_t *enumvals, gint current_val) { + win32_element_t *label, *menulist; + const enum_val_t *enum_valp; + gboolean selected; + + win32_element_assert(grid); + + win32_grid_add_row(grid, 0.0, 0); + + label = win32_description_new(grid->h_wnd, label_text); + label->text_align = CSS_TEXT_ALIGN_RIGHT; + win32_description_apply_styles(label); + win32_box_add(grid, label, -1); + + menulist = win32_menulist_new(grid->h_wnd); + win32_box_add(grid, menulist, -1); + + for (enum_valp = enumvals; enum_valp->name != NULL; enum_valp++) { + selected = FALSE; + if (enum_valp->value == current_val) { + selected = TRUE; + } + win32_menulist_add(menulist, enum_valp->description, selected); + } + return menulist; +} + +#define UINT_STRLEN (10 + 1) +static guint +pref_show(pref_t *pref, gpointer user_data) { + win32_element_t *grid = user_data; + GString *label_string = g_string_new(pref->title); + char uint_str[UINT_STRLEN]; + + win32_element_assert(grid); + + g_string_append(label_string, ":"); + + switch (pref->type) { + case PREF_UINT: + pref->saved_val.uint = *pref->varp.uint; + + /* XXX - there are no uint spinbuttons, so we can't use a spinbutton. + Even more annoyingly, even if there were, GLib doesn't define + G_MAXUINT - but I think ANSI C may define UINT_MAX, so we could + use that. */ + switch (pref->info.base) { + + case 10: + g_snprintf(uint_str, UINT_STRLEN, "%u", pref->saved_val.uint); + break; + + case 8: + g_snprintf(uint_str, UINT_STRLEN, "%o", pref->saved_val.uint); + break; + + case 16: + g_snprintf(uint_str, UINT_STRLEN, "%x", pref->saved_val.uint); + break; + } + pref->control = create_preference_entry(grid, label_string->str, + pref->description, uint_str); + break; + + case PREF_BOOL: + pref->saved_val.boolval = *pref->varp.boolp; + pref->control = create_preference_check_button(grid, label_string->str, + pref->description, pref->saved_val.boolval); + break; + + case PREF_ENUM: + pref->saved_val.enumval = *pref->varp.enump; + if (pref->info.enum_info.radio_buttons) { + /* Show it as radio buttons. */ + pref->control = create_preference_radio_buttons(grid, + label_string->str, pref->description, + pref->info.enum_info.enumvals, + pref->saved_val.enumval); + } else { + /* Show it as an option menu. */ + pref->control = create_preference_option_menu(grid, + label_string->str, pref->description, + pref->info.enum_info.enumvals, + pref->saved_val.enumval); + } + break; + + case PREF_STRING: + if (pref->saved_val.string != NULL) + g_free(pref->saved_val.string); + pref->saved_val.string = g_strdup(*pref->varp.string); + pref->control = create_preference_entry(grid, label_string->str, + pref->description, pref->saved_val.string); + break; + + case PREF_OBSOLETE: + g_assert_not_reached(); + break; + } + g_string_free(label_string, TRUE); + return 0; +} +static guint +pref_exists(pref_t *pref _U_, gpointer user_data _U_) { + return 1; +} + +#define MAX_TREE_NODE_NAME_LEN 96 +static void +module_prefs_show(module_t *module, gpointer user_data) { + win32_element_t *groupbox, *grid; + module_data_t *md = user_data; + gchar id[MAX_TREE_NODE_NAME_LEN]; + + g_assert(md != NULL); + + /* + * Is this module a subtree, with modules underneath it? + */ + if (!module->is_subtree) { + /* + * No. + * Does it have any preferences (other than possibly obsolete ones)? + */ + if (prefs_pref_foreach(module, pref_exists, md) == 0) { + /* + * No. Don't put the module into the preferences window. + * XXX - we should do the same for subtrees; if a subtree has + * nothing under it that will be displayed, don't put it into + * the window. + */ + return; + } + } + + win32_tree_push(md->tree); + g_snprintf(id, MAX_TREE_NODE_NAME_LEN, "prefs-dialog.tree.protocols.%s", + module->title); + win32_tree_add_row(md->tree, id); + win32_tree_add_cell(md->tree, "", module->title); + + if (module->is_subtree) { + prefs_module_list_foreach(module->prefs, module_prefs_show, md); + } else { + /* Create our <groupbox> */ + g_snprintf(id, MAX_TREE_NODE_NAME_LEN, "prefs-dialog.deck.protocols.%s", + module->title); + groupbox = win32_groupbox_new(md->deck->h_wnd); + win32_box_add(md->deck, groupbox, -1); + win32_element_set_id(groupbox, id); + win32_groupbox_set_title(groupbox, module->title); + + /* Create a <grid> with two columns */ + grid = win32_grid_new(groupbox->h_wnd); + win32_box_add(groupbox, grid, -1); + win32_grid_add_column(grid, 0.0, 0); + win32_grid_add_column(grid, 1.0, 0); + + /* Add items for each of the preferences */ + prefs_pref_foreach(module, pref_show, grid); + } + + win32_tree_pop(md->tree); +} + +static void +protocol_prefs_init(win32_element_t *prefs_dlg) { + module_data_t md; + + md.tree = win32_identifier_get_str("prefs-dialog.tree"); + win32_element_assert(md.tree); + + md.deck = win32_identifier_get_str("prefs-dialog.deck"); + win32_element_assert(md.deck); + + prefs_module_list_foreach(NULL, module_prefs_show, &md); +} + +#define NUM_COL_BUTTONS 3 +static void +toggle_column_buttons(int cur_sel) { + win32_element_t *col_lb, *delete_bt, *up_bt, *down_bt, *title_tb, *format_ml; + int rows; + gboolean ena_delete = FALSE, ena_up = FALSE, ena_down = FALSE; + gboolean ena_title = FALSE, ena_format = FALSE; + + col_lb = win32_identifier_get_str("prefs-dialog.cols.list"); + win32_element_assert(col_lb); + + delete_bt = win32_identifier_get_str("prefs-dialog.cols.delete"); + win32_element_assert(delete_bt); + + up_bt = win32_identifier_get_str("prefs-dialog.cols.up"); + win32_element_assert(up_bt); + + down_bt = win32_identifier_get_str("prefs-dialog.cols.down"); + win32_element_assert(down_bt); + + title_tb = win32_identifier_get_str("prefs-dialog.cols.title"); + win32_element_assert(title_tb); + + format_ml = win32_identifier_get_str("prefs-dialog.cols.format"); + win32_element_assert(format_ml); + + rows = win32_listbox_get_row_count(col_lb); + + if (cur_sel >= 0) { + ena_delete = TRUE; + ena_title = TRUE; + ena_format = TRUE; + if (cur_sel > 0) { + ena_up = TRUE; + } + if (cur_sel < rows - 1) { + ena_down = TRUE; + } + } + win32_element_set_enabled(delete_bt, ena_delete); + win32_element_set_enabled(up_bt, ena_up); + win32_element_set_enabled(down_bt, ena_down); + win32_element_set_enabled(title_tb, ena_title); + win32_element_set_enabled(format_ml, ena_format); +} + +static guint +pref_revert(pref_t *pref, gpointer user_data) +{ + gboolean *pref_changed_p = user_data; + + /* Revert the preference to its saved value. */ + switch (pref->type) { + + case PREF_UINT: + if (*pref->varp.uint != pref->saved_val.uint) { + *pref_changed_p = TRUE; + *pref->varp.uint = pref->saved_val.uint; + } + break; + + case PREF_BOOL: + if (*pref->varp.boolp != pref->saved_val.boolval) { + *pref_changed_p = TRUE; + *pref->varp.boolp = pref->saved_val.boolval; + } + break; + + case PREF_ENUM: + if (*pref->varp.enump != pref->saved_val.enumval) { + *pref_changed_p = TRUE; + *pref->varp.enump = pref->saved_val.enumval; + } + break; + + case PREF_STRING: + if (strcmp(*pref->varp.string, pref->saved_val.string) != 0) { + *pref_changed_p = TRUE; + g_free(*pref->varp.string); + *pref->varp.string = g_strdup(pref->saved_val.string); + } + break; + + case PREF_OBSOLETE: + g_assert_not_reached(); + break; + } + return 0; +} + +static void +module_prefs_revert(module_t *module, gpointer user_data) +{ + gboolean *must_redissect_p = user_data; + + /* For all preferences in this module, revert its value to the value + it had when we popped up the Preferences dialog. Find out whether + this changes any of them. */ + module->prefs_changed = FALSE; /* assume none of them changed */ + prefs_pref_foreach(module, pref_revert, &module->prefs_changed); + + /* If any of them changed, indicate that we must redissect and refilter + the current capture (if we have one), as the preference change + could cause packets to be dissected differently. */ + if (module->prefs_changed) + *must_redissect_p = TRUE; +} \ No newline at end of file diff -x entries -urN ethereal/xulender/win32-c-sdk/prefs-dlg.h ethereal-win32/xulender/win32-c-sdk/prefs-dlg.h --- ethereal/xulender/win32-c-sdk/prefs-dlg.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/prefs-dlg.h 2004-05-21 12:01:41.000000000 -0500 @@ -0,0 +1,9 @@ +/* prefs-dlg.h */ + +#ifndef PREFS_DLG_H +#define PREFS_DLG_H + +void prefs_dialog_init(HWND parent); + + +#endif /* prefs-dlg.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/resource.h ethereal-win32/xulender/win32-c-sdk/resource.h --- ethereal/xulender/win32-c-sdk/resource.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/resource.h 2004-03-30 12:48:10.000000000 -0600 @@ -0,0 +1,17 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Script2.rc +// +#define IDD_DIALOG1 101 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-box.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-box.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-box.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-box.c 2004-06-12 21:31:05.000000000 -0500 @@ -0,0 +1,783 @@ + +/* + * Splitter code taken from an example by J Brown at + * http://www.catch22.org.uk/. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> + +#include <glib.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + +/* + * Box and splitter WndProcs + */ +static LRESULT CALLBACK win32_box_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static LRESULT CALLBACK win32_splitter_wnd_proc(HWND, UINT, WPARAM, LPARAM, win32_box_orient_t); +static LRESULT CALLBACK win32_splitter_wnd_proc_h(HWND, UINT, WPARAM, LPARAM); +static LRESULT CALLBACK win32_splitter_wnd_proc_v(HWND, UINT, WPARAM, LPARAM); + +/* + * Given a box, return its contents' cumulative "flex" value. + */ +static gfloat win32_box_flex_total(win32_element_t *box); + +/* + * Given a box, return its contents' cumulative static width/height. + */ +static gint win32_box_static_dim(win32_element_t *box); + +/* + * Given a box, return its contents' cumulative flexible width/height. + */ +gint win32_box_flexible_dim(win32_element_t *box); + + +static LRESULT win32_splitter_lbutton_down(HWND, UINT, WPARAM, LPARAM); +static LRESULT win32_splitter_lbutton_up(HWND, UINT, WPARAM, LPARAM); +static LRESULT win32_splitter_mouse_move(HWND, UINT, WPARAM, LPARAM); + +#define EWC_BOX_PANE "BoxPane" +#define EWC_SPLITTER_H "SplitterHorizontal" +#define EWC_SPLITTER_V "SplitterVertical" +#define BOX_SPLITTER_GAP 3 /* Splitter size in pixels */ + +/* Globals */ +/* XXX - These could probably be moved to win32_element_t */ +static int y_old = -4, y_orig; +static BOOL splitter_drag_mode = FALSE; +static win32_element_t *cur_splitter = NULL; + + +/* Box packing routines. We follow the XUL box packing model. + * + * http://www.mozilla.org/projects/xul/xul.html + * http://www.xulplanet.com/references/elemref/ref_XULElement.html + */ + +/* + * Box packing rules: + * + * - By default, horizontal boxes grow left-to-right. Vertical boxes + * grow top-to-bottom. + * - By default, sizing is intrinsic (elements are shrunk to their minimum + * natural size). + * - By default, horizontal boxes stretch their children to the same height. + * Likewise for vertical boxes. + * - The default flex value is 0.0. + * - + * + */ + +/* + * To do: + * - Find a way to tell a control that it's next to a splitter (and that it + * needs an inset 3d border). This may not be such a big deal for Ethereal. + * The only things we're splitting (so far) are custom controls; we can + * force their insettedness. + */ + + +win32_element_t * +win32_box_new(HWND hw_box, HWND hw_parent, win32_box_orient_t orientation) { + win32_element_t *box; + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + WNDCLASS wc; + + box = win32_element_new(hw_box); + + if (box->h_wnd == NULL) { /* We have to create our own window */ + g_assert(hw_parent != NULL); + + /* XXX - Should we move this into its own init routine? */ + if (! GetClassInfo(h_instance, EWC_BOX_PANE, &wc)) { + wc.lpszClassName = EWC_BOX_PANE; + wc.lpfnWndProc = win32_box_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + } + + box->h_wnd = CreateWindow( + EWC_BOX_PANE, + EWC_BOX_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + (LPSTR) NULL); + + ShowWindow(box->h_wnd, SW_SHOW); + UpdateWindow(box->h_wnd); + } + + box->orient = orientation; + + /* Attach the box address to our HWND. */ + SetWindowLong(box->h_wnd, GWL_USERDATA, (LONG) box); + + return box; +} + + +win32_element_t * +win32_hbox_new(HWND hw_box, HWND hw_parent) { + return win32_box_new(hw_box, hw_parent, BOX_ORIENT_HORIZONTAL); +} + +win32_element_t * +win32_vbox_new(HWND hw_box, HWND hw_parent) { + return win32_box_new(hw_box, hw_parent, BOX_ORIENT_VERTICAL); +} + +void +win32_box_add(win32_element_t *box, win32_element_t *box_el, int pos) { + win32_element_assert(box); + win32_element_assert(box_el); + + if (box->type == BOX_GRID) + win32_grid_add(box, box_el); + else + box->contents = g_list_insert(box->contents, box_el, pos); + + if (box->type == BOX_DECK) { + if (g_list_index(box->contents, box_el) != win32_deck_get_selectedindex(box)) + ShowWindow(box_el->h_wnd, SW_HIDE); + } + + if (box->type == BOX_GROUPBOX) { + win32_groupbox_reparent(box, box_el); + } +} + +win32_element_t * +win32_box_add_hwnd(win32_element_t *box, HWND h_wnd, int pos) { + win32_element_t *box_el; + RECT wr; + + box_el = win32_element_new(h_wnd); + SetWindowLong(h_wnd, GWL_USERDATA, (LONG) box_el); + GetWindowRect(h_wnd, &wr); + + box_el->id = NULL; + box_el->type = BOX_WINDOW; + box_el->h_wnd = h_wnd; + box_el->dir = BOX_DIR_RTL; + box_el->crop = BOX_CROP_NONE; + box_el->flex = 0.0; + box_el->flexgroup = 1; + + box_el->minwidth = wr.right - wr.left; + box_el->minheight = wr.bottom - wr.top; + box_el->maxwidth = -1; + box_el->maxheight = -1; + + box_el->oncommand = NULL; + + win32_box_add(box, box_el, pos); + + return box_el; +} + +win32_element_t * +win32_box_add_splitter(win32_element_t *box, int pos) { + win32_element_t *box_el; + HINSTANCE h_instance; + WNDCLASS wc; + LPCSTR name; + gboolean horizontal = FALSE; + + win32_element_assert(box); + g_assert(pos != 0); + g_assert(box->type == BOX_BOX); + + if (box->orient == BOX_ORIENT_HORIZONTAL) { + horizontal = TRUE; + } + + box_el = win32_element_new(NULL); + box_el->type = BOX_SPLITTER; + + h_instance = (HINSTANCE) GetWindowLong(box->h_wnd, GWL_HINSTANCE); + + if (horizontal) { + name = EWC_SPLITTER_H; + wc.hCursor = LoadCursor(NULL, IDC_SIZEWE); + wc.lpfnWndProc = win32_splitter_wnd_proc_h; + } else { + name = EWC_SPLITTER_V; + wc.hCursor = LoadCursor(NULL, IDC_SIZENS); + wc.lpfnWndProc = win32_splitter_wnd_proc_v; + } + if (! GetClassInfo(h_instance, name, &wc)) { + wc.lpszClassName = name; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_PARENTDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + } + + box_el->h_wnd = CreateWindow( + name, + name, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + box->h_wnd, + NULL, + h_instance, + (LPSTR) NULL); + + ShowWindow(box_el->h_wnd, SW_SHOW); + UpdateWindow(box_el->h_wnd); + + /* Attach the box address to our HWND. */ + SetWindowLong(box_el->h_wnd, GWL_USERDATA, (LONG) box_el); + + win32_box_add(box, box_el, pos); + + /* Sizes must be specified _after_ win32_box_add(). */ + /* XXX - Do splitters care about direction and cropping? */ + box_el->dir = BOX_DIR_LTR; + box_el->crop = BOX_CROP_NONE; + box_el->flex = 0.0; + box_el->flexgroup = 0; + + if (horizontal) { + box_el->minwidth = BOX_SPLITTER_GAP; + box_el->maxwidth = BOX_SPLITTER_GAP; + box_el->minheight = 0; + } else { + box_el->minheight = BOX_SPLITTER_GAP; + box_el->maxheight = BOX_SPLITTER_GAP; + box_el->minwidth = 0; + } + + return box_el; +} + +/* + * Resize an element. If set_width or set_height are -1, the width or + * height is shrunk to its intrinsic value. + */ +void +win32_element_resize (win32_element_t *el, int set_width, int set_height) { + int x, y, width, height; + int flex_dim, static_dim; + win32_element_t *cur_el; + GList *contents; + gfloat total_flex; + gboolean force_top = FALSE, horizontal; + POINT pt; + RECT wr, cr; + + win32_element_assert(el); + + if (set_width < 0 && set_height < 0) + force_top = TRUE; + + if (set_width < 0) { + set_width = win32_element_intrinsic_width(el); + } + if (set_height < 0) + set_height = win32_element_intrinsic_height(el); + + GetWindowRect(el->h_wnd, &wr); + GetClientRect(el->h_wnd, &cr); + if (GetParent(el->h_wnd) != NULL) { /* We're a client window. */ + pt.x = wr.left; + pt.y = wr.top; + ScreenToClient(el->h_wnd, &pt); + MoveWindow(el->h_wnd, pt.x, pt.y, set_width, set_height, TRUE); + } else if (force_top) { + MoveWindow(el->h_wnd, wr.left, wr.top, + set_width + (wr.right - wr.left) - (cr.right - cr.left), + set_height + (wr.bottom - wr.top) - (cr.bottom - cr.top), + TRUE); + } + + if (el->type == BOX_GRID) { /* Hand off sizing chores to the grid */ + win32_grid_resize_contents(el, set_width, set_height); + return; + } else if (el->type == BOX_DECK) { /* Hand off sizing chores to the deck */ + win32_deck_resize_contents(el, set_width, set_height); + return; + } + + if (el->contents == NULL) /* We're done. */ + return; + + /* Otherwise, we have a box. Proceed through its contents. */ + if (el->type == BOX_GROUPBOX) { + set_width -= win32_groupbox_extra_width(el); + set_height -= win32_groupbox_extra_height(el); + } + x = el->frame_left; + y = el->frame_top; + width = set_width - el->frame_left - el->frame_right; + height = set_height - el->frame_top - el->frame_bottom; + total_flex = win32_box_flex_total(el); + static_dim = win32_box_static_dim(el); + + if (el->orient == BOX_ORIENT_HORIZONTAL) { + horizontal = TRUE; + flex_dim = set_width - static_dim - x - el->frame_right; + } else { + horizontal = FALSE; + flex_dim = set_height - static_dim - y - el->frame_bottom; + } + + contents = g_list_first(el->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + if (horizontal) { /* Trundle along in the y direction */ + if (cur_el->flex > 0.0 && total_flex > 0) { + width = (int) (cur_el->flex * flex_dim / total_flex); + } else { + width = win32_element_intrinsic_width(cur_el); + } + } else { /* Vertical */ + if (cur_el->flex > 0.0 && total_flex > 0) { + height = (int) (cur_el->flex * flex_dim / total_flex); + } else { + height = win32_element_intrinsic_height(cur_el); + } + } + win32_element_resize(cur_el, width, height); + win32_element_move(cur_el, x, y); + + if (horizontal) { + x += width; + } else { + y += height; + } + contents = g_list_next(contents); + } +} + +/* + * Move the given box to the given coordiantes. Coordinates are + * relative to the screen for top-level windows and relative to + * the parent for child windows. + */ + void + win32_element_move (win32_element_t *el, int x, int y) { + RECT wr; + + win32_element_assert(el); + GetWindowRect(el->h_wnd, &wr); + MoveWindow(el->h_wnd, x, y, wr.right - wr.left, wr.bottom - wr.top, TRUE); +} + + +/* + * Private routines + */ + +static LRESULT CALLBACK +win32_box_wnd_proc(HWND hw_box, UINT msg, WPARAM w_param, LPARAM l_param) { + + switch (msg) { +// case WM_CREATE: +// break; +// case WM_SIZE: +// break; +// case WM_NOTIFY: +// break; + /* + * This is a little counter-intuitive. WM_LBUTTONDOWN events are + * caught by splitter windows (below), which are children of hw_box. + * WM_MOUSEMOVE and WM_LBUTTONUP events are handled by hw_box itself. + */ + case WM_LBUTTONUP: + if (splitter_drag_mode) { + win32_splitter_lbutton_up(hw_box, msg, w_param, l_param); + return 0; + } + break; + case WM_MOUSEMOVE: + if (splitter_drag_mode) { + win32_splitter_mouse_move(hw_box, msg, w_param, l_param); + return 0; + } + break; + case WM_COMMAND: + win32_element_handle_wm_command(msg, w_param, l_param); + break; + default: + return(DefWindowProc(hw_box, msg, w_param, l_param)); + break; + } + return 0; +} + +static LRESULT CALLBACK +win32_splitter_wnd_proc(HWND hw_splitter, UINT msg, + WPARAM w_param, LPARAM l_param, win32_box_orient_t orientation) { + + switch (msg) { + case WM_LBUTTONDOWN: + win32_splitter_lbutton_down(hw_splitter, msg, w_param, l_param); + return 0; + default: + return(DefWindowProc(hw_splitter, msg, w_param, l_param)); + } + return 0; +} + +static LRESULT CALLBACK +win32_splitter_wnd_proc_h(HWND hw_splitter, UINT msg, WPARAM w_param, LPARAM l_param) { + + return(win32_splitter_wnd_proc(hw_splitter, msg, w_param, l_param, + BOX_ORIENT_HORIZONTAL)); +} + +static LRESULT CALLBACK +win32_splitter_wnd_proc_v(HWND hw_splitter, UINT msg, WPARAM w_param, LPARAM l_param) { + + return(win32_splitter_wnd_proc(hw_splitter, msg, w_param, l_param, + BOX_ORIENT_VERTICAL)); +} + +/* + * Given a box, return its contents' cumulative "flex" value. + */ +static gfloat +win32_box_flex_total(win32_element_t *box) { + gfloat total = 0.0; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(box); + g_assert(box->type == BOX_BOX || box->type == BOX_GROUPBOX); + + contents = g_list_first(box->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + total += cur_el->flex; + contents = g_list_next(contents); + } + return total; +} + +/* + * Given a box, return its contents' cumulative static (non-flexible) width/height. + */ +static gint +win32_box_static_dim(win32_element_t *box) { + gint total = 0, intrinsic_dim = 0; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(box); + g_assert(box->type == BOX_BOX || box->type == BOX_GROUPBOX); + + contents = g_list_first(box->contents); + + /* + * XXX - The intrinsic width is accumulated because we might run into + * a situation where a box is sized before its minimum width has been + * set. This may not be the best place to do this. + */ + while (contents) { + cur_el = (win32_element_t *) contents->data; + if (cur_el->flex == 0.0) { + if (box->orient == BOX_ORIENT_HORIZONTAL) { + total += win32_element_get_width(cur_el); + intrinsic_dim += win32_element_intrinsic_width(cur_el); + } else { + total += win32_element_get_height(cur_el); + intrinsic_dim += win32_element_intrinsic_height(cur_el); + } + } + contents = g_list_next(contents); + } + + if (intrinsic_dim > total) + return intrinsic_dim; + + return total; +} + +/* + * Given a box, return its contents' cumulative flexible width/height. + */ +static gint +win32_box_flexible_dim(win32_element_t *box) { + gint total = 0; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(box); + g_assert(box->type == BOX_BOX || box->type == BOX_GROUPBOX); + + contents = g_list_first(box->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + if (cur_el->flex > 0.0) { + if (box->orient == BOX_ORIENT_HORIZONTAL) { + total += win32_element_get_width(cur_el); + } else { + total += win32_element_get_height(cur_el); + } + } + contents = g_list_next(contents); + } + return total; +} + + + +/* + * Splitter routines + */ + +/* XXX - The min/max x/y value should be bounded to match + * win32_splitter_lbutton_up()'s behavior. */ +static void +win32_splitter_xor_bar(HDC hdc, int x1, int y1, int width, int height) +{ + static WORD dot_pattern[8] = + { + 0x00aa, 0x0055, 0x00aa, 0x0055, + 0x00aa, 0x0055, 0x00aa, 0x0055 + }; + + HBITMAP hbm; + HBRUSH hbr, hbr_old; + + hbm = CreateBitmap(8, 8, 1, 1, dot_pattern); + hbr = CreatePatternBrush(hbm); + + SetBrushOrgEx(hdc, x1, y1, 0); + hbr_old = (HBRUSH)SelectObject(hdc, hbr); + + PatBlt(hdc, x1, y1, width, height, PATINVERT); + + SelectObject(hdc, hbr_old); + + DeleteObject(hbr); + DeleteObject(hbm); +} + +/* XXX - Handle vertical splitter bars */ +static LRESULT +win32_splitter_lbutton_down(HWND hwnd, UINT i_msg, WPARAM w_param, LPARAM l_param) +{ + HWND hw_parent = GetParent(hwnd); + POINT pt; + HDC hdc; + RECT rect; + win32_element_t *box; + win32_element_t *cur_el; + GList *contents; + int dim = 0; + + pt.x = (short)LOWORD(l_param); // horizontal position of cursor + pt.y = (short)HIWORD(l_param); + + GetWindowRect(hw_parent, &rect); + + //convert the mouse coordinates relative to the top-left of + //the window + ClientToScreen(hwnd, &pt); + pt.x -= rect.left; + pt.y -= rect.top; + + //same for the window coordinates - make them relative to 0,0 + OffsetRect(&rect, -rect.left, -rect.top); + + if(pt.y < 0) pt.y = 0; + /* XXX - Find our splitter and use its width/height */ + if(pt.y > rect.bottom-4) + { + pt.y = rect.bottom-4; + } + + splitter_drag_mode = TRUE; + + SetCapture(hw_parent); + + hdc = GetWindowDC(hw_parent); + win32_splitter_xor_bar(hdc, 1,pt.y - 2, rect.right-2,4); + ReleaseDC(hw_parent, hdc); + + y_old = y_orig = pt.y; + + /* Find the box we're attached to */ + box = (win32_element_t *) GetWindowLong(hw_parent, GWL_USERDATA); + win32_element_assert (box); + + /* Find our splitter's box element */ + cur_splitter = NULL; + contents = g_list_first(box->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + if (cur_el->type == BOX_SPLITTER && cur_el->h_wnd == hwnd) { + cur_splitter = cur_el; + return 0; + } + dim += win32_element_get_height(cur_el); + contents = g_list_next(contents); + } + return 0; +} + +/* XXX - Handle vertical splitter bars */ +static LRESULT +win32_splitter_lbutton_up(HWND hwnd, UINT i_msg, WPARAM w_param, LPARAM l_param) +{ + HDC hdc; + RECT rect; + POINT pt; + win32_element_t *box; + win32_element_t *cur_el, *prev_el = NULL, *next_el = NULL; + GList *contents, *tmp_item; + gint tot_dynamic = 0; + int dim = 0; + + pt.x = (short)LOWORD(l_param); // horizontal position of cursor + pt.y = (short)HIWORD(l_param); + + if(splitter_drag_mode == FALSE) + return 0; + + GetWindowRect(hwnd, &rect); + + ClientToScreen(hwnd, &pt); + pt.x -= rect.left; + pt.y -= rect.top; + + OffsetRect(&rect, -rect.left, -rect.top); + + if(pt.y < 0) pt.y = 0; + if(pt.y > rect.bottom-4) + { + pt.y = rect.bottom-4; + } + + hdc = GetWindowDC(hwnd); + win32_splitter_xor_bar(hdc, 1, y_old - 2, rect.right-2,4); + ReleaseDC(hwnd, hdc); + + y_old = pt.y; + + splitter_drag_mode = FALSE; + + + /* Find the box we're attached to */ + box = (win32_element_t *) GetWindowLong(hwnd, GWL_USERDATA); + win32_element_assert(box); + + /* Reposition our element */ + if (cur_splitter != NULL) { + contents = g_list_find(box->contents, (gpointer) cur_splitter); + tmp_item = g_list_previous(contents); + if (tmp_item != NULL) + prev_el = (win32_element_t *) tmp_item->data; + tmp_item = g_list_next(contents); + if (tmp_item != NULL) + next_el = (win32_element_t *) tmp_item->data; + + tot_dynamic = win32_box_flexible_dim(box); + + contents = g_list_first(box->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + if (cur_el == cur_splitter && prev_el != NULL && next_el != NULL) { + /* "dim" is located at the bottom of prev_item / top + * of cur_splitter. */ + + /* Stay within the bounds of the previous and next items */ + if (y_old <= dim - win32_element_get_height(prev_el)) + y_old = dim - win32_element_get_height(prev_el) + 1; + if (y_old >= dim + win32_element_get_height(next_el) - win32_element_get_height(cur_el)) + y_old = dim + win32_element_get_height(next_el) - 1; + + win32_element_set_height(prev_el, win32_element_get_height(prev_el) + y_old - dim); + win32_element_set_height(next_el, win32_element_get_height(next_el) + dim - y_old); + } + dim += win32_element_get_height(cur_el); + contents = g_list_next(contents); + } + + /* Make another pass through the box contents, adjusting + * each flex value */ + contents = g_list_first(box->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + if (cur_el->flex > 0.0) { + cur_el->flex = (float) (win32_element_get_height(cur_el) * 100.0 / tot_dynamic); + } + contents = g_list_next(contents); + } + } + + if (tot_dynamic) { + win32_element_resize(box, rect.right - rect.left, rect.bottom - rect.top); + } + + ReleaseCapture(); + + return 0; +} + +static LRESULT +win32_splitter_mouse_move(HWND hwnd, UINT i_msg, WPARAM w_param, LPARAM l_param) +{ +// HWND hw_parent = GetParent(hwnd); + HDC hdc; + RECT rect; + + POINT pt; + + if(splitter_drag_mode == FALSE) return 0; + + pt.x = (short)LOWORD(l_param); // horizontal position of cursor + pt.y = (short)HIWORD(l_param); + + GetWindowRect(hwnd, &rect); + + ClientToScreen(hwnd, &pt); + pt.x -= rect.left; + pt.y -= rect.top; + + OffsetRect(&rect, -rect.left, -rect.top); + + if(pt.y < 0) pt.y = 0; + if(pt.y > rect.bottom-4) + { + pt.y = rect.bottom-4; + } + if(pt.y != y_old && w_param & MK_LBUTTON) + { + hdc = GetWindowDC(hwnd); + win32_splitter_xor_bar(hdc, 1, y_old - 2, rect.right-2,4); + win32_splitter_xor_bar(hdc, 1,pt.y - 2, rect.right-2,4); + + ReleaseDC(hwnd, hdc); + + y_old = pt.y; + } + + return 0; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-box.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-box.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-box.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-box.h 2004-04-16 15:40:08.000000000 -0500 @@ -0,0 +1,57 @@ +#ifndef __WIN32_BOX_H__ +#define __WIN32_BOX_H__ + +/* + * Creates a XUL element struct and returns its address. + * If hw_box is NULL, a new window is created with hw_parent as the parent. + * if hw_box is not NULL, (e.g. it's a newly-created window or dialog) + * that window is associated with the box and hw_parent is ignored. + * + * "orient" can be one of BOX_ORIENT HORIZONTAL or BOX_ORIENT_VERTICAL. + * The box address is saved in its hw_box's GWL_USERDATA attribute. + */ +win32_element_t * win32_box_new(HWND hw_box, HWND hw_parent, win32_box_orient_t orient); + +/* + * Creates a horizontally-oriented "box" struct and returns its address. + * If hw_box is NULL, a new window is created with hw_parent as the parent. + * if hw_box is not NULL, that window is associated with the box and hw_parent + * is ignored. + */ +win32_element_t * win32_hbox_new(HWND hw_box, HWND hw_parent); + +/* + * Creates a vertically-oriented "box" struct and returns its address. + * If hw_box is NULL, a new window is created with hw_parent as the parent. + * if hw_box is not NULL, that window is associated with the box and hw_parent + * is ignored. + */ +win32_element_t * win32_vbox_new(HWND hw_box, HWND hw_parent); + +/* Add a user-created box element */ +void win32_box_add(win32_element_t *box, win32_element_t *element, int pos); + +/* Given an HWND, create a box element and add it to the given box */ +/* Changes the box element size values */ +win32_element_t * win32_box_add_hwnd(win32_element_t *box, HWND h_wnd, int pos); + +/* Add a splitter to a box */ +/* Changes the box element size values */ +win32_element_t * win32_box_add_splitter(win32_element_t *box, int pos); + +/* + * Resize the contents of the given box to fit inside the given window. + * If width is -1, the box is constrained to its minumum width. Otherwise + * the box width is set to the given width. Likewise for the height. + */ +void win32_element_resize (win32_element_t *el, int width, int height); + + +/* + * Move the given box to the given screen coordiantes. Coordinates are + * relative to the screen for top-level windows and relative to the parent + * for child windows. + */ +void win32_element_move (win32_element_t *el, int x, int y); + +#endif /* win32-box.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-button.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-button.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-button.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-button.c 2004-05-19 16:44:04.000000000 -0500 @@ -0,0 +1,59 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +/* + * Create a Button control. + */ + +win32_element_t * +win32_button_new(HWND hw_parent, LPCSTR label) { + win32_element_t *button; + SIZE sz; + + g_assert(hw_parent != NULL); + + button = win32_element_new(NULL); + + button->h_wnd = CreateWindow( + "BUTTON", + label, + WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, + 0, 0, 0, 0, + hw_parent, + (HMENU) NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(button->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(button->h_wnd, label, &sz); + /* XXX - Surely we can do better than this. */ + sz.cx += DIALOG2PIXELX(12); + sz.cy = DIALOG2PIXELY(14); + MoveWindow(button->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + button->minwidth = sz.cx; + button->minheight = sz.cy; + + ShowWindow(button->h_wnd, SW_SHOW); + UpdateWindow(button->h_wnd); + + /* Attach the button address to our HWND. */ + SetWindowLong(button->h_wnd, GWL_USERDATA, (LONG) button); + + return button; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-button.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-button.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-button.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-button.h 2004-05-03 14:01:50.000000000 -0500 @@ -0,0 +1,7 @@ +#ifndef __WIN32_BUTTON_H__ +#define __WIN32_BUTTON_H__ + + +win32_element_t *win32_button_new(HWND, LPCSTR); + +#endif /* win32-button.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-checkbox.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-checkbox.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-checkbox.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-checkbox.c 2004-05-19 16:44:44.000000000 -0500 @@ -0,0 +1,117 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "glib.h" + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#define ATTACHED_DATA_ID "_win32_checkbox_attached_data" + +/* + * Create a Checkbox control. + */ + +win32_element_t * +win32_checkbox_new(HWND hw_parent, LPCSTR label) { + win32_element_t *checkbox; + SIZE sz; + + g_assert(hw_parent != NULL); + + checkbox = win32_element_new(NULL); + + checkbox->h_wnd = CreateWindow( + "BUTTON", + label, + WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, + 0, 0, 0, 0, + hw_parent, + (HMENU) NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(checkbox->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(checkbox->h_wnd, label, &sz); + /* XXX - Surely we can do better than this. */ + sz.cx += DIALOG2PIXELX(15); + sz.cy = DIALOG2PIXELY(14); + MoveWindow(checkbox->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + checkbox->minwidth = sz.cx; + checkbox->minheight = sz.cy; + + ShowWindow(checkbox->h_wnd, SW_SHOW); + UpdateWindow(checkbox->h_wnd); + + /* Attach the checkbox address to our HWND. */ + SetWindowLong(checkbox->h_wnd, GWL_USERDATA, (LONG) checkbox); + + return checkbox; +} + +/* + * Get the state of a checkbox + */ +gboolean +win32_checkbox_get_state(win32_element_t *cb_el) { + int state; + + win32_element_assert(cb_el); + + state = SendMessage(cb_el->h_wnd, BM_GETCHECK, 0, 0); + return state == BST_CHECKED ? TRUE : FALSE; +} + +/* + * Set the state of a checkbox + */ +void +win32_checkbox_set_state(win32_element_t *cb_el, gboolean state) { + win32_element_assert(cb_el); + + SendMessage(cb_el->h_wnd, BM_SETCHECK, + state ? (WPARAM) BST_CHECKED : (WPARAM) BST_UNCHECKED, 0); +} + +/* + * Attach a gboolean pointer to a checkbox. This is meant to be used + * in conjunction with win32_checkbox_toggle_attached_data(), below. + */ +void +win32_checkbox_attach_data(win32_element_t *cb_el, gboolean *toggle_val) { + win32_element_assert(cb_el); + + win32_element_set_data(cb_el, ATTACHED_DATA_ID, toggle_val); + + SendMessage(cb_el->h_wnd, BM_SETCHECK, + *toggle_val ? (WPARAM) BST_CHECKED : (WPARAM) BST_UNCHECKED, 0); +} + +/* + * Toggle the variable pointed to by ATTACHED_DATA_ID. An assertion is + * thrown if nothing is associated to ATTACHED_DATA_ID. + */ +void +win32_checkbox_toggle_attached_data(win32_element_t *cb_el) { + gboolean *toggle_val; + + win32_element_assert(cb_el); + toggle_val = win32_element_get_data(cb_el, ATTACHED_DATA_ID); + g_assert(toggle_val != NULL); + + if (SendMessage(cb_el->h_wnd, BM_GETCHECK, 0, 0) == BST_CHECKED) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-checkbox.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-checkbox.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-checkbox.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-checkbox.h 2004-05-03 14:17:37.000000000 -0500 @@ -0,0 +1,29 @@ +#ifndef __WIN32_CHECKBOX_H__ +#define __WIN32_CHECKBOX_H__ + + +win32_element_t *win32_checkbox_new(HWND, LPCSTR); + +/* + * Get the state of a checkbox + */ +gboolean win32_checkbox_get_state(win32_element_t *cb_el); + +/* + * Set the state of a checkbox + */ +void win32_checkbox_set_state(win32_element_t *cb_el, gboolean state); + +/* + * Attach a gboolean pointer to a checkbox. This is meant to be used + * in conjunction with win32_checkbox_toggle_attached_data(), below. + */ +void win32_checkbox_attach_data(win32_element_t *cb_el, gboolean *toggle_val); + +/* + * Toggle the gboolean associated with a checkbox. Suitable for + * use as an oncommand() routine. + */ +void win32_checkbox_toggle_attached_data(win32_element_t *cb_el); + +#endif /* win32-checkbox.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-deck.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-deck.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-deck.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-deck.c 2004-06-17 09:11:35.000000000 -0500 @@ -0,0 +1,281 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> + +#include <glib.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + + +/* + * Deck elements. + * + * http://www.mozilla.org/projects/xul/layout.html + * http://www.xulplanet.com/tutorials/xultu/stacks.html + * + */ + + /* + * Structures + */ + +typedef struct _deck_data_t { + gint selectedindex; + win32_element_t *selectedpanel; +} deck_data_t; + +#define EWC_DECK_PANE "DeckPane" +#define WIN32_DECK_DATA "_win32_deck_data" + +static void win32_deck_destroy(win32_element_t *deck, gboolean destroy_window); +static LRESULT CALLBACK win32_deck_wnd_proc(HWND, UINT, WPARAM, LPARAM); + +win32_element_t * +win32_deck_new(HWND hw_parent) { + win32_element_t *deck; + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + deck_data_t *dd; + WNDCLASS wc; + + g_assert(hw_parent != NULL); + + deck = win32_element_new(NULL); + + if (! GetClassInfo(h_instance, EWC_DECK_PANE, &wc)) { + wc.lpszClassName = EWC_DECK_PANE; + wc.lpfnWndProc = win32_deck_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + } + + deck->h_wnd = CreateWindow( + EWC_DECK_PANE, + EWC_DECK_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + (LPSTR) NULL); + + ShowWindow(deck->h_wnd, SW_SHOW); + UpdateWindow(deck->h_wnd); + + + + deck->type = BOX_DECK; + deck->destroy = win32_deck_destroy; + + dd = g_malloc(sizeof(deck_data_t)); + dd->selectedindex = 0; + dd->selectedpanel = NULL; + + /* Attach the deck address to our HWND. */ + SetWindowLong(deck->h_wnd, GWL_USERDATA, (LONG) deck); + win32_element_set_data(deck, WIN32_DECK_DATA, dd); + + return deck; +} + + +/* + * Find a deck's intrinsic (minimum) width. + */ +gint +win32_deck_intrinsic_width(win32_element_t *deck) { + gint width, min_width = 0; + GList *contents; + win32_element_t *cur_el; + + win32_element_assert(deck); + + if (deck->contents == NULL) + return deck->minwidth + deck->frame_left + deck->frame_right; + + contents = g_list_first(deck->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + width = win32_element_intrinsic_width(cur_el); + if (width > min_width) + min_width = width; + contents = g_list_next(contents); + } + + return min_width + deck->frame_left + deck->frame_right; +} + +/* + * Resize the contents of the deck. This is meant to be called from + * win32_element_resize() after the deck's HWND has been resized; therefore + * we only handle the deck's contents and not the deck's HWND. + */ +/* XXX - Add flex support */ +void +win32_deck_resize_contents(win32_element_t *deck, int set_width, int set_height) { + int width, height; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(deck); + + width = set_width - deck->frame_left - deck->frame_right; + if (width < 0) width = 0; + height = set_height - deck->frame_bottom - deck->frame_top; + if (height < 0) height = 0; + contents = g_list_first(deck->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + win32_element_resize(cur_el, width, height); + contents = g_list_next(contents); + } +} + +/* + * Find a deck's intrinsic (minimum) height. + */ +gint +win32_deck_intrinsic_height(win32_element_t *deck) { + gint height, min_height = 0; + GList *contents; + win32_element_t *cur_el; + + win32_element_assert(deck); + + if (deck->contents == NULL) + return deck->minheight + deck->frame_top + deck->frame_bottom; + + contents = g_list_first(deck->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + height = win32_element_intrinsic_height(cur_el); + if (height > min_height) + min_height = height; + contents = g_list_next(contents); + } + + return min_height + deck->frame_top + deck->frame_bottom; +} + +/* + * Set a deck's selected (visible) element given its index number + * (starting at 0). + */ +void +win32_deck_set_selectedindex(win32_element_t *deck, guint index) { + GList *contents; + deck_data_t *dd; + win32_element_t *cur_el; + guint count = 0; + + win32_element_assert(deck); + dd = (deck_data_t *) win32_element_get_data(deck, WIN32_DECK_DATA); + + contents = g_list_first(deck->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + if (count == index) { + ShowWindow(cur_el->h_wnd, SW_SHOW); + dd->selectedindex = count; + dd->selectedpanel = cur_el; + } else { + ShowWindow(cur_el->h_wnd, SW_HIDE); + } + count++; + contents = g_list_next(contents); + } +} + +/* + * Set a deck's selected (visible) element given a pointer to the element. + */ +void +win32_deck_set_selectedpanel(win32_element_t *deck, win32_element_t *panel) { + GList *contents; + deck_data_t *dd; + win32_element_t *cur_el; + gint count = 0; + + win32_element_assert(deck); + dd = (deck_data_t *) win32_element_get_data(deck, WIN32_DECK_DATA); + + contents = g_list_first(deck->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + if (cur_el == panel) { + ShowWindow(cur_el->h_wnd, SW_SHOW); + dd->selectedindex = count; + dd->selectedpanel = cur_el; + } else { + ShowWindow(cur_el->h_wnd, SW_HIDE); + } + count++; + contents = g_list_next(contents); + } +} + +/* + * Fetch a deck's selected (visible) element index, starting from 0. + */ +guint win32_deck_get_selectedindex(win32_element_t *deck) { + deck_data_t *dd; + + win32_element_assert(deck); + dd = (deck_data_t *) win32_element_get_data(deck, WIN32_DECK_DATA); + + return dd->selectedindex; +} + +/* + * Fetch the pointer to a deck's selected (visible) element. + */ +win32_element_t * win32_deck_get_selectedpanel(win32_element_t *deck) { + deck_data_t *dd; + + win32_element_assert(deck); + dd = (deck_data_t *) win32_element_get_data(deck, WIN32_DECK_DATA); + + return dd->selectedpanel; +} + + +/* + * Private routines + */ + +static void +win32_deck_destroy(win32_element_t *deck, gboolean destroy_window) { + deck_data_t *dd; + + win32_element_assert(deck); + + dd = (deck_data_t *) win32_element_get_data(deck, WIN32_DECK_DATA); + g_free(dd); + + /* Deck contents are destroyed by win32_element_destory() */ +} + +static LRESULT CALLBACK +win32_deck_wnd_proc(HWND hw_deck, UINT msg, WPARAM w_param, LPARAM l_param) { + + switch (msg) { + case WM_COMMAND: + win32_element_handle_wm_command(msg, w_param, l_param); + break; + default: + return(DefWindowProc(hw_deck, msg, w_param, l_param)); + } + return 0; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-deck.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-deck.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-deck.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-deck.h 2004-05-18 16:41:04.000000000 -0500 @@ -0,0 +1,48 @@ +#ifndef __WIN32_DECK_H__ +#define __WIN32_DECK_H__ + +/* + * Create a new deck element. + */ +win32_element_t * win32_deck_new(HWND hw_parent); + +/* + * Resize the contents of the deck. + */ +void win32_deck_resize_contents(win32_element_t *deck, int set_width, int set_height); + +/* + * Find a deck's intrinsic (minimum) width. + */ +gint win32_deck_intrinsic_width(win32_element_t *deck); + +/* + * Find a deck's intrinsic (minimum) height. + */ +gint win32_deck_intrinsic_height(win32_element_t *deck); + +/* + * Set a deck's selected (visible) element given its index number + * (starting at 0). + */ +void win32_deck_set_selectedindex(win32_element_t *deck, guint index); + +/* + * Set a deck's selected (visible) element given a pointer to the element. + */ +void win32_deck_set_selectedpanel(win32_element_t *deck, win32_element_t *panel); + +/* + * Fetch a deck's selected (visible) element index, starting from 0. + */ +guint win32_deck_get_selectedindex(win32_element_t *deck); + +/* + * Fetch the pointer to a deck's selected (visible) element. + * NOTE: If the selected panel hasn't been set by calling + * win32_deck_set_selectedindex() or win32_deck_set_selectedpanel() + * the return value will be NULL. + */ +win32_element_t * win32_deck_get_selectedpanel(win32_element_t *deck); + +#endif /* win32-deck.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-description.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-description.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-description.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-description.c 2004-05-19 17:11:27.000000000 -0500 @@ -0,0 +1,87 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +/* + * Create a <description> element, implemented as a static control. + */ + +/* + * XXX - Instead of setting the window text, we should handle WM_PAINT + * ourselves, so that we can dynamically support different text alignments, + * center the text vertically, etc. + */ + +win32_element_t * +win32_description_new(HWND hw_parent, LPCSTR text) { + win32_element_t *description; + SIZE sz; + + g_assert(hw_parent != NULL); + + description = win32_element_new(NULL); + + description->h_wnd = CreateWindow( + "STATIC", + text, + WS_CHILD | WS_VISIBLE, + 0, 0, 10, 10, + hw_parent, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(description->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(description->h_wnd, text, &sz); + sz.cx += 4; + sz.cy += 2; + + MoveWindow(description->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + description->minwidth = sz.cx; + description->minheight = sz.cy; + + ShowWindow(description->h_wnd, SW_SHOW); + UpdateWindow(description->h_wnd); + + /* Attach the description address to our HWND. */ + SetWindowLong(description->h_wnd, GWL_USERDATA, (LONG) description); + + return description; +} + +void +win32_description_apply_styles(win32_element_t *description) { + LONG wstyle; + + win32_element_assert(description); + wstyle = GetWindowLong(description->h_wnd, GWL_STYLE); + + /* XXX - Handle JUSTIFY */ + switch (description->text_align) { + case CSS_TEXT_ALIGN_RIGHT: + wstyle |= SS_RIGHT; + break; + case CSS_TEXT_ALIGN_CENTER: + wstyle |= SS_CENTER; + break; + default: + wstyle |= SS_LEFT; + break; + } + SetWindowLong(description->h_wnd, GWL_STYLE, wstyle); +} \ No newline at end of file diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-description.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-description.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-description.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-description.h 2004-05-19 14:30:23.000000000 -0500 @@ -0,0 +1,8 @@ +#ifndef __WIN32_DESCRIPTION_H__ +#define __WIN32_DESCRIPTION_H__ + + +win32_element_t * win32_description_new(HWND, LPCSTR); +void win32_description_apply_styles(win32_element_t *description); + +#endif /* win32-description.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-element.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-element.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-element.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-element.c 2004-06-23 10:49:37.000000000 -0500 @@ -0,0 +1,414 @@ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> + +#include <glib.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + +static GData *g_identifier_list = NULL; + +/* + * Routines for managing the global identifier list. + */ + +void +win32_identifier_init(void) { + if (! g_identifier_list) + g_datalist_init(&g_identifier_list); +} + +void +win32_identifier_set_str(const gchar* id, gpointer data) { + g_datalist_set_data(&g_identifier_list, id, data); +} + +gpointer +win32_identifier_get_str(const gchar *id) { + return (g_datalist_get_data(&g_identifier_list, id)); +} + +void +win32_identifier_remove_str(const gchar *id) { + g_datalist_remove_data(&g_identifier_list, id); +} + + +win32_element_t * +win32_element_new(HWND hw_box) { + win32_element_t *box; + + box = g_malloc(sizeof(win32_element_t)); + + ZeroMemory(box, sizeof(win32_element_t)); + box->type = BOX_BOX; + box->contents = NULL; + g_datalist_init(&box->object_data); + box->rows = NULL; + box->columns = NULL; + + box->h_wnd = hw_box; + + box->id = NULL; + box->dir = BOX_DIR_LTR; + box->crop = BOX_CROP_NONE; + box->flex = 0.0; + box->flexgroup = 0; + + box->orient = BOX_ORIENT_HORIZONTAL; + box->align = BOX_ALIGN_STRETCH; + box->pack = BOX_PACK_START; + + box->padding_top = 0; + box->padding_bottom = 0; + box->padding_left = 0; + box->padding_right = 0; + + box->text_align = CSS_TEXT_ALIGN_LEFT; + + box->maxheight = -1; + box->maxwidth = -1; + box->minheight = 0; + box->minwidth = 0; + + box->frame_top = 0; + box->frame_bottom = 0; + box->frame_left = 0; + box->frame_right = 0; + + box->onchange = NULL; + box->oncommand = NULL; + box->oninput = NULL; + + box->sortdirection = EL_SORT_NATURAL; + + return box; +} + +void +win32_element_destroy(win32_element_t *el, gboolean destroy_window) { + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(el); + + contents = g_list_first(el->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + win32_element_destroy(cur_el, FALSE); + contents = g_list_next(contents); + } + g_list_free(g_list_first(contents)); + + if (el->id) { + win32_identifier_remove_str(el->id); + } + + if (el->destroy) { + el->destroy(el); + } + + if (el->object_data) { + g_datalist_clear(&el->object_data); + } + + if (destroy_window && el->h_wnd) { + DestroyWindow(el->h_wnd); + } + + g_free(el); +} + +/* + * Checks that an element is valid, and throws an assertion if it isn't. + */ +void +win32_element_assert(win32_element_t *el) { + win32_element_t *hw_el; +#if 1 + if (el == NULL) G_BREAKPOINT(); +#else + g_assert(el != NULL); +#endif + +#if 1 + if (el->h_wnd == NULL) G_BREAKPOINT(); +#else + g_assert(el->h_wnd != NULL); +#endif + + hw_el = (win32_element_t *) GetWindowLong(el->h_wnd, GWL_USERDATA); +#if 1 + if (el != hw_el) G_BREAKPOINT(); +#else + g_assert(el == hw_el); +#endif +} + +/* + * Checks that an HWND has an associated element, and that it is valid. + */ +void +win32_element_hwnd_assert(HWND hwnd) { + win32_element_t *hw_el; + + g_assert(hwnd != NULL); + hw_el = (win32_element_t *) GetWindowLong(hwnd, GWL_USERDATA); + win32_element_assert(hw_el); +} + +void +win32_element_set_id(win32_element_t *el, gchar *id) { + win32_element_assert(el); + + el->id = g_strdup(id); + win32_identifier_set_str(el->id, el); +} + +/* + * Given an element, return the width of its h_wnd. + */ +LONG +win32_element_get_width(win32_element_t *el) { + + g_assert(el != NULL); + + return win32_element_hwnd_get_width(el->h_wnd); +} + +/* + * Given an element's hwnd, return its width. + */ +LONG +win32_element_hwnd_get_width(HWND hwnd) { + RECT wr; + + win32_element_hwnd_assert(hwnd); + GetWindowRect(hwnd, &wr); + return wr.right - wr.left; +} + +/* + * Given an element, return the height of its h_wnd. + */ +LONG +win32_element_get_height(win32_element_t *el) { + g_assert(el != NULL); + + return win32_element_hwnd_get_height(el->h_wnd); +} + +/* + * Given an element's hwnd, return its height. + */ +LONG +win32_element_hwnd_get_height(HWND hwnd) { + RECT wr; + + win32_element_hwnd_assert(hwnd); + GetWindowRect(hwnd, &wr); + return wr.bottom - wr.top; +} + +/* + * Given an element, set the width of its h_wnd. + */ +void +win32_element_set_width(win32_element_t *el, int width) { + g_assert(el != NULL); + + win32_element_hwnd_set_width(el->h_wnd, width); +} + +/* + * Set the width of an element's h_wnd + */ +void +win32_element_hwnd_set_width(HWND hwnd, int width) { + RECT wr; + + win32_element_hwnd_assert(hwnd); + GetWindowRect(hwnd, &wr); + SetWindowPos(hwnd, HWND_TOP, 0, 0, width, wr.bottom - wr.top, + SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); +} + +/* + * Given an element, set the height of its h_wnd. + */ +void win32_element_set_height(win32_element_t *el, int height) { + g_assert(el != NULL); + + win32_element_hwnd_set_height(el->h_wnd, height); +} + +/* + * Set the height of an element's h_wnd + */ +void win32_element_hwnd_set_height(HWND hwnd, int height) { + RECT wr; + + win32_element_hwnd_assert(hwnd); + GetWindowRect(hwnd, &wr); + SetWindowPos(hwnd, HWND_TOP, 0, 0, wr.right - wr.left, height, + SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); +} + +/* + * Find an element's intrinsic (minimum) width. + */ +gint +win32_element_intrinsic_width(win32_element_t *el) { + gint width, min_width = 0, extra = 0; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(el); + + if (el->type == BOX_GRID) + return win32_grid_intrinsic_width(el); + + if (el->type == BOX_DECK) + return win32_deck_intrinsic_width(el); + + if (el->type == BOX_GROUPBOX) + extra = win32_groupbox_extra_width(el); + + if (el->contents == NULL) { + min_width = el->minwidth; + } else { + contents = g_list_first(el->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + width = win32_element_intrinsic_width(cur_el); + if (el->orient == BOX_ORIENT_HORIZONTAL) { + min_width += width; + } else { + if (width > min_width) + min_width = width; + } + contents = g_list_next(contents); + } + min_width += el->frame_left + el->frame_right; + } + return min_width + extra; +} + +/* + * Find an element's intrinsic (minimum) height. + */ +gint +win32_element_intrinsic_height(win32_element_t *el) { + gint height, min_height = 0, extra = 0; + win32_element_t *cur_el; + GList *contents; + + win32_element_assert(el); + + if (el->type == BOX_GRID) + return win32_grid_intrinsic_height(el); + + if (el->type == BOX_DECK) + return win32_deck_intrinsic_height(el); + + if (el->type == BOX_GROUPBOX) + extra = win32_groupbox_extra_height(el); + + if (el->contents == NULL) { + min_height = el->minheight; + } else { + contents = g_list_first(el->contents); + while (contents) { + cur_el = (win32_element_t *) contents->data; + height = win32_element_intrinsic_height(cur_el); + if (el->orient == BOX_ORIENT_VERTICAL) { + min_height += height; + } else { + if (height > min_height) + min_height = height; + } + contents = g_list_next(contents); + } + min_height += el->frame_top + el->frame_bottom; + } + return min_height + extra; +} + + +void +win32_element_set_data(win32_element_t *el, gchar *id, gpointer data) { + g_datalist_set_data(&el->object_data, id, data); +} + +void +win32_element_hwnd_set_data(HWND hwnd, gchar *id, gpointer data) { + win32_element_t *el = (win32_element_t *) GetWindowLong(hwnd, GWL_USERDATA); + + g_assert(el != NULL); + g_datalist_set_data(&el->object_data, id, data); +} + +gpointer +win32_element_get_data(win32_element_t *el, gchar *id) { + return (g_datalist_get_data(&el->object_data, id)); +} + +gpointer +win32_element_hwnd_get_data(HWND hwnd, gchar *id) { + win32_element_t *el = (win32_element_t *) GetWindowLong(hwnd, GWL_USERDATA); + + g_assert(el != NULL); + return (g_datalist_get_data(&el->object_data, id)); +} + +gboolean +win32_element_get_enabled(win32_element_t *el) { + LONG el_style; + + win32_element_assert(el); + el_style = GetWindowLong(el->h_wnd, GWL_STYLE); + return el_style | WS_DISABLED ? FALSE : TRUE; +} + +void +win32_element_set_enabled(win32_element_t *el, gboolean enabled) { + + win32_element_assert(el); + EnableWindow(el->h_wnd, enabled); +} + +void win32_element_handle_wm_command(UINT msg, WPARAM w_param, LPARAM l_param) { + win32_element_t *el; + RECT dcrect; + + /* onCommand commands */ + if (HIWORD(w_param) == BN_CLICKED && l_param != NULL) { + el = (win32_element_t *) GetWindowLong((HWND) l_param, GWL_USERDATA); + win32_element_assert(el); + if (el->oncommand != NULL) el->oncommand(el); + /* Resize our combobox dropdown boxes */ + /* XXX - Get the number of items in the list and size accordingly */ + } else if (HIWORD(w_param) == CBN_DROPDOWN && ( + (int) LOWORD(w_param) == ID_COMBOBOX || + (int) LOWORD(w_param) == ID_MENULIST )) { + GetWindowRect((HWND) l_param, &dcrect); + SetWindowPos((HWND) l_param, HWND_TOP, 0, 0, dcrect.right - dcrect.left, 150, + SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); + /* onInput commands */ + } else if (HIWORD(w_param) == EN_UPDATE && (int) LOWORD(w_param) == ID_TEXTBOX) { + el = (win32_element_t *) GetWindowLong((HWND) l_param, GWL_USERDATA); + win32_element_assert(el); + if (el->oninput != NULL) el->oninput(el); + } else if (HIWORD(w_param) == CBN_SELCHANGE && (int) LOWORD(w_param) == ID_MENULIST) { + el = (win32_element_t *) GetWindowLong((HWND) l_param, GWL_USERDATA); + win32_element_assert(el); + if (el->oncommand != NULL) el->oncommand(el); + } +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-element.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-element.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-element.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-element.h 2004-06-17 16:06:58.000000000 -0500 @@ -0,0 +1,285 @@ +#ifndef __WIN32_TYPES_H__ +#define __WIN32_TYPES_H__ + +/* Corresponds to the "align" element attribute. BOX_STRETCH is the default. */ +typedef enum { + BOX_ALIGN_START, + BOX_ALIGN_CENTER, + BOX_ALIGN_END, + BOX_ALIGN_BASELINE, + BOX_ALIGN_STRETCH +} win32_box_align_t; + +/* Corresponds to the "crop" attribute. BOX_CROP_NONE is the default. */ +typedef enum { + BOX_CROP_LEFT, + BOX_CROP_RIGHT, + BOX_CROP_CENTER, + BOX_CROP_NONE +} win32_box_crop_t; + +/* Corresponds to the "dir" element attribute. BOX_DIR_LTR is the default. */ +typedef enum { + BOX_DIR_LTR, /* Left-to-right / top-to-bottom */ + BOX_DIR_RTL /* Right-to-left / bottom-to-top */ +} win32_box_dir_t; + +/* Corresponds to the "orient" attribute. BOX_ORIENT_HORIZONTAL is the default. */ +typedef enum { + BOX_ORIENT_HORIZONTAL, + BOX_ORIENT_VERTICAL + /* XXX - Implement 'inherit' */ +} win32_box_orient_t; + +/* Corresponds to the "pack" box attribute. BOX_PACK_START is the default. */ +typedef enum { + BOX_PACK_START, + BOX_PACK_CENTER, + BOX_PACK_END +} win32_box_pack_t; + +/* Corresponds to the "sortdirection" element attribute. EL_SORT_NATURAL is the default. */ +typedef enum { + EL_SORT_ASCENDING, + EL_SORT_DESCENDING, + EL_SORT_NATURAL +} win32_el_sortdirection_t; + + +/* Boxes can contain other boxes, windows (controls) and splitters. + * Splitters are special-purpose empty windows. Under this scheme + * element adjacent to a splitter must have a 3-D inset or it will + * look funny. + */ +/* XXX - This is too simplistic. Things other than boxes (e.g. frames) + can hold other objects. We need something more like an is_container + flag. */ +typedef enum { + BOX_BOX, + BOX_WINDOW, + BOX_SPLITTER, + BOX_GRID, + BOX_DECK, + BOX_GROUPBOX +} win32_box_element_type_t; + +/* + * CSS text-align style + */ + +typedef enum { + CSS_TEXT_ALIGN_LEFT, + CSS_TEXT_ALIGN_RIGHT, + CSS_TEXT_ALIGN_CENTER, + CSS_TEXT_ALIGN_JUSTIFY, +} win32_css_text_align_t; + +/* Used to register callback functions for a box element */ +/* Callbacks should have the form + * LRESULT CALLBACK + * callback_proc ( + * HWND hwnd, // Element/control's HWND + * UINT u_msg, // Message identifier + * WPARAM w_param, // First message parameter + * LPARAM l_param // Second message parameter + * ); + */ + +typedef struct _win32_element_t win32_element_t; + +/* XXX - Should this be a full-blown GObject? */ +typedef struct _win32_element_t { + win32_box_element_type_t type; + GList *contents; /* Null for non-boxes */ + GData *object_data; + void (*destroy)(); + + /* Data specific to various elements. If we ever use actual objects, + * these should become members of their respective objects. */ + GPtrArray *rows, *columns; /* Specific to <grid> */ + + /* Windows SDK attributes */ + HWND h_wnd; + + /* XUL element attributes */ + gchar *id; + win32_box_dir_t dir; + win32_box_crop_t crop; + gfloat flex; + gint flexgroup; + + win32_box_orient_t orient; + win32_box_align_t align; + win32_box_pack_t pack; + win32_el_sortdirection_t sortdirection; + + /* CSS attributes */ + gint padding_top; + gint padding_bottom; + gint padding_left; + gint padding_right; + + win32_css_text_align_t text_align; + + /* h_wnd has current height/width */ + + /* Max height/width */ + gint maxheight; + gint maxwidth; + + /* Absolute minimum height/width */ + gint minheight; + gint minwidth; + + /* Frame dimensions - the distance from the outer edge of the box + * to the outer edge of the box contents. + */ + gint frame_top; + gint frame_bottom; + gint frame_left; + gint frame_right; + + /* XUL element methods */ + void (*onchange)(); + void (*oncommand)(); + void (*oninput)(); +} win32_element_t; + +#define BOX_DEF_SIZE 50 + +/* + * Initialize the identifier list. + */ +void win32_identifier_init(void); + +/* + * Associates a given data pointer to an ID. + */ +void win32_identifier_set_str(const gchar*, gpointer); + +/* + * Given an ID, return its data pointer or NULL if not found. + */ +gpointer win32_identifier_get_str(const gchar *); + +/* + * Removes a data identifier + */ +void win32_identifier_remove_str(const gchar *); + +/* + * Allocates an element and initializes its variables. + */ +win32_element_t * win32_element_new(HWND hw_box); + +/* + * Destroys an element, and optionally destroys its HWND. + */ +void win32_element_destroy(win32_element_t *el, gboolean destroy_window); + +/* + * Checks that an element is valid, and throws an assertion if it isn't. + */ +void win32_element_assert(win32_element_t *el); + +/* + * Checks that an HWND has an associated element, and that it is valid. + */ +void win32_element_hwnd_assert(HWND hwnd); + +/* + * Copies the string "id" and associates it with the given element. + */ +void win32_element_set_id(win32_element_t *el, gchar *id); + +/* + * Given an element, return the width of its h_wnd. + */ +LONG win32_element_get_width(win32_element_t *el); + +/* + * Given an element's hwnd, return its width. + */ +LONG win32_element_hwnd_get_width(HWND hwnd); + +/* + * Given an element, return the height of its h_wnd. + */ +LONG win32_element_get_height(win32_element_t *el); + +/* + * Given an element's hwnd, return its height. + */ +LONG win32_element_hwnd_get_height(HWND hwnd); + +/* + * Given an element, set the width of its h_wnd. + */ +void win32_element_set_width(win32_element_t *el, int width); + +/* + * Set the width of an element's h_wnd + */ +void win32_element_hwnd_set_width(HWND hwnd, int width); + +/* + * Given an element, set the height of its h_wnd. + */ +void win32_element_set_height(win32_element_t *el, int height); + +/* + * Set the height of an element's h_wnd + */ +void win32_element_hwnd_set_height(HWND hwnd, int height); + +/* + * Calculate the intrinsic (minimum) width or height of an element. + */ +gint win32_element_intrinsic_width(win32_element_t *el); +gint win32_element_intrinsic_height(win32_element_t *el); + + +/* + * Associates the pointer to "data" to "el", keyed by "id". NOTE: IDs + * beginning with an underscore ("_") are reserved for private use. + */ +void win32_element_set_data(win32_element_t *el, gchar *id, gpointer data); + +/* + * Associates the pointer to "data" to "hwnd"'s element data, keyed by "id". + */ +void win32_element_hwnd_set_data(HWND hwnd, gchar *id, gpointer data); + +/* + * Fetch the data associated with "el" keyed by "id" + */ +gpointer win32_element_get_data(win32_element_t *el, gchar *id); + +/* + * Fetch the data associated with "hwnd"'s element data, keyed by "id" + */ +gpointer win32_element_hwnd_get_data(HWND hwnd, gchar *id); + +/* + * Fetch the active (! disabled) state of an element (true if active). + * Disabled elements are shown grayed out and don't respond to events. + */ +gboolean win32_element_get_enabled(win32_element_t *el); + +/* + * Set the active state of an element (false if disabled). + */ +/* + * XXX - Setting WS_DISABLED on a window only affects that window, and + * not its children. As a result, this isn't very useful in its present + * form for compound elements. + */ +void win32_element_set_enabled(win32_element_t *el, gboolean active); + +/* + * Handle WM_COMMAND for various elements. + */ + +void win32_element_handle_wm_command(UINT msg, WPARAM w_param, LPARAM l_param); +#endif /* win32-element.h */ + diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-grid.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-grid.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-grid.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-grid.c 2004-06-17 15:33:31.000000000 -0500 @@ -0,0 +1,369 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> + +#include <glib.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" + + +/* + * Grid elements. + * + * http://www.mozilla.org/projects/xul/layout.html + * http://www.xulplanet.com/tutorials/xultu/grids.html + * + * The Mozilla documentation says that column lines may contain + * elements, while the XUL Planet page says that only rows may + * contain elements. The Mozilla model seems a little silly; + * with it you can have two elements occupying the same table + * cell -- one in the "row" plane and one in the "column" plane. + * To make things easier and cleaner we're going with the XUL + * Planet specification. Columns will only be used for layout + * hints, e.g. "flex" and "flex-group". + */ + +#define EWC_GRID_PANE "GridPane" + +static void win32_grid_destroy(win32_element_t *grid, gboolean destroy_window); +static LRESULT CALLBACK win32_grid_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static gint win32_grid_column_intrinsic_width(win32_element_t *grid, guint col); +static gint win32_grid_row_intrinsic_height(win32_element_t *grid, guint row); + +typedef struct _win32_grid_column_t { + gfloat flex; + gint flexgroup; + gint width; +} win32_grid_column_t; + +typedef struct _win32_grid_row_t { + gfloat flex; + gint flexgroup; + gint height; + GList *contents; +} win32_grid_row_t; + + +win32_element_t * +win32_grid_new(HWND hw_parent) { + win32_element_t *grid; + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + WNDCLASS wc; + + g_assert(hw_parent != NULL); + + grid = win32_element_new(NULL); + + if (! GetClassInfo(h_instance, EWC_GRID_PANE, &wc)) { + wc.lpszClassName = EWC_GRID_PANE; + wc.lpfnWndProc = win32_grid_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = h_instance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + } + + grid->h_wnd = CreateWindow( + EWC_GRID_PANE, + EWC_GRID_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + h_instance, + (LPSTR) NULL); + + ShowWindow(grid->h_wnd, SW_SHOW); + UpdateWindow(grid->h_wnd); + + grid->type = BOX_GRID; + grid->rows = g_ptr_array_new(); + grid->columns = g_ptr_array_new(); + grid->destroy = win32_grid_destroy; + + /* Attach the grid address to our HWND. */ + SetWindowLong(grid->h_wnd, GWL_USERDATA, (LONG) grid); + + return grid; +} + +void +win32_grid_add_column(win32_element_t *grid, gfloat flex, gint flexgroup) { + win32_grid_column_t *column; + + win32_element_assert(grid); + g_assert(grid->type == BOX_GRID); + g_assert(grid->columns != NULL); + + column = g_malloc(sizeof(win32_grid_column_t)); + column->flex = flex; + column->flexgroup = flexgroup; + + g_ptr_array_add(grid->columns, column); +} + +void +win32_grid_add_row(win32_element_t *grid, gfloat flex, gint flexgroup) { + win32_grid_row_t *row; + + win32_element_assert(grid); + g_assert(grid->type == BOX_GRID); + g_assert(grid->rows != NULL); + + row = g_malloc(sizeof(win32_grid_row_t)); + row->flex = flex; + row->flexgroup = flexgroup; + row->contents = NULL; + + g_ptr_array_add(grid->rows, row); +} + +/* + * Add an abitrary element to a grid. + */ +void +win32_grid_add(win32_element_t *grid, win32_element_t *grid_el) { + win32_grid_row_t *row_data; + + win32_element_assert(grid); + g_assert(grid->type == BOX_GRID); + g_assert(grid->rows != NULL); + g_assert(grid->rows->len > 0); + g_assert(grid->columns != NULL); + win32_element_assert(grid_el); + + row_data = g_ptr_array_index(grid->rows, grid->rows->len - 1); + g_assert(g_list_length(row_data->contents) < grid->columns->len); + row_data->contents = g_list_append(row_data->contents, grid_el); +} + +/* + * Resize the contents of the grid. This is meant to be called from + * win32_element_resize() after the grid's HWND has been resized; therefore + * we only handle the grid's contents and not the grid's HWND. + */ +void +win32_grid_resize_contents(win32_element_t *grid, int set_width, int set_height) { + int x, y, fixed_dim = 0, flex_dim; + win32_element_t *cur_el; + guint cur_row, cur_col; + gfloat total_flex = 0; + win32_grid_row_t *row_data; + win32_grid_column_t *col_data; + + win32_element_assert(grid); + if (grid->rows == NULL || grid->columns == NULL) { + return; + } + + /* Pass 1: Collect our flex/fixed width values */ + for (cur_col = 0; cur_col < grid->columns->len; cur_col++) { + col_data = g_ptr_array_index(grid->columns, cur_col); + col_data->width = win32_grid_column_intrinsic_width(grid, cur_col); + total_flex += col_data->flex; + if (col_data->flex == 0.0) { + fixed_dim += col_data->width; + } + } + + flex_dim = set_width - fixed_dim; + + /* Pass 2: Adjust our flexible column widths */ + for (cur_col = 0; cur_col < grid->columns->len; cur_col++) { + col_data = g_ptr_array_index(grid->columns, cur_col); + if (col_data->flex > 0.0 && total_flex > 0.0) { + col_data->width = (int) (col_data->flex * flex_dim / total_flex); + } + } + + /* Pass 3: Collect our flex/fixed height values */ + fixed_dim = 0; + total_flex = 0.0; + for (cur_row = 0; cur_row < grid->rows->len; cur_row++) { + row_data = g_ptr_array_index(grid->rows, cur_row); + row_data->height = win32_grid_row_intrinsic_height(grid, cur_row); + total_flex += row_data->flex; + if (row_data->flex == 0.0) { + fixed_dim += row_data->height; + } + } + + + flex_dim = set_height - fixed_dim; + y = grid->frame_top; + /* Pass 4: Adjust our flexible row heights and resize each cell */ + for (cur_row = 0; cur_row < grid->rows->len; cur_row++) { + row_data = g_ptr_array_index(grid->rows, cur_row); + if (row_data->flex > 0.0 && total_flex > 0.0) { + row_data->height = (int) (row_data->flex * flex_dim / total_flex); + } + x = grid->frame_left; + for (cur_col = 0; cur_col < grid->columns->len; cur_col++) { + col_data = g_ptr_array_index(grid->columns, cur_col); + cur_el = (win32_element_t *) g_list_nth_data(row_data->contents, cur_col); + if (cur_el != NULL) { + win32_element_resize(cur_el, col_data->width, row_data->height); + win32_element_move(cur_el, x, y); + } + x += col_data->width; + } + y += row_data->height; + } +} + + +/* + * Find a grid's intrinsic (minimum) width. We do this by finding each + * column's intrinsic width, then returning the total. + */ +gint +win32_grid_intrinsic_width(win32_element_t *grid) { + gint tot_width = 0; + guint cur_col; + + win32_element_assert(grid); + if (grid->rows == NULL || grid->columns == NULL) { + return 0; + } + + for (cur_col = 0; cur_col < grid->columns->len; cur_col++) { + tot_width += win32_grid_column_intrinsic_width(grid, cur_col); + } + return tot_width + grid->frame_left + grid->frame_right; +} + + + +/* + * Find a grid's intrinsic (minimum) height. + */ +gint +win32_grid_intrinsic_height(win32_element_t *grid) { + gint tot_height = 0; + guint cur_row; + + win32_element_assert(grid); + if (grid->rows == NULL || grid->columns == NULL) { + return 0; + } + + for (cur_row = 0; cur_row < grid->rows->len; cur_row++) { + tot_height += win32_grid_row_intrinsic_height(grid, cur_row); + } + return tot_height + grid->frame_top + grid->frame_bottom; +} + + + +/* + * Private routines + */ + +static void +win32_grid_destroy(win32_element_t *grid, gboolean destroy_window) { + win32_element_t *cur_el; + win32_grid_row_t *row_data; + GList *contents; + guint cur_row; + + win32_element_assert(grid); + + for (cur_row = 0; cur_row < grid->rows->len; cur_row++) { + row_data = g_ptr_array_index(grid->rows, cur_row); + contents = g_list_first(row_data->contents); + while (contents != NULL) { + cur_el = (win32_element_t *) contents->data; + win32_element_destroy(cur_el, FALSE); + contents = g_list_next(contents); + } + g_list_free(g_list_first(contents)); + } + g_ptr_array_free(grid->rows, TRUE); + g_ptr_array_free(grid->columns, TRUE); +} + +static LRESULT CALLBACK +win32_grid_wnd_proc(HWND hw_grid, UINT msg, WPARAM w_param, LPARAM l_param) { + + switch (msg) { + case WM_COMMAND: + win32_element_handle_wm_command(msg, w_param, l_param); + break; + default: + return(DefWindowProc(hw_grid, msg, w_param, l_param)); + } + return 0; +} + +/* + * Find a grid column's intrinsic (minimum) width. + */ +static gint +win32_grid_column_intrinsic_width(win32_element_t *grid, guint col) { + gint col_width, el_width; + win32_element_t *cur_el; + guint cur_row; + win32_grid_row_t *row_data; + GList *contents; + + win32_element_assert(grid); + if (grid->rows == NULL || grid->columns == NULL || grid->columns->len < col) { + return 0; + } + + col_width = 0; + for (cur_row = 0; cur_row < grid->rows->len; cur_row++) { + row_data = g_ptr_array_index(grid->rows, cur_row); + contents = g_list_first(row_data->contents); + g_assert(g_list_length(contents) == grid->columns->len); + cur_el = (win32_element_t *) g_list_nth_data(contents, col); + if (cur_el != NULL) { + el_width = win32_element_intrinsic_width(cur_el); + if (el_width > col_width) + col_width = el_width; + } + } + return col_width; +} + +/* + * Find a grid row's intrinsic (minimum) height. + */ +gint +win32_grid_row_intrinsic_height(win32_element_t *grid, guint row) { + gint row_height, el_height; + win32_element_t *cur_el; + guint cur_col; + win32_grid_row_t *row_data; + GList *contents; + + win32_element_assert(grid); + if (grid->rows == NULL || grid->columns == NULL || grid->rows->len < row) { + return 0; + } + row_data = g_ptr_array_index(grid->rows, row); + contents = g_list_first(row_data->contents); + g_assert(g_list_length(contents) == grid->columns->len); + + row_height = 0; + for (cur_col = 0; cur_col < grid->columns->len; cur_col++) { + cur_el = (win32_element_t *) g_list_nth_data(contents, cur_col); + if (cur_el != NULL) { + el_height = win32_element_intrinsic_height(cur_el); + if (el_height > row_height) + row_height = el_height; + } + } + return row_height; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-grid.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-grid.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-grid.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-grid.h 2004-04-20 09:57:15.000000000 -0500 @@ -0,0 +1,39 @@ +#ifndef __WIN32_GRID_H__ +#define __WIN32_GRID_H__ + +/* + * Create a new grid element. + */ +win32_element_t * win32_grid_new(HWND hw_parent); + +/* + * Add a column + */ +void win32_grid_add_column(win32_element_t *grid, gfloat flex, gint flexgroup); + +/* + * Add a row + */ +void win32_grid_add_row(win32_element_t *grid, gfloat flex, gint flexgroup); + +/* + * Add an arbitrary element to the most recently-added row. + */ +void win32_grid_add(win32_element_t *grid, win32_element_t *grid_el); + +/* + * Resize the contents of the grid. + */ +void win32_grid_resize_contents(win32_element_t *grid, int set_width, int set_height); + +/* + * Find a grid's intrinsic (minimum) width + */ +gint win32_grid_intrinsic_width(win32_element_t *grid); + +/* + * Find a grid's intrinsic (minimum) height + */ +gint win32_grid_intrinsic_height(win32_element_t *grid); + +#endif /* win32-grid.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-groupbox.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-groupbox.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-groupbox.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-groupbox.c 2004-06-17 15:18:46.000000000 -0500 @@ -0,0 +1,236 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +static void win32_groupbox_destroy(win32_element_t *groupbox, gboolean destroy_window); +static LRESULT CALLBACK win32_groupbox_wnd_proc(HWND hw_groupbox, UINT msg, WPARAM w_param, LPARAM l_param); +static LRESULT CALLBACK win32_container_wnd_proc(HWND hw_container, UINT msg, WPARAM w_param, LPARAM l_param); + +/* Structures */ + +typedef struct _groupbox_data_t { + HWND container; + gint pad_top; + gint pad_bottom; + gint pad_left; + gint pad_right; +} groupbox_data_t; + +static WNDPROC g_groupbox_wnd_proc = NULL; + +#define WIN32_GROUPBOX_DATA "_win32_groupbox_data" + +#define WIN32_GROUPBOX_PANE "GroupboxPane" + +/* + * XXX - BS_GROUPBOX windows are horrible about eating system messages. + * In order to work around this, win32-c-sdk.py adds a <vbox> to any + * <groupbox> it creates. We fix the issue here at some point. + */ + +/* + * Create a Button control with a BS_GROUPBOX style. + */ + +win32_element_t * +win32_groupbox_new(HWND hw_parent) { + win32_element_t *groupbox; + WNDCLASS wc; + groupbox_data_t *gd; + SIZE sz; + + g_assert(hw_parent != NULL); + + groupbox = win32_element_new(NULL); + + /* Groupboxes are actually buttons with the BS_GROUPBOX style + * applied. One has to wonder what the path from button to + * groupbox was within Microsoft. + */ + groupbox->h_wnd = CreateWindow( + "BUTTON", + "", + WS_CHILD | WS_VISIBLE | BS_GROUPBOX, + 0, 0, 0, 0, + hw_parent, + (HMENU) ID_GROUPBOX, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(groupbox->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + ShowWindow(groupbox->h_wnd, SW_SHOW); + UpdateWindow(groupbox->h_wnd); + + groupbox->orient = BOX_ORIENT_VERTICAL; + groupbox->type = BOX_GROUPBOX; + groupbox->destroy = win32_groupbox_destroy; + + /* Attach the box address to our HWND. */ + SetWindowLong(groupbox->h_wnd, GWL_USERDATA, (LONG) groupbox); + + win32_get_text_size(groupbox->h_wnd, "ABC123xyz", &sz); + gd = g_malloc(sizeof(groupbox_data_t)); + gd->pad_top = sz.cy + 1; + gd->pad_bottom = 2; + gd->pad_left = 2; + gd->pad_right = 2; + /* + * The groupbox (which is really a button) control is bad about eating + * events that it encounters. We swap out the wndprocs in order to + * properly handle events. + */ + if (g_groupbox_wnd_proc == NULL) { + g_groupbox_wnd_proc = (WNDPROC) GetWindowLong(groupbox->h_wnd, GWL_WNDPROC); + } + SetWindowLong(groupbox->h_wnd, GWL_WNDPROC, (LONG) win32_groupbox_wnd_proc); + win32_element_set_data(groupbox, WIN32_GROUPBOX_DATA, gd); + + /* Create our container sub-window */ + wc.lpszClassName = WIN32_GROUPBOX_PANE; + wc.lpfnWndProc = win32_container_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_3DFACE+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + gd->container = CreateWindowEx( + 0, + WIN32_GROUPBOX_PANE, + WIN32_GROUPBOX_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + groupbox->h_wnd, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + NULL); + + ShowWindow(gd->container, SW_SHOW); + UpdateWindow(gd->container); + + return groupbox; +} + +/* + * Move a child from the BS_GROUPBOX window to the container window. + */ +void +win32_groupbox_reparent(win32_element_t *groupbox, win32_element_t *groupbox_el) { + groupbox_data_t *gd; + + win32_element_assert(groupbox); + win32_element_assert(groupbox_el); + + gd = (groupbox_data_t *) win32_element_get_data(groupbox, WIN32_GROUPBOX_DATA); + + SetParent(groupbox_el->h_wnd, gd->container); + +} + +void +win32_groupbox_set_title(win32_element_t *box, char *title) { + SetWindowText(box->h_wnd, title); +} + +/* + * Return the extra width needed for padding. + */ +gint +win32_groupbox_extra_width(win32_element_t *groupbox) { + groupbox_data_t *gd; + + win32_element_assert(groupbox); + gd = (groupbox_data_t *) win32_element_get_data(groupbox, WIN32_GROUPBOX_DATA); + + return gd->pad_left + gd->pad_right; +} + +/* + * Return the extra height needed for padding. + */ +gint +win32_groupbox_extra_height(win32_element_t *groupbox) { + groupbox_data_t *gd; + + win32_element_assert(groupbox); + gd = (groupbox_data_t *) win32_element_get_data(groupbox, WIN32_GROUPBOX_DATA); + + return gd->pad_top + gd->pad_bottom; +} + +static LRESULT CALLBACK +win32_groupbox_wnd_proc(HWND hw_groupbox, UINT msg, WPARAM w_param, LPARAM l_param) { + win32_element_t *groupbox; + groupbox_data_t *gd; + RECT cr; + POINT pt; + + groupbox = (win32_element_t *) GetWindowLong(hw_groupbox, GWL_USERDATA); + + switch (msg) { + case WM_SIZE: + win32_element_assert(groupbox); + gd = (groupbox_data_t *) win32_element_get_data(groupbox, WIN32_GROUPBOX_DATA); + GetWindowRect(hw_groupbox, &cr); + pt.x = 0; pt.y = 0; + ScreenToClient(hw_groupbox, &pt); + OffsetRect(&cr, pt.x, pt.y); + cr.top += gd->pad_top; + cr.left += gd->pad_left; + cr.bottom -= gd->pad_bottom; + cr.right -= gd->pad_right; + MoveWindow(gd->container, cr.left, cr.top, cr.right - cr.left, cr.bottom - cr.top, TRUE); + break; + default: + return(CallWindowProc(g_groupbox_wnd_proc, hw_groupbox, msg, w_param, l_param)); + } + return(CallWindowProc(g_groupbox_wnd_proc, hw_groupbox, msg, w_param, l_param)); +} + +/* + * Private routines + */ + +static void +win32_groupbox_destroy(win32_element_t *groupbox, gboolean destroy_window) { + groupbox_data_t *gd; + + win32_element_assert(groupbox); + + gd = (groupbox_data_t *) win32_element_get_data(groupbox, WIN32_GROUPBOX_DATA); + DestroyWindow(gd->container); + g_free(gd); +} + +static LRESULT CALLBACK +win32_container_wnd_proc(HWND hw_container, UINT msg, WPARAM w_param, LPARAM l_param) { + + switch (msg) { + case WM_COMMAND: + win32_element_handle_wm_command(msg, w_param, l_param); + break; + default: + return(DefWindowProc(hw_container, msg, w_param, l_param)); + } + return 0; +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-groupbox.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-groupbox.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-groupbox.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-groupbox.h 2004-06-11 17:30:04.000000000 -0500 @@ -0,0 +1,22 @@ +#ifndef __WIN32_GROUPBOX_H__ +#define __WIN32_GROUPBOX_H__ + + +win32_element_t * win32_groupbox_new(HWND); +/* + * Move a child from the BS_GROUPBOX window to the container window. + */ +void win32_groupbox_reparent(win32_element_t *groupbox, win32_element_t *groupbox_el); + +void win32_groupbox_set_title(win32_element_t *gb, char *title); +/* + * Return the extra width needed for padding. + */ +gint win32_groupbox_extra_width(win32_element_t *groupbox); +/* + * Return the extra height needed for padding. + */ +gint win32_groupbox_extra_height(win32_element_t *groupbox); + + +#endif /* win32-groupbox.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-listbox.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-listbox.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-listbox.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-listbox.c 2004-06-17 10:18:02.000000000 -0500 @@ -0,0 +1,619 @@ +/* + * + * XXX - The XULPlanet docs say that list columns can be separated by splitters + * to make them adjustable. Do we implement this? + * + */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +static void win32_listbox_destroy(win32_element_t *listbox, gboolean destroy_window); +static LRESULT CALLBACK win32_listbox_wnd_proc(HWND hw_listbox, UINT msg, WPARAM w_param, LPARAM l_param); +void win32_listbox_resize(HWND hw_listbox); +void win32_listbox_sort(win32_element_t *listbox); + +/* Structures */ + +typedef struct _listbox_data_t { + HWND listview; + gint num_cols; + gint cur_col; + gint cur_item; + gint last_col_min_width; + void (*onselect)(); +} listbox_data_t; + +typedef struct _listrow_data_t { + gchar *id; /* XXX - We only store IDs for the entire row. Do we need to handle individual cells? */ + gpointer *data; +} listrow_data_t; + +#define EWC_LISTBOX_PANE "ListboxPane" +#define WIN32_LISTBOX_DATA "_win32_listbox_data" +#define MAX_ITEM_TEXT 256 + +/* + * Public routines + */ + +/* + * Creates a listview control + */ + +win32_element_t * +win32_listbox_new(HWND hw_parent, gboolean show_header) { + win32_element_t *listbox; + WNDCLASS wc; + + wc.lpszClassName = EWC_LISTBOX_PANE; + wc.lpfnWndProc = win32_listbox_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_WINDOWFRAME+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + g_assert(hw_parent != NULL); + + listbox = win32_element_new(NULL); + /* This is kind of cheesy, but we need to pass "show_header" + * to the window proc somehow so we overload "minwidth". */ + listbox->minwidth = show_header; + listbox->destroy = win32_listbox_destroy; + + CreateWindowEx( + 0, + EWC_LISTBOX_PANE, + EWC_LISTBOX_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 50, + hw_parent, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPVOID) listbox); + + ShowWindow(listbox->h_wnd, SW_SHOW); + UpdateWindow(listbox->h_wnd); + + SetWindowLong(listbox->h_wnd, GWL_USERDATA, (LONG) listbox); + + return listbox; +} + +void +win32_listbox_clear(win32_element_t *listbox) { + listbox_data_t *ld; + int i; + LVITEM item; + listrow_data_t *lr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ld->cur_col = 0; + ld->cur_item = 0; + ld->last_col_min_width = 0; + + i = ListView_GetNextItem(ld->listview, -1, LVNI_ALL); + while (i >= 0) { + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_PARAM; + item.iItem = i; + item.iSubItem = 0; + if (ListView_GetItem(ld->listview, &item)) { + lr = (listrow_data_t *) item.lParam; + if (lr) + g_free(lr); + } + i = ListView_GetNextItem(ld->listview, i, LVNI_ALL); + } + SendMessage(ld->listview, WM_SETREDRAW, FALSE, 0); + ListView_DeleteAllItems(ld->listview); + SendMessage(ld->listview, WM_SETREDRAW, TRUE, 0); + for (i = 0; i < ld->num_cols; i++) { + ListView_SetColumnWidth(ld->listview, i, 0); + } +} + +void +win32_listbox_add_column(win32_element_t *listbox, gchar *id, gchar *label) { + listbox_data_t *ld; + LVCOLUMN col; + HWND header; + HDITEM hdi; + SIZE sz; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + header = ListView_GetHeader(ld->listview); + + win32_get_text_size(header, label, &sz); + sz.cx += DIALOG2PIXELX(12); + if (sz.cx > ld->last_col_min_width) + ld->last_col_min_width = sz.cx; + + ZeroMemory(&col, sizeof(col)); + col.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_WIDTH; + if (label != NULL) + col.mask |= LVCF_TEXT; + col.pszText = label; + col.cchTextMax = lstrlen(label); + col.fmt = LVCFMT_LEFT; + col.cx = sz.cx; + ListView_InsertColumn(ld->listview, ld->num_cols, &col); + + ZeroMemory(&hdi, sizeof(hdi)); + hdi.mask = HDI_LPARAM; + hdi.lParam = (LPARAM) g_strdup(id); + Header_SetItem(header, ld->num_cols, &hdi); + + ld->num_cols++; +} + +gint +win32_listbox_add_item(win32_element_t *listbox, gint row, gchar *id, gchar *text) { + listbox_data_t *ld; + LVITEM item; + listrow_data_t *lr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + lr = g_malloc(sizeof(listrow_data_t)); + lr->id = g_strdup(id); + lr->data = NULL; + + if (ld->num_cols < 1) { + win32_listbox_add_column(listbox, NULL, NULL); + } + ld->cur_col = 0; + + ZeroMemory(&item, sizeof(item)); + item.mask = TVIF_PARAM; + item.lParam = (LPARAM) lr; + if (row < 0) { + item.iItem = ld->cur_item + 1; + } else { + item.iItem = row; + } + item.iSubItem = 0; + + ld->cur_item = ListView_InsertItem(ld->listview, &item); + + if (text != NULL) + win32_listbox_add_cell(listbox, id, text); + + return ld->cur_item; +} + +void +win32_listbox_delete_item(win32_element_t *listbox, gint row) { + listbox_data_t *ld; + LVITEM item; + listrow_data_t *lr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_PARAM; + item.iItem = row; + item.iSubItem = 0; + if (ListView_GetItem(ld->listview, &item)) { + lr = (listrow_data_t *) item.lParam; + if (lr) + g_free(lr); + } + + ListView_DeleteItem(ld->listview, row); +} + +void +win32_listbox_add_cell(win32_element_t *listbox, gchar *id, gchar *text) { + listbox_data_t *ld; + int col_width, text_width; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + g_assert(ld->cur_item >= 0); + + ListView_SetItemText(ld->listview, ld->cur_item, ld->cur_col, text); + + col_width = ListView_GetColumnWidth(ld->listview, ld->cur_col); + text_width = ListView_GetStringWidth(ld->listview, text); + text_width += DIALOG2PIXELX(8); + if (ld->cur_col == ld->num_cols - 1 && text_width > ld->last_col_min_width) { + ld->last_col_min_width = text_width; + } + if (text_width > col_width) { + ListView_SetColumnWidth(ld->listview, ld->cur_col, text_width); + } + + win32_listbox_resize(listbox->h_wnd); + ld->cur_col++; + + /* XXX - Sorting at every insert isn't very scalable */ + if (listbox->sortdirection != EL_SORT_NATURAL) { + win32_listbox_sort(listbox); + } +} + +/* + * Set the text in a particular row/column. + */ +void +win32_listbox_set_text(win32_element_t *listbox, gint row, gint column, gchar *text) { + listbox_data_t *ld; + LVITEM item; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ZeroMemory(&item, sizeof(item)); + item.mask = LVIF_TEXT; + item.iItem = row; + item.iSubItem = column; + item.pszText = text; + item.cchTextMax = lstrlen(text); + + ListView_SetItem(ld->listview, &item); +} + +/* + * Get the text in a particular row/column. + */ +gchar * +win32_listbox_get_text(win32_element_t *listbox, gint row, gint column) { + listbox_data_t *ld; + static gchar text[MAX_ITEM_TEXT]; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + text[0] = '\0'; + ListView_GetItemText(ld->listview, row, column, text, MAX_ITEM_TEXT); + if (text[0] == '\0') { + return NULL; + } + return text; +} + +/* + * Associate a data pointer with a row. + */ +void +win32_listbox_set_row_data(win32_element_t *listbox, gint row, gpointer data) { + listbox_data_t *ld; + LVITEM item; + listrow_data_t *lr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ZeroMemory(&item, sizeof(item)); + item.mask = TVIF_PARAM; + item.iItem = row; + item.iSubItem = 0; + + if (ListView_GetItem(ld->listview, &item)) { + lr = (listrow_data_t *) item.lParam; + g_assert(lr != NULL); + lr->data = data; + } +} + +/* + * Fetch the data pointer associated with a row. + */ +gpointer +win32_listbox_get_row_data(win32_element_t *listbox, gint row) { + listbox_data_t *ld; + LVITEM item; + listrow_data_t *lr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ZeroMemory(&item, sizeof(item)); + item.mask = TVIF_PARAM; + item.iItem = row; + item.iSubItem = 0; + + if (ListView_GetItem(ld->listview, &item)) { + lr = (listrow_data_t *) item.lParam; + g_assert(lr != NULL); + return lr->data; + } else { + return NULL; + } +} + +/* + * Set the selected row in a listbox. + */ +void win32_listbox_set_selected(win32_element_t *listbox, gint row) { + listbox_data_t *ld; + gint sel_row = row; + + if (row < 0) { + sel_row = 0; + } + + if (row >= win32_listbox_get_row_count(listbox)) { + sel_row = win32_listbox_get_row_count(listbox) - 1; + } + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ListView_SetItemState(ld->listview, -1, 0, LVIS_SELECTED); + ListView_SetItemState(ld->listview, sel_row, LVIS_SELECTED, LVIS_SELECTED); +} + +/* + * Fetch the selected row in a listbox. + */ +gint win32_listbox_get_selected(win32_element_t *listbox) { + listbox_data_t *ld; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + return ListView_GetNextItem(ld->listview, -1, LVNI_SELECTED); +} + +/* + * Return the row containing "text" in the specified column. Return -1 + * otherwise. + */ +gint +win32_listbox_find_text(win32_element_t *listbox, gint column, gchar *text) { + listbox_data_t *ld; + LVFINDINFO lvfi; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + lvfi.flags = LVFI_STRING; + lvfi.psz = text; + return ListView_FindItem(ld->listview, -1, &lvfi); +} + +/* + * Return the number of rows in the listbox. + */ +gint win32_listbox_get_row_count(win32_element_t *listbox) { + listbox_data_t *ld; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + return ListView_GetItemCount(ld->listview); +} + +void +win32_listbox_minimum_size(win32_element_t *listbox) { + listbox_data_t *ld; + HWND header; + RECT ir; + LVCOLUMN col; + int i, oldwidth, oldheight; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + header = ListView_GetHeader(ld->listview); + + oldwidth = listbox->minwidth; + oldheight = listbox->minheight; + + listbox->minwidth = 8; /* XXX - Just a guess. */ + listbox->minheight = 0; + + /* XXX - We need to check more than just the first column. */ + + if (Header_GetItemRect(header, 0, &ir)) { + listbox->minheight += ir.bottom - ir.top; + } + + if (listbox->minheight < 1) { + listbox->minheight = 50; + } + + for (i = 0; i < ld->num_cols; i++) { + ZeroMemory(&col, sizeof(col)); + col.mask = LVCF_WIDTH; + ListView_GetColumn(ld->listview, i, &col); + listbox->minwidth += col.cx; + } +} + + +void +win32_listbox_set_onselect(win32_element_t *listbox, void (*selfunc)()) { + listbox_data_t *ld; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ld->onselect = selfunc; +} + + +/* + * Private routines + */ + +static void +win32_listbox_destroy(win32_element_t *listbox, gboolean destroy_window) { + listbox_data_t *ld; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + win32_listbox_clear(listbox); + + DestroyWindow(ld->listview); + + g_free(ld); +} + +void win32_listbox_resize(HWND hw_listbox) { + win32_element_t *listbox = (win32_element_t *) GetWindowLong(hw_listbox, GWL_USERDATA); + listbox_data_t *ld; + int available_width, i; + RECT cr; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + GetClientRect(listbox->h_wnd, &cr); + MoveWindow(ld->listview, 0, 0, cr.right - cr.left, cr.bottom - cr.top, TRUE); + GetClientRect(ld->listview, &cr); + + available_width = cr.right - cr.left; + for (i = 0; i < ld->num_cols - 1; i++) { + available_width -= ListView_GetColumnWidth(ld->listview, i); + } + if (available_width > ld->last_col_min_width || ld->num_cols == 1) { + ListView_SetColumnWidth(ld->listview, ld->num_cols - 1, available_width); + } +} + +static int CALLBACK +win32_listbox_sort_compare(LPARAM l_param1, LPARAM l_param2, LPARAM l_param_sort) { + win32_element_t *listbox = (win32_element_t *) l_param_sort; + listbox_data_t *ld; + int idx, res; + LVFINDINFO lvfi; + gchar text1[MAX_ITEM_TEXT] = "", text2[MAX_ITEM_TEXT] = ""; + + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + lvfi.flags = LVFI_PARAM; + lvfi.lParam = l_param1; + idx = ListView_FindItem(ld->listview, -1, &lvfi); + if (idx >= 0) { + ListView_GetItemText(ld->listview, idx, 0, text1, MAX_ITEM_TEXT); + } + + lvfi.flags = LVFI_PARAM; + lvfi.lParam = l_param2; + idx = ListView_FindItem(ld->listview, -1, &lvfi); + if (idx >= 0) { + ListView_GetItemText(ld->listview, idx, 0, text2, MAX_ITEM_TEXT); + } + + res = lstrcmp(text1, text2); + if (listbox->sortdirection == EL_SORT_DESCENDING) { + res *= -1; + } + return res; +} + +void win32_listbox_sort(win32_element_t *listbox) { + listbox_data_t *ld; + + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + + ListView_SortItems(ld->listview, win32_listbox_sort_compare, (LPARAM) listbox); +} + + +static LRESULT CALLBACK +win32_listbox_wnd_proc(HWND hw_listbox, UINT msg, WPARAM w_param, LPARAM l_param) { + win32_element_t *listbox; + listbox_data_t *ld; + LPCREATESTRUCT cs = (LPCREATESTRUCT) l_param; + LPNMHDR nmh; + LPNMLISTVIEW nmlv; + LONG extra_style = LVS_NOCOLUMNHEADER; + + switch (msg) { + case WM_CREATE: + /* Attach the treeview address to our HWND. */ + listbox = (win32_element_t *) cs->lpCreateParams; + g_assert(listbox != NULL); + listbox->h_wnd = hw_listbox; + SetWindowLong(hw_listbox, GWL_USERDATA, (LONG) listbox); + + if (listbox->minwidth) { + extra_style = 0; + } + + ld = g_malloc(sizeof(listbox_data_t)); + + ld->listview = CreateWindowEx( + WS_EX_CLIENTEDGE, + WC_LISTVIEW, + "", + WS_CHILD | WS_VISIBLE | + LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | extra_style, + 0, 0, 0, 50, + hw_listbox, + NULL, + (HINSTANCE) GetWindowLong(hw_listbox, GWL_HINSTANCE), + NULL); + + ld->num_cols = 0; + ld->cur_col = 0; + ld->cur_item = 0; + ld->last_col_min_width = 0; + ld->onselect = NULL; + win32_element_set_data(listbox, WIN32_LISTBOX_DATA, ld); + + ListView_SetExtendedListViewStyle(ld->listview, LVS_EX_FULLROWSELECT); + + listbox->minwidth = 0; + listbox->minheight = 50; + + break; + case WM_SIZE: + win32_listbox_resize(hw_listbox); + break; + case WM_NOTIFY: + nmh = (LPNMHDR) l_param; + switch (nmh->code) { + case LVN_ITEMCHANGED: + listbox = (win32_element_t *) GetWindowLong(hw_listbox, GWL_USERDATA); + win32_element_assert(listbox); + ld = (listbox_data_t *) win32_element_get_data(listbox, WIN32_LISTBOX_DATA); + g_assert(ld != NULL); + nmlv = (LPNMLISTVIEW) l_param; + + if (ld->onselect) { + ld->onselect(listbox, nmlv); + } + break; + default: + break; + } + break; + default: + return(DefWindowProc(hw_listbox, msg, w_param, l_param)); + } + return(DefWindowProc(hw_listbox, msg, w_param, l_param)); +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-listbox.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-listbox.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-listbox.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-listbox.h 2004-06-10 10:07:47.000000000 -0500 @@ -0,0 +1,85 @@ +#ifndef __WIN32_LISTBOX_H__ +#define __WIN32_LISTBOX_H__ + +/* + * Create a listbox element. + */ +win32_element_t * win32_listbox_new(HWND hw_parent, gboolean show_header); + +/* + * Add a column "label" should be NULL for <listcol> and non-NULL for + * <listheader>. + */ +void win32_listbox_add_column(win32_element_t *listbox, gchar *id, gchar *label); + +/* + * Add a listbox item (row). + */ +gint win32_listbox_add_item(win32_element_t *listbox, gint row, gchar *id, gchar *text); + +/* + * Delete a listbox item (row). + */ +void win32_listbox_delete_item(win32_element_t *listbox, gint row); + +/* + * Add a cell to a listbox item. + */ +void win32_listbox_add_cell(win32_element_t *listbox, gchar *id, gchar *text); + +/* + * Set the text in a particular row/column. + */ +void win32_listbox_set_text(win32_element_t *listbox, gint row, gint column, gchar *text); +/* + * Get the text in a particular row/column. Return NULL if not found. + */ +gchar * win32_listbox_get_text(win32_element_t *listbox, gint row, gint column); + +/* + * Associate a data pointer with a row. + */ +void win32_listbox_set_row_data(win32_element_t *listbox, gint row, gpointer data); + +/* + * Fetch the data pointer associated with a row. + */ +gpointer win32_listbox_get_row_data(win32_element_t *listbox, gint row); + +/* + * Set the selected row in a listbox. + */ +void win32_listbox_set_selected(win32_element_t *listbox, gint row); + +/* + * Fetch the selected row in a listbox. + */ +gint win32_listbox_get_selected(win32_element_t *listbox); + +/* + * Find the listbox's minimum size. + */ +void win32_listbox_minimum_size(win32_element_t *listbox); + +/* + * Set the selection callback for a listbox. + */ +void win32_listbox_set_onselect(win32_element_t *listbox, void (*selfunc)()); + +/* + * Return the row containing "text" in the specified column. Return -1 + * otherwise. + */ +gint win32_listbox_find_text(win32_element_t *listbox, gint column, gchar *text); + +/* + * Return the number of rows in the listbox. + */ +gint win32_listbox_get_row_count(win32_element_t *listbox); + +/* + * Clear all items from the listbox. + */ +void win32_listbox_clear(win32_element_t *listbox); + +#endif /* win32-listbox.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-menulist.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-menulist.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-menulist.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-menulist.c 2004-06-11 10:57:31.000000000 -0500 @@ -0,0 +1,185 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "glib.h" + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +static void win32_menulist_size_adjust(win32_element_t *ml_el, gchar *text); + +/* + * Create a menulist control. + */ + +win32_element_t * +win32_menulist_new(HWND hw_parent) { + win32_element_t *menulist; + + g_assert(hw_parent != NULL); + + menulist = win32_element_new(NULL); + + menulist->h_wnd = CreateWindow( + "COMBOBOX", + "MenuList", + WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, + 0, 0, 0, 0, + hw_parent, + (HMENU) ID_MENULIST, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + /* Attach the menulist address to our HWND. */ + SetWindowLong(menulist->h_wnd, GWL_USERDATA, (LONG) menulist); + + SendMessage(menulist->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_menulist_size_adjust(menulist, "ABCabc"); + + ShowWindow(menulist->h_wnd, SW_SHOW); + UpdateWindow(menulist->h_wnd); + + return menulist; +} + +/* + * Public functions + */ + +/* + * Add a menu item + */ +void +win32_menulist_add(win32_element_t *ml_el, gchar *item, gboolean selected) { + int sel; + SIZE sz; + + win32_element_assert(ml_el); + + sel = SendMessage(ml_el->h_wnd, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) item); + if (selected) + win32_menulist_set_selection(ml_el, sel); + + win32_get_text_size(ml_el->h_wnd, item, &sz); + if (sz.cx > ml_el->minwidth) + win32_menulist_size_adjust(ml_el, item); +} + +/* + * Set the current selection + */ +void +win32_menulist_set_selection(win32_element_t *ml_el, int sel) { + win32_element_assert(ml_el); + + SendMessage(ml_el->h_wnd, CB_SETCURSEL, (WPARAM) sel, 0); + + if (ml_el->oncommand != NULL) ml_el->oncommand(ml_el); +} + +/* + * Get the current selection + */ +int +win32_menulist_get_selection(win32_element_t *ml_el) { + int ret; + + win32_element_assert(ml_el); + + ret = SendMessage(ml_el->h_wnd, CB_GETCURSEL, 0, 0); + if (ret == CB_ERR) { + return -1; + } + return ret; +} + +/* + * Get the item string. Returns NULL if the item is invalid. Result + * must be freed. + */ +gchar * win32_menulist_get_string(win32_element_t *ml_el, gint item) { + int len; + gchar *str; + + win32_element_assert(ml_el); + + len = SendMessage(ml_el->h_wnd, CB_GETLBTEXT, (WPARAM) item, 0); + if (len == CB_ERR) { + return NULL; + } + str = g_malloc(len); + len = SendMessage(ml_el->h_wnd, CB_GETLBTEXT, (WPARAM) item, (LPARAM) (LPCSTR) str); + if (len == CB_ERR) { + g_free(str); + return NULL; + } + return str; +} + + +/* + * Given a string, finds its selection index. Returns -1 if not found. + */ +int win32_menulist_find_string(win32_element_t *ml_el, gchar *str) { + LRESULT res; + + win32_element_assert(ml_el); + + if (str == NULL) { + return -1; + } + + res = SendMessage(ml_el->h_wnd, CB_FINDSTRINGEXACT, (WPARAM) -1, (LPARAM) str); + if (res == CB_ERR) { + return -1; + } + return res; +} + +/* + * Private functions + */ + +static void +win32_menulist_size_adjust(win32_element_t *ml_el, gchar *text) { + SIZE sz; + LONG width, height; + RECT mr; + POINT pt; + gboolean changed = FALSE; + + win32_element_assert(ml_el); + + GetWindowRect(ml_el->h_wnd, &mr); + height = mr.bottom - mr.top; + + /* XXX - There doesn't appear to be a way to get the width of the drop + * down tab, so we currently guess. */ + win32_get_text_size(ml_el->h_wnd, text, &sz); + width = sz.cx + DIALOG2PIXELX(22); + if (width > ml_el->minwidth) { + ml_el->minwidth = width; + changed = TRUE; + } + if (height > ml_el->minheight) { + ml_el->minheight = height; + changed = TRUE; + } + + if (changed) { + pt.x = mr.left; + pt.y = mr.top; + ScreenToClient(GetParent(ml_el->h_wnd), &pt); + MoveWindow(ml_el->h_wnd, pt.x, pt.y, width, height, TRUE); + } +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-menulist.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-menulist.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-menulist.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-menulist.h 2004-06-11 10:59:22.000000000 -0500 @@ -0,0 +1,36 @@ +#ifndef __WIN32_MENULIST_H__ +#define __WIN32_MENULIST_H__ + +#define ID_MENULIST 5005 + +win32_element_t * win32_menulist_new(HWND); + +/* + * Add an item to the menu. + */ +void win32_menulist_add(win32_element_t *ml_el, gchar *item, gboolean selected); + +/* + * Set the current selection (starting from zero). Runs the element's + * oncommand() function afterward, if present. + */ +void win32_menulist_set_selection(win32_element_t *ml_el, int sel); + +/* + * Get the current selection (starts from zero). Returns -1 if there is + * no selection. + */ +int win32_menulist_get_selection(win32_element_t *ml_el); + +/* + * Get the item string. Returns NULL if the item is invalid. Returned + * data must be freed. + */ +gchar * win32_menulist_get_string(win32_element_t *ml_el, gint item); + +/* + * Given a string, finds its selection index. Returns -1 if not found. + */ +int win32_menulist_find_string(win32_element_t *ml_el, gchar *str); + +#endif /* win32-menulist.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-progressmeter.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-progressmeter.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-progressmeter.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-progressmeter.c 2004-05-03 14:57:28.000000000 -0500 @@ -0,0 +1,69 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +/* + * Create a progressmeter / Progress Bar control. + */ + +win32_element_t * +win32_progressmeter_new(HWND hw_parent) { + win32_element_t *progressmeter; + + g_assert(hw_parent != NULL); + + progressmeter = win32_element_new(NULL); + + progressmeter->h_wnd = CreateWindowEx( + 0, PROGRESS_CLASS, + NULL, + WS_CHILD | WS_VISIBLE | PBS_SMOOTH, + 0, 0, 120, 20, + hw_parent, + (HMENU) NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(progressmeter->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + progressmeter->minwidth = 120; + progressmeter->minheight = 20; + + ShowWindow(progressmeter->h_wnd, SW_SHOW); + UpdateWindow(progressmeter->h_wnd); + + /* Attach the progressmeter address to our HWND. */ + SetWindowLong(progressmeter->h_wnd, GWL_USERDATA, (LONG) progressmeter); + + return progressmeter; +} + +/* + * XXX - Apparently you can only set PBS_SMOOTH at control creation time. + * This means that win32_progressmeter_set_smooth() below doesn't work. + */ + +void +win32_progressmeter_set_smooth(HWND hwnd, gboolean smooth) { + LONG pm_style; + + pm_style = GetWindowLong(hwnd, GWL_STYLE); + if (smooth) + pm_style |= PBS_SMOOTH; + else + pm_style &= ~PBS_SMOOTH; + SetWindowLong(hwnd, GWL_STYLE, pm_style); +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-progressmeter.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-progressmeter.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-progressmeter.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-progressmeter.h 2004-05-03 14:37:59.000000000 -0500 @@ -0,0 +1,13 @@ +#ifndef __WIN32_PROGRESSMETER_H__ +#define __WIN32_PROGRESSMETER_H__ + + +win32_element_t * win32_progressmeter_new(HWND); + +/* + * Determines whether a progressmeter is smooth or chunky (the Windows + * default) or not. + */ +void win32_progressmeter_set_smooth(HWND hwnd, gboolean smooth); + +#endif /* win32-progressmeter.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-radio.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-radio.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-radio.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-radio.c 2004-05-21 16:24:58.000000000 -0500 @@ -0,0 +1,121 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "glib.h" + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#define ATTACHED_DATA_ID "_win32_radio_attached_data" + +/* + * Create a radio control. + */ + +win32_element_t * +win32_radio_new(HWND hw_parent, LPCSTR label, gboolean group_start) { + win32_element_t *radio; + SIZE sz; + DWORD wstyle = WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON; + + g_assert(hw_parent != NULL); + + if (group_start) + wstyle |= WS_GROUP; + + radio = win32_element_new(NULL); + + radio->h_wnd = CreateWindow( + "BUTTON", + label, + wstyle, + 0, 0, 0, 0, + hw_parent, + (HMENU) NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(radio->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(radio->h_wnd, label, &sz); + /* XXX - Surely we can do better than this. */ + sz.cx += DIALOG2PIXELX(15); + sz.cy = DIALOG2PIXELY(14); + MoveWindow(radio->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + radio->minwidth = sz.cx; + radio->minheight = sz.cy; + + ShowWindow(radio->h_wnd, SW_SHOW); + UpdateWindow(radio->h_wnd); + + /* Attach the radio address to our HWND. */ + SetWindowLong(radio->h_wnd, GWL_USERDATA, (LONG) radio); + + return radio; +} + +/* + * Get the state of a radio + */ +gboolean +win32_radio_get_state(win32_element_t *rd_el) { + int state; + + win32_element_assert(rd_el); + + state = SendMessage(rd_el->h_wnd, BM_GETCHECK, 0, 0); + return state == BST_CHECKED ? TRUE : FALSE; +} + +/* + * Set the state of a radio + */ +void +win32_radio_set_state(win32_element_t *rd_el, gboolean state) { + win32_element_assert(rd_el); + + SendMessage(rd_el->h_wnd, BM_SETCHECK, + state ? (WPARAM) BST_CHECKED : (WPARAM) BST_UNCHECKED, 0); +} + +/* + * Attach a gboolean pointer to a radio. This is meant to be used + * in conjunction with win32_radio_toggle_attached_data(), below. + */ +void +win32_radio_attach_data(win32_element_t *rd_el, gboolean *toggle_val) { + win32_element_assert(rd_el); + + win32_element_set_data(rd_el, ATTACHED_DATA_ID, toggle_val); + + SendMessage(rd_el->h_wnd, BM_SETCHECK, + *toggle_val ? (WPARAM) BST_CHECKED : (WPARAM) BST_UNCHECKED, 0); +} + +/* + * Toggle the variable pointed to by ATTACHED_DATA_ID. An assertion is + * thrown if nothing is associated to ATTACHED_DATA_ID. + */ +void +win32_radio_toggle_attached_data(win32_element_t *rd_el) { + gboolean *toggle_val; + + win32_element_assert(rd_el); + toggle_val = win32_element_get_data(rd_el, ATTACHED_DATA_ID); + g_assert(toggle_val != NULL); + + if (SendMessage(rd_el->h_wnd, BM_GETCHECK, 0, 0) == BST_CHECKED) + *toggle_val = TRUE; + else + *toggle_val = FALSE; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-radio.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-radio.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-radio.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-radio.h 2004-05-21 16:24:15.000000000 -0500 @@ -0,0 +1,29 @@ +#ifndef __WIN32_RADIO_H__ +#define __WIN32_RADIO_H__ + + +win32_element_t *win32_radio_new(HWND, LPCSTR, gboolean); + +/* + * Get the state of a radio + */ +gboolean win32_radio_get_state(win32_element_t *rd_el); + +/* + * Set the state of a radio + */ +void win32_radio_set_state(win32_element_t *rd_el, gboolean state); + +/* + * Attach a gboolean pointer to a radio. This is meant to be used + * in conjunction with win32_radio_toggle_attached_data(), below. + */ +void win32_radio_attach_data(win32_element_t *rd_el, gboolean *toggle_val); + +/* + * Toggle the gboolean associated with a radio. Suitable for + * use as an oncommand() routine. + */ +void win32_radio_toggle_attached_data(win32_element_t *rd_el); + +#endif /* win32-radio.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-spacer.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-spacer.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-spacer.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-spacer.c 2004-05-17 11:58:25.000000000 -0500 @@ -0,0 +1,47 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +/* + * Create a <spacer> element, implemented as a static control. + */ + +win32_element_t * +win32_spacer_new(HWND hw_parent) { + win32_element_t *spacer; + + g_assert(hw_parent != NULL); + + spacer = win32_element_new(NULL); + + spacer->h_wnd = CreateWindow( + "STATIC", + "", + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + + ShowWindow(spacer->h_wnd, SW_SHOW); + UpdateWindow(spacer->h_wnd); + + /* Attach the spacer address to our HWND. */ + SetWindowLong(spacer->h_wnd, GWL_USERDATA, (LONG) spacer); + + return spacer; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-spacer.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-spacer.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-spacer.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-spacer.h 2004-05-17 11:54:51.000000000 -0500 @@ -0,0 +1,7 @@ +#ifndef __WIN32_SPACER_H__ +#define __WIN32_SPACER_H__ + + +win32_element_t * win32_spacer_new(HWND); + +#endif /* win32-spacer.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-textbox.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-textbox.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-textbox.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-textbox.c 2004-06-17 09:13:44.000000000 -0500 @@ -0,0 +1,186 @@ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> +#include <richedit.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +static void win32_textbox_destroy(win32_element_t *textbox, gboolean destroy_window); +static void win32_textbox_minimum_size(win32_element_t *tree); + +typedef struct _textbox_data_t { + gint rows; +} textbox_data_t; + +#define WIN32_TEXTBOX_DATA "_win32_textbox_data" + +/* + * Create a textbox control. + */ + +win32_element_t * +win32_textbox_new(HWND hw_parent, gboolean multiline) { + win32_element_t *textbox; + textbox_data_t *td; + SIZE sz; + LONG extra_style = 0; + + if (multiline) { + extra_style = ES_MULTILINE; + } + + g_assert(hw_parent != NULL); + + textbox = win32_element_new(NULL); + + textbox->h_wnd = CreateWindowEx( + WS_EX_CLIENTEDGE, + RICHEDIT_CLASS, + NULL, + WS_CHILD | WS_VISIBLE | + ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_WANTRETURN | extra_style, + 0, 0, 0, 0, + hw_parent, + (HMENU) ID_TEXTBOX, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPSTR) NULL); + + SendMessage(textbox->h_wnd, WM_SETFONT, + (WPARAM) GetStockObject(DEFAULT_GUI_FONT), TRUE); + + win32_get_text_size(textbox->h_wnd, "ABCabc", &sz); + sz.cx += 4; + sz.cy += 4; + MoveWindow(textbox->h_wnd, 0, 0, sz.cx, sz.cy, TRUE); + + textbox->minwidth = sz.cx; + textbox->minheight = sz.cy; + + ShowWindow(textbox->h_wnd, SW_SHOW); + UpdateWindow(textbox->h_wnd); + + /* Attach the textbox address to our HWND. */ + SetWindowLong(textbox->h_wnd, GWL_USERDATA, (LONG) textbox); + + td = g_malloc(sizeof(textbox_data_t)); + td->rows = 1; + + win32_element_set_data(textbox, WIN32_TEXTBOX_DATA, td); + + return textbox; +} + +/* + * Public functions + */ + +void +win32_textbox_set_text(win32_element_t *textbox, gchar *text) { + win32_element_assert(textbox); + + SetWindowText(textbox->h_wnd, text); +} + +gchar * +win32_textbox_get_text(win32_element_t *textbox) { + int len; + gchar *text; + + win32_element_assert(textbox); + + len = GetWindowTextLength(textbox->h_wnd) + 1; + text = g_malloc(len); + GetWindowText(textbox->h_wnd, text, len); + return text; +} + +/* + * Set the number of rows displayed. + */ +void win32_textbox_set_row_count(win32_element_t *textbox, gint rows) { + textbox_data_t *td; + + win32_element_assert(textbox); + td = (textbox_data_t *) win32_element_get_data(textbox, WIN32_TEXTBOX_DATA); + + td->rows = rows; + win32_textbox_minimum_size(textbox); +} + +/* + * Get the current character formatting. If get_sel is TRUE, gets + * the formatting of the current selection. Otherwise the default + * format is used. + */ +void win32_textbox_get_char_format(win32_element_t *textbox, CHARFORMAT *fmt, gboolean get_sel) { + win32_element_assert(textbox); + + SendMessage(textbox->h_wnd, EM_GETCHARFORMAT, (WPARAM) (BOOL) get_sel, + (LPARAM) (CHARFORMAT FAR *) fmt); +} + +/* + * Insert text at the specified position. If pos is -1, the text is appended. + * If char_fmt is NULL, the default formatting is used. + */ +void win32_textbox_insert(win32_element_t *textbox, gchar *text, gint pos, CHARFORMAT *char_fmt) { + + win32_element_assert(textbox); + + SendMessage(textbox->h_wnd, EM_SETSEL, (WPARAM) (INT) pos, (LPARAM) (INT) pos); + if (char_fmt) { + SendMessage(textbox->h_wnd, EM_SETCHARFORMAT, (WPARAM) (UINT) SCF_SELECTION, + (LPARAM) (CHARFORMAT FAR *) char_fmt); + } + SendMessage(textbox->h_wnd, EM_REPLACESEL, (WPARAM) (BOOL) FALSE, (LPARAM) (LPCTSTR) text); +} + +/* + * Private routines + */ + +static void +win32_textbox_destroy(win32_element_t *textbox, gboolean destroy_window) { + textbox_data_t *td; + + win32_element_assert(textbox); + td = (textbox_data_t *) win32_element_get_data(textbox, WIN32_TEXTBOX_DATA); + + g_free(td); +} + +static void +win32_textbox_minimum_size(win32_element_t *textbox) { + textbox_data_t *td; + RECT tr; + HDC hdc; + TEXTMETRIC tm; + int height; + + win32_element_assert(textbox); + td = (textbox_data_t *) win32_element_get_data(textbox, WIN32_TEXTBOX_DATA); + + SendMessage(textbox->h_wnd, EM_GETRECT, 0, (LPARAM) &tr); + + hdc = GetDC(textbox->h_wnd); + GetTextMetrics(hdc, &tm); + ReleaseDC(textbox->h_wnd, hdc); + + height = (tm.tmHeight + tm.tmExternalLeading) * td->rows; + if (height > tr.bottom - tr.top) { + if (height > textbox->minheight) { + textbox->minheight = height; + } + win32_element_resize(textbox, win32_element_get_width(textbox), height); + } +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-textbox.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-textbox.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-textbox.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-textbox.h 2004-06-09 15:50:41.000000000 -0500 @@ -0,0 +1,39 @@ +#ifndef __WIN32_TEXTBOX_H__ +#define __WIN32_TEXTBOX_H__ + +#include <richedit.h> + +#define ID_TEXTBOX 5006 + +win32_element_t *win32_textbox_new(HWND hw_parent, gboolean multiline); + +/* + * Set the text in a textbox. + */ +void win32_textbox_set_text(win32_element_t *textbox, gchar *text); + +/* + * Get the text in a textbox. The result is a freshly-allocated string + * which must be freed by the caller. + */ +gchar * win32_textbox_get_text(win32_element_t *textbox); + +/* + * Set the number of rows displayed. + */ +void win32_textbox_set_row_count(win32_element_t *textbox, gint rows); + +/* + * Get the current character formatting. If get_sel is TRUE, gets + * the formatting of the current selection. Otherwise the default + * format is used. + */ +void win32_textbox_get_char_format(win32_element_t *textbox, CHARFORMAT *char_fmt, gboolean get_sel); + +/* + * Insert text at the specified position. If pos is -1, the text is appended. + * If char_fmt is NULL, the default formatting is used. + */ +void win32_textbox_insert(win32_element_t *textbox, gchar *text, gint pos, CHARFORMAT *char_fmt); + +#endif /* win32-textbox.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-tree.c ethereal-win32/xulender/win32-c-sdk/stdelements/win32-tree.c --- ethereal/xulender/win32-c-sdk/stdelements/win32-tree.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-tree.c 2004-07-01 12:53:21.000000000 -0500 @@ -0,0 +1,521 @@ +/* + * Tree element. We need to do the following: + * - Provide columns and column headers + * - Hide column headers (what do we do if one is hidden, and others aren't?) + * There's an HDS_HIDDEN style, BTW. + * - Custom-draw tree items, so that we get columns right + * - + * + * XXX - The XULPlanet docs say that tree columns can be separated by splitters + * to make them adjustable. Do we implement this? + * + * Windows doesn't have a multi-column tree control, so we have to + * make a custom control using a "tree view" inside a "header". + * + */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#include "win32-tree.h" + +#include <epan/epan.h> +#include <epan/filesystem.h> +#include <epan/epan_dissect.h> + +/* Structures */ + +typedef struct _tree_el_data_t { + HWND header; + HWND treeview; + gboolean hideheader; + GList *item_stack; + HTREEITEM cur_item; + gboolean open_item; + void (*onselect)(); +} tree_el_data_t; + +static void win32_tree_destroy(win32_element_t *tree, gboolean destroy_window); +static LRESULT CALLBACK win32_tree_wnd_proc(HWND, UINT, WPARAM, LPARAM); +static void win32_tree_resize(HWND hw_tree); +static LRESULT win32_tree_notify(HWND, LPARAM, capture_file *); + +#define EWC_TREE_PANE "TreePane" +#define WIN32_TREE_DATA "_win32_tree_data" + +/* + * Public routines + */ + +/* + * Creates a tree (header + treeview) control + */ + +win32_element_t * +win32_tree_new(HWND hw_parent) { + win32_element_t *tree; + WNDCLASS wc; + + wc.lpszClassName = EWC_TREE_PANE; + wc.lpfnWndProc = win32_tree_wnd_proc; + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH) (COLOR_WINDOWFRAME+1); + wc.lpszMenuName = NULL; + + RegisterClass(&wc); + + g_assert(hw_parent != NULL); + + tree = win32_element_new(NULL); + + CreateWindowEx( + WS_EX_CLIENTEDGE, + EWC_TREE_PANE, + EWC_TREE_PANE, + WS_CHILD | WS_VISIBLE, + 0, 0, 0, 0, + hw_parent, + NULL, + (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE), + (LPVOID) tree); + + ShowWindow(tree->h_wnd, SW_SHOW); + UpdateWindow(tree->h_wnd); + + return tree; +} + +void +win32_tree_clear(HWND hw_tree) { + win32_element_t *tree = (win32_element_t *) GetWindowLong(hw_tree, GWL_USERDATA); + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + SendMessage(td->treeview, WM_SETREDRAW, FALSE, 0); + /* Row and cell data is freed in the wnd_proc */ + TreeView_DeleteAllItems(td->treeview); + SendMessage(td->treeview, WM_SETREDRAW, TRUE, 0); +} + +void +win32_tree_add_column(win32_element_t *tree, gchar *id, gchar *label, + gboolean primary, gboolean hideheader) { + tree_el_data_t *td; + int count; + LONG h_style; + HDITEM hdi; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + /* XXX - XUL specifies "hideheader" in individual tree column headers. + * This doesn't make sense e.g. what if you had alternating hidden and + * visible headers? If we encounter a hidden column header, we hide + * the entire thing. */ + if (hideheader) { + td->hideheader = TRUE; + h_style = GetWindowLong(td->header, GWL_STYLE); + h_style |= HDS_HIDDEN; + SetWindowLong(td->header, GWL_STYLE, h_style); + } + + hdi.mask = HDI_TEXT | HDI_FORMAT; + hdi.pszText = label; + hdi.cchTextMax = lstrlen(label); + hdi.fmt = HDF_LEFT | HDF_STRING; + hdi.lParam = (LPARAM) g_strdup(id); + count = SendMessage(td->header, HDM_GETITEMCOUNT, 0, 0); + SendMessage(td->header, HDM_INSERTITEM, (WPARAM) count, (LPARAM) &hdi); +} + +/* + * XXX - tree_push() and tree_pop() are lame attempts to get around unused + * variable warnings in the automatically generated code. + */ +void +win32_tree_push(win32_element_t *tree) { + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + td->item_stack = g_list_prepend(td->item_stack, td->cur_item); +} + +void +win32_tree_pop(win32_element_t *tree) { + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + td->item_stack = g_list_first(td->item_stack); + g_assert(td->item_stack != NULL); + td->cur_item = (HTREEITEM) td->item_stack->data; + td->item_stack = g_list_remove(td->item_stack, td->cur_item); + + /* The treeitem has to have children in order for this to work, apparently. */ + if (td->open_item) { + SendMessage(td->treeview, TVM_EXPAND, (WPARAM) (UINT) TVE_EXPAND, + (LPARAM) (HTREEITEM) td->cur_item); + td->open_item = FALSE; + } +} + +void +win32_tree_flag_open_item(win32_element_t *tree) { + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + td->open_item = TRUE; +} + +void +win32_tree_add_row(win32_element_t *tree, gchar *id) { + tree_el_data_t *td; + tree_row *row; + TVITEM tv_node; + TVINSERTSTRUCT tv_is; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + row = g_malloc(sizeof(tree_row)); + row->id = g_strdup(id); + row->cells = NULL; + + ZeroMemory(&tv_node, sizeof(tv_node)); + ZeroMemory(&tv_is, sizeof(tv_is)); + tv_node.mask = TVIF_PARAM; + tv_node.lParam = (LONG) row; + + td->item_stack = g_list_first(td->item_stack); + if (td->item_stack != NULL) + tv_is.hParent = (HTREEITEM) td->cur_item; + else + tv_is.hParent = TVI_ROOT; + tv_is.hInsertAfter = TVI_LAST; + tv_is.item = tv_node; + + td->cur_item = (HTREEITEM) SendMessage(td->treeview, TVM_INSERTITEM, 0, + (LPARAM) (LPTVINSERTSTRUCT) &tv_is); +} + +void +win32_tree_add_cell(win32_element_t *tree, gchar *id, gchar *text) { + tree_el_data_t *td; + tree_row *row; + tree_cell *cell; + TVITEM tvi; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + g_assert(td->cur_item != NULL); + + cell = g_malloc(sizeof(tree_cell)); + cell->id = g_strdup(id); + cell->text = g_strdup(text); + + ZeroMemory(&tvi, sizeof(tvi)); + tvi.mask = TVIF_PARAM; + tvi.hItem = td->cur_item; + TreeView_GetItem(td->treeview, &tvi); + row = (tree_row *) tvi.lParam; + row->cells = g_list_append(row->cells, cell); +} + +void +win32_tree_minimum_size(win32_element_t *tree) { + tree_el_data_t *td; + RECT tvir, hir; + SIZE sz; + HTREEITEM item; + TVITEM tvi; + tree_row *row; + tree_cell *cell; + gint width; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + tree->minwidth = 0; + tree->minheight = 0; + + /* XXX - We need to check more than just the first column. */ + + Header_GetItemRect(td->header, 0, &hir); + /* XXX - This returns an abnormal width. We'll comment it out for now. */ +// tree->minwidth += hir.right - hir.left; + tree->minheight += hir.bottom - hir.top; + + item = TreeView_GetFirstVisible(td->treeview); + + while (item) { + tvi.mask = TVIF_PARAM; + tvi.hItem = item; + TreeView_GetItem(td->treeview, &tvi); + row = (tree_row *) tvi.lParam; + row->cells = g_list_first(row->cells); + g_assert(row->cells != NULL); + cell = row->cells->data; + g_assert (cell != NULL); + + win32_get_text_size(td->treeview, (LPCSTR) cell->text, &sz); + + TreeView_GetItemRect(td->treeview, item, &tvir, TRUE); + + width = tvir.left + sz.cx + DIALOG2PIXELY(22); + if (width > tree->minwidth) { + tree->minwidth = width; + } + item = TreeView_GetNextVisible(td->treeview, item); + if (item) + tree->minheight += TreeView_GetItemHeight(td->treeview); + } +} + +void +win32_tree_set_onselect(win32_element_t *tree, void (*selfunc)()) { + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + td->onselect = selfunc; +} + +/* + * Private routines + */ + +static void +win32_tree_destroy(win32_element_t *tree, gboolean destroy_window) { + tree_el_data_t *td; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + DestroyWindow(td->header); + DestroyWindow(td->treeview); + g_free(td); +} + +static LRESULT CALLBACK +win32_tree_wnd_proc(HWND hw_tree, UINT msg, WPARAM w_param, LPARAM l_param) { + win32_element_t *tree; + tree_el_data_t *td; + tree_row *row; + tree_cell *cell; + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_tree, GWL_HINSTANCE); + LPCREATESTRUCT cs = (LPCREATESTRUCT) l_param; + RECT pr; + HDLAYOUT hdl; + WINDOWPOS hdl_wpos; + LPNMTVCUSTOMDRAW tvcdparam; + LPNMHDR lpnmh; + HTREEITEM item; + TVITEM tvi; + TVHITTESTINFO tvht; + DWORD mpos; + gint tv_width; + LPNMTREEVIEW tv_sel; + GList *cells; + + switch (msg) { + case WM_CREATE: + /* Attach the treeview address to our HWND. */ + tree = (win32_element_t *) cs->lpCreateParams; + g_assert(tree != NULL); + tree->h_wnd = hw_tree; + SetWindowLong(hw_tree, GWL_USERDATA, (LONG) tree); + + td = g_malloc(sizeof(tree_el_data_t)); + + td->header = CreateWindowEx( + 0, + WC_HEADER, + "", + WS_CHILD | WS_TABSTOP | WS_VISIBLE | HDS_HOTTRACK, + 0, 0, 0, 0, + hw_tree, + (HMENU) 0, + h_instance, + NULL); + td->treeview = CreateWindowEx( + 0, + WC_TREEVIEW, + "", + WS_CHILD | WS_TABSTOP | WS_VISIBLE | + TVS_DISABLEDRAGDROP | TVS_HASBUTTONS | + TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS, + 0, 0, 0, 0, + hw_tree, + (HMENU) 0, + h_instance, + NULL); + td->hideheader = FALSE; + td->item_stack = NULL; + td->cur_item = NULL; + td->open_item = FALSE; + td->onselect = NULL; + win32_element_set_data(tree, WIN32_TREE_DATA, td); + + GetClientRect(hw_tree, &pr); + hdl.prc = ≺ + hdl.pwpos = &hdl_wpos; + SendMessage(td->header, HDM_LAYOUT, 0, (LONG) &hdl); + tree->minwidth = 100; + tree->minheight = hdl_wpos.cy * 3; + + break; + case WM_SIZE: + win32_tree_resize (hw_tree); + break; + case WM_NOTIFY: + lpnmh = (LPNMHDR) l_param; + switch (lpnmh->code) { + case NM_CUSTOMDRAW: /* We have to draw each column by hand. */ + tvcdparam = (LPNMTVCUSTOMDRAW) l_param; + + switch (tvcdparam->nmcd.dwDrawStage) { + case CDDS_PREPAINT: + return CDRF_NOTIFYITEMDRAW; + break; + case CDDS_ITEMPREPAINT: + return CDRF_DODEFAULT | CDRF_NOTIFYPOSTPAINT; + case CDDS_ITEMPOSTPAINT: + /* Bail if we're updating an empty area */ + if (IsRectEmpty(&(tvcdparam->nmcd.rc))) { + return CDRF_DODEFAULT; + } + /* Get our cell text list */ + item = (HTREEITEM) tvcdparam->nmcd.dwItemSpec; + tvi.mask = TVIF_PARAM; + tvi.hItem = item; + SendMessage(lpnmh->hwndFrom, TVM_GETITEM, 0, (LPARAM) (LPTVITEM) &tvi); + row = (tree_row *) tvi.lParam; + row->cells = g_list_first(row->cells); + /* XXX - We should probably throw an assertion if our list length != the # of columns */ + if (row->cells != NULL) { + cell = (tree_cell *) row->cells->data; + g_assert(cell != NULL); + /* XXX - We actually need to loop over all of the items in the GList. */ + GetClientRect(lpnmh->hwndFrom, &pr); + tv_width = pr.right; + + TreeView_GetItemRect(lpnmh->hwndFrom, item, &pr, TRUE); + pr.right = tv_width; + FillRect(tvcdparam->nmcd.hdc, &pr, (HBRUSH) COLOR_WINDOW + 1); + FillRect(tvcdparam->nmcd.hdc, &pr, CreateSolidBrush(tvcdparam->clrTextBk)); + if (tvcdparam->nmcd.uItemState & CDIS_FOCUS) { + DrawFocusRect(tvcdparam->nmcd.hdc, &pr); + } + pr.top++; pr.bottom--; pr.left += 2; pr.right -= 2; + SetBkColor(tvcdparam->nmcd.hdc, tvcdparam->clrTextBk); + SetTextColor(tvcdparam->nmcd.hdc, tvcdparam->clrText); + DrawText(tvcdparam->nmcd.hdc, cell->text, -1, &pr, DT_NOPREFIX | DT_END_ELLIPSIS); + } + + return CDRF_DODEFAULT; + break; + default: + return CDRF_DODEFAULT; + break; + } + break; + case NM_CLICK: + /* Since we're drawing our own labels, the TreeView provides + * a selection area that's only a couple of pixels wide. We + * catch clicks to the right of each TreeItem here, and make + * selections as needed. + */ + mpos = GetMessagePos(); + tvht.pt.x = GET_X_LPARAM(mpos); + tvht.pt.y = GET_Y_LPARAM(mpos); + ScreenToClient(lpnmh->hwndFrom, &(tvht.pt)); + item = TreeView_HitTest(lpnmh->hwndFrom, &tvht); + if (item != NULL && tvht.flags & TVHT_ONITEMRIGHT) { + TreeView_SelectItem(lpnmh->hwndFrom, item); + } + break; + case TVN_SELCHANGED: + tv_sel = (LPNMTREEVIEW) l_param; + tree = (win32_element_t *) GetWindowLong(hw_tree, GWL_USERDATA); + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + g_assert(td != NULL); + + if (td->onselect) { + td->onselect(tree, tv_sel); + } + break; + case TVN_DELETEITEM: + tv_sel = (LPNMTREEVIEW) l_param; + + row = (tree_row *) tv_sel->itemOld.lParam; + cells = g_list_first(row->cells); + while (cells) { + g_free(cells->data); + cells = g_list_next(cells); + } + g_list_free(g_list_first(row->cells)); + g_free(row); + break; + default: + break; + } + break; + return(DefWindowProc(hw_tree, msg, w_param, l_param)); + default: + return(DefWindowProc(hw_tree, msg, w_param, l_param)); + } + return 0; +} + +static void +win32_tree_resize(HWND hw_tree) { + win32_element_t *tree = (win32_element_t *) GetWindowLong(hw_tree, GWL_USERDATA); + tree_el_data_t *td; + RECT pr; + HDLAYOUT hdl; + WINDOWPOS hdl_wpos; + + win32_element_assert(tree); + td = (tree_el_data_t *) win32_element_get_data(tree, WIN32_TREE_DATA); + + GetClientRect(hw_tree, &pr); + + hdl.prc = ≺ + hdl.pwpos = &hdl_wpos; + SendMessage(td->header, HDM_LAYOUT, 0, (LONG) &hdl); + + SetWindowPos(td->header, hdl_wpos.hwndInsertAfter, hdl_wpos.x, hdl_wpos.y, + hdl_wpos.cx, hdl_wpos.cy, hdl_wpos.flags | SWP_SHOWWINDOW); + MoveWindow(td->treeview, pr.left, pr.top, pr.right - pr.left, + pr.bottom - pr.top, TRUE); +} diff -x entries -urN ethereal/xulender/win32-c-sdk/stdelements/win32-tree.h ethereal-win32/xulender/win32-c-sdk/stdelements/win32-tree.h --- ethereal/xulender/win32-c-sdk/stdelements/win32-tree.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/stdelements/win32-tree.h 2004-06-17 10:20:17.000000000 -0500 @@ -0,0 +1,66 @@ +#ifndef __WIN32_TREE_H__ +#define __WIN32_TREE_H__ + +typedef struct _tree_row { + gchar *id; + GList *cells; +} tree_row; + +typedef struct _tree_cell { + gchar *id; + gchar *text; +} tree_cell; + +/* + * Create a tree element. + */ +win32_element_t * win32_tree_new(HWND hw_parent); + +/* + * Add a column. + */ +void win32_tree_add_column(win32_element_t *tree, gchar *id, gchar *label, + gboolean primary, gboolean hideheader); + +/* + * "Push" the current treeitem so that children can be placed underneath + * it. + */ +void win32_tree_push(win32_element_t *tree); + +/* + * "Pop" the current treeitem. + */ +void win32_tree_pop(win32_element_t *tree); + +/* + * Specifies that the next item added should be open/expanded. + */ +void win32_tree_flag_open_item(win32_element_t *tree); + +/* + * Add a tree row. + */ +void win32_tree_add_row(win32_element_t *tree, gchar *id); + +/* + * Add a cell to a tree row. + */ +void win32_tree_add_cell(win32_element_t *tree, gchar *id, gchar *text); + +/* + * Find the tree's minimum size. + */ +void win32_tree_minimum_size(win32_element_t *tree); + +/* + * Set the selection callback for a tree. + */ +void win32_tree_set_onselect(win32_element_t *tree, void (*selfunc)()); + +/* + * Clear all items from the tree. + */ +void win32_tree_clear(); + +#endif /* win32-tree.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/ui_util.c ethereal-win32/xulender/win32-c-sdk/ui_util.c --- ethereal/xulender/win32-c-sdk/ui_util.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/ui_util.c 2004-05-27 10:33:48.000000000 -0500 @@ -0,0 +1,145 @@ +/* ui_util.c + * UI utility routines + * + * $Id: ui_util.c,v 1.19 2004/02/13 00:53:37 guy Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/* Originally copied from gtk/ui_util.c */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <windows.h> + +# include <io.h> + +#include "prefs.h" +#include "epan/epan.h" +#include "../../ui_util.h" +// #include "compat_macros.h" + +#include "win32-globals.h" +#include "win32-element.h" + +#ifdef HAVE_LIBPCAP + +#define PIPE_ID 1000 + +/* Called during the capture loop. Update our windows. */ +void main_window_update(void) +{ + MSG msg; + + while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} + +/* exit the main window */ +void main_window_exit(void) +{ + PostQuitMessage(0); +} + +/* quit a nested main window */ +void main_window_nested_quit(void) +{ + PostQuitMessage(0); +} + +/* quit the main window */ +void main_window_quit(void) +{ + PostQuitMessage(0); +} + +typedef struct pipe_input_tag { + gint source; + gpointer user_data; + int *child_process; + pipe_input_cb_t input_cb; + /* XXX - Since we're using PIPE_ID every time, do we need this? */ + UINT pipe_input_id; +} pipe_input_t; + + +/* The timer has expired, see if there's stuff to read from the pipe, + if so, do the callback */ +static VOID CALLBACK +pipe_timer_cb(HWND hwnd, UINT u_msg, UINT id_event, DWORD time) +{ + HANDLE handle; + DWORD avail = 0; + gboolean result, result1; + DWORD childstatus; + pipe_input_t *pipe_input = win32_element_hwnd_get_data(hwnd, "pipe_input"); + + g_assert(pipe_input != NULL); + + /* Oddly enough although Named pipes don't work on win9x, + PeekNamedPipe does !!! */ + handle = (HANDLE) _get_osfhandle (pipe_input->source); + result = PeekNamedPipe(handle, NULL, PIPE_ID, NULL, &avail, NULL); + + /* Get the child process exit status */ + result1 = GetExitCodeProcess((HANDLE)*(pipe_input->child_process), + &childstatus); + + /* If the Peek returned an error, or there are bytes to be read + or the childwatcher thread has terminated then call the normal + callback */ + if (!result || avail > 0 || childstatus != STILL_ACTIVE) { + + /* avoid reentrancy problems and stack overflow */ + KillTimer(g_hw_mainwin, pipe_input->pipe_input_id); + + /* And call the real handler */ + if (pipe_input->input_cb(pipe_input->source, pipe_input->user_data)) { + /* restore pipe handler */ + pipe_input->pipe_input_id = SetTimer(g_hw_mainwin, PIPE_ID, 200, pipe_timer_cb); + } + } +} + + +void pipe_input_set_handler(gint source, gpointer user_data, int *child_process, pipe_input_cb_t input_cb) +{ + static pipe_input_t pipe_input; + + pipe_input.source = source; + pipe_input.child_process = child_process; + pipe_input.user_data = user_data; + pipe_input.input_cb = input_cb; + + win32_element_hwnd_set_data(g_hw_mainwin, "pipe_input", &pipe_input); + + /* Tricky to use pipes in win9x, as no concept of wait. NT can + do this but that doesn't cover all win32 platforms. GTK can do + this but doesn't seem to work over processes. Attempt to do + something similar here, start a timer and check for data on every + timeout. */ + pipe_input.pipe_input_id = SetTimer(g_hw_mainwin, PIPE_ID, 200, pipe_timer_cb); +} + + +#endif /* HAVE_LIBPCAP */ Files ethereal/xulender/win32-c-sdk/vc60.pdb and ethereal-win32/xulender/win32-c-sdk/vc60.pdb differ diff -x entries -urN ethereal/xulender/win32-c-sdk/wethereal.exe.manifest ethereal-win32/xulender/win32-c-sdk/wethereal.exe.manifest --- ethereal/xulender/win32-c-sdk/wethereal.exe.manifest 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/wethereal.exe.manifest 2004-04-13 08:45:10.000000000 -0500 @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> + <assemblyIdentity + version="0.10.3.0" + processorArchitecture="X86" + name="EtherealDevelopmentTeam.Ethereal" + type="win32" + /> + <description>The world's most popular network protocol anlayzer</description> + <dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" + processorArchitecture="X86" + publicKeyToken="6595b64144ccf1df" + language="*" + /> + </dependentAssembly> + </dependency> +</assembly> diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-c-sdk.h ethereal-win32/xulender/win32-c-sdk/win32-c-sdk.h --- ethereal/xulender/win32-c-sdk/win32-c-sdk.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-c-sdk.h 2004-06-14 15:00:28.000000000 -0500 @@ -0,0 +1,24 @@ +#ifndef __WIN32_C_SDK_H__ +#define __WIN32_C_SDK_H__ + +#include "win32-element.h" + +#include "win32-box.h" +#include "win32-button.h" +#include "win32-checkbox.h" +#include "win32-deck.h" +#include "win32-description.h" +#include "win32-file-dlg.h" +#include "win32-grid.h" +#include "win32-groupbox.h" +#include "win32-listbox.h" +#include "win32-menulist.h" +#include "win32-progressmeter.h" +#include "win32-radio.h" +#include "win32-spacer.h" +#include "win32-textbox.h" +#include "win32-tree.h" + +#define COLOR_T2COLORREF(c) RGB((c)->red >> 8, (c)->green >> 8, (c)->blue >> 8) + +#endif /* win32-c-sdk.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-color-filters.c ethereal-win32/xulender/win32-c-sdk/win32-color-filters.c --- ethereal/xulender/win32-c-sdk/win32-color-filters.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-color-filters.c 2004-06-02 09:13:42.000000000 -0500 @@ -0,0 +1,300 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" + +#include <epan/epan.h> +#include <epan/filesystem.h> + +#include "glib.h" + +#include "color.h" +#include "simple_dialog.h" + +/* XXX - Lots of duplicate code originally copied from gtk/color_filters.c */ + +static gboolean read_filters(void); +static gboolean read_global_filters(void); + +/* Variables and routines defined in color.h */ + +GSList *filter_list = NULL; +GSList *removed_filter_list = NULL; + +/* delete the specified filter */ +static void +delete_color_filter(color_filter_t *colorf) { + if (colorf->filter_name != NULL) + g_free(colorf->filter_name); + if (colorf->filter_text != NULL) + g_free(colorf->filter_text); + if (colorf->c_colorfilter != NULL) + dfilter_free(colorf->c_colorfilter); + g_free(colorf); +} + +/* delete the specified filter as an iterator*/ +static void +delete_color_filter_it(gpointer filter_arg, gpointer unused _U_) { + color_filter_t *colorf = filter_arg; + delete_color_filter(colorf); +} + +/* Delete all the filters */ +static void +delete_all_color_filters (void) { + g_slist_foreach(filter_list, delete_color_filter_it, NULL); + g_slist_free(filter_list); + filter_list = NULL; + g_slist_foreach(removed_filter_list, delete_color_filter_it, NULL); + g_slist_free(removed_filter_list); + removed_filter_list = NULL; +} + +/* Initialize the filter structures (reading from file) for general running, including app startup */ +void +colfilter_init(void) { + delete_all_color_filters(); + if (!read_filters()) + read_global_filters(); +} + +/* Create a new filter */ +color_filter_t * +new_color_filter(gchar *name, /* The name of the filter to create */ + gchar *filter_string) /* The string representing the filter */ +{ + color_filter_t *colorf; + + colorf = g_malloc(sizeof (color_filter_t)); + colorf->filter_name = g_strdup(name); + colorf->filter_text = g_strdup(filter_string); + colorf->c_colorfilter = NULL; + colorf->edit_dialog = NULL; + colorf->marked = FALSE; + filter_list = g_slist_append(filter_list, colorf); + return colorf; +} + +static void +prime_edt(gpointer data, gpointer user_data) { + color_filter_t *colorf = data; + epan_dissect_t *edt = user_data; + + if (colorf->c_colorfilter != NULL) + epan_dissect_prime_dfilter(edt, colorf->c_colorfilter); +} + +void +filter_list_prime_edt(epan_dissect_t *edt) { + g_slist_foreach(filter_list, prime_edt, edt); +} + + +/* read filters from the given file */ + +/* XXX - Would it make more sense to use GStrings here instead of reallocing + our buffers? */ +static gboolean +read_filters_file(FILE *f, gpointer arg) { +#define INIT_BUF_SIZE 128 + gchar *name = NULL; + gchar *filter_exp = NULL; + guint32 name_len = INIT_BUF_SIZE; + guint32 filter_exp_len = INIT_BUF_SIZE; + guint32 i = 0; + gint32 c; + guint16 fg_r, fg_g, fg_b, bg_r, bg_g, bg_b; + gboolean skip_end_of_line = FALSE; + + name = g_malloc(name_len + 1); + filter_exp = g_malloc(filter_exp_len + 1); + + while (1) { + + if (skip_end_of_line) { + do { + c = getc(f); + } while (c != EOF && c != '\n'); + if (c == EOF) + break; + skip_end_of_line = FALSE; + } + + while ((c = getc(f)) != EOF && isspace(c)) { + if (c == '\n') { + continue; + } + } + + if (c == EOF) + break; + + /* skip # comments and invalid lines */ + if (c != '@') { + skip_end_of_line = TRUE; + continue; + } + + /* we get the @ delimiter. + * Format is: + * @name@filter expression@[background r,g,b][foreground r,g,b] + */ + + /* retrieve name */ + i = 0; + while (1) { + c = getc(f); + if (c == EOF || c == '@') + break; + if (i >= name_len) { + /* buffer isn't long enough; double its length.*/ + name_len *= 2; + name = g_realloc(name, name_len + 1); + } + name[i++] = c; + } + name[i] = '\0'; + + if (c == EOF) { + break; + } else if (i == 0) { + skip_end_of_line = TRUE; + continue; + } + + /* retrieve filter expression */ + i = 0; + while (1) { + c = getc(f); + if (c == EOF || c == '@') + break; + if (i >= filter_exp_len) { + /* buffer isn't long enough; double its length.*/ + filter_exp_len *= 2; + filter_exp = g_realloc(filter_exp, filter_exp_len + 1); + } + filter_exp[i++] = c; + } + filter_exp[i] = '\0'; + + if (c == EOF) { + break; + } else if (i == 0) { + skip_end_of_line = TRUE; + continue; + } + + /* retrieve background and foreground colors */ + if (fscanf(f,"[%hu,%hu,%hu][%hu,%hu,%hu]", + &bg_r, &bg_g, &bg_b, &fg_r, &fg_g, &fg_b) == 6) { + + /* we got a complete color filter */ + + color_filter_t *colorf; + dfilter_t *temp_dfilter; + + if (!dfilter_compile(filter_exp, &temp_dfilter)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Could not compile color filter %s from saved filters.\n%s", + name, dfilter_error_msg); + skip_end_of_line = TRUE; + continue; + } + /* + * XXX - The GTK version of this file checks to see if we can + * allocate the specified foreground and background colors. + * Do we need to do this under Windows? + */ + + colorf = new_color_filter(name, filter_exp); + colorf->c_colorfilter = temp_dfilter; + colorf->fg_color.red = fg_r; + colorf->fg_color.green = fg_g; + colorf->fg_color.blue = fg_b; + colorf->bg_color.red = bg_r; + colorf->bg_color.green = bg_g; + colorf->bg_color.blue = bg_b; + +// if (arg != NULL) +// color_add_filter_cb (colorf, arg); + } /* if sscanf */ + + skip_end_of_line = TRUE; + } + + g_free(name); + g_free(filter_exp); + return TRUE; +} + + +/* read filters from the user's filter file */ +static gboolean +read_filters(void) { + gchar *path; + FILE *f; + gboolean ret; + + /* decide what file to open (from dfilter code) */ + path = get_persconffile_path("colorfilters", FALSE); + if ((f = fopen(path, "r")) == NULL) { + if (errno != ENOENT) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Could not open filter file\n\"%s\": %s.", path, + strerror(errno)); + } + g_free(path); + return FALSE; + } + g_free(path); + path = NULL; + + ret = read_filters_file(f, NULL); + fclose(f); + return ret; +} + +/* read filters from the filter file */ +static gboolean +read_global_filters(void) +{ + gchar *path; + FILE *f; + gboolean ret; + + /* decide what file to open (from dfilter code) */ + path = get_datafile_path("colorfilters"); + if ((f = fopen(path, "r")) == NULL) { + if (errno != ENOENT) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Could not open global filter file\n\"%s\": %s.", path, + strerror(errno)); + } + g_free(path); + return FALSE; + } + g_free(path); + path = NULL; + + ret = read_filters_file(f, NULL); + fclose(f); + return ret; +} + +/* + * Convert a COLORREF to a color_t. + * XXX - The corresponding COLOR_T2COLORREF lives elsewhere, and is a macro. + */ +void colorref2color_t(COLORREF cr, color_t *ct) { + guint32 red, green, blue; + + red = GetRValue(cr); + green = GetGValue(cr); + blue = GetBValue(cr); + + ct->red = (red << 8) | red; + ct->green = (green << 8) | green; + ct->blue = (blue << 8) | blue; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-color-filters.h ethereal-win32/xulender/win32-c-sdk/win32-color-filters.h --- ethereal/xulender/win32-c-sdk/win32-color-filters.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-color-filters.h 2004-06-02 09:13:16.000000000 -0500 @@ -0,0 +1,42 @@ +/* color_filters.h + * Definitions for color filters + * + * $Id: color_filters.h,v 1.5 2004/03/14 23:55:53 deniel Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#ifndef __WIN32_COLOR_FILTERS_H__ +#define __WIN32_COLOR_FILTERS_H__ + +#define CFILTERS_CONTAINS_FILTER(filter) \ + ((filter)->num_of_filters != 0) + +void colfilter_init(void); + +//gboolean write_filters(void); +//gboolean revert_filters(void); + +color_filter_t *new_color_filter(gchar *name, gchar *filter_string); +//void remove_color_filter(color_filter_t *colorf); +//gboolean read_other_filters(gchar *path, gpointer arg); +//gboolean write_other_filters(gchar *path, gboolean only_marked); + +void colorref2color_t(COLORREF cr, color_t *ct); + +#endif /* win32-color-filters.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-file-dlg.c ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.c --- ethereal/xulender/win32-c-sdk/win32-file-dlg.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.c 2004-05-21 10:54:20.000000000 -0500 @@ -0,0 +1,37 @@ +#include <windows.h> +#include <commdlg.h> +#include <stdlib.h> + +#include "win32-file-dlg.h" + +BOOL win32_open_file (HWND h_wnd, LPSTR file_name, int len) { + static OPENFILENAME ofn; + + memset(&ofn, 0, sizeof(ofn)); + + /* XXX - Check for version and set OPENFILENAME_SIZE_VERSION_400 + where appropriate */ + // ofn.lStructSize = sizeof(ofn); + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = h_wnd; + ofn.hInstance = (HINSTANCE) GetWindowLong(h_wnd, GWL_HINSTANCE); + ofn.lpstrFilter = "Ethereal capture files (*.pcap)\0" "*.pcap\0" + "All Files (*.*)\0" "*.*\0" + "\0"; + ofn.nFilterIndex = 2; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.lpstrFile = file_name; + ofn.nMaxFile = len; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + ofn.lpstrInitialDir = NULL; + ofn.lpstrTitle = "Select a capture file"; + ofn.Flags = OFN_ENABLESIZING | OFN_ENABLETEMPLATE | OFN_EXPLORER | + OFN_FILEMUSTEXIST; + ofn.lpstrDefExt = "pcap"; + ofn.lpTemplateName = "ETHEREAL_OPENFILENAME_TEMPLATE"; + + return (GetOpenFileName(&ofn)); +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-file-dlg.h ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.h --- ethereal/xulender/win32-c-sdk/win32-file-dlg.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.h 2004-05-21 11:14:17.000000000 -0500 @@ -0,0 +1,6 @@ +#ifndef __WIN32_FILE_DLG_H__ +#define __WIN32_FILE_DLG_H__ + +BOOL win32_open_file (HWND h_wnd, LPSTR file_name, int len); + +#endif /* win32-file-dlg.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-file-dlg.rc ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.rc --- ethereal/xulender/win32-c-sdk/win32-file-dlg.rc 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-file-dlg.rc 2003-11-11 17:30:33.000000000 -0600 @@ -0,0 +1,8 @@ +ETHEREAL_OPENFILENAME_TEMPLATE DIALOG 0, 0, 150, 50 +STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL +FONT 8, "MS Shell Dlg" +{ + CHECKBOX "MAC name resolution", -1, 54, 4, 150, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Network name resolution", -1, 54, 17, 150, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Transport name resolution", -1, 54, 30, 150, 8, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP +} diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-globals.h ethereal-win32/xulender/win32-c-sdk/win32-globals.h --- ethereal/xulender/win32-c-sdk/win32-globals.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-globals.h 2004-07-01 15:30:31.000000000 -0500 @@ -0,0 +1,20 @@ +#ifndef __WIN32_GLOBALS_H__ +#define __WIN32_GLOBALS_H__ + +/* Our main instance variable */ +extern HWND g_hw_mainwin; +extern HWND g_hw_capture_info_dlg; + +extern HFONT g_fixed_font; + +extern gchar *ethereal_path; + +#define ETHEREAL_BYTEVIEW_TREEVIEW "_ethereal_byteview_treeview" +#define ETHEREAL_TREEVIEW_BYTEVIEW "_ethereal_treeview_byteview" + + +/* XXX - This needs to be moved to a better place. */ +#define ID_COMBOBOX 5003 +#define ID_GROUPBOX 5004 + +#endif /* win32-globals.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-main.c ethereal-win32/xulender/win32-c-sdk/win32-main.c --- ethereal/xulender/win32-c-sdk/win32-main.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-main.c 2004-07-14 15:28:15.000000000 -0500 @@ -0,0 +1,1831 @@ +/* win32-main.c + * + * $Id$ + * + * Ethereal - Network traffic analyzer (Windows C SDK Frontend) + * By Gerald Combs <gerald@xxxxxxxxxxxx> + * Copyright 2004 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +/* + * This is the main entry point for wethereal, a version of Ethereal that + * uses the native Windows SDK interface. A _lot_ of code has been copied + * from gtk/main.c. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include "register.h" + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "globals.h" + +#ifdef NEED_GETOPT_H +#include "getopt.h" +#endif + +#include <fcntl.h> +#include <conio.h> + +#include <epan/epan.h> +#include <epan/filesystem.h> +#include <epan/epan_dissect.h> + +#include <glib.h> +#include "util.h" +#include "version_info.h" +#include <epan/timestamp.h> +#include "capture.h" +#include "filters.h" +#include <epan/resolv.h> + +#include "color.h" +#include "ringbuffer.h" +#include "ui_util.h" +#include "pcap-util.h" +#include "disabled_protos.h" +#include "prefs.h" +#include "alert_box.h" +#include "capture-wpcap.h" +#include "simple_dialog.h" +#include "prefs-dlg.h" +#include "about-dlg.h" + +#include "win32-c-sdk.h" + +#include "win32-color-filters.h" +#include "win32-globals.h" +#include "capture-util.h" + +#include "ethereal-main.h" +#include "capture-dialog.h" +#include "capture-info-dialog.h" +#include "preferences-dialog.h" + +#include "localelements/ethereal-elements.h" + +LRESULT CALLBACK win32_main_wnd_proc( HWND, UINT, WPARAM, LPARAM); + +static void capture_start_prep(); + +/* + * XXX - A single, global cfile keeps us from having multiple files open + * at the same time. + */ + +capture_file cfile; +ts_type timestamp_type = RELATIVE; +gchar *last_open_dir = NULL; +static gboolean updated_last_open_dir = FALSE; + +TCHAR open_name[MAX_PATH] = "\0"; + +GString *comp_info_str, *runtime_info_str; +gchar *ethereal_path = NULL; + +static gboolean has_no_console = TRUE; /* TRUE if app has no console */ +static gboolean console_was_created = FALSE; /* TRUE if console was created */ +static void create_console(void); +static void destroy_console(void); +static void console_log_handler(const char *log_domain, + GLogLevelFlags log_level, const char *message, gpointer user_data); + +#ifdef HAVE_LIBPCAP +static gboolean list_link_layer_types; +#endif + +/* XXX - We can probably get rid of all of these with the possible exception + * of g_hw_mainwin */ +HWND g_hw_mainwin, g_hw_capture_dlg = NULL; +HWND g_hw_capture_info_dlg = NULL; +HFONT g_fixed_font = NULL; + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static void +print_usage(gboolean print_ver) { + + FILE *output; + + if (print_ver) { + output = stdout; + fprintf(output, "This is GNU " PACKAGE " " VERSION +#ifdef CVSVERSION + " (" CVSVERSION ")" +#endif + "\n%s\n%s\n", + comp_info_str->str, runtime_info_str->str); + } else { + output = stderr; + } +#ifdef HAVE_LIBPCAP + fprintf(output, "\n%s [ -vh ] [ -klLnpQS ] [ -a <capture autostop condition> ] ...\n", + PACKAGE); + fprintf(output, "\t[ -b <number of ringbuffer files>[:<duration>] ]\n"); + fprintf(output, "\t[ -B <byte view height> ] [ -c <count> ] [ -f <capture filter> ]\n"); + fprintf(output, "\t[ -i <interface> ] [ -m <medium font> ] [ -N <resolving> ]\n"); + fprintf(output, "\t[ -o <preference setting> ] ... [ -P <packet list height> ]\n"); + fprintf(output, "\t[ -r <infile> ] [ -R <read filter> ] [ -s <snaplen> ] \n"); + fprintf(output, "\t[ -t <time stamp format> ] [ -T <tree view height> ]\n"); + fprintf(output, "\t[ -w <savefile> ] [ -y <link type> ] [ -z <statistics string> ]\n"); + fprintf(output, "\t[ <infile> ]\n"); +#else + fprintf(output, "\n%s [ -vh ] [ -n ] [ -B <byte view height> ] [ -m <medium font> ]\n", + PACKAGE); + fprintf(output, "\t[ -N <resolving> ] [ -o <preference setting> ...\n"); + fprintf(output, "\t[ -P <packet list height> ] [ -r <infile> ] [ -R <read filter> ]\n"); + fprintf(output, "\t[ -t <time stamp format> ] [ -T <tree view height> ]\n"); + fprintf(output, "\t[ -z <statistics string> ] [ <infile> ]\n"); +#endif +} + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static void +show_version(void) +{ +#ifdef WIN32 + create_console(); +#endif + + printf(PACKAGE " " VERSION +#ifdef CVSVERSION + " (" CVSVERSION ")" +#endif + "\n%s\n%s\n", + comp_info_str->str, runtime_info_str->str); +} + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static int +get_natural_int(const char *string, const char *name) +{ + long number; + char *p; + + number = strtol(string, &p, 10); + if (p == string || *p != '\0') { + fprintf(stderr, "ethereal: The specified %s \"%s\" is not a decimal number\n", + name, string); + exit(1); + } + if (number < 0) { + fprintf(stderr, "ethereal: The specified %s \"%s\" is a negative number\n", + name, string); + exit(1); + } + if (number > INT_MAX) { + fprintf(stderr, "ethereal: The specified %s \"%s\" is too large (greater than %d)\n", + name, string, INT_MAX); + exit(1); + } + return number; +} + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static int +get_positive_int(const char *string, const char *name) +{ + long number; + + number = get_natural_int(string, name); + + if (number == 0) { + fprintf(stderr, "ethereal: The specified %s is zero\n", + name); + exit(1); + } + + return number; +} + +#ifdef HAVE_LIBPCAP +/* + * Given a string of the form "<autostop criterion>:<value>", as might appear + * as an argument to a "-a" option, parse it and set the criterion in + * question. Return an indication of whether it succeeded or failed + * in some fashion. + */ +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static gboolean +set_autostop_criterion(const char *autostoparg) +{ + gchar *p, *colonp; + + colonp = strchr(autostoparg, ':'); + if (colonp == NULL) + return FALSE; + + p = colonp; + *p++ = '\0'; + + /* + * Skip over any white space (there probably won't be any, but + * as we allow it in the preferences file, we might as well + * allow it here). + */ + while (isspace((guchar)*p)) + p++; + if (*p == '\0') { + /* + * Put the colon back, so if our caller uses, in an + * error message, the string they passed us, the message + * looks correct. + */ + *colonp = ':'; + return FALSE; + } + if (strcmp(autostoparg,"duration") == 0) { + capture_opts.has_autostop_duration = TRUE; + capture_opts.autostop_duration = get_positive_int(p,"autostop duration"); + } else if (strcmp(autostoparg,"filesize") == 0) { + capture_opts.has_autostop_filesize = TRUE; + capture_opts.autostop_filesize = get_positive_int(p,"autostop filesize"); + } else { + return FALSE; + } + *colonp = ':'; /* put the colon back */ + return TRUE; +} + +/* + * Given a string of the form "<ring buffer file>:<duration>", as might appear + * as an argument to a "-b" option, parse it and set the arguments in + * question. Return an indication of whether it succeeded or failed + * in some fashion. + */ +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static gboolean +get_ring_arguments(const char *arg) +{ + gchar *p = NULL, *colonp; + + colonp = strchr(arg, ':'); + + if (colonp != NULL) { + p = colonp; + *p++ = '\0'; + } + + capture_opts.ring_num_files = + get_natural_int(arg, "number of ring buffer files"); + + if (colonp == NULL) + return TRUE; + /* + * Skip over any white space (there probably won't be any, but + * as we allow it in the preferences file, we might as well + * allow it here). + */ + while (isspace((guchar)*p)) + p++; + if (*p == '\0') { + /* + * Put the colon back, so if our caller uses, in an + * error message, the string they passed us, the message + * looks correct. + */ + *colonp = ':'; + return FALSE; + } + + capture_opts.has_file_duration = TRUE; + capture_opts.file_duration = get_positive_int(p, "ring buffer duration"); + + *colonp = ':'; /* put the colon back */ + return TRUE; +} + +#endif /* HAVE_LIBPCAP */ + +/* + * Create a console window for standard input, output and error. + */ +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static void +create_console(void) +{ + if (has_no_console) { + /* We have no console to which to print the version string, so + create one and make it the standard input, output, and error. */ + if (!AllocConsole()) + return; /* couldn't create console */ + freopen("CONIN$", "r", stdin); + freopen("CONOUT$", "w", stdout); + freopen("CONOUT$", "w", stderr); + + /* Well, we have a console now. */ + has_no_console = FALSE; + console_was_created = TRUE; + + /* Now register "destroy_console()" as a routine to be called just + before the application exits, so that we can destroy the console + after the user has typed a key (so that the console doesn't just + disappear out from under them, giving the user no chance to see + the message(s) we put in there). */ + atexit(destroy_console); + } +} + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static void +destroy_console(void) +{ + printf("\n\nPress any key to exit\n"); + _getch(); + FreeConsole(); +} + +/* This routine should not be necessary, at least as I read the GLib + source code, as it looks as if GLib is, on Win32, *supposed* to + create a console window into which to display its output. + + That doesn't happen, however. I suspect there's something completely + broken about that code in GLib-for-Win32, and that it may be related + to the breakage that forces us to just call "printf()" on the message + rather than passing the message on to "g_log_default_handler()" + (which is the routine that does the aforementioned non-functional + console window creation). */ + +/* XXX - Copied from gtk/main.c. We need to consolidate this. */ +static void +console_log_handler(const char *log_domain, GLogLevelFlags log_level, + const char *message, gpointer user_data) +{ + create_console(); + if (console_was_created) { + /* For some unknown reason, the above doesn't appear to actually cause + anything to be sent to the standard output, so we'll just splat the + message out directly, just to make sure it gets out. */ + printf("%s\n", message); + } else + g_log_default_handler(log_domain, log_level, message, user_data); +} + +int PASCAL +WinMain( HINSTANCE h_instance, HINSTANCE h_prev_instance, LPSTR lpsz_cmd_line, int n_cmd_show ) +{ + WNDCLASS wc; + MSG msg; + char *s; + int i; + char *gpf_path, *pf_path; + char *cf_path, *df_path; + char *gdp_path, *dp_path; + int gpf_open_errno, gpf_read_errno; + int pf_open_errno, pf_read_errno; + int cf_open_errno, df_open_errno; + int gdp_open_errno, gdp_read_errno; + int dp_open_errno, dp_read_errno; + e_prefs *prefs; + INITCOMMONCONTROLSEX comm_ctrl; + int argc = __argc; + char **argv = __argv; + WSADATA wsaData; + int opt; + extern char *optarg; + gboolean arg_error = FALSE; +#ifdef HAVE_LIBPCAP + char *command_name; + int err; + gboolean start_capture = FALSE; + gchar *save_file = NULL; + GList *if_list; + if_info_t *if_info; + GList *lt_list, *lt_entry; + data_link_info_t *data_link_info; + gchar err_str[PCAP_ERRBUF_SIZE]; + gboolean stats_known; + struct pcap_stat stats; +#else + gboolean capture_option_specified = FALSE; +#endif + gint pl_size = 280, tv_size = 95, bv_size = 75; + gchar *cf_name = NULL, *rfilter = NULL; + dfilter_t *rfcode = NULL; + gboolean rfilter_parse_failed = FALSE; + char badopt; +// ethereal_tap_list *tli = NULL; + LOGFONT lfinfo; + gchar *font_style; + HDC hdc; + +#define OPTSTRING_INIT "a:b:B:c:f:Hhi:klLm:nN:o:pP:Qr:R:Ss:t:T:w:vy:z:" + +#ifdef HAVE_LIBPCAP +#define OPTSTRING_CHILD "W:Z:" +#else +#define OPTSTRING_CHILD "" +#endif /* HAVE_LIBPCAP */ + + char optstring[sizeof(OPTSTRING_INIT) + sizeof(OPTSTRING_CHILD) - 1] = + OPTSTRING_INIT; + + ethereal_path = argv[0]; + + /* Arrange that if we have no console window, and a GLib message logging + routine is called to log a message, we pop up a console window. + + We do that by inserting our own handler for all messages logged + to the default domain; that handler pops up a console if necessary, + and then calls the default handler. */ + g_log_set_handler(NULL, + G_LOG_LEVEL_ERROR| + G_LOG_LEVEL_CRITICAL| + G_LOG_LEVEL_WARNING| + G_LOG_LEVEL_MESSAGE| + G_LOG_LEVEL_INFO| + G_LOG_LEVEL_DEBUG| + G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION, + console_log_handler, NULL); + +#ifdef HAVE_LIBPCAP + command_name = get_basename(ethereal_path); + /* Set "capture_child" to indicate whether this is going to be a child + process for a "-S" capture. */ + capture_child = (strcmp(command_name, CHILD_NAME) == 0); + if (capture_child) + strcat(optstring, OPTSTRING_CHILD); +#endif + + set_timestamp_setting(TS_RELATIVE); + + /* Register all dissectors; we must do this before checking for the + "-G" flag, as the "-G" flag dumps information registered by the + dissectors, and we must do it before we read the preferences, in + case any dissectors register preferences. */ + + epan_init(PLUGIN_DIR,register_all_protocols,register_all_protocol_handoffs, + failure_alert_box, open_failure_alert_box, read_failure_alert_box); + + /* Register all tap listeners; we do this before we parse the arguments, + as the "-z" argument can specify a registered tap. */ + + register_all_tap_listeners(); + + /* Now register the preferences for any non-dissector modules. + We must do that before we read the preferences as well. */ + + prefs_register_modules(); + + /* If invoked with the "-G" flag, we dump out information based on + the argument to the "-G" flag; if no argument is specified, + for backwards compatibility we dump out a glossary of display + filter symbols. + + We must do this before calling "gtk_init()", because "gtk_init()" + tries to open an X display, and we don't want to have to do any X + stuff just to do a build. + + Given that we call "gtk_init()" before doing the regular argument + list processing, so that it can handle X and GTK+ arguments and + remove them from the list at which we look, this means we must do + this before doing the regular argument list processing, as well. + + This means that: + + you must give the "-G" flag as the first flag on the command line; + + you must give it as "-G", nothing more, nothing less; + + the first argument after the "-G" flag, if present, will be used + to specify the information to dump; + + arguments after that will not be used. */ + + /* XXX - This doesn't currently work in wethereal. Does it need to? */ + + if (argc >= 2 && strcmp(argv[1], "-G") == 0) { + if (argc == 2) { + proto_registrar_dump_fields(); + } else { + if (strcmp(argv[2], "fields") == 0) + proto_registrar_dump_fields(); + else if (strcmp(argv[2], "protocols") == 0) + proto_registrar_dump_protocols(); + else { + fprintf(stderr, "wethereal: Invalid \"%s\" option for -G flag\n", + argv[2]); + exit(1); + } + } + exit(0); + } + + /* Read the preference files. */ + prefs = read_prefs(&gpf_open_errno, &gpf_read_errno, &gpf_path, + &pf_open_errno, &pf_read_errno, &pf_path); + + +#ifdef HAVE_LIBPCAP + capture_opts.has_snaplen = FALSE; + capture_opts.snaplen = MIN_PACKET_SIZE; + capture_opts.linktype = -1; +#ifdef _WIN32 + capture_opts.buffer_size = 1; +#endif + + capture_opts.has_autostop_packets = FALSE; + capture_opts.autostop_packets = 1; + capture_opts.has_autostop_duration = FALSE; + capture_opts.autostop_duration = 1; + capture_opts.has_autostop_filesize = FALSE; + capture_opts.autostop_filesize = 1; + capture_opts.has_autostop_files = FALSE; + capture_opts.autostop_files = 1; + + capture_opts.multi_files_on = FALSE; + capture_opts.has_ring_num_files = TRUE; + capture_opts.ring_num_files = 2; + capture_opts.has_file_duration = FALSE; + capture_opts.file_duration = 1; + + /* If this is a capture child process, it should pay no attention + to the "prefs.capture_prom_mode" setting in the preferences file; + it should do what the parent process tells it to do, and if + the parent process wants it not to run in promiscuous mode, it'll + tell it so with a "-p" flag. + + Otherwise, set promiscuous mode from the preferences setting. */ + /* the same applies to other preferences settings as well. */ + if (capture_child) { + capture_opts.promisc_mode = TRUE; /* maybe changed by command line below */ + capture_opts.show_info = TRUE; /* maybe changed by command line below */ + capture_opts.sync_mode = TRUE; /* always true in child process */ + auto_scroll_live = FALSE; /* doesn't matter in child process */ + } else { + capture_opts.promisc_mode = prefs->capture_prom_mode; + capture_opts.show_info = prefs->capture_show_info; + capture_opts.sync_mode = prefs->capture_real_time; + auto_scroll_live = prefs->capture_auto_scroll; + } + +#endif /* HAVE_LIBPCAP */ + + /* Set the name resolution code's flags from the preferences. */ + g_resolv_flags = prefs->name_resolve; + + /* Read the capture filter file. */ + read_filter_list(CFILTER_LIST, &cf_path, &cf_open_errno); + + /* Read the display filter file. */ + read_filter_list(DFILTER_LIST, &df_path, &df_open_errno); + + /* Read the disabled protocols file. */ + read_disabled_protos_list(&gdp_path, &gdp_open_errno, &gdp_read_errno, + &dp_path, &dp_open_errno, &dp_read_errno); + + init_cap_file(&cfile); + + /* Initialize our XUL elements. */ + win32_identifier_init(); + + /* Load wpcap if possible. Do this before collecting the run-time version information */ + load_wpcap(); + + + /* Start windows sockets */ + WSAStartup( MAKEWORD( 1, 1 ), &wsaData ); + + /* Assemble the compile-time version information string */ + comp_info_str = g_string_new("Compiled with the Windows C SDK, "); + get_compiled_version_info(comp_info_str); + + /* Assemble the run-time version information string */ + runtime_info_str = g_string_new("Running "); + get_runtime_version_info(runtime_info_str); + + + /* Initialize our controls. */ + memset (&comm_ctrl, 0, sizeof(comm_ctrl)); + comm_ctrl.dwSize = sizeof(comm_ctrl); + comm_ctrl.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&comm_ctrl); + + /* RichEd20.DLL is needed by the byte view. */ + LoadLibrary("riched20.dll"); + + /* Now get our args */ + while ((opt = getopt(argc, argv, optstring)) != -1) { + switch (opt) { + case 'a': /* autostop criteria */ +#ifdef HAVE_LIBPCAP + if (set_autostop_criterion(optarg) == FALSE) { + fprintf(stderr, "ethereal: Invalid or unknown -a flag \"%s\"\n", optarg); + exit(1); + } +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + + case 'b': /* Ringbuffer option */ +#ifdef HAVE_LIBPCAP + capture_opts.multi_files_on = TRUE; + capture_opts.has_ring_num_files = TRUE; + if (get_ring_arguments(optarg) == FALSE) { + fprintf(stderr, "ethereal: Invalid or unknown -b arg \"%s\"\n", optarg); + exit(1); + } +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + + case 'B': /* Byte view pane height */ + bv_size = get_positive_int(optarg, "byte view pane height"); + break; + case 'c': /* Capture xxx packets */ +#ifdef HAVE_LIBPCAP + capture_opts.has_autostop_packets = TRUE; + capture_opts.autostop_packets = get_positive_int(optarg, "packet count"); +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + + case 'f': +#ifdef HAVE_LIBPCAP + if (cfile.cfilter) + g_free(cfile.cfilter); + cfile.cfilter = g_strdup(optarg); +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'h': /* Print help and exit */ + print_usage(TRUE); + exit(0); + break; + case 'H': /* Hide capture info dialog box */ +#ifdef HAVE_LIBPCAP + capture_opts.show_info = FALSE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'i': /* Use interface xxx */ +#ifdef HAVE_LIBPCAP + cfile.iface = g_strdup(optarg); +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'k': /* Start capture immediately */ +#ifdef HAVE_LIBPCAP + start_capture = TRUE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + + case 'l': /* Automatic scrolling in live capture mode */ +#ifdef HAVE_LIBPCAP + auto_scroll_live = TRUE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'L': /* Print list of link-layer types and exit */ +#ifdef HAVE_LIBPCAP + list_link_layer_types = TRUE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'm': /* Fixed-width font for the display */ + if (prefs->PREFS_GUI_FONT_NAME != NULL) + g_free(prefs->PREFS_GUI_FONT_NAME); + prefs->PREFS_GUI_FONT_NAME = g_strdup(optarg); + break; + case 'n': /* No name resolution */ + g_resolv_flags = RESOLV_NONE; + break; + case 'N': /* Select what types of addresses/port #s to resolve */ + if (g_resolv_flags == RESOLV_ALL) + g_resolv_flags = RESOLV_NONE; + badopt = string_to_name_resolve(optarg, &g_resolv_flags); + if (badopt != '\0') { + fprintf(stderr, "ethereal: -N specifies unknown resolving option '%c'; valid options are 'm', 'n', and 't'\n", + badopt); + exit(1); + } + break; + case 'o': /* Override preference from command line */ + switch (prefs_set_pref(optarg)) { + + case PREFS_SET_SYNTAX_ERR: + fprintf(stderr, "ethereal: Invalid -o flag \"%s\"\n", optarg); + exit(1); + break; + + case PREFS_SET_NO_SUCH_PREF: + case PREFS_SET_OBSOLETE: + fprintf(stderr, "ethereal: -o flag \"%s\" specifies unknown preference\n", + optarg); + exit(1); + break; + } + break; + case 'p': /* Don't capture in promiscuous mode */ +#ifdef HAVE_LIBPCAP + capture_opts.promisc_mode = FALSE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'P': /* Packet list pane height */ + pl_size = get_positive_int(optarg, "packet list pane height"); + break; + case 'Q': /* Quit after capture (just capture to file) */ +#ifdef HAVE_LIBPCAP + quit_after_cap = TRUE; + start_capture = TRUE; /*** -Q implies -k !! ***/ +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'r': /* Read capture file xxx */ + /* We may set "last_open_dir" to "cf_name", and if we change + "last_open_dir" later, we free the old value, so we have to + set "cf_name" to something that's been allocated. */ + cf_name = g_strdup(optarg); + break; + case 'R': /* Read file filter */ + rfilter = optarg; + break; + case 's': /* Set the snapshot (capture) length */ +#ifdef HAVE_LIBPCAP + capture_opts.has_snaplen = TRUE; + capture_opts.snaplen = get_positive_int(optarg, "snapshot length"); +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'S': /* "Sync" mode: used for following file ala tail -f */ +#ifdef HAVE_LIBPCAP + capture_opts.sync_mode = TRUE; +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 't': /* Time stamp type */ + if (strcmp(optarg, "r") == 0) + set_timestamp_setting(TS_RELATIVE); + else if (strcmp(optarg, "a") == 0) + set_timestamp_setting(TS_ABSOLUTE); + else if (strcmp(optarg, "ad") == 0) + set_timestamp_setting(TS_ABSOLUTE_WITH_DATE); + else if (strcmp(optarg, "d") == 0) + set_timestamp_setting(TS_DELTA); + else { + fprintf(stderr, "ethereal: Invalid time stamp type \"%s\"\n", + optarg); + fprintf(stderr, "It must be \"r\" for relative, \"a\" for absolute,\n"); + fprintf(stderr, "\"ad\" for absolute with date, or \"d\" for delta.\n"); + exit(1); + } + break; + case 'T': /* Tree view pane height */ + tv_size = get_positive_int(optarg, "tree view pane height"); + break; + case 'v': /* Show version and exit */ + show_version(); + if (console_was_created) + destroy_console(); + exit(0); + break; + case 'w': /* Write to capture file xxx */ +#ifdef HAVE_LIBPCAP + save_file = g_strdup(optarg); +#else + capture_option_specified = TRUE; + arg_error = TRUE; +#endif + break; + case 'y': /* Set the pcap data link type */ +#ifdef HAVE_LIBPCAP +#ifdef HAVE_PCAP_DATALINK_NAME_TO_VAL + capture_opts.linktype = pcap_datalink_name_to_val(optarg); + if (capture_opts.linktype == -1) { + fprintf(stderr, "ethereal: The specified data link type \"%s\" is not valid\n", + optarg); + exit(1); + } +#else /* HAVE_PCAP_DATALINK_NAME_TO_VAL */ + /* XXX - just treat it as a number */ + capture_opts.linktype = get_natural_int(optarg, "data link type"); +#endif /* HAVE_PCAP_DATALINK_NAME_TO_VAL */ +#else /* HAVE_LIBPCAP */ + capture_option_specified = TRUE; + arg_error = TRUE; +#endif /* HAVE_LIBPCAP */ + break; +#ifdef HAVE_LIBPCAP + case 'W': /* Write to capture file FD xxx */ + cfile.save_file_fd = atoi(optarg); + break; +#endif +/* XXX - Add tap support */ +// case 'z': +// for(tli=tap_list;tli;tli=tli->next){ +// if(!strncmp(tli->cmd,optarg,strlen(tli->cmd))){ +// tap_opt = g_strdup(optarg); +// break; +// } +// } +// if(!tli){ +// fprintf(stderr,"ethereal: invalid -z argument.\n"); +// fprintf(stderr," -z argument must be one of :\n"); +// for(tli=tap_list;tli;tli=tli->next){ +// fprintf(stderr," %s\n",tli->cmd); +// } +// exit(1); +// } +// break; +#ifdef HAVE_LIBPCAP + /* Hidden option supporting Sync mode */ + case 'Z': /* Write to pipe FD XXX */ + /* associate stdout with pipe */ + i = atoi(optarg); + if (dup2(i, 1) < 0) { + fprintf(stderr, "Unable to dup pipe handle\n"); + exit(1); + } + break; +#endif /* HAVE_LIBPCAP */ + + default: + case '?': /* Bad flag - print usage message */ + arg_error = TRUE; + break; + } + } + + argc -= optind; + argv += optind; + if (argc >= 1) { + if (cf_name != NULL) { + /* + * Input file name specified with "-r" *and* specified as a regular + * command-line argument. + */ + arg_error = TRUE; + } else { + /* + * Input file name not specified with "-r", and a command-line argument + * was specified; treat it as the input file name. + * + * Yes, this is different from tethereal, where non-flag command-line + * arguments are a filter, but this works better on GUI desktops + * where a command can be specified to be run to open a particular + * file - yes, you could have "-r" as the last part of the command, + * but that's a bit ugly. + */ + cf_name = g_strdup(argv[0]); + } + argc--; + argv++; + } + + if (argc != 0) { + /* + * Extra command line arguments were specified; complain. + */ + fprintf(stderr, "Invalid argument: %s\n", argv[0]); + arg_error = TRUE; + } + +#ifndef HAVE_LIBPCAP + if (capture_option_specified) + fprintf(stderr, "This version of Ethereal was not built with support for capturing packets.\n"); +#endif + if (arg_error) { + print_usage(FALSE); + exit(1); + } + +#ifdef HAVE_LIBPCAP + if (start_capture && list_link_layer_types) { + /* Specifying *both* is bogus. */ + fprintf(stderr, "ethereal: You cannot specify both -L and a live capture.\n"); + exit(1); + } + + if (list_link_layer_types) { + /* We're supposed to list the link-layer types for an interface; + did the user also specify a capture file to be read? */ + if (cf_name) { + /* Yes - that's bogus. */ + fprintf(stderr, "ethereal: You cannot specify -L and a capture file to beread.\n"); + exit(1); + } + /* No - did they specify a ring buffer option? */ + if (capture_opts.multi_files_on) { + fprintf(stderr, "ethereal: Ring buffer requested, but a capture is not being done.\n"); + exit(1); + } + } else { + /* We're supposed to do a live capture; did the user also specify + a capture file to be read? */ + if (start_capture && cf_name) { + /* Yes - that's bogus. */ + fprintf(stderr, "ethereal: You cannot specify both a live capture and a capture file to be read.\n"); + exit(1); + } + + /* No - was the ring buffer option specified and, if so, does it make + sense? */ + if (capture_opts.multi_files_on) { + /* Ring buffer works only under certain conditions: + a) ring buffer does not work with temporary files; + b) sync_mode and capture_opts.ringbuffer_on are mutually exclusive - + sync_mode takes precedence; + c) it makes no sense to enable the ring buffer if the maximum + file size is set to "infinite". */ + if (save_file == NULL) { + fprintf(stderr, "ethereal: Ring buffer requested, but capture isn't being saved to a permanent file.\n"); + capture_opts.multi_files_on = FALSE; + } + if (capture_opts.sync_mode) { + fprintf(stderr, "ethereal: Ring buffer requested, but an \"Update list of packets in real time\" capture is being done.\n"); + capture_opts.multi_files_on = FALSE; + } + if (!capture_opts.has_autostop_filesize) { + fprintf(stderr, "ethereal: Ring buffer requested, but no maximum capture file size was specified.\n"); + capture_opts.multi_files_on = FALSE; + } + } + } + + if (start_capture || list_link_layer_types) { + /* Did the user specify an interface to use? */ + if (cfile.iface == NULL) { + /* No - is a default specified in the preferences file? */ + if (prefs->capture_device != NULL) { + /* Yes - use it. */ + cfile.iface = g_strdup(prefs->capture_device); + } else { + /* No - pick the first one from the list of interfaces. */ + if_list = get_interface_list(&err, err_str); + if (if_list == NULL) { + switch (err) { + + case CANT_GET_INTERFACE_LIST: + fprintf(stderr, "ethereal: Can't get list of interfaces: %s\n", + err_str); + break; + + case NO_INTERFACES_FOUND: + fprintf(stderr, "ethereal: There are no interfaces on which a capture can be done\n"); + break; + } + exit(2); + } + if_info = if_list->data; /* first interface */ + cfile.iface = g_strdup(if_info->name); + free_interface_list(if_list); + } + } + } + + if (capture_child) { + if (cfile.save_file_fd == -1) { + /* XXX - send this to the standard output as something our parent + should put in an error message box? */ + fprintf(stderr, "%s: \"-W\" flag not specified\n", CHILD_NAME); + exit(1); + } + } + + if (list_link_layer_types) { + /* Get the list of link-layer types for the capture device. */ + lt_list = get_pcap_linktype_list(cfile.iface, err_str); + if (lt_list == NULL) { + if (err_str[0] != '\0') { + fprintf(stderr, "ethereal: The list of data link types for the capture device could not be obtained (%s).\n" + "Please check to make sure you have sufficient permissions, and that\n" + "you have the proper interface or pipe specified.\n", err_str); + } else + fprintf(stderr, "ethereal: The capture device has no data link types.\n"); + exit(2); + } + fprintf(stderr, "Data link types (use option -y to set):\n"); + for (lt_entry = lt_list; lt_entry != NULL; lt_entry = g_list_next(lt_entry)) { + data_link_info = lt_entry->data; + fprintf(stderr, " %s", data_link_info->name); + if (data_link_info->description != NULL) + fprintf(stderr, " (%s)", data_link_info->description); + else + fprintf(stderr, " (not supported)"); + putchar('\n'); + } + free_pcap_linktype_list(lt_list); + exit(0); + } +#endif /* HAVE_LIBPCAP */ + + /* XXX - Is there a better way to map a name, e.g. "courier bold 12" + to a font and back in Windows? */ + /* Set our fonts according to prefs */ + ZeroMemory(&lfinfo, sizeof(lfinfo)); + if (prefs->gui_win32_font_name == NULL || strlen(prefs->gui_win32_font_name) == 0) { + g_fixed_font = (HFONT) GetStockObject(ANSI_FIXED_FONT); + GetObject(g_fixed_font, sizeof(lfinfo), &lfinfo); + prefs->gui_win32_font_name = g_strdup(lfinfo.lfFaceName); + if (lfinfo.lfWeight == 700) { + if (lfinfo.lfItalic) { + prefs->gui_win32_font_style = g_strdup("Bold Italic"); + } else { + prefs->gui_win32_font_style = g_strdup("Bold"); + } + } else if (lfinfo.lfItalic) { + prefs->gui_win32_font_style = g_strdup("Italic"); + } else { + prefs->gui_win32_font_style = g_strdup("Regular"); + } + hdc = GetDC(NULL); + prefs->gui_win32_font_size = MulDiv(lfinfo.lfHeight, 72, GetDeviceCaps(hdc, LOGPIXELSY)); + ReleaseDC(NULL, hdc); + } else { + g_strlcpy(lfinfo.lfFaceName, prefs->gui_win32_font_name, LF_FACESIZE); + lfinfo.lfWeight = 400; + lfinfo.lfItalic = FALSE; + hdc = GetDC(NULL); + lfinfo.lfHeight = - MulDiv(prefs->gui_win32_font_size, GetDeviceCaps(hdc, LOGPIXELSY), 72); + ReleaseDC(NULL, hdc); + font_style = g_ascii_strdown(prefs->gui_win32_font_style, strlen(prefs->gui_win32_font_style)); + if (strstr(font_style, "bold")) { + lfinfo.lfWeight = 700; + } + if (strstr(font_style, "italic")) { + lfinfo.lfItalic = TRUE; + } + g_free(font_style); + g_fixed_font = CreateFontIndirect(&lfinfo); + if (g_fixed_font == NULL) { + g_warning("Failed to find font: %s %s %d", prefs->gui_win32_font_name, + prefs->gui_win32_font_style, prefs->gui_win32_font_size); + g_fixed_font = (HFONT) GetStockObject(ANSI_FIXED_FONT); + } + } + + prefs_apply_all(); + + /* disabled protocols as per configuration file */ + if (gdp_path == NULL && dp_path == NULL) { + set_disabled_protos_list(); + } + +#ifdef HAVE_LIBPCAP + if (capture_opts.has_snaplen) { + if (capture_opts.snaplen < 1) + capture_opts.snaplen = WTAP_MAX_PACKET_SIZE; + else if (capture_opts.snaplen < MIN_PACKET_SIZE) + capture_opts.snaplen = MIN_PACKET_SIZE; + } + + /* Check the value range of the ringbuffer_num_files parameter */ + if (capture_opts.ring_num_files > RINGBUFFER_MAX_NUM_FILES) + capture_opts.ring_num_files = RINGBUFFER_MAX_NUM_FILES; +#if RINGBUFFER_MIN_NUM_FILES > 0 + else if (capture_opts.num_files < RINGBUFFER_MIN_NUM_FILES) + capture_opts.ring_num_files = RINGBUFFER_MIN_NUM_FILES; +#endif +#endif + + colfilter_init(); + + + + // XXX - This should be done in win32csdk.py. + if( !h_prev_instance ) + { + wc.lpszClassName = "ethereal_main"; + wc.lpfnWndProc = win32_main_wnd_proc; + wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW; + wc.hInstance = h_instance; + wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); + wc.hCursor = LoadCursor( NULL, IDC_ARROW ); + wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 ); + wc.lpszMenuName = "ETHEREAL_MAIN_MENU"; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + + RegisterClass( &wc ); + + } + + // Set our globals and instance variables + // XXX - There's some overlap here that needs to be cleaned up. + +#ifdef HAVE_LIBPCAP + /* Is this a "child" ethereal, which is only supposed to pop up a + capture box to let us stop the capture, and run a capture + to a file that our parent will read? */ + if (! capture_child) { +#endif + /* Create and show the main window */ + g_hw_mainwin = ethereal_main_window_create(h_instance); + /* XXX - Get our geometry */ + ethereal_main_window_show(g_hw_mainwin, n_cmd_show); + + main_window_update(); + + /* If we were given the name of a capture file, read it in now; + we defer it until now, so that, if we can't open it, and pop + up an alert box, the alert box is more likely to come up on + top of the main window - but before the preference-file-error + alert box, so, if we get one of those, it's more likely to come + up on top of us. */ + if (cf_name) { + if (rfilter != NULL) { + if (!dfilter_compile(rfilter, &rfcode)) { + bad_dfilter_alert_box(rfilter); + rfilter_parse_failed = TRUE; + } + } + if (!rfilter_parse_failed) { + if ((err = cf_open(cf_name, FALSE, &cfile)) == 0) { + /* "cf_open()" succeeded, so it closed the previous + capture file, and thus destroyed any previous read filter + attached to "cf". */ + cfile.rfcode = rfcode; + + /* Open tap windows; we do so after creating the main window, + to avoid GTK warnings, and after successfully opening the + capture file, so we know we have something to tap. */ +// if (tap_opt && tli) { +// (*tli->func)(tap_opt); +// g_free(tap_opt); +// } + + /* Read the capture file. */ + switch (cf_read(&cfile)) { + + case READ_SUCCESS: + case READ_ERROR: + /* Just because we got an error, that doesn't mean we were unable + to read any of the file; we handle what we could get from the + file. */ + break; + + case READ_ABORTED: + /* Exit now. */ + PostQuitMessage(0); + break; + } + /* Save the name of the containing directory specified in the + path name, if any; we can write over cf_name, which is a + good thing, given that "get_dirname()" does write over its + argument. */ + s = get_dirname(cf_name); + /* we might already set this from the recent file, don't overwrite this */ + + if(last_open_dir == NULL) + set_last_open_dir(s); + g_free(cf_name); + cf_name = NULL; + } else { + if (rfcode != NULL) + dfilter_free(rfcode); + cfile.rfcode = NULL; + } + } + } +#ifdef HAVE_LIBPCAP + } +#endif + + /* If the global preferences file exists but we failed to open it + or had an error reading it, pop up an alert box; we defer that + until now, so that the alert box is more likely to come up on top of + the main window. */ + if (gpf_path != NULL) { + if (gpf_open_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open global preferences file\n\"%s\": %s.", gpf_path, + strerror(gpf_open_errno)); + } + if (gpf_read_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "I/O error reading global preferences file\n\"%s\": %s.", gpf_path, + strerror(gpf_read_errno)); + } + } + + /* If the user's preferences file exists but we failed to open it + or had an error reading it, pop up an alert box; we defer that + until now, so that the alert box is more likely to come up on top of + the main window. */ + if (pf_path != NULL) { + if (pf_open_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open your preferences file\n\"%s\": %s.", pf_path, + strerror(pf_open_errno)); + } + if (pf_read_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "I/O error reading your preferences file\n\"%s\": %s.", pf_path, + strerror(pf_read_errno)); + } + g_free(pf_path); + pf_path = NULL; + } + + /* If the user's capture filter file exists but we failed to open it, + pop up an alert box; we defer that until now, so that the alert + box is more likely to come up on top of the main window. */ + if (cf_path != NULL) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open your capture filter file\n\"%s\": %s.", cf_path, + strerror(cf_open_errno)); + g_free(cf_path); + } + + /* If the user's display filter file exists but we failed to open it, + pop up an alert box; we defer that until now, so that the alert + box is more likely to come up on top of the main window. */ + if (df_path != NULL) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open your display filter file\n\"%s\": %s.", df_path, + strerror(df_open_errno)); + g_free(df_path); + } + + /* If the global disabled protocols file exists but we failed to open it, + or had an error reading it, pop up an alert box; we defer that until now, + so that the alert box is more likely to come up on top of the main + window. */ + if (gdp_path != NULL) { + if (gdp_open_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open global disabled protocols file\n\"%s\": %s.", + gdp_path, strerror(gdp_open_errno)); + } + if (gdp_read_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "I/O error reading global disabled protocols file\n\"%s\": %s.", + gdp_path, strerror(gdp_read_errno)); + } + g_free(gdp_path); + } + + /* If the user's disabled protocols file exists but we failed to open it, + or had an error reading it, pop up an alert box; we defer that until now, + so that the alert box is more likely to come up on top of the main + window. */ + if (dp_path != NULL) { + if (dp_open_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "Could not open your disabled protocols file\n\"%s\": %s.", dp_path, + strerror(dp_open_errno)); + } + if (dp_read_errno != 0) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, + "I/O error reading your disabled protocols file\n\"%s\": %s.", dp_path, + strerror(dp_read_errno)); + } + g_free(dp_path); + } + +#ifdef HAVE_LIBPCAP + if (capture_child) { + /* This is the child process for a sync mode or fork mode capture, + so just do the low-level work of a capture - don't create + a temporary file and fork off *another* child process (so don't + call "do_capture()"). */ + + /* XXX - hand these stats to the parent process */ + capture(&stats_known, &stats); + + /* The capture is done; there's nothing more for us to do. */ + PostQuitMessage(0); + } else { + if (start_capture) { + /* "-k" was specified; start a capture. */ + if (do_capture(save_file)) { + /* The capture started. Open tap windows; we do so after creating + the main window, to avoid GTK warnings, and after starting the + capture, so we know we have something to tap. */ +// if (tap_opt && tli) { +// (*tli->func)(tap_opt); +// g_free(tap_opt); +// } + } + if (save_file != NULL) { + /* Save the directory name for future file dialogs. */ + s = get_dirname(save_file); /* Overwrites save_file */ + set_last_open_dir(s); + g_free(save_file); + save_file = NULL; + } + } +// else { +// set_menus_for_capture_in_progress(FALSE); +// } + } + if (!start_capture && (cfile.cfilter == NULL || strlen(cfile.cfilter) == 0)) { + if (cfile.cfilter) { + g_free(cfile.cfilter); + } + cfile.cfilter = g_strdup(get_conn_cfilter()); + } +#else + set_menus_for_capture_in_progress(FALSE); +#endif + + while( GetMessage( &msg, NULL, 0, 0 ) != 0) { + TranslateMessage( &msg ); + DispatchMessage( &msg ); + } + + epan_cleanup(); + + /* Shutdown windows sockets */ + WSACleanup(); + + /* For some unknown reason, the "atexit()" call in "create_console()" + doesn't arrange that "destroy_console()" be called when we exit, + so we call it here if a console was created. */ + if (console_was_created) + destroy_console(); + + return msg.wParam; +} + +/* XXX - How do we fold this into ethereal-main.c? */ +LRESULT CALLBACK +win32_main_wnd_proc(HWND hw_mainwin, UINT msg, WPARAM w_param, LPARAM l_param) +{ + BOOL ret; + read_status_t err; + + switch( msg ) { + case WM_CREATE: + ethereal_main_handle_wm_create(hw_mainwin); + break; + + case WM_NOTIFY: + break; + + case WM_SIZE: + ethereal_main_handle_wm_size(hw_mainwin, (int) LOWORD(l_param), (int) HIWORD(l_param)); + break; + + case WM_COMMAND: + switch( w_param ) { + case IDM_ETHEREAL_MAIN_OPEN: + ret = win32_open_file(hw_mainwin, open_name, MAX_PATH); + if (ret) { + err = cf_open(open_name, FALSE, &cfile); + if (err != 0) { + epan_cleanup(); + exit(2); + } + err = cf_read(&cfile); + if (err == READ_SUCCESS) { + ethereal_packetlist_init(&cfile); + } + } + break; + case IDM_ETHEREAL_MAIN_CLOSE: + cf_close(&cfile); + break; + case IDM_ETHEREAL_MAIN_EDIT_PREFERENCES: + prefs_dialog_init(hw_mainwin); + break; + case IDM_ETHEREAL_MAIN_CAPTURE_START: + capture_start_prep(); + break; + case IDM_ETHEREAL_MAIN_CAPTURE_STOP: + capture_stop(); + break; + case IDM_ETHEREAL_MAIN_ABOUT_ETHEREAL: + about_dialog_init(hw_mainwin); + break; + case IDM_ETHEREAL_MAIN_EXIT: + PostQuitMessage(0); + break; + default: + break; + } + break; + + case WM_DESTROY: + PostQuitMessage( 0 ); + break; + + default: + return( DefWindowProc( hw_mainwin, msg, w_param, l_param )); + } + + return 0; +} + +BOOL CALLBACK +capture_dialog_dlg_proc(HWND hw_capture, UINT msg, WPARAM w_param, LPARAM l_param) +{ + win32_element_t *dlg_box; + + switch( msg ) { + case WM_INITDIALOG: + capture_dialog_handle_wm_initdialog(hw_capture); + dlg_box = (win32_element_t *) GetWindowLong(hw_capture, GWL_USERDATA); + win32_element_assert (dlg_box); + win32_element_resize(dlg_box, -1, -1); + return 0; + break; + case WM_COMMAND: + return 0; + break; + case WM_CLOSE: + capture_dialog_dialog_hide(hw_capture); + return 1; + break; + default: + return 0; + } + return 0; +} + +BOOL CALLBACK +capture_info_dialog_dlg_proc(HWND hw_cap_info, UINT msg, WPARAM w_param, LPARAM l_param) +{ + win32_element_t *dlg_box; + + switch( msg ) { + case WM_INITDIALOG: + capture_info_dialog_handle_wm_initdialog(hw_cap_info); + dlg_box = (win32_element_t *) GetWindowLong(hw_cap_info, GWL_USERDATA); + win32_element_assert (dlg_box); + win32_element_resize(dlg_box, -1, -1); + return 0; + break; + case WM_COMMAND: + g_warning("w_param: %04x", LOWORD(w_param)); + return 0; + break; + case WM_CLOSE: + dlg_box = (win32_element_t *) GetWindowLong(hw_cap_info, GWL_USERDATA); + win32_element_assert (dlg_box); + capture_info_dialog_stop_capture(dlg_box); + return 1; + break; + default: + return 0; + } + return 0; +} + +/* Call filter_packets() and add this filter string to the recent filter list */ +/* Taken from gtk/main.c. */ +int +main_filter_packets(capture_file *cf, gchar *dftext) +{ + win32_element_t *dfilter_el = win32_identifier_get_str("dfilter-entry"); + int filter_packets_ret; + gboolean add_filter = TRUE; + + win32_element_assert(dfilter_el); + + if ((filter_packets_ret = filter_packets(cf, dftext, FALSE))) { + if (SendMessage(dfilter_el->h_wnd, CB_FINDSTRINGEXACT, (WPARAM) -1, (LPARAM) (LPCTSTR) dftext) == CB_ERR) { + SendMessage(dfilter_el->h_wnd, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) dftext); + } + } + + return filter_packets_ret; +} + +/* Apply the current display filter */ +void +filter_apply_cb(win32_element_t *el) { + win32_element_t *dfilter_el = win32_identifier_get_str("dfilter-entry"); + int len; + gchar *dftext; + + win32_element_assert(dfilter_el); + + len = SendMessage(dfilter_el->h_wnd, WM_GETTEXTLENGTH, 0, 0); + if (len > 0) { + len++; + dftext = g_malloc(len); + SendMessage(dfilter_el->h_wnd, WM_GETTEXT, (WPARAM) len, (LPARAM) dftext); + main_filter_packets(&cfile, dftext); + g_free (dftext); + } +} + +/* Clear the display filter */ +void +filter_clear_cb(win32_element_t *el) { + win32_element_t *dfilter_el = win32_identifier_get_str("dfilter-entry"); + + win32_element_assert(dfilter_el); + + SendMessage(dfilter_el->h_wnd, WM_SETTEXT, 0, (LPARAM)(LPCTSTR) ""); + main_filter_packets(&cfile, ""); +} + +/* Make sure we can perform a capture, and if so open the capture options dialog */ +/* XXX - Move this to capture-util.c */ +/* XXX - Switch over to value struct iteration, like we're using in the prefs dialog. */ +static void +capture_start_prep() { + GList *if_list, *if_entry; + int err; + char err_str[PCAP_ERRBUF_SIZE]; + win32_element_t *if_el, *cb_el, *sp_el, *tb_el; + if_info_t *if_info; + + /* Is WPcap loaded? */ + if (!has_wpcap) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Unable to load WinPcap (wpcap.dll); Ethereal will not be able " + "to capture packets.\n\n" + "In order to capture packets, WinPcap must be installed; see\n" + "\n" + " http://winpcap.polito.it/\n" + "\n" + "or the mirror at\n" + "\n" + " http://winpcap.mirror.ethereal.com/\n" + "\n" + "or the mirror at\n" + "\n" + " http://www.mirrors.wiretapped.net/security/packet-capre/winpcap/\n" + "\n" + "for a downloadable version of WinPcap and for instructions\n" + "on how to install WinPcap."); + return; + } + + if_list = get_interface_list(&err, err_str); + if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) { + simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, "Can't get list of interfaces: %s", + err_str); + } + + if (! g_hw_capture_dlg) { + g_hw_capture_dlg = capture_dialog_dialog_create(g_hw_mainwin); + + if_el = win32_identifier_get_str("capture-dialog.interface-combo"); + win32_element_assert(if_el); + + for (if_entry = if_list; if_entry != NULL; if_entry = g_list_next(if_entry)) { + if_info = if_entry->data; + SendMessage(if_el->h_wnd, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR) if_info->name); + } + SendMessage(if_el->h_wnd, CB_SETCURSEL, 0, 0); + } + + /* Buffer size */ + sp_el = win32_identifier_get_str("capture-dialog.buffer-size"); + ethereal_spinner_set_range(sp_el, 1, 65535); + ethereal_spinner_set_pos(sp_el, capture_opts.buffer_size); + + /* Promiscuous mode */ + cb_el = win32_identifier_get_str("capture-dialog.promiscuous"); + win32_checkbox_set_state(cb_el, capture_opts.promisc_mode); + + /* Snaplen */ + cb_el = win32_identifier_get_str("capture-dialog.packet-size-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_snaplen); + + sp_el = win32_identifier_get_str("capture-dialog.packet-size-spinner"); + ethereal_spinner_set_range(sp_el, MIN_PACKET_SIZE, WTAP_MAX_PACKET_SIZE); + ethereal_spinner_set_pos(sp_el, capture_opts.snaplen); + win32_element_set_enabled(sp_el, capture_opts.has_snaplen); + + /* Fill in our capture filter, if we have one */ + if (cfile.cfilter) { + tb_el = win32_identifier_get_str("capture-dialog.capture-filter"); + win32_textbox_set_text(tb_el, cfile.cfilter); + } + + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-size-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_filesize); + + /* Capture file options */ + cb_el = win32_identifier_get_str("capture-dialog.use-multiple-files"); + win32_checkbox_set_state(cb_el, capture_opts.multi_files_on); + + /* Ring buffer file size */ + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-size-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_filesize); + + sp_el = win32_identifier_get_str("capture-dialog.next-file-every-size-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.autostop_filesize); + + /* Ring buffer duration */ + cb_el = win32_identifier_get_str("capture-dialog.next-file-every-time-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_file_duration); + + sp_el = win32_identifier_get_str("capture-dialog.next-file-every-time-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.file_duration); + + /* Ring buffer files */ + cb_el = win32_identifier_get_str("capture-dialog.ring-buffer-with-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_ring_num_files); + + sp_el = win32_identifier_get_str("capture-dialog.ring-buffer-with-spinner"); + ethereal_spinner_set_range(sp_el, 2, RINGBUFFER_MAX_NUM_FILES); + ethereal_spinner_set_pos(sp_el, capture_opts.ring_num_files); + /* XXX - Set wrap and handle onchange */ + + /* Stop capture after */ + cb_el = win32_identifier_get_str("capture-dialog.stop-capture-after-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_files); + + sp_el = win32_identifier_get_str("capture-dialog.stop-capture-after-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.autostop_files); + + /* Stop after... (capture limits frame) */ + /* Packet count row */ + cb_el = win32_identifier_get_str("capture-dialog.stop-after-packets-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_packets); + + sp_el = win32_identifier_get_str("capture-dialog.stop-after-packets-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.autostop_packets); + + /* Filesize row */ + cb_el = win32_identifier_get_str("capture-dialog.stop-after-size-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_filesize); + + sp_el = win32_identifier_get_str("capture-dialog.stop-after-size-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.autostop_filesize); + + /* Duration row */ + cb_el = win32_identifier_get_str("capture-dialog.stop-after-time-cb"); + win32_checkbox_set_state(cb_el, capture_opts.has_autostop_duration); + + sp_el = win32_identifier_get_str("capture-dialog.stop-after-time-spinner"); + ethereal_spinner_set_range(sp_el, 1, INT_MAX); + ethereal_spinner_set_pos(sp_el, capture_opts.autostop_duration); + + /* Set up our display options */ + cb_el = win32_identifier_get_str("capture-dialog.update-real-time"); + win32_checkbox_set_state(cb_el, capture_opts.sync_mode); + + cb_el = win32_identifier_get_str("capture-dialog.auto-scroll-live"); + win32_checkbox_set_state(cb_el, auto_scroll_live); + + cb_el = win32_identifier_get_str("capture-dialog.show_info"); + win32_checkbox_set_state(cb_el, !capture_opts.show_info); + + /* Set up name resolution */ + cb_el = win32_identifier_get_str("capture-mac-resolution"); + win32_checkbox_set_state(cb_el, g_resolv_flags & RESOLV_MAC); + + cb_el = win32_identifier_get_str("capture-network-resolution"); + win32_checkbox_set_state(cb_el, g_resolv_flags & RESOLV_NETWORK); + + cb_el = win32_identifier_get_str("capture-transport-resolution"); + win32_checkbox_set_state(cb_el, g_resolv_flags & RESOLV_TRANSPORT); + + capture_dialog_adjust_sensitivity(cb_el); + + capture_dialog_dialog_show(g_hw_capture_dlg); +} + + +/* Routines defined elsewhere that we need to handle */ + + +/* Routines defined in ui_util.h */ + +/* Set the name of the top-level window. */ +void set_main_window_name(gchar *window_name) { + SetWindowText(g_hw_mainwin, window_name); +} + +/* create byte views in the main window */ +/* XXX - Move to ethereal-byteview.c? */ +void add_main_byte_views(epan_dissect_t *edt) { + win32_element_t *byteview = win32_identifier_get_str("main-byteview"); + win32_element_t *treeview = win32_identifier_get_str("main-treeview"); + + win32_element_assert(byteview); + win32_element_assert(treeview); + ethereal_byteview_add(edt, byteview, treeview); +} + +/* display the protocol tree in the main widow */ +/* XXX - Move to ethereal-treeview.c? */ +void main_proto_tree_draw(proto_tree *protocol_tree) { + win32_element_t *treeview = win32_identifier_get_str("main-treeview"); + win32_element_t *byteview = win32_identifier_get_str("main-byteview"); + + win32_element_assert(treeview); + win32_element_assert(byteview); + + ethereal_treeview_draw(treeview, protocol_tree, byteview); +} + +void clear_tree_and_hex_views(void) { + win32_element_t *byteview = win32_identifier_get_str("main-byteview"); + win32_element_t *treeview = win32_identifier_get_str("main-treeview"); + + ethereal_treeview_clear(treeview); + ethereal_byteview_clear(byteview); +} + +/* Destroy all popup packet windows. */ +void destroy_packet_wins(void) { +} + +gint packet_list_get_sort_column(void) { + return 0; +} + +/* Destroy the save as dialog */ +void file_save_as_destroy(void) { +} + +/* Defined in tap_dfilter_dlg.h */ + +/* This will update the titles of the dialog windows when we load a new capture +file. */ +void tap_dfilter_dlg_update (void) { +} + +void +set_last_open_dir(char *dirname) +{ + int len; + gchar *new_last_open_dir; + + if (dirname) { + len = strlen(dirname); + if (dirname[len-1] == G_DIR_SEPARATOR) { + new_last_open_dir = g_strconcat(dirname, NULL); + } + else { + new_last_open_dir = g_strconcat(dirname, + G_DIR_SEPARATOR_S, NULL); + } + + if (last_open_dir == NULL || + strcmp(last_open_dir, new_last_open_dir) != 0) + updated_last_open_dir = TRUE; + } + else { + new_last_open_dir = NULL; + if (last_open_dir != NULL) + updated_last_open_dir = TRUE; + } + + if (last_open_dir) { + g_free(last_open_dir); + } + last_open_dir = new_last_open_dir; +} + +void +font_apply() { + win32_element_t *byteview; + byteview = win32_identifier_get_str("main-byteview"); + win32_element_assert(byteview); + SendMessage(byteview->h_wnd, WM_SETFONT, (WPARAM) g_fixed_font, TRUE); +} \ No newline at end of file diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-main.h ethereal-win32/xulender/win32-c-sdk/win32-main.h --- ethereal/xulender/win32-c-sdk/win32-main.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-main.h 2004-06-11 15:49:03.000000000 -0500 @@ -0,0 +1,9 @@ +#ifndef __WIN32_MAIN_H__ +#define __WIN32_MAIN_H__ + +void filter_apply_cb(); +void filter_clear_cb(); +void set_last_open_dir(char *dirname); +void font_apply(); + +#endif /* win32-main.h */ diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-main.rc ethereal-win32/xulender/win32-c-sdk/win32-main.rc --- ethereal/xulender/win32-c-sdk/win32-main.rc 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-main.rc 2004-06-16 11:21:30.000000000 -0500 @@ -0,0 +1,20 @@ +/*************************************************************\ +* generic.rc: Resource script for Generic * +* * +* * +\*************************************************************/ + +#include <windows.h> +#include "win32-main.h" +#include "generated\about-dialog.rc" +#include "generated\capture-dialog.rc" +#include "generated\capture-info-dialog.rc" +#include "generated\ethereal-main.rc" +#include "generated\preferences-dialog.rc" +#include "generated\progress-dialog.rc" +#include "win32-file-dlg.rc" + +#define MANIFEST_RESOURCE_ID 1 +#define RT_MANIFEST 24 + +MANIFEST_RESOURCE_ID RT_MANIFEST "wethereal.exe.manifest" diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-menu.c ethereal-win32/xulender/win32-c-sdk/win32-menu.c --- ethereal/xulender/win32-c-sdk/win32-menu.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-menu.c 2004-02-05 14:08:02.000000000 -0600 @@ -0,0 +1,44 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" + +#include "menu.h" + +/* Routines defined in menu.h */ + +/* Add a new recent capture filename to the "Recent Files" submenu + (duplicates will be ignored) */ +void add_menu_recent_capture_file(gchar *file) { +} + +/* Enable or disable menu items based on whether you have a capture file + you've finished reading. */ +void set_menus_for_capture_file(gboolean have_capture_file) { +} + +/* Enable or disable menu items based on whether you have an unsaved + capture file you've finished reading. */ +void set_menus_for_unsaved_capture_file(gboolean have_unsaved_capture_file) { +} + +/* Enable or disable menu items based on whether there's a capture in + progress. */ +void set_menus_for_capture_in_progress(gboolean capture_in_progress) { +} + +/* Enable or disable menu items based on whether you have some captured + packets. */ +void set_menus_for_captured_packets(gboolean have_captured_packets) { +} + +/* Enable or disable menu items based on whether a packet is selected. */ +void set_menus_for_selected_packet(capture_file *cf) { +} + +/* Enable or disable menu items based on whether a tree row is selected + and and on whether a "Match Selected" can be done. */ +void set_menus_for_selected_tree_row(capture_file *cf) { +} diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-progress-dlg.c ethereal-win32/xulender/win32-c-sdk/win32-progress-dlg.c --- ethereal/xulender/win32-c-sdk/win32-progress-dlg.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-progress-dlg.c 2004-06-17 11:07:23.000000000 -0500 @@ -0,0 +1,304 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> + +#include <stdio.h> + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "color.h" +#include "ui_util.h" + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + +#include "progress_dlg.h" /* In the source tree root */ +#include "progress-dialog.h" /* In the "generated" directory */ + +struct progdlg { + GString *title; + HWND h_wnd; + gboolean *stop_flag; + GTimeVal start_time; + GTimeVal last_time; + win32_element_t *task_title_ds; + win32_element_t *item_title_ds; + win32_element_t *status_ds; + win32_element_t *elapsed_ds; + win32_element_t *time_left_ds; + win32_element_t *progress_pm; + win32_element_t *percentage_ds; +}; + +#define DIALOG_DATA_KEY "progress-dialog.data" + +/* Routines defined in progress_dlg.h */ + +/* + * Create and pop up the progress dialog { +} allocate a "progdlg_t" + * and initialize it to contain all information the implementation + * needs in order to manipulate the dialog, and return a pointer to + * it. + * + * The first argument is the task to do, e.g. "Loading". + * The second argument is the item to do, e.g. "capture.cap". + * The third argument is the string to put in the "stop this operation" button. + * The fourth argument is a pointer to a Boolean variable that will be + * set to TRUE if the user hits that button. + */ +progdlg_t *create_progress_dlg(const gchar *task_title, const gchar *item_title, + gboolean *stop_flag) { + win32_element_t *dlg_box, *cancel_bt; + progdlg_t *dlg; + GString *item_title_dup, *task_title_dup; + + dlg = g_malloc(sizeof (progdlg_t)); + + dlg->h_wnd = progress_dialog_dialog_create(g_hw_mainwin); + dlg->stop_flag = stop_flag; + + dlg_box = (win32_element_t *) GetWindowLong(dlg->h_wnd, GWL_USERDATA); + win32_element_set_data(dlg_box, DIALOG_DATA_KEY, dlg); + + item_title_dup = g_string_new(item_title); + if (item_title_dup->len > 110) { + g_string_truncate(item_title_dup, 100); + g_string_append(item_title_dup, "..."); + } + + dlg->title = g_string_new(task_title); + g_string_sprintfa(dlg->title, ": %s", item_title_dup->str); + SetWindowText(dlg->h_wnd, dlg->title->str); + + dlg->task_title_ds = win32_identifier_get_str("progress-dlg.task_title"); + win32_element_assert(dlg->task_title_ds); + task_title_dup = g_string_new(task_title); + g_string_append(task_title_dup, ":"); + SetWindowText(dlg->task_title_ds->h_wnd, task_title_dup->str); + + dlg->item_title_ds = win32_identifier_get_str("progress-dlg.item_title"); + win32_element_assert(dlg->item_title_ds); + SetWindowText(dlg->item_title_ds->h_wnd, item_title_dup->str); + + dlg->status_ds = win32_identifier_get_str("progress-dlg.status"); + win32_element_assert(dlg->status_ds); + + dlg->elapsed_ds = win32_identifier_get_str("progress-dlg.time.elapsed"); + win32_element_assert(dlg->elapsed_ds); + + dlg->time_left_ds = win32_identifier_get_str("progress-dlg.time.left"); + win32_element_assert(dlg->time_left_ds); + + dlg->progress_pm = win32_identifier_get_str("progress-dlg.progress"); + win32_element_assert(dlg->progress_pm); + + dlg->percentage_ds = win32_identifier_get_str("progress-dlg.percentage"); + win32_element_assert(dlg->percentage_ds); + + cancel_bt = win32_identifier_get_str("progress-dlg.cancel"); + win32_element_assert(cancel_bt); + win32_element_set_data(cancel_bt, DIALOG_DATA_KEY, dlg); + + g_get_current_time(&dlg->start_time); + ZeroMemory(&dlg->last_time, sizeof(dlg->last_time)); + + g_string_free(item_title_dup, TRUE); + g_string_free(task_title_dup, TRUE); + progress_dialog_dialog_show(dlg->h_wnd); + return dlg; +} + +/* Create a progress dialog, but only if it's not likely to disappear + * immediately, which can be disconcerting for the user. + * + * The first four arguments are as for create_progress_dlg(). + * Following those is a pointer to a GTimeVal structure which holds + * the time at which the caller started to process the data, and the + * current progress (0..1). + */ +/* XXX - Copied verbatim from gtk/progress_dlg.c */ +progdlg_t * +delayed_create_progress_dlg(const gchar *task_title, const gchar *item_title, + gboolean *stop_flag, const GTimeVal *start_time, gfloat progress) { + GTimeVal time_now; + gdouble delta_time; + gdouble min_display; + progdlg_t *dlg; + +#define INIT_DELAY 0.1 * 1e6 +#define MIN_DISPLAY_DEFAULT 2.0 * 1e6 + + /* Create a progress dialog, but only if it's not likely to disappear + * immediately, which can be disconcerting for the user. + * + * Arguments are as for create_progress_dlg(), plus: + * + * (a) A pointer to a GTimeVal structure which holds the time at which + * the caller started to process the data. + * (b) The current progress as a real number between 0 and 1. + */ + + g_get_current_time(&time_now); + + /* Get the time elapsed since the caller started processing the data */ + + delta_time = (time_now.tv_sec - start_time->tv_sec) * 1e6 + + time_now.tv_usec - start_time->tv_usec; + + /* Do nothing for the first INIT_DELAY microseconds */ + + if (delta_time < INIT_DELAY) + return NULL; + + /* If we create the progress dialog we want it to be displayed for a + * minimum of MIN_DISPLAY_DEFAULT microseconds. However, if we + * previously estimated that the progress dialog didn't need to be + * created and the caller's processing is slowing down (perhaps due + * to the action of the operating system's scheduler on a compute- + * intensive task), we tail off the minimum display time such that + * the progress dialog will always be created after + * 2*MIN_DISPLAY_DEFAULT microseconds. + */ + + if (delta_time <= INIT_DELAY + MIN_DISPLAY_DEFAULT) + min_display = MIN_DISPLAY_DEFAULT; + else + min_display = 2 * MIN_DISPLAY_DEFAULT - delta_time; + /* = MIN_DISPLAY_DEFAULT - (delta_time - MIN_DISPLAY_DEFAULT) */ + + /* Assuming the progress increases linearly, see if the progress + * dialog would be displayed for at least min_display microseconds if + * we created it now. + */ + + if (progress >= (delta_time / (delta_time + min_display))) + return NULL; + + dlg = create_progress_dlg(task_title, item_title, stop_flag); + + /* set dialog start_time to the start of processing, not box creation */ + dlg->start_time = *start_time; + + return dlg; +} + +/* + * Update the progress information of the progress dialog box. + */ +void update_progress_dlg(progdlg_t *dlg, gfloat percentage, gchar *status) { + GTimeVal time_now; + gdouble delta_time; + gulong ul_left; + gulong ul_elapsed; + gulong ul_percentage; + gchar tmp[100]; + + /* calculate some timing values */ + g_get_current_time(&time_now); + + delta_time = (time_now.tv_sec - dlg->last_time.tv_sec) * 1e6 + + time_now.tv_usec - dlg->last_time.tv_usec; + + /* after the first time don't update more than every 100ms */ + if (dlg->last_time.tv_sec && delta_time < 100*1000) + return; + + dlg->last_time = time_now; + delta_time = (time_now.tv_sec - dlg->start_time.tv_sec) * 1e6 + + time_now.tv_usec - dlg->start_time.tv_usec; + + ul_percentage = (gulong) (percentage * 100); + ul_elapsed = (gulong) (delta_time / 1000 / 1000); + + /* update labels */ + g_snprintf(tmp, sizeof(tmp), "%lu%% of %s", ul_percentage, dlg->title->str); + SetWindowText(dlg->h_wnd, tmp); + + SetWindowText(dlg->status_ds->h_wnd, status); + + g_snprintf(tmp, sizeof(tmp), "%lu%%", ul_percentage); + SetWindowText(dlg->percentage_ds->h_wnd, tmp); + + g_snprintf(tmp, sizeof(tmp), "%02lu:%02lu", ul_elapsed / 60, + ul_elapsed % 60); + SetWindowText(dlg->elapsed_ds->h_wnd, tmp); + + /* show "Time Left" only, + * if at least 5% and 3 seconds running (to get a useful estimation) */ + if (ul_percentage >= 5 && delta_time >= 3 * 1e6) { + ul_left = (gulong) ((delta_time / percentage - delta_time) / 100 / 1000); + + g_snprintf(tmp, sizeof(tmp), "%02lu:%02lu", ul_left / 60, + ul_left % 60); + SetWindowText(dlg->time_left_ds->h_wnd, tmp); + } + + /* update progress bar */ + + SendMessage(dlg->progress_pm->h_wnd, PBM_SETPOS, (int) (percentage * 100.0), 0); + + /* + * Flush out the update and process any input events. + */ + main_window_update(); +} + +/* + * Destroy the progress dialog. + */ +void destroy_progress_dlg(progdlg_t *dlg) { + win32_element_t *dlg_el; + + dlg_el = (win32_element_t *) GetWindowLong(dlg->h_wnd, GWL_USERDATA); + win32_element_assert(dlg_el); + win32_element_destroy(dlg_el, TRUE); + + g_string_free(dlg->title, TRUE); + g_free(dlg); +} + +/* Command sent by element type <button>, id "progress-dlg.cancel" */ +void progress_dialog_destroy (win32_element_t *cancel_bt) { + progdlg_t *dlg; + + win32_element_assert(cancel_bt); + dlg = (progdlg_t *) win32_element_get_data(cancel_bt, DIALOG_DATA_KEY); + *dlg->stop_flag = TRUE; +} + +BOOL CALLBACK +progress_dialog_dlg_proc(HWND hw_progress, UINT msg, WPARAM w_param, LPARAM l_param) +{ + win32_element_t *dlg_box; + progdlg_t *dlg; + + switch( msg ) { + case WM_INITDIALOG: + progress_dialog_handle_wm_initdialog(hw_progress); + dlg_box = (win32_element_t *) GetWindowLong(hw_progress, GWL_USERDATA); + win32_element_assert (dlg_box); + win32_element_resize(dlg_box, -1, -1); + return 0; + break; + case WM_COMMAND: + return 0; + break; + case WM_CLOSE: + dlg_box = (win32_element_t *) GetWindowLong(hw_progress, GWL_USERDATA); + win32_element_assert (dlg_box); + dlg = (progdlg_t *) win32_element_get_data(dlg_box, DIALOG_DATA_KEY); + *dlg->stop_flag = TRUE; + return 1; + break; + default: + return 0; + } + return 0; +} \ No newline at end of file diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-simple-dialog.c ethereal-win32/xulender/win32-c-sdk/win32-simple-dialog.c --- ethereal/xulender/win32-c-sdk/win32-simple-dialog.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-simple-dialog.c 2004-05-21 11:15:11.000000000 -0500 @@ -0,0 +1,163 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> + +#include <stdio.h> + +#include <epan/strutil.h> + +#include <windows.h> + +#include "win32-globals.h" + +#include "simple_dialog.h" + +/* Derived from gtk/simple_dialog.c */ + +/* + * Queue for messages requested before we have a main window. + */ +typedef struct { + gint type; + gint btn_mask; + char *message; +} queued_message_t; + +static GSList *message_queue; + +static int +display_simple_dialog(gint type, gint btn_mask, char *message) +{ + UINT flags = 0;; + + + switch (type) { + case ESD_TYPE_WARN: + flags |= MB_ICONERROR; + break; + case ESD_TYPE_CONFIRMATION: + flags |= MB_ICONQUESTION; + break; + case ESD_TYPE_ERROR: + flags |= MB_ICONWARNING; + break; + case ESD_TYPE_INFO: + default: + flags |= MB_ICONINFORMATION; + break; + } + + if (type) + flags |= MB_TASKMODAL; + + switch(btn_mask) { + case (ESD_BTN_OK): + flags |= MB_OK; + break; + case (ESD_BTN_CLEAR | ESD_BTN_CANCEL): + flags |= MB_OKCANCEL; + break; + case (ESD_BTNS_YES_NO_CANCEL): + flags |= MB_YESNOCANCEL; + break; + default: + g_assert_not_reached(); + break; + } + + return MessageBox(NULL, message, "Ethereal", flags); +} + +void +display_queued_messages(void) +{ + queued_message_t *queued_message; + + while (message_queue != NULL) { + queued_message = message_queue->data; + message_queue = g_slist_remove(message_queue, queued_message); + + display_simple_dialog(queued_message->type, queued_message->btn_mask, + queued_message->message); + + g_free(queued_message->message); + g_free(queued_message); + } +} + +/* Simple dialog function - Displays a dialog box with the supplied message + * text. + * + * Args: + * type : One of ESD_TYPE_*. + * btn_mask : The value passed in determines which buttons are displayed. + * msg_format : Sprintf-style format of the text displayed in the dialog. + * ... : Argument list for msg_format + */ + +gpointer +vsimple_dialog(gint type, gint btn_mask, const gchar *msg_format, va_list ap) +{ + gchar *message; + queued_message_t *queued_message; + int ret; + + /* Format the message. */ + message = g_strdup_vprintf(msg_format, ap); + + + /* If we don't yet have a main window, queue up the message for later + display. */ + if (g_hw_mainwin == NULL) { + queued_message = g_malloc(sizeof (queued_message_t)); + queued_message->type = type; + queued_message->btn_mask = btn_mask; + queued_message->message = message; + message_queue = g_slist_append(message_queue, queued_message); + return NULL; + } + + /* + * Do we have any queued up messages? If so, pop them up. + */ + display_queued_messages(); + + ret = display_simple_dialog(type, btn_mask, message); + + g_free(message); + + return (gpointer) ret; +} + +gpointer +simple_dialog(gint type, gint btn_mask, const gchar *msg_format, ...) +{ + va_list ap; + gpointer ret; + + va_start(ap, msg_format); + ret = vsimple_dialog(type, btn_mask, msg_format, ap); + va_end(ap); + return ret; +} + +extern char *simple_dialog_primary_start(void) { + return ""; +} + +extern char *simple_dialog_format_message(const char *msg) { + char *str; + + if (msg) { + str = xml_escape(msg); + } else { + str = NULL; + } + return str; +} + +extern char *simple_dialog_primary_end(void) { + return ""; +} diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-statusbar.c ethereal-win32/xulender/win32-c-sdk/win32-statusbar.c --- ethereal/xulender/win32-c-sdk/win32-statusbar.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-statusbar.c 2004-02-05 14:08:02.000000000 -0600 @@ -0,0 +1,33 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" + +#include "statusbar.h" + +/* Routines defined in statusbar.h */ +/* + * Push a message referring to file access onto the statusbar. + */ +void statusbar_push_file_msg(gchar *msg) { +} + +/* + * Pop a message referring to file access off the statusbar. + */ +void statusbar_pop_file_msg(void) { +} + +/* + * Push a message referring to the currently-selected field onto the statusbar. + */ +void statusbar_push_field_msg(gchar *msg) { +} + +/* + * Pop a message referring to the currently-selected field off the statusbar. + */ +void statusbar_pop_field_msg(void) { +} diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-tap-register.c ethereal-win32/xulender/win32-c-sdk/win32-tap-register.c --- ethereal/xulender/win32-c-sdk/win32-tap-register.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-tap-register.c 2004-02-05 14:08:02.000000000 -0600 @@ -0,0 +1,3 @@ +#include "register.h" + +void register_all_tap_listeners(void) { } diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-util.c ethereal-win32/xulender/win32-c-sdk/win32-util.c --- ethereal/xulender/win32-c-sdk/win32-util.c 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-util.c 2004-06-02 17:25:14.000000000 -0500 @@ -0,0 +1,55 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "globals.h" +#include "glib.h" +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "win32-c-sdk.h" + +#include "win32-globals.h" +#include "win32-util.h" + + +/* + * The amount of work you have to go through just to get the screen + * size of a string is amazing. + */ +void win32_get_text_size(HWND hwnd, LPCSTR text, LPSIZE szp) { + HDC hdc; + HFONT hw_font, hdc_font; + TEXTMETRIC tm; + int width = 0, height = 0, len; + LPCSTR cptr = text, next_nl; + + while (cptr) { + next_nl = strchr(cptr, '\n'); + if (next_nl == NULL) { + len = strlen(cptr); + } else { + len = next_nl - cptr; + } + hw_font = (HFONT) SendMessage(hwnd, WM_GETFONT, 0, 0); + hdc = GetWindowDC(hwnd); + hdc_font = SelectObject(hdc, hw_font); + GetTextExtentPoint(hdc, cptr, len, szp); + GetTextMetrics(hdc, &tm); + SelectObject(hdc, hdc_font); + ReleaseDC(hwnd, hdc); + if (szp->cx > width) { + width = szp->cx; + } + height += tm.tmHeight + tm.tmExternalLeading; + cptr = strchr(cptr, '\n'); + while (cptr != NULL && cptr[0] == '\n') { + cptr++; + } + } + + szp->cx = width; + szp->cy = height; +} + diff -x entries -urN ethereal/xulender/win32-c-sdk/win32-util.h ethereal-win32/xulender/win32-c-sdk/win32-util.h --- ethereal/xulender/win32-c-sdk/win32-util.h 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32-c-sdk/win32-util.h 2004-06-02 09:13:01.000000000 -0500 @@ -0,0 +1,15 @@ +#ifndef __WIN32_UTIL_H__ +#define __WIN32_UTIL_H__ + +#include "../../color.h" + +/* XXX - For some reason, MapDialogRect() and GetDialogBaseUnits() don't work + * for us. Instead, we use contrived base units that give us the results we + * need for DEFAULT_GUI_FONT. + */ +#define DIALOG2PIXELX(x) ((int) (x * 6.0) / 4) +#define DIALOG2PIXELY(y) ((int) (y * 13.25 / 8)) + +void win32_get_text_size(HWND hwnd, LPCSTR text, LPSIZE szp); + +#endif /* win32-util.h */ diff -x entries -urN ethereal/xulender/win32csdk.py ethereal-win32/xulender/win32csdk.py --- ethereal/xulender/win32csdk.py 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/win32csdk.py 2004-07-20 16:10:07.000000000 -0500 @@ -0,0 +1,1259 @@ +# Win32csdk.py - Genskel module for creating Win32 C SDK code +# Tabs: 8 indent: 4 + +# To do: +# - Come up with some sort of box packing system that will properly arrange +# controls inside containers. +# - Link menus to commands +# - Pull in event handler from win32-main.c +# - Dump out a list of functions we need to create + +from frontendutil import * +import string + +cur_cf = None +cur_hf = None +cur_rcf = None +cur_window_id = None +cur_var_name = None +cur_width = 250 +cur_height = 100 +xpadding = 15 +ypadding = 15 +cur_menu_id = 1000 +start_group = 0 +callbacks = {} + +class CodeGenerationError: + pass + +def get_func_prefix(): + return 'win32' + +def cleanup(): + cbkeys = callbacks.keys() + cbkeys.sort() + for cb in cbkeys: + cur_hf.write_body(''' +%(comments)svoid %(callback)s (win32_element_t *);\n''' % { + 'comments': callbacks[cb], + 'callback': cb + }) + if cur_cf is not None: + cur_cf.close() + if cur_hf is not None: + cur_hf.close() + if cur_rcf is not None: + cur_rcf.close() + +# +# Generate any attribute-specific code, e.g. for "id" or "orient" +# +def get_element_attributes(node): + default = get_attribute(node, 'default', 'false') + disabled = get_attribute(node, 'disabled', 'false') + flex = get_attribute(node, 'flex', None) + flexgroup = get_attribute(node, 'flexgroup', None) + el_id = get_attribute(node, 'id', None) + minheight = get_attribute(node, 'minheight', None) + minwidth = get_attribute(node, 'minwidth', None) + orient = get_attribute(node, 'orient', None) + sortdirection = get_attribute(node, 'sortdirection', 'natural') + style = get_attribute(node, 'style', None) + + oncommand = get_attribute(node, 'oncommand', None) + oninput = get_attribute(node, 'oninput', None) + + # XXX - Should we have a general routine for setting the default element? + if (default.lower() == 'true'): + cur_cf.write_body(' SetFocus(cur_el->h_wnd);\n') + if (disabled.lower() == 'true'): + cur_cf.write_body(' win32_element_set_disabled(cur_el, TRUE);\n') + if (flex): + cur_cf.write_body(' cur_el->flex = %s;\n' % (flex)) + if (flexgroup): + cur_cf.write_body(' cur_el->flexgroup = %s;\n' % (flexgroup)) + if (el_id): + cur_cf.write_body(' win32_element_set_id(cur_el, "' + el_id + '");\n') + if (minheight): + cur_cf.write_body(' cur_el->minheight = %s;\n' % (minheight)) + if (minwidth): + cur_cf.write_body(' cur_el->minwidth = %s;\n' % (minwidth)) + + if (oncommand): + if (id is None): + raise CodeGenerationError + cur_cf.write_body(' cur_el->oncommand = %s;' % (oncommand)) + add_callback(node.nodeName, el_id, oncommand) + if (oninput): + if (id is None): + raise CodeGenerationError + cur_cf.write_body(' cur_el->oninput = %s;' % (oninput)) + add_callback(node.nodeName, el_id, oninput) + + if (orient): + if (orient.lower() == 'horizontal'): + cur_cf.write_body(' cur_el->orient = BOX_ORIENT_HORIZONTAL;\n') + elif (orient.lower() == 'vertical'): + cur_cf.write_body(' cur_el->orient = BOX_ORIENT_VERTICAL;\n') + else: + raise CodeGenerationError + + if sortdirection.lower() == 'ascending': + cur_cf.write_body(' cur_el->sortdirection = EL_SORT_ASCENDING;\n') + elif sortdirection.lower() == 'descending': + cur_cf.write_body(' cur_el->sortdirection = EL_SORT_DESCENDING;\n') + + get_element_style(style) + +# +# Parse out any CSS style information, and generate code accordingly +# +def get_element_style(style): + if style is None: + return + + for parts in style.split(';'): + if parts.find(':') == -1: + continue + prop, val = parts.split(':', 2) + prop = prop.strip() + val = val.strip() + if prop.lower() == 'text-align': + taval = None + if val.lower() in ['left', 'right', 'center', 'justify']: + cur_cf.write_body(' cur_el->text_align = CSS_TEXT_ALIGN_%s;\n' + % val.upper()) + +# +# Add a callback function +# +def add_callback(nodename, el_id, cbname): + comment = '/* Command sent by element type <%(nodename)s>, id "%(id)s" */\n' % { + 'nodename': nodename, + 'id': el_id, + } + + if callbacks.has_key(cbname): + callbacks[cbname] = callbacks[cbname] + comment + else: + callbacks[cbname] = comment + + +# +# General element generators +# +# These are called from xulender.py and MUST be named "win32_gen_<element>()" +# or "win32_gen_<element>_end()". +# + +# +# <button> +# + +def win32_gen_button(node): + label = get_attribute(node, 'label', '') + + cur_cf.write_body(''' + /* Begin <button> */ + cur_el = win32_button_new(cur_box->h_wnd, "%(label)s"); + win32_box_add(cur_box, cur_el, -1); +''' % {'label': label}) + + get_element_attributes(node) + + cur_cf.write_body(' /* End <button> */\n') + +# +# <caption> +# +# +def win32_gen_caption(node): + # Captions MUST be a child of <groupbox> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'groupbox': + raise CodeGenerationError + + title = "" + lines = [] + for child in node.childNodes: + if child.nodeType == node.TEXT_NODE: + lines.append(child.data.strip()) + title = string.join(lines, '') + title = title.replace('\n', '') + print 'caption: ' + title + + # XXX - Groupboxes under Windows tend to eat various messages. To + # work around this, we add an insulating vbox. + cur_cf.write_body(''' + /* Begin <caption> */ + win32_groupbox_set_title(cur_box, "%(title)s"); + /* End <caption> */ +''' % {'title': title}) + +# +# <checkbox> +# + +def win32_gen_checkbox(node): + label = get_attribute(node, 'label', '') + + cur_cf.write_body(''' + /* Begin <checkbox> */ + cur_el = win32_checkbox_new(cur_box->h_wnd, "%(label)s"); + win32_box_add(cur_box, cur_el, -1); +''' % {'label': label}) + + get_element_attributes(node) + + cur_cf.write_body('\n /* End <checkbox> */\n') + +# +# <column> +# +# XXX - We need to verify that we're inside a <grid><columns></columns></grid> +# construct. +# +def win32_gen_column(node): + + flex = float(get_attribute(node, 'flex', '0.0')) + flexgroup = int(get_attribute(node, 'flexgroup', '0')) + cur_cf.write_body(''' + /* Begin <column> */ + win32_grid_add_column(cur_box, %(flex)1.1f, %(flexgroup)d); + /* End <column> */ + ''' % { + 'flex': flex, + 'flexgroup': flexgroup + }) + +# +# <deck> +# + +def win32_gen_deck(node): + selectedindex = get_attribute(node, 'selectedindex', None) + + cur_cf.write_body(''' + /* Begin <deck> */ + cur_el = win32_deck_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + if selectedindex is not None: + cur_cf.write_body(' win32_deck_set_selectedindex(cur_el, %s);\n' % (selectedindex)) + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_deck_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <deck> */ +''') + +# +# <description> +# +def win32_gen_description(node): + text = "" + lines = [] + for child in node.childNodes: + if child.nodeType == node.TEXT_NODE: + lines.append(child.data.strip()) + text = string.join(lines, '') + text = text.replace('\n', '') + print 'text: ' + text + + cur_cf.write_body(''' + /* Begin <description> */ + cur_el = win32_description_new(cur_box->h_wnd, "%(text)s"); + win32_box_add(cur_box, cur_el, -1); +''' % {'text': text}) + + get_element_attributes(node) + + cur_cf.write_body(''' + win32_description_apply_styles(cur_el); + /* End <description> */ +''') + + +# +# <dialog> +# +# Under the SDK, dialogs are created by feeding a dialog template to +# CreateDialog(). We're using XUL to lay out the controls instead of +# dialog templates. +# +# XXX - How dow we make this modal? +# +def win32_gen_dialog(node): + global cur_cf, cur_hf, cur_rcf, cur_window_id + + try: + cur_window_id = node.attributes['id'].value + cur_var_name = id_to_name(cur_window_id) + except: + CodeGenerationError + + cur_width = int(get_attribute(node, 'width', 250)) + cur_height = int(get_attribute(node, 'height', 100)) + title = get_attribute(node, 'title', '[ Untitled - ' + cur_window_id + ' ]') + header_file_name = cur_window_id + '.h' + + cur_cf = sect_file(cur_window_id + '.c') + cur_cf.write_body(''' +#include "config.h" + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "globals.h" + +#include <epan/epan.h> + +#include "win32-c-sdk.h" +#include "ethereal-win32.h" + +#include "%(header_file_name)s" + +HWND g_hw_dlg; + +/* Create dialog "%(cur_window_id)s" */ +HWND +%(varname)s_dialog_create (HWND hw_parent) { + HINSTANCE h_instance = (HINSTANCE) GetWindowLong(hw_parent, GWL_HINSTANCE); + + g_hw_dlg = CreateDialog (h_instance, "%(varname)s", hw_parent, + %(varname)s_dlg_proc); + + if (!g_hw_dlg) + return NULL; + + return g_hw_dlg; +} + +/* Show dialog "%(cur_window_id)s" */ +void +%(varname)s_dialog_show (HWND hw_dlg) { + ShowWindow(hw_dlg, SW_SHOW); +} + +/* Hide dialog "%(cur_window_id)s" */ +void +%(varname)s_dialog_hide (HWND hw_dlg) { + ShowWindow(hw_dlg, SW_HIDE); +} + +/* Create the contents of "%(cur_window_id)s". Should be called from its + * WNDPROC. + */ +void +%(varname)s_handle_wm_initdialog(HWND hw_dlg) { + win32_element_t *cur_box = NULL; + win32_element_t *cur_el = NULL; + GList* box_stack = NULL; + + cur_box = win32_hbox_new(hw_dlg, NULL); + win32_element_set_id(cur_box, "%(cur_window_id)s"); + +''' % { + 'cur_window_id': cur_window_id, + 'header_file_name': header_file_name, + 'height': cur_height, + 'title': title, + 'varname': cur_var_name, + 'width': cur_width, + }) + + cur_hf = sect_file(header_file_name) + + cur_hf.write_header(''' +#ifndef %(define_name)s +#define %(define_name)s +''' % { + 'define_name': id_to_name(cur_window_id).upper() + '_H' + }) + + cur_hf.write_body(''' +HWND %(varname)s_dialog_create (HWND hw_parent); +void %(varname)s_dialog_show (HWND); +void %(varname)s_dialog_hide (HWND); +BOOL CALLBACK %(varname)s_dlg_proc(HWND, UINT, WPARAM, LPARAM); +void %(varname)s_handle_wm_initdialog(HWND hw_dlg); + +''' % { + 'varname': cur_var_name, + }) + + cur_hf.write_footer('\n\n#endif /* ' + header_file_name + ' */\n') + + cur_rcf = sect_file(cur_window_id + '.rc') + + cur_rcf.write_body(''' +%(varname)s DIALOG 6, 21, %(width)d, %(height)d +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_SETFOREGROUND | DS_SETFONT +CAPTION "%(title)s" +FONT 8, "MS Shell Dlg" +{ + +} + +''' % { + 'height': cur_height, + 'title': title, + 'varname': cur_var_name, + 'width': cur_width, + }) + +def win32_gen_dialog_end(node): + cur_cf.write_body('\n}\n\n') + +# +# <grid> +# + +def win32_gen_grid(node): + + cur_cf.write_body(''' + /* Begin <grid> */ + cur_el = win32_grid_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_grid_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <grid> */ +''') + +# +# <groupbox> +# + +def win32_gen_groupbox(node): + + cur_cf.write_body(''' + /* Begin <groupbox> */ + cur_el = win32_groupbox_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_groupbox_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <groupbox> */ +''') + +# +# <hbox> +# + +def win32_gen_hbox(node): + + cur_cf.write_body(''' + /* Begin <hbox> */ + cur_el = win32_hbox_new(NULL, cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_hbox_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <hbox> */ +''') + +# +# <listbox> +# + +def win32_gen_listbox(node): + show_header = 'FALSE' + onselect = get_attribute(node, 'onselect') + el_id = get_attribute(node, 'id') + + for child in node.childNodes: + if child.nodeName == 'listhead': + show_header = 'TRUE' + + cur_cf.write_body(''' + /* Begin <listbox> */ + cur_el = win32_listbox_new(cur_box->h_wnd, %(show_header)s); + win32_box_add(cur_box, cur_el, -1); +''' % { + 'show_header': show_header + }) + + get_element_attributes(node) + + if (onselect): + if el_id is None: + raise CodeGenerationError + cur_cf.write_body(' win32_listbox_set_onselect(cur_el, %s);' % (onselect)) + cur_hf.write_body(''' +/* Command sent by <listbox> id "%(id)s" */ +void %(onselect)s (win32_element_t *, LPNMLISTVIEW); +''' % { + 'id': el_id, + 'onselect': onselect, + }) + +def win32_gen_listbox_end(node): + cur_cf.write_body(''' + win32_listbox_minimum_size(cur_el); + /* End <listbox> */ +''') + + +# +# <listcell> +# + +def win32_gen_listcell(node): + # <listcell> MUST be a child of <listitem> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'listitem': + raise CodeGenerationError + + label = get_attribute(node, 'label', '') + el_id = get_attribute(node, 'id', '') + + cur_cf.write_body(''' + /* Begin <listcell> */ + win32_listbox_add_cell(cur_el, "%(id)s", "%(label)s"); +''' % { + 'id': el_id, + 'label': label, + }) + +# +# <listcol> +# + +def win32_gen_listcol(node): + # <listcol> MUST be a child of <listcols> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'listcols': + raise CodeGenerationError + + col_id = get_attribute(node, 'id', 'NULL') + if col_id != 'NULL': + col_id = '"' + col_id + '"' + + cur_cf.write_body(''' + /* Begin <listcol> */ + win32_listbox_add_column(cur_el, %(id)s, NULL); +''' % { + 'id': col_id, + }) + +# +# <listheader> +# + +def win32_gen_listheader(node): + # <listheader> MUST be a child of <listhead> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'listhead': + raise CodeGenerationError + + col_id = get_attribute(node, 'id', 'NULL') + if col_id != 'NULL': + col_id = '"' + col_id + '"' + label = get_attribute(node, 'label', '') + + cur_cf.write_body(''' + /* Begin <listheader> */ + win32_listbox_add_column(cur_el, %(id)s, "%(label)s"); +''' % { + 'id': col_id, + 'label': label, + }) + +# +# <menu> +# + +def win32_gen_menu(node): + label = get_attribute(node, 'label', '[ No Label ]') + + cur_rcf.write_body(' Popup "&%(label)s" {\n' % { 'label': label } ) + +def win32_gen_menu_end(node): + cur_rcf.write_body(' }\n') + +# +# <menubar> +# + +def win32_gen_menubar(node): + mbid = cur_window_id.upper() + '_MENU' + for ch in [' ', '-']: mbid = mbid.replace(ch, '_') + + cur_rcf.write_body('%(mbid)s MENU {\n' % {'mbid': mbid}) + +def win32_gen_menubar_end(node): + cur_rcf.write_body('}\n\n') + +# +# <menuitem> +# + +def win32_gen_menuitem(node): + # Menuitems MUST be a child of <menupopup> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'menupopup': + raise CodeGenerationError + + global cur_menu_id, cur_hfd, cur_rcfd + + label = get_attribute(node, 'label', '[ No Label ]') + command = get_attribute(node, 'command', None) + selected = get_attribute(node, 'selected', 'false') + + if node.parentNode.parentNode.nodeName == 'menu': + if command is None: + raise CodeGenerationError + + id = 'IDM_' + command.upper() + for ch in [' ', '-']: id = id.replace(ch, '_') + + cur_rcf.write_body(' MENUITEM "&%(label)s", %(id)s\n' % { + 'id': id, + 'label': label + }) + + cur_hf.write_body('#define %(id)s %(cur_menu_id)d\n' % { + 'cur_menu_id': cur_menu_id, + 'id': id, + }) + cur_menu_id = cur_menu_id + 1 + elif node.parentNode.parentNode.nodeName == 'menulist': + if selected.lower() == 'true': + selected = 'TRUE' + else: + selected = 'FALSE' + cur_cf.write_body(' win32_menulist_add(cur_el, "%(label)s", %(selected)s);\n' % { + 'label': label, + 'selected': selected, + }) + +# +# <menulist> +# + +def win32_gen_menulist(node): + cur_cf.write_body(''' + /* Begin <menulist> */ + cur_el = win32_menulist_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + +def win32_gen_menulist_end(node): + cur_cf.write_body(' /* End <menulist> */\n') + +# +# <menuseparator> +# + +def win32_gen_menuseparator(node): + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'menupopup': + raise CodeGenerationError + if node.parentNode.parentNode.nodeName != 'menu': + raise CodeGenerationError + + cur_rcf.write_body(' MENUITEM SEPARATOR\n') + +# +# <progressmeter> +# + +def win32_gen_progressmeter(node): + + cur_cf.write_body(''' + /* Begin <progressmeter> */ + cur_el = win32_progressmeter_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(' /* End <progressmeter> */\n') + +# +# <radio> +# + +def win32_gen_radio(node): + global start_group + + label = get_attribute(node, 'label', '') + + cur_cf.write_body(''' + /* Begin <radio> */ + cur_el = win32_radio_new(cur_box->h_wnd, "%(label)s", %(start_group)d); + win32_box_add(cur_box, cur_el, -1); +''' % { + 'label': label, + 'start_group': start_group + }) + + get_element_attributes(node) + start_group = 0 + + cur_cf.write_body(' /* End <radio> */\n') + +# +# <radiogroup> +# +# XXX - Should this be its own full-fledged element instead of a vbox? +# +def win32_gen_radiogroup(node): + global start_group + start_group = 1 + + cur_cf.write_body(''' + /* Begin <radiogroup> */ + cur_el = win32_vbox_new(NULL, cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_radiogroup_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <radiogroup> */ +''') + + +# +# <row> +# +# XXX - We need to verify that we're inside a <grid><rows></rows></grid> +# construct. +# +def win32_gen_row(node): + + flex = float(get_attribute(node, 'flex', '0.0')) + flexgroup = int(get_attribute(node, 'flexgroup', '0')) + cur_cf.write_body(''' + /* Begin <row> */ + win32_grid_add_row(cur_box, %(flex)1.1f, %(flexgroup)d); + /* End <row> */ +''' % { + 'flex': flex, + 'flexgroup': flexgroup + }) + +# +# <spacer> +# +def win32_gen_spacer(node): + + cur_cf.write_body(''' + /* Begin <spacer> */ + cur_el = win32_spacer_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(' /* End <spacer> */\n') + +# +# <splitter> +# + +def win32_gen_splitter(node): + cur_cf.write_body(''' + /* Begin <splitter> */ + win32_box_add_splitter(cur_box, -1); + /* End <splitter> */ +''') + +# +# <textbox> +# + +def win32_gen_textbox(node): + value = get_attribute(node, 'value', None) + rows = get_attribute(node, 'rows', None) + multiline = get_attribute(node, 'multiline', 'FALSE'); + + if multiline.lower() == 'true': + multiline = 'TRUE' + + cur_cf.write_body(''' + /* Begin <textbox> */ + cur_el = win32_textbox_new(cur_box->h_wnd, %s); + win32_box_add(cur_box, cur_el, -1); +''' % (multiline)) + + get_element_attributes(node) + + if value is not None: + cur_cf.write_body(' win32_textbox_set_text(cur_el, "%s");\n' % (value)) + if rows is not None: + cur_cf.write_body(' win32_textbox_set_row_count(cur_el, %s);\n' % (rows)) +# XXX - Add multiline, onchange, oninput, other textbox-specific attributes + + cur_cf.write_body(' /* End <textbox> */\n') + +# +# <tree> +# + +def win32_gen_tree(node): + onselect = get_attribute(node, 'onselect') + el_id = get_attribute(node, 'id') + + cur_cf.write_body(''' + /* Begin <tree> */ + cur_el = win32_tree_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + if (onselect): + if el_id is None: + raise CodeGenerationError + cur_cf.write_body(' win32_tree_set_onselect(cur_el, %s);' % (onselect)) + # XXX - Add to the callback mechanism + cur_hf.write_body(''' +/* Command sent by <tree> id "%(id)s" */ +void %(onselect)s (win32_element_t *, NMTREEVIEW *); +''' % { + 'id': el_id, + 'onselect': onselect, + }) + +def win32_gen_tree_end(node): + cur_cf.write_body(''' + win32_tree_minimum_size(cur_el); + /* End <tree> */ +''') + +# +# <treecell> +# + +def win32_gen_treecell(node): + # <treecell>s MUST be a child of <treerow> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'treerow': + raise CodeGenerationError + + label = get_attribute(node, 'label', '') + el_id = get_attribute(node, 'id', '') + + cur_cf.write_body(''' + /* Begin <treecell> */ + win32_tree_add_cell(cur_el, "%(id)s", "%(label)s"); +''' % { + 'id': el_id, + 'label': label, + }) + +# +# <treecol> +# + +def win32_gen_treecol(node): + # <treecol>s MUST be a child of <treecols> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'treecols': + raise CodeGenerationError + + col_id = get_attribute(node, 'id', '') + label = get_attribute(node, 'label', '') + primary = get_attribute(node, 'primary', 'FALSE') + if primary.lower() == 'true': + primary = 'TRUE' + hideheader = get_attribute(node, 'hideheader', 'FALSE') + if hideheader.lower() == 'true': + hideheader = 'TRUE' + + cur_cf.write_body(''' + /* Begin <treecol> */ + win32_tree_add_column(cur_el, "%(id)s", "%(label)s", %(primary)s, %(hideheader)s); +''' % { + 'id': col_id, + 'label': label, + 'primary': primary, + 'hideheader': hideheader, + }) + +# +# <treeitem> +# + +def win32_gen_treeitem(node): + # <treeitem>s MUST be a child of <treechildren> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'treechildren': + raise CodeGenerationError + + is_open = get_attribute(node, 'open', 'FALSE') + + cur_cf.write_body(''' + /* Begin <treeitem> */ + win32_tree_push(cur_el); +''') + + if is_open.lower() == 'true': + cur_cf.write_body(' win32_tree_flag_open_item(cur_el);\n') + +def win32_gen_treeitem_end(node): + cur_cf.write_body(''' + win32_tree_pop(cur_el); + /* End <treeitem> */ +''') + +# +# <treerow> +# + +def win32_gen_treerow(node): + # <treerow>s MUST be a child of <treeitem> + # XXX - Move to xulender.py + if node.parentNode.nodeName != 'treeitem': + raise CodeGenerationError + + el_id = get_attribute(node, 'id', '') + + cur_cf.write_body(''' + /* Begin <treerow> */ + win32_tree_add_row(cur_el, "%(id)s"); +''' % { + 'id': el_id + }) + +# +# <vbox> +# + +def win32_gen_vbox(node): + + cur_cf.write_body(''' + /* Begin <vbox> */ + cur_el = win32_vbox_new(NULL, cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + box_stack = g_list_prepend(box_stack, cur_box); + cur_box = cur_el; +''') + +def win32_gen_vbox_end(node): + cur_cf.write_body(''' + box_stack = g_list_first(box_stack); + cur_box = (win32_element_t *) box_stack->data; + box_stack = g_list_remove(box_stack, cur_box); + /* End <vbox> */ +''') + +# +# <window> +# + +# +# Contained elements are added to the WM_CREATE notify function. +# +# XXX - We need a way to automagically pick up a list of the types of +# widgets we use, and #include them. +# +# XXX - Fix #include order to fix va_start/_end redefinition errors. +# +def win32_gen_window(node): + global cur_cf, cur_hf, cur_rcf, cur_window_id + + try: + cur_window_id = node.attributes['id'].value + cur_var_name = id_to_name(cur_window_id) + except: + CodeGenerationError + + cur_width = int(get_attribute(node, 'width', 250)) + cur_height = int(get_attribute(node, 'height', 100)) + title = get_attribute(node, 'title', '[ Untitled - ' + cur_window_id + ' ]') + id = get_attribute(node, 'id', None) + header_file_name = cur_window_id + '.h' + + cur_cf = sect_file(cur_window_id + '.c') + cur_cf.write_body(''' +#include "config.h" + +#ifdef HAVE_LIBPCAP +#include <pcap.h> +#endif + +#include <windows.h> +#include <windowsx.h> +#include <commctrl.h> + +#include "globals.h" + +#include <epan/epan.h> + +#include "win32-c-sdk.h" +#include "ethereal-win32.h" + +#include "%(header_file_name)s" + +/* Create window "%(cur_window_id)s"*/ +HWND +%(varname)s_window_create (HINSTANCE h_instance) { + HWND h_wnd; + + /* Register main window class if this is the first instance of the app. */ + /* if (!hPrevInstance) + if (!MenuInit (hInstance)) + return 0; */ + + h_wnd = CreateWindow ("%(varname)s", "%(title)s", + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, %(width)d, %(height)d, + (HWND) NULL, NULL, h_instance, (LPSTR) NULL); + + if (!h_wnd) + return NULL; + + return h_wnd; +} + +void +%(varname)s_window_show(HWND h_wnd, int n_cmd_show) { + ShowWindow (h_wnd, n_cmd_show); + UpdateWindow (h_wnd); +} + +/* Resize the contents of "%(cur_window_id)s". Should be called from its + * WNDPROC. + */ +void +%(varname)s_handle_wm_size(HWND hwnd, int width, int height) { + win32_element_t *hw_hbox; + + hw_hbox = (win32_element_t *) GetWindowLong(hwnd, GWL_USERDATA); + win32_element_assert (hw_hbox); + + win32_element_resize(hw_hbox, width, height); +} + +/* + * Create the contents of "%(cur_window_id)s". Should be called from its + * WNDPROC. + */ +void +%(varname)s_handle_wm_create(HWND hw_mainwin) { + win32_element_t *win_hbox, *cur_box = NULL; + win32_element_t *cur_el = NULL; + GList* box_stack = NULL; + + win_hbox = win32_hbox_new(hw_mainwin, NULL); + cur_box = win_hbox; + win32_element_set_id(cur_box, "%(cur_window_id)s"); + +''' % { + 'cur_window_id': cur_window_id, + 'header_file_name': header_file_name, + 'height': cur_height, + 'title': title, + 'varname': cur_var_name, + 'width': cur_width, + }) + + cur_hf = sect_file(header_file_name) + + cur_hf.write_header(''' +#ifndef %(define_name)s +#define %(define_name)s +''' % { + 'define_name': id_to_name(cur_window_id).upper() + '_H' + }) + + cur_hf.write_body(''' +HWND %(varname)s_window_create (HINSTANCE h_instance); +void %(varname)s_handle_wm_size(HWND hw_mainwin, int width, int height); +void %(varname)s_handle_wm_create(HWND hw_mainwin); +void %(varname)s_window_show(HWND h_wnd, int n_cmd_show); +void %(varname)s_window_hide(HWND h_wnd, int n_cmd_show); + +''' % { + 'varname': cur_var_name, + }) + + cur_hf.write_footer('\n\n#endif /* ' + header_file_name + ' */\n') + + cur_rcf = sect_file(cur_window_id + '.rc') + cur_rcf.write_header(''' +#include "%(header_file_name)s" +''' % {'header_file_name': header_file_name } ) + +def win32_gen_window_end(node): + cur_cf.write_body(''' + /* Set our initial size */ + win32_element_resize(win_hbox, + win32_element_get_width(win_hbox), + win32_element_get_height(win_hbox)); + /* End <window> */ +} + +''') + +# +# Ethereal-specific element generators +# XXX - These should be in their own module. +# + +# +# <ethereal:byteview> +# + +def win32_gen_ethereal_byteview(node): + + cur_cf.write_body(''' + /* Begin <ethereal:byteview> */ + cur_el = ethereal_byteview_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + /* End <ethereal:byteview> */ + ''') + +# +# <ethereal:combobox> +# +# XXX - The XUL Planet element reference at +# +# http://www.xulplanet.com/references/elemref/ +# +# doesn't define a "combobox" element. However, the Luxor XUL project +# does in the form of a "choice" elment: +# +# http://luxor-xul.sourceforge.net/xulref/tag-choice.html +# +# We define a combobox in the Ethereal namespace. Should we use "choice" +# instead? +# + +def win32_gen_ethereal_combobox(node): + + cur_cf.write_body(''' + /* Begin <ethereal:combobox> */ + cur_el = ethereal_combobox_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + /* End <ethereal:combobox> */ + ''') + +# +# <ethereal:packetlist> +# + +def win32_gen_ethereal_packetlist(node): + + cur_cf.write_body(''' + /* Begin <ethereal:packetlist> */ + cur_el = ethereal_packetlist_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(''' + /* End <ethereal:packetlist> */ + ''') + +# +# <ethereal:spinner> +# + +def win32_gen_ethereal_spinner(node): + + cur_cf.write_body(''' + /* Begin <spinner> */ + cur_el = ethereal_spinner_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); +''') + + get_element_attributes(node) + + cur_cf.write_body(' /* End <spinner> */\n') + +# +# <ethereal:treeview> +# + +def win32_gen_ethereal_treeview(node): + + cur_cf.write_body(''' + /* Begin <ethereal:treeview> */ + cur_el = ethereal_treeview_new(cur_box->h_wnd); + win32_box_add(cur_box, cur_el, -1); + ''') + + get_element_attributes(node) + + cur_cf.write_body(' /* End <ethereal:treeview> */\n') Files ethereal/xulender/win32csdk.pyc and ethereal-win32/xulender/win32csdk.pyc differ diff -x entries -urN ethereal/xulender/xulender.py ethereal-win32/xulender/xulender.py --- ethereal/xulender/xulender.py 1969-12-31 18:00:00.000000000 -0600 +++ ethereal-win32/xulender/xulender.py 2004-05-17 15:04:58.000000000 -0500 @@ -0,0 +1,122 @@ +#!/bin/env python +# +# Xulender ('zoo-len-d&r) - XUL frontend generator. Reads a XUL interface +# definition and generates an application frontend for a particular language +# and API. +# +# Mozilla XUL reference: http://www.mozilla.org/xpfe/xulref/ +# XUL Planet XUL reference: http://www.xulplanet.com/references/elemref/ +# +# Tabs: 8 Indent: 4 + +# Standard Python modules +import sys +import xml +from xml.dom.minidom import parse +import os +import getopt + +# Local modules +import win32csdk +from frontendutil import id_to_name + +frontend_list = [] + +def level_prefix(lvl): + if lvl == 0: return '' + return '--' * (lvl - 1) + '->' + +def walk_tree(doc, lvl): + for n in doc.childNodes: + + # To make things a little more clean (but a bit less obvious) + # we borrow a trick from John Aycock's SPARK utility. For each + # frontend we have defined, we first see if a "gen" routine + # exists for the nodename, e.g. win32_gen_button. If it does, + # we call it. This avoids having a huge if/then/else clause in + # each frontend module. + if n.nodeType is n.ELEMENT_NODE: + # XXX - For now, we force external elements (e.g. ethereal:packetlist) + # into the local "namespace" by converting the colon to an underscore. + # We may at some point to put external element generators in their own + # modules. + element_name = id_to_name(n.nodeName) + + for fe in frontend_list: + pfx = fe.get_func_prefix() + func_name = pfx + '_gen_' + element_name + if hasattr(fe, func_name): + func = getattr(fe, func_name) + func(n) + + print level_prefix(lvl), element_name, + if n.hasAttributes(): + print '[', + for k in n.attributes.keys(): + print k + ': ' + n.attributes[k].value + ' ', + print ']' + else: + print + + if n.hasChildNodes(): + walk_tree(n, lvl + 1) + + # Once we've walked our child nodes, see if we have an _end routine + # defined, and call it. + if n.nodeType is n.ELEMENT_NODE: + for fe in frontend_list: + pfx = fe.get_func_prefix() + func_name = pfx + '_gen_' + element_name + '_end' + if hasattr(fe, func_name): + func = getattr(fe, func_name) + func(n) + +def main(): + path_prefix = '' + opts, files = getopt.getopt(sys.argv[1:], 'f:I:') + + for flag, arg in opts: + if flag == '-f': + frontends = arg.split(',') + for fe in frontends: + if fe == 'win32csdk': + if win32csdk not in frontend_list: + frontend_list.append(win32csdk) + else: + print 'Error: Unknown frontend "' + fe + '"' + if flag == '-I': + path_prefix = arg + + print 'Path prefix: ' + path_prefix + + # XXX - Pass these as command-line arguments from the Makefile + if (len(files) < 1): + print "Error: No XUL source file specified." + return 1 + + for xul_file in files: + ds = open(os.path.join(path_prefix, xul_file)) + try: + ui_doc = parse(ds) + except xml.parsers.expat.ExpatError, err: + print 'Error in "%s", line %d, column %d\n' % ( + os.path.join(path_prefix, xul_file), + err.lineno, + err.offset + 1, + ) + ds.seek(0) + for i in range(err.lineno): + err_line = ds.readline() + print err_line.rstrip() + print ' ' * err.offset + '^' + print 'ExpatError: ' + \ + xml.parsers.expat.ErrorString(err.code) + '\n' + return 1 + + walk_tree(ui_doc, 0) + + for fe in frontend_list: + fe.cleanup() + +if __name__ == '__main__': + sys.exit(main())
- Follow-Ups:
- Re: [Ethereal-dev] Native Windows update
- From: Guy Harris
- Re: [Ethereal-dev] Native Windows update
- From: Joerg Mayer
- Re: [Ethereal-dev] Native Windows update
- Prev by Date: Re: [Ethereal-dev] Problems with python in building from SVN
- Next by Date: [Ethereal-dev] Patch to add copy as CSV to the context menu for the Endpoint List and Conversation List windows
- Previous by thread: RE: [Ethereal-dev] adding a plugin to ethereal
- Next by thread: Re: [Ethereal-dev] Native Windows update
- Index(es):