From e2aea53993703102ead96128277a69fd0e077511 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Mon, 25 Sep 2006 08:50:21 +0000 Subject: [PATCH] update the idl for wkssvc and generate the dissector by pidl svn path=/trunk/; revision=19321 --- epan/dissectors/packet-dcerpc-wkssvc.c | 5974 +++++++++++++++++------- epan/dissectors/packet-dcerpc-wkssvc.h | 96 +- epan/dissectors/pidl/wkssvc.cnf | 14 + epan/dissectors/pidl/wkssvc.idl | 23 +- 4 files changed, 4401 insertions(+), 1706 deletions(-) diff --git a/epan/dissectors/packet-dcerpc-wkssvc.c b/epan/dissectors/packet-dcerpc-wkssvc.c index f3c72f2c5a..c8b861bab3 100644 --- a/epan/dissectors/packet-dcerpc-wkssvc.c +++ b/epan/dissectors/packet-dcerpc-wkssvc.c @@ -1,1796 +1,4514 @@ -/* packet-dcerpc-wkssvc.c - * Routines for SMB \\PIPE\\wkssvc packet disassembly - * Copyright 2001, Tim Potter - * Copyright 2003, Richard Sharpe - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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. - */ +/* DO NOT EDIT + This filter was automatically generated + from wkssvc.idl and wkssvc.cnf. + + Pidl is a perl based IDL compiler for DCE/RPC idl files. + It is maintained by the Samba team, not the Wireshark team. + Instructions on how to download and install Pidl can be + found at http://wiki.wireshark.org/Pidl +*/ + #ifdef HAVE_CONFIG_H #include "config.h" #endif #include +#include #include + #include "packet-dcerpc.h" -#include "packet-dcerpc-wkssvc.h" #include "packet-dcerpc-nt.h" #include "packet-windows-common.h" +#include "packet-dcerpc-wkssvc.h" -static int proto_dcerpc_wkssvc = -1; -static int hf_wkssvc_opnum = -1; -static int hf_wkssvc_server = -1; -static int hf_wkssvc_info_level = -1; -static int hf_wkssvc_platform_id = -1; -static int hf_wkssvc_net_group = -1; -static int hf_wkssvc_ver_major = -1; -static int hf_wkssvc_ver_minor = -1; -static int hf_wkssvc_lan_root = -1; -static int hf_wkssvc_rc = -1; -static int hf_wkssvc_logged_on_users = -1; -static int hf_wkssvc_pref_max = -1; -static int hf_wkssvc_enum_handle = -1; -static int hf_wkssvc_junk = -1; -static int hf_wkssvc_user_name = -1; -static int hf_wkssvc_num_entries = -1; -static int hf_wkssvc_logon_domain = -1; -static int hf_wkssvc_other_domains = -1; -static int hf_wkssvc_logon_server = -1; -static int hf_wkssvc_entries_read = -1; -static int hf_wkssvc_total_entries = -1; -static int hf_wkssvc_char_wait = -1; -static int hf_wkssvc_collection_time = -1; -static int hf_wkssvc_maximum_collection_count = -1; -static int hf_wkssvc_keep_conn = -1; -static int hf_wkssvc_max_cmds = -1; -static int hf_wkssvc_sess_timeout = -1; -static int hf_wkssvc_siz_char_buf = -1; -static int hf_wkssvc_max_threads = -1; -static int hf_wkssvc_lock_quota = -1; -static int hf_wkssvc_lock_increment = -1; -static int hf_wkssvc_lock_maximum = -1; -static int hf_wkssvc_pipe_increment = -1; -static int hf_wkssvc_pipe_maximum = -1; -static int hf_wkssvc_cache_file_timeout = -1; -static int hf_wkssvc_dormant_file_limit = -1; -static int hf_wkssvc_read_ahead_throughput = -1; -static int hf_wkssvc_num_mailslot_buffers = -1; -static int hf_wkssvc_num_srv_announce_buffers = -1; -static int hf_wkssvc_max_illegal_datagram_events = -1; -static int hf_wkssvc_illegal_datagram_event_reset_frequency = -1; -static int hf_wkssvc_log_election_packets = -1; -static int hf_wkssvc_use_opportunistic_locking = -1; -static int hf_wkssvc_use_unlock_behind = -1; -static int hf_wkssvc_use_close_behind = -1; -static int hf_wkssvc_buf_named_pipes = -1; -static int hf_wkssvc_use_lock_read_unlock = -1; -static int hf_wkssvc_utilize_nt_caching = -1; -static int hf_wkssvc_use_raw_read = -1; -static int hf_wkssvc_use_raw_write = -1; -static int hf_wkssvc_use_write_raw_data = -1; -static int hf_wkssvc_use_encryption = -1; -static int hf_wkssvc_buf_files_deny_write = -1; -static int hf_wkssvc_buf_read_only_files = -1; -static int hf_wkssvc_force_core_create_mode = -1; -static int hf_wkssvc_use_512_byte_max_transfer = -1; -static int hf_wkssvc_parm_err = -1; -static int hf_wkssvc_errlog_sz = -1; -static int hf_wkssvc_print_buf_time = -1; -static int hf_wkssvc_wrk_heuristics = -1; -static int hf_wkssvc_quality_of_service = -1; -static int hf_wkssvc_number_of_vcs = -1; -static int hf_wkssvc_transport_name = -1; -static int hf_wkssvc_transport_address = -1; -static int hf_wkssvc_wan_ish = -1; -static int hf_wkssvc_domain_to_join = -1; -static int hf_wkssvc_ou_for_computer_account = -1; -static int hf_wkssvc_account_used_for_join = -1; -static int hf_wkssvc_encrypted_password = -1; -static int hf_wkssvc_join_flags = -1; -static int hf_wkssvc_unjoin_flags = -1; -static int hf_wkssvc_rename_flags = -1; -static int hf_wkssvc_join_options_join_type = -1; -static int hf_wkssvc_join_options_acct_create = -1; -static int hf_wkssvc_unjoin_options_acct_delete = -1; -static int hf_wkssvc_join_options_win9x_upgrade = -1; -static int hf_wkssvc_join_options_domain_join_if_joined = -1; -static int hf_wkssvc_join_options_join_unsecure = -1; -static int hf_wkssvc_join_options_machine_pwd_passed = -1; -static int hf_wkssvc_join_options_defer_spn_set = -1; -static int hf_wkssvc_account_used_for_unjoin = -1; -static int hf_wkssvc_alternate_name = -1; -static int hf_wkssvc_account_used_for_alternate_name = -1; -static int hf_wkssvc_reserved = -1; - +/* Ett declarations */ static gint ett_dcerpc_wkssvc = -1; -static gint ett_dcerpc_wkssvc_join_flags = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo100 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo101 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo102 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo502 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1010 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1011 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1012 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1013 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1018 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1023 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1027 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo1033 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaInfo = -1; +static gint ett_wkssvc_USER_INFO_0 = -1; +static gint ett_wkssvc_USER_INFO_0_CONTAINER = -1; +static gint ett_wkssvc_USER_INFO_1 = -1; +static gint ett_wkssvc_USER_INFO_1_CONTAINER = -1; +static gint ett_wkssvc_WKS_USER_ENUM_UNION = -1; +static gint ett_wkssvc_wkssvc_NetWkstaTransportInfo0 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaTransportCtr0 = -1; +static gint ett_wkssvc_wkssvc_NetWkstaTransportCtr = -1; +static gint ett_wkssvc_wkssvc_PasswordBuffer = -1; +static gint ett_wkssvc_wkssvc_joinflags = -1; +static gint ett_wkssvc_wkssvc_renameflags = -1; + + +/* Header field declarations */ +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_read = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_entriesread = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_dgram_event_reset_freq = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportCtr0_count = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_increment = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info502 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaGetInfo_info = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_log_election_packets = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_char_wait = -1; +static gint hf_wkssvc_USER_INFO_0_user = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_buf_files_deny_write = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_force_core_create_mode = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1013_keep_connection = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1011_collection_time = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_platform_id = -1; +static gint hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_EncryptedPassword = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = -1; +static gint hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_logged_on_users = -1; +static gint hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportInfo0_vc_count = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_read_ahead_throughput = -1; +static gint hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account = -1; +static gint hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo100_version_minor = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_num_mailslot_buffers = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name = -1; +static gint hf_wkssvc_WKS_USER_ENUM_UNION_user0 = -1; +static gint hf_wkssvc_WKS_USER_ENUM_UNION_user1 = -1; +static gint hf_wkssvc_USER_INFO_1_user_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_maximum_collection_count = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_prefmaxlen = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_level = -1; +static gint hf_wkssvc_USER_INFO_1_other_domains = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = -1; +static gint hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_encryption = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_totalentries = -1; +static gint hf_wkssvc_wkssvc_NetrAddAlternateComputerName_EncryptedPassword = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportInfo0_quality_of_service = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo100_platform_id = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_ctr = -1; +static gint hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account = -1; +static gint hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaSetInfo_level = -1; +static gint hf_wkssvc_wkssvc_renameflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1023_size_char_buf = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1010 = -1; +static gint hf_wkssvc_platform_id = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1011 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1012 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_lock_maximum = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1013 = -1; +static gint hf_wkssvc_USER_INFO_0_CONTAINER_user0 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1018 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_buf_read_only_files = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_version_minor = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name = -1; +static gint hf_wkssvc_opnum = -1; +static gint hf_wkssvc_wkssvc_NetrUnjoinDomain2_account = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_dormant_file_limit = -1; +static gint hf_wkssvc_USER_INFO_1_CONTAINER_user1 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_unlock_behind = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_resumehandle = -1; +static gint hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_EncryptedPassword = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_maximum = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_cache_file_timeout = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_level = -1; +static gint hf_wkssvc_wkssvc_NetrUnjoinDomain2_encrypted_password = -1; +static gint hf_wkssvc_USER_INFO_1_CONTAINER_entries_read = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1023 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaSetInfo_parm_error = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_write = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info100 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info101 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info102 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1027 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_512_byte_max_transfer = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1018_session_timeout = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1033_max_threads = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo100_version_major = -1; +static gint hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo100_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_users = -1; +static gint hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_version_minor = -1; +static gint hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_max_commands = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_utilize_nt_caching = -1; +static gint hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_max_threads = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_size_char_buf = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo_info1033 = -1; +static gint hf_wkssvc_wkssvc_NetWkstaSetInfo_info = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1012_maximum_collection_count = -1; +static gint hf_wkssvc_USER_INFO_1_logon_domain = -1; +static gint hf_wkssvc_werror = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_num_srv_announce_buffers = -1; +static gint hf_wkssvc_wkssvc_NetrUnjoinDomain2_unjoin_flags = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_close_behind = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_encrypted_password = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo101_version_major = -1; +static gint hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_lock_read_unlock = -1; +static gint hf_wkssvc_wkssvc_NetWkstaGetInfo_level = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_join_flags = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1010_char_wait = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_lock_increment = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo1027_errorlog_sz = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportCtr_ctr0 = -1; +static gint hf_wkssvc_wkssvc_NetrJoinDomain2_account_name = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportInfo0_wan_link = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_keep_connection = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_resume_handle = -1; +static gint hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Reserved = -1; +static gint hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_RenameOptions = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_write_raw_data = -1; +static gint hf_wkssvc_USER_INFO_1_logon_server = -1; +static gint hf_wkssvc_wkssvc_PasswordBuffer_data = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_max_buffer = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_max_illegal_dgram_events = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportEnum_totalentries = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_use_opportunistic_locking = -1; +static gint hf_wkssvc_USER_INFO_0_CONTAINER_entries_read = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_version_major = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo102_platform_id = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_lock_quota = -1; +static gint hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account = -1; +static gint hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_session_timeout = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address = -1; +static gint hf_wkssvc_wkssvc_NetWkstaTransportCtr0_array = -1; +static gint hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Reserved = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_buf_named_pipes = -1; +static gint hf_wkssvc_wkssvc_NetWkstaInfo502_collection_time = -1; + +static gint proto_dcerpc_wkssvc = -1; +/* Version information */ static e_uuid_t uuid_dcerpc_wkssvc = { - 0x6bffd098, 0xa112, 0x3610, - { 0x98, 0x33, 0x46, 0xc3, 0xf8, 0x7e, 0x34, 0x5a } + 0x6bffd098, 0xa112, 0x3610, + { 0x98, 0x33, 0x46, 0xc3, 0xf8, 0x7e, 0x34, 0x5a } }; - -static int -wkssvc_dissect_ENUM_HANDLE(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_enum_handle, 0); - return offset; - -} - static guint16 ver_dcerpc_wkssvc = 1; -/* - * IDL typedef struct { - * IDL long platform_id; - * IDL [string] [unique] wchar_t *server; - * IDL [string] [unique] wchar_t *lan_grp; - * IDL long ver_major; - * IDL long ver_minor; - * IDL } WKS_INFO_100; - */ +static int wkssvc_dissect_element_NetWkstaInfo100_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo100_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_lan_root(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo101_lan_root_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_lan_root(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_lan_root_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo102_logged_on_users(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_char_wait(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_collection_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_maximum_collection_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_keep_connection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_max_commands(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_session_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_size_char_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_max_threads(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_lock_quota(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_lock_increment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_lock_maximum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_pipe_increment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_pipe_maximum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_cache_file_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_dormant_file_limit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_read_ahead_throughput(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_num_mailslot_buffers(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_num_srv_announce_buffers(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_max_illegal_dgram_events(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_dgram_event_reset_freq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_log_election_packets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_opportunistic_locking(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_unlock_behind(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_close_behind(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_buf_named_pipes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_lock_read_unlock(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_utilize_nt_caching(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_raw_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_raw_write(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_write_raw_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_encryption(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_buf_files_deny_write(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_buf_read_only_files(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_force_core_create_mode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo502_use_512_byte_max_transfer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1010_char_wait(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1011_collection_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1012_maximum_collection_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1013_keep_connection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1018_session_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1023_size_char_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1027_errorlog_sz(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo1033_max_threads(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info100(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info100_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info101(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info101_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info102(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info102_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info502(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info502_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1010(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1010_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1011(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1011_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1012(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1012_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1013(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1013_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1018(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1018_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1023(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1023_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1027(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1027_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1033(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaInfo_info1033_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_user(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_user_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_CONTAINER_entries_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_user_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_user_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_logon_domain(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_logon_domain_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_other_domains(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_other_domains_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_logon_server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_logon_server_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_CONTAINER_entries_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_quality_of_service(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_vc_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_address_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportInfo0_wan_link(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr0_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr0_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr0_array_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr0_array__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr_ctr0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportCtr_ctr0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_PasswordBuffer_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_PasswordBuffer_data_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN_tfs = { + "Defer setting of servicePrincipalName and dNSHostName attributes on the computer object until a rename operation", + "Set servicePrincipalName and dNSHostName attributes on the computer object", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED_tfs = { + "Set the machine password after domain join to passed password", + "Do not set the machine password after domain join to passed password", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE_tfs = { + "Performs an unsecured join", + "Perform a secured join", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED_tfs = { + "Allow a join to a new domain even if the computer is already joined to a domain", + "Do not allow join to a new domain if the computer is already joined to a domain", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE_tfs = { + "The join operation is occuring as part of an upgrade of Windows 9x", + "The join operation is not part of a Windows 9x upgrade", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE_tfs = { + "Delete the account when a domain is left", + "Do not delete the account when a domain is left", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE_tfs = { + "Create the account on the domain", + "Do not create the account", +}; +static const true_false_string wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE_tfs = { + "Join the computer to a domain", + "Join the computer to a workgroup", +}; +static const true_false_string wkssvc_renameflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE_tfs = { + "WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE is SET", + "WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE is NOT SET", +}; +static int wkssvc_dissect_element_NetWkstaGetInfo_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaGetInfo_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaGetInfo_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaGetInfo_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaGetInfo_info_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_info_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_parm_error(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaSetInfo_parm_error_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_users(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_users_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_prefmaxlen(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_entriesread(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_entriesread_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_totalentries(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_totalentries_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_ctr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_ctr_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_max_buffer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_totalentries(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_account_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_account_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_admin_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_admin_account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_encrypted_password(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_encrypted_password_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrJoinDomain2_join_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrUnjoinDomain2_unjoin_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRenameMachineInDomain2_RenameOptions(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrAddAlternateComputerName_Reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +static int wkssvc_dissect_element_NetrRemoveAlternateComputerName_Reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep); +/* Bug in pidl. Can not handle these dependencies properly yet */ static int -wkssvc_dissect_WKS_INFO_100(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +srvsvc_dissect_struct_PlatformId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_platform_id, NULL); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", hf_wkssvc_server, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Net Group", hf_wkssvc_net_group, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_major, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_minor, NULL); - + offset = srvsvc_dissect_enum_PlatformId(tvb,offset,pinfo,tree,drep,hf_wkssvc_platform_id,0); return offset; } -/* - * IDL typedef struct { - * IDL long platform_id; - * IDL [string] [unique] wchar_t *server; - * IDL [string] [unique] wchar_t *lan_grp; - * IDL long ver_major; - * IDL long ver_minor; - * IDL [string] [unique] wchar_t *lan_root; - * IDL } WKS_INFO_101; - */ +/* IDL: typedef struct { */ +/* IDL: srvsvc_PlatformId platform_id; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *server_name; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *domain_name; */ +/* IDL: uint32 version_major; */ +/* IDL: uint32 version_minor; */ +/* IDL: } wkssvc_NetWkstaInfo100; */ + static int -wkssvc_dissect_WKS_INFO_101(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_platform_id, NULL); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", hf_wkssvc_server, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Net Group", hf_wkssvc_net_group, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_major, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_minor, NULL); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Lan Root", hf_wkssvc_lan_root, 0); - - return offset; -} - -/* - * IDL typedef struct { - * IDL long platform_id; - * IDL [string] [unique] wchar_t *server; - * IDL [string] [unique] wchar_t *lan_grp; - * IDL long ver_major; - * IDL long ver_minor; - * IDL [string] [unique] wchar_t *lan_root; - * IDL long logged_on_users; - * IDL } WKS_INFO_102; - */ -static int -wkssvc_dissect_WKS_INFO_102(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_platform_id, NULL); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", hf_wkssvc_server, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Net Group", hf_wkssvc_net_group, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_major, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_ver_minor, NULL); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Lan Root", hf_wkssvc_lan_root, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_logged_on_users, NULL); - - return offset; -} -/* - * IDL typedef struct { - * IDL long wki502_sess_timeout; - * IDL } WKS_INFO_502; - */ -static int -wkssvc_dissect_WKS_INFO_502(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_char_wait, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_collection_time, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_maximum_collection_count, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_keep_conn, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_max_cmds, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_sess_timeout, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_siz_char_buf, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_max_threads, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_lock_quota, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_lock_increment, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_lock_maximum, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_pipe_increment, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_pipe_maximum, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_cache_file_timeout, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_dormant_file_limit, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_read_ahead_throughput, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_num_mailslot_buffers, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_num_srv_announce_buffers, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_max_illegal_datagram_events, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_illegal_datagram_event_reset_frequency, - NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_log_election_packets, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_opportunistic_locking, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_unlock_behind, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_close_behind, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_buf_named_pipes, NULL); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_lock_read_unlock, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_utilize_nt_caching, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_raw_read, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_raw_write, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_write_raw_data, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_encryption, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_buf_files_deny_write, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_buf_read_only_files, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_force_core_create_mode, NULL); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_use_512_byte_max_transfer, NULL); + offset = srvsvc_dissect_struct_PlatformId(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo100_platform_id,0); return offset; } static int -wkssvc_dissect_WKS_INFO_1010(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_char_wait, NULL); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo100_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo100_server_name); return offset; } static int -wkssvc_dissect_WKS_INFO_1011(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_collection_time, NULL); + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo100_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); return offset; } static int -wkssvc_dissect_WKS_INFO_1012(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_maximum_collection_count, NULL); + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo100_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name); return offset; } static int -wkssvc_dissect_WKS_INFO_1013(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_keep_conn, NULL); + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); return offset; } static int -wkssvc_dissect_WKS_INFO_1018(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_sess_timeout, NULL); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo100_version_major,NULL); return offset; } static int -wkssvc_dissect_WKS_INFO_1023(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +wkssvc_dissect_element_NetWkstaInfo100_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_siz_char_buf, NULL); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo100_version_minor,NULL); return offset; } -static int -wkssvc_dissect_WKS_INFO_1027(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +int +wkssvc_dissect_struct_NetWkstaInfo100(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) { - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_errlog_sz, NULL); - - return offset; -} - -static int -wkssvc_dissect_WKS_INFO_1033(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_max_threads, NULL); - - return offset; -} - -/* - * IDL long NetWkstaGetInfo( - * IDL [in] [string] [unique] wchar_t *ServerName, - * IDL [in] long level, - * IDL [out] [ref] WKS_INFO_UNION *wks - * IDL ); - */ -static int -wkssvc_dissect_netwkstagetinfo_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - dcerpc_info *di; - guint32 level; - - di = pinfo->private_data; - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, &level); - - if (!check_col(pinfo->cinfo, COL_INFO)) - return offset; - - switch (level) { - case 100: - col_append_str(pinfo->cinfo, COL_INFO, ", WKS_INFO_100 level"); - break; - case 101: - col_append_str(pinfo->cinfo, COL_INFO, ", WKS_INFO_101 level"); - break; - case 102: - col_append_str(pinfo->cinfo, COL_INFO, ", WKS_INFO_102 level"); - break; - case 502: - col_append_str(pinfo->cinfo, COL_INFO, ", WKS_INFO_502 level"); - break; - default: - col_append_str(pinfo->cinfo, COL_INFO, ", WKS_INFO_xxx level"); - } - - return offset; - -} - -/* - * IDL typedef [switch_type(long)] union { - * IDL [case(100)] [unique] WKS_INFO_100 *wks100; - * IDL [case(101)] [unique] WKS_INFO_101 *wks101; - * IDL [case(102)] [unique] WKS_INFO_102 *wks102; - * IDL [case(502)] [unique] WKS_INFO_502 *wks502; - * IDL [case(1010)] [unique] WKS_INFO_1010 *wks1010; - * IDL [case(1011)] [unique] WKS_INFO_1011 *wks1011; - * IDL [case(1012)] [unique] WKS_INFO_1012 *wks1012; - * IDL [case(1013)] [unique] WKS_INFO_1013 *wks1013; - * IDL [case(1018)] [unique] WKS_INFO_1018 *wks1018; - * IDL [case(1023)] [unique] WKS_INFO_1023 *wks1023; - * IDL [case(1027)] [unique] WKS_INFO_1027 *wks1027; - * IDL [case(1033)] [unique] WKS_INFO_1033 *wks1033; - * IDL } WKS_INFO_UNION; - */ -static int -wkssvc_dissect_WKS_GETINFO_UNION(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - guint32 level; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; ALIGN_TO_4_BYTES; - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_info_level, &level); - - switch(level){ - case 100: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_100, - NDR_POINTER_UNIQUE, "WKS_INFO_100:", -1); - break; - - case 101: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_101, - NDR_POINTER_UNIQUE, "WKS_INFO_101:", -1); - break; - - case 102: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_102, - NDR_POINTER_UNIQUE, "WKS_INFO_102:", -1); - break; - - /* There is a 302 and 402 level, but I am too lazy today */ - - case 502: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_502, - NDR_POINTER_UNIQUE, - "WKS_INFO_502:", -1); - break; - - case 1010: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1010, - NDR_POINTER_UNIQUE, - "WKS_INFO_1010:", -1); - break; - - case 1011: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1011, - NDR_POINTER_UNIQUE, - "WKS_INFO_1011:", -1); - break; - - case 1012: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1012, - NDR_POINTER_UNIQUE, - "WKS_INFO_1012:", -1); - break; - - case 1013: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1013, - NDR_POINTER_UNIQUE, - "WKS_INFO_1013:", -1); - break; - - case 1018: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1018, - NDR_POINTER_UNIQUE, - "WKS_INFO_1018:", -1); - break; - - case 1023: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1023, - NDR_POINTER_UNIQUE, - "WKS_INFO_1023:", -1); - break; - - case 1027: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1027, - NDR_POINTER_UNIQUE, - "WKS_INFO_1027:", -1); - break; - - case 1033: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1033, - NDR_POINTER_UNIQUE, - "WKS_INFO_1033:", -1); - break; - - /* case 1018: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_INFO_1018, - NDR_POINTER_UNIQUE, - "WKS_INFO_1018:", -1); - break; */ + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo100); } - - return offset; - -} - -static int wkssvc_dissect_netwkstagetinfo_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, - proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_GETINFO_UNION, - NDR_POINTER_REF, "Server Info", -1); - - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); - - return offset; -} - -/* - * IDL long NetWkstaSetInfo( - * IDL [in] [string] [unique] wchar_t *ServerName, - * IDL [in] long level, - * IDL [in] [ref] WKS_INFO_UNION *wks, - * IDL [out] long parm_err - * IDL ); - */ -static int wkssvc_dissect_netwkstasetinfo_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, - proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_WKS_GETINFO_UNION, - NDR_POINTER_REF, "Server Info", -1); - - return offset; - -} - -static int wkssvc_dissect_netwkstasetinfo_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, - proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_parm_err, 0); - - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); - - return offset; - -} - -/* - * IDL typedef struct { - * IDL [string] [unique] wchar_t *dev; - * IDL } USER_INFO_0; - */ -static int -wkssvc_dissect_USER_INFO_0(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "User Name", - hf_wkssvc_user_name, 0); - - return offset; -} - -static int -wkssvc_dissect_USER_INFO_0_array(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_0); - - return offset; -} - -/* - * IDL typedef struct { - * IDL long EntriesRead; - * IDL [size_is(EntriesRead)] [unique] USER_INFO_0 *devs; - * IDL } USER_INFO_0_CONTAINER; - */ -static int -wkssvc_dissect_USER_INFO_0_CONTAINER(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_num_entries, NULL); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_0_array, NDR_POINTER_UNIQUE, - "USER_INFO_0 array:", -1); - - return offset; -} - -/* - * IDL typedef struct { - * IDL [string] [unique] wchar_t *user_name; - * IDL [string] [unique] wchar_t *logon_domain; - * IDL [string] [unique] wchar_t *other_domains; - * IDL [string] [unique] wchar_t *logon_server; - * IDL } USER_INFO_1; - */ -static int -wkssvc_dissect_USER_INFO_1(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "User Name", - hf_wkssvc_user_name, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Logon Domain", - hf_wkssvc_logon_domain, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Other Domains", - hf_wkssvc_other_domains, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Logon Server", - hf_wkssvc_logon_server, 0); - - - return offset; -} -static int -wkssvc_dissect_USER_INFO_1_array(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_1); - - return offset; -} - -/* - * IDL typedef struct { - * IDL long EntriesRead; - * IDL [size_is(EntriesRead)] [unique] USER_INFO_1 *devs; - * IDL } USER_INFO_1_CONTAINER; - */ -static int -wkssvc_dissect_USER_INFO_1_CONTAINER(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_num_entries, NULL); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_1_array, NDR_POINTER_UNIQUE, - "USER_INFO_1 array:", -1); - - return offset; -} - -/* - * IDL typedef [switch_type(long)] union { - * IDL [case(0)] [unique] USER_INFO_0_CONTAINER *dev0; - * IDL [case(1)] [unique] USER_INFO_1_CONTAINER *dev1; - * IDL } CHARDEV_ENUM_UNION; - */ -static int -wkssvc_dissect_USER_ENUM_UNION(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - guint32 level; - dcerpc_info *di; - - di = pinfo->private_data; - - ALIGN_TO_4_BYTES; - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_info_level, &level); - - switch(level){ - case 0: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_0_CONTAINER, - NDR_POINTER_UNIQUE, "USER_INFO_0_CONTAINER:", -1); - if (check_col(pinfo->cinfo, COL_INFO) && di->ptype == PDU_REQ) - col_append_str(pinfo->cinfo, COL_INFO, ", USER_INFO_0 level"); - break; - case 1: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_INFO_1_CONTAINER, - NDR_POINTER_UNIQUE, "USER_INFO_1_CONTAINER:", -1); - if (check_col(pinfo->cinfo, COL_INFO) && di->ptype == PDU_REQ) - col_append_str(pinfo->cinfo, COL_INFO, ", USER_INFO_1 level"); - break; - } - - return offset; -} - -/* - * IDL long NetWkstaEnumUsers( - * IDL [in] [string] [unique] wchar_t *ServerName, - * IDL [in] long level, - * IDL [in] [out] [ref] WKS_USER_ENUM_STRUCT *users, - * IDL [in] long prefmaxlen, - * IDL [out] long *entriesread, - * IDL [out] long *totalentries, - * IDL [in] [out] [ref] long *resumehandle - * IDL ); - */ -static int -wkssvc_dissect_netwkstaenumusers_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_ENUM_UNION, - NDR_POINTER_REF, "User Info", -1); - /* Seems to be junk here ... */ - /* offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_junk, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_ENUM_HANDLE, - NDR_POINTER_UNIQUE, "Junk Handle", -1); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_junk, 0); */ - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_pref_max, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_ENUM_HANDLE, - NDR_POINTER_UNIQUE, "Enum Handle", -1); - - return offset; - -} - -static int wkssvc_dissect_netwkstaenumusers_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, - proto_tree *tree, - guint8 *drep) -{ - /* There seems to be an info level there first */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_USER_ENUM_UNION, - NDR_POINTER_REF, "User Info", -1); - - /* Entries read seems to be in the enum array ... */ - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_total_entries, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_ENUM_HANDLE, - NDR_POINTER_UNIQUE, "Enum Handle", -1); - - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); - - return offset; -} - -/* - * IDL typedef struct { - * IDL long quality_of_service; - * IDL long number_of_vcs; - * IDL [string] [unique] wchar_t *transport_name; - * IDL [string] [unique] wchar_t *transport_address; - * IDL BOOL wan_ish; - * IDL } TRANSPORT_INFO_0; - */ -static int -wkssvc_dissect_TRANSPORT_INFO_0(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_quality_of_service, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_number_of_vcs, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Transport Name", - hf_wkssvc_transport_name, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Transport Address", - hf_wkssvc_transport_address, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_wan_ish, 0); - - return offset; -} - -static int -wkssvc_dissect_TRANSPORT_INFO_0_array(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TRANSPORT_INFO_0); - - return offset; -} - -/* - * IDL typedef struct { - * IDL long EntriesRead; - * IDL [size_is(EntriesRead)] [unique] TRANSPORT_INFO_0 *devs; - * IDL } TRANSPORT_INFO_0_CONTAINER; - */ -static int -wkssvc_dissect_TRANSPORT_INFO_0_CONTAINER(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_num_entries, NULL); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TRANSPORT_INFO_0_array, NDR_POINTER_UNIQUE, - "TRANSPORT_INFO_0 array:", -1); - - return offset; -} - -/* - * IDL typedef [switch_type(long)] union { - * IDL [case(0)] [unique] TRANSPORT_INFO_0_CONTAINER *dev0; - * IDL } TRANSPORT_ENUM_UNION; - */ -static int -wkssvc_dissect_TRANSPORT_ENUM_UNION(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - guint32 level; - - ALIGN_TO_4_BYTES; - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_info_level, &level); - - switch(level){ - case 0: - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TRANSPORT_INFO_0_CONTAINER, - NDR_POINTER_UNIQUE, "TRANSPORT_INFO_0_CONTAINER:", -1); - break; - - } - - return offset; -} - -/* - * IDL long NetWkstaTransportEnum( - * IDL [in] [string] [unique] wchar_t *ServerName, - * IDL [in] long level, - * IDL [in] [out] [ref] WKS_TRANSPORT_ENUM_STRUCT *users, - * IDL [in] long prefmaxlen, - * IDL [out] long *entriesread, - * IDL [out] long *totalentries, - * IDL [in] [out] [ref] long *resumehandle - * IDL ); - */ -static int -wkssvc_dissect_netwkstatransportenum_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) -{ - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TRANSPORT_ENUM_UNION, - NDR_POINTER_REF, "Transport Info", -1); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_pref_max, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_ENUM_HANDLE, - NDR_POINTER_UNIQUE, "Enum Handle", -1); - - return offset; - -} - -static int wkssvc_dissect_netwkstatransportenum_reply(tvbuff_t *tvb, - int offset, - packet_info *pinfo, - proto_tree *tree, - guint8 *drep) -{ - /* There seems to be an info level there first */ - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_info_level, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TRANSPORT_ENUM_UNION, - NDR_POINTER_REF, "Transport Info", -1); - - /* Entries read seems to be in the enum array ... */ - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_total_entries, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_ENUM_HANDLE, - NDR_POINTER_UNIQUE, "Enum Handle", -1); - - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); - - return offset; -} - - -/* - * IDL typedef struct { - * IDL char element_278[524]; - * IDL } TYPE_30; - */ - -static int -wkssvc_dissect_TYPE_30(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep _U_) -{ - dcerpc_info *di = (dcerpc_info *)pinfo->private_data; - - if(di->conformant_run){ - return offset; /* cant modify offset while performing conformant run */ - } - - proto_tree_add_item(tree, hf_wkssvc_encrypted_password, tvb, offset, - 524, TRUE); - offset += 524; - return offset; + offset = wkssvc_dissect_element_NetWkstaInfo100_platform_id(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo100_server_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo100_domain_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo100_version_major(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo100_version_minor(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; } +/* IDL: typedef struct { */ +/* IDL: srvsvc_PlatformId platform_id; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *server_name; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *domain_name; */ +/* IDL: uint32 version_major; */ +/* IDL: uint32 version_minor; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *lan_root; */ +/* IDL: } wkssvc_NetWkstaInfo101; */ - -/* - * IDL - * IDL long NetrJoinDomain2( - * IDL [in] [unique] [string] wchar_t *ServerName, - * IDL [in] [string] wchar_t DomainName, - * IDL [in] [unique] [string] wchar_t *AccountOU, - * IDL [in] [unique] [string] wchar_t *Account, - * IDL [in] [unique] TYPE_30 *Encrypted_password, - * IDL [in] long JoinOptions - * IDL ); - */ - -static const true_false_string join_flags_domain_join = { - "Join the computer to a domain", - "Join the computer to a workgroup" -}; - -static const true_false_string join_flags_acct_create = { - "Create the account on the domain", - "Do not create the account" -}; - -static const true_false_string unjoin_flags_acct_delete = { - "Delete the account when a domain is left", - "Do not delete the account when a domain is left" -}; - -static const true_false_string join_flags_win9x_upgrade = { - "The join operation is occurring as part of an upgrade of Windows 9x", - "The join operation is not part of a Windows 9x upgrade" -}; - -static const true_false_string join_flags_domain_join_if_joined = { - "Allow a join to a new domain even if the computer is already joined to a domain", - "Do not allow join to a new domain if the computer is already joined to a domain" -}; - -static const true_false_string join_flags_unsecure = { - "Performs an unsecured join", - "Perform a secured join" -}; - -static const true_false_string join_flags_machine_pwd_passed = { - "Set the machine password after domain join to passed password", - "Do not set the machine password after domain join to passed password" -}; - -static const true_false_string join_flags_defer_spn_set = { - "Defer setting of servicePrincipalName and dNSHostName attributes on the computer object until a rename operation", - "Set servicePrincipalName and dNSHostName attributes on the computer object" -}; - - -static int wkssvc_dissect_netr_join_domain2_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *parent_tree, - guint8 *drep) +static int +wkssvc_dissect_element_NetWkstaInfo101_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - guint32 join_flags = 0; - proto_item *item; + offset = srvsvc_dissect_struct_PlatformId(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo101_platform_id,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo101_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo101_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo101_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo101_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo101_version_major,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo101_version_minor,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_lan_root(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo101_lan_root_, NDR_POINTER_UNIQUE, "Pointer to Lan Root (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo101_lan_root_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo101(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; proto_tree *tree = NULL; + int old_offset; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); + ALIGN_TO_4_BYTES; - offset = dissect_ndr_cvstring(tvb, offset, pinfo, parent_tree, drep, - sizeof(guint16), hf_wkssvc_domain_to_join, - TRUE, NULL); + old_offset = offset; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, "Computer account OU", - hf_wkssvc_ou_for_computer_account, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, - "Account used for join operation", - hf_wkssvc_account_used_for_join, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, parent_tree, drep, - wkssvc_dissect_TYPE_30, NDR_POINTER_UNIQUE, - "Encrypted password", -1); - - join_flags = tvb_get_letohl(tvb, offset); - item = proto_tree_add_item(parent_tree, hf_wkssvc_join_flags, tvb, offset, 4, TRUE); if (parent_tree) { - tree = proto_item_add_subtree(item, ett_dcerpc_wkssvc_join_flags); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo101); + } + + offset = wkssvc_dissect_element_NetWkstaInfo101_platform_id(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo101_server_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo101_domain_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo101_version_major(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo101_version_minor(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo101_lan_root(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: srvsvc_PlatformId platform_id; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *server_name; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *domain_name; */ +/* IDL: uint32 version_major; */ +/* IDL: uint32 version_minor; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *lan_root; */ +/* IDL: uint32 logged_on_users; */ +/* IDL: } wkssvc_NetWkstaInfo102; */ + +static int +wkssvc_dissect_element_NetWkstaInfo102_platform_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = srvsvc_dissect_struct_PlatformId(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo102_platform_id,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo102_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo102_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo102_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo102_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_version_major(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo102_version_major,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_version_minor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo102_version_minor,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_lan_root(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo102_lan_root_, NDR_POINTER_UNIQUE, "Pointer to Lan Root (uint16)",hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_lan_root_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo102_logged_on_users(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo102_logged_on_users,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo102(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo102); + } + + offset = wkssvc_dissect_element_NetWkstaInfo102_platform_id(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_server_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_domain_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_version_major(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_version_minor(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_lan_root(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo102_logged_on_users(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 char_wait; */ +/* IDL: uint32 collection_time; */ +/* IDL: uint32 maximum_collection_count; */ +/* IDL: uint32 keep_connection; */ +/* IDL: uint32 max_commands; */ +/* IDL: uint32 session_timeout; */ +/* IDL: uint32 size_char_buf; */ +/* IDL: uint32 max_threads; */ +/* IDL: uint32 lock_quota; */ +/* IDL: uint32 lock_increment; */ +/* IDL: uint32 lock_maximum; */ +/* IDL: uint32 pipe_increment; */ +/* IDL: uint32 pipe_maximum; */ +/* IDL: uint32 cache_file_timeout; */ +/* IDL: uint32 dormant_file_limit; */ +/* IDL: uint32 read_ahead_throughput; */ +/* IDL: uint32 num_mailslot_buffers; */ +/* IDL: uint32 num_srv_announce_buffers; */ +/* IDL: uint32 max_illegal_dgram_events; */ +/* IDL: uint32 dgram_event_reset_freq; */ +/* IDL: uint32 log_election_packets; */ +/* IDL: uint32 use_opportunistic_locking; */ +/* IDL: uint32 use_unlock_behind; */ +/* IDL: uint32 use_close_behind; */ +/* IDL: uint32 buf_named_pipes; */ +/* IDL: uint32 use_lock_read_unlock; */ +/* IDL: uint32 utilize_nt_caching; */ +/* IDL: uint32 use_raw_read; */ +/* IDL: uint32 use_raw_write; */ +/* IDL: uint32 use_write_raw_data; */ +/* IDL: uint32 use_encryption; */ +/* IDL: uint32 buf_files_deny_write; */ +/* IDL: uint32 buf_read_only_files; */ +/* IDL: uint32 force_core_create_mode; */ +/* IDL: uint32 use_512_byte_max_transfer; */ +/* IDL: } wkssvc_NetWkstaInfo502; */ + +static int +wkssvc_dissect_element_NetWkstaInfo502_char_wait(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_char_wait,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_collection_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_collection_time,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_maximum_collection_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_maximum_collection_count,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_keep_connection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_keep_connection,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_max_commands(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_max_commands,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_session_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_session_timeout,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_size_char_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_size_char_buf,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_max_threads(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_max_threads,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_lock_quota(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_lock_quota,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_lock_increment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_lock_increment,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_lock_maximum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_lock_maximum,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_pipe_increment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_increment,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_pipe_maximum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_maximum,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_cache_file_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_cache_file_timeout,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_dormant_file_limit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_dormant_file_limit,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_read_ahead_throughput(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_read_ahead_throughput,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_num_mailslot_buffers(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_num_mailslot_buffers,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_num_srv_announce_buffers(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_num_srv_announce_buffers,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_max_illegal_dgram_events(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_max_illegal_dgram_events,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_dgram_event_reset_freq(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_dgram_event_reset_freq,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_log_election_packets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_log_election_packets,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_opportunistic_locking(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_opportunistic_locking,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_unlock_behind(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_unlock_behind,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_close_behind(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_close_behind,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_buf_named_pipes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_buf_named_pipes,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_lock_read_unlock(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_lock_read_unlock,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_utilize_nt_caching(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_utilize_nt_caching,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_raw_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_read,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_raw_write(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_write,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_write_raw_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_write_raw_data,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_encryption(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_encryption,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_buf_files_deny_write(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_buf_files_deny_write,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_buf_read_only_files(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_buf_read_only_files,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_force_core_create_mode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_force_core_create_mode,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo502_use_512_byte_max_transfer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo502_use_512_byte_max_transfer,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo502(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo502); + } + + offset = wkssvc_dissect_element_NetWkstaInfo502_char_wait(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_collection_time(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_maximum_collection_count(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_keep_connection(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_max_commands(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_session_timeout(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_size_char_buf(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_max_threads(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_lock_quota(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_lock_increment(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_lock_maximum(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_pipe_increment(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_pipe_maximum(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_cache_file_timeout(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_dormant_file_limit(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_read_ahead_throughput(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_num_mailslot_buffers(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_num_srv_announce_buffers(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_max_illegal_dgram_events(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_dgram_event_reset_freq(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_log_election_packets(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_opportunistic_locking(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_unlock_behind(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_close_behind(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_buf_named_pipes(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_lock_read_unlock(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_utilize_nt_caching(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_raw_read(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_raw_write(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_write_raw_data(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_encryption(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_buf_files_deny_write(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_buf_read_only_files(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_force_core_create_mode(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaInfo502_use_512_byte_max_transfer(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 char_wait; */ +/* IDL: } wkssvc_NetWkstaInfo1010; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1010_char_wait(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1010_char_wait,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1010(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1010); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1010_char_wait(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 collection_time; */ +/* IDL: } wkssvc_NetWkstaInfo1011; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1011_collection_time(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1011_collection_time,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1011(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1011); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1011_collection_time(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 maximum_collection_count; */ +/* IDL: } wkssvc_NetWkstaInfo1012; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1012_maximum_collection_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1012_maximum_collection_count,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1012(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1012); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1012_maximum_collection_count(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 keep_connection; */ +/* IDL: } wkssvc_NetWkstaInfo1013; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1013_keep_connection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1013_keep_connection,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1013(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1013); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1013_keep_connection(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 session_timeout; */ +/* IDL: } wkssvc_NetWkstaInfo1018; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1018_session_timeout(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1018_session_timeout,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1018(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1018); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1018_session_timeout(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 size_char_buf; */ +/* IDL: } wkssvc_NetWkstaInfo1023; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1023_size_char_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1023_size_char_buf,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1023(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1023); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1023_size_char_buf(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 errorlog_sz; */ +/* IDL: } wkssvc_NetWkstaInfo1027; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1027_errorlog_sz(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1027_errorlog_sz,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1027(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1027); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1027_errorlog_sz(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 max_threads; */ +/* IDL: } wkssvc_NetWkstaInfo1033; */ + +static int +wkssvc_dissect_element_NetWkstaInfo1033_max_threads(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaInfo1033_max_threads,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaInfo1033(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo1033); + } + + offset = wkssvc_dissect_element_NetWkstaInfo1033_max_threads(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef union { */ +/* IDL: [case(100)] [unique(1)] [case(100)] wkssvc_NetWkstaInfo100 *info100; */ +/* IDL: [case(101)] [unique(1)] [case(101)] wkssvc_NetWkstaInfo101 *info101; */ +/* IDL: [case(102)] [unique(1)] [case(102)] wkssvc_NetWkstaInfo102 *info102; */ +/* IDL: [case(502)] [unique(1)] [case(502)] wkssvc_NetWkstaInfo502 *info502; */ +/* IDL: [case(1010)] [unique(1)] [case(1010)] wkssvc_NetWkstaInfo1010 *info1010; */ +/* IDL: [case(1011)] [unique(1)] [case(1011)] wkssvc_NetWkstaInfo1011 *info1011; */ +/* IDL: [case(1012)] [unique(1)] [case(1012)] wkssvc_NetWkstaInfo1012 *info1012; */ +/* IDL: [case(1013)] [unique(1)] [case(1013)] wkssvc_NetWkstaInfo1013 *info1013; */ +/* IDL: [case(1018)] [unique(1)] [case(1018)] wkssvc_NetWkstaInfo1018 *info1018; */ +/* IDL: [case(1023)] [unique(1)] [case(1023)] wkssvc_NetWkstaInfo1023 *info1023; */ +/* IDL: [case(1027)] [unique(1)] [case(1027)] wkssvc_NetWkstaInfo1027 *info1027; */ +/* IDL: [case(1033)] [unique(1)] [case(1033)] wkssvc_NetWkstaInfo1033 *info1033; */ +/* IDL: [default] ; */ +/* IDL: } wkssvc_NetWkstaInfo; */ + +static int +wkssvc_dissect_element_NetWkstaInfo_info100(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info100_, NDR_POINTER_UNIQUE, "Pointer to Info100 (wkssvc_NetWkstaInfo100)",hf_wkssvc_wkssvc_NetWkstaInfo_info100); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info100_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo100(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info100,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info101(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info101_, NDR_POINTER_UNIQUE, "Pointer to Info101 (wkssvc_NetWkstaInfo101)",hf_wkssvc_wkssvc_NetWkstaInfo_info101); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info101_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo101(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info101,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info102(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info102_, NDR_POINTER_UNIQUE, "Pointer to Info102 (wkssvc_NetWkstaInfo102)",hf_wkssvc_wkssvc_NetWkstaInfo_info102); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info102_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo102(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info102,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info502(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info502_, NDR_POINTER_UNIQUE, "Pointer to Info502 (wkssvc_NetWkstaInfo502)",hf_wkssvc_wkssvc_NetWkstaInfo_info502); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info502_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo502(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info502,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1010(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1010_, NDR_POINTER_UNIQUE, "Pointer to Info1010 (wkssvc_NetWkstaInfo1010)",hf_wkssvc_wkssvc_NetWkstaInfo_info1010); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1010_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1010(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1010,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1011(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1011_, NDR_POINTER_UNIQUE, "Pointer to Info1011 (wkssvc_NetWkstaInfo1011)",hf_wkssvc_wkssvc_NetWkstaInfo_info1011); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1011_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1011(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1011,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1012(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1012_, NDR_POINTER_UNIQUE, "Pointer to Info1012 (wkssvc_NetWkstaInfo1012)",hf_wkssvc_wkssvc_NetWkstaInfo_info1012); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1012_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1012(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1012,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1013(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1013_, NDR_POINTER_UNIQUE, "Pointer to Info1013 (wkssvc_NetWkstaInfo1013)",hf_wkssvc_wkssvc_NetWkstaInfo_info1013); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1013_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1013(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1013,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1018(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1018_, NDR_POINTER_UNIQUE, "Pointer to Info1018 (wkssvc_NetWkstaInfo1018)",hf_wkssvc_wkssvc_NetWkstaInfo_info1018); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1018_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1018(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1018,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1023(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1023_, NDR_POINTER_UNIQUE, "Pointer to Info1023 (wkssvc_NetWkstaInfo1023)",hf_wkssvc_wkssvc_NetWkstaInfo_info1023); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1023_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1023(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1023,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1027(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1027_, NDR_POINTER_UNIQUE, "Pointer to Info1027 (wkssvc_NetWkstaInfo1027)",hf_wkssvc_wkssvc_NetWkstaInfo_info1027); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1027_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1027(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1027,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1033(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaInfo_info1033_, NDR_POINTER_UNIQUE, "Pointer to Info1033 (wkssvc_NetWkstaInfo1033)",hf_wkssvc_wkssvc_NetWkstaInfo_info1033); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaInfo_info1033_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaInfo1033(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaInfo_info1033,0); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + guint32 level; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_text(parent_tree, tvb, offset, -1, "wkssvc_NetWkstaInfo"); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaInfo); } - proto_tree_add_boolean(tree, hf_wkssvc_join_options_defer_spn_set, tvb, - offset, 4, join_flags); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, &level); + switch(level) { + case 100: + offset = wkssvc_dissect_element_NetWkstaInfo_info100(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_machine_pwd_passed, tvb, - offset, 4, join_flags); + case 101: + offset = wkssvc_dissect_element_NetWkstaInfo_info101(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_join_unsecure, tvb, - offset, 4, join_flags); + case 102: + offset = wkssvc_dissect_element_NetWkstaInfo_info102(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_domain_join_if_joined, - tvb, offset, 4, join_flags); + case 502: + offset = wkssvc_dissect_element_NetWkstaInfo_info502(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_win9x_upgrade, tvb, - offset, 4, join_flags); + case 1010: + offset = wkssvc_dissect_element_NetWkstaInfo_info1010(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_acct_create, tvb, - offset, 4, join_flags); + case 1011: + offset = wkssvc_dissect_element_NetWkstaInfo_info1011(tvb, offset, pinfo, tree, drep); + break; - proto_tree_add_boolean(tree, hf_wkssvc_join_options_join_type, tvb, - offset, 4, join_flags); - offset += 4; + case 1012: + offset = wkssvc_dissect_element_NetWkstaInfo_info1012(tvb, offset, pinfo, tree, drep); + break; + + case 1013: + offset = wkssvc_dissect_element_NetWkstaInfo_info1013(tvb, offset, pinfo, tree, drep); + break; + + case 1018: + offset = wkssvc_dissect_element_NetWkstaInfo_info1018(tvb, offset, pinfo, tree, drep); + break; + + case 1023: + offset = wkssvc_dissect_element_NetWkstaInfo_info1023(tvb, offset, pinfo, tree, drep); + break; + + case 1027: + offset = wkssvc_dissect_element_NetWkstaInfo_info1027(tvb, offset, pinfo, tree, drep); + break; + + case 1033: + offset = wkssvc_dissect_element_NetWkstaInfo_info1033(tvb, offset, pinfo, tree, drep); + break; + + default: + break; + } + proto_item_set_len(item, offset-old_offset); + + return offset; +} +/* IDL: typedef struct { */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *user; */ +/* IDL: } USER_INFO_0; */ + +static int +wkssvc_dissect_element_USER_INFO_0_user(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_0_user_, NDR_POINTER_UNIQUE, "Pointer to User (uint16)",hf_wkssvc_USER_INFO_0_user); return offset; } - -static int wkssvc_dissect_netr_join_domain2_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +static int +wkssvc_dissect_element_USER_INFO_0_user_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_USER_INFO_0_user, FALSE, &data); + proto_item_append_text(tree, ": %s", data); return offset; } - -/* - * IDL long NetrUnjoinDomain2( - * IDL [in] [unique] [string] wchar_t *ServerName, - * IDL [in] [unique] [string] wchar_t *Account - * IDL [in] [unique] TYPE_30 *Encrypted_password, - * IDL [in] long UnjoinOptions - * IDL ); - */ - -static int wkssvc_dissect_netr_unjoin_domain2_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *parent_tree, - guint8 *drep) +int +wkssvc_dissect_struct_USER_INFO_0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) { - guint32 unjoin_flags = 0; - proto_item *item; + proto_item *item = NULL; proto_tree *tree = NULL; + int old_offset; + ALIGN_TO_4_BYTES; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); + old_offset = offset; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, - "Account used for unjoin operation", - hf_wkssvc_account_used_for_unjoin, 0); - - - offset = dissect_ndr_pointer(tvb, offset, pinfo, parent_tree, drep, - wkssvc_dissect_TYPE_30, NDR_POINTER_UNIQUE, - "Encrypted password", -1); - - unjoin_flags = tvb_get_letohl(tvb, offset); - item = proto_tree_add_item(parent_tree, hf_wkssvc_unjoin_flags, tvb, offset, 4, TRUE); if (parent_tree) { - tree = proto_item_add_subtree(item, ett_dcerpc_wkssvc_join_flags); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_USER_INFO_0); + } + + offset = wkssvc_dissect_element_USER_INFO_0_user(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 entries_read; */ +/* IDL: [size_is(entries_read)] [unique(1)] USER_INFO_0 *user0; */ +/* IDL: } USER_INFO_0_CONTAINER; */ + +static int +wkssvc_dissect_element_USER_INFO_0_CONTAINER_entries_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_USER_INFO_0_CONTAINER_entries_read,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0_, NDR_POINTER_UNIQUE, "Pointer to User0 (USER_INFO_0)",hf_wkssvc_USER_INFO_0_CONTAINER_user0); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0__); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_USER_INFO_0(tvb,offset,pinfo,tree,drep,hf_wkssvc_USER_INFO_0_CONTAINER_user0,0); + + return offset; +} + +int +wkssvc_dissect_struct_USER_INFO_0_CONTAINER(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_USER_INFO_0_CONTAINER); + } + + offset = wkssvc_dissect_element_USER_INFO_0_CONTAINER_entries_read(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_USER_INFO_0_CONTAINER_user0(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *user_name; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *logon_domain; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *other_domains; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *logon_server; */ +/* IDL: } USER_INFO_1; */ + +static int +wkssvc_dissect_element_USER_INFO_1_user_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_user_name_, NDR_POINTER_UNIQUE, "Pointer to User Name (uint16)",hf_wkssvc_USER_INFO_1_user_name); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_user_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_USER_INFO_1_user_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_logon_domain(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_logon_domain_, NDR_POINTER_UNIQUE, "Pointer to Logon Domain (uint16)",hf_wkssvc_USER_INFO_1_logon_domain); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_logon_domain_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_USER_INFO_1_logon_domain, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_other_domains(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_other_domains_, NDR_POINTER_UNIQUE, "Pointer to Other Domains (uint16)",hf_wkssvc_USER_INFO_1_other_domains); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_other_domains_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_USER_INFO_1_other_domains, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_logon_server(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_logon_server_, NDR_POINTER_UNIQUE, "Pointer to Logon Server (uint16)",hf_wkssvc_USER_INFO_1_logon_server); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_logon_server_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_USER_INFO_1_logon_server, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +int +wkssvc_dissect_struct_USER_INFO_1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_USER_INFO_1); + } + + offset = wkssvc_dissect_element_USER_INFO_1_user_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_USER_INFO_1_logon_domain(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_USER_INFO_1_other_domains(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_USER_INFO_1_logon_server(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 entries_read; */ +/* IDL: [size_is(entries_read)] [unique(1)] USER_INFO_1 *user1; */ +/* IDL: } USER_INFO_1_CONTAINER; */ + +static int +wkssvc_dissect_element_USER_INFO_1_CONTAINER_entries_read(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_USER_INFO_1_CONTAINER_entries_read,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1_, NDR_POINTER_UNIQUE, "Pointer to User1 (USER_INFO_1)",hf_wkssvc_USER_INFO_1_CONTAINER_user1); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1__); + + return offset; +} + +static int +wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_USER_INFO_1(tvb,offset,pinfo,tree,drep,hf_wkssvc_USER_INFO_1_CONTAINER_user1,0); + + return offset; +} + +int +wkssvc_dissect_struct_USER_INFO_1_CONTAINER(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_USER_INFO_1_CONTAINER); + } + + offset = wkssvc_dissect_element_USER_INFO_1_CONTAINER_entries_read(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_USER_INFO_1_CONTAINER_user1(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef [switch_type(uint32)] union { */ +/* IDL: [case(0)] [unique(1)] [case(0)] USER_INFO_0_CONTAINER *user0; */ +/* IDL: [case(1)] [unique(1)] [case(1)] USER_INFO_1_CONTAINER *user1; */ +/* IDL: } WKS_USER_ENUM_UNION; */ + +static int +wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0_, NDR_POINTER_UNIQUE, "Pointer to User0 (USER_INFO_0_CONTAINER)",hf_wkssvc_WKS_USER_ENUM_UNION_user0); + + return offset; +} + +static int +wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_USER_INFO_0_CONTAINER(tvb,offset,pinfo,tree,drep,hf_wkssvc_WKS_USER_ENUM_UNION_user0,0); + + return offset; +} + +static int +wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1_, NDR_POINTER_UNIQUE, "Pointer to User1 (USER_INFO_1_CONTAINER)",hf_wkssvc_WKS_USER_ENUM_UNION_user1); + + return offset; +} + +static int +wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_USER_INFO_1_CONTAINER(tvb,offset,pinfo,tree,drep,hf_wkssvc_WKS_USER_ENUM_UNION_user1,0); + + return offset; +} + +static int +wkssvc_dissect_WKS_USER_ENUM_UNION(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + guint32 level; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_text(parent_tree, tvb, offset, -1, "WKS_USER_ENUM_UNION"); + tree = proto_item_add_subtree(item, ett_wkssvc_WKS_USER_ENUM_UNION); } - proto_tree_add_boolean(tree, hf_wkssvc_unjoin_options_acct_delete, tvb, - offset, 4, unjoin_flags); - offset += 4; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, &level); + switch(level) { + case 0: + offset = wkssvc_dissect_element_WKS_USER_ENUM_UNION_user0(tvb, offset, pinfo, tree, drep); + break; + + case 1: + offset = wkssvc_dissect_element_WKS_USER_ENUM_UNION_user1(tvb, offset, pinfo, tree, drep); + break; + } + proto_item_set_len(item, offset-old_offset); return offset; - } +/* IDL: typedef struct { */ +/* IDL: uint32 quality_of_service; */ +/* IDL: uint32 vc_count; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *name; */ +/* IDL: [charset(UTF16)] [unique(1)] uint16 *address; */ +/* IDL: uint32 wan_link; */ +/* IDL: } wkssvc_NetWkstaTransportInfo0; */ - -static int wkssvc_dissect_netr_unjoin_domain2_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_quality_of_service(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportInfo0_quality_of_service,NULL); return offset; } - - -/* - * IDL long NetrRenameMachineInDomain2( - * IDL [in] [unique] [string] wchar_t *ServerName, - * IDL [in] [unique] [string] wchar_t *NewMachineName, - * IDL [in] [unique] [string] wchar_t *Account, - * IDL [in] [unique] TYPE_30 *EncryptedPassword, - * IDL [in] long RenameOptions - * IDL ); - */ - -static int wkssvc_dissect_netr_rename_machine_in_domain2_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *parent_tree, - guint8 *drep) +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_vc_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - guint32 rename_flags = 0; - proto_item *item; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportInfo0_vc_count,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportInfo0_name_, NDR_POINTER_UNIQUE, "Pointer to Name (uint16)",hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportInfo0_address_, NDR_POINTER_UNIQUE, "Pointer to Address (uint16)",hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_address_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportInfo0_wan_link(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportInfo0_wan_link,NULL); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaTransportInfo0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; proto_tree *tree = NULL; + int old_offset; + ALIGN_TO_4_BYTES; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); + old_offset = offset; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, - "New Machine Name", - hf_wkssvc_server, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, parent_tree, drep, - NDR_POINTER_UNIQUE, - "Account used for rename operation", - hf_wkssvc_account_used_for_unjoin, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, parent_tree, drep, - wkssvc_dissect_TYPE_30, NDR_POINTER_UNIQUE, - "Encrypted password", -1); - - rename_flags = tvb_get_letohl(tvb, offset); - item = proto_tree_add_item(parent_tree, hf_wkssvc_rename_flags, tvb, offset, 4, TRUE); if (parent_tree) { - tree = proto_item_add_subtree(item, ett_dcerpc_wkssvc_join_flags); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaTransportInfo0); + } + + offset = wkssvc_dissect_element_NetWkstaTransportInfo0_quality_of_service(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportInfo0_vc_count(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportInfo0_name(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportInfo0_address(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportInfo0_wan_link(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef struct { */ +/* IDL: uint32 count; */ +/* IDL: [size_is(count)] [unique(1)] wkssvc_NetWkstaTransportInfo0 *array; */ +/* IDL: } wkssvc_NetWkstaTransportCtr0; */ + +static int +wkssvc_dissect_element_NetWkstaTransportCtr0_count(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportCtr0_count,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportCtr0_array(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportCtr0_array_, NDR_POINTER_UNIQUE, "Pointer to Array (wkssvc_NetWkstaTransportInfo0)",hf_wkssvc_wkssvc_NetWkstaTransportCtr0_array); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportCtr0_array_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportCtr0_array__); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportCtr0_array__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaTransportInfo0(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaTransportCtr0_array,0); + + return offset; +} + +int +wkssvc_dissect_struct_NetWkstaTransportCtr0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaTransportCtr0); + } + + offset = wkssvc_dissect_element_NetWkstaTransportCtr0_count(tvb, offset, pinfo, tree, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportCtr0_array(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +/* IDL: typedef union { */ +/* IDL: [case(0)] [unique(1)] [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0; */ +/* IDL: [default] ; */ +/* IDL: } wkssvc_NetWkstaTransportCtr; */ + +static int +wkssvc_dissect_element_NetWkstaTransportCtr_ctr0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportCtr_ctr0_, NDR_POINTER_UNIQUE, "Pointer to Ctr0 (wkssvc_NetWkstaTransportCtr0)",hf_wkssvc_wkssvc_NetWkstaTransportCtr_ctr0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportCtr_ctr0_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_NetWkstaTransportCtr0(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetWkstaTransportCtr_ctr0,0); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaTransportCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + guint32 level; + + ALIGN_TO_4_BYTES; + + old_offset = offset; + if (parent_tree) { + item = proto_tree_add_text(parent_tree, tvb, offset, -1, "wkssvc_NetWkstaTransportCtr"); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_NetWkstaTransportCtr); } - proto_tree_add_boolean(tree, hf_wkssvc_join_options_acct_create, tvb, - offset, 4, rename_flags); - offset += 4; + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, &level); + switch(level) { + case 0: + offset = wkssvc_dissect_element_NetWkstaTransportCtr_ctr0(tvb, offset, pinfo, tree, drep); + break; + + default: + break; + } + proto_item_set_len(item, offset-old_offset); return offset; - } +/* IDL: typedef struct { */ +/* IDL: uint8 data[524]; */ +/* IDL: } wkssvc_PasswordBuffer; */ -static int wkssvc_dissect_netr_rename_machine_in_domain2_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +static int +wkssvc_dissect_element_PasswordBuffer_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); + int i; + for (i = 0; i < 524; i++) + offset = wkssvc_dissect_element_PasswordBuffer_data_(tvb, offset, pinfo, tree, drep); return offset; } - -/* - * IDL long NetrAddAlternateComputerName( - * IDL [in] [unique] [string] wchar_t *ServerName, - * IDL [in] [unique] [string] wchar_t *NewAlternateMachineName, - * IDL [in] [unique] [string] wchar_t *Account, - * IDL [in] [unique] TYPE_30 *EncryptedPassword, - * IDL [in] long Reserved - * IDL ); - */ - -static int wkssvc_dissect_netr_add_alternate_computername_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +static int +wkssvc_dissect_element_PasswordBuffer_data_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "New alternate computer name", - hf_wkssvc_alternate_name, 0); - - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Account name", - hf_wkssvc_account_used_for_alternate_name, 0); - - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TYPE_30, NDR_POINTER_UNIQUE, - "Encrypted password", -1); - - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_reserved, NULL); + offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_PasswordBuffer_data,NULL); return offset; } -static int wkssvc_dissect_netr_add_alternate_computername_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +int +wkssvc_dissect_struct_PasswordBuffer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) { - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + + old_offset = offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_wkssvc_wkssvc_PasswordBuffer); + } + + offset = wkssvc_dissect_element_PasswordBuffer_data(tvb, offset, pinfo, tree, drep); + + + proto_item_set_len(item, offset-old_offset); return offset; } -/* - * IDL long NetrRemoveAlternateComputerName( - * IDL [in] [unique] [string] wchar_t *ServerName, - * IDL [in] [unique] [string] wchar_t *AlternateMachineNameToRemove, - * IDL [in] [unique] [string] wchar_t *Account, - * IDL [in] [unique] TYPE_30 *EncryptedPassword, - * IDL [in] long Reserved - * IDL ); - */ +/* IDL: typedef bitmap { */ +/* IDL: WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100 , */ +/* IDL: WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080 , */ +/* IDL: WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040 , */ +/* IDL: WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020 , */ +/* IDL: WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010 , */ +/* IDL: WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004 , */ +/* IDL: WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002 , */ +/* IDL: WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001 , */ +/* IDL: } wkssvc_joinflags; */ -static int wkssvc_dissect_netr_remove_alternate_computername_rqst(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +int +wkssvc_dissect_bitmap_joinflags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) { - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Server", - hf_wkssvc_server, 0); + proto_item *item = NULL; + proto_tree *tree = NULL; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Alternate computer name to remove", - hf_wkssvc_alternate_name, 0); + guint32 flags; + ALIGN_TO_4_BYTES; - offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep, - NDR_POINTER_UNIQUE, "Account name", - hf_wkssvc_account_used_for_alternate_name, 0); + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE); + tree = proto_item_add_subtree(item,ett_wkssvc_wkssvc_joinflags); + } - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - wkssvc_dissect_TYPE_30, NDR_POINTER_UNIQUE, - "Encrypted password", -1); + offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags); + proto_item_append_text(item, ": "); - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, - hf_wkssvc_reserved, NULL); + if (!flags) + proto_item_append_text(item, "(No values set)"); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN, tvb, offset-4, 4, flags); + if (flags&( 0x00000100 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_DEFER_SPN"); + if (flags & (~( 0x00000100 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000100 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED, tvb, offset-4, 4, flags); + if (flags&( 0x00000080 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED"); + if (flags & (~( 0x00000080 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000080 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE, tvb, offset-4, 4, flags); + if (flags&( 0x00000040 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_JOIN_UNSECURE"); + if (flags & (~( 0x00000040 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000040 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED, tvb, offset-4, 4, flags); + if (flags&( 0x00000020 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED"); + if (flags & (~( 0x00000020 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000020 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE, tvb, offset-4, 4, flags); + if (flags&( 0x00000010 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE"); + if (flags & (~( 0x00000010 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000010 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE, tvb, offset-4, 4, flags); + if (flags&( 0x00000004 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE"); + if (flags & (~( 0x00000004 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000004 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE, tvb, offset-4, 4, flags); + if (flags&( 0x00000002 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE"); + if (flags & (~( 0x00000002 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000002 )); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE, tvb, offset-4, 4, flags); + if (flags&( 0x00000001 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_JOIN_TYPE"); + if (flags & (~( 0x00000001 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000001 )); + + if (flags) { + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } return offset; } +/* IDL: typedef bitmap { */ +/* IDL: WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002 , */ +/* IDL: } wkssvc_renameflags; */ - -static int wkssvc_dissect_netr_remove_alternate_computername_reply(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - guint8 *drep) +int +wkssvc_dissect_bitmap_renameflags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_) { - offset = dissect_doserror(tvb, offset, pinfo, tree, drep, - hf_wkssvc_rc, NULL); + proto_item *item = NULL; + proto_tree *tree = NULL; + + guint32 flags; + ALIGN_TO_4_BYTES; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE); + tree = proto_item_add_subtree(item,ett_wkssvc_wkssvc_renameflags); + } + + offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags); + proto_item_append_text(item, ": "); + + if (!flags) + proto_item_append_text(item, "(No values set)"); + + proto_tree_add_boolean(tree, hf_wkssvc_wkssvc_renameflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE, tvb, offset-4, 4, flags); + if (flags&( 0x00000002 )){ + proto_item_append_text(item, "WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE"); + if (flags & (~( 0x00000002 ))) + proto_item_append_text(item, ", "); + } + flags&=(~( 0x00000002 )); + + if (flags) { + proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + } return offset; } -static dcerpc_sub_dissector dcerpc_wkssvc_dissectors[] = { - { WKS_NETRWKSTAGETINFO, "NetrWkstaGetInfo", - wkssvc_dissect_netwkstagetinfo_rqst, - wkssvc_dissect_netwkstagetinfo_reply}, - { WKS_NETRWKSTASETINFO, "NetrWkstaSetInfo", - wkssvc_dissect_netwkstasetinfo_rqst, - wkssvc_dissect_netwkstasetinfo_reply}, - { WKS_NETRWKSTAUSERENUM, "NetrWkstaUserEnum", - wkssvc_dissect_netwkstaenumusers_rqst, - wkssvc_dissect_netwkstaenumusers_reply}, - { WKS_NETRWKSTAUSERGETINFO, "NetrWkstaUserGetInfo", NULL, NULL }, - { WKS_NETRWKSTAUSERSETINFO, "NetrWkstaUserSetInfo", NULL, NULL }, - { WKS_NETRWKSTATRANSPORTENUM, "NetrWkstaTransportEnum", - wkssvc_dissect_netwkstatransportenum_rqst, - wkssvc_dissect_netwkstatransportenum_reply}, - { WKS_NETRWKSTATRANSPORTADD, "NetrWkstaTransportAdd", NULL, NULL }, - { WKS_NETRWKSTATRANSPORTDEL, "NetrWkstaTransportDel", NULL, NULL }, - { WKS_NETRUSEADD, "NetrUseAdd", NULL, NULL }, - { WKS_NETRUSEGETINFO, "NetrUseGetInfo", NULL, NULL }, - { WKS_NETRUSEDEL, "NetrUseDel", NULL, NULL }, - { WKS_NETRUSEENUM, "NetrUseEnum", NULL, NULL }, - { WKS_NETRMESSAGEBUFFERSEND, "NetrMessageBufferSend", NULL, NULL }, - { WKS_NETRWORKSTATIONSTATISTICSGET, "NetrWorkstationStatisticsGet", - NULL, NULL }, - { WKS_NETRLOGONDOMAINNAMEADD, "NetrLogonDomainNameAdd", NULL, NULL }, - { WKS_NETRLOGONDOMAINNAMEDEL, "NetrLogonDomainNameDel", NULL, NULL }, - { WKS_NETRJOINDOMAIN, "NetrJoinDomain", NULL, NULL }, - { WKS_NETRUNJOINDOMAIN, "NetrUnjoinDomain", NULL, NULL }, - { WKS_NETRRENAMEMACHINEINDOMAIN, "NetrRenameMachineInDomain", - NULL, NULL }, - { WKS_NETRVALIDATENAME, "NetrValidateName", NULL, NULL }, - { WKS_NETRGETJOININFORMATION, "NetrGetJoinInformation", NULL, NULL }, - { WKS_NETRGETJOINABLEOUS, "NetrGetJoinableOUs", NULL, NULL }, - { WKS_NETRJOINDOMAIN2, "NetrJoinDomain2", - wkssvc_dissect_netr_join_domain2_rqst, - wkssvc_dissect_netr_join_domain2_reply}, - { WKS_NETRUNJOINDOMAIN2, "NetrUnjoinDomain2", - wkssvc_dissect_netr_unjoin_domain2_rqst, - wkssvc_dissect_netr_unjoin_domain2_reply}, - { WKS_NETRRENAMEMACHINEINDOMAIN2, "NetrRenameMachineInDomain2", - wkssvc_dissect_netr_rename_machine_in_domain2_rqst, - wkssvc_dissect_netr_rename_machine_in_domain2_reply}, - { WKS_NETRVALIDATENAME2, "NetrValidateName2", NULL, NULL }, - { WKS_NETRGETJOINABLEOUS2, "NetrGetJoinableOUs2", NULL, NULL }, - { WKS_NETRADDALTERNATECOMPUTERNAME, "NetrAddAlternateComputerName", - wkssvc_dissect_netr_add_alternate_computername_rqst, - wkssvc_dissect_netr_add_alternate_computername_reply}, - { WKS_NETRREMOVEALTERNATECOMPUTERNAME, - "NetrRemoveAlternateComputerName", - wkssvc_dissect_netr_remove_alternate_computername_rqst, - wkssvc_dissect_netr_remove_alternate_computername_reply}, - { WKS_NETRSETPRIMARYCOMPUTERNAME, "NetrSetPrimaryComputerName", - NULL, NULL }, - { WKS_NETRENUMERATECOMPUTERNAMES, "NetrEnumerateComputerNames", - NULL, NULL }, - {0, NULL, NULL, NULL } +static int +wkssvc_dissect_element_NetWkstaGetInfo_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaGetInfo_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaGetInfo_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaGetInfo_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaGetInfo_level,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaGetInfo_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaGetInfo_info_, NDR_POINTER_REF, "Pointer to Info (wkssvc_NetWkstaInfo)",hf_wkssvc_wkssvc_NetWkstaGetInfo_info); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaGetInfo_info_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_NetWkstaInfo(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaGetInfo_info, 0); + + return offset; +} + +/* IDL: WERROR wkssvc_NetWkstaGetInfo( */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *server_name, */ +/* IDL: [in] uint32 level, */ +/* IDL: [switch_is(level)] [out] [ref] wkssvc_NetWkstaInfo *info */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetWkstaGetInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = wkssvc_dissect_element_NetWkstaGetInfo_info(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaGetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetWkstaGetInfo_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaGetInfo_level(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaSetInfo_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaSetInfo_level,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaSetInfo_info_, NDR_POINTER_REF, "Pointer to Info (wkssvc_NetWkstaInfo)",hf_wkssvc_wkssvc_NetWkstaSetInfo_info); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_info_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_NetWkstaInfo(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaSetInfo_info, 0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_parm_error(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaSetInfo_parm_error_, NDR_POINTER_REF, "Pointer to Parm Error (uint32)",hf_wkssvc_wkssvc_NetWkstaSetInfo_parm_error); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaSetInfo_parm_error_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaSetInfo_parm_error,NULL); + + return offset; +} + +/* IDL: WERROR wkssvc_NetWkstaSetInfo( */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *server_name, */ +/* IDL: [in] uint32 level, */ +/* IDL: [switch_is(level)] [in] [ref] wkssvc_NetWkstaInfo *info, */ +/* IDL: [out] [in] [ref] uint32 *parm_error */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetWkstaSetInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = wkssvc_dissect_element_NetWkstaSetInfo_parm_error(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaSetInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetWkstaSetInfo_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaSetInfo_level(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaSetInfo_info(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaSetInfo_parm_error(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaEnumUsers_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_level,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_users(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaEnumUsers_users_, NDR_POINTER_REF, "Pointer to Users (WKS_USER_ENUM_UNION)",hf_wkssvc_wkssvc_NetWkstaEnumUsers_users); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_users_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_WKS_USER_ENUM_UNION(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_users, 0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_prefmaxlen(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_prefmaxlen,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_entriesread(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaEnumUsers_entriesread_, NDR_POINTER_UNIQUE, "Pointer to Entriesread (uint32)",hf_wkssvc_wkssvc_NetWkstaEnumUsers_entriesread); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_entriesread_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_entriesread,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_totalentries(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaEnumUsers_totalentries_, NDR_POINTER_UNIQUE, "Pointer to Totalentries (uint32)",hf_wkssvc_wkssvc_NetWkstaEnumUsers_totalentries); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_totalentries_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_totalentries,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle_, NDR_POINTER_REF, "Pointer to Resumehandle (uint32)",hf_wkssvc_wkssvc_NetWkstaEnumUsers_resumehandle); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaEnumUsers_resumehandle,NULL); + + return offset; +} + +/* IDL: WERROR wkssvc_NetWkstaEnumUsers( */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *server_name, */ +/* IDL: [in] uint32 level, */ +/* IDL: [out] [in] [ref] WKS_USER_ENUM_UNION *users, */ +/* IDL: [in] uint32 prefmaxlen, */ +/* IDL: [out] [unique(1)] uint32 *entriesread, */ +/* IDL: [out] [unique(1)] uint32 *totalentries, */ +/* IDL: [out] [in] [ref] uint32 *resumehandle */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetWkstaEnumUsers_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = wkssvc_dissect_element_NetWkstaEnumUsers_users(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaEnumUsers_entriesread(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaEnumUsers_totalentries(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaEnumUsers_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetWkstaEnumUsers_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaEnumUsers_level(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaEnumUsers_users(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaEnumUsers_prefmaxlen(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaEnumUsers_resumehandle(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +/* IDL: WERROR WKSSVC_NETRWKSTAUSERGETINFO( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRWKSTAUSERGETINFO_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRWKSTAUSERGETINFO_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRWKSTAUSERSETINFO( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRWKSTAUSERSETINFO_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRWKSTAUSERSETINFO_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportEnum_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_level(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportEnum_level,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_ctr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportEnum_ctr_, NDR_POINTER_REF, "Pointer to Ctr (wkssvc_NetWkstaTransportCtr)",hf_wkssvc_wkssvc_NetWkstaTransportEnum_ctr); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_ctr_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_NetWkstaTransportCtr(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportEnum_ctr, 0); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_max_buffer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportEnum_max_buffer,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_totalentries(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportEnum_totalentries,NULL); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle_, NDR_POINTER_UNIQUE, "Pointer to Resume Handle (uint32)",hf_wkssvc_wkssvc_NetWkstaTransportEnum_resume_handle); + + return offset; +} + +static int +wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetWkstaTransportEnum_resume_handle,NULL); + + return offset; +} + +/* IDL: WERROR wkssvc_NetWkstaTransportEnum( */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *server_name, */ +/* IDL: [out] [in] uint32 level, */ +/* IDL: [switch_is(level)] [out] [in] [ref] wkssvc_NetWkstaTransportCtr *ctr, */ +/* IDL: [in] uint32 max_buffer, */ +/* IDL: [out] uint32 totalentries, */ +/* IDL: [out] [unique(1)] [in] uint32 *resume_handle */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetWkstaTransportEnum_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = wkssvc_dissect_element_NetWkstaTransportEnum_level(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportEnum_ctr(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportEnum_totalentries(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetWkstaTransportEnum_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetWkstaTransportEnum_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaTransportEnum_level(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaTransportEnum_ctr(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaTransportEnum_max_buffer(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetWkstaTransportEnum_resume_handle(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +/* IDL: WERROR WKSSVC_NETRWKSTATRANSPORTADD( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTADD_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTADD_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRWKSTATRANSPORTDEL( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTDEL_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTDEL_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRUSEADD( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRUSEADD_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRUSEADD_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRUSEGETINFO( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRUSEGETINFO_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRUSEGETINFO_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRUSEDEL( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRUSEDEL_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRUSEDEL_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRUSEENUM( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRUSEENUM_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRUSEENUM_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRMESSAGEBUFFERSEND( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRMESSAGEBUFFERSEND_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRMESSAGEBUFFERSEND_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRWORKSTATIONSTATISTICSGET_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRWORKSTATIONSTATISTICSGET_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRLOGONDOMAINNAMEADD( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEADD_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEADD_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRLOGONDOMAINNAMEDEL( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEDEL_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEDEL_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRJOINDOMAIN( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRJOINDOMAIN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRJOINDOMAIN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRUNJOINDOMAIN( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRUNJOINDOMAIN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRUNJOINDOMAIN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRRENAMEMACHINEINDOMAIN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRRENAMEMACHINEINDOMAIN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRVALIDATENAME( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRVALIDATENAME_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRVALIDATENAME_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRGETJOININFORMATION( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRGETJOININFORMATION_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRGETJOININFORMATION_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRGETJOINABLEOUS( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrJoinDomain2_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetrJoinDomain2_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrJoinDomain2_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_domain_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrJoinDomain2_domain_name_, NDR_POINTER_REF, "Pointer to Domain Name (uint16)",hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_domain_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_account_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrJoinDomain2_account_name_, NDR_POINTER_UNIQUE, "Pointer to Account Name (uint16)",hf_wkssvc_wkssvc_NetrJoinDomain2_account_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_account_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrJoinDomain2_account_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_admin_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrJoinDomain2_admin_account_, NDR_POINTER_UNIQUE, "Pointer to Admin Account (uint16)",hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_admin_account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_encrypted_password(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrJoinDomain2_encrypted_password_, NDR_POINTER_UNIQUE, "Pointer to Encrypted Password (wkssvc_PasswordBuffer)",hf_wkssvc_wkssvc_NetrJoinDomain2_encrypted_password); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_encrypted_password_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_PasswordBuffer(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetrJoinDomain2_encrypted_password,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetrJoinDomain2_join_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_bitmap_joinflags(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetrJoinDomain2_join_flags, 0); + + return offset; +} + +/* IDL: WERROR wkssvc_NetrJoinDomain2( */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *server_name, */ +/* IDL: [charset(UTF16)] [in] [ref] uint16 *domain_name, */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *account_name, */ +/* IDL: [charset(UTF16)] [unique(1)] [in] uint16 *admin_account, */ +/* IDL: [unique(1)] [in] wkssvc_PasswordBuffer *encrypted_password, */ +/* IDL: [in] wkssvc_joinflags join_flags */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetrJoinDomain2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetrJoinDomain2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetrJoinDomain2_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrJoinDomain2_domain_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrJoinDomain2_account_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrJoinDomain2_admin_account(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrJoinDomain2_encrypted_password(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrJoinDomain2_join_flags(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrUnjoinDomain2_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrUnjoinDomain2_account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_wkssvc_wkssvc_NetrUnjoinDomain2_account); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrUnjoinDomain2_account, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password_, NDR_POINTER_UNIQUE, "Pointer to Encrypted Password (wkssvc_PasswordBuffer)",hf_wkssvc_wkssvc_NetrUnjoinDomain2_encrypted_password); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_PasswordBuffer(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetrUnjoinDomain2_encrypted_password,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetrUnjoinDomain2_unjoin_flags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_bitmap_joinflags(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetrUnjoinDomain2_unjoin_flags, 0); + + return offset; +} + +/* IDL: WERROR wkssvc_NetrUnjoinDomain2( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *account, */ +/* IDL: [unique(1)] [in] wkssvc_PasswordBuffer *encrypted_password, */ +/* IDL: [in] wkssvc_joinflags unjoin_flags */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetrUnjoinDomain2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetrUnjoinDomain2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetrUnjoinDomain2_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrUnjoinDomain2_account(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrUnjoinDomain2_encrypted_password(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrUnjoinDomain2_unjoin_flags(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName_, NDR_POINTER_UNIQUE, "Pointer to Newmachinename (uint16)",hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRenameMachineInDomain2_Account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword_, NDR_POINTER_UNIQUE, "Pointer to Encryptedpassword (wkssvc_PasswordBuffer)",hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_EncryptedPassword); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_PasswordBuffer(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_EncryptedPassword,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRenameMachineInDomain2_RenameOptions(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_bitmap_renameflags(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_RenameOptions, 0); + + return offset; +} + +/* IDL: WERROR wkssvc_NetrRenameMachineInDomain2( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *NewMachineName, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *Account, */ +/* IDL: [unique(1)] [in] wkssvc_PasswordBuffer *EncryptedPassword, */ +/* IDL: [in] wkssvc_renameflags RenameOptions */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetrRenameMachineInDomain2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetrRenameMachineInDomain2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetrRenameMachineInDomain2_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRenameMachineInDomain2_NewMachineName(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRenameMachineInDomain2_Account(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRenameMachineInDomain2_EncryptedPassword(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRenameMachineInDomain2_RenameOptions(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +/* IDL: WERROR WKSSVC_NETRVALIDATENAME2( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRVALIDATENAME2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRVALIDATENAME2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRGETJOINABLEOUS2( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrAddAlternateComputerName_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName_, NDR_POINTER_UNIQUE, "Pointer to Newalternatemachinename (uint16)",hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrAddAlternateComputerName_Account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword_, NDR_POINTER_UNIQUE, "Pointer to Encryptedpassword (wkssvc_PasswordBuffer)",hf_wkssvc_wkssvc_NetrAddAlternateComputerName_EncryptedPassword); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_PasswordBuffer(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetrAddAlternateComputerName_EncryptedPassword,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetrAddAlternateComputerName_Reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Reserved,NULL); + + return offset; +} + +/* IDL: WERROR wkssvc_NetrAddAlternateComputerName( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *NewAlternateMachineName, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *Account, */ +/* IDL: [unique(1)] [in] wkssvc_PasswordBuffer *EncryptedPassword, */ +/* IDL: [in] uint32 Reserved */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetrAddAlternateComputerName_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetrAddAlternateComputerName_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetrAddAlternateComputerName_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrAddAlternateComputerName_NewAlternateMachineName(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrAddAlternateComputerName_Account(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrAddAlternateComputerName_EncryptedPassword(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrAddAlternateComputerName_Reserved(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name_, NDR_POINTER_UNIQUE, "Pointer to Server Name (uint16)",hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove_, NDR_POINTER_UNIQUE, "Pointer to Alternatemachinenametoremove (uint16)",hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account_, NDR_POINTER_UNIQUE, "Pointer to Account (uint16)",hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + char *data; + + offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account, FALSE, &data); + proto_item_append_text(tree, ": %s", data); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword_, NDR_POINTER_UNIQUE, "Pointer to Encryptedpassword (wkssvc_PasswordBuffer)",hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_EncryptedPassword); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = wkssvc_dissect_struct_PasswordBuffer(tvb,offset,pinfo,tree,drep,hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_EncryptedPassword,0); + + return offset; +} + +static int +wkssvc_dissect_element_NetrRemoveAlternateComputerName_Reserved(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep) +{ + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Reserved,NULL); + + return offset; +} + +/* IDL: WERROR wkssvc_NetrRemoveAlternateComputerName( */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *server_name, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *AlternateMachineNameToRemove, */ +/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *Account, */ +/* IDL: [unique(1)] [in] wkssvc_PasswordBuffer *EncryptedPassword, */ +/* IDL: [in] uint32 Reserved */ +/* IDL: ); */ + +static int +wkssvc_dissect_NetrRemoveAlternateComputerName_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_NetrRemoveAlternateComputerName_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = wkssvc_dissect_element_NetrRemoveAlternateComputerName_server_name(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRemoveAlternateComputerName_Account(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRemoveAlternateComputerName_EncryptedPassword(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + offset = wkssvc_dissect_element_NetrRemoveAlternateComputerName_Reserved(tvb, offset, pinfo, tree, drep); + offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); + return offset; +} + +/* IDL: WERROR WKSSVC_NETRSETPRIMARYCOMPUTERNAME( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRSETPRIMARYCOMPUTERNAME_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRSETPRIMARYCOMPUTERNAME_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + +/* IDL: WERROR WKSSVC_NETRENUMERATECOMPUTERNAMES( */ +/* IDL: */ +/* IDL: ); */ + +static int +wkssvc_dissect_WKSSVC_NETRENUMERATECOMPUTERNAMES_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + guint32 status; + + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_wkssvc_werror, &status); + + if (status != 0 && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x")); + + return offset; +} + +static int +wkssvc_dissect_WKSSVC_NETRENUMERATECOMPUTERNAMES_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + return offset; +} + + +static dcerpc_sub_dissector wkssvc_dissectors[] = { + { 0, "NetWkstaGetInfo", + wkssvc_dissect_NetWkstaGetInfo_request, wkssvc_dissect_NetWkstaGetInfo_response}, + { 1, "NetWkstaSetInfo", + wkssvc_dissect_NetWkstaSetInfo_request, wkssvc_dissect_NetWkstaSetInfo_response}, + { 2, "NetWkstaEnumUsers", + wkssvc_dissect_NetWkstaEnumUsers_request, wkssvc_dissect_NetWkstaEnumUsers_response}, + { 3, "WKSSVC_NETRWKSTAUSERGETINFO", + wkssvc_dissect_WKSSVC_NETRWKSTAUSERGETINFO_request, wkssvc_dissect_WKSSVC_NETRWKSTAUSERGETINFO_response}, + { 4, "WKSSVC_NETRWKSTAUSERSETINFO", + wkssvc_dissect_WKSSVC_NETRWKSTAUSERSETINFO_request, wkssvc_dissect_WKSSVC_NETRWKSTAUSERSETINFO_response}, + { 5, "NetWkstaTransportEnum", + wkssvc_dissect_NetWkstaTransportEnum_request, wkssvc_dissect_NetWkstaTransportEnum_response}, + { 6, "WKSSVC_NETRWKSTATRANSPORTADD", + wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTADD_request, wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTADD_response}, + { 7, "WKSSVC_NETRWKSTATRANSPORTDEL", + wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTDEL_request, wkssvc_dissect_WKSSVC_NETRWKSTATRANSPORTDEL_response}, + { 8, "WKSSVC_NETRUSEADD", + wkssvc_dissect_WKSSVC_NETRUSEADD_request, wkssvc_dissect_WKSSVC_NETRUSEADD_response}, + { 9, "WKSSVC_NETRUSEGETINFO", + wkssvc_dissect_WKSSVC_NETRUSEGETINFO_request, wkssvc_dissect_WKSSVC_NETRUSEGETINFO_response}, + { 10, "WKSSVC_NETRUSEDEL", + wkssvc_dissect_WKSSVC_NETRUSEDEL_request, wkssvc_dissect_WKSSVC_NETRUSEDEL_response}, + { 11, "WKSSVC_NETRUSEENUM", + wkssvc_dissect_WKSSVC_NETRUSEENUM_request, wkssvc_dissect_WKSSVC_NETRUSEENUM_response}, + { 12, "WKSSVC_NETRMESSAGEBUFFERSEND", + wkssvc_dissect_WKSSVC_NETRMESSAGEBUFFERSEND_request, wkssvc_dissect_WKSSVC_NETRMESSAGEBUFFERSEND_response}, + { 13, "WKSSVC_NETRWORKSTATIONSTATISTICSGET", + wkssvc_dissect_WKSSVC_NETRWORKSTATIONSTATISTICSGET_request, wkssvc_dissect_WKSSVC_NETRWORKSTATIONSTATISTICSGET_response}, + { 14, "WKSSVC_NETRLOGONDOMAINNAMEADD", + wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEADD_request, wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEADD_response}, + { 15, "WKSSVC_NETRLOGONDOMAINNAMEDEL", + wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEDEL_request, wkssvc_dissect_WKSSVC_NETRLOGONDOMAINNAMEDEL_response}, + { 16, "WKSSVC_NETRJOINDOMAIN", + wkssvc_dissect_WKSSVC_NETRJOINDOMAIN_request, wkssvc_dissect_WKSSVC_NETRJOINDOMAIN_response}, + { 17, "WKSSVC_NETRUNJOINDOMAIN", + wkssvc_dissect_WKSSVC_NETRUNJOINDOMAIN_request, wkssvc_dissect_WKSSVC_NETRUNJOINDOMAIN_response}, + { 18, "WKSSVC_NETRRENAMEMACHINEINDOMAIN", + wkssvc_dissect_WKSSVC_NETRRENAMEMACHINEINDOMAIN_request, wkssvc_dissect_WKSSVC_NETRRENAMEMACHINEINDOMAIN_response}, + { 19, "WKSSVC_NETRVALIDATENAME", + wkssvc_dissect_WKSSVC_NETRVALIDATENAME_request, wkssvc_dissect_WKSSVC_NETRVALIDATENAME_response}, + { 20, "WKSSVC_NETRGETJOININFORMATION", + wkssvc_dissect_WKSSVC_NETRGETJOININFORMATION_request, wkssvc_dissect_WKSSVC_NETRGETJOININFORMATION_response}, + { 21, "WKSSVC_NETRGETJOINABLEOUS", + wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS_request, wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS_response}, + { 22, "NetrJoinDomain2", + wkssvc_dissect_NetrJoinDomain2_request, wkssvc_dissect_NetrJoinDomain2_response}, + { 23, "NetrUnjoinDomain2", + wkssvc_dissect_NetrUnjoinDomain2_request, wkssvc_dissect_NetrUnjoinDomain2_response}, + { 24, "NetrRenameMachineInDomain2", + wkssvc_dissect_NetrRenameMachineInDomain2_request, wkssvc_dissect_NetrRenameMachineInDomain2_response}, + { 25, "WKSSVC_NETRVALIDATENAME2", + wkssvc_dissect_WKSSVC_NETRVALIDATENAME2_request, wkssvc_dissect_WKSSVC_NETRVALIDATENAME2_response}, + { 26, "WKSSVC_NETRGETJOINABLEOUS2", + wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS2_request, wkssvc_dissect_WKSSVC_NETRGETJOINABLEOUS2_response}, + { 27, "NetrAddAlternateComputerName", + wkssvc_dissect_NetrAddAlternateComputerName_request, wkssvc_dissect_NetrAddAlternateComputerName_response}, + { 28, "NetrRemoveAlternateComputerName", + wkssvc_dissect_NetrRemoveAlternateComputerName_request, wkssvc_dissect_NetrRemoveAlternateComputerName_response}, + { 29, "WKSSVC_NETRSETPRIMARYCOMPUTERNAME", + wkssvc_dissect_WKSSVC_NETRSETPRIMARYCOMPUTERNAME_request, wkssvc_dissect_WKSSVC_NETRSETPRIMARYCOMPUTERNAME_response}, + { 30, "WKSSVC_NETRENUMERATECOMPUTERNAMES", + wkssvc_dissect_WKSSVC_NETRENUMERATECOMPUTERNAMES_request, wkssvc_dissect_WKSSVC_NETRENUMERATECOMPUTERNAMES_response}, + { 0, NULL, NULL, NULL } }; -void -proto_register_dcerpc_wkssvc(void) +void proto_register_dcerpc_wkssvc(void) { - static hf_register_info hf[] = { - { &hf_wkssvc_opnum, - { "Operation", "wkssvc.opnum", FT_UINT16, BASE_DEC, - NULL, 0x0, "", HFILL }}, - { &hf_wkssvc_server, - { "Server", "wkssvc.server", FT_STRING, BASE_NONE, - NULL, 0x0, "Server Name", HFILL}}, - { &hf_wkssvc_net_group, - { "Net Group", "wkssvc.netgrp", FT_STRING, BASE_NONE, - NULL, 0x0, "Net Group", HFILL}}, - { &hf_wkssvc_info_level, - { "Info Level", "wkssvc.info_level", FT_UINT32, - BASE_DEC, NULL, 0x0, "Info Level", HFILL}}, - { &hf_wkssvc_platform_id, - { "Platform ID", "wkssvc.info.platform_id", FT_UINT32, - BASE_DEC, VALS(platform_id_vals), 0x0, "Platform ID", HFILL}}, - { &hf_wkssvc_ver_major, - { "Major Version", "wkssvc.version.major", FT_UINT32, - BASE_DEC, NULL, 0x0, "Major Version", HFILL}}, - { &hf_wkssvc_ver_minor, - { "Minor Version", "wkssvc.version.minor", FT_UINT32, - BASE_DEC, NULL, 0x0, "Minor Version", HFILL}}, - { &hf_wkssvc_lan_root, - { "Lan Root", "wkssvc.lan.root", FT_STRING, BASE_NONE, - NULL, 0x0, "Lan Root", HFILL}}, - { &hf_wkssvc_logged_on_users, - { "Logged On Users", "wkssvc.logged.on.users", FT_UINT32, - BASE_DEC, NULL, 0x0, "Logged On Users", HFILL}}, - { &hf_wkssvc_pref_max, - { "Preferred Max Len", "wkssvc.pref.max.len", FT_INT32, - BASE_DEC, NULL, 0x0, "Preferred Max Len", HFILL}}, - { &hf_wkssvc_junk, - { "Junk", "wkssvc.junk", FT_UINT32, - BASE_DEC, NULL, 0x0, "Junk", HFILL}}, - { &hf_wkssvc_enum_handle, - { "Enumeration handle", "wkssvc.enum_hnd", FT_BYTES, - BASE_HEX, NULL, 0x0, "Enumeration Handle", HFILL}}, - { &hf_wkssvc_user_name, - { "User Name", "wkssvc.user.name", FT_STRING, BASE_NONE, - NULL, 0x0, "User Name", HFILL}}, - { &hf_wkssvc_logon_domain, - { "Logon Domain", "wkssvc.logon.domain", FT_STRING, BASE_NONE, - NULL, 0x0, "Logon Domain", HFILL}}, - { &hf_wkssvc_other_domains, - { "Other Domains", "wkssvc.other.domains", FT_STRING, BASE_NONE, - NULL, 0x0, "Other Domains", HFILL}}, - { &hf_wkssvc_logon_server, - { "Logon Server", "wkssvc.logon.server", FT_STRING, BASE_NONE, - NULL, 0x0, "Logon Server", HFILL}}, - { &hf_wkssvc_rc, - { "Return code", "wkssvc.rc", FT_UINT32, - BASE_HEX, VALS(DOS_errors), 0x0, "Return Code", HFILL}}, - { &hf_wkssvc_num_entries, - { "Num Entries", "wkssvc.num.entries", FT_INT32, - BASE_DEC, NULL, 0x0, "Num Entries", HFILL}}, - { &hf_wkssvc_entries_read, - { "Entries Read", "wkssvc.entries.read", FT_INT32, - BASE_DEC, NULL, 0x0, "Entries Read", HFILL}}, - { &hf_wkssvc_total_entries, - { "Total Entries", "wkssvc.total.entries", FT_INT32, - BASE_DEC, NULL, 0x0, "Total Entries", HFILL}}, - { &hf_wkssvc_char_wait, - { "Char Wait", "wkssvc.char.wait", FT_INT32, - BASE_DEC, NULL, 0x0, "Char Wait", HFILL}}, - { &hf_wkssvc_collection_time, - { "Collection Time", "wkssvc.collection.time", FT_INT32, - BASE_DEC, NULL, 0x0, "Collection Time", HFILL}}, - { &hf_wkssvc_maximum_collection_count, - { "Maximum Collection Count", "wkssvc.maximum.collection.count", - FT_INT32, - BASE_DEC, NULL, 0x0, "Maximum Collection Count", HFILL}}, - { &hf_wkssvc_keep_conn, - { "Keep Connection", "wkssvc.keep.connection", FT_INT32, - BASE_DEC, NULL, 0x0, "Keep Connection", HFILL}}, - { &hf_wkssvc_max_cmds, - { "Maximum Commands", "wkssvc.maximum.commands", FT_INT32, - BASE_DEC, NULL, 0x0, "Maximum Commands", HFILL}}, - { &hf_wkssvc_sess_timeout, - { "Session Timeout", "wkssvc.session.timeout", FT_INT32, - BASE_DEC, NULL, 0x0, "Session Timeout", HFILL}}, - { &hf_wkssvc_siz_char_buf, - { "Character Buffer Size", "wkssvc.size.char.buff", FT_INT32, - BASE_DEC, NULL, 0x0, "Character Buffer Size", HFILL}}, - { &hf_wkssvc_max_threads, - { "Maximum Threads", "wkssvc.maximum.threads", FT_INT32, - BASE_DEC, NULL, 0x0, "Maximum Threads", HFILL}}, - { &hf_wkssvc_lock_quota, - { "Lock Quota", "wkssvc.lock.quota", FT_INT32, - BASE_DEC, NULL, 0x0, "Lock Quota", HFILL}}, - { &hf_wkssvc_lock_increment, - { "Lock Increment", "wkssvc.lock.increment", FT_INT32, - BASE_DEC, NULL, 0x0, "Lock Increment", HFILL}}, - { &hf_wkssvc_lock_maximum, - { "Lock Maximum", "wkssvc.lock.maximum", FT_INT32, - BASE_DEC, NULL, 0x0, "Lock Maximum", HFILL}}, - { &hf_wkssvc_pipe_increment, - { "Pipe Increment", "wkssvc.pipe.increment", FT_INT32, - BASE_DEC, NULL, 0x0, "Pipe Increment", HFILL}}, - { &hf_wkssvc_pipe_maximum, - { "Pipe Maximum", "wkssvc.pipe.maximum", FT_INT32, - BASE_DEC, NULL, 0x0, "Pipe Maximum", HFILL}}, - { &hf_wkssvc_cache_file_timeout, - { "Cache File Timeout", "wkssvc.cache.file.timeout", FT_INT32, - BASE_DEC, NULL, 0x0, "Cache File Timeout", HFILL}}, - { &hf_wkssvc_dormant_file_limit, - { "Dormant File Limit", "wkssvc.dormant.file.limit", FT_INT32, - BASE_DEC, NULL, 0x0, "Dormant File Limit", HFILL}}, - { &hf_wkssvc_read_ahead_throughput, - { "Read Ahead Throughput", "wkssvc.read.ahead.throughput", FT_INT32, - BASE_DEC, NULL, 0x0, "Read Ahead Throughput", HFILL}}, - { &hf_wkssvc_num_mailslot_buffers, - { "Num Mailslot Buffers", "wkssvc.num.mailslot.buffers", FT_INT32, - BASE_DEC, NULL, 0x0, "Num Mailslot Buffers", HFILL}}, - { &hf_wkssvc_num_srv_announce_buffers, - { "Num Srv Announce Buffers", "wkssvc.num.srv.announce.buffers", FT_INT32, - BASE_DEC, NULL, 0x0, "Num Srv Announce Buffers", HFILL}}, - { &hf_wkssvc_max_illegal_datagram_events, - { "Max Illegal Datagram Events", "wkssvc.max.illegal.datagram.events", FT_INT32, - BASE_DEC, NULL, 0x0, "Max Illegal Datagram Events", HFILL}}, - { &hf_wkssvc_illegal_datagram_event_reset_frequency, - { "Illegal Datagram Event Reset Frequency", "wkssvc.illegal.datagram.reset.frequency", FT_INT32, - BASE_DEC, NULL, 0x0, "Illegal Datagram Event Reset Frequency", HFILL}}, - { &hf_wkssvc_log_election_packets, - { "Log Election Packets", "wkssvc.log.election.packets", FT_INT32, - BASE_DEC, NULL, 0x0, "Log Election Packets", HFILL}}, - { &hf_wkssvc_use_opportunistic_locking, - { "Use Opportunistic Locking", "wkssvc.use.oplocks", FT_INT32, - BASE_DEC, NULL, 0x0, "Use OpLocks", HFILL}}, - { &hf_wkssvc_use_unlock_behind, - { "Use Lock Behind", "wkssvc.use.lock.behind", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Lock Behind", HFILL}}, - { &hf_wkssvc_use_close_behind, - { "Use Close Behind", "wkssvc.use.close.behind", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Close Behind", HFILL}}, - { &hf_wkssvc_buf_named_pipes, - { "Buffer Named Pipes", "wkssvc.buffer.named.pipes", FT_INT32, - BASE_DEC, NULL, 0x0, "Buffer Named Pipes", HFILL}}, - { &hf_wkssvc_use_lock_read_unlock, - { "Use Lock Read Unlock", "wkssvc.use.lock.read.unlock", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Lock Read Unlock", HFILL}}, - { &hf_wkssvc_utilize_nt_caching, - { "Utilize NT Caching", "wkssvc.utilize.nt.caching", FT_INT32, - BASE_DEC, NULL, 0x0, "Utilize NT Caching", HFILL}}, - { &hf_wkssvc_use_raw_read, - { "Use Raw Read", "wkssvc.use.raw.read", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Raw Read", HFILL}}, - { &hf_wkssvc_use_raw_write, - { "Use Raw Write", "wkssvc.use.raw.write", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Raw Write", HFILL}}, - { &hf_wkssvc_use_write_raw_data, - { "Use Write Raw Data", "wkssvc.use.write.raw.data", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Write Raw Data", HFILL}}, - { &hf_wkssvc_use_encryption, - { "Use Encryption", "wkssvc.use.encryption", FT_INT32, - BASE_DEC, NULL, 0x0, "Use Encryption", HFILL}}, - { &hf_wkssvc_buf_files_deny_write, - { "Buffer Files Deny Write", "wkssvc.buf.files.deny.write", FT_INT32, - BASE_DEC, NULL, 0x0, "Buffer Files Deny Write", HFILL}}, - { &hf_wkssvc_buf_read_only_files, - { "Buffer Files Read Only", "wkssvc.buf.files.read.only", FT_INT32, - BASE_DEC, NULL, 0x0, "Buffer Files Read Only", HFILL}}, - { &hf_wkssvc_force_core_create_mode, - { "Force Core Create Mode", "wkssvc.force.core.create.mode", FT_INT32, - BASE_DEC, NULL, 0x0, "Force Core Create Mode", HFILL}}, - { &hf_wkssvc_use_512_byte_max_transfer, - { "Use 512 Byte Max Transfer", "wkssvc.use.512.byte.max.transfer", FT_INT32, - BASE_DEC, NULL, 0x0, "Use 512 Byte Maximum Transfer", HFILL}}, - { &hf_wkssvc_parm_err, - { "Parameter Error Offset", "wkssvc.parm.err", FT_INT32, - BASE_DEC, NULL, 0x0, "Parameter Error Offset", HFILL}}, - { &hf_wkssvc_errlog_sz, - { "Error Log Size", "wkssvc.errlog.sz", FT_INT32, - BASE_DEC, NULL, 0x0, "Error Log Size", HFILL}}, - { &hf_wkssvc_print_buf_time, - { "Print Buf Time", "wkssvc.print.buf.time", FT_INT32, - BASE_DEC, NULL, 0x0, "Print Buff Time", HFILL}}, - { &hf_wkssvc_wrk_heuristics, - { "Wrk Heuristics", "wkssvc.wrk.heuristics", FT_INT32, - BASE_DEC, NULL, 0x0, "Wrk Heuristics", HFILL}}, - { &hf_wkssvc_quality_of_service, - { "Quality Of Service", "wkssvc.qos", FT_INT32, - BASE_DEC, NULL, 0x0, "Quality Of Service", HFILL}}, - { &hf_wkssvc_number_of_vcs, - { "Number Of VCs", "wkssvc.number.of.vcs", FT_INT32, - BASE_DEC, NULL, 0x0, "Number of VSs", HFILL}}, - { &hf_wkssvc_transport_name, - { "Transport Name", "wkssvc.transport.name", FT_STRING, BASE_NONE, - NULL, 0x0, "Transport Name", HFILL}}, - { &hf_wkssvc_transport_address, - { "Transport Address", "wkssvc.transport.address", FT_STRING, - BASE_NONE, - NULL, 0x0, "Transport Address", HFILL}}, - { &hf_wkssvc_wan_ish, - { "WAN ish", "wkssvc.wan.ish", FT_INT32, - BASE_DEC, NULL, 0x0, "WAN ish", HFILL}}, - { &hf_wkssvc_domain_to_join, - { "Domain or Workgroup to join", "wkssvc.join.domain", FT_STRING, BASE_NONE, - NULL, 0x0, "Domain or Workgroup to join", HFILL}}, - { &hf_wkssvc_ou_for_computer_account, - { "Organizational Unit (OU) for computer account", - "wkssvc.join.computer_account_ou", FT_STRING, BASE_NONE, - NULL, 0x0, "Organizational Unit (OU) for computer account", HFILL}}, - { &hf_wkssvc_account_used_for_join, - { "Account used for join operations", "wkssvc.join.account_used", FT_STRING, BASE_NONE, - NULL, 0x0, "Account used for join operations", HFILL}}, - { &hf_wkssvc_join_flags, - { "Domain join flags", "wkssvc.join.flags", - FT_UINT32, BASE_HEX, NULL, 0x0, - "Domain join flags", HFILL }}, - { &hf_wkssvc_unjoin_flags, - { "Domain unjoin flags", "wkssvc.unjoin.flags", - FT_UINT32, BASE_HEX, NULL, 0x0, - "Domain unjoin flags", HFILL }}, - { &hf_wkssvc_rename_flags, - { "Machine rename flags", "wkssvc.rename.flags", - FT_UINT32, BASE_HEX, NULL, 0x0, - "Machine rename flags", HFILL }}, - { &hf_wkssvc_join_options_join_type, - { "Join type", "wkssvc.join.options.join_type", - FT_BOOLEAN, 32, TFS(&join_flags_domain_join), 0x00000001, - "Join type", HFILL}}, - { &hf_wkssvc_join_options_acct_create, - { "Computer account creation", "wkssvc.join.options.account_create", - FT_BOOLEAN, 32, TFS(&join_flags_acct_create), 0x00000002, - "Computer account creation", HFILL}}, - { &hf_wkssvc_unjoin_options_acct_delete, - { "Computer account deletion", "wkssvc.unjoin.options.account_delete", - FT_BOOLEAN, 32, TFS(&unjoin_flags_acct_delete), 0x00000004, - "Computer account deletion", HFILL}}, - { &hf_wkssvc_join_options_win9x_upgrade, - { "Win9x upgrade", "wkssvc.join.options.win9x_upgrade", - FT_BOOLEAN, 32, TFS(&join_flags_win9x_upgrade), 0x00000010, - "Win9x upgrade", HFILL}}, - { &hf_wkssvc_join_options_domain_join_if_joined, - { "New domain join if already joined", - "wkssvc.join.options.domain_join_if_joined", - FT_BOOLEAN, 32, TFS(&join_flags_domain_join_if_joined), - 0x00000020, - "New domain join if already joined", HFILL}}, - { &hf_wkssvc_join_options_join_unsecure, - { "Unsecure join", "wkssvc.join.options.insecure_join", - FT_BOOLEAN, 32, TFS(&join_flags_unsecure), - 0x00000040, "Unsecure join", HFILL}}, - { &hf_wkssvc_join_options_machine_pwd_passed, - { "Machine pwd passed", "wkssvc.join.options.machine_pwd_passed", - FT_BOOLEAN, 32, TFS(&join_flags_machine_pwd_passed), - 0x00000080, "Machine pwd passed", HFILL}}, - { &hf_wkssvc_join_options_defer_spn_set, - { "Defer SPN set", "wkssvc.join.options.defer_spn_set", - FT_BOOLEAN, 32, TFS(&join_flags_defer_spn_set), - 0x00000100, "Defer SPN set", HFILL}}, - { &hf_wkssvc_account_used_for_unjoin, - { "Account used for unjoin operations", - "wkssvc.unjoin.account_used", FT_STRING, BASE_NONE, - NULL, 0x0, "Account used for unjoin operations", HFILL}}, - { &hf_wkssvc_account_used_for_alternate_name, - { "Account used for alternate name operations", - "wkssvc.alternate_operations_account", FT_STRING, BASE_NONE, - NULL, 0x0, "Account used for alternate name operations", HFILL}}, - { &hf_wkssvc_alternate_name, - { "Alternate computer name", "wkssvc.alternate_computer_name", FT_STRING, BASE_NONE, - NULL, 0x0, "Alternate computer name", HFILL}}, - { &hf_wkssvc_encrypted_password, - { "Encrypted password", "wkssvc.crypt_password", FT_BYTES, BASE_HEX, - NULL, 0, "Encrypted Password", HFILL }}, - { &hf_wkssvc_reserved, - { "Reserved field", "wkssvc.reserved", FT_INT32, - BASE_HEX, NULL, 0x0, "Reserved field", HFILL}}, + static hf_register_info hf[] = { + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_read, + { "Use Raw Read", "wkssvc.wkssvc_NetWkstaInfo502.use_raw_read", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_entriesread, + { "Entriesread", "wkssvc.wkssvc_NetWkstaEnumUsers.entriesread", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_dgram_event_reset_freq, + { "Dgram Event Reset Freq", "wkssvc.wkssvc_NetWkstaInfo502.dgram_event_reset_freq", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportCtr0_count, + { "Count", "wkssvc.wkssvc_NetWkstaTransportCtr0.count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_increment, + { "Pipe Increment", "wkssvc.wkssvc_NetWkstaInfo502.pipe_increment", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info502, + { "Info502", "wkssvc.wkssvc_NetWkstaInfo.info502", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaGetInfo_info, + { "Info", "wkssvc.wkssvc_NetWkstaGetInfo.info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_log_election_packets, + { "Log Election Packets", "wkssvc.wkssvc_NetWkstaInfo502.log_election_packets", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_lan_root, + { "Lan Root", "wkssvc.wkssvc_NetWkstaInfo102.lan_root", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_char_wait, + { "Char Wait", "wkssvc.wkssvc_NetWkstaInfo502.char_wait", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_0_user, + { "User", "wkssvc.USER_INFO_0.user", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_buf_files_deny_write, + { "Buf Files Deny Write", "wkssvc.wkssvc_NetWkstaInfo502.buf_files_deny_write", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_force_core_create_mode, + { "Force Core Create Mode", "wkssvc.wkssvc_NetWkstaInfo502.force_core_create_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1013_keep_connection, + { "Keep Connection", "wkssvc.wkssvc_NetWkstaInfo1013.keep_connection", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1011_collection_time, + { "Collection Time", "wkssvc.wkssvc_NetWkstaInfo1011.collection_time", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_platform_id, + { "Platform Id", "wkssvc.wkssvc_NetWkstaInfo101.platform_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_EncryptedPassword, + { "Encryptedpassword", "wkssvc.wkssvc_NetrRenameMachineInDomain2.EncryptedPassword", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE, + { "Wkssvc Join Flags Account Create", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE_tfs), ( 0x00000002 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrAddAlternateComputerName_server_name, + { "Server Name", "wkssvc.wkssvc_NetrAddAlternateComputerName.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_logged_on_users, + { "Logged On Users", "wkssvc.wkssvc_NetWkstaInfo102.logged_on_users", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrUnjoinDomain2_server_name, + { "Server Name", "wkssvc.wkssvc_NetrUnjoinDomain2.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaInfo102.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportInfo0_vc_count, + { "Vc Count", "wkssvc.wkssvc_NetWkstaTransportInfo0.vc_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_read_ahead_throughput, + { "Read Ahead Throughput", "wkssvc.wkssvc_NetWkstaInfo502.read_ahead_throughput", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_Account, + { "Account", "wkssvc.wkssvc_NetrRenameMachineInDomain2.Account", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrAddAlternateComputerName_NewAlternateMachineName, + { "Newalternatemachinename", "wkssvc.wkssvc_NetrAddAlternateComputerName.NewAlternateMachineName", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo100_version_minor, + { "Version Minor", "wkssvc.wkssvc_NetWkstaInfo100.version_minor", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_num_mailslot_buffers, + { "Num Mailslot Buffers", "wkssvc.wkssvc_NetWkstaInfo502.num_mailslot_buffers", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_domain_name, + { "Domain Name", "wkssvc.wkssvc_NetWkstaInfo102.domain_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_WKS_USER_ENUM_UNION_user0, + { "User0", "wkssvc.WKS_USER_ENUM_UNION.user0", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_WKS_USER_ENUM_UNION_user1, + { "User1", "wkssvc.WKS_USER_ENUM_UNION.user1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_user_name, + { "User Name", "wkssvc.USER_INFO_1.user_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_maximum_collection_count, + { "Maximum Collection Count", "wkssvc.wkssvc_NetWkstaInfo502.maximum_collection_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_prefmaxlen, + { "Prefmaxlen", "wkssvc.wkssvc_NetWkstaEnumUsers.prefmaxlen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_level, + { "Level", "wkssvc.wkssvc_NetWkstaEnumUsers.level", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_other_domains, + { "Other Domains", "wkssvc.USER_INFO_1.other_domains", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE, + { "Wkssvc Join Flags Join Type", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_JOIN_TYPE", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE_tfs), ( 0x00000001 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED, + { "Wkssvc Join Flags Machine Pwd Passed", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED_tfs), ( 0x00000080 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_server_name, + { "Server Name", "wkssvc.wkssvc_NetrRemoveAlternateComputerName.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_encryption, + { "Use Encryption", "wkssvc.wkssvc_NetWkstaInfo502.use_encryption", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_totalentries, + { "Totalentries", "wkssvc.wkssvc_NetWkstaEnumUsers.totalentries", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrAddAlternateComputerName_EncryptedPassword, + { "Encryptedpassword", "wkssvc.wkssvc_NetrAddAlternateComputerName.EncryptedPassword", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportInfo0_quality_of_service, + { "Quality Of Service", "wkssvc.wkssvc_NetWkstaTransportInfo0.quality_of_service", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo100_platform_id, + { "Platform Id", "wkssvc.wkssvc_NetWkstaInfo100.platform_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_ctr, + { "Ctr", "wkssvc.wkssvc_NetWkstaTransportEnum.ctr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_server_name, + { "Server Name", "wkssvc.wkssvc_NetrRenameMachineInDomain2.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_admin_account, + { "Admin Account", "wkssvc.wkssvc_NetrJoinDomain2.admin_account", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaGetInfo_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaGetInfo.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaSetInfo_level, + { "Level", "wkssvc.wkssvc_NetWkstaSetInfo.level", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_renameflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE, + { "Wkssvc Join Flags Account Create", "wkssvc.wkssvc_renameflags.WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE", FT_BOOLEAN, 32, TFS(&wkssvc_renameflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE_tfs), ( 0x00000002 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN, + { "Wkssvc Join Flags Defer Spn", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_DEFER_SPN", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN_tfs), ( 0x00000100 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1023_size_char_buf, + { "Size Char Buf", "wkssvc.wkssvc_NetWkstaInfo1023.size_char_buf", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1010, + { "Info1010", "wkssvc.wkssvc_NetWkstaInfo.info1010", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_platform_id, + { "Platform Id", "wkssvc.platform_id", FT_UINT32, BASE_DEC, VALS(srvsvc_srvsvc_PlatformId_vals), 0, " ", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_server_name, + { "Server Name", "wkssvc.wkssvc_NetrJoinDomain2.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1011, + { "Info1011", "wkssvc.wkssvc_NetWkstaInfo.info1011", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1012, + { "Info1012", "wkssvc.wkssvc_NetWkstaInfo.info1012", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_lock_maximum, + { "Lock Maximum", "wkssvc.wkssvc_NetWkstaInfo502.lock_maximum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1013, + { "Info1013", "wkssvc.wkssvc_NetWkstaInfo.info1013", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_0_CONTAINER_user0, + { "User0", "wkssvc.USER_INFO_0_CONTAINER.user0", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaInfo101.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1018, + { "Info1018", "wkssvc.wkssvc_NetWkstaInfo.info1018", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_buf_read_only_files, + { "Buf Read Only Files", "wkssvc.wkssvc_NetWkstaInfo502.buf_read_only_files", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_version_minor, + { "Version Minor", "wkssvc.wkssvc_NetWkstaInfo101.version_minor", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_domain_name, + { "Domain Name", "wkssvc.wkssvc_NetrJoinDomain2.domain_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_lan_root, + { "Lan Root", "wkssvc.wkssvc_NetWkstaInfo101.lan_root", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE, + { "Wkssvc Join Flags Account Delete", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE_tfs), ( 0x00000004 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_domain_name, + { "Domain Name", "wkssvc.wkssvc_NetWkstaInfo101.domain_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_opnum, + { "Operation", "wkssvc.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrUnjoinDomain2_account, + { "Account", "wkssvc.wkssvc_NetrUnjoinDomain2.account", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED, + { "Wkssvc Join Flags Domain Join If Joined", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED_tfs), ( 0x00000020 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_dormant_file_limit, + { "Dormant File Limit", "wkssvc.wkssvc_NetWkstaInfo502.dormant_file_limit", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_CONTAINER_user1, + { "User1", "wkssvc.USER_INFO_1_CONTAINER.user1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_unlock_behind, + { "Use Unlock Behind", "wkssvc.wkssvc_NetWkstaInfo502.use_unlock_behind", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_resumehandle, + { "Resumehandle", "wkssvc.wkssvc_NetWkstaEnumUsers.resumehandle", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_EncryptedPassword, + { "Encryptedpassword", "wkssvc.wkssvc_NetrRemoveAlternateComputerName.EncryptedPassword", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_pipe_maximum, + { "Pipe Maximum", "wkssvc.wkssvc_NetWkstaInfo502.pipe_maximum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_cache_file_timeout, + { "Cache File Timeout", "wkssvc.wkssvc_NetWkstaInfo502.cache_file_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_level, + { "Level", "wkssvc.wkssvc_NetWkstaTransportEnum.level", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrUnjoinDomain2_encrypted_password, + { "Encrypted Password", "wkssvc.wkssvc_NetrUnjoinDomain2.encrypted_password", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_CONTAINER_entries_read, + { "Entries Read", "wkssvc.USER_INFO_1_CONTAINER.entries_read", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1023, + { "Info1023", "wkssvc.wkssvc_NetWkstaInfo.info1023", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaSetInfo_parm_error, + { "Parm Error", "wkssvc.wkssvc_NetWkstaSetInfo.parm_error", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_raw_write, + { "Use Raw Write", "wkssvc.wkssvc_NetWkstaInfo502.use_raw_write", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info100, + { "Info100", "wkssvc.wkssvc_NetWkstaInfo.info100", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info101, + { "Info101", "wkssvc.wkssvc_NetWkstaInfo.info101", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info102, + { "Info102", "wkssvc.wkssvc_NetWkstaInfo.info102", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1027, + { "Info1027", "wkssvc.wkssvc_NetWkstaInfo.info1027", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_512_byte_max_transfer, + { "Use 512 Byte Max Transfer", "wkssvc.wkssvc_NetWkstaInfo502.use_512_byte_max_transfer", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1018_session_timeout, + { "Session Timeout", "wkssvc.wkssvc_NetWkstaInfo1018.session_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1033_max_threads, + { "Max Threads", "wkssvc.wkssvc_NetWkstaInfo1033.max_threads", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportInfo0_name, + { "Name", "wkssvc.wkssvc_NetWkstaTransportInfo0.name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo100_version_major, + { "Version Major", "wkssvc.wkssvc_NetWkstaInfo100.version_major", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_NewMachineName, + { "Newmachinename", "wkssvc.wkssvc_NetrRenameMachineInDomain2.NewMachineName", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo100_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaInfo100.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_users, + { "Users", "wkssvc.wkssvc_NetWkstaEnumUsers.users", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Account, + { "Account", "wkssvc.wkssvc_NetrAddAlternateComputerName.Account", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_version_minor, + { "Version Minor", "wkssvc.wkssvc_NetWkstaInfo102.version_minor", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_AlternateMachineNameToRemove, + { "Alternatemachinenametoremove", "wkssvc.wkssvc_NetrRemoveAlternateComputerName.AlternateMachineNameToRemove", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaTransportEnum.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_max_commands, + { "Max Commands", "wkssvc.wkssvc_NetWkstaInfo502.max_commands", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_utilize_nt_caching, + { "Utilize Nt Caching", "wkssvc.wkssvc_NetWkstaInfo502.utilize_nt_caching", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaEnumUsers_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaEnumUsers.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo100_domain_name, + { "Domain Name", "wkssvc.wkssvc_NetWkstaInfo100.domain_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_max_threads, + { "Max Threads", "wkssvc.wkssvc_NetWkstaInfo502.max_threads", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_size_char_buf, + { "Size Char Buf", "wkssvc.wkssvc_NetWkstaInfo502.size_char_buf", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo_info1033, + { "Info1033", "wkssvc.wkssvc_NetWkstaInfo.info1033", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaSetInfo_info, + { "Info", "wkssvc.wkssvc_NetWkstaSetInfo.info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1012_maximum_collection_count, + { "Maximum Collection Count", "wkssvc.wkssvc_NetWkstaInfo1012.maximum_collection_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_logon_domain, + { "Logon Domain", "wkssvc.USER_INFO_1.logon_domain", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_werror, + { "Windows Error", "wkssvc.werror", FT_UINT32, BASE_HEX, VALS(WERR_errors), 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_num_srv_announce_buffers, + { "Num Srv Announce Buffers", "wkssvc.wkssvc_NetWkstaInfo502.num_srv_announce_buffers", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrUnjoinDomain2_unjoin_flags, + { "Unjoin Flags", "wkssvc.wkssvc_NetrUnjoinDomain2.unjoin_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_close_behind, + { "Use Close Behind", "wkssvc.wkssvc_NetWkstaInfo502.use_close_behind", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_encrypted_password, + { "Encrypted Password", "wkssvc.wkssvc_NetrJoinDomain2.encrypted_password", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo101_version_major, + { "Version Major", "wkssvc.wkssvc_NetWkstaInfo101.version_major", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaSetInfo_server_name, + { "Server Name", "wkssvc.wkssvc_NetWkstaSetInfo.server_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_lock_read_unlock, + { "Use Lock Read Unlock", "wkssvc.wkssvc_NetWkstaInfo502.use_lock_read_unlock", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaGetInfo_level, + { "Level", "wkssvc.wkssvc_NetWkstaGetInfo.level", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_join_flags, + { "Join Flags", "wkssvc.wkssvc_NetrJoinDomain2.join_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1010_char_wait, + { "Char Wait", "wkssvc.wkssvc_NetWkstaInfo1010.char_wait", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_lock_increment, + { "Lock Increment", "wkssvc.wkssvc_NetWkstaInfo502.lock_increment", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE, + { "Wkssvc Join Flags Join Unsecure", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_JOIN_UNSECURE", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE_tfs), ( 0x00000040 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo1027_errorlog_sz, + { "Errorlog Sz", "wkssvc.wkssvc_NetWkstaInfo1027.errorlog_sz", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportCtr_ctr0, + { "Ctr0", "wkssvc.wkssvc_NetWkstaTransportCtr.ctr0", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrJoinDomain2_account_name, + { "Account Name", "wkssvc.wkssvc_NetrJoinDomain2.account_name", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportInfo0_wan_link, + { "Wan Link", "wkssvc.wkssvc_NetWkstaTransportInfo0.wan_link", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_keep_connection, + { "Keep Connection", "wkssvc.wkssvc_NetWkstaInfo502.keep_connection", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_resume_handle, + { "Resume Handle", "wkssvc.wkssvc_NetWkstaTransportEnum.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrAddAlternateComputerName_Reserved, + { "Reserved", "wkssvc.wkssvc_NetrAddAlternateComputerName.Reserved", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRenameMachineInDomain2_RenameOptions, + { "Renameoptions", "wkssvc.wkssvc_NetrRenameMachineInDomain2.RenameOptions", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_write_raw_data, + { "Use Write Raw Data", "wkssvc.wkssvc_NetWkstaInfo502.use_write_raw_data", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_1_logon_server, + { "Logon Server", "wkssvc.USER_INFO_1.logon_server", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_PasswordBuffer_data, + { "Data", "wkssvc.wkssvc_PasswordBuffer.data", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_max_buffer, + { "Max Buffer", "wkssvc.wkssvc_NetWkstaTransportEnum.max_buffer", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_max_illegal_dgram_events, + { "Max Illegal Dgram Events", "wkssvc.wkssvc_NetWkstaInfo502.max_illegal_dgram_events", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportEnum_totalentries, + { "Totalentries", "wkssvc.wkssvc_NetWkstaTransportEnum.totalentries", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_use_opportunistic_locking, + { "Use Opportunistic Locking", "wkssvc.wkssvc_NetWkstaInfo502.use_opportunistic_locking", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_USER_INFO_0_CONTAINER_entries_read, + { "Entries Read", "wkssvc.USER_INFO_0_CONTAINER.entries_read", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_version_major, + { "Version Major", "wkssvc.wkssvc_NetWkstaInfo102.version_major", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo102_platform_id, + { "Platform Id", "wkssvc.wkssvc_NetWkstaInfo102.platform_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_lock_quota, + { "Lock Quota", "wkssvc.wkssvc_NetWkstaInfo502.lock_quota", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Account, + { "Account", "wkssvc.wkssvc_NetrRemoveAlternateComputerName.Account", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE, + { "Wkssvc Join Flags Win9x Upgrade", "wkssvc.wkssvc_joinflags.WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE", FT_BOOLEAN, 32, TFS(&wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE_tfs), ( 0x00000010 ), "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_session_timeout, + { "Session Timeout", "wkssvc.wkssvc_NetWkstaInfo502.session_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportInfo0_address, + { "Address", "wkssvc.wkssvc_NetWkstaTransportInfo0.address", FT_STRING, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaTransportCtr0_array, + { "Array", "wkssvc.wkssvc_NetWkstaTransportCtr0.array", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetrRemoveAlternateComputerName_Reserved, + { "Reserved", "wkssvc.wkssvc_NetrRemoveAlternateComputerName.Reserved", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_buf_named_pipes, + { "Buf Named Pipes", "wkssvc.wkssvc_NetWkstaInfo502.buf_named_pipes", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_wkssvc_wkssvc_NetWkstaInfo502_collection_time, + { "Collection Time", "wkssvc.wkssvc_NetWkstaInfo502.collection_time", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, }; - static gint *ett[] = { - &ett_dcerpc_wkssvc, - &ett_dcerpc_wkssvc_join_flags - }; - proto_dcerpc_wkssvc = proto_register_protocol( - "Microsoft Workstation Service", "WKSSVC", "wkssvc"); - proto_register_field_array(proto_dcerpc_wkssvc, hf, array_length(hf)); - proto_register_subtree_array(ett, array_length(ett)); + static gint *ett[] = { + &ett_dcerpc_wkssvc, + &ett_wkssvc_wkssvc_NetWkstaInfo100, + &ett_wkssvc_wkssvc_NetWkstaInfo101, + &ett_wkssvc_wkssvc_NetWkstaInfo102, + &ett_wkssvc_wkssvc_NetWkstaInfo502, + &ett_wkssvc_wkssvc_NetWkstaInfo1010, + &ett_wkssvc_wkssvc_NetWkstaInfo1011, + &ett_wkssvc_wkssvc_NetWkstaInfo1012, + &ett_wkssvc_wkssvc_NetWkstaInfo1013, + &ett_wkssvc_wkssvc_NetWkstaInfo1018, + &ett_wkssvc_wkssvc_NetWkstaInfo1023, + &ett_wkssvc_wkssvc_NetWkstaInfo1027, + &ett_wkssvc_wkssvc_NetWkstaInfo1033, + &ett_wkssvc_wkssvc_NetWkstaInfo, + &ett_wkssvc_USER_INFO_0, + &ett_wkssvc_USER_INFO_0_CONTAINER, + &ett_wkssvc_USER_INFO_1, + &ett_wkssvc_USER_INFO_1_CONTAINER, + &ett_wkssvc_WKS_USER_ENUM_UNION, + &ett_wkssvc_wkssvc_NetWkstaTransportInfo0, + &ett_wkssvc_wkssvc_NetWkstaTransportCtr0, + &ett_wkssvc_wkssvc_NetWkstaTransportCtr, + &ett_wkssvc_wkssvc_PasswordBuffer, + &ett_wkssvc_wkssvc_joinflags, + &ett_wkssvc_wkssvc_renameflags, + }; + + proto_dcerpc_wkssvc = proto_register_protocol("Workstation Service", "WKSSVC", "wkssvc"); + proto_register_field_array(proto_dcerpc_wkssvc, hf, array_length (hf)); + proto_register_subtree_array(ett, array_length(ett)); } -void -proto_reg_handoff_dcerpc_wkssvc(void) +void proto_reg_handoff_dcerpc_wkssvc(void) { - /* Register protocol as dcerpc */ - - dcerpc_init_uuid(proto_dcerpc_wkssvc, ett_dcerpc_wkssvc, - &uuid_dcerpc_wkssvc, ver_dcerpc_wkssvc, - dcerpc_wkssvc_dissectors, hf_wkssvc_opnum); + dcerpc_init_uuid(proto_dcerpc_wkssvc, ett_dcerpc_wkssvc, + &uuid_dcerpc_wkssvc, ver_dcerpc_wkssvc, + wkssvc_dissectors, hf_wkssvc_opnum); } diff --git a/epan/dissectors/packet-dcerpc-wkssvc.h b/epan/dissectors/packet-dcerpc-wkssvc.h index 3fdb26cb8c..d97e0e26c6 100644 --- a/epan/dissectors/packet-dcerpc-wkssvc.h +++ b/epan/dissectors/packet-dcerpc-wkssvc.h @@ -1,66 +1,40 @@ -/* packet-dcerpc-wkssvc.h - * Routines for SMB \PIPE\wkssvc packet disassembly - * Copyright 2001, Tim Potter - * Copyright 2002, Richard Sharpe - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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. - */ +/* autogenerated by pidl */ + +/* DO NOT EDIT + This filter was automatically generated + from wkssvc.idl and wkssvc.cnf. + + Pidl is a perl based IDL compiler for DCE/RPC idl files. + It is maintained by the Samba team, not the Wireshark team. + Instructions on how to download and install Pidl can be + found at http://wiki.wireshark.org/Pidl +*/ + #ifndef __PACKET_DCERPC_WKSSVC_H #define __PACKET_DCERPC_WKSSVC_H -/* Functions available on the WKSSVC pipe. From Samba, include/rpc_wkssvc.h */ +#include "packet-dcerpc-srvsvc.h" -#define WKS_NETRWKSTAGETINFO 0x00 -#define WKS_NETRWKSTASETINFO 0x01 -#define WKS_NETRWKSTAUSERENUM 0x02 -#define WKS_NETRWKSTAUSERGETINFO 0x03 -#define WKS_NETRWKSTAUSERSETINFO 0x04 -#define WKS_NETRWKSTATRANSPORTENUM 0x05 -#define WKS_NETRWKSTATRANSPORTADD 0x06 -#define WKS_NETRWKSTATRANSPORTDEL 0x07 -#define WKS_NETRUSEADD 0x08 -#define WKS_NETRUSEGETINFO 0x09 -#define WKS_NETRUSEDEL 0x0a -#define WKS_NETRUSEENUM 0x0b -#define WKS_NETRMESSAGEBUFFERSEND 0x0c -#define WKS_NETRWORKSTATIONSTATISTICSGET 0x0d -#define WKS_NETRLOGONDOMAINNAMEADD 0x0e -#define WKS_NETRLOGONDOMAINNAMEDEL 0x0f -#define WKS_NETRJOINDOMAIN 0x10 -#define WKS_NETRUNJOINDOMAIN 0x11 -#define WKS_NETRRENAMEMACHINEINDOMAIN 0x12 -#define WKS_NETRVALIDATENAME 0x13 -#define WKS_NETRGETJOININFORMATION 0x14 -#define WKS_NETRGETJOINABLEOUS 0x15 -#define WKS_NETRJOINDOMAIN2 0x16 -#define WKS_NETRUNJOINDOMAIN2 0x17 -#define WKS_NETRRENAMEMACHINEINDOMAIN2 0x18 -#define WKS_NETRVALIDATENAME2 0x19 -#define WKS_NETRGETJOINABLEOUS2 0x1a -#define WKS_NETRADDALTERNATECOMPUTERNAME 0x1b -#define WKS_NETRREMOVEALTERNATECOMPUTERNAME 0x1c -#define WKS_NETRSETPRIMARYCOMPUTERNAME 0x1d -#define WKS_NETRENUMERATECOMPUTERNAMES 0x1e - - - -#endif /* packet-dcerpc-wkssvc.h */ +int wkssvc_dissect_struct_NetWkstaInfo100(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo101(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo102(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo502(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1010(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1011(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1012(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1013(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1018(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1023(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1027(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaInfo1033(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_USER_INFO_0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_USER_INFO_0_CONTAINER(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_USER_INFO_1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_USER_INFO_1_CONTAINER(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaTransportInfo0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_NetWkstaTransportCtr0(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_struct_PasswordBuffer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, guint8 *drep, int hf_index, guint32 param _U_); +int wkssvc_dissect_bitmap_joinflags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param); +int wkssvc_dissect_bitmap_renameflags(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index, guint32 param); +#endif /* __PACKET_DCERPC_WKSSVC_H */ diff --git a/epan/dissectors/pidl/wkssvc.cnf b/epan/dissectors/pidl/wkssvc.cnf index 5f9029f253..8cda023d6a 100644 --- a/epan/dissectors/pidl/wkssvc.cnf +++ b/epan/dissectors/pidl/wkssvc.cnf @@ -14,3 +14,17 @@ TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE "Create the acco TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE "Join the computer to a domain" "Join the computer to a workgroup" + +HF_FIELD hf_wkssvc_platform_id "Platform Id" "wkssvc.platform_id" FT_UINT32 BASE_DEC VALS(srvsvc_srvsvc_PlatformId_vals) 0 "" "" "" + +CODE START +/* Bug in pidl. Can not handle these dependencies properly yet */ +static int +srvsvc_dissect_struct_PlatformId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, guint8 *drep, int hf_index _U_, guint32 param _U_) +{ + offset = srvsvc_dissect_enum_PlatformId(tvb,offset,pinfo,tree,drep,hf_wkssvc_platform_id,0); + + return offset; +} + +CODE END diff --git a/epan/dissectors/pidl/wkssvc.idl b/epan/dissectors/pidl/wkssvc.idl index e276562c21..d658091c47 100644 --- a/epan/dissectors/pidl/wkssvc.idl +++ b/epan/dissectors/pidl/wkssvc.idl @@ -1,9 +1,3 @@ -/* slightly modified from the samba 4 idl since we have not converted SRVSVC yet. - the generated dissector is not yet for inclusion. -*/ - -#include "idl_types.h" - /* wkssvc interface definitions */ @@ -12,16 +6,11 @@ version(1.0), pointer_default(unique), pointer_default_top(unique), - helpstring("Workstation Service") + helpstring("Workstation Service"), + depends(srvsvc) ] interface wkssvc { - typedef [public] enum { - PLATFORM_ID_DOS = 300, - PLATFORM_ID_OS2 = 400, - PLATFORM_ID_NT = 500, - PLATFORM_ID_OSF = 600, - PLATFORM_ID_VMS = 700 - } srvsvc_PlatformId; + declare [v1_enum] enum srvsvc_PlatformId; #define BOOL uint32 @@ -301,7 +290,7 @@ WERROR WKSSVC_NETRGETJOINABLEOUS (); typedef struct { - uint8 blob[524]; + uint8 data[524]; } wkssvc_PasswordBuffer; typedef [bitmap32bit] bitmap { @@ -338,7 +327,7 @@ [in] [string,charset(UTF16),ref] uint16 *domain_name, [in] [string,charset(UTF16)] uint16 *account_name, [in] [string,charset(UTF16)] uint16 *admin_account, - [in] wkssvc_PasswordBuffer *type_30, + [in] wkssvc_PasswordBuffer *encrypted_password, [in] wkssvc_joinflags join_flags ); @@ -347,7 +336,7 @@ WERROR wkssvc_NetrUnjoinDomain2 ( [in] [unique] [string,charset(UTF16)] uint16 *server_name, [in] [unique] [string,charset(UTF16)] uint16 *account, - [in] [unique] wkssvc_PasswordBuffer *Encrypted_password, + [in] [unique] wkssvc_PasswordBuffer *encrypted_password, [in] wkssvc_joinflags unjoin_flags );