2007-09-07 22:11:01 +00:00
/* packet-dcerpc-fileexp.c
2002-11-08 19:46:09 +00:00
*
2007-09-07 22:11:01 +00:00
* Routines for DCE DFS File Exporter dissection
2010-09-27 19:05:43 +00:00
* Copyright 2002 , Jaime Fournier < Jaime . Fournier @ hush . com >
2002-11-08 19:46:09 +00:00
* This information is based off the released idl files from opengroup .
* ftp : //ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/fsint/afs4int.idl
*
2004-07-18 00:24:25 +00:00
* $ Id $
2002-11-08 19:46:09 +00:00
*
2006-05-21 04:49:01 +00:00
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
2002-11-08 19:46:09 +00:00
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
# ifdef HAVE_CONFIG_H
# include "config.h"
# endif
# ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
# endif
# include <glib.h>
# include <epan/packet.h>
# include "packet-dcerpc.h"
2004-01-27 03:55:24 +00:00
# include "packet-dcerpc-dce122.h"
2002-11-08 19:46:09 +00:00
2004-01-27 03:55:24 +00:00
# define AFS_SETMODTIME 1
# define AFS_SETOWNER 2
# define AFS_SETGROUP 4
# define AFS_SETMODE 8
# define AFS_SETACCESSTIME 0x10
# define AFS_SETCHANGETIME 0x20
# define AFS_SETLENGTH 0x40
# define AFS_SETTYPEUUID 0x80
# define AFS_SETDEVNUM 0x100
# define AFS_SETMODEXACT 0x200
# define AFS_SETTRUNCLENGTH 0x400
# define AFS_SETCLIENTSPARE 0x800
# define TKN_LOCK_READ 0x001
# define TKN_LOCK_WRITE 0x002
# define TKN_DATA_READ 0x004
# define TKN_DATA_WRITE 0x008
# define TKN_OPEN_READ 0x010
# define TKN_OPEN_WRITE 0x020
# define TKN_OPEN_SHARED 0x040
# define TKN_OPEN_EXCLUSIVE 0x080
# define TKN_OPEN_DELETE 0x100
# define TKN_OPEN_PRESERVE 0x200
# define TKN_STATUS_READ 0x400
# define TKN_STATUS_WRITE 0x800
# define TKN_OPEN_UNLINK 0x1000
# define TKN_SPOT_HERE 0x2000
# define TKN_SPOT_THERE 0x4000
# define TKN_OPEN_NO_READ 0x8000
# define TKN_OPEN_NO_WRITE 0x10000
# define TKN_OPEN_NO_UNLINK 0x20000
# define AFS_CONN_PARAM_HOSTLIFE 0
# define AFS_CONN_PARAM_HOSTRPC 1
# define AFS_CONN_PARAM_DEADSERVER 2
# define AFS_CONN_PARAM_EPOCH 3
# define AFS_CONN_PARAM_MAXFILE_CLIENT 4
# define AFS_CONN_PARAM_MAXFILE_SERVER 5
# define AFS_CONN_PARAM_HOST_TYPE_CLIENT 6
# define AFS_CONN_PARAM_HOST_TYPE_SERVER 7
# define AFS_CONN_PARAM_FT_MASK_CLIENT 8
# define AFS_CONN_PARAM_FT_MASK_SERVER 9
# define AFS_CONN_PARAM_SUPPORTS_64BITS 0x10000
# define AFS_CONN_PARAM_512BYTE_BLOCKS 0x20000
# define AFS_FLAG_SEC_SERVICE 0x1
# define AFS_FLAG_CONTEXT_NEW_IF 0x2
# define AFS_FLAG_CONTEXT_DO_RESET 0x4
# define AFS_FLAG_CONTEXT_NEW_ACL_IF 0x8
# define AFS_FLAG_CONTEXT_NEW_TKN_TYPES 0x10
# define AFS_FLAG_RETURNTOKEN 1
# define AFS_FLAG_TOKENJUMPQUEUE 2
# define AFS_FLAG_SKIPTOKEN 4
# define AFS_FLAG_NOOPTIMISM 0x8
# define AFS_FLAG_TOKENID 0x10
# define AFS_FLAG_RETURNBLOCKER 0x20
# define AFS_FLAG_ASYNCGRANT 0x40
# define AFS_FLAG_NOREVOKE 0x80
# define AFS_FLAG_MOVE_REESTABLISH 0x100
# define AFS_FLAG_SERVER_REESTABLISH 0x200
# define AFS_FLAG_NO_NEW_EPOCH 0x400
# define AFS_FLAG_MOVE_SOURCE_OK 0x800
# define AFS_FLAG_SYNC 0x1000
# define AFS_FLAG_ZERO 0x2000
# define AFS_FLAG_SKIPSTATUS 0x4000
# define AFS_FLAG_FORCEREVOCATIONS 0x8000
# define AFS_FLAG_FORCEVOLQUIESCE 0x10000
# define AFS_FLAG_FORCEREVOCATIONDOWN 0x20000
2002-11-08 19:46:09 +00:00
2007-09-07 22:11:01 +00:00
static int hf_fileexp_opnum = - 1 ;
static int hf_fileexp_afsFid_cell_high = - 1 ;
static int hf_fileexp_afsuuid_uuid = - 1 ;
static int hf_fileexp_fetchdata_pipe_t_size = - 1 ;
static int hf_fileexp_afsNameString_t_principalName_string = - 1 ;
static int hf_fileexp_afsFid_cell_low = - 1 ;
static int hf_fileexp_afsFid_volume_high = - 1 ;
static int hf_fileexp_afsFid_volume_low = - 1 ;
static int hf_fileexp_afsFid_Vnode = - 1 ;
static int hf_fileexp_afsFid_Unique = - 1 ;
static int hf_fileexp_interfaceversion = - 1 ;
static int hf_fileexp_filetype = - 1 ;
static int hf_fileexp_linkcount = - 1 ;
static int hf_fileexp_length_high = - 1 ;
static int hf_fileexp_length_low = - 1 ;
static int hf_fileexp_dataversion_high = - 1 ;
static int hf_fileexp_dataversion_low = - 1 ;
static int hf_fileexp_author = - 1 ;
static int hf_fileexp_owner = - 1 ;
static int hf_fileexp_group = - 1 ;
static int hf_fileexp_calleraccess = - 1 ;
static int hf_fileexp_anonymousaccess = - 1 ;
static int hf_fileexp_aclexpirationtime = - 1 ;
static int hf_fileexp_mode = - 1 ;
static int hf_fileexp_parentvnode = - 1 ;
static int hf_fileexp_parentunique = - 1 ;
static int hf_fileexp_modtime_sec = - 1 ;
static int hf_fileexp_modtime_msec = - 1 ;
static int hf_fileexp_changetime_sec = - 1 ;
static int hf_fileexp_changetime_msec = - 1 ;
static int hf_fileexp_accesstime_sec = - 1 ;
static int hf_fileexp_accesstime_msec = - 1 ;
static int hf_fileexp_servermodtime_sec = - 1 ;
static int hf_fileexp_servermodtime_msec = - 1 ;
static int hf_fileexp_typeuuid = - 1 ;
static int hf_fileexp_objectuuid = - 1 ;
static int hf_fileexp_devicenumber = - 1 ;
static int hf_fileexp_blocksused = - 1 ;
static int hf_fileexp_clientspare1 = - 1 ;
static int hf_fileexp_devicenumberhighbits = - 1 ;
static int hf_fileexp_agtypeunique = - 1 ;
static int hf_fileexp_himaxspare = - 1 ;
static int hf_fileexp_lomaxspare = - 1 ;
static int hf_fileexp_pathconfspare = - 1 ;
static int hf_fileexp_spare4 = - 1 ;
static int hf_fileexp_spare5 = - 1 ;
static int hf_fileexp_spare6 = - 1 ;
static int hf_fileexp_volid_hi = - 1 ;
static int hf_fileexp_volid_low = - 1 ;
static int hf_fileexp_vvage = - 1 ;
static int hf_fileexp_vv_hi = - 1 ;
static int hf_fileexp_vv_low = - 1 ;
static int hf_fileexp_vvpingage = - 1 ;
static int hf_fileexp_vvspare1 = - 1 ;
static int hf_fileexp_vvspare2 = - 1 ;
static int hf_fileexp_beginrange = - 1 ;
static int hf_fileexp_beginrangeext = - 1 ;
static int hf_fileexp_endrange = - 1 ;
static int hf_fileexp_endrangeext = - 1 ;
static int hf_fileexp_expirationtime = - 1 ;
static int hf_fileexp_tokenid_hi = - 1 ;
static int hf_fileexp_tokenid_low = - 1 ;
static int hf_fileexp_type_hi = - 1 ;
static int hf_fileexp_type_low = - 1 ;
static int hf_fileexp_tn_length = - 1 ;
static int hf_fileexp_storestatus_accesstime_sec = - 1 ;
static int hf_fileexp_storestatus_accesstime_usec = - 1 ;
static int hf_fileexp_storestatus_changetime_sec = - 1 ;
static int hf_fileexp_storestatus_changetime_usec = - 1 ;
static int hf_fileexp_storestatus_clientspare1 = - 1 ;
static int hf_fileexp_storestatus_cmask = - 1 ;
static int hf_fileexp_storestatus_devicenumber = - 1 ;
static int hf_fileexp_storestatus_devicenumberhighbits = - 1 ;
static int hf_fileexp_storestatus_devicetype = - 1 ;
static int hf_fileexp_storestatus_group = - 1 ;
static int hf_fileexp_storestatus_length_high = - 1 ;
static int hf_fileexp_storestatus_length_low = - 1 ;
static int hf_fileexp_storestatus_mask = - 1 ;
static int hf_fileexp_storestatus_mode = - 1 ;
static int hf_fileexp_storestatus_modtime_sec = - 1 ;
static int hf_fileexp_storestatus_modtime_usec = - 1 ;
static int hf_fileexp_storestatus_owner = - 1 ;
static int hf_fileexp_storestatus_spare1 = - 1 ;
static int hf_fileexp_storestatus_spare2 = - 1 ;
static int hf_fileexp_storestatus_spare3 = - 1 ;
static int hf_fileexp_storestatus_spare4 = - 1 ;
static int hf_fileexp_storestatus_spare5 = - 1 ;
static int hf_fileexp_storestatus_spare6 = - 1 ;
static int hf_fileexp_storestatus_trunc_high = - 1 ;
2004-01-27 03:55:24 +00:00
static int hf_afsconnparams_mask = - 1 ;
2007-09-07 22:11:01 +00:00
static int hf_fileexp_storestatus_trunc_low = - 1 ;
static int hf_fileexp_storestatus_typeuuid = - 1 ;
static int hf_fileexp_l_end_pos = - 1 ;
static int hf_fileexp_l_end_pos_ext = - 1 ;
static int hf_fileexp_l_fstype = - 1 ;
static int hf_fileexp_l_pid = - 1 ;
static int hf_fileexp_l_start_pos = - 1 ;
static int hf_fileexp_l_start_pos_ext = - 1 ;
static int hf_fileexp_l_sysid = - 1 ;
static int hf_fileexp_l_type = - 1 ;
static int hf_fileexp_l_whence = - 1 ;
static int hf_fileexp_acl_len = - 1 ;
static int hf_fileexp_setcontext_rqst_epochtime = - 1 ;
static int hf_fileexp_setcontext_rqst_clientsizesattrs = - 1 ;
static int hf_fileexp_setcontext_rqst_parm7 = - 1 ;
static int hf_fileexp_afsNetAddr_type = - 1 ;
static int hf_fileexp_afsNetAddr_data = - 1 ;
static int hf_fileexp_returntokenidp_high = - 1 ;
static int hf_fileexp_minvvp_low = - 1 ;
static int hf_fileexp_position_high = - 1 ;
static int hf_fileexp_position_low = - 1 ;
static int hf_fileexp_offsetp_high = - 1 ;
static int hf_fileexp_nextoffsetp_low = - 1 ;
static int hf_fileexp_cellidp_high = - 1 ;
2004-01-27 03:55:24 +00:00
static int hf_afserrorstatus_st = - 1 ;
2007-09-07 22:11:01 +00:00
static int hf_fileexp_length = - 1 ;
2004-01-27 03:55:24 +00:00
static int hf_afsconnparams_values = - 1 ;
2007-09-07 22:11:01 +00:00
static int hf_fileexp_acltype = - 1 ;
static int hf_fileexp_afsTaggedPath_tp_chars = - 1 ;
static int hf_fileexp_afsTaggedPath_tp_tag = - 1 ;
static int hf_fileexp_afsacl_uuid1 = - 1 ;
static int hf_fileexp_bulkfetchstatus_size = - 1 ;
static int hf_fileexp_flags = - 1 ;
static int hf_fileexp_afsreturndesc_tokenid_high = - 1 ;
static int hf_fileexp_afsreturndesc_tokenid_low = - 1 ;
static int hf_fileexp_afsreturndesc_type_high = - 1 ;
static int hf_fileexp_afsreturndesc_type_low = - 1 ;
static int hf_fileexp_returntokenidp_low = - 1 ;
static int hf_fileexp_minvvp_high = - 1 ;
static int hf_fileexp_offsetp_low = - 1 ;
static int hf_fileexp_nextoffsetp_high = - 1 ;
static int hf_fileexp_cellidp_low = - 1 ;
static int hf_fileexp_tn_tag = - 1 ;
static int hf_fileexp_tn_string = - 1 ;
static int hf_fileexp_bulkfetchvv_numvols = - 1 ;
static int hf_fileexp_bulkfetchvv_spare1 = - 1 ;
static int hf_fileexp_bulkfetchvv_spare2 = - 1 ;
static int hf_fileexp_bulkkeepalive_numexecfids = - 1 ;
static int hf_fileexp_bulkkeepalive_spare4 = - 1 ;
static int hf_fileexp_bulkkeepalive_spare2 = - 1 ;
static int hf_fileexp_bulkkeepalive_spare1 = - 1 ;
static int hf_fileexp_afsacl_defaultcell_uuid = - 1 ;
static int hf_fileexp_gettime_syncdispersion = - 1 ;
static int hf_fileexp_gettime_syncdistance = - 1 ;
static int hf_fileexp_gettime_usecondsp = - 1 ;
static int hf_fileexp_readdir_size = - 1 ;
static int hf_fileexp_afsNameString_t_principalName_size = - 1 ;
static int hf_fileexp_afsTaggedPath_tp_length = - 1 ;
static int hf_fileexp_fstype = - 1 ;
static int hf_fileexp_gettime_secondsp = - 1 ;
static int proto_fileexp = - 1 ;
static gint ett_fileexp = - 1 ;
static gint ett_fileexp_afsFid = - 1 ;
static gint ett_fileexp_afsReturnDesc = - 1 ;
static gint ett_fileexp_afsNetAddr = - 1 ;
static gint ett_fileexp_fetchstatus = - 1 ;
static gint ett_fileexp_afsflags = - 1 ;
static gint ett_fileexp_volsync = - 1 ;
static gint ett_fileexp_minvvp = - 1 ;
static gint ett_fileexp_afsfidtaggedname = - 1 ;
static gint ett_fileexp_afstaggedname = - 1 ;
static gint ett_fileexp_afstoken = - 1 ;
static gint ett_fileexp_afsstorestatus = - 1 ;
static gint ett_fileexp_afsRecordLock = - 1 ;
static gint ett_fileexp_afsAcl = - 1 ;
static gint ett_fileexp_afsNameString_t = - 1 ;
static gint ett_fileexp_afsConnParams = - 1 ;
static gint ett_fileexp_afsErrorStatus = - 1 ;
static gint ett_fileexp_afsNetData = - 1 ;
static gint ett_fileexp_afsTaggedPath = - 1 ;
static gint ett_fileexp_afsBulkStat = - 1 ;
static gint ett_fileexp_afsuuid = - 1 ;
static gint ett_fileexp_offsetp = - 1 ;
static gint ett_fileexp_returntokenidp = - 1 ;
static gint ett_fileexp_afsbundled_stat = - 1 ;
2004-01-27 03:55:24 +00:00
/* vars for our macro(s) */
2004-03-09 09:24:41 +00:00
static int hf_error_st = - 1 ;
2004-01-27 03:55:24 +00:00
2007-09-07 22:11:01 +00:00
static e_uuid_t uuid_fileexp =
2004-01-27 03:55:24 +00:00
{ 0x4d37f2dd , 0xed93 , 0x0000 , { 0x02 , 0xc0 , 0x37 , 0xcf , 0x1e , 0x00 , 0x00 ,
0x00 }
} ;
2007-09-07 22:11:01 +00:00
static guint16 ver_fileexp = 4 ;
2004-01-27 03:55:24 +00:00
/* XXX the only macro that I could not find the right way to convert easily.
The reason is because we reset col_info if st is non zero for many rpcs .
This is because on error , many structures are filled with garbage .
We end up not knowing if data is valid until we get the st var at the very end of the stubdata . .
We can not just jump to the end , because more often than not an extra buffer exists in payload
2010-09-27 19:05:43 +00:00
after st . Thus we have to advance on each item until we read in ST , then we clear col_info . on error
2004-01-27 03:55:24 +00:00
A good example is FetchStatus ( ) on a file that returns ENOEXIST .
inode , volume , etc all will be garbage .
*/
# define MACRO_ST_CLEAR(name) \
2005-06-26 19:56:52 +00:00
{ \
guint32 st ; \
const char * st_str ; \
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_error_st , & st ) ; \
2010-10-13 17:56:05 +00:00
st_str = val_to_str_ext ( st , & dce_error_vals_ext , " %u " ) ; \
2005-06-26 19:56:52 +00:00
if ( st ) { \
if ( check_col ( pinfo - > cinfo , COL_INFO ) ) \
col_add_fstr ( pinfo - > cinfo , COL_INFO , " %s st:%s " , name , st_str ) ; \
} else { \
if ( check_col ( pinfo - > cinfo , COL_INFO ) ) \
col_append_fstr ( pinfo - > cinfo , COL_INFO , " st:%s " , st_str ) ; \
} \
}
2004-01-27 03:55:24 +00:00
static int
dissect_afsFid ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/*
afsHyper Cell ;
afsHyper Volume ;
unsigned32 Vnode ;
unsigned32 Unique ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 volume_low , unique , vnode , inode ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsFid: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsFid ) ;
2004-01-27 03:55:24 +00:00
}
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_cell_high , NULL ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_cell_low , NULL ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_volume_high , NULL ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_volume_low , & volume_low ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_Vnode , & vnode ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsFid_Unique , & unique ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :FSID:%u " , volume_low ) ;
if ( ( vnode = = 1 ) | | ( vnode = = 2 ) )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " InFS " ) ;
2004-01-27 03:55:24 +00:00
}
else
{
inode = ( ( volume_low < < 16 ) + vnode ) & 0x7fffffff ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " inode:%u " , inode ) ;
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsConnParams ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
unsigned32 Mask ;
unsigned32 Values [ 20 ] ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 mask , Values [ 20 ] ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item =
proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsConnParams_t: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsConnParams ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_mask , & mask ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 0 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 1 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 2 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 3 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 4 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 5 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 6 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 7 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2010-12-28 20:19:41 +00:00
hf_afsconnparams_values , & Values [ 8 ] ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 9 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 10 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 11 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 12 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 13 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 14 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 15 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 16 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 17 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 18 ] ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
hf_afsconnparams_values , & Values [ 19 ] ) ;
if ( ( mask & AFS_CONN_PARAM_HOSTLIFE ) = = AFS_CONN_PARAM_HOSTLIFE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :HOSTLIFE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_HOSTRPC ) = = AFS_CONN_PARAM_HOSTRPC )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :HOSTRPC " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_DEADSERVER ) = = AFS_CONN_PARAM_DEADSERVER )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :DEADSERVER " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_EPOCH ) = = AFS_CONN_PARAM_EPOCH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :EPOCH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_MAXFILE_CLIENT ) = = AFS_CONN_PARAM_MAXFILE_CLIENT )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :MAXFILE_CLIENT " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_MAXFILE_SERVER ) = = AFS_CONN_PARAM_MAXFILE_SERVER )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :MAXFILE_SERVER " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_HOST_TYPE_CLIENT ) = =
AFS_CONN_PARAM_HOST_TYPE_CLIENT )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :HOST_TYPE_CLIENT " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_HOST_TYPE_SERVER ) = =
AFS_CONN_PARAM_HOST_TYPE_SERVER )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :HOST_TYPE_SERVER " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_FT_MASK_CLIENT ) = = AFS_CONN_PARAM_FT_MASK_CLIENT )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :FT_MASK_CLIENT " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_FT_MASK_SERVER ) = = AFS_CONN_PARAM_FT_MASK_SERVER )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :FT_MASK_SERVER " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_SUPPORTS_64BITS ) = =
AFS_CONN_PARAM_SUPPORTS_64BITS )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SUPPORTS_64BITS " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_CONN_PARAM_512BYTE_BLOCKS ) = = AFS_CONN_PARAM_512BYTE_BLOCKS )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :512BYTE_BLOCKS " ) ;
2004-01-27 03:55:24 +00:00
}
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" Values:%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u " ,
Values [ 0 ] , Values [ 1 ] , Values [ 2 ] , Values [ 3 ] ,
Values [ 4 ] , Values [ 5 ] , Values [ 6 ] , Values [ 7 ] , Values [ 8 ] ,
Values [ 9 ] , Values [ 10 ] , Values [ 11 ] , Values [ 12 ] ,
Values [ 13 ] , Values [ 14 ] , Values [ 15 ] , Values [ 16 ] ,
Values [ 17 ] , Values [ 18 ] , Values [ 19 ] ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsNameString_t ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
typedef [ string ] byte NameString_t [ AFS_NAMEMAX ] ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
# define AFS_NAMEMAX 256
guint32 string_size ;
const guint8 * namestring ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item =
proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsNameString_t: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsNameString_t ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsNameString_t_principalName_size ,
2004-01-27 03:55:24 +00:00
& string_size ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " String_size:%u " , string_size ) ;
if ( string_size < AFS_NAMEMAX )
{
2011-10-15 18:46:26 +00:00
proto_tree_add_item ( tree , hf_fileexp_afsNameString_t_principalName_string , tvb , offset , string_size , ENC_ASCII | ENC_NA ) ;
2011-01-12 03:19:07 +00:00
namestring = tvb_get_ephemeral_string ( tvb , offset , string_size ) ;
2004-01-27 03:55:24 +00:00
offset + = string_size ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Principal:%s " , namestring ) ;
}
else
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" :FIXME!: Invalid string length of %u " ,
string_size ) ;
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsNetAddr ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/* unsigned16 type;
unsigned8 data [ 14 ] ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint16 type ;
guint8 data ;
int i ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsNetAddr: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsNetAddr ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsNetAddr_type , & type ) ;
2004-01-27 03:55:24 +00:00
if ( type )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Type:%u " , type ) ;
for ( i = 0 ; i < 14 ; i + + )
{
offset =
dissect_ndr_uint8 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsNetAddr_data , & data ) ;
2004-01-27 03:55:24 +00:00
switch ( i )
{
case 1 :
if ( data )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Port:%u " ,
data ) ;
}
break ;
case 2 :
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " IP:%u. " , data ) ;
break ;
case 3 :
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " %u. " , data ) ;
break ;
case 4 :
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " %u. " , data ) ;
break ;
case 5 :
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " %u " , data ) ;
break ;
}
}
}
else
{
offset + = 14 ; /* space left after reading in type for the array. */
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsNetData ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
2010-09-27 19:05:43 +00:00
/*
2004-01-27 03:55:24 +00:00
afsNetAddr sockAddr ;
NameString_t principalName ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item =
proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsNetData: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsNetData ) ;
2004-01-27 03:55:24 +00:00
}
offset = dissect_afsNetAddr ( tvb , offset , pinfo , tree , drep ) ;
offset + = 4 ; /* buffer */
offset = dissect_afsNameString_t ( tvb , offset , pinfo , tree , drep ) ;
2010-09-27 19:05:43 +00:00
proto_item_set_len ( item , offset - old_offset ) ;
2004-01-27 03:55:24 +00:00
return offset ;
}
static int
dissect_afsTaggedPath ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
codesetTag tp_tag ;
unsigned16 tp_length ;
byte tp_chars [ AFS_PATHMAX + 1 ] ; 1024 + 1
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 tp_tag ;
guint16 tp_length ;
const guint8 * tp_chars ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item =
proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsTaggedPath " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsTaggedPath ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsTaggedPath_tp_tag , & tp_tag ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsTaggedPath_tp_length , & tp_length ) ;
2011-01-12 03:19:07 +00:00
proto_tree_add_item ( tree , hf_fileexp_afsTaggedPath_tp_chars , tvb , offset ,
2011-10-15 18:46:26 +00:00
tp_length , ENC_ASCII | ENC_NA ) ;
2011-01-12 03:19:07 +00:00
tp_chars = tvb_get_ephemeral_string ( tvb , offset , 1025 ) ;
2004-01-27 03:55:24 +00:00
offset + = 1025 ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :tp_chars %s " , tp_chars ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsAcl ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
2010-09-27 19:05:43 +00:00
/*
2004-01-27 03:55:24 +00:00
unsigned32 afsACL_len ;
[ length_is ( afsACL_len ) ] byte afsACL_val [ AFS_ACLMAX ] ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 acl_len ;
e_uuid_t uuid1 , defaultcell ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsAcl " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsAcl ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_acl_len ,
2004-01-27 03:55:24 +00:00
& acl_len ) ;
offset + = 8 ; /* bypass spare and duplicate acl_len */
offset =
dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsacl_uuid1 , & uuid1 ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x " ,
uuid1 . Data1 , uuid1 . Data2 , uuid1 . Data3 , uuid1 . Data4 [ 0 ] ,
uuid1 . Data4 [ 1 ] , uuid1 . Data4 [ 2 ] , uuid1 . Data4 [ 3 ] ,
uuid1 . Data4 [ 4 ] , uuid1 . Data4 [ 5 ] , uuid1 . Data4 [ 6 ] ,
uuid1 . Data4 [ 7 ] ) ;
offset =
dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsacl_defaultcell_uuid , & defaultcell ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x " ,
defaultcell . Data1 , defaultcell . Data2 , defaultcell . Data3 ,
defaultcell . Data4 [ 0 ] , defaultcell . Data4 [ 1 ] ,
defaultcell . Data4 [ 2 ] , defaultcell . Data4 [ 3 ] ,
defaultcell . Data4 [ 4 ] , defaultcell . Data4 [ 5 ] ,
defaultcell . Data4 [ 6 ] , defaultcell . Data4 [ 7 ] ) ;
offset + = ( acl_len - 38 ) ;
2005-09-19 17:50:38 +00:00
if ( offset < = old_offset )
THROW ( ReportedBoundsError ) ;
2010-09-27 19:05:43 +00:00
proto_item_set_len ( item , offset - old_offset ) ;
2004-01-27 03:55:24 +00:00
return offset ;
}
static int
dissect_afsErrorStatus ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 st ;
dcerpc_info * di ;
2005-06-26 19:56:52 +00:00
const char * st_str ;
2004-01-27 03:55:24 +00:00
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsErrorStatus " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsErrorStatus ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_afserrorstatus_st ,
& st ) ;
2010-10-13 17:56:05 +00:00
st_str = val_to_str_ext ( st , & dce_error_vals_ext , " %u " ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " st:%s " , st_str ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsRecordLock ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
signed16 l_type ;
signed16 l_whence ;
unsigned32 l_start_pos ;
unsigned32 l_end_pos ;
unsigned32 l_pid ;
unsigned32 l_sysid ;
unsigned32 l_fstype ;
unsigned32 l_start_pos_ext ; was l_spare0 : high 32 b of l_start_pos
unsigned32 l_end_pos_ext ; was l_spare1 : high 32 b of l_end_pos
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint16 l_type , l_whence ;
guint32 l_start_pos , l_end_pos , l_pid , l_sysid , l_fstype , l_start_pos_ext ,
l_end_pos_ext ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsRecordLock: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsRecordLock ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_type ,
2004-01-27 03:55:24 +00:00
& l_type ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_whence ,
2004-01-27 03:55:24 +00:00
& l_whence ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_l_start_pos , & l_start_pos ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_end_pos ,
2004-01-27 03:55:24 +00:00
& l_end_pos ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_pid ,
2004-01-27 03:55:24 +00:00
& l_pid ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_sysid ,
2004-01-27 03:55:24 +00:00
& l_sysid ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_l_fstype ,
2004-01-27 03:55:24 +00:00
& l_fstype ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_l_start_pos_ext , & l_start_pos_ext ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_l_end_pos_ext , & l_end_pos_ext ) ;
2004-01-27 03:55:24 +00:00
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsstorestatus ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
unsigned32 mask ;
afsTimeval modTime ;
afsTimeval accessTime ;
afsTimeval changeTime ;
unsigned32 owner ;
unsigned32 group ;
unsigned32 mode ;
2010-09-27 19:05:43 +00:00
afsHyper truncLength ; applied first
2004-01-27 03:55:24 +00:00
afsHyper length ;
afsUUID typeUUID ;
2010-09-27 19:05:43 +00:00
unsigned32 deviceType ; character or block
2004-01-27 03:55:24 +00:00
unsigned32 deviceNumber ;
unsigned32 cmask ;
2010-09-27 19:05:43 +00:00
unsigned32 clientSpare1 ; client - only attrs
2004-01-27 03:55:24 +00:00
unsigned32 deviceNumberHighBits ;
unsigned32 spare1 ;
unsigned32 spare2 ;
unsigned32 spare3 ;
unsigned32 spare4 ;
unsigned32 spare5 ;
unsigned32 spare6 ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 mask , modtime_sec , changetime_sec , accesstime_sec , devicenumber ,
clientspare1 , devicenumberhighbits , spare1 , spare2 , spare3 , spare4 ,
spare5 , spare6 , accesstime_usec , changetime_usec , owner , group , mode ,
trunc_high , trunc_low , length_high , length_low , devicetype ,
cmask , modtime_usec ;
e_uuid_t typeuuid ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsStoreStatus: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsstorestatus ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_mask , & mask ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_modtime_sec , & modtime_sec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_modtime_usec , & modtime_usec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_accesstime_sec ,
2004-01-27 03:55:24 +00:00
& accesstime_sec ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_accesstime_usec ,
2004-01-27 03:55:24 +00:00
& accesstime_usec ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_changetime_sec ,
2004-01-27 03:55:24 +00:00
& changetime_sec ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_changetime_usec ,
2004-01-27 03:55:24 +00:00
& changetime_usec ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_owner , & owner ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_group , & group ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_mode , & mode ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_trunc_high , & trunc_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_trunc_low , & trunc_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_length_high , & length_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_length_low , & length_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_typeuuid , & typeuuid ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_devicetype , & devicetype ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_devicenumber , & devicenumber ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_cmask , & cmask ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_clientspare1 , & clientspare1 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_devicenumberhighbits ,
2004-01-27 03:55:24 +00:00
& devicenumberhighbits ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare1 , & spare1 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare2 , & spare2 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare3 , & spare3 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare4 , & spare4 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare5 , & spare5 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_storestatus_spare6 , & spare6 ) ;
2004-01-27 03:55:24 +00:00
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " Mask= " ) ;
2004-01-27 03:55:24 +00:00
if ( ( mask & AFS_SETMODTIME ) = = AFS_SETMODTIME )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETMODTIME-%u.%u " ,
modtime_sec , modtime_usec ) ;
}
if ( ( mask & AFS_SETOWNER ) = = AFS_SETOWNER )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETOWNER-%u " , owner ) ;
}
if ( ( mask & AFS_SETGROUP ) = = AFS_SETGROUP )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETGROUP-%u " , group ) ;
}
if ( ( mask & AFS_SETMODE ) = = AFS_SETMODE )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETMODE-%o " , mode ) ;
}
if ( ( mask & AFS_SETACCESSTIME ) = = AFS_SETACCESSTIME )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETACCESSTIME-%u.%u " ,
accesstime_sec , accesstime_usec ) ;
}
if ( ( mask & AFS_SETCHANGETIME ) = = AFS_SETCHANGETIME )
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :SETCHANGETIME-%u.%u " ,
changetime_sec , changetime_usec ) ;
}
if ( ( mask & AFS_SETLENGTH ) = = AFS_SETLENGTH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETLENGTH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_SETTYPEUUID ) = = AFS_SETTYPEUUID )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETTYPEUUID " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_SETDEVNUM ) = = AFS_SETDEVNUM )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETDEVNUM " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_SETMODEXACT ) = = AFS_SETMODEXACT )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETMODEXACT " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_SETTRUNCLENGTH ) = = AFS_SETTRUNCLENGTH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETTRUNCLENGTH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( mask & AFS_SETCLIENTSPARE ) = = AFS_SETCLIENTSPARE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SETCLIENTSPARE " ) ;
2004-01-27 03:55:24 +00:00
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afstoken ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/*
afsHyper tokenID ;
unsigned32 expirationTime ;
afsHyper type ;
unsigned32 beginRange ;
unsigned32 endRange ;
unsigned32 beginRangeExt ;
unsigned32 endRangeExt ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 tokenid_hi , tokenid_low , expirationtime , type_hi , type_low ,
beginrange , endrange , beginrangeext , endrangeext , type ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsToken: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afstoken ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_tokenid_hi ,
2004-01-27 03:55:24 +00:00
& tokenid_hi ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_tokenid_low , & tokenid_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_expirationtime , & expirationtime ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_type_hi ,
2004-01-27 03:55:24 +00:00
& type_hi ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_type_low ,
2004-01-27 03:55:24 +00:00
& type_low ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_beginrange ,
2004-01-27 03:55:24 +00:00
& beginrange ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_endrange ,
2004-01-27 03:55:24 +00:00
& endrange ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_beginrangeext , & beginrangeext ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_endrangeext , & endrangeext ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" :Tokenid:%u/%u ExpirationTime:%u beginrange:%u endrange:%u beginrangeext:%u endrangeext:%u " ,
tokenid_hi , tokenid_low , expirationtime , beginrange ,
endrange , beginrangeext , endrangeext ) ;
type = type_low ;
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " Type= " ) ;
2004-01-27 03:55:24 +00:00
if ( ( type & TKN_LOCK_READ ) = = TKN_LOCK_READ )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :LOCK_READ " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_LOCK_WRITE ) = = TKN_LOCK_WRITE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :LOCK_WRITE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_DATA_READ ) = = TKN_DATA_READ )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :DATA_READ " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_DATA_WRITE ) = = TKN_DATA_WRITE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :DATA_WRITE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_READ ) = = TKN_OPEN_READ )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_READ " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_WRITE ) = = TKN_OPEN_WRITE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_WRITE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_SHARED ) = = TKN_OPEN_SHARED )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_SHARED " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_EXCLUSIVE ) = = TKN_OPEN_EXCLUSIVE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_EXCLUSIVE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_DELETE ) = = TKN_OPEN_DELETE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_DELETE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_PRESERVE ) = = TKN_OPEN_PRESERVE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_PRESERVE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_STATUS_READ ) = = TKN_STATUS_READ )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :STATUS_READ " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_STATUS_WRITE ) = = TKN_STATUS_WRITE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :STATUS_WRITE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_UNLINK ) = = TKN_OPEN_UNLINK )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_UNLINK " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_SPOT_HERE ) = = TKN_SPOT_HERE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SPOT_HERE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_SPOT_THERE ) = = TKN_SPOT_THERE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SPOT_THERE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_NO_READ ) = = TKN_OPEN_NO_READ )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_NO_READ " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_NO_WRITE ) = = TKN_OPEN_NO_WRITE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_NO_WRITE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( type & TKN_OPEN_NO_UNLINK ) = = TKN_OPEN_NO_UNLINK )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :OPEN_NO_UNLINK " ) ;
2004-01-27 03:55:24 +00:00
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afstaggedname ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
codesetTag tn_tag ;
unsigned16 tn_length ;
byte tn_chars [ AFS_NAMEMAX + 1 ] ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 tn_tag ;
guint16 tn_length ;
const guint8 * tn_string ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsTaggedName: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afstaggedname ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_tn_tag ,
2004-01-27 03:55:24 +00:00
& tn_tag ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep , hf_fileexp_tn_length ,
2004-01-27 03:55:24 +00:00
& tn_length ) ;
if ( tn_length < 254 )
{
2011-01-12 03:19:07 +00:00
proto_tree_add_item ( tree , hf_fileexp_tn_string , tvb , offset ,
2011-10-15 18:46:26 +00:00
tn_length , ENC_ASCII | ENC_NA ) ;
2011-01-12 03:19:07 +00:00
tn_string = tvb_get_ephemeral_string ( tvb , offset , 257 ) ;
2004-01-27 03:55:24 +00:00
offset + = 257 ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " :tn_tag: %s " , tn_string ) ;
}
else
{
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" :FIXME!: Invalid string length of %u " , tn_length ) ;
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsfidtaggedname ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
afsFid fid ;
afsTaggedName name ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" FidTaggedName: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsfidtaggedname ) ;
2004-01-27 03:55:24 +00:00
}
offset = dissect_afsFid ( tvb , offset , pinfo , tree , drep ) ;
offset = dissect_afstaggedname ( tvb , offset , pinfo , tree , drep ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_minvvp ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/* unsigned32 minvvp_high
unsigned32 minvvp_low
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 minvvp_high , minvvp_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " minVVp: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_minvvp ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_minvvp_high , & minvvp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_minvvp_low ,
2004-01-27 03:55:24 +00:00
& minvvp_low ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " minVVp:%u/%u " , minvvp_high ,
minvvp_low ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsuuid ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/* uuid UUID
*/
/*HEREN*/
e_uuid_t uuid1 ;
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsUUID: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsuuid ) ;
2004-01-27 03:55:24 +00:00
}
2007-09-07 22:11:01 +00:00
offset = dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep , hf_fileexp_afsuuid_uuid , & uuid1 ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) ) col_append_fstr ( pinfo - > cinfo , COL_INFO , " :%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x " , uuid1 . Data1 , uuid1 . Data2 , uuid1 . Data3 , uuid1 . Data4 [ 0 ] , uuid1 . Data4 [ 1 ] , uuid1 . Data4 [ 2 ] , uuid1 . Data4 [ 3 ] , uuid1 . Data4 [ 4 ] , uuid1 . Data4 [ 5 ] , uuid1 . Data4 [ 6 ] , uuid1 . Data4 [ 7 ] ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_offsetp ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/* unsigned32 offsetp_high
unsigned32 offsetp_low
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 offsetp_high , offsetp_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " minVVp: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_offsetp ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_offsetp_high , & offsetp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_offsetp_low ,
2004-01-27 03:55:24 +00:00
& offsetp_low ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " offsetp:%u/%u " , offsetp_high ,
offsetp_low ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_returntokenidp ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/* unsigned32 returntokenidp_high
unsigned32 returntokenidp_low
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 returntokenidp_high , returntokenidp_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " returnTokenIDp: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_returntokenidp ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_returntokenidp_high , & returntokenidp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_returntokenidp_low ,
2004-01-27 03:55:24 +00:00
& returntokenidp_low ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " returnTokenIDp:%u/%u " , returntokenidp_high ,
returntokenidp_low ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_volsync ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/*
afsHyper VolID ;
2010-09-27 19:05:43 +00:00
afsHyper VV ; volume ' s version
2004-01-27 03:55:24 +00:00
unsigned32 VVAge ; age , in seconds , of the knowledge that the
2010-09-27 19:05:43 +00:00
given VolVers is current
2004-01-27 03:55:24 +00:00
unsigned32 VVPingAge ; age , in seconds , of the last probe from
2010-09-27 19:05:43 +00:00
the callee ( the secondary ) to the primary
2004-01-27 03:55:24 +00:00
unsigned32 vv_spare1 ;
unsigned32 vv_spare2 ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 volid_hi , volid_low , vv_hi , vv_low , vvage , vvpingage , vvspare1 ,
vvspare2 ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" AfsVolSync: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_volsync ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_volid_hi ,
2004-01-27 03:55:24 +00:00
& volid_hi ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_volid_low ,
2004-01-27 03:55:24 +00:00
& volid_low ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vv_hi ,
2004-01-27 03:55:24 +00:00
& vv_hi ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vv_low ,
2004-01-27 03:55:24 +00:00
& vv_low ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vvage ,
2004-01-27 03:55:24 +00:00
& vvage ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vvpingage ,
2004-01-27 03:55:24 +00:00
& vvpingage ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vvspare1 ,
2004-01-27 03:55:24 +00:00
& vvspare1 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_vvspare2 ,
2004-01-27 03:55:24 +00:00
& vvspare2 ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" volid_hi:%u volid_low:%u vv_hi:%u vv_low:%u vvage:%u vvpingage:%u vvpspare1:%u vvspare2:%u " ,
volid_hi , volid_low , vv_hi , vv_low , vvage , vvpingage ,
vvspare1 , vvspare2 ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsFlags ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep )
{
/*
2010-09-27 19:05:43 +00:00
unsigned32 flags
2004-01-27 03:55:24 +00:00
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 flags ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " AfsFlags: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsflags ) ;
2004-01-27 03:55:24 +00:00
}
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_flags ,
2004-01-27 03:55:24 +00:00
& flags ) ;
if ( flags )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " Flags= " ) ;
2004-01-27 03:55:24 +00:00
if ( ( flags & AFS_FLAG_RETURNTOKEN ) = = AFS_FLAG_RETURNTOKEN )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :RETURNTOKEN " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_TOKENJUMPQUEUE ) = = AFS_FLAG_TOKENJUMPQUEUE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :TOKENJUMPQUEUE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_SKIPTOKEN ) = = AFS_FLAG_SKIPTOKEN )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SKIPTOKEN " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_NOOPTIMISM ) = = AFS_FLAG_NOOPTIMISM )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :NOOPTIMISM " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_TOKENID ) = = AFS_FLAG_TOKENID )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :TOKENID " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_RETURNBLOCKER ) = = AFS_FLAG_RETURNBLOCKER )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :RETURNBLOCKER " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_ASYNCGRANT ) = = AFS_FLAG_ASYNCGRANT )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :ASYNCGRANT " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_NOREVOKE ) = = AFS_FLAG_NOREVOKE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :NOREVOKE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_MOVE_REESTABLISH ) = = AFS_FLAG_MOVE_REESTABLISH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :MOVE_REESTABLISH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_SERVER_REESTABLISH ) = =
AFS_FLAG_SERVER_REESTABLISH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SERVER_REESTABLISH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_NO_NEW_EPOCH ) = = AFS_FLAG_NO_NEW_EPOCH )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :NO_NEW_EPOCH " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_MOVE_SOURCE_OK ) = = AFS_FLAG_MOVE_SOURCE_OK )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :MOVE_SOURCE_OK " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_SYNC ) = = AFS_FLAG_SYNC )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SYNC " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_ZERO ) = = AFS_FLAG_ZERO )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :ZERO " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_SKIPSTATUS ) = = AFS_FLAG_SKIPSTATUS )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SKIPSTATUS " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_FORCEREVOCATIONS ) = = AFS_FLAG_FORCEREVOCATIONS )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :FORCEREVOCATIONS " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_FORCEVOLQUIESCE ) = = AFS_FLAG_FORCEVOLQUIESCE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :FORCEVOLQUIESCE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_SEC_SERVICE ) = = AFS_FLAG_SEC_SERVICE )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :SEC_SERVICE " ) ;
2004-01-27 03:55:24 +00:00
}
if ( ( flags & AFS_FLAG_CONTEXT_NEW_ACL_IF ) = =
AFS_FLAG_CONTEXT_NEW_ACL_IF )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " :CONTEXT_NEW_ACL_IF " ) ;
2004-01-27 03:55:24 +00:00
}
}
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_fetchstatus ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
unsigned32 interfaceVersion ;
unsigned32 fileType ;
unsigned32 linkCount ;
afsHyper length ;
afsHyper dataVersion ;
unsigned32 author ;
unsigned32 owner ;
unsigned32 group ;
unsigned32 callerAccess ;
unsigned32 anonymousAccess ;
unsigned32 aclExpirationTime ;
unsigned32 mode ;
unsigned32 parentVnode ;
unsigned32 parentUnique ;
afsTimeval modTime ;
afsTimeval changeTime ;
afsTimeval accessTime ;
afsTimeval serverModTime ;
afsUUID typeUUID ;
afsUUID objectUUID ;
unsigned32 deviceNumber ;
unsigned32 blocksUsed ;
unsigned32 clientSpare1 ; * client - only attrs *
unsigned32 deviceNumberHighBits ;
unsigned32 spare0 ;
unsigned32 spare1 ;
unsigned32 spare2 ;
unsigned32 spare3 ;
unsigned32 spare4 ;
unsigned32 spare5 ;
unsigned32 spare6 ;
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 interfaceversion , filetype , linkcount , length_high , length_low ,
dataversion_high , dataversion_low , author , owner , group , calleraccess ,
anonymousaccess , aclexpirationtime , mode , parentvnode , parentunique ,
modtime_sec , modtime_msec , changetime_sec , changetime_msec ,
accesstime_sec , accesstime_msec , servermodtime_msec , servermodtime_sec ,
devicenumber , blocksused , clientspare1 , devicenumberhighbits ,
agtypeunique , himaxspare , lomaxspare , pathconfspare , spare4 , spare5 ,
spare6 ;
e_uuid_t typeuuid , objectuuid ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" FetchStatus: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_fetchstatus ) ;
2004-01-27 03:55:24 +00:00
}
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_interfaceversion , & interfaceversion ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_filetype ,
2004-01-27 03:55:24 +00:00
& filetype ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_linkcount ,
2004-01-27 03:55:24 +00:00
& linkcount ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_length_high , & length_high ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_length_low ,
2004-01-27 03:55:24 +00:00
& length_low ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_dataversion_high , & dataversion_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_dataversion_low , & dataversion_low ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_author ,
2004-01-27 03:55:24 +00:00
& author ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_owner ,
2004-01-27 03:55:24 +00:00
& owner ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_group ,
2004-01-27 03:55:24 +00:00
& group ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_calleraccess , & calleraccess ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_anonymousaccess , & anonymousaccess ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_aclexpirationtime , & aclexpirationtime ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_mode ,
2004-01-27 03:55:24 +00:00
& mode ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_parentvnode , & parentvnode ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_parentunique , & parentunique ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_modtime_sec , & modtime_sec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_modtime_msec , & modtime_msec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_changetime_sec , & changetime_sec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_changetime_msec , & changetime_msec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_accesstime_sec , & accesstime_sec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_accesstime_msec , & accesstime_msec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_servermodtime_sec , & servermodtime_sec ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_servermodtime_msec , & servermodtime_msec ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep , hf_fileexp_typeuuid ,
2004-01-27 03:55:24 +00:00
& typeuuid ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uuid_t ( tvb , offset , pinfo , tree , drep , hf_fileexp_objectuuid ,
2004-01-27 03:55:24 +00:00
& objectuuid ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_devicenumber , & devicenumber ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_blocksused ,
2004-01-27 03:55:24 +00:00
& blocksused ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_clientspare1 , & clientspare1 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_devicenumberhighbits ,
2004-01-27 03:55:24 +00:00
& devicenumberhighbits ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_agtypeunique , & agtypeunique ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_himaxspare ,
2004-01-27 03:55:24 +00:00
& himaxspare ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_lomaxspare ,
2004-01-27 03:55:24 +00:00
& lomaxspare ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_pathconfspare , & pathconfspare ) ;
2004-01-27 03:55:24 +00:00
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_spare4 ,
2004-01-27 03:55:24 +00:00
& spare4 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_spare5 ,
2004-01-27 03:55:24 +00:00
& spare5 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_spare6 ,
2004-01-27 03:55:24 +00:00
& spare6 ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO ,
" :interfacever:%u filetype:%u linkcount:%u length:%u dataver:%u author:%u owner:%u group:%u calleraccess:%u anonaccess:%u aclexpire:%u mode:%u parentvnode:%u parentunique:%u modtimesec:%u changetime_sec:%u accesstime_sec:%u servermodtimesec:%u devicenumber:%u blocksused:%u clientspare:%u devicehighbits:%u agtypeunique:%u " ,
interfaceversion , filetype , linkcount , length_low ,
dataversion_low , author , owner , group , calleraccess ,
anonymousaccess , aclexpirationtime , mode , parentvnode ,
parentunique , modtime_sec , changetime_sec ,
accesstime_sec , servermodtime_sec , devicenumber ,
blocksused , clientspare1 , devicenumberhighbits ,
agtypeunique ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsReturnDesc ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * parent_tree ,
guint8 * drep )
{
/*
afsFid fid ; * useful hint *
afsHyper tokenID ;
afsHyper type ; * mask *
unsigned32 flags ; * just in case *
*/
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
guint32 tokenid_high , tokenid_low , type_high , type_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 ,
" afsReturnDesc: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsReturnDesc ) ;
2004-01-27 03:55:24 +00:00
}
offset = dissect_afsFid ( tvb , offset , pinfo , tree , drep ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsreturndesc_tokenid_high , & tokenid_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsreturndesc_tokenid_low , & tokenid_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsreturndesc_type_high , & type_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_afsreturndesc_type_low , & type_low ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " TokenId:%u/%u Type:%u/%u " ,
tokenid_high , tokenid_low , type_high , type_low ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
static int
dissect_afsReturns ( tvbuff_t * tvb , int offset ,
packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
/*
long afsReturns_len ;
[ length_is ( afsReturns_len ) ] afsReturnDesc afsReturns_val [ AFS_BULKMAX ] ;
*/
/* this is not really a ucvarray, but with the initial len, we can
cheat and pretend it is */
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
offset =
dissect_ndr_ucvarray ( tvb , offset , pinfo , tree , drep ,
dissect_afsReturnDesc ) ;
return offset ;
}
2004-02-01 06:49:25 +00:00
#if 0 /* not used */
2004-01-27 03:55:24 +00:00
static int
dissect_afsbundled_stat ( tvbuff_t * tvb , int offset ,
2004-02-01 06:49:25 +00:00
packet_info * pinfo , proto_tree * parent_tree , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
proto_item * item = NULL ;
proto_tree * tree = NULL ;
int old_offset = offset ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
if ( parent_tree )
{
item = proto_tree_add_text ( parent_tree , tvb , offset , - 1 , " afsbundled_stat: " ) ;
2007-09-07 22:11:01 +00:00
tree = proto_item_add_subtree ( item , ett_fileexp_afsbundled_stat ) ;
2004-01-27 03:55:24 +00:00
}
/* bundled_stat
afsFid fid ;
afsFetchStatus stat ;
afsToken token ;
error_status_t error ;
*/
/*
offset = dissect_afsFid ( tvb , offset , pinfo , tree , drep ) ;
*/
/* SKIPTOKEN/STAT?
offset = dissect_fetchstatus ( tvb , offset , pinfo , tree , drep ) ;
2010-09-27 19:05:43 +00:00
offset = dissect_afstoken ( tvb , offset , pinfo , tree , drep ) ;
2004-01-27 03:55:24 +00:00
*/
/* This is currently under construction as I figure out the reverse layout of the packet. */
/*
offset = dissect_afsErrorStatus ( tvb , offset , pinfo , tree , drep ) ;
*/
proto_item_set_len ( item , offset - old_offset ) ;
return offset ;
}
2004-02-01 06:49:25 +00:00
# endif /* not used */
2004-01-27 03:55:24 +00:00
static int
2004-02-01 06:49:25 +00:00
dissect_afsBulkStat ( tvbuff_t * tvb _U_ , int offset ,
packet_info * pinfo _U_ , proto_tree * tree _U_ ,
guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
/*
unsigned32 BulkStat_len ;
[ length_is ( BulkStat_len ) ] bundled_stat BulkStat_val [ AFS_BULKMAX ] ;
*/
/* this is not really a ucvarray, but with the initial len, we can
cheat and pretend it is */
/*
offset = dissect_ndr_ucvarray ( tvb , offset , pinfo , tree , drep ,
dissect_afsbundled_stat ) ;
*/
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_removefile_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsFidTaggedName * Namep ,
[ in ] afsHyper * returnTokenIDp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsfidtaggedname , NDR_POINTER_REF ,
" afsFidTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_returntokenidp ,
NDR_POINTER_REF , " afsReturnTokenIDp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " afsMinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storedata_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 position_high , position_low , length ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * Position ,
[ in ] signed32 Length ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
[ in ] pipe_t * storeStream ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_position_high , & position_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_position_low , & position_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_length , & length ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Position:%u/%u Length:%u " ,
position_high , position_low , length ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
/* XXX need to decode pipe_t still here */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_gettoken_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsToken * MinTokenp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_gettoken_resp ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsToken * OutTokenp ,
[ out ] afsRecordLock * OutBlockerp ,
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsRecordLock , NDR_POINTER_REF ,
" afsRecordLock: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " afsFetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsErrorStatus , NDR_POINTER_REF ,
" afsErrorStatus: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_lookuproot_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
* [ in ] afsFid * InFidp ,
* [ in ] afsHyper * minVVp ,
* [ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchdata_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 position_high , position_low , length ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsHyper * minVVp ,
[ in ] afsHyper * Position ,
[ in ] signed32 Length ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_position_high , & position_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_position_low , & position_low ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_length , & length ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Position:%u/%u Length:%u " ,
position_high , position_low , length ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchacl_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 acltype ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] unsigned32 aclType ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_acltype ,
2004-01-27 03:55:24 +00:00
& acltype ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
if ( acltype )
{
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO ,
2004-01-27 03:55:24 +00:00
" :copy the ACL from specified fid: " ) ;
}
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchstatus_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storeacl_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 acltype ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsACL * AccessListp ,
[ in ] unsigned32 aclType ,
[ in ] afsFid * aclFidp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsAcl ,
NDR_POINTER_REF , " afsAcl: " , - 1 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep , hf_fileexp_acltype ,
2004-01-27 03:55:24 +00:00
& acltype ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " aclType:%u " , acltype ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storestatus_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_createfile_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_rename_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * OldDirFidp ,
[ in ] afsFidTaggedName * OldNamep ,
[ in ] afsFid * NewDirFidp ,
[ in ] afsFidTaggedName * NewNamep ,
[ in ] afsHyper * returnTokenIDp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsfidtaggedname , NDR_POINTER_REF ,
" afsFidTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsFidTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_returntokenidp , NDR_POINTER_REF ,
" afsReturnTokenIDp: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_minvvp , NDR_POINTER_REF ,
" afsminVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_symlink_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsTaggedPath * LinkContentsp ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsTaggedPath , NDR_POINTER_REF ,
" afsTaggedPath: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_readdir_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 size ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsHyper * Offsetp ,
[ in ] unsigned32 Size ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_offsetp ,
NDR_POINTER_REF , " Offsetp: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_readdir_size , & size ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Size:%u " , size ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_makedir_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_removedir_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
guint32 returntokenidp_high , returntokenidp_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsFidTaggedName * Namep ,
[ in ] afsHyper * returnTokenIDp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsfidtaggedname , NDR_POINTER_REF ,
" afsFidTaggedName: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_returntokenidp_high , & returntokenidp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_returntokenidp_low , & returntokenidp_low ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " returnTokenIDp:%u/%u " ,
returntokenidp_high , returntokenidp_low ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_lookup_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_lookup_resp ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " Lookup reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_makemountpoint_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
guint16 type ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsTaggedName * cellNamep ,
[ in ] afsFStype Type ,
[ in ] afsTaggedName * volumeNamep ,
[ in ] afsStoreStatus * InStatusp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
2007-09-07 22:11:01 +00:00
dissect_ndr_uint16 ( tvb , offset , pinfo , tree , drep , hf_fileexp_fstype ,
2004-01-27 03:55:24 +00:00
& type ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsstorestatus , NDR_POINTER_REF ,
" afsStoreStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Type:%u " , type ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_setcontext_rqst ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
dcerpc_info * di ;
guint32 epochtime , clientsizesattrs , parm7 ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] unsigned32 epochTime ,
[ in ] afsNetData * callbackAddr ,
[ in ] unsigned32 Flags ,
[ in ] afsUUID * secObjectID ,
[ in ] unsigned32 clientSizesAttrs ,
[ in ] unsigned32 parm7
*/
offset =
dissect_dcerpc_time_t ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_setcontext_rqst_epochtime , & epochtime ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsNetData ,
NDR_POINTER_REF , " afsNetData: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
2009-09-24 20:21:23 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " setObjectID " ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsuuid ,
NDR_POINTER_REF , " afsUUID: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_setcontext_rqst_clientsizesattrs ,
2004-01-27 03:55:24 +00:00
& clientsizesattrs ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_setcontext_rqst_parm7 , & parm7 ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) ) col_append_fstr ( pinfo - > cinfo , COL_INFO , " epochTime:%u clientSizesAttrs:%u parm7:%u " , epochtime , clientsizesattrs , parm7 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_setcontext_resp ( tvbuff_t * tvb , int offset ,
2004-01-27 03:55:24 +00:00
packet_info * pinfo , proto_tree * tree ,
guint8 * drep )
{
/* nothing but error code */
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
MACRO_ST_CLEAR ( " SetContext reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_lookuproot_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
* [ out ] afsFid * OutFidp ,
* [ out ] afsFetchStatus * OutFidStatusp ,
* [ out ] afsToken * OutTokenp ,
* [ out ] afsVolSync * Syncp
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " LookupRoot reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchdata_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
guint32 pipe_t_size ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp ,
[ out ] pipe_t * fetchStream
*/
/* The SkipToken/SkipStatus flags are always used in every fetchdata request I have seen.
There is also not sign of the afsVolSync structure . . . Just size , and data string . . . aka pipe_t */
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_fetchdata_pipe_t_size , & pipe_t_size ) ;
2004-01-27 03:55:24 +00:00
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchacl_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsACL * AccessListp ,
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsAcl ,
NDR_POINTER_REF , " afsAcl: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " FetchAcl reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_fetchstatus_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " FetchStatus reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storedata_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " StoreData reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storeacl_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " StoreAcl reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_storestatus_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " StoreStatus reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_removefile_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsFetchStatus * OutFileStatusp ,
[ out ] afsFid * OutFileFidp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " RemoveFile reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_createfile_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " CreateFile reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_rename_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
2010-09-27 19:05:43 +00:00
/*
2004-01-27 03:55:24 +00:00
[ out ] afsFetchStatus * OutOldDirStatusp ,
[ out ] afsFetchStatus * OutNewDirStatusp ,
[ out ] afsFid * OutOldFileFidp ,
[ out ] afsFetchStatus * OutOldFileStatusp ,
[ out ] afsFid * OutNewFileFidp ,
[ out ] afsFetchStatus * OutNewFileStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " Rename reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_symlink_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " Symlink reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_hardlink_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " Hardlink reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_hardlink_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsTaggedName * Namep ,
[ in ] afsFid * ExistingFidp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afstaggedname , NDR_POINTER_REF ,
" afsTaggedName: " , - 1 ) ;
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_makedir_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " MakeDir reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_removedir_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutDelStatusp ,
[ out ] afsVolSync * Syncp
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " RemoveDir reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_readdir_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 nextoffsetp_high , nextoffsetp_low ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsHyper * NextOffsetp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp ,
[ out ] pipe_t * dirStream
*/
2002-11-08 19:46:09 +00:00
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_nextoffsetp_high , & nextoffsetp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_nextoffsetp_low , & nextoffsetp_low ) ;
2002-11-08 19:46:09 +00:00
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " NextOffsetp:%u/%u " ,
nextoffsetp_high , nextoffsetp_low ) ;
2002-11-08 19:46:09 +00:00
2004-01-27 03:55:24 +00:00
/* all packets seem to have SKIPTOKEN/SKIPSTATUS sent, and thus these structures are missing on calls holding tokens. */
2002-11-08 19:46:09 +00:00
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
/* XXX need to add pipe_t here, once figured out. */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_releasetokens_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/* no out */
MACRO_ST_CLEAR ( " ReleaseTokens reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_releasetokens_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsReturns * Tokens_Arrayp ,
[ in ] unsigned32 Flags
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsReturns ,
NDR_POINTER_REF , " afsReturns: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_gettime_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 secondsp , usecondsp , syncdistance , syncdispersion ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] unsigned32 * Secondsp ,
[ out ] unsigned32 * USecondsp ,
[ out ] unsigned32 * SyncDistance ,
[ out ] unsigned32 * SyncDispersion
*/
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_gettime_secondsp , & secondsp ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_gettime_usecondsp , & usecondsp ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_gettime_syncdistance , & syncdistance ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_gettime_syncdispersion , & syncdispersion ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) ) col_append_fstr ( pinfo - > cinfo , COL_INFO , " Secondsp:%u Usecondsp:%u SyncDistance:/%u SyncDispersion:%u " , secondsp , usecondsp , syncdistance , syncdispersion ) ;
MACRO_ST_CLEAR ( " GetTime reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_gettime_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
2004-02-01 06:49:25 +00:00
tvb _U_ , int offset , packet_info * pinfo , proto_tree * tree _U_ , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/* nothing */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_processquota_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in , out ] afsQuota * quotaListp ,
[ out ] afsFetchStatus * OutStatusp ,
[ out ] afsVolSync * Syncp
*/
/* XXX need afsQuota */
offset + = 92 ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " ProcessQuota reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_processquota_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * Fidp ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
[ in , out ] afsQuota * quotaListp ,
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
/* XXX need to figure out afsQuota here */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_getserverinterfaces_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
2004-02-01 06:49:25 +00:00
tvb _U_ , int offset , packet_info * pinfo , proto_tree * tree _U_ , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in , out ] dfs_interfaceList * serverInterfacesP
*/
/* XXX figure out dfs_interfacelist */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_getserverinterfaces_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in , out ] dfs_interfaceList * serverInterfacesP
*/
/* XXX figure out dfs_interfacelist */
MACRO_ST_CLEAR ( " GetServerInterfaces reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_setparams_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] unsigned32 Flags ,
[ in , out ] afsConnParams * paramsP
*/
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsConnParams , NDR_POINTER_REF ,
" afsConnParams: " , - 1 ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_setparams_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in , out ] afsConnParams * paramsP
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep ,
dissect_afsConnParams , NDR_POINTER_REF ,
" afsConnParams: " , - 1 ) ;
MACRO_ST_CLEAR ( " SetParams reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_makemountpoint_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsFid * OutFidp ,
[ out ] afsFetchStatus * OutFidStatusp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsVolSync * Syncp
*/
/* afsFid */
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
MACRO_ST_CLEAR ( " MakeMountPoint reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_getstatistics_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
2004-02-01 06:49:25 +00:00
tvb _U_ , int offset , packet_info * pinfo , proto_tree * tree _U_ , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/* nothing for request */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_getstatistics_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
2004-02-01 06:49:25 +00:00
tvb _U_ , int offset , packet_info * pinfo , proto_tree * tree _U_ , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsStatistics * Statisticsp
*/
/* XXX figure out afsStatistics */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkfetchvv_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 cellidp_high , cellidp_low , numvols , spare1 , spare2 ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsHyper * cellIdp ,
[ in ] afsBulkVolIDs * VolIDsp ,
[ in ] unsigned32 NumVols ,
[ in ] unsigned32 Flags ,
[ in ] unsigned32 spare1 ,
[ in ] unsigned32 spare2 ,
*/
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_cellidp_high , & cellidp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_cellidp_low , & cellidp_low ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " CellIDp:%u/%u " , cellidp_high ,
cellidp_low ) ;
/* XXX figure out the afsBulkVolIDS */
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkfetchvv_numvols , & numvols ) ;
2004-01-27 03:55:24 +00:00
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkfetchvv_spare1 , & spare1 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkfetchvv_spare2 , & spare2 ) ;
2004-01-27 03:55:24 +00:00
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkfetchvv_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
2004-02-01 06:49:25 +00:00
tvb _U_ , int offset , packet_info * pinfo , proto_tree * tree _U_ , guint8 * drep _U_ )
2004-01-27 03:55:24 +00:00
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] afsBulkVVs * VolVVsp ,
[ out ] unsigned32 * spare4
*/
/* XXX need to figure out afsBulkVVs ; */
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkkeepalive_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 spare4 ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] unsigned32 * spare4
*/
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkkeepalive_spare4 , & spare4 ) ;
2004-01-27 03:55:24 +00:00
MACRO_ST_CLEAR ( " BulkKeepAlive reply " ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkkeepalive_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 numexecfids , spare1 , spare2 ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsBulkFEX * KAFEXp ,
[ in ] unsigned32 numExecFids ,
[ in ] unsigned32 Flags ,
[ in ] unsigned32 spare1 ,
[ in ] unsigned32 spare2 ,
*/
/* XXX figure out afsBulkFEX */
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkkeepalive_numexecfids , & numexecfids ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFlags ,
NDR_POINTER_REF , " afsFlags: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkkeepalive_spare1 , & spare1 ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkkeepalive_spare2 , & spare2 ) ;
2004-01-27 03:55:24 +00:00
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkfetchstatus_rqst
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
guint32 offsetp_high , offsetp_low , size ;
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ in ] afsFid * DirFidp ,
[ in ] afsHyper * Offsetp ,
[ in ] unsigned32 Size ,
[ in ] afsHyper * minVVp ,
[ in ] unsigned32 Flags ,
*/
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsFid ,
NDR_POINTER_REF , " afsFid: " , - 1 ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_offsetp_high , & offsetp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_offsetp_low , & offsetp_low ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " Offsetp:%u/%u " , offsetp_high ,
offsetp_low ) ;
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_bulkfetchstatus_size , & size ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_minvvp ,
NDR_POINTER_REF , " MinVVp: " , - 1 ) ;
offset = dissect_afsFlags ( tvb , offset , pinfo , tree , drep ) ;
return offset ;
}
static int
2007-09-07 22:11:01 +00:00
fileexp_dissect_bulkfetchstatus_resp
2004-01-27 03:55:24 +00:00
( tvbuff_t *
tvb , int offset , packet_info * pinfo , proto_tree * tree , guint8 * drep )
{
dcerpc_info * di ;
di = pinfo - > private_data ;
if ( di - > conformant_run )
{
return offset ;
}
/*
[ out ] BulkStat * bulkstats ,
[ out ] afsHyper * NextOffsetp ,
[ out ] afsFetchStatus * OutDirStatusp ,
[ out ] afsToken * OutTokenp ,
[ out ] afsVolSync * Syncp ,
[ out ] pipe_t * dirStream
*/
2010-09-27 19:05:43 +00:00
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afsBulkStat ,
NDR_POINTER_REF , " BulkStat: " , - 1 ) ;
/* Under construction. The packet seems to have the pipe_t before the rest of the data listed in idl. */
/*
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_nextoffsetp_high , & nextoffsetp_high ) ;
2004-01-27 03:55:24 +00:00
offset =
dissect_ndr_uint32 ( tvb , offset , pinfo , tree , drep ,
2007-09-07 22:11:01 +00:00
hf_fileexp_nextoffsetp_low , & nextoffsetp_low ) ;
2004-01-27 03:55:24 +00:00
if ( check_col ( pinfo - > cinfo , COL_INFO ) )
col_append_fstr ( pinfo - > cinfo , COL_INFO , " NextOffsetp:%u/%u " ,
nextoffsetp_high , nextoffsetp_low ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_fetchstatus ,
NDR_POINTER_REF , " FetchStatus: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_afstoken ,
NDR_POINTER_REF , " afsToken: " , - 1 ) ;
offset =
dissect_ndr_pointer ( tvb , offset , pinfo , tree , drep , dissect_volsync ,
NDR_POINTER_REF , " VolSync: " , - 1 ) ;
*/
/* XXX figure out pipe_t */
return offset ;
}
2002-11-08 19:46:09 +00:00
2007-09-07 22:11:01 +00:00
static dcerpc_sub_dissector fileexp_dissectors [ ] = {
{ 0 , " SetContext " , fileexp_dissect_setcontext_rqst , fileexp_dissect_setcontext_resp } ,
{ 1 , " LookupRoot " , fileexp_dissect_lookuproot_rqst , fileexp_dissect_lookuproot_resp } ,
{ 2 , " FetchData " , fileexp_dissect_fetchdata_rqst , fileexp_dissect_fetchdata_resp } ,
{ 3 , " FetchAcl " , fileexp_dissect_fetchacl_rqst , fileexp_dissect_fetchacl_resp } ,
{ 4 , " FetchStatus " , fileexp_dissect_fetchstatus_rqst , fileexp_dissect_fetchstatus_resp } ,
{ 5 , " StoreData " , fileexp_dissect_storedata_rqst , fileexp_dissect_storedata_resp } ,
{ 6 , " StoreAcl " , fileexp_dissect_storeacl_rqst , fileexp_dissect_storeacl_resp } ,
{ 7 , " StoreStatus " , fileexp_dissect_storestatus_rqst , fileexp_dissect_storestatus_resp } ,
{ 8 , " RemoveFile " , fileexp_dissect_removefile_rqst , fileexp_dissect_removefile_resp } ,
{ 9 , " CreateFile " , fileexp_dissect_createfile_rqst , fileexp_dissect_createfile_resp } ,
{ 10 , " Rename " , fileexp_dissect_rename_rqst , fileexp_dissect_rename_resp } ,
{ 11 , " Symlink " , fileexp_dissect_symlink_rqst , fileexp_dissect_symlink_resp } ,
{ 12 , " HardLink " , fileexp_dissect_hardlink_rqst , fileexp_dissect_hardlink_resp } ,
{ 13 , " MakeDir " , fileexp_dissect_makedir_rqst , fileexp_dissect_makedir_resp } ,
{ 14 , " RemoveDir " , fileexp_dissect_removedir_rqst , fileexp_dissect_removedir_resp } ,
{ 15 , " Readdir " , fileexp_dissect_readdir_rqst , fileexp_dissect_readdir_resp } ,
{ 16 , " Lookup " , fileexp_dissect_lookup_rqst , fileexp_dissect_lookup_resp } ,
{ 17 , " GetToken " , fileexp_dissect_gettoken_rqst , fileexp_dissect_gettoken_resp } ,
{ 18 , " ReleaseTokens " , fileexp_dissect_releasetokens_rqst , fileexp_dissect_releasetokens_resp } ,
{ 19 , " GetTime " , fileexp_dissect_gettime_rqst , fileexp_dissect_gettime_resp } ,
{ 20 , " MakeMountPoint " , fileexp_dissect_makemountpoint_rqst , fileexp_dissect_makemountpoint_resp } ,
{ 21 , " GetStatistics " , fileexp_dissect_getstatistics_rqst , fileexp_dissect_getstatistics_resp } ,
{ 22 , " BulkFetchVV " , fileexp_dissect_bulkfetchvv_rqst , fileexp_dissect_bulkfetchvv_resp } ,
{ 23 , " BulkKeepAlive " , fileexp_dissect_bulkkeepalive_rqst , fileexp_dissect_bulkkeepalive_resp } ,
{ 24 , " ProcessQuota " , fileexp_dissect_processquota_rqst , fileexp_dissect_processquota_resp } ,
{ 25 , " GetServerInterfaces " , fileexp_dissect_getserverinterfaces_rqst , fileexp_dissect_getserverinterfaces_resp } ,
{ 26 , " SetParams " , fileexp_dissect_setparams_rqst , fileexp_dissect_setparams_resp } ,
{ 27 , " BulkFetchStatus " , fileexp_dissect_bulkfetchstatus_rqst , fileexp_dissect_bulkfetchstatus_resp } ,
2004-01-27 03:55:24 +00:00
{ 0 , NULL , NULL , NULL }
,
2002-11-08 19:46:09 +00:00
} ;
void
2007-09-07 22:11:01 +00:00
proto_register_fileexp ( void )
2002-11-08 19:46:09 +00:00
{
2004-01-27 03:55:24 +00:00
static hf_register_info hf [ ] = {
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ & hf_error_st , { " AFS4Int Error Status Code " , " fileexp.st " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_flags , { " DFS Flags " , " fileexp.flags " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_tn_string , { " String " , " fileexp.string " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_opnum , { " Operation " , " fileexp.opnum " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2009-12-19 03:17:44 +00:00
{ & hf_fileexp_setcontext_rqst_epochtime , { " EpochTime: " , " fileexp.setcontext_rqst_epochtime " , FT_ABSOLUTE_TIME , ABSOLUTE_TIME_LOCAL , NULL , 0x0 , NULL , HFILL } } ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ & hf_fileexp_setcontext_rqst_clientsizesattrs , { " ClientSizeAttrs: " , " fileexp.setcontext_clientsizesattrs " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_setcontext_rqst_parm7 , { " Parm7: " , " fileexp.setcontext.parm7 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_acl_len , { " Acl Length " , " fileexp.acl_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2010-09-27 19:05:43 +00:00
{ & hf_fileexp_acltype , { " Acl type " , " fileexp.acltype " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_minvvp_high , { " minVVp high " , " fileexp.minvvp_high " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_minvvp_low , { " minVVp low " , " fileexp.minvvp_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_accesstime_msec , { " Access time (msec) " , " fileexp.accesstime_msec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_accesstime_sec , { " Access time (sec) " , " fileexp.accesstime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_aclexpirationtime , { " Acl expiration time " , " fileexp.aclexpirationtime " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_agtypeunique , { " agtypeunique " , " fileexp.agtypeunique " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_anonymousaccess , { " Anonymous Access " , " fileexp.anonymousaccess " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_author , { " Author " , " fileexp.author " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_blocksused , { " Blocks used " , " fileexp.blocksused " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_calleraccess , { " Caller access " , " fileexp.calleraccess " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_changetime_msec , { " Change time (msec) " , " fileexp.changetime_msec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_changetime_sec , { " Change time (sec) " , " fileexp.changetime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_clientspare1 , { " Client spare1 " , " fileexp.clientspare1 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_dataversion_high , { " Data version (high) " , " fileexp.dataversion_high " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_dataversion_low , { " Data version (low) " , " fileexp.dataversion_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_devicenumber , { " Device number " , " fileexp.devicenumber " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_devicenumberhighbits , { " Device number high bits " , " fileexp.devicenumberhighbits " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_filetype , { " File type " , " fileexp.filetype " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_group , { " Group " , " fileexp.group " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_himaxspare , { " Hi max spare " , " fileexp.himaxspare " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_interfaceversion , { " Interface version " , " fileexp.interfaceversion " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_length_high , { " Length high " , " fileexp.length_high " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_length_low , { " Length low " , " fileexp.length_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_linkcount , { " Link count " , " fileexp.linkcount " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_lomaxspare , { " Lo max spare " , " fileexp.lomaxspare " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_mode , { " Mode " , " fileexp.mode " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_modtime_msec , { " Modify time (msec) " , " fileexp.modtime_msec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_modtime_sec , { " Modify time (sec) " , " fileexp.modtime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_objectuuid , { " Object uuid " , " fileexp.objectuuid " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_owner , { " Owner " , " fileexp.owner " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_parentunique , { " Parent unique " , " fileexp.parentunique " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_parentvnode , { " Parent vnode " , " fileexp.parentvnode " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_pathconfspare , { " Path conf spare " , " fileexp.pathconfspare " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_servermodtime_msec , { " Server modify time (msec) " , " fileexp.servermodtime_msec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_servermodtime_sec , { " Server modify time (sec) " , " fileexp.servermodtime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_spare4 , { " Spare4 " , " fileexp.spare4 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_spare5 , { " Spare5 " , " fileexp.spare5 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_spare6 , { " Spare6 " , " fileexp.spare6 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_typeuuid , { " Type uuid " , " fileexp.typeuuid " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_volid_hi , { " Vol id hi " , " fileexp.volid_hi " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_volid_low , { " Vol id low " , " fileexp.volid_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vvage , { " Vvage " , " fileexp.vvage " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vv_hi , { " Vv hi " , " fileexp.vv_hi " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vv_low , { " Vv low " , " fileexp.vv_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vvpingage , { " Vv pingage " , " fileexp.vvpingage " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vvspare1 , { " Vv spare1 " , " fileexp.vvspare1 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_vvspare2 , { " Vv spare2 " , " fileexp.vvspare2 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_beginrange , { " Begin range " , " fileexp.beginrange " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_beginrangeext , { " Begin range ext " , " fileexp.beginrangeext " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_endrange , { " End range " , " fileexp.endrange " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_endrangeext , { " End range ext " , " fileexp.endrangeext " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_expirationtime , { " Expiration time " , " fileexp.expirationtime " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_tokenid_hi , { " Tokenid hi " , " fileexp.tokenid_hi " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_tokenid_low , { " Tokenid low " , " fileexp.tokenid_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_type_hi , { " Type hi " , " fileexp.type_hi " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_type_low , { " Type low " , " fileexp.type_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_tn_length , { " Tn length " , " fileexp.tn_length " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_tn_tag , { " Tn tag " , " fileexp.tn_tag " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_accesstime_sec , { " Store status access time (sec) " , " fileexp.storestatus_accesstime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_accesstime_usec , { " Store status access time (usec) " , " fileexp.storestatus_accesstime_usec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_changetime_sec , { " Store status change time (sec) " , " fileexp.storestatus_changetime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_changetime_usec , { " Store status change time (usec) " , " fileexp.storestatus_changetime_usec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_clientspare1 , { " Store Status client spare1 " , " fileexp.storestatus_clientspare1 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_cmask , { " Store status cmask " , " fileexp.storestatus_cmask " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_devicenumber , { " Store status device number " , " fileexp.storestatus_devicenumber " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_devicenumberhighbits , { " Store status device number high bits " , " fileexp.storestatus_devicenumberhighbits " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_devicetype , { " Store status device type " , " fileexp.storestatus_devicetype " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_group , { " Store status group " , " fileexp.storestatus_group " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_length_high , { " Store status length high " , " fileexp.storestatus_length_high " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_length_low , { " Store status length low " , " fileexp.storestatus_length_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_mask , { " Store status mask " , " fileexp.storestatus_mask " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_mode , { " Store status mode " , " fileexp.storestatus_mode " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_modtime_sec , { " Store status modify time (sec) " , " fileexp.storestatus_modtime_sec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_modtime_usec , { " Store status modify time (usec) " , " fileexp.storestatus_modtime_usec " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_owner , { " Store status owner " , " fileexp.storestatus_owner " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare1 , { " Store status spare1 " , " fileexp.storestatus_spare1 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare2 , { " Store status spare2 " , " fileexp.storestatus_spare2 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare3 , { " Store status spare3 " , " fileexp.storestatus_spare3 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare4 , { " Store status spare4 " , " fileexp.storestatus_spare4 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare5 , { " Store status spare5 " , " fileexp.storestatus_spare5 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_spare6 , { " Store status spare6 " , " fileexp.storestatus_spare6 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_trunc_high , { " Store status trunc high " , " fileexp.storestatus_trunc_high " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_trunc_low , { " Store status trunc low " , " fileexp.storestatus_trunc_low " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_storestatus_typeuuid , { " Store status type uuid " , " fileexp.storestatus_typeuuid " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_l_end_pos , { " l_end_pos " , " fileexp.l_end_pos " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_end_pos_ext , { " l_end_pos_ext " , " fileexp.l_end_pos_ext " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_fstype , { " l_fstype " , " fileexp.l_fstype " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_pid , { " l_pid " , " fileexp.l_pid " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_start_pos , { " l_start_pos " , " fileexp.l_start_pos " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_start_pos_ext , { " l_start_pos_ext " , " fileexp.l_start_pos_ext " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_sysid , { " l_sysid " , " fileexp.l_sysid " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_type , { " l_type " , " fileexp.l_type " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_l_whence , { " l_whence " , " fileexp.l_whence " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_afsconnparams_mask , { " afs conn params mask " , " fileexp.afs_connparams_mask " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_afsconnparams_values , { " afs conn params values " , " fileexp.afs_connparams_values " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsFid_cell_high , { " Cell High " , " fileexp.afsFid.cell_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Cell High " , HFILL } } ,
{ & hf_fileexp_afsFid_cell_low , { " Cell Low " , " fileexp.afsFid.cell_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Cell Low " , HFILL } } ,
{ & hf_fileexp_afsFid_volume_high , { " Volume High " , " fileexp.afsFid.volume_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Volume High " , HFILL } } ,
{ & hf_fileexp_afsFid_volume_low , { " Volume Low " , " fileexp.afsFid.volume_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Volume Low " , HFILL } } ,
{ & hf_fileexp_afsFid_Vnode , { " Vnode " , " fileexp.afsFid.Vnode " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Vnode " , HFILL } } ,
{ & hf_fileexp_afsFid_Unique , { " Unique " , " fileexp.afsFid.Unique " , FT_UINT32 , BASE_HEX , NULL , 0x0 , " afsFid Unique " , HFILL } } ,
2011-05-23 00:00:53 +00:00
{ & hf_fileexp_afsNetAddr_type , { " Type " , " fileexp.afsNetAddr.type " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsNetAddr_data , { " IP Data " , " fileexp.afsNetAddr.data " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2010-09-27 19:05:43 +00:00
{ & hf_fileexp_position_high , { " Position High " , " fileexp.position_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_position_low , { " Position Low " , " fileexp.position_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsreturndesc_tokenid_high , { " Token id High " , " fileexp.afsreturndesc_tokenid_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsreturndesc_tokenid_low , { " Token id low " , " fileexp.afsreturndesc_tokenid_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsreturndesc_type_high , { " Type high " , " fileexp.type_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsreturndesc_type_low , { " Type low " , " fileexp.type_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_offsetp_high , { " offset high " , " fileexp.offset_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_offsetp_low , { " offset high " , " fileexp.offset_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_nextoffsetp_high , { " next offset high " , " fileexp.nextoffset_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_nextoffsetp_low , { " next offset low " , " fileexp.nextoffset_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_returntokenidp_high , { " return token idp high " , " fileexp.returntokenidp_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_returntokenidp_low , { " return token idp low " , " fileexp.returntokenidp_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_cellidp_high , { " cellidp high " , " fileexp.cellidp_high " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_cellidp_low , { " cellidp low " , " fileexp.cellidp_low " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_afserrorstatus_st , { " AFS Error Code " , " fileexp.afserrortstatus_st " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_length , { " Length " , " fileexp.length " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsTaggedPath_tp_chars , { " AFS Tagged Path " , " fileexp.TaggedPath_tp_chars " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsTaggedPath_tp_tag , { " AFS Tagged Path Name " , " fileexp.TaggedPath_tp_tag " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsacl_uuid1 , { " AFS ACL UUID1 " , " fileexp.afsacl_uuid1 " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_bulkfetchstatus_size , { " BulkFetchStatus Size " , " fileexp.bulkfetchstatus_size " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_bulkfetchvv_numvols , { " BulkFetchVv num vols " , " fileexp.bulkfetchvv_numvols " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_bulkfetchvv_spare1 , { " BulkFetchVv spare1 " , " fileexp.bulkfetchvv_spare1 " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_bulkfetchvv_spare2 , { " BulkFetchVv spare2 " , " fileexp.bulkfetchvv_spare2 " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ & hf_fileexp_bulkkeepalive_numexecfids , { " BulkKeepAlive numexecfids " , " fileexp.bulkkeepalive_numexecfids " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
2010-09-27 19:05:43 +00:00
{ & hf_fileexp_bulkkeepalive_spare4 , { " BulkKeepAlive spare4 " , " fileexp.bulkfetchkeepalive_spare2 " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_bulkkeepalive_spare2 , { " BulkKeepAlive spare2 " , " fileexp.bulkfetchkeepalive_spare2 " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_bulkkeepalive_spare1 , { " BulkFetch KeepAlive spare1 " , " fileexp.bulkfetchkeepalive_spare1 " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsacl_defaultcell_uuid , { " Default Cell UUID " , " fileexp.defaultcell_uuid " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_afsuuid_uuid , { " AFS UUID " , " fileexp.uuid " , FT_GUID , BASE_NONE , NULL , 0x0 , " UUID " , HFILL } } ,
{ & hf_fileexp_gettime_syncdispersion , { " GetTime Syncdispersion " , " fileexp.gettime_syncdispersion " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_gettime_syncdistance , { " SyncDistance " , " fileexp.gettime.syncdistance " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_gettime_usecondsp , { " GetTime usecondsp " , " fileexp.gettime_usecondsp " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_readdir_size , { " Readdir Size " , " fileexp.readdir.size " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsNameString_t_principalName_size , { " Principal Name Size " , " fileexp.principalName_size " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsTaggedPath_tp_length , { " Tagged Path Length " , " fileexp.afsTaggedPath_length " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_fstype , { " Filetype " , " fileexp.fstype " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_gettime_secondsp , { " GetTime secondsp " , " fileexp.gettime_secondsp " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_afsNameString_t_principalName_string , { " Principal Name " , " fileexp.NameString_principal " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_fileexp_fetchdata_pipe_t_size , { " FetchData Pipe_t size " , " fileexp.fetchdata_pipe_t_size " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
2004-01-27 03:55:24 +00:00
} ;
2010-09-27 19:05:43 +00:00
2004-01-27 03:55:24 +00:00
static gint * ett [ ] = {
2007-09-07 22:11:01 +00:00
& ett_fileexp ,
& ett_fileexp_afsReturnDesc ,
& ett_fileexp_afsFid ,
& ett_fileexp_afsNetAddr ,
& ett_fileexp_fetchstatus ,
& ett_fileexp_afsflags ,
& ett_fileexp_volsync ,
& ett_fileexp_minvvp ,
& ett_fileexp_afsfidtaggedname ,
& ett_fileexp_afstaggedname ,
& ett_fileexp_afstoken ,
& ett_fileexp_afsstorestatus ,
& ett_fileexp_afsRecordLock ,
& ett_fileexp_afsAcl ,
& ett_fileexp_afsNameString_t ,
& ett_fileexp_afsConnParams ,
& ett_fileexp_afsErrorStatus ,
& ett_fileexp_afsTaggedPath ,
& ett_fileexp_afsNetData ,
& ett_fileexp_afsBulkStat ,
& ett_fileexp_afsuuid ,
& ett_fileexp_offsetp ,
& ett_fileexp_returntokenidp ,
& ett_fileexp_afsbundled_stat ,
2004-01-27 03:55:24 +00:00
} ;
2010-09-27 19:05:43 +00:00
2007-09-07 22:11:01 +00:00
proto_fileexp = proto_register_protocol ( " DCE DFS File Exporter " , " FILEEXP " , " fileexp " ) ;
proto_register_field_array ( proto_fileexp , hf , array_length ( hf ) ) ;
2004-01-27 03:55:24 +00:00
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
2002-11-08 19:46:09 +00:00
}
2004-01-27 03:55:24 +00:00
2002-11-08 19:46:09 +00:00
void
2007-09-07 22:11:01 +00:00
proto_reg_handoff_fileexp ( void )
2002-11-08 19:46:09 +00:00
{
2004-01-27 03:55:24 +00:00
/*
2010-09-27 19:05:43 +00:00
* Register the protocol as dcerpc
2004-01-27 03:55:24 +00:00
*/
2007-09-07 22:11:01 +00:00
dcerpc_init_uuid ( proto_fileexp , ett_fileexp , & uuid_fileexp , ver_fileexp ,
fileexp_dissectors , hf_fileexp_opnum ) ;
2003-06-26 04:30:31 +00:00
}