wireshark/epan/dissectors/packet-nfs.h
Jorge Mora b0ce8b1db6 NFS: Display nfl_util components for files layout type
Add extra fields to display the components of the layout
nfl_util for the files layout type. These components include
whether the layout is dense or sparse, whether the client
should send the commit to the metadata server or data server
and lastly the stripe unit size.

Change-Id: I8c054c68353eb5bd711b2f95d8dcf74ecc2aab03
Reviewed-on: https://code.wireshark.org/review/32952
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2019-04-26 11:59:00 +00:00

223 lines
8 KiB
C

/* packet-nfs.h (c) 1999 Uwe Girlich */
/*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef __PACKET_NFS_H__
#define __PACKET_NFS_H__
#include "packet-rpc.h"
#define NFS_PROGRAM 100003
#define NFS_CB_PROGRAM 0x40000000
#define FHSIZE 32
/* verifier */
#define NFS3_COOKIEVERFSIZE 8
#define NFS3_CREATEVERFSIZE 8
#define NFS3_WRITEVERFSIZE 8
/* for ftype3 */
#define NF3REG 1
#define NF3DIR 2
#define NF3BLK 3
#define NF3CHR 4
#define NF3LNK 5
#define NF3SOCK 6
#define NF3FIFO 7
/*
* NFSv4 error codes used in code, as opposed to UI
*/
#define NFS4_OK 0
#define NFS4ERR_DENIED 10010
#define NFS4ERR_CLID_INUSE 10017
#define NFS4ERR_OFFLOAD_NO_REQS 10094
/*
* NFSv4 file types
*/
#define NF4REG 1
#define NF4DIR 2
#define NF4BLK 3
#define NF4CHR 4
#define NF4LNK 5
#define NF4SOCK 6
#define NF4FIFO 7
#define NF4ATTRDIR 8
#define NF4NAMEDATTR 9
/*
* Since NFSv4 "operations" are handled differently than previous NFS
* versions, these tokens are necessary.
*/
#define NFS4_OP_ACCESS 3
#define NFS4_OP_CLOSE 4
#define NFS4_OP_COMMIT 5
#define NFS4_OP_CREATE 6
#define NFS4_OP_DELEGPURGE 7
#define NFS4_OP_DELEGRETURN 8
#define NFS4_OP_GETATTR 9
#define NFS4_OP_GETFH 10
#define NFS4_OP_LINK 11
#define NFS4_OP_LOCK 12
#define NFS4_OP_LOCKT 13
#define NFS4_OP_LOCKU 14
#define NFS4_OP_LOOKUP 15
#define NFS4_OP_LOOKUPP 16
#define NFS4_OP_NVERIFY 17
#define NFS4_OP_OPEN 18
#define NFS4_OP_OPENATTR 19
#define NFS4_OP_OPEN_CONFIRM 20
#define NFS4_OP_OPEN_DOWNGRADE 21
#define NFS4_OP_PUTFH 22
#define NFS4_OP_PUTPUBFH 23
#define NFS4_OP_PUTROOTFH 24
#define NFS4_OP_READ 25
#define NFS4_OP_READDIR 26
#define NFS4_OP_READLINK 27
#define NFS4_OP_REMOVE 28
#define NFS4_OP_RENAME 29
#define NFS4_OP_RENEW 30
#define NFS4_OP_RESTOREFH 31
#define NFS4_OP_SAVEFH 32
#define NFS4_OP_SECINFO 33
#define NFS4_OP_SETATTR 34
#define NFS4_OP_SETCLIENTID 35
#define NFS4_OP_SETCLIENTID_CONFIRM 36
#define NFS4_OP_VERIFY 37
#define NFS4_OP_WRITE 38
#define NFS4_OP_RELEASE_LOCKOWNER 39
/* Minor version 1 */
#define NFS4_OP_BACKCHANNEL_CTL 40
#define NFS4_OP_BIND_CONN_TO_SESSION 41
#define NFS4_OP_EXCHANGE_ID 42
#define NFS4_OP_CREATE_SESSION 43
#define NFS4_OP_DESTROY_SESSION 44
#define NFS4_OP_FREE_STATEID 45
#define NFS4_OP_GET_DIR_DELEGATION 46
#define NFS4_OP_GETDEVINFO 47
#define NFS4_OP_GETDEVLIST 48
#define NFS4_OP_LAYOUTCOMMIT 49
#define NFS4_OP_LAYOUTGET 50
#define NFS4_OP_LAYOUTRETURN 51
#define NFS4_OP_SECINFO_NO_NAME 52
#define NFS4_OP_SEQUENCE 53
#define NFS4_OP_SET_SSV 54
#define NFS4_OP_TEST_STATEID 55
#define NFS4_OP_WANT_DELEGATION 56
#define NFS4_OP_DESTROY_CLIENTID 57
#define NFS4_OP_RECLAIM_COMPLETE 58
/* Minor version 2 */
#define NFS4_OP_ALLOCATE 59
#define NFS4_OP_COPY 60
#define NFS4_OP_COPY_NOTIFY 61
#define NFS4_OP_DEALLOCATE 62
#define NFS4_OP_IO_ADVISE 63
#define NFS4_OP_LAYOUTERROR 64
#define NFS4_OP_LAYOUTSTATS 65
#define NFS4_OP_OFFLOAD_CANCEL 66
#define NFS4_OP_OFFLOAD_STATUS 67
#define NFS4_OP_READ_PLUS 68
#define NFS4_OP_SEEK 69
#define NFS4_OP_WRITE_SAME 70
#define NFS4_OP_CLONE 71
#define NFS4_OP_GETXATTR 72
#define NFS4_OP_SETXATTR 73
#define NFS4_OP_LISTXATTRS 74
#define NFS4_OP_REMOVEXATTR 75
#define NFS4_LAST_OP 75
#define NFS4_OP_ILLEGAL 10044
/*
* NFSv41 callback ops
*/
#define NFS4_OP_CB_GETATTR 3
#define NFS4_OP_CB_RECALL 4
#define NFS4_OP_CB_LAYOUTRECALL 5
#define NFS4_OP_CB_NOTIFY 6
#define NFS4_OP_CB_PUSH_DELEG 7
#define NFS4_OP_CB_RECALL_ANY 8
#define NFS4_OP_CB_RECALLABLE_OBJ_AVAIL 9
#define NFS4_OP_CB_RECALL_SLOT 10
#define NFS4_OP_CB_SEQUENCE 11
#define NFS4_OP_CB_WANTS_CANCELLED 12
#define NFS4_OP_CB_NOTIFY_LOCK 13
#define NFS4_OP_CB_NOTIFY_DEVICEID 14
#define NFS4_OP_CB_OFFLOAD 15
#define NFS4_OP_CB_ILLEGAL 10044
/* for write */
#define UNSTABLE 0
#define DATA_SYNC 1
#define FILE_SYNC 2
/* for create */
#define UNCHECKED 0
#define GUARDED 1
#define EXCLUSIVE 2
/* for create4 */
#define UNCHECKED4 0
#define GUARDED4 1
#define EXCLUSIVE4 2
#define EXCLUSIVE4_1 3
/* for access mask */
#define NFS_ACCESS_MASK_READ 0x001
#define NFS_ACCESS_MASK_LOOKUP 0x002
#define NFS_ACCESS_MASK_MODIFY 0x004
#define NFS_ACCESS_MASK_EXTEND 0x008
#define NFS_ACCESS_MASK_DELETE 0x010
#define NFS_ACCESS_MASK_EXECUTE 0x020
#define NFS_ACCESS_MASK_XATTR_READ 0x040
#define NFS_ACCESS_MASK_XATTR_WRITE 0x080
#define NFS_ACCESS_MASK_XATTR_LIST 0x100
/* pNFS layout types */
#define LAYOUT4_NO_LAYOUT_TYPE 0
#define LAYOUT4_NFSV4_1_FILES 1
#define LAYOUT4_OSD2_OBJECTS 2
#define LAYOUT4_BLOCK_VOLUME 3
#define LAYOUT4_FLEX_FILES 4
#define LAYOUT4_SCSI 5
#define NFL4_UFLG_MASK 0x0000003F
#define NFL4_UFLG_DENSE 0x00000001
#define NFL4_UFLG_COMMIT_THRU_MDS 0x00000002
#define NFL4_UFLG_STRIPE_UNIT_SIZE_MASK 0xFFFFFFC0
/* NFSv4.2 */
/* netloc types */
#define NL4_NAME 1
#define NL4_URL 2
#define NL4_NETADDR 3
extern gboolean nfs_file_name_snooping;
extern void nfs_name_snoop_add_name(int xid, tvbuff_t *tvb, int name_offset, int name_len,
int parent_offset, int parent_len, const char *name);
extern gboolean nfs_fhandle_reqrep_matching;
extern int dissect_fhandle(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
const char *name, guint32 *hash, rpc_call_info_value *civ);
extern void dissect_fhandle_hidden(packet_info *pinfo, proto_tree *tree, int frame);
extern int dissect_nfs3_fh(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
const char *name, guint32 *hash, rpc_call_info_value *civ);
extern int dissect_nfs3_post_op_attr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
const char* name);
extern int dissect_nfs2_fattr(tvbuff_t *tvb, int offset, proto_tree *tree, const char* name);
extern proto_tree* display_access_items(tvbuff_t* tvb, int offset, packet_info* pinfo,
proto_tree* tree, guint32 amask, char mtype, int version,
wmem_strbuf_t* optext, const char* label);
extern int dissect_access_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree* tree,
int version, wmem_strbuf_t *optext, rpc_call_info_value *civ);
extern int hf_nfs_status;
#endif /* packet-nfs.h */