aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-fmp.h
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-02-01 20:56:36 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2007-02-01 20:56:36 +0000
commit5f521f725b8c3defd388a89f9ce52be4ee946a08 (patch)
treef786eeac82f3f84c2ac5f5b6f0d7fde50e384b16 /epan/dissectors/packet-fmp.h
parentf2b23aaffb9cde58de39e018e4c8e8b6c6ade1e3 (diff)
Ian Schorr <ian.schorr@gmail.com> Wed, Jan 31, 2007 at 7:24 PM To: wireshark-dev@wireshark.org Hello, Please consider for checkin the following new dissectors, for the FMP protocol. FMP (File Mapping Protocol) is the network protocol basis for EMC's HighRoad (MPFS) technology.  Highroad is used to allow multiple clients to share access to NAS-shared files while allowing clients to directly access data volumes (via, for example, Fibre Channel or iSCSI).  EMC currently uses this technology in our Celerra NAS servers, and we're currently in the process of open sourcing portions of the technology. FMP actually consists of two ONC/RPC-based protocols - the core FMP protocol, and FMP/Notify.  The latter is used as an asynchronous callback to inform clients of status changes, such as lock revocation. We'd like to offer these dissectors to Wireshark users for help in debugging or otherwise troubleshooting MPFS-related problems.  There are still a few minor changes that need to be made ( i.e. a handful of fields that aren't decoded) but the dissector is overall fairly complete and very usable. Let me know if there are questions or feedback, or otherwise if other info is needed (like sample captures, which I don't want to send out to the mailing list). Thanks, Ian Schorr EMC Corporation svn path=/trunk/; revision=20679
Diffstat (limited to 'epan/dissectors/packet-fmp.h')
-rwxr-xr-xepan/dissectors/packet-fmp.h214
1 files changed, 214 insertions, 0 deletions
diff --git a/epan/dissectors/packet-fmp.h b/epan/dissectors/packet-fmp.h
new file mode 100755
index 0000000000..afa70f86d3
--- /dev/null
+++ b/epan/dissectors/packet-fmp.h
@@ -0,0 +1,214 @@
+/* packet-fmp.h
+ * Defines for fmp dissection
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_FMP_H
+#define PACKET_FMP_H
+
+#define FMP_PROGRAM 1001911
+#define FMP_VERSION_3 3
+
+
+
+/*
+ * FMP Procedures
+ */
+#define FMP_SessionCreate 1
+#define FMP_HeartBeat 2
+#define FMP_Mount 3
+#define FMP_Open 4
+#define FMP_Close 5
+#define FMP_OpenGetMap 6
+#define FMP_OpenAllocSpace 7
+#define FMP_GetMap 8
+#define FMP_AllocSpace 9
+#define FMP_Flush 10
+#define FMP_CancelReq 11
+#define FMP_PlugIn 12
+#define FMP_SessionTerminate 13
+#define FMP_SessionCreateEx 14
+#define FMP_ReportClientError 15
+#define FMP_GetAttr 16
+#define FMP_OpenGetAttr 17
+#define FMP_FlushGetAttr 18
+#define FMP_OpenGetMapEx 19
+#define FMP_OpenAllocSpaceEx 20
+#define FMP_GetMapEx 21
+#define FMP_AllocSpaceEx 22
+#define FMP_FlushEx 23
+#define FMP_FlushGetAttrEx 24
+#define FMP_GetVolumeInfo 25
+
+
+
+/*
+ * Volume Mgmt Capability
+ */
+
+#define FMP_SERVER_BASED 0x01
+#define FMP_THIRD_PARTY 0x02
+#define FMP_CLIENT_BASED_DART 0x04
+#define FMP_CLIENT_BASED_SIMPLE 0x08
+#define FMP_DISK_SIGNATURE 0x10
+#define FMP_IPSTORAGE_BASED 0X20
+#define FMP_HIERARCHICAL_VOLUME 0x40
+
+/*
+ * Flush Command Type
+ */
+
+#define FMP_COMMIT_SPECIFIED 0x01
+#define FMP_RELEASE_SPECIFIED 0x02
+#define FMP_RELEASE_ALL 0x04
+#define FMP_CLOSE_FILE 0x08
+#define FMP_UPDATE_TIME 0x10
+#define FMP_ACCESS_TIME 0x20
+
+#define FMP_PLUG_IN_ID_SZ 16
+
+/*
+ * FMP Notify Protocol
+ */
+#define FMP_TCP 0
+#define FMP_UDP 1
+
+/*
+ * Capabilities
+ */
+
+#define FMP_CAP_REVOKE_HANDLE_LIST 0x0001
+#define FMP_CAP_UNC_NAMES 0x0002
+#define FMP_CAP_CIFSV2 0x0004
+
+
+typedef enum {
+ FMP_CE_GENERIC = 1,
+ FMP_CE_DISK_ERROR = 2
+}clientErrorNum;
+
+
+/*
+ * FMP Reply Status
+ */
+
+typedef enum {
+ FMP_OK = 0,
+ FMP_IOERROR = 5,
+ FMP_NOMEM = 12,
+ FMP_NOACCESS = 13,
+ FMP_INVALIDARG = 22,
+ FMP_FSFULL = 28,
+ FMP_QUEUE_FULL = 79,
+ FMP_WRONG_MSG_NUM = 500,
+ FMP_SESSION_LOST = 501,
+ FMP_HOT_SESSION = 502,
+ FMP_COLD_SESSION = 503,
+ FMP_CLIENT_TERMINATED = 504,
+ FMP_WRITER_LOST_BLK = 505,
+ FMP_REQUEST_QUEUED = 506,
+ FMP_FALL_BACK = 507,
+ FMP_REQUEST_CANCELLED = 508,
+ FMP_WRITER_ZEROED_BLK = 509,
+ FMP_NOTIFY_ERROR = 510,
+ FMP_WRONG_HANDLE = 511,
+ FMP_DUPLICATE_OPEN = 512,
+ FMP_PLUGIN_NOFUNC = 600
+} fmpStat;
+
+
+typedef enum {
+ FMP_PATH = 0,
+ FMP_NFS = 1,
+ FMP_CIFS = 2,
+ FMP_FMP = 3,
+ FMP_FS_ONLY = 4,
+ FMP_SHARE = 5,
+ FMP_MOUNT = 6,
+ FMP_CIFSV2 = 7,
+ FMP_UNC = 8
+} nativeProtocol;
+
+
+#define FMP_MAX_PATH_LEN 1024
+
+
+/*
+ * Encoding type for genString
+ */
+
+typedef enum {
+ FMP_ASCII = 0,
+ FMP_UTF8 = 1,
+ FMP_UNICODE1 = 2
+} encoding;
+
+typedef enum {
+ FMP_DISK_IDENTIFIER_SIGNATURE = 0,
+ FMP_DISK_IDENTIFIER_SERIAL = 1
+} fmpDiskIdentifierType;
+
+typedef enum {
+ FMP_VOLUME_DISK = 0,
+ FMP_VOLUME_SLICE = 1,
+ FMP_VOLUME_STRIPE = 2,
+ FMP_VOLUME_META = 3
+}fmpVolumeType;
+
+/*
+ * Extent States
+ */
+typedef enum {
+ FMP_VALID_DATA = 0,
+ FMP_INVALID_DATA = 1,
+ FMP_NONE_DATA = 2
+} extentState;
+
+
+#define FMP_MAX_PATH_LEN 1024
+
+/*
+ * Query Command
+ */
+typedef enum {
+ FMP_SCSI_INQUIRY = 0,
+ FMP_DART_STAMP = 1
+} queryCmd;
+
+
+#define MAX_MSG_SIZE 256 /* For wireshark messages */
+/*
+extern int hf_fmp_fsID;
+extern int hf_fmp_fsBlkSz;
+extern int hf_fmp_sessionHandle;
+extern int hf_fmp_fmpFHandle;
+extern int hf_fmp_msgNum;
+extern int hf_fmp_fileSize;
+extern int hf_fmp_firstLogBlk;
+extern int hf_fmp_numBlksReq;
+extern int hf_fmp_cookie;
+*/
+int dissect_fmp_status(tvbuff_t *, int, proto_tree *, int *);
+int dissect_fmp_extentList(tvbuff_t *, int, packet_info *, proto_tree *);
+
+#endif