From 4b5206bcf18c71ecc1291219af560298bf7517e3 Mon Sep 17 00:00:00 2001 From: Nathaniel Clark Date: Tue, 9 Jan 2018 08:04:29 -0500 Subject: [PATCH] LU-6353 contrib: Remove wireshark plugin Wireshark dissection has been pushed upstream: https://code.wireshark.org/review/24795 [lnet] https://code.wireshark.org/review/24800 [lustre] Both patches have landed to wireshark master. Dissectors were ported to wireshark master and significantly expaneded and cleaned up. Test-Parameters: trivial Signed-off-by: Nathaniel Clark Change-Id: I0a9d54634599cdb7f9169f1186c58fa96666b246 Reviewed-on: https://review.whamcloud.com/30602 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Doug Oucharek --- contrib/scripts/gerrit_checkpatch.py | 1 - lustre/contrib/wireshark/Makefile | 130 - lustre/contrib/wireshark/README | 92 - .../lustre-wireshark-plugins-template.spec | 36 - lustre/contrib/wireshark/lustre_dlm_flags_wshark.c | 364 - lustre/contrib/wireshark/packet-lnet.c | 1067 -- lustre/contrib/wireshark/packet-lustre.c | 12226 ------------------- lustre/contrib/wireshark/wireshark-compat.h | 25 - lustre/contrib/wireshark/wsbuild | 243 - lustre/contrib/wireshark/wsconfig.sh | 191 - 10 files changed, 14375 deletions(-) delete mode 100644 lustre/contrib/wireshark/Makefile delete mode 100644 lustre/contrib/wireshark/README delete mode 100644 lustre/contrib/wireshark/lustre-wireshark-plugins-template.spec delete mode 100644 lustre/contrib/wireshark/lustre_dlm_flags_wshark.c delete mode 100644 lustre/contrib/wireshark/packet-lnet.c delete mode 100644 lustre/contrib/wireshark/packet-lustre.c delete mode 100644 lustre/contrib/wireshark/wireshark-compat.h delete mode 100755 lustre/contrib/wireshark/wsbuild delete mode 100755 lustre/contrib/wireshark/wsconfig.sh diff --git a/contrib/scripts/gerrit_checkpatch.py b/contrib/scripts/gerrit_checkpatch.py index cd77982..28b0073 100755 --- a/contrib/scripts/gerrit_checkpatch.py +++ b/contrib/scripts/gerrit_checkpatch.py @@ -73,7 +73,6 @@ GERRIT_CHANGE_NUMBER = os.getenv('GERRIT_CHANGE_NUMBER', None) CHECKPATCH_PATHS = _getenv_list('CHECKPATCH_PATHS', ['checkpatch.pl']) CHECKPATCH_ARGS = os.getenv('CHECKPATCH_ARGS','--show-types -').split(' ') CHECKPATCH_IGNORED_FILES = _getenv_list('CHECKPATCH_IGNORED_FILES', [ - 'lustre/contrib/wireshark/packet-lustre.c', 'lustre/ptlrpc/wiretest.c', 'lustre/utils/wiretest.c', '*.patch']) diff --git a/lustre/contrib/wireshark/Makefile b/lustre/contrib/wireshark/Makefile deleted file mode 100644 index 885319f..0000000 --- a/lustre/contrib/wireshark/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -# Makefile to create the Lustre/LNet plugins for Wireshark. -# It is intended to be used by script `wsbuild´ that will buil -# a RPM for wireshark and a separate RPM for the Lustre/LNet plugins. -# -# All configuration should be performed with help of shell script -# `wsconfigs.sh' (see can-edit sections). -# -# When using as a stand-alone makefile, set the macros WS_HOME, -# PLUGIN_DIR and PLUGIN_COMPILE_FLAGS to the values associated with -# your wireshark installation. -# Alternatively modify `wsconfigs.sh´ accordingly to your wireshar -# installation, source wsconfigs.sh and build with help of: -# -# make -e -f Makefile -# - -# -# Minimum Wireshark Version - This should match the README file. -# -MIN_WIRESHARK_VERSION=1.6.8 - -# Installation directory of the Wireshark source code -# Note: Leave the macro undefined when using the wsbuild script. -# -# WS_HOME = -WS_HOME = - -# Installation directory for the (compiled) Wireshark plugins -# Change the value of the following macro to the installation directory -# of the Wireshark plugins for your installation -# -# Note: When using the cbuild script leave the macro undefined -# (default: /usr/lib/wireshark/plugins/$(WS_VERSION)) -# -# For non-root and non-rpmbuilds you might want to set the value to -# ${HOME}/.wireshark/plugins -PLUGIN_DIR = - -CFLAGS = -DINET6 -D_U_=__attribute__\(\(unused\)\) -Wall -Wpointer-arith -g \ - -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -fPIC -DPIC - -ifdef WS_HOME -#INCS = $(shell echo "-I${WS_HOME} `./wsconfig.sh --libs --cflags glib-2.0`") -INCS := $(shell echo "-I${WS_HOME} $(PLUGIN_COMPILE_FLAGS)") -DHAVE_CONFIG_H - -else -INCS := $(shell ./wsconfig.sh --libs --cflags wireshark) \ - $(shell ./wsconfig.sh --libs --cflags glib-2.0) \ - -I../../include \ - $(shell echo "$(PLUGIN_COMPILE_FLAGS)") -DHAVE_CONFIG_H -WS_VERSION := $(shell ./wsconfig.sh --modversion wireshark) -LIBDIR := $(shell ./wsconfig.sh --variable=libdir wireshark) -CHECK=./wsconfig.sh --atleast-version=${MIN_WIRESHARK_VERSION} wireshark -endif - -CFLAGS += $(INCS) - -SRCS_LNET = packet-lnet.c -SRCS_LUSTRE = packet-lustre.c - -CC = gcc - -OBJS_LNET := $(foreach src, $(SRCS_LNET), $(src:.c=.o)) -OBJS_LUSTRE := $(foreach src, $(SRCS_LUSTRE), $(src:.c=.o)) - -PLUGINS=lnet.so lustre.so - -ifeq (${CHECK},) - CHECK=true -endif - -ifneq ($(shell id -u), 0) - ifndef DESTDIR - PLUGIN_DIR = ${HOME}/.wireshark/plugins - endif -endif - -ifndef PLUGIN_DIR - ifndef WS_VERSION - ifndef WS_HOME - $(error "WS_HOME not defined") - endif - WS_CONFIG=$(WS_HOME)/config.h - WS_VERSION:=$(shell sed "s/^.define[[:space:]]*VERSION[[:space:]]*\"\(.*\)\"/\1/p;d" ${WS_CONFIG}) - endif - ifeq (${LIBDIR},) - ifeq ($(shell if [ -r /etc/SuSE-release ] ; then echo 0; else echo 1; fi ), 0) - LIBDIR=/usr/lib64 - else - LIBDIR=/usr/lib - endif - endif - PLUGIN_DIR = $(DESTDIR)$(LIBDIR)/wireshark/plugins/$(WS_VERSION) -endif - - -all: check $(PLUGINS) lustre_dlm_flags_wshark.c - -lustre_dlm_flags_wshark.c : - cd ../../../contrib/bit-masks ; \ - make - test -f lustre_dlm_flags_wshark.c - -check: - @if ! ${CHECK}; then\ - echo "Wireshark must be at least version ${MIN_WIRESHARK_VERSION} (installed ${WS_VERSION})";\ - false; \ - fi - -lustre.so: $(OBJS_LUSTRE) - $(CC) -shared $(OBJS_LUSTRE) -o $@ - -lnet.so: $(OBJS_LNET) - $(CC) -shared $(OBJS_LNET) -o $@ - -install: all - mkdir -p $(PLUGIN_DIR) - install $(PLUGINS) $(PLUGIN_DIR)/ - -help: - @echo "Includes: "$(INCS) - @echo "Install Dir: "$(PLUGIN_DIR) - -clean: - rm -f $(PLUGINS) $(OBJS_LNET) $(OBJS_LUSTRE) - -extraclean: clean - (cd $(PLUGIN_DIR)/; rm -f $(PLUGINS)) - -.PHONEY: check help install extraclean clean all diff --git a/lustre/contrib/wireshark/README b/lustre/contrib/wireshark/README deleted file mode 100644 index 780e6b9..0000000 --- a/lustre/contrib/wireshark/README +++ /dev/null @@ -1,92 +0,0 @@ -Instructions for Building Lustre/LNet Wireshark Support -------------------------------------------------------- - -To compile the RPMs for Wireshark and the Lustre/LNet wireshark -plugins, please follow the instruction in paragraph -'Build with packaging support'. - -In case you prefer a lightweight compilation and installation without -any packging 'overhead', please follow the instruction in paragraph -'Build without packaging support'. - - -Supported distributions: - - CentOS 6.3 i686, x86_64 - SLES 11 SP1 x86_64 - SLES 11 SP2 x86_64 - - -Software Pre-requisits: -To run and compile wirkshark the following software needs to be installed - gtk2 - gtk2-devel - glib2 - libpcap - libpcap-devel - perl - - -Build with packaging support -------------------------------- -Simply type ./wsbuild on a node that match one of the disribution specified -above to create the RPMs for wirkshark and the associated Lustre/LNet plugins. - -Upon success the build results can be found in directory -'wireshark-/packaging/rpm/RPMS/x86_64' relative to this directory. -The RPMs are: - - wireshark--2.x86_64.rpm - lustre-wireshark-plugins--2.x86_64.rpm - -If one of the software components that need to be available for -compilation (see 'Software Pre-requisits:' above) is missing the script will -print an appropiate error message. The wireshark 'configure' script might also -detect missing pre-requisite software. In both cases the software needs to be -installed before. - -The build can be configured with help of the source file 'wsconfig.sh', but should -out of the box. - - -Build without packaging support -------------------------------- -Pre-requisits: - -- source tree for Wireshark (recommend version 1.6.8) -- build Wireshark according to the instruction in the source tree. -- install Wireshark (usually "make install") - -Building Lustre/LNet Dissectors: - -- edit the Makefile in the same directory as this README. -- change this line to reflect where your Wireshark source tree is: - -INCS = -I$(HOME)/wireshark-1.6.8 `pkg-config --libs --cflags glib-2.0` - -- change this line to reflect where the Wireshark plugin directory is: - -PLUGIN_DIR = /usr/local/lib/wireshark/plugins/1.6.8 - -- save the Makefile after these changes. -- run "make". (you may need to be "root" for this as it will try to copy the - dissectors to the Wireshark plugin directory. - -As long as the make builds with no errors, you should have the dissectors built -and installed for your version of Wireshark. - -To verify that the plugins are installed: -- run wirewhark (typing "wireshark" from the command line is usually good - enough). -- Select "About Wireshark" from the Help menu. -- Click on the "Plugins" tab of the About window. -- Look in the list for the Lustre and LNet plugins. - -If they are there, the plugins are installed. If not, something went wrong -in the build process. - -Note: You can use tcpdump to capture packets on an Ethernet network, or -ibdump to capture packets on an Infiniband network. Tcpdump is usually already -installed on most Linux distros. You can get ibdump from this link: - -http://www.mellanox.com/content/pages.php?pg=products_dyn&product_family=110&menu_section=34 diff --git a/lustre/contrib/wireshark/lustre-wireshark-plugins-template.spec b/lustre/contrib/wireshark/lustre-wireshark-plugins-template.spec deleted file mode 100644 index 54b830a..0000000 --- a/lustre/contrib/wireshark/lustre-wireshark-plugins-template.spec +++ /dev/null @@ -1,36 +0,0 @@ -%define ver XXX-LUSTRE-PLUGIN-VERSION-XXX -%define rel 2 -%define prefix /usr - -Summary: Lustre plugins for wireshark -Name: XXX-LUSTRE-PLUGIN-RPM-NAME-XXX -Version: %ver -Release: %rel -License: GPL -Group: Networking/Utilities -Source: %{name}-%{version}.tar.bz2 -URL: https://wiki.hpdd.intel.com/ -BuildRoot: %{_tmpdir}/lustre-wireshark-%{PACKAGE_VERSION}-root -Requires: wireshark >= 1.6.8 -BuildRequires: wireshark-devel - -%description -Plugins for wireshark to enable monitoring of Lustre/LNet network traffic. - -%prep -%setup -make -e -f Makefile all > make-plugins.log 2>&1 - -%install -rm -rf \${RPM_BUILD_ROOT} -make DESTDIR=\${RPM_BUILD_ROOT} -e -f Makefile install - -%clean -rm -rf \${RPM_BUILD_ROOT} - -%files -%defattr(-, root, root) -%doc README -%{_libdir}/wireshark/plugins/*/*.so - -%changelog diff --git a/lustre/contrib/wireshark/lustre_dlm_flags_wshark.c b/lustre/contrib/wireshark/lustre_dlm_flags_wshark.c deleted file mode 100644 index c94867e..0000000 --- a/lustre/contrib/wireshark/lustre_dlm_flags_wshark.c +++ /dev/null @@ -1,364 +0,0 @@ -/** - * \file lustre_dlm_flags_wshark.c - * - * wireshark definitions. This file contains the ldlm lock flag bits - * that can be transmitted over the wire. There are many other bits, - * but they are not transmitted and not handled here. - */ -#ifdef WSHARK_HEAD - -static int hf_lustre_ldlm_fl_lock_changed = -1; -static int hf_lustre_ldlm_fl_block_granted = -1; -static int hf_lustre_ldlm_fl_block_conv = -1; -static int hf_lustre_ldlm_fl_block_wait = -1; -static int hf_lustre_ldlm_fl_speculative = -1; -static int hf_lustre_ldlm_fl_ast_sent = -1; -static int hf_lustre_ldlm_fl_replay = -1; -static int hf_lustre_ldlm_fl_intent_only = -1; -static int hf_lustre_ldlm_fl_has_intent = -1; -static int hf_lustre_ldlm_fl_flock_deadlock = -1; -static int hf_lustre_ldlm_fl_discard_data = -1; -static int hf_lustre_ldlm_fl_no_timeout = -1; -static int hf_lustre_ldlm_fl_block_nowait = -1; -static int hf_lustre_ldlm_fl_test_lock = -1; -static int hf_lustre_ldlm_fl_cancel_on_block = -1; -static int hf_lustre_ldlm_fl_cos_incompat = -1; -static int hf_lustre_ldlm_fl_no_expansion = -1; -static int hf_lustre_ldlm_fl_deny_on_contention = -1; -static int hf_lustre_ldlm_fl_ast_discard_data = -1; - -const value_string lustre_ldlm_flags_vals[] = { - {LDLM_FL_LOCK_CHANGED, "LDLM_FL_LOCK_CHANGED"}, - {LDLM_FL_BLOCK_GRANTED, "LDLM_FL_BLOCK_GRANTED"}, - {LDLM_FL_BLOCK_CONV, "LDLM_FL_BLOCK_CONV"}, - {LDLM_FL_BLOCK_WAIT, "LDLM_FL_BLOCK_WAIT"}, - {LDLM_FL_SPECULATIVE, "LDLM_FL_SPECULATIVE"}, - {LDLM_FL_AST_SENT, "LDLM_FL_AST_SENT"}, - {LDLM_FL_REPLAY, "LDLM_FL_REPLAY"}, - {LDLM_FL_INTENT_ONLY, "LDLM_FL_INTENT_ONLY"}, - {LDLM_FL_HAS_INTENT, "LDLM_FL_HAS_INTENT"}, - {LDLM_FL_FLOCK_DEADLOCK, "LDLM_FL_FLOCK_DEADLOCK"}, - {LDLM_FL_DISCARD_DATA, "LDLM_FL_DISCARD_DATA"}, - {LDLM_FL_NO_TIMEOUT, "LDLM_FL_NO_TIMEOUT"}, - {LDLM_FL_BLOCK_NOWAIT, "LDLM_FL_BLOCK_NOWAIT"}, - {LDLM_FL_TEST_LOCK, "LDLM_FL_TEST_LOCK"}, - {LDLM_FL_CANCEL_ON_BLOCK, "LDLM_FL_CANCEL_ON_BLOCK"}, - {LDLM_FL_COS_INCOMPAT, "LDLM_FL_COS_INCOMPAT"}, - {LDLM_FL_NO_EXPANSION, "LDLM_FL_NO_EXPANSION"}, - {LDLM_FL_DENY_ON_CONTENTION, "LDLM_FL_DENY_ON_CONTENTION"}, - {LDLM_FL_AST_DISCARD_DATA, "LDLM_FL_AST_DISCARD_DATA"}, - { 0, NULL } -}; - -/* IDL: struct ldlm_reply { */ -/* IDL: uint32 lock_flags; */ -/* IDL: uint32 lock_padding; */ -/* IDL: struct ldlm_lock_desc { */ -/* IDL: } lock_desc; */ -/* IDL: struct lustre_handle { */ -/* IDL: } lock_handle; */ -/* IDL: uint64 lock_policy_res1; */ -/* IDL: uint64 lock_policy_res2; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_lock_flags( - tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_flags); - } - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lock_changed); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_granted); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_conv); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_wait); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_speculative); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_ast_sent); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_replay); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_intent_only); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_has_intent); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_flock_deadlock); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_discard_data); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_timeout); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_nowait); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_test_lock); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel_on_block); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cos_incompat); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_expansion); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_deny_on_contention); - return - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_ast_discard_data); -} -#endif /* WSHARK_HEAD */ - -#ifdef WSHARK_INIT_DATA - { - /* p_id */ &hf_lustre_ldlm_fl_lock_changed, - /* hfinfo */ { - /* name */ "LDLM_FL_LOCK_CHANGED", - /* abbrev */ "lustre.ldlm_fl_lock_changed", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_LOCK_CHANGED, - /* blurb */ "extent, mode, or resource changed", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_block_granted, - /* hfinfo */ { - /* name */ "LDLM_FL_BLOCK_GRANTED", - /* abbrev */ "lustre.ldlm_fl_block_granted", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_BLOCK_GRANTED, - /* blurb */ "Server placed lock on granted list, or a recovering client wants\n" - "the lock added to the granted list, no questions asked.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_block_conv, - /* hfinfo */ { - /* name */ "LDLM_FL_BLOCK_CONV", - /* abbrev */ "lustre.ldlm_fl_block_conv", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_BLOCK_CONV, - /* blurb */ "Server placed lock on conv list, or a recovering client wants the lock\n" - "added to the conv list, no questions asked.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_block_wait, - /* hfinfo */ { - /* name */ "LDLM_FL_BLOCK_WAIT", - /* abbrev */ "lustre.ldlm_fl_block_wait", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_BLOCK_WAIT, - /* blurb */ "Server placed lock on wait list, or a recovering client wants\n" - "the lock added to the wait list, no questions asked.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_speculative, - /* hfinfo */ { - /* name */ "LDLM_FL_SPECULATIVE", - /* abbrev */ "lustre.ldlm_fl_speculative", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_SPECULATIVE, - /* blurb */ "Lock request is speculative/asynchronous, and cannot\n" - "wait for any reason. Fail the lock request if any blocking locks\n" - "encountered." - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_ast_sent, - /* hfinfo */ { - /* name */ "LDLM_FL_AST_SENT", - /* abbrev */ "lustre.ldlm_fl_ast_sent", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_AST_SENT, - /* blurb */ "blocking or cancel packet was queued for sending.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_replay, - /* hfinfo */ { - /* name */ "LDLM_FL_REPLAY", - /* abbrev */ "lustre.ldlm_fl_replay", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_REPLAY, - /* blurb */ "Lock is being replayed. This could probably be implied by the fact that\n" - "one of BLOCK_{GRANTED,CONV,WAIT} is set, but that is pretty dangerous.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_intent_only, - /* hfinfo */ { - /* name */ "LDLM_FL_INTENT_ONLY", - /* abbrev */ "lustre.ldlm_fl_intent_only", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_INTENT_ONLY, - /* blurb */ "Don't grant lock, just do intent.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_has_intent, - /* hfinfo */ { - /* name */ "LDLM_FL_HAS_INTENT", - /* abbrev */ "lustre.ldlm_fl_has_intent", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_HAS_INTENT, - /* blurb */ "lock request has intent", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_flock_deadlock, - /* hfinfo */ { - /* name */ "LDLM_FL_FLOCK_DEADLOCK", - /* abbrev */ "lustre.ldlm_fl_flock_deadlock", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_FLOCK_DEADLOCK, - /* blurb */ "flock deadlock detected", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_discard_data, - /* hfinfo */ { - /* name */ "LDLM_FL_DISCARD_DATA", - /* abbrev */ "lustre.ldlm_fl_discard_data", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_DISCARD_DATA, - /* blurb */ "discard (no writeback) on cancel", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_no_timeout, - /* hfinfo */ { - /* name */ "LDLM_FL_NO_TIMEOUT", - /* abbrev */ "lustre.ldlm_fl_no_timeout", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_NO_TIMEOUT, - /* blurb */ "Blocked by group lock - wait indefinitely", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_block_nowait, - /* hfinfo */ { - /* name */ "LDLM_FL_BLOCK_NOWAIT", - /* abbrev */ "lustre.ldlm_fl_block_nowait", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_BLOCK_NOWAIT, - /* blurb */ "Server told not to wait if blocked. For AGL, OST will not send\n" - "glimpse callback.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_test_lock, - /* hfinfo */ { - /* name */ "LDLM_FL_TEST_LOCK", - /* abbrev */ "lustre.ldlm_fl_test_lock", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_TEST_LOCK, - /* blurb */ "return blocking lock", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_cancel_on_block, - /* hfinfo */ { - /* name */ "LDLM_FL_CANCEL_ON_BLOCK", - /* abbrev */ "lustre.ldlm_fl_cancel_on_block", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_CANCEL_ON_BLOCK, - /* blurb */ "Immediatelly cancel such locks when they block some other locks. Send\n" - "cancel notification to original lock holder, but expect no reply. This is\n" - "for clients (like liblustre) that cannot be expected to reliably response\n" - "to blocking AST.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_cos_incompat, - /* hfinfo */ { - /* name */ "LDLM_FL_COS_INCOMPAT", - /* abbrev */ "lustre.ldlm_fl_cos_incompat", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_COS_INCOMPAT, - /* blurb */ "Flag whether a lock is enqueued from a distributed transaction, and the\n" - "requesting lock mode is PW/EX, if so, it will check compatibility with COS\n" - "locks, and different from original COS semantic, transactions from the same\n" - "client is also treated as lock conflict.", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_no_expansion, - /* hfinfo */ { - /* name */ "LDLM_FL_NO_EXPANSION", - /* abbrev */ "lustre.ldlm_fl_NO_EXPANSION", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_NO_EXPANSION, - /* blurb */ "Do not expand this lock. Grant it only on the extent\n" - "requested. Used for manually requested locks from the client\n" - "(LU_LADVISE_LOCKAHEAD)." - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_deny_on_contention, - /* hfinfo */ { - /* name */ "LDLM_FL_DENY_ON_CONTENTION", - /* abbrev */ "lustre.ldlm_fl_deny_on_contention", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_DENY_ON_CONTENTION, - /* blurb */ "measure lock contention and return -EUSERS if locking contention is high", - /* id */ HFILL - } - }, - { - /* p_id */ &hf_lustre_ldlm_fl_ast_discard_data, - /* hfinfo */ { - /* name */ "LDLM_FL_AST_DISCARD_DATA", - /* abbrev */ "lustre.ldlm_fl_ast_discard_data", - /* type */ FT_BOOLEAN, - /* display */ 32, - /* strings */ TFS(&lnet_flags_set_truth), - /* bitmask */ LDLM_FL_AST_DISCARD_DATA, - /* blurb */ "These are flags that are mapped into the flags and ASTs of blocking locks\n" - "Add FL_DISCARD to blocking ASTs", - /* id */ HFILL - } - }, - -#endif /* WSHARK_INIT_DATA */ diff --git a/lustre/contrib/wireshark/packet-lnet.c b/lustre/contrib/wireshark/packet-lnet.c deleted file mode 100644 index 1462618..0000000 --- a/lustre/contrib/wireshark/packet-lnet.c +++ /dev/null @@ -1,1067 +0,0 @@ -/* packet-lnet.c - * Lnet packet dissection - * Author: Laurent George - * based on packet-agentx.c and packet-afs.c - * 20080903 - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1999 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. - * - * Copyright (c) 2012, 2017, Intel Corporation. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "wireshark-compat.h" - -/* This value inidcates whether we are processing an Infiniband packet, or - TCP. It gets set to the extra bytes the IB header requires if IB, - or zero if TCP. */ -static guint ib_lnd_extra_bytes; - -/* How much data has at least to be available to be able to determine the - * length of the lnet message. - * Note: This is only used for TCP-based LNet packets. Not used for Infiniband. - */ -#define LNET_HEADER_LEN 52 -#define LNET_NID_DEST_OFFSET (24 + ib_lnd_extra_bytes) -#define LNET_NID_SRC_OFFSET (32 + ib_lnd_extra_bytes) -#define LNET_MSG_TYPE_OFFSET (48 + ib_lnd_extra_bytes) -#define LNET_PTL_INDEX_OFFSET_PUT (88 + ib_lnd_extra_bytes) - -#define EXTRA_IB_HEADER_SIZE 24 - -/* TCP ports used for LNet. */ -static guint global_lnet_tcp_port = 988; -static guint lnet_tcp_port = 988; - -void proto_reg_handoff_lnet(void); - -/* Define the lnet proto */ -static int proto_lnet = -1; - -static int hf_lnet_src_nid = -1 ; -static int hf_lnet_src_nid_addr = -1 ; -static int hf_lnet_src_nid_lnet_type = -1; -static int hf_lnet_src_nid_interface = -1 ; - -static int hf_lnet_ksm_type = -1; -static int hf_lnet_ksm_csum = -1; -static int hf_lnet_ksm_zc_req_cookie = -1; -static int hf_lnet_ksm_zc_ack_cookie = -1; - -static int hf_lnet_ib_magic = -1; -static int hf_lnet_ib_version = -1; -static int hf_lnet_ib_type = -1; -static int hf_lnet_ib_credits = -1; -static int hf_lnet_ib_nob = -1; -static int hf_lnet_ib_csum = -1; -static int hf_lnet_ib_srcstamp = -1; -static int hf_lnet_ib_dststamp = -1; - -static int hf_lnet_dest_nid = -1 ; -static int hf_lnet_dest_nid_addr = -1 ; -static int hf_lnet_dest_nid_lnet_type = -1 ; -static int hf_lnet_dest_nid_interface = -1 ; - -static int hf_lnet_dest_pid = -1 ; -static int hf_lnet_src_pid = -1 ; - -static int hf_lnet_msg_type = -1 ; -static int hf_lnet_payload_length = -1; -static int hf_lnet_payload = -1 ; -static int hf_lnet_msg_header = -1 ; -static int hf_lnet_msg_filler = -1 ; - -static int hf_dst_wmd = -1 ; -static int hf_dst_wmd_interface = -1 ; -static int hf_dst_wmd_object = -1 ; - -static int hf_match_bits = -1 ; -static int hf_mlength = -1 ; - -static int hf_hdr_data = -1 ; -static int hf_ptl_index = -1 ; -static int hf_offset = -1 ; -static gint ett_lnet = -1; - -static int hf_src_offset = -1; -static int hf_sink_length = -1; - -static int hf_hello_incarnation = -1 ; -static int hf_hello_type = -1 ; - -static gint ett_lnet_dest_nid= -1; -static gint ett_lnet_src_nid= -1; - -tvbuff_t *next_tvb; - -/* Breakdown of a NID. */ -typedef struct t_nid { - guint32 addr; - guint16 interface; - guint16 proto; -} t_nid ; - -/*static heur_dissector_list_t heur_subdissector_list; */ -static dissector_table_t subdissector_table; - -static const value_string lndnames[] = { - { 1, "QSWLND "}, - { 2, "SOCKLND "}, - { 3, "GMLND "}, - { 4, "PTLLND "}, - { 5, "O2IBLND "}, - { 6, "CIBLND "}, - { 7, "OPENIBLND"}, - { 8, "IIBLND "}, - { 9, "LOLND "}, - { 10,"RALND "}, - { 11,"VIBLND "}, - { 12,"MXLND "} -}; - -enum MSG_type{ - LNET_MSG_ACK = 0, - LNET_MSG_PUT, - LNET_MSG_GET, - LNET_MSG_REPLY, - LNET_MSG_HELLO, -} ; - -static const value_string lnet_msg_type_t[] = { - { LNET_MSG_ACK , "ACK"}, - { LNET_MSG_PUT , "PUT"}, - { LNET_MSG_GET , "GET"}, - { LNET_MSG_REPLY, "REPLY"}, - { LNET_MSG_HELLO, "HELLO"} -}; - -/* Port Index numbers. Defined in lustre/include/lustre/lustre_idl.h */ -static const value_string portal_indices[] = { - { 0 , "LNET_RESERVED_PORTAL"}, - { 1 , "CONNMGR_REQUEST_PORTAL"}, - { 2 , "CONNMGR_REPLY_PORTAL"}, - { 3 , "OSC_REQUEST_PORTAL(obsolete)"}, - { 4 , "OSC_REPLY_PORTAL"}, - { 5 , "OSC_BULK_PORTAL(obsolete)"}, - { 6 , "OST_IO_PORTAL"}, - { 7 , "OST_CREATE_PORTAL"}, - { 8 , "OST_BULK_PORTAL"}, - { 9 , "MDC_REQUEST_PORTAL(obsolete)"}, - { 10 , "MDC_REPLY_PORTAL"}, - { 11 , "MDC_BULK_PORTAL(obsolete)"}, - { 12 , "MDS_REQUEST_PORTAL"}, - { 13 , "MDS_REPLY_PORTAL(obsolete)"}, - { 14 , "MDS_BULK_PORTAL"}, - { 15 , "LDLM_CB_REQUEST_PORTAL"}, - { 16 , "LDLM_CB_REPLY_PORTAL"}, - { 17 , "LDLM_CANCEL_REQUEST_PORTAL"}, - { 18 , "LDLM_CANCEL_REPLY_PORTAL"}, - { 19 , "PTLBD_REQUEST_PORTAL(obsolete)"}, - { 20 , "PTLBD_REPLY_PORTAL(obsolete)"}, - { 21 , "PTLBD_BULK_PORTAL(obsolete)"}, - { 22 , "MDS_SETATTR_PORTAL"}, - { 23 , "MDS_READPAGE_PORTAL"}, - { 24 , "MDS_MDS_PORTAL"}, - { 25 , "MGC_REPLY_PORTAL"}, - { 26 , "MGS_REQUEST_PORTAL"}, - { 27 , "MGS_REPLY_PORTAL"}, - { 28 , "OST_REQUEST_PORTAL"}, - { 29 , "FLD_REQUEST_PORTAL"}, - { 30 , "SEQ_METADATA_PORTAL"}, - { 31 , "SEQ_DATA_PORTAL"}, - { 32 , "SEQ_CONTROLLER_PORTAL"}, - { 33 , "MGS_BULK_PORTAL"}, - { 50 , "SRPC_REQUEST_PORTAL"}, - { 51 , "SRPC_FRAMEWORK_REQUEST_PORTAL"}, - { 52 , "SRPC_RDMA_PORTAL"} -}; - -/* SOCKLND constants. */ -#define KSOCK_MSG_NOOP 0xc0 /* ksm_u empty */ -#define KSOCK_MSG_LNET 0xc1 /* lnet msg */ - -static const value_string ksm_type_t[] = { - {0xc0, "KSOCK_MSG_NOOP"},/* ksm_u empty */ - {0xc1, "KSOCK_MSG_LNET"} /* lnet msg */ -}; - -/* O2IBLND constants. */ -#define LNET_PROTO_IB_MAGIC 0x0be91b91 - -static const value_string ib_version_t[] = { - {0x11, "1"}, - {0x12, "2"} -}; - -#define IBLND_MSG_CONNREQ 0xc0 /* connection request */ -#define IBLND_MSG_CONNACK 0xc1 /* connection acknowledge */ -#define IBLND_MSG_NOOP 0xd0 /* nothing (just credits) */ -#define IBLND_MSG_IMMEDIATE 0xd1 /* immediate */ -#define IBLND_MSG_PUT_REQ 0xd2 /* putreq (src->sink) */ -#define IBLND_MSG_PUT_NAK 0xd3 /* completion (sink->src) */ -#define IBLND_MSG_PUT_ACK 0xd4 /* putack (sink->src) */ -#define IBLND_MSG_PUT_DONE 0xd5 /* completion (src->sink) */ -#define IBLND_MSG_GET_REQ 0xd6 /* getreq (sink->src) */ -#define IBLND_MSG_GET_DONE 0xd7 /* completion (src->sink: all OK) */ - -static const value_string ib_type_t[] = { - {0xc0, "IBLND_MSG_CONNREQ"}, - {0xc1, "IBLND_MSG_CONNACK"}, - {0xd0, "IBLND_MSG_NOOP"}, - {0xd1, "IBLND_MSG_IMMEDIATE"}, - {0xd2, "IBLND_MSG_PUT_REQ"}, - {0xd3, "IBLND_MSG_PUT_NAK"}, - {0xd4, "IBLND_MSG_PUT_ACK"}, - {0xd5, "IBLND_MSG_PUT_DONE"}, - {0xd6, "IBLND_MSG_GET_REQ"}, - {0xd7, "IBLND_MSG_GET_DONE"} -}; - -static gboolean little_endian = TRUE; - -#ifndef ENABLE_STATIC -const gchar version[] = VERSION; - -/* Start the functions we need for the plugin stuff */ - -void -plugin_register(void) -{ - extern void proto_register_lnet(void); - - proto_register_lnet(); -} - -void -plugin_reg_handoff(void) -{ - extern void proto_reg_handoff_lnet(void); - - proto_reg_handoff_lnet(); -} -#endif - -static t_nid -get_nid(tvbuff_t *tvb, gint offset) -{ - t_nid nid ; - - nid.addr = g_htonl(tvb_get_ipv4(tvb, offset)); - nid.interface = tvb_get_letohs(tvb, offset + 4); - nid.proto = tvb_get_letohs(tvb, offset + 6); - return nid ; -} - -static int dissect_csum(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - guint32 csum; - csum = tvb_get_letohl(tvb, offset); - if (!csum) - proto_tree_add_text(tree, tvb, offset, 4, "Checksum Disabled"); - else { - if (ib_lnd_extra_bytes) - proto_tree_add_item(tree, hf_lnet_ib_csum, tvb, offset, - 4, little_endian); - else - proto_tree_add_item(tree, hf_lnet_ksm_csum, tvb, offset, - 4, little_endian); - } - - return offset + 4; -} - - -static int dissect_req_cookie(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - guint32 req; - req= tvb_get_letoh64(tvb, offset); - if (!req) - proto_tree_add_text(tree, tvb, offset, 8, "Ack not required"); - else - proto_tree_add_item(tree, hf_lnet_ksm_zc_req_cookie, tvb, offset, 8, little_endian); - return offset + 8; -} - -static int dissect_ack_cookie(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - guint32 ack; - ack= tvb_get_letoh64(tvb, offset); - if (!ack) - proto_tree_add_text(tree, tvb, offset, 8, "Not ack"); - else - proto_tree_add_item(tree, hf_lnet_ksm_zc_ack_cookie, tvb, offset, 8, little_endian); - return offset + 8; -} - -#ifdef WIRESHARK_COMPAT -static void -dissect_ksock_msg_noop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -#else -static int -dissect_ksock_msg_noop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, - void *ignored) -#endif -{ - guint32 offset; - offset=0; - proto_tree_add_item(tree, hf_lnet_ksm_type, tvb, offset, 4, TRUE);offset+=4; - offset=dissect_csum(tvb,tree,offset); - offset=dissect_req_cookie(tvb, tree, offset); - offset=dissect_ack_cookie(tvb,tree,offset); -#ifndef WIRESHARK_COMPAT - return offset; -#endif -} - - -static int dissect_ksock_msg(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - proto_tree_add_item(tree, hf_lnet_ksm_type, tvb, offset, 4, TRUE);offset+=4; - offset=dissect_csum(tvb,tree,offset); - offset=dissect_req_cookie(tvb, tree, offset); - offset=dissect_ack_cookie(tvb,tree,offset); - return offset; -} - -static int -dissect_ib_msg(tvbuff_t *tvb, proto_tree *tree, int offset) -{ - /* typedef struct - * { - * __u32 ibm_magic; * I'm an ibnal message * - * __u16 ibm_version; * this is my version * - - * __u8 ibm_type; * msg type * - * __u8 ibm_credits; * returned credits * - * __u32 ibm_nob; * # bytes in message * - * __u32 ibm_cksum; * checksum (0 == no - * checksum) * - * __u64 ibm_srcnid; * sender's NID * - * __u64 ibm_srcstamp; * sender's incarnation * - * __u64 ibm_dstnid; * destination's NID * - * __u64 ibm_dststamp; * destination's - * incarnation * - - * union { - * kib_connparams_t connparams; - * kib_immediate_msg_t immediate; - * kib_putreq_msg_t putreq; - * kib_putack_msg_t putack; - * kib_get_msg_t get; - * kib_completion_msg_t completion; - * } WIRE_ATTR ibm_u; - *} WIRE_ATTR kib_msg_t; */ - - t_nid src_nid; - t_nid dst_nid; - guint8 msg_type; - - proto_tree_add_item(tree, hf_lnet_ib_magic, tvb, offset, 4, - little_endian); - offset += 4; - proto_tree_add_item(tree, hf_lnet_ib_version, tvb, offset, 2, - little_endian); - offset += 2; - msg_type = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_lnet_ib_type, tvb, offset, 1, - little_endian); - offset += 1; - proto_tree_add_item(tree, hf_lnet_ib_credits, tvb, offset, 1, - little_endian); - offset += 1; - proto_tree_add_item(tree, hf_lnet_ib_nob, tvb, offset, 4, - little_endian); - offset += 4; - offset = dissect_csum(tvb, tree, offset); - - src_nid = get_nid(tvb, offset); - proto_tree_add_text(tree, tvb, offset, 8, "src_nid = %s@tcp%d", - ip_to_str((guint8 *) &src_nid.addr), - src_nid.interface); - offset += 8; - proto_tree_add_item(tree, hf_lnet_ib_srcstamp, tvb, offset, 8, - little_endian); - offset += 8; - - dst_nid = get_nid(tvb, offset); - proto_tree_add_text(tree, tvb, offset, 8, "dst_nid = %s@tcp%d", - ip_to_str((guint8 *) &dst_nid.addr), - dst_nid.interface); - offset += 8; - proto_tree_add_item(tree, hf_lnet_ib_dststamp, tvb,offset, 8, - little_endian); - offset += 8; - - /* LNet payloads only exist when the LND msg type is IMMEDIATE. - Return a zero offset for all other types. */ - return (msg_type == IBLND_MSG_IMMEDIATE) ? offset : 0; -} - -static int dissect_dest_nid(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - proto_tree_add_item(tree, hf_lnet_dest_nid_addr, tvb, offset, 4, TRUE);offset+=4; - proto_tree_add_item(tree, hf_lnet_dest_nid_interface, tvb, offset, 2, TRUE);offset+=2; - proto_tree_add_item(tree, hf_lnet_dest_nid_lnet_type, tvb, offset, 2, TRUE);offset+=2; - return offset; -} - - -static int dissect_src_nid(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - proto_tree_add_item(tree, hf_lnet_src_nid_addr, tvb, offset, 4, TRUE);offset+=4; - proto_tree_add_item(tree, hf_lnet_src_nid_interface, tvb, offset, 2, TRUE);offset+=2; - proto_tree_add_item(tree, hf_lnet_src_nid_lnet_type, tvb, offset, 2, TRUE);offset+=2; - return offset; -} - -static int dissect_lnet_put(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_) -{ - /* typedef struct lnet_put { - lnet_handle_wire_t ack_wmd; - __u64 match_bits; - __u64 hdr_data; - __u32 ptl_index; - __u32 offset; - } WIRE_ATTR lnet_put_t; */ - - proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,little_endian); offset+=8; - proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,little_endian);offset+=8; - - proto_tree_add_item(tree,hf_match_bits,tvb,offset,8,little_endian);offset+=8; - proto_tree_add_item(tree,hf_hdr_data,tvb,offset,8,little_endian);offset+=8; - col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", - val_to_str(tvb_get_letohl(tvb, offset), - portal_indices, - "Unknown")); /* add some nice value */ - proto_item_append_text(tree, ", %s" , val_to_str(tvb_get_letohl(tvb, - offset), - portal_indices, - "Unknown")); - /* print ptl_index */ - proto_tree_add_item(tree,hf_ptl_index,tvb,offset,4,little_endian);offset+=4; - proto_tree_add_item(tree,hf_offset,tvb,offset,4,little_endian);offset+=4; - return offset ; -} - -static int dissect_lnet_get(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_) -{ - /* typedef struct lnet_get { - lnet_handle_wire_t return_wmd; - __u64 match_bits; - __u32 ptl_index; - __u32 src_offset; - __u32 sink_length; - } WIRE_ATTR lnet_get_t; - */ - - proto_tree_add_item(tree, hf_dst_wmd_interface, - tvb, offset, 8, little_endian); - offset += 8; - proto_tree_add_item(tree, hf_dst_wmd_object, tvb, offset, 8, - little_endian); - offset += 8; - proto_tree_add_item(tree, hf_match_bits, tvb, offset, 8, little_endian); - offset += 8; - col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", - val_to_str(tvb_get_letohl(tvb, offset), - portal_indices, "Unknown")); - proto_item_append_text(tree, ", %s", - val_to_str(tvb_get_letohl(tvb, offset), - portal_indices, "Unknown")); - proto_tree_add_item(tree, hf_ptl_index, tvb, offset, 4, little_endian); - offset += 4; - proto_tree_add_item(tree, hf_src_offset, tvb, offset, 4, little_endian); - offset += 4; - proto_tree_add_item(tree, hf_sink_length, tvb, offset, 4, - little_endian); - offset += 4; - return offset; -} - -static int dissect_lnet_reply(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - /* typedef struct lnet_reply { - lnet_handle_wire_t dst_wmd; - } WIRE_ATTR lnet_reply_t; */ - - proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,little_endian);offset+=8; - proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,little_endian);offset+=8; - - return offset; -} - - -static int dissect_lnet_hello(tvbuff_t * tvb, proto_tree *tree, int offset) -{ - /* typedef struct lnet_hello { - __u64 incarnation; - __u32 type; - } WIRE_ATTR lnet_hello_t; */ - - proto_tree_add_item(tree,hf_hello_incarnation,tvb,offset,8,little_endian); offset+=8; - proto_tree_add_item(tree,hf_hello_type,tvb,offset,4,little_endian); offset+=4; - return offset; -} - -static int dissect_lnet_ack(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_) -{ - /* typedef struct lnet_ack { - lnet_handle_wire_t dst_wmd; - __u64 match_bits; - __u32 mlength; - } WIRE_ATTR lnet_ack_t; */ - - proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,TRUE); offset+=8; - proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,TRUE);offset+=8; - proto_tree_add_item(tree,hf_match_bits,tvb,offset,8, little_endian);offset+=8; - proto_tree_add_item(tree,hf_mlength, tvb,offset,4, little_endian); offset+=4; - return offset ; -} - -#ifdef WIRESHARK_COMPAT -static void dissect_lnet_message(tvbuff_t *, packet_info *, proto_tree *); -#else -static int dissect_lnet_message(tvbuff_t *, packet_info *, proto_tree *, void*); -#endif - -/* The next two length getting routines are only used for KSOCK LNK messages. */ -static guint -get_lnet_message_len(packet_info __attribute__((__unused__))*pinfo, tvbuff_t *tvb, int offset) -{ - guint32 plen; - - /* Get the payload length */ - plen = tvb_get_letohl(tvb, offset + 28 + 24 + ib_lnd_extra_bytes); - /* 24 = ksm header, - 28 = the rest of the - headers */ - - /* That length doesn't include the header; add that in. */ - return plen + 72 + 24 + ib_lnd_extra_bytes; /* +24 == ksock msg - header.. :D */ - -} - -static guint -get_noop_message_len(packet_info __attribute__((__unused__))*pinfo, tvbuff_t *tvb, int offset) -{ - return 24; -} - -static void -dissect_lnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -{ - /* TODO : correct this, now we do a difference between packet with - NOOP and others .. but I don't find how to use pdu_dissect with - a variable length<=LNET_HEADER_LEN */ - ib_lnd_extra_bytes = 0; - switch (tvb_get_letohl(tvb, 0)) { - case KSOCK_MSG_NOOP: -#ifdef WIRESHARK_COMPAT - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 0, - get_noop_message_len, - dissect_ksock_msg_noop); -#else - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 0, - get_noop_message_len, - dissect_ksock_msg_noop, NULL); -#endif - break; - case KSOCK_MSG_LNET: -#ifdef WIRESHARK_COMPAT - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, LNET_HEADER_LEN, - get_lnet_message_len, - dissect_lnet_message); -#else - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, LNET_HEADER_LEN, - get_lnet_message_len, - dissect_lnet_message, NULL); -#endif - break; - } -} - -static int -#ifdef WIRESHARK_COMPAT -dissect_ib_lnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -#else -dissect_ib_lnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) -#endif -{ - /* We can tell if this is an LNet payload by looking at the first - * 32-bit word for our magic number. */ - if (tvb_get_letohl(tvb, 0) != LNET_PROTO_IB_MAGIC) { - /* Not an LNet payload. */ - return 0; - } - - ib_lnd_extra_bytes = EXTRA_IB_HEADER_SIZE; -#ifdef WIRESHARK_COMPAT - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, LNET_HEADER_LEN, - get_lnet_message_len, dissect_lnet_message); -#else - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, LNET_HEADER_LEN, - get_lnet_message_len, dissect_lnet_message, NULL); -#endif - return tvb_length(tvb); -} - -/*----------------------------------------------------------- */ -/* For the conversation */ - -typedef struct { - guint64 match_bits; -} my_entry_t; - - -typedef struct lnet_request_key { - guint64 match_bits ; - guint32 conversation; -} lnet_request_key_t; - -typedef struct lnet_request_val { - guint64 match_bits; - guint32 packet_num_parent; -} lnet_request_val_t; - - -static GHashTable *lnet_request_hash; - -/* - * Hash Functions - */ -static gint -lnet_equal(gconstpointer v, gconstpointer w) -{ - const struct lnet_request_key *v1 = (const struct lnet_request_key *)v; - const struct lnet_request_key *v2 = (const struct lnet_request_key *)w; - - if (v1 -> conversation == v2 -> conversation && - v1 -> match_bits == v2 -> match_bits) - { - - return 1; - } - - return 0; -} - -static guint -lnet_hash (gconstpointer v) -{ - const struct lnet_request_key *key = (const struct lnet_request_key *)v; - return key -> conversation + key -> match_bits; -} - - -static void -lnet_init_protocol(void) -{ - if (lnet_request_hash) - g_hash_table_destroy(lnet_request_hash); - - lnet_request_hash = g_hash_table_new(lnet_hash, lnet_equal); -} - - -static lnet_request_val_t* -get_lnet_conv(packet_info * pinfo , GHashTable * lnet_hash_table, guint64 match_bits ) -{ - conversation_t * conversation ; - lnet_request_key_t request_key, *new_request_key; - lnet_request_val_t *request_val=NULL ; - - conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, pinfo->srcport, pinfo->destport, 0); - - - if (NULL == conversation) - /* It's not part of any conversation - create a new one. */ - conversation = conversation_new(pinfo->fd->num, &pinfo->src, &pinfo->dst, proto_lnet, - pinfo->srcport, pinfo->destport, 0); - - request_key.conversation = conversation->index; - request_key.match_bits = match_bits; - - request_val = (struct lnet_request_val * ) g_hash_table_lookup(lnet_hash_table, &request_key); - if(!request_val){ - new_request_key = se_alloc(sizeof(struct lnet_request_key)); - *new_request_key = request_key; - request_val = se_alloc(sizeof(struct lnet_request_val)); - request_val -> match_bits = match_bits; - request_val -> packet_num_parent = pinfo->fd->num ; - /*request_val -> filename = "test" ; */ - g_hash_table_insert(lnet_hash_table, new_request_key, request_val); - - } - - return request_val ; - -} - - - -/*----------------------------------------------------------- */ -#ifdef WIRESHARK_COMPAT -static void -dissect_lnet_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -#else -static int -dissect_lnet_message(tvbuff_t *tvb, packet_info *pinfo, - proto_tree *tree, void *data) -#endif -{ - guint64 match; - guint32 msg_type; - gint offset = 0; - t_nid dest_nid; /* nid value */ - t_nid src_nid; - proto_item *ti = NULL; /* principal node */ - proto_tree *lnet_tree = NULL; /* principal tree */ - proto_tree *lnet_nid_src_tree = NULL; /*subtree for the nids*/ - proto_tree *lnet_nid_dest_tree = NULL; - proto_item *ti_src_nid; /* node for the nids */ - proto_item *ti_dest_nid; - guint32 payload_length; - guint32 msg_filler_length; - - /* lnet_request_val_t* conversation_val ; */ - col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lnet"); - - msg_type = tvb_get_letohl(tvb, LNET_MSG_TYPE_OFFSET); - /* We delete the entire line and add LNET + msg_type */ - col_add_fstr(pinfo->cinfo, COL_INFO, "LNET_%s", - (msg_type < sizeof(lnet_msg_type_t)/sizeof(value_string)) - ? lnet_msg_type_t[msg_type].strptr - : "Unknown"); - - if (tree == NULL) - goto out; - - /* principal node */ - ti = proto_tree_add_item(tree, proto_lnet, tvb, 0, -1, FALSE); - - lnet_tree = proto_item_add_subtree(ti, ett_lnet); - - if (ib_lnd_extra_bytes) { - offset = dissect_ib_msg(tvb, lnet_tree, offset); - if (offset == 0) { - /* There was no LNet payload, only ob2lnd. */ - goto out; - } - } else { - /* dissect the first 24 bytes (ksock_msg_t in - * lnet/socklnd.h - */ - offset = dissect_ksock_msg(tvb, lnet_tree, offset); - } - - /* Dest nid */ - dest_nid = get_nid(tvb, offset); - ti_dest_nid = proto_tree_add_text(lnet_tree, tvb, offset, 8, - "dest_nid = %s@tcp%d", - ip_to_str((guint8 *) &dest_nid.addr), - dest_nid.interface); - lnet_nid_dest_tree = proto_item_add_subtree(ti_dest_nid, - ett_lnet_dest_nid); - offset = dissect_dest_nid(tvb, lnet_nid_dest_tree, offset); - - /* Same for src_nid */ - src_nid = get_nid(tvb, offset); - ti_src_nid = proto_tree_add_text(lnet_tree, tvb, offset, 8, - "src_nid = %s@tcp%d", - ip_to_str((guint8 *) &src_nid.addr), - src_nid.interface); - lnet_nid_src_tree = proto_item_add_subtree(ti_src_nid, - ett_lnet_src_nid); - offset = dissect_src_nid(tvb, lnet_nid_src_tree, offset); - - /* pid */ - proto_tree_add_item(lnet_tree, hf_lnet_src_pid, tvb, offset, 4, TRUE); - offset += 4; - proto_tree_add_item(lnet_tree, hf_lnet_dest_pid, tvb, offset, 4, TRUE); - offset += 4; - - /* message_type (32 bits) */ - msg_type = tvb_get_letohl(tvb, offset+0); - /* put some nice info on lnet line */ - proto_item_append_text(ti, " %s", - (msg_type < - sizeof(lnet_msg_type_t)/sizeof(value_string)) - ? lnet_msg_type_t[msg_type].strptr - : "Unknow"); - proto_tree_add_item(lnet_tree, hf_lnet_msg_type, tvb, - offset, 4, TRUE); - offset += 4; - - /* payload data (to follow) length :*/ - payload_length = tvb_get_letohl(tvb, offset+0); - proto_tree_add_item(lnet_tree, hf_lnet_payload_length, tvb, - offset, 4, TRUE); - offset += 4; - - /* here offset = 24+8+8+4+4+4+4 = 56 */ - match = 0; - switch (msg_type) { - case LNET_MSG_ACK: - offset = dissect_lnet_ack(tvb, lnet_tree, offset, pinfo); - match = tvb_get_letoh64(tvb, 72); - break; - case LNET_MSG_PUT: - offset = dissect_lnet_put(tvb, lnet_tree, offset, pinfo); - match = tvb_get_letoh64(tvb, 72); - break; - case LNET_MSG_GET: - offset = dissect_lnet_get(tvb, lnet_tree, offset, pinfo); - match = tvb_get_letoh64(tvb, 72); - break; - case LNET_MSG_REPLY: - offset = dissect_lnet_reply(tvb, lnet_tree, offset); - break; - case LNET_MSG_HELLO: - offset = dissect_lnet_hello(tvb, lnet_tree, offset); - break; - default: - break; - } - - /* conversation_val = */ - get_lnet_conv(pinfo, lnet_request_hash, match); - /* proto_tree_add_text(tree, tvb, 0 , 0, "match = %" - * G_GINT64_MODIFIER "u parent = %d", - * conversation_val -> match_bits , - * conversation_val -> packet_num_parent); - */ - - /* padding */ - msg_filler_length = 72 - offset + 24 + ib_lnd_extra_bytes; - if (msg_filler_length > 72) - goto out; - /* +24 : ksosck_message take 24bytes, and allready in offset */ - - proto_tree_add_item(lnet_tree, hf_lnet_msg_filler, tvb, offset, - msg_filler_length, little_endian); - offset += msg_filler_length; - - if (payload_length > 0) { - /* display of payload */ - proto_tree_add_item(lnet_tree, hf_lnet_payload, tvb, - offset, payload_length, - little_endian); - - next_tvb = tvb_new_subset(tvb, offset, - payload_length, payload_length); - if (msg_type == LNET_MSG_PUT) - dissector_try_uint(subdissector_table, - tvb_get_letohl(tvb, LNET_PTL_INDEX_OFFSET_PUT), - next_tvb, pinfo, tree); - - } - - offset += payload_length; - -out: -#ifdef WIRESHARK_COMPAT - return; -#else - return offset; -#endif -} - -void -proto_register_lnet(void) -{ - static hf_register_info hf[] = { - { &hf_lnet_ksm_type , - { "Type of socklnd message" , "lnet.ksm_type" , FT_UINT32 , BASE_HEX , VALS(ksm_type_t) , 0x0 , "" , HFILL }} , - { &hf_lnet_ksm_csum , - { "Checksum" , "lnet.ksm_csum" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_ksm_zc_req_cookie , - { "Ack required" , "lnet.ksm_zc_req_cookie" , FT_UINT64 , BASE_HEX , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_ksm_zc_ack_cookie , - { "Ack" , "lnet.ksm_zc_ack_cookie" , FT_UINT64 , BASE_HEX , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_ib_magic, - { "Magic of IB message", "lnet.ib.magic", FT_UINT32, - BASE_HEX, NULL, 0x0, "", HFILL} }, - { &hf_lnet_ib_version, - { "Version", "lnet.ib.version", FT_UINT16, BASE_HEX, - VALS(ib_version_t), 0x0, "", HFILL} }, - { &hf_lnet_ib_type, - { "Type of IB message", "lnet.ib.type", FT_UINT8, - BASE_HEX, VALS(ib_type_t), 0x0, "", HFILL} }, - { &hf_lnet_ib_credits, - { "Returned Credits", "lnet.ib.credits", FT_UINT8, - BASE_DEC, NULL, 0x0, "", HFILL} }, - { &hf_lnet_ib_nob, - { "Number of Bytes", "lnet.ib.nob", FT_UINT32, - BASE_DEC, NULL, 0x0, "", HFILL} }, - { &hf_lnet_ib_csum, - { "Checksum", "lnet.ib_csum", FT_UINT32, BASE_DEC, - NULL, 0x0, "", HFILL} }, - { &hf_lnet_ib_srcstamp, - { "Sender Timestamp", "lnet.ib.srcstamp", - FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, - "", HFILL} }, - { &hf_lnet_ib_dststamp, - { "Destination Timestamp", "lnet.ib.dststamp", - FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, - "", HFILL} }, - - { &hf_lnet_src_nid , - { "Src nid" , "lnet.src_nid" , FT_UINT64 , BASE_HEX , NULL , 0x0 , "src nid" , HFILL }} , - { &hf_lnet_src_nid_addr , - { "Src nid" , "lnet.src_nid_addr" , FT_IPv4 , BASE_NONE , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_src_nid_lnet_type , - { "lnd network type" , "lnet.src_nid_type" , FT_UINT16 , BASE_DEC , VALS(lndnames) , 0x0 , "" , HFILL} }, - { &hf_lnet_src_nid_interface , - { "lnd network interface" , "lnet.src_nid_net_interface" , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL }} , - - { &hf_lnet_dest_nid , - { "Dest nid" , "lnet.dest_nid" , FT_UINT64 , BASE_HEX , NULL , 0x0 , "" , HFILL }} , - - { &hf_lnet_dest_nid_addr , - { "Destination nid" , "lnet.dest_nid_addr" , FT_IPv4 , BASE_NONE , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_dest_nid_lnet_type , - { "lnd network type" , "lnet.dest_nid_type" , FT_UINT16 , BASE_DEC , VALS(lndnames) , 0x0 , "" , HFILL} }, - { &hf_lnet_dest_nid_interface , - { "lnd network interface" , "lnet.dest_nid_net_interface" , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL }} , - - { &hf_lnet_dest_pid , - { "Dest pid" , "lnet.dest_pid" , FT_UINT32 , BASE_DEC_HEX , NULL , 0x0 , "dest pid" , HFILL }} , - { &hf_lnet_src_pid , - { "Src pid" , "lnet.src_pid" , FT_UINT32 , BASE_DEC_HEX , NULL , 0x0 , "src nid" , HFILL }} , - - { &hf_lnet_msg_type , - { "Message type" , "lnet.msg_type" , FT_UINT32 , BASE_DEC , VALS(lnet_msg_type_t) , 0x0 , "msg type" , HFILL }} , - { &hf_lnet_payload_length , - { "Payload length" , "lnet.payload_length" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL }} , - { &hf_lnet_payload , - { "Payload" , "lnet.payload" , FT_NONE , BASE_NONE , NULL , 0x0 , "" , HFILL }} , - - {&hf_dst_wmd , - { "DST MD index " , "lnet.msg_dst_cookie" , FT_BYTES , BASE_NONE , NULL , 0x0 , "" , HFILL }} , - { &hf_dst_wmd_interface , - { "DST MD index interface" , "lnet.msg_dst_inteface_cookie" , FT_UINT64 , BASE_HEX_DEC , NULL , 0x0 , "" , HFILL }} , - { &hf_dst_wmd_object , - { "DST MD index object" , "lnet.msg_dst_object_cookie" , FT_UINT64 , BASE_HEX_DEC , NULL , 0x0 , "" , HFILL }} , - { &hf_match_bits , - { "Match bits" , "lnet.msg_dst_match_bits" , FT_UINT64 , BASE_HEX_DEC , NULL , 0x0 , "" , HFILL}} , - { &hf_mlength , - { "Message length" , "lnet.msg_length" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL}} , - - - /* Put */ - { &hf_hdr_data , - { "hdr data" , "lnet.msg_hdr_data" , FT_UINT64 , BASE_HEX_DEC , NULL , 0x0 , "" , HFILL}} , - { &hf_ptl_index , - { "ptl index" , "lnet.ptl_index" , FT_UINT32 , BASE_DEC , VALS(portal_indices) , 0x0 , "" , HFILL}} , - { &hf_offset , - { "offset" , "lnet.offset" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL}} , - - /* Get*/ - { &hf_src_offset , - { "src offset" , "lnet.src_offset" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL}} , - { &hf_sink_length , - { "sink length" , "lnet.sink_length" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL}} , - - /* Hello*/ - { &hf_hello_incarnation , - { "hello incarnation " , "lnet.hello_incarnation" , FT_UINT64 , BASE_HEX_DEC , NULL , 0x0 , "" , HFILL}} , - { &hf_hello_type , - { "hello type" , "lnet.hello_type" , FT_UINT32 , BASE_DEC , NULL , 0x0 , "" , HFILL}} , - - { &hf_lnet_msg_header , - { "ptl header" , "lnet.ptl_header" , FT_NONE , BASE_NONE , NULL , 0x0 , "" , HFILL}} , - - { &hf_lnet_msg_filler , - { "msg filler (padding)" , "lnet.ptl_filler" , FT_NONE , BASE_NONE , NULL , 0x0 , "" , HFILL}} , - - /* Add more fields here */ - }; - - static gint *ett[] = { - &ett_lnet, - &ett_lnet_dest_nid, - &ett_lnet_src_nid - }; - - - module_t *lnet_module; - - proto_lnet = proto_register_protocol("Lnet", /*name*/ - "Lnet", /*short name*/ - "lnet"); /*abbrev*/ - - proto_register_field_array(proto_lnet, hf, array_length(hf)); - proto_register_subtree_array(ett, array_length(ett)); - - lnet_module = prefs_register_protocol(proto_lnet, proto_reg_handoff_lnet); - - prefs_register_uint_preference(lnet_module, "tcp.lnet_port", - "Lnet listener TCP Port", - "Set the TCP port for Lnet" - "(if other than the default of 988)", - 10, &global_lnet_tcp_port); - - subdissector_table = register_dissector_table("lnet.ptl_index", "lnet portal index", FT_UINT32 , BASE_DEC); - - register_init_routine(&lnet_init_protocol); - -} - - -/* The registration hand-off routine */ -void -proto_reg_handoff_lnet(void) -{ - static int lnet_prefs_initialized = FALSE; - static dissector_handle_t lnet_handle; - - if(!lnet_prefs_initialized) { - heur_dissector_add("infiniband.payload", dissect_ib_lnet, - proto_lnet); - heur_dissector_add("infiniband.mad.cm.private", - dissect_ib_lnet, proto_lnet); - lnet_handle = create_dissector_handle(dissect_lnet, proto_lnet); - lnet_prefs_initialized = TRUE; - } - else - dissector_delete_uint("tcp.port", global_lnet_tcp_port, lnet_handle); - - lnet_tcp_port = global_lnet_tcp_port; - - dissector_add_uint("tcp.port", lnet_tcp_port, lnet_handle); -} diff --git a/lustre/contrib/wireshark/packet-lustre.c b/lustre/contrib/wireshark/packet-lustre.c deleted file mode 100644 index 0d1f578..0000000 --- a/lustre/contrib/wireshark/packet-lustre.c +++ /dev/null @@ -1,12226 +0,0 @@ -/* packet-lustre.c - * Lustre 1.6 dissection (http://www.lustre.org/) - * Author: Laurent George - * based on packet-agentx.c and packet-afs.c - * partially generated by Pidl - * 20080903 - * Wireshark - Network traffic analyzer - * By Gerald Combs - * Copyright 1999 Gerald Combs - * - * C-Syle: 2 space indents - * - * 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. - * - * Copyright (c) 2011, 2017, Intel Corporation. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - - -#include -#include -#include - -#include "wireshark-compat.h" - -#include -#include "lustre_dlm_flags.h" - -const true_false_string lnet_flags_set_truth = { "Set", "Unset" }; - -/* --------------------------------------------------------------------------------------- */ -/* def and macro to know where we are the the lustre payload */ -#define LUSTRE_MAGIC_OFFSET 8 -#define LUSTRE_MSG_MAGIC_V1 0x0BD00BD0 -#define LUSTRE_MSG_MAGIC_V2 0x0BD00BD3 - -#define LUSTRE_BUFCOUNT_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 0 : 60) -#define LUSTRE_BUFCOUNT ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) \ - ? (tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)) : ((tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF))) ) -/* remark : BUFLENOFF don't have the same meaning if it's for v1 or v2 - * v1 : LUSTRE_BUFLEN_OFF = offset buflen[0] - 4 bytes. - * v2 : LUSTRE_BUFLEN_OFF = offset buflen[0] - */ -#define LUSTRE_BUFLEN_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 32 : 60) - -/* LUSTRE_BUFFER_LEN(buffnum) */ -#define LUSTRE_BUFFER_LEN(_n) (LUSTRE_BUFCOUNT <= (_n) ? 0 \ - : tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+\ - sizeof(guint32)*(_n))) - -#define LUSTRE_REQ_REC_OFF 1 /* normal request record offset */ -#define LUSTRE_REPLY_REC_OFF 1 /* normal reply record offset */ - -#define LUSTRE_DLM_INTENT_IT_OFF 2 /* intent lock it offset */ -#define LUSTRE_DLM_INTENT_REC_OFF 3 /* intent lock record offset */ -#define LUSTRE_DLM_LOCKREPLY_OFF 1 /* lockrep offset */ -#define LUSTRE_DLM_REPLY_REC_OFF 2 /* reply record offset */ -/* --------------------------------------------------------------------------------------- */ - - -#define LUSTRE_PTLRPC_MSG_VERSION 0x00000003 -#define LUSTRE_VERSION_MASK 0xffff0000 -#define LUSTRE_OBD_VERSION 0x00010000 -#define LUSTRE_MDS_VERSION 0x00020000 -#define LUSTRE_OST_VERSION 0x00030000 -#define LUSTRE_DLM_VERSION 0x00040000 -#define LUSTRE_LOG_VERSION 0x00050000 -#define LUSTRE_MGS_VERSION 0x00060000 - - - -#define LOV_MAGIC_V1 0x0BD10BD0 -#define LOV_MAGIC_V3 0x0BD30BD0 - -/* defined in lustre/include/lustre/lustre_user.h */ -#define LOV_MAXPOOLNAME 15 - -/* defined in lustre/include/lustre/lustre_idl.h */ -typedef enum { - CONNMGR_REQUEST_PORTAL = 1, - CONNMGR_REPLY_PORTAL = 2, - OSC_REQUEST_PORTAL = 3, - OSC_REPLY_PORTAL = 4, - OSC_BULK_PORTAL = 5, - OST_IO_PORTAL = 6, - OST_CREATE_PORTAL = 7, - OST_BULK_PORTAL = 8, - MDC_REQUEST_PORTAL = 9, - MDC_REPLY_PORTAL = 10, - MDC_BULK_PORTAL = 11, - MDS_REQUEST_PORTAL = 12, - MDS_REPLY_PORTAL = 13, - MDS_BULK_PORTAL = 14, - LDLM_CB_REQUEST_PORTAL = 15, - LDLM_CB_REPLY_PORTAL = 16, - LDLM_CANCEL_REQUEST_PORTAL = 17, - LDLM_CANCEL_REPLY_PORTAL = 18, - PTLBD_REQUEST_PORTAL = 19, - PTLBD_REPLY_PORTAL = 20, - PTLBD_BULK_PORTAL = 21, - MDS_SETATTR_PORTAL = 22, - MDS_READPAGE_PORTAL = 23, - MDS_MDS_PORTAL = 24, - MGC_REPLY_PORTAL = 25, - MGS_REQUEST_PORTAL = 26, - MGS_REPLY_PORTAL = 27, - OST_REQUEST_PORTAL = 28, - FLD_REQUEST_PORTAL = 29, - SEQ_METADATA_PORTAL = 30, - SEQ_DATA_PORTAL = 31, - SEQ_CONTROLLER_PORTAL = 32, - MGS_BULK_PORTAL = 33 -} portal_index_t; - -static const value_string portal_indices[] = { - { CONNMGR_REQUEST_PORTAL, "CONNMGR_REQUEST_PORTAL"}, - { CONNMGR_REPLY_PORTAL , "CONNMGR_REPLY_PORTAL"}, - { OSC_REQUEST_PORTAL , "OSC_REQUEST_PORTAL(obsolete)"}, - { OSC_REPLY_PORTAL , "OSC_REPLY_PORTAL"}, - { OSC_BULK_PORTAL , "OSC_BULK_PORTAL(obsolete)"}, - { OST_IO_PORTAL , "OST_IO_PORTAL"}, - { OST_CREATE_PORTAL , "OST_CREATE_PORTAL"}, - { OST_BULK_PORTAL , "OST_BULK_PORTAL"}, - { MDC_REQUEST_PORTAL , "MDC_REQUEST_PORTAL(obsolete)"}, - { MDC_REPLY_PORTAL , "MDC_REPLY_PORTAL"}, - { MDC_BULK_PORTAL , "MDC_BULK_PORTAL(obsolete)"}, - { MDS_REQUEST_PORTAL , "MDS_REQUEST_PORTAL"}, - { MDS_REPLY_PORTAL , "MDS_REPLY_PORTAL(obsolete)"}, - { MDS_BULK_PORTAL , "MDS_BULK_PORTAL"}, - { LDLM_CB_REQUEST_PORTAL , "LDLM_CB_REQUEST_PORTAL"}, - { LDLM_CB_REPLY_PORTAL , "LDLM_CB_REPLY_PORTAL"}, - { LDLM_CANCEL_REQUEST_PORTAL , "LDLM_CANCEL_REQUEST_PORTAL"}, - { LDLM_CANCEL_REPLY_PORTAL , "LDLM_CANCEL_REPLY_PORTAL"}, - { PTLBD_REQUEST_PORTAL , "PTLBD_REQUEST_PORTAL(obsolete)"}, - { PTLBD_REPLY_PORTAL , "PTLBD_REPLY_PORTAL(obsolete)"}, - { PTLBD_BULK_PORTAL , "PTLBD_BULK_PORTAL(obsolete)"}, - { MDS_SETATTR_PORTAL , "MDS_SETATTR_PORTAL"}, - { MDS_READPAGE_PORTAL , "MDS_READPAGE_PORTAL"}, - { MDS_MDS_PORTAL, "MDS_MDS_PORTAL"}, - { MGC_REPLY_PORTAL , "MGC_REPLY_PORTAL"}, - { MGS_REQUEST_PORTAL , "MGS_REQUEST_PORTAL"}, - { MGS_REPLY_PORTAL , "MGS_REPLY_PORTAL"}, - { OST_REQUEST_PORTAL , "OST_REQUEST_PORTAL"}, - { FLD_REQUEST_PORTAL , "FLD_REQUEST_PORTAL"}, - { SEQ_METADATA_PORTAL, "SEQ_METADATA_PORTAL"}, - { SEQ_DATA_PORTAL, "SEQ_DATA_PORTAL"}, - { SEQ_CONTROLLER_PORTAL, "SEQ_CONTROLLER_PORTAL"}, - { MGS_BULK_PORTAL, "MGS_BULK_PORTAL"} -}; - -typedef enum { - OST_REPLY = 0, /* reply ? */ - OST_GETATTR = 1, - OST_SETATTR = 2, - OST_READ = 3, - OST_WRITE = 4, - OST_CREATE = 5, - OST_DESTROY = 6, - OST_GET_INFO = 7, - OST_CONNECT = 8, - OST_DISCONNECT = 9, - OST_PUNCH = 10, - OST_OPEN = 11, - OST_CLOSE = 12, - OST_STATFS = 13, - /* OST_SAN_READ = 14, deprecated */ - /* OST_SAN_WRITE = 15, deprecated */ - OST_SYNC = 16, - OST_SET_INFO = 17, - OST_QUOTACHECK = 18, - OST_QUOTACTL = 19, - OST_QUOTA_ADJUST_QUNIT = 20, - OST_LADVISE = 21, - OST_LAST_OPC -} ost_cmd_t ; - - -typedef enum { - OBD_PING = 400, - OBD_LOG_CANCEL, - OBD_QC_CALLBACK, - OBD_LAST_OPC -} obd_cmd_t; -#define OBD_FIRST_OPC OBD_PING - -/* must be coherent with same declaration - * in lustre/include/lustre/lustre_idl.h - */ -typedef enum { - MDS_GETATTR = 33, - MDS_GETATTR_NAME = 34, - MDS_CLOSE = 35, - MDS_REINT = 36, - MDS_READPAGE = 37, - MDS_CONNECT = 38, - MDS_DISCONNECT = 39, - MDS_GET_ROOT = 40, - MDS_STATFS = 41, - MDS_PIN = 42, - MDS_UNPIN = 43, - MDS_SYNC = 44, - MDS_DONE_WRITING = 45, - MDS_SET_INFO = 46, - MDS_QUOTACHECK = 47, - MDS_QUOTACTL = 48, - MDS_GETXATTR = 49, - MDS_SETXATTR = 50, - MDS_WRITEPAGE = 51, - MDS_IS_SUBDIR = 52, - MDS_GET_INFO = 53, - MDS_HSM_STATE_GET = 54, - MDS_HSM_STATE_SET = 55, - MDS_HSM_ACTION = 56, - MDS_HSM_PROGRESS = 57, - MDS_HSM_REQUEST = 58, - MDS_HSM_CT_REGISTER = 59, - MDS_HSM_CT_UNREGISTER = 60, - MDS_SWAP_LAYOUTS = 61, - MDS_LAST_OPC -} mds_cmd_t; -#define MDS_FIRST_OPC MDS_GETATTR - -enum { - LAYOUT_INTENT_ACCESS = 0, - LAYOUT_INTENT_READ = 1, - LAYOUT_INTENT_WRITE = 2, - LAYOUT_INTENT_GLIMPSE = 3, - LAYOUT_INTENT_TRUNC = 4, - LAYOUT_INTENT_RELEASE = 5, - LAYOUT_INTENT_RESTORE = 6 -}; - -static const value_string lustre_layout_intent_opc_values[] = { - { LAYOUT_INTENT_ACCESS, "ACCESS"}, - { LAYOUT_INTENT_READ, "READ"}, - { LAYOUT_INTENT_WRITE, "WRITE"}, - { LAYOUT_INTENT_GLIMPSE, "GLIMPSE"}, - { LAYOUT_INTENT_TRUNC, "TRUNC"}, - { LAYOUT_INTENT_RELEASE, "RELEASE"}, - { LAYOUT_INTENT_RESTORE, "RESTORE"}, - { 0, NULL }, -}; - -/* From lustre/include/obd.h */ -#define IT_OPEN 0x0001 -#define IT_CREAT 0x0002 -#define IT_READDIR 0x0004 -#define IT_GETATTR 0x0008 -#define IT_LOOKUP 0x0010 -#define IT_UNLINK 0x0020 -#define IT_TRUNC 0x0040 -#define IT_GETXATTR 0x0080 -#define IT_EXEC 0x0100 -#define IT_PIN 0x0200 -#define IT_LAYOUT 0x0400 -#define IT_QUOTA_DQACQ 0x0800 -#define IT_QUOTA_CONN 0x1000 -#define IT_SETXATTR 0x2000 - -/* lustre/include/uapi/linux/lustre/lustre_idl.h */ -enum mds_reint_op { - REINT_SETATTR = 1, - REINT_CREATE = 2, - REINT_LINK = 3, - REINT_UNLINK = 4, - REINT_RENAME = 5, - REINT_OPEN = 6, - REINT_SETXATTR = 7, - REINT_RMENTRY = 8, - REINT_MIGRATE = 9, - REINT_MAX -}; - -enum ldlm_cmd { - LDLM_ENQUEUE = 101, - LDLM_CONVERT = 102, - LDLM_CANCEL = 103, - LDLM_BL_CALLBACK = 104, - LDLM_CP_CALLBACK = 105, - LDLM_GL_CALLBACK = 106, - LDLM_SET_INFO = 107, - LDLM_LAST_OPC -}; -#define LDLM_FIRST_OPC LDLM_ENQUEUE - -enum seq_rpc_opc { - SEQ_QUERY = 700, - SEQ_LAST_OPC, - SEQ_FIRST_OPC = SEQ_QUERY -}; - -enum fld_rpc_opc { - FLD_QUERY = 900, - FLD_LAST_OPC, - FLD_FIRST_OPC = FLD_QUERY -}; - -#define LDLM_ENQUEUE (101) -#define LDLM_CONVERT (102) -#define LDLM_CANCEL (103) -#define LDLM_BL_CALLBACK (104) -#define LDLM_CP_CALLBACK (105) -#define LDLM_GL_CALLBACK (106) -#define LCK_MINMODE (0) -#define LCK_EX (1) -#define LCK_PW (2) -#define LCK_PR (4) -#define LCK_CW (8) -#define LCK_CR (16) -#define LCK_NL (32) -#define LCK_GROUP (64) -#define LDLM_PLAIN (10) -#define LDLM_EXTENT (11) -#define LDLM_FLOCK (12) -#define LDLM_IBITS (13) -//#define MGS_CONNECT (250) -#define OBD_PING (400) - -/* - * Opcodes for mountconf (mgs and mgc) - */ -typedef enum { - MGS_CONNECT = 250, - MGS_DISCONNECT, - MGS_EXCEPTION, /* node died, etc. */ - MGS_TARGET_REG, /* whenever target starts up */ - MGS_TARGET_DEL, - MGS_SET_INFO, - MGS_CONFIG_READ, - MGS_LAST_OPC -} mgs_cmd_t; -#define MGS_FIRST_OPC MGS_CONNECT - -/* llog protocol */ -typedef enum { - LLOG_ORIGIN_HANDLE_CREATE = 501, - LLOG_ORIGIN_HANDLE_NEXT_BLOCK = 502, - LLOG_ORIGIN_HANDLE_READ_HEADER = 503, - LLOG_ORIGIN_HANDLE_WRITE_REC = 504, - LLOG_ORIGIN_HANDLE_CLOSE = 505, - LLOG_ORIGIN_CONNECT = 506, - LLOG_CATINFO = 507, /* for lfs catinfo */ - LLOG_ORIGIN_HANDLE_PREV_BLOCK = 508, - LLOG_ORIGIN_HANDLE_DESTROY = 509, /* for destroy llog object*/ - LLOG_LAST_OPC -} llog_cmd_t; - -#define LLOG_FIRST_OPC LLOG_ORIGIN_HANDLE_CREATE -/*flag for the LLOG*/ -#define LLOG_OP_MAGIC 0x10600000 -#define LLOG_OP_MASK 0xfff00000 - -typedef enum { - LLOG_PAD_MAGIC = LLOG_OP_MAGIC | 0x00000, - OST_SZ_REC = LLOG_OP_MAGIC | 0x00f00, - OST_RAID1_REC = LLOG_OP_MAGIC | 0x01000, - MDS_UNLINK_REC = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_UNLINK, - MDS_SETATTR_REC = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_SETATTR, - OBD_CFG_REC = LLOG_OP_MAGIC | 0x20000, - PTL_CFG_REC = LLOG_OP_MAGIC | 0x30000, /* obsolete */ - LLOG_GEN_REC = LLOG_OP_MAGIC | 0x40000, - LLOG_JOIN_REC = LLOG_OP_MAGIC | 0x50000, /* obsolete */ - LLOG_HDR_MAGIC = LLOG_OP_MAGIC | 0x45539, - LLOG_LOGID_MAGIC = LLOG_OP_MAGIC | 0x4553b, -} llog_op_type; - -/* LLOG flag */ -/*defined in lustre/include/lustre/lustre_idl.h*/ -#define LLOG_F_ZAP_WHEN_EMPTY 0x1 -#define LLOG_F_IS_CAT 0x2 -#define LLOG_F_IS_PLAIN 0x4 - -#define PTL_RPC_MSG_REQUEST 4711 -#define PTL_RPC_MSG_ERR 4712 -#define PTL_RPC_MSG_REPLY 4713 - -/* Connect flags from lustre_idl.h */ -#define OBD_CONNECT_RDONLY 0x1ULL /*client has read-only access*/ -#define OBD_CONNECT_INDEX 0x2ULL /*connect specific LOV idx */ -#define OBD_CONNECT_MDS 0x4ULL /*connect from MDT to OST */ -#define OBD_CONNECT_GRANT 0x8ULL /*OSC gets grant at connect */ -#define OBD_CONNECT_SRVLOCK 0x10ULL /*server takes locks for cli */ -#define OBD_CONNECT_VERSION 0x20ULL /*Lustre versions in ocd */ -#define OBD_CONNECT_REQPORTAL 0x40ULL /*Separate non-IO req portal */ -#define OBD_CONNECT_ACL 0x80ULL /*access control lists */ -#define OBD_CONNECT_XATTR 0x100ULL /*client use extended attr */ -#define OBD_CONNECT_CROW 0x200ULL /*MDS+OST create obj on write*/ -#define OBD_CONNECT_TRUNCLOCK 0x400ULL /*locks on server for punch */ -#define OBD_CONNECT_TRANSNO 0x800ULL /*replay sends init transno */ -#define OBD_CONNECT_IBITS 0x1000ULL /*support for inodebits locks*/ -#define OBD_CONNECT_JOIN 0x2000ULL /*files can be concatenated. - *We do not support JOIN FILE - *anymore, reserve this flags - *just for preventing such bit - *to be reused.*/ -#define OBD_CONNECT_ATTRFID 0x4000ULL /*Server can GetAttr By Fid*/ -#define OBD_CONNECT_NODEVOH 0x8000ULL /*No open hndl on specl nodes*/ -#define OBD_CONNECT_RMT_CLIENT 0x10000ULL /*Remote client */ -#define OBD_CONNECT_RMT_CLIENT_FORCE 0x20000ULL /*Remote client by force */ -#define OBD_CONNECT_BRW_SIZE 0x40000ULL /*Max bytes per rpc */ -#define OBD_CONNECT_QUOTA64 0x80000ULL /*Not used since 2.4 */ -#define OBD_CONNECT_MDS_CAPA 0x100000ULL /*MDS capability */ -#define OBD_CONNECT_OSS_CAPA 0x200000ULL /*OSS capability */ -#define OBD_CONNECT_CANCELSET 0x400000ULL /*Early batched cancels. */ -#define OBD_CONNECT_SOM 0x800000ULL /*Size on MDS */ -#define OBD_CONNECT_AT 0x1000000ULL /*client uses AT */ -#define OBD_CONNECT_LRU_RESIZE 0x2000000ULL /*LRU resize feature. */ -#define OBD_CONNECT_MDS_MDS 0x4000000ULL /*MDS-MDS connection */ -#define OBD_CONNECT_REAL 0x8000000ULL /*real connection */ -#define OBD_CONNECT_CHANGE_QS 0x10000000ULL /*Not used since 2.4 */ -#define OBD_CONNECT_CKSUM 0x20000000ULL /*support several cksum algos*/ -#define OBD_CONNECT_FID 0x40000000ULL /*FID is supported by server */ -#define OBD_CONNECT_VBR 0x80000000ULL /*version based recovery */ - -/* Ett declarations */ -static gint ett_lustre_llog_log_llh_flags = -1 ; -static gint ett_lustre = -1; -static gint ett_lustre_lustre_handle_cookie = -1; -static gint ett_lustre_lustre_msg_v1 = -1; -static gint ett_lustre_lustre_handle_v1 = -1; -static gint ett_lustre_lustre_msg_v2 = -1; -static gint ett_lustre_ptlrpc_body = -1; -static gint ett_lustre_lustre_handle_v2 = -1; -static gint ett_lustre_obd_connect_data = -1; -static gint ett_lustre_lov_mds_md_v1 = -1; -static gint ett_lustre_lov_mds_md_v3 = -1; -static gint ett_lustre_lov_ost_data_v1 = -1; -static gint ett_lustre_obd_statfs = -1; -static gint ett_lustre_obd_ioobj = -1; -static gint ett_lustre_niobuf_remote = -1; -static gint ett_lustre_ost_lvb = -1; -static gint ett_lustre_ll_fid = -1; -static gint ett_lustre_mdt_body = -1; -static gint ett_lustre_mdt_rec_setattr = -1; -static gint ett_lustre_mdt_rec_create = -1; -static gint ett_lustre_mdt_rec_link = -1; -static gint ett_lustre_mdt_rec_unlink = -1; -static gint ett_lustre_mdt_rec_rename = -1; -static gint ett_lustre_mdt_rec_setxattr = -1; -static gint ett_lustre_obd_quotactl = -1; -static gint ett_lustre_obd_dqinfo = -1; -static gint ett_lustre_obd_dqblk = -1; -static gint ett_lustre_quota_adjust_qunit = -1; -static gint ett_lustre_lov_desc = -1; -static gint ett_lustre_obd_uuid = -1; -static gint ett_lustre_ldlm_res_id = -1; -static gint ett_lustre_ldlm_extent = -1; -static gint ett_lustre_ldlm_inodebits = -1; -static gint ett_lustre_ldlm_flock = -1; -static gint ett_lustre_ldlm_intent_opc = -1; -static gint ett_lustre_ldlm_resource_desc = -1; -static gint ett_lustre_ldlm_lock_desc = -1; -static gint ett_lustre_ldlm_request = -1; -static gint ett_lustre_lustre_handle = -1; -static gint ett_lustre_ldlm_reply = -1; -static gint ett_lustre_mgs_send_param = -1; -static gint ett_lustre_mgs_target_info = -1; -static gint ett_lustre_mgs_config_body = -1; -static gint ett_lustre_mgs_config_res = -1; -static gint ett_lustre_cfg_marker = -1; -static gint ett_lustre_llog_catid = -1; -static gint ett_lustre_llog_rec_hdr = -1; -static gint ett_lustre_llog_logid_rec = -1; -static gint ett_lustre_llog_logid = -1; -static gint ett_lustre_llog_rec_tail = -1; -static gint ett_lustre_lov_mds_md = -1; -static gint ett_lustre_llog_unlink_rec = -1; -static gint ett_lustre_llog_setattr_rec = -1; -static gint ett_lustre_llog_size_change_rec = -1; -static gint ett_lustre_llog_gen_rec = -1; -static gint ett_lustre_llog_log_hdr = -1; -static gint ett_lustre_llog_cookie = -1; -static gint ett_lustre_llogd_body = -1; -static gint ett_lustre_llogd_conn_body = -1; -static gint ett_lustre_llog_gen = -1; -static gint ett_lustre_obdo = -1; -static gint ett_lustre_ost_body = -1; -static gint ett_lustre_qunit_data = -1; -static gint ett_lustre_qunit_data_old2 = -1; -static gint ett_lustre_qunit_data_old = -1; -static gint ett_lustre_ldlm_lock_flags = -1 ; -static gint ett_lustre_seq_range = -1; -static gint ett_lustre_fld_range = -1; -static gint ett_lustre_mdt_ioepoch = -1; -static gint ett_lustre_capa = -1; -static gint ett_lustre_close_data = -1; -static gint ett_lustre_acl = -1; -static gint ett_lustre_ladvise = -1; -static gint ett_lustre_hsm_request = -1; -static gint ett_lustre_hsm_user_item = -1; -static gint ett_lustre_hsm_extent = -1; -static gint ett_lustre_hsm_progress = -1; -static gint ett_lustre_hsm_user_state = -1; -static gint ett_lustre_quota_body = -1; -static gint ett_lustre_lquota_id = -1; -static gint ett_lustre_layout_intent = -1; -static gint ett_lustre_xattrs = -1; -static gint ett_lustre_ost_id = -1; - -/* -----------------------------------------------*/ -/* Header field declarations */ -static int hf_lustre_ptlrpc_body_pb = -1 ; -static int hf_lustre_ost_body = -1 ; -static int hf_lustre_obd_statfs = -1 ; -static int hf_lustre_obd_quotactl = -1 ; -static int hf_lustre_quota_adjust_qunit = -1 ; -static int hf_lustre_extra_padding = -1 ; -static int hf_lustre_ldlm_reply = -1 ; -static int hf_lustre_ldlm_request = -1 ; -static int hf_lustre_obd_uuid = -1 ; -static int hf_lustre_obd_connect_data = -1 ; -static int hf_lustre_ldlm_intent = -1; -static int hf_lustre_obd_ioobj = -1 ; -static int hf_lustre_niobuf_remote = -1 ; -static int hf_lustre_ost_key = -1 ; -static int hf_lustre_nio= -1 ; -static int hf_lustre_ost_val= -1; -static int hf_lustre_llogd_body = -1; -static int hf_lustre_llogd_log_hdr= -1; -static int hf_lustre_llog_logid_rec =-1 ; -static int hf_lustre_llogd_chunk= -1; -static int hf_lustre_llogd_keyword= -1; -static int hf_lustre_llogd_client= -1; -static int hf_lustre_llogd_name= -1; - -static int hf_lustre_mds_xattr_name = -1; -static int hf_lustre_lov_mds_md_v1= -1; -static int hf_lustre_llog_cookie= -1; -static int hf_lustre_mds_md_data= -1; -static int hf_lustre_mds_reint_opcode= -1; -static int hf_lustre_mds_xattr_eadata = -1; -static int hf_lustre_mds_xattr_eadata_str = -1; - -static int hf_lustre_reint_name= -1; -static int hf_lustre_reint_old_name= -1; -static int hf_lustre_reint_new_name= -1; - -static int hf_lustre_mgs_target_info = -1 ; -static int hf_lustre_mgs_send_param = -1; - -static int hf_lustre_mgs_config_body = -1; -static int hf_lustre_mgs_config_body_name = -1; -static int hf_lustre_mgs_config_body_offset = -1; -static int hf_lustre_mgs_config_body_type = -1; -static int hf_lustre_mgs_config_body_reserved = -1; -static int hf_lustre_mgs_config_body_bits = -1; -static int hf_lustre_mgs_config_body_units = -1; - -static int hf_lustre_mgs_config_res = -1; -static int hf_lustre_mgs_config_res_offset = -1; -static int hf_lustre_mgs_config_res_size = -1; - -static int hf_lustre_ost_lvb = -1 ; - -#define hf_lustre_ldlm_ast_discard_data hf_lustre_ldlm_fl_ast_discard_data - -static int hf_lustre_mdt_body = -1 ; -static int hf_lustre_mdt_body_fid1 = -1; -static int hf_lustre_mdt_body_fid2 = -1; -static int hf_lustre_mdt_body_handle = -1; -static int hf_lustre_mdt_body_valid = -1; -static int hf_lustre_mdt_body_size = -1; -static int hf_lustre_mdt_body_mtime = -1; -static int hf_lustre_mdt_body_atime = -1; -static int hf_lustre_mdt_body_ctime = -1; -static int hf_lustre_mdt_body_blocks = -1; -static int hf_lustre_mdt_body_ioepoch = -1; -static int hf_lustre_mdt_body_ino = -1; -static int hf_lustre_mdt_body_fsuid = -1; -static int hf_lustre_mdt_body_fsgid = -1; -static int hf_lustre_mdt_body_capability = -1; -static int hf_lustre_mdt_body_mode = -1; -static int hf_lustre_mdt_body_uid = -1; -static int hf_lustre_mdt_body_gid = -1; -static int hf_lustre_mdt_body_flags = -1; -static int hf_lustre_mdt_body_rdev = -1; -static int hf_lustre_mdt_body_nlink = -1; -static int hf_lustre_mdt_body_generation = -1; -static int hf_lustre_mdt_body_suppgid = -1; -static int hf_lustre_mdt_body_eadatasize = -1; -static int hf_lustre_mdt_body_aclsize = -1; -static int hf_lustre_mdt_body_max_mdsize = -1; -static int hf_lustre_mdt_body_max_cookiesize = -1; -static int hf_lustre_mdt_body_uid_h = -1; -static int hf_lustre_mdt_body_gid_h = -1; -static int hf_lustre_mdt_body_padding_5 = -1; -static int hf_lustre_mdt_body_padding_6 = -1; -static int hf_lustre_mdt_body_padding_7 = -1; -static int hf_lustre_mdt_body_padding_8 = -1; -static int hf_lustre_mdt_body_padding_9 = -1; -static int hf_lustre_mdt_body_padding_10 = -1; - -static int hf_lustre_mdt_rec_setattr = -1 ; -static int hf_lustre_mdt_rec_setattr_sa_opcode = -1; -static int hf_lustre_mdt_rec_setattr_sa_cap = -1; -static int hf_lustre_mdt_rec_setattr_sa_fsuid = -1; -static int hf_lustre_mdt_rec_setattr_sa_fsuid_h = -1; -static int hf_lustre_mdt_rec_setattr_sa_fsgid = -1; -static int hf_lustre_mdt_rec_setattr_sa_fsgid_h = -1; -static int hf_lustre_mdt_rec_setattr_sa_suppgid = -1; -static int hf_lustre_mdt_rec_setattr_sa_suppgid_h = -1; -static int hf_lustre_mdt_rec_setattr_sa_padding_1 = -1; -static int hf_lustre_mdt_rec_setattr_sa_padding_1_h = -1; -static int hf_lustre_mdt_rec_setattr_sa_fid = -1; -static int hf_lustre_mdt_rec_setattr_sa_valid = -1; -static int hf_lustre_mdt_rec_setattr_sa_uid = -1; -static int hf_lustre_mdt_rec_setattr_sa_gid = -1; -static int hf_lustre_mdt_rec_setattr_sa_size = -1; -static int hf_lustre_mdt_rec_setattr_sa_blocks = -1; -static int hf_lustre_mdt_rec_setattr_sa_mtime = -1; -static int hf_lustre_mdt_rec_setattr_sa_atime = -1; -static int hf_lustre_mdt_rec_setattr_sa_ctime = -1; -static int hf_lustre_mdt_rec_setattr_sa_attr_flags = -1; -static int hf_lustre_mdt_rec_setattr_sa_mode = -1; -static int hf_lustre_mdt_rec_setattr_sa_padding_2 = -1; -static int hf_lustre_mdt_rec_setattr_sa_projid = -1; -static int hf_lustre_mdt_rec_setattr_sa_padding_4 = -1; -static int hf_lustre_mdt_rec_setattr_sa_padding_5 = -1; - -static int hf_lustre_mdt_rec_create = -1 ; -static int hf_lustre_mdt_rec_create_cr_opcode = -1; -static int hf_lustre_mdt_rec_create_cr_cap = -1; -static int hf_lustre_mdt_rec_create_cr_fsuid = -1; -static int hf_lustre_mdt_rec_create_cr_fsuid_h = -1; -static int hf_lustre_mdt_rec_create_cr_fsgid = -1; -static int hf_lustre_mdt_rec_create_cr_fsgid_h = -1; -static int hf_lustre_mdt_rec_create_cr_suppgid1 = -1; -static int hf_lustre_mdt_rec_create_cr_suppgid1_h = -1; -static int hf_lustre_mdt_rec_create_cr_suppgid2 = -1; -static int hf_lustre_mdt_rec_create_cr_suppgid2_h = -1; -static int hf_lustre_mdt_rec_create_cr_fid1 = -1; -static int hf_lustre_mdt_rec_create_cr_fid2 = -1; -static int hf_lustre_mdt_rec_create_cr_old_handle = -1; -static int hf_lustre_mdt_rec_create_cr_time = -1; -static int hf_lustre_mdt_rec_create_cr_rdev = -1; -static int hf_lustre_mdt_rec_create_cr_ioepoch = -1; -static int hf_lustre_mdt_rec_create_cr_padding_1 = -1; -static int hf_lustre_mdt_rec_create_cr_mode = -1; -static int hf_lustre_mdt_rec_create_cr_bias = -1; -static int hf_lustre_mdt_rec_create_cr_flags_l = -1; -static int hf_lustre_mdt_rec_create_cr_flags_h = -1; -static int hf_lustre_mdt_rec_create_cr_umask = -1; -static int hf_lustre_mdt_rec_create_cr_padding_4 = -1; - -static int hf_lustre_mdt_rec_link = -1 ; -static int hf_lustre_mdt_rec_link_lk_opcode = -1; -static int hf_lustre_mdt_rec_link_lk_cap = -1; -static int hf_lustre_mdt_rec_link_lk_fsuid = -1; -static int hf_lustre_mdt_rec_link_lk_fsuid_h = -1; -static int hf_lustre_mdt_rec_link_lk_fsgid = -1; -static int hf_lustre_mdt_rec_link_lk_fsgid_h = -1; -static int hf_lustre_mdt_rec_link_lk_suppgid1 = -1; -static int hf_lustre_mdt_rec_link_lk_suppgid1_h = -1; -static int hf_lustre_mdt_rec_link_lk_suppgid2 = -1; -static int hf_lustre_mdt_rec_link_lk_suppgid2_h = -1; -static int hf_lustre_mdt_rec_link_lk_fid1 = -1; -static int hf_lustre_mdt_rec_link_lk_fid2 = -1; -static int hf_lustre_mdt_rec_link_lk_time = -1; -static int hf_lustre_mdt_rec_link_lk_padding_1 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_2 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_3 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_4 = -1; -static int hf_lustre_mdt_rec_link_lk_bias = -1; -static int hf_lustre_mdt_rec_link_lk_padding_5 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_6 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_7 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_8 = -1; -static int hf_lustre_mdt_rec_link_lk_padding_9 = -1; - -static int hf_lustre_mdt_rec_unlink = -1 ; -static int hf_lustre_mdt_rec_unlink_ul_opcode = -1; -static int hf_lustre_mdt_rec_unlink_ul_cap = -1; -static int hf_lustre_mdt_rec_unlink_ul_fsuid = -1; -static int hf_lustre_mdt_rec_unlink_ul_fsuid_h = -1; -static int hf_lustre_mdt_rec_unlink_ul_fsgid = -1; -static int hf_lustre_mdt_rec_unlink_ul_fsgid_h = -1; -static int hf_lustre_mdt_rec_unlink_ul_suppgid1 = -1; -static int hf_lustre_mdt_rec_unlink_ul_suppgid1_h = -1; -static int hf_lustre_mdt_rec_unlink_ul_suppgid2 = -1; -static int hf_lustre_mdt_rec_unlink_ul_suppgid2_h = -1; -static int hf_lustre_mdt_rec_unlink_ul_fid1 = -1; -static int hf_lustre_mdt_rec_unlink_ul_fid2 = -1; -static int hf_lustre_mdt_rec_unlink_ul_time = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_2 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_3 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_4 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_5 = -1; -static int hf_lustre_mdt_rec_unlink_ul_bias = -1; -static int hf_lustre_mdt_rec_unlink_ul_mode = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_6 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_7 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_8 = -1; -static int hf_lustre_mdt_rec_unlink_ul_padding_9 = -1; - -static int hf_lustre_mdt_rec_rename = -1 ; -static int hf_lustre_mdt_rec_rename_rn_opcode = -1; -static int hf_lustre_mdt_rec_rename_rn_cap = -1; -static int hf_lustre_mdt_rec_rename_rn_fsuid = -1; -static int hf_lustre_mdt_rec_rename_rn_fsuid_h = -1; -static int hf_lustre_mdt_rec_rename_rn_fsgid = -1; -static int hf_lustre_mdt_rec_rename_rn_fsgid_h = -1; -static int hf_lustre_mdt_rec_rename_rn_suppgid1 = -1; -static int hf_lustre_mdt_rec_rename_rn_suppgid1_h = -1; -static int hf_lustre_mdt_rec_rename_rn_suppgid2 = -1; -static int hf_lustre_mdt_rec_rename_rn_suppgid2_h = -1; -static int hf_lustre_mdt_rec_rename_rn_fid1 = -1; -static int hf_lustre_mdt_rec_rename_rn_fid2 = -1; -static int hf_lustre_mdt_rec_rename_rn_time = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_1 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_2 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_3 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_4 = -1; -static int hf_lustre_mdt_rec_rename_rn_bias = -1; -static int hf_lustre_mdt_rec_rename_rn_mode = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_5 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_6 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_7 = -1; -static int hf_lustre_mdt_rec_rename_rn_padding_8 = -1; - -static int hf_lustre_mdt_rec_setxattr = -1 ; -static int hf_lustre_mdt_rec_setxattr_sx_opcode = -1; -static int hf_lustre_mdt_rec_setxattr_sx_cap = -1; -static int hf_lustre_mdt_rec_setxattr_sx_fsuid = -1; -static int hf_lustre_mdt_rec_setxattr_sx_fsuid_h = -1; -static int hf_lustre_mdt_rec_setxattr_sx_fsgid = -1; -static int hf_lustre_mdt_rec_setxattr_sx_fsgid_h = -1; -static int hf_lustre_mdt_rec_setxattr_sx_suppgid1 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_suppgid1_h = -1; -static int hf_lustre_mdt_rec_setxattr_sx_suppgid2 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_suppgid2_h = -1; -static int hf_lustre_mdt_rec_setxattr_sx_fid = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_1 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_2 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_3 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_valid = -1; -static int hf_lustre_mdt_rec_setxattr_sx_time = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_5 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_6 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_7 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_size = -1; -static int hf_lustre_mdt_rec_setxattr_sx_flags = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_8 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_9 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_10 = -1; -static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -1; - -static int hf_lustre_mdt_getinfo_key = -1; -static int hf_lustre_mdt_getinfo_vallen = -1; -static int hf_lustre_mdt_getinfo_data = -1; - -static int hf_lustre_close_data = -1; -static int hf_lustre_close_fid = -1; -static int hf_lustre_close_data_ver = -1; -static int hf_lustre_close_reserved = -1; - -static int hf_lustre_seq_opc = -1; -static int hf_lustre_seq_range = -1; -static int hf_lustre_seq_range_start = -1; -static int hf_lustre_seq_range_end = -1; -static int hf_lustre_seq_range_index = -1; -static int hf_lustre_seq_range_flags = -1; - -static int hf_lustre_fld_opc = -1; -static int hf_lustre_fld_range = -1; -static int hf_lustre_fld_range_start = -1; -static int hf_lustre_fld_range_end = -1; -static int hf_lustre_fld_range_index = -1; -static int hf_lustre_fld_range_flags = -1; - -static int hf_lustre_mdt_ioepoch = -1; -static int hf_lustre_mdt_ioepoch_handle = -1; -static int hf_lustre_mdt_ioepoch_ioepoch = -1; -static int hf_lustre_mdt_ioepoch_flags = -1; -static int hf_lustre_mdt_ioepoch_padding = -1; - -static int hf_lustre_capa = -1; -static int hf_lustre_capa_fid = -1; -static int hf_lustre_capa_opc = -1; -static int hf_lustre_capa_uid = -1; -static int hf_lustre_capa_gid = -1; -static int hf_lustre_capa_flags = -1; -static int hf_lustre_capa_keyid = -1; -static int hf_lustre_capa_timeout = -1; -static int hf_lustre_capa_expiry = -1; -static int hf_lustre_capa_hmac = -1; - -static int hf_lustre_acl = -1; - -static int hf_lustre_ost_lvb_lvb_size = -1; -static int hf_lustre_ost_lvb_lvb_mtime = -1; -static int hf_lustre_ost_lvb_lvb_atime = -1; -static int hf_lustre_ost_lvb_lvb_ctime = -1; -static int hf_lustre_ost_lvb_lvb_blocks = -1; -static int hf_lustre_ost_lvb_lvb_mtime_ns = -1; -static int hf_lustre_ost_lvb_lvb_atime_ns = -1; -static int hf_lustre_ost_lvb_lvb_ctime_ns = -1; -static int hf_lustre_ost_lvb_lvb_padding = -1; - -static int hf_lustre_xattrs = -1; -static int hf_lustre_xattrs_name = -1; -static int hf_lustre_xattrs_data = -1; -static int hf_lustre_xattrs_size = -1; - -static int hf_lustre_lustre_handle_cookie = -1; -static int hf_lustre_ptlrpc_body_pb_last_committed = -1; -static int hf_lustre_ptlrpc_body_pb_version = -1; -static int hf_lustre_lustre_msg_v1_lm_bufcount = -1; -static int hf_lustre_obd_ioobj_ioo_id = -1; -static int hf_lustre_ptlrpc_body_pb_slv = -1; -static int hf_lustre_ptlrpc_body_pb_pre_version = -1; -static int hf_lustre_ptlrpc_body_pb_padding = -1; -static int hf_lustre_ptlrpc_body_pb_jobid = -1; -static int hf_lustre_lustre_msg_v1_lm_handle = -1; -static int hf_lustre_ptlrpc_body_pb_timeout = -1; -static int hf_lustre_obd_statfs_os_bavail = -1; -static int hf_lustre_obd_statfs_os_bsize = -1; -static int hf_lustre_lustre_msg_v2_lm_repsize = -1; -static int hf_lustre_lustre_msg_v1_lm_last_xid = -1; -static int hf_lustre_ll_fid_f_type = -1; -static int hf_lustre_lustre_msg_v2_lm_cksum = -1; -static int hf_lustre_lustre_msg_v2_lm_buflens = -1; -static int hf_lustre_lustre_msg_v1_lm_status = -1; -static int hf_lustre_lustre_msg_v1_lm_type = -1; -static int hf_lustre_niobuf_remote_len = -1; -static int hf_lustre_ptlrpc_body_pb_op_flags = -1; -static int hf_lustre_ptlrpc_body_pb_type = -1; -static int hf_lustre_obd_connect_data_ocd_nllg = -1; -static int hf_lustre_obd_connect_data_ocd_nllu = -1; -static int hf_lustre_ll_fid_generation = -1; -static int hf_lustre_obd_connect_data_ocd_ibits_known = -1; -static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1; -static int hf_lustre_ptlrpc_body_pb_flags = -1; -static int hf_lustre_obd_statfs_os_spare4 = -1; -static int hf_lustre_obd_connect_data_ocd_group = -1; -static int hf_lustre_lov_ost_data_v1_l_object_seq = -1; -static int hf_lustre_obd_connect_data_ocd_brw_size = -1; -static int hf_lustre_ptlrpc_body_pb_limit = -1; -static int hf_lustre_obd_statfs_os_maxbytes = -1; -static int hf_lustre_obd_statfs_os_spare5 = -1; -static int hf_lustre_lustre_msg_v2_lm_flags = -1; -static int hf_lustre_obd_statfs_os_ffree = -1; -static int hf_lustre_obd_statfs_os_files = -1; -static int hf_lustre_lustre_msg_v1_lm_flags = -1; -static int hf_lustre_lustre_msg_v1_lm_last_committed = -1; -static int hf_lustre_obd_statfs_os_spare9 = -1; -static int hf_lustre_obd_connect_data_ocd_index = -1; -static int hf_lustre_opnum = -1; -static int hf_lustre_lustre_msg_v1_lm_buflens = -1; -static int hf_lustre_obd_statfs_os_spare1 = -1; -static int hf_lustre_obd_statfs_os_spare8 = -1; -static int hf_lustre_lustre_msg_v1_lm_conn_cnt = -1; -static int hf_lustre_ptlrpc_body_pb_transno = -1; -static int hf_lustre_ptlrpc_body_pb_service_time = -1; -static int hf_lustre_ptlrpc_body_pb_conn_cnt = -1; -static int hf_lustre_ptlrpc_body_pb_opc = -1; -static int hf_lustre_obd_connect_data_ocd_connect_flags = -1; -static int hf_lustre_lov_ost_data_v1_l_object_id = -1; -static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1; -static int hf_lustre_obd_statfs_os_bfree = -1; -static int hf_lustre_obd_connect_data_ocd_version = -1; -static int hf_lustre_obd_statfs_os_namelen = -1; -static int hf_lustre_obd_statfs_os_blocks = -1; -static int hf_lustre_lustre_msg_v2_lm_secflvr = -1; -static int hf_lustre_lustre_msg_v1_lm_transno = -1; -static int hf_lustre_lustre_msg_v1_lm_opc = -1; -static int hf_lustre_obd_connect_data_ocd_grant = -1; -static int hf_lustre_obd_ioobj_ioo_bufcnt = -1; -static int hf_lustre_lustre_msg_v1_lm_version = -1; -static int hf_lustre_obd_statfs_os_spare7 = -1; -static int hf_lustre_obd_statfs_os_fsid = -1; -static int hf_lustre_obd_connect_data_ocd_cksum_types = -1; -static int hf_lustre_obd_connect_data_ocd_max_easize = -1; -static int hf_lustre_obd_connect_data_ocd_instance = -1; -static int hf_lustre_obd_connect_data_ocd_maxbytes = -1; -static int hf_lustre_obd_connect_data_ocd_maxmodrpcs = -1; -static int hf_lustre_obd_statfs_os_type = -1; -static int hf_lustre_obd_statfs_os_spare6 = -1; -static int hf_lustre_obd_statfs_os_state = -1; -static int hf_lustre_obd_statfs_os_spare3 = -1; -static int hf_lustre_lustre_msg_v2_lm_magic = -1; -static int hf_lustre_ptlrpc_body_pb_last_seen = -1; -static int hf_lustre_obd_ioobj_ioo_max_brw = -1; -static int hf_lustre_ptlrpc_body_pb_last_xid = -1; -static int hf_lustre_ptlrpc_body_pb_status = -1; -static int hf_lustre_niobuf_remote_flags = -1; -static int hf_lustre_ll_fid_id = -1; -static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1; -static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1; -static int hf_lustre_obd_ioobj_ioo_seq = -1; -static int hf_lustre_niobuf_remote_offset=-1; -static int hf_lustre_obd_statfs_os_spare2 = -1; -static int hf_lustre_lustre_msg_v2_lm_bufcount = -1; -static int hf_lustre_ptlrpc_body_pb_handle = -1; -static int hf_lustre_obd_connect_data_ocd_transno = -1; -static int hf_lustre_lustre_msg_v1_lm_magic = -1; -static int hf_lustre_llog_unlink_rec_lur_tail = -1; -static int hf_lustre_llog_size_change_rec_lsc_io_epoch = -1; -static int hf_lustre_mgs_target_info_mti_flags = -1; -static int hf_lustre_ldlm_reply_lock_policy_res1 = -1; -static int hf_lustre_llogd_body_lgd_len = -1; -static int hf_lustre_qunit_data_old_qd_id = -1; -static int hf_lustre_llog_logid_rec_padding1 = -1; -static int hf_lustre_quota_adjust_qunit_padding1 = -1; -static int hf_lustre_llog_size_change_rec_lsc_fid = -1; -static int hf_lustre_llog_rec_hdr_padding = -1; -static int hf_lustre_obdo_o_nlink = -1; -static int hf_lustre_ldlm_extent_gid = -1; -static int hf_lustre_obdo_o_uid = -1; -static int hf_lustre_obdo_o_valid = -1; -static int hf_lustre_ldlm_reply_lock_flags = -1; -static int hf_lustre_obdo_o_misc = -1; - -static int hf_lustre_ldlm_request_lock_handle = -1; -static int hf_lustre_llog_logid_lgl_oid = -1; -static int hf_lustre_ldlm_inodebits_bits = -1; -static int hf_lustre_llog_log_hdr_llh_count = -1; -static int hf_lustre_llog_gen_rec_lgr_tail = -1; -static int hf_lustre_llog_catid_lci_padding3 = -1; -static int hf_lustre_qunit_data_qd_qunit = -1; -static int hf_lustre_llog_setattr_rec_padding = -1; -static int hf_lustre_llog_cookie_lgc_lgl = -1; -static int hf_lustre_obd_quotactl_qc_dqinfo = -1; -static int hf_lustre_llog_log_hdr_llh_bitmap = -1; -static int hf_lustre_obd_quotactl_qc_stat = -1; -static int hf_lustre_qunit_data_old2_qd_id = -1; -static int hf_lustre_llog_logid_rec_padding2 = -1; -static int hf_lustre_llog_logid_rec_padding5 = -1; -static int hf_lustre_ldlm_intent_opc = -1; -static int hf_lustre_llog_rec_hdr_lrh_type = -1; -static int hf_lustre_llog_rec_hdr_lrh_len = -1; -static int hf_lustre_llog_setattr_rec_lsr_uid = -1; -static int hf_lustre_lov_desc_ld_padding_1 = -1; -static int hf_lustre_obdo_o_padding_4 = -1; -static int hf_lustre_mgs_target_info_padding = -1; -static int hf_lustre_obd_quotactl_qc_dqblk = -1; -static int hf_lustre_llogd_conn_body_lgdc_gen = -1; -static int hf_lustre_llog_log_hdr_llh_tail = -1; -static int hf_lustre_obdo_o_size = -1; -static int hf_lustre_ldlm_extent_start = -1; -static int hf_lustre_llog_size_change_rec_lsc_hdr = -1; -static int hf_lustre_llog_logid_lgl_oseq = -1; -static int hf_lustre_llog_cookie_lgc_padding = -1; -static int hf_lustre_qunit_data_old_qd_type = -1; -static int hf_lustre_ldlm_flock_blocking_export = -1; -static int hf_lustre_lov_desc_ld_pattern = -1; -static int hf_lustre_qunit_data_qd_id = -1; -static int hf_lustre_mgs_target_info_mti_fsname = -1; -static int hf_lustre_ldlm_request_lock_flags = -1; -static int hf_lustre_obdo_o_mode = -1; -static int hf_lustre_mgs_target_info_mti_svname = -1; -static int hf_lustre_llogd_body_lgd_logid = -1; -static int hf_lustre_llog_log_hdr_llh_size = -1; -static int hf_lustre_obdo_o_handle = -1; -static int hf_lustre_obdo_o_atime = -1; -static int hf_lustre_quota_adjust_qunit_qaq_id = -1; -static int hf_lustre_ldlm_lock_desc_l_policy_data = -1; -static int hf_lustre_obd_quotactl_qc_cmd = -1; -static int hf_lustre_qunit_data_padding = -1; -static int hf_lustre_quota_adjust_qunit_qaq_flags = -1; -static int hf_lustre_ldlm_lock_desc_l_granted_mode = -1; -static int hf_lustre_obdo_o_seq = -1; -static int hf_lustre_obdo_o_gid = -1; -static int hf_lustre_llog_catid_lci_logid = -1; -static int hf_lustre_llog_rec_tail_lrt_index = -1; -static int hf_lustre_lov_desc_ld_default_stripe_count = -1; -static int hf_lustre_ldlm_resource_desc_lr_padding = -1; -static int hf_lustre_cfg_marker_cm_vers = -1; -static int hf_lustre_llog_unlink_rec_lur_hdr = -1; -static int hf_lustre_llogd_body_lgd_index = -1; -static int hf_lustre_cfg_marker_cm_tgtname = -1; -static int hf_lustre_llog_setattr_rec_lsr_ogen = -1; -static int hf_lustre_llog_logid_rec_lid_hdr = -1; -static int hf_lustre_obdo_o_ioepoch = -1; -static int hf_lustre_ost_body_oa = -1; -static int hf_lustre_llog_logid_rec_padding3 = -1; -static int hf_lustre_llog_log_hdr_llh_flags = -1; -static int hf_lustre_llog_setattr_rec_lsr_oid = -1; -static int hf_lustre_llog_size_change_rec_padding = -1; -static int hf_lustre_mgs_target_info_mti_config_ver = -1; -static int hf_lustre_cfg_marker_cm_createtime = -1; -static int hf_lustre_qunit_data_old_qd_count = -1; -static int hf_lustre_llog_catid_lci_padding1 = -1; -static int hf_lustre_lov_desc_ld_active_tgt_count = -1; -static int hf_lustre_obdo_o_lcookie = -1; -static int hf_lustre_llog_gen_rec_lgr_gen = -1; -static int hf_lustre_obdo_o_id = -1; -static int hf_lustre_mgs_target_info_mti_uuid = -1; -static int hf_lustre_llog_rec_hdr_lrh_index = -1; -static int hf_lustre_llog_setattr_rec_lsr_hdr = -1; -static int hf_lustre_mgs_target_info_mti_stripe_index = -1; -static int hf_lustre_llog_gen_conn_cnt = -1; -static int hf_lustre_obdo_o_padding_6 = -1; -static int hf_lustre_llog_cookie_lgc_index = -1; -static int hf_lustre_lov_desc_ld_uuid = -1; -static int hf_lustre_ldlm_reply_lock_desc = -1; -static int hf_lustre_lov_desc_ld_padding_0 = -1; -static int hf_lustre_llog_unlink_rec_lur_ogen = -1; -static int hf_lustre_cfg_marker_cm_flags = -1; -static int hf_lustre_obdo_o_padding_3 = -1; -static int hf_lustre_ldlm_request_lock_desc = -1; -static int hf_lustre_obdo_o_flags = -1; -static int hf_lustre_mgs_target_info_mti_params = -1; -static int hf_lustre_llog_logid_lgl_ogen = -1; -static int hf_lustre_cfg_marker_cm_comment = -1; -static int hf_lustre_llog_unlink_rec_lur_oid = -1; -static int hf_lustre_qunit_data_qd_count = -1; -static int hf_lustre_obdo_o_mtime = -1; -static int hf_lustre_obdo_o_blksize = -1; -static int hf_lustre_ldlm_res_id_name = -1; -static int hf_lustre_ldlm_reply_lock_handle = -1; -static int hf_lustre_llogd_body_lgd_saved_index = -1; -static int hf_lustre_qunit_data_old_qd_isblk = -1; -static int hf_lustre_obdo_o_blocks = -1; -static int hf_lustre_lov_desc_ld_padding_2 = -1; -static int hf_lustre_llog_logid_rec_lid_tail = -1; -static int hf_lustre_obdo_o_grant = -1; -static int hf_lustre_obdo_o_uid_h = -1; -static int hf_lustre_obdo_o_gid_h = -1; -static int hf_lustre_quota_adjust_qunit_qaq_iunit_sz = -1; -static int hf_lustre_llog_unlink_rec_padding = -1; -static int hf_lustre_ldlm_lock_desc_l_req_mode = -1; -static int hf_lustre_ldlm_extent_end = -1; -static int hf_lustre_llog_gen_rec_lgr_hdr = -1; -static int hf_lustre_llogd_body_lgd_llh_flags = -1; -static int hf_lustre_llog_log_hdr_llh_cat_idx = -1; -static int hf_lustre_llog_log_hdr_llh_bitmap_offset=-1; -static int hf_lustre_ldlm_reply_lock_padding = -1; -static int hf_lustre_obd_quotactl_qc_id = -1; -static int hf_lustre_llog_logid_rec_padding4 = -1; -static int hf_lustre_llog_setattr_rec_lsr_gid = -1; -static int hf_lustre_obd_quotactl_qc_type = -1; -static int hf_lustre_cfg_marker_padding = -1; -static int hf_lustre_mgs_target_info_mti_nids = -1; -static int hf_lustre_obdo_o_stripe_idx = -1; -static int hf_lustre_llogd_conn_body_lgdc_logid = -1; -static int hf_lustre_ldlm_flock_blocking_pid = -1; -static int hf_lustre_lov_desc_ld_tgt_count = -1; -static int hf_lustre_llogd_body_lgd_cur_offset=-1; -static int hf_lustre_qunit_data_old2_qd_count = -1; -static int hf_lustre_qunit_data_old2_qd_flags = -1; -static int hf_lustre_ldlm_flock_start = -1; -static int hf_lustre_quota_adjust_qunit_qaq_bunit_sz = -1; -static int hf_lustre_ldlm_flock_pid = -1; -static int hf_lustre_lov_desc_ld_default_stripe_size = -1; -static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1; -static int hf_lustre_cfg_marker_cm_step = -1; -static int hf_lustre_mgs_send_param_mgs_param = -1; -static int hf_lustre_lov_desc_ld_default_stripe_offset=-1; -static int hf_lustre_ldlm_resource_desc_lr_name = -1; -static int hf_lustre_llog_rec_tail_lrt_len = -1; -static int hf_lustre_llog_log_hdr_llh_timestamp = -1; -static int hf_lustre_llog_catid_lci_padding2 = -1; -static int hf_lustre_llogd_conn_body_lgdc_ctxt_idx = -1; -static int hf_lustre_cfg_marker_cm_canceltime = -1; -static int hf_lustre_mgs_target_info_mti_lustre_ver = -1; -static int hf_lustre_obdo_o_parent_ver = -1; -static int hf_lustre_qunit_data_qd_flags = -1; -static int hf_lustre_llog_logid_rec_lid_id = -1; -static int hf_lustre_obdo_o_parent_oid = -1; -static int hf_lustre_llog_gen_mnt_cnt = -1; -static int hf_lustre_llog_size_change_rec_lsc_tail = -1; -static int hf_lustre_obdo_o_padding_5 = -1; -static int hf_lustre_ldlm_lock_desc_l_resource = -1; -static int hf_lustre_obdo_o_parent_seq = -1; -static int hf_lustre_ldlm_request_lock_count = -1; -static int hf_lustre_ldlm_flock_end = -1; -static int hf_lustre_mgs_target_info_mti_nid_count = -1; -static int hf_lustre_obdo_o_ctime = -1; -static int hf_lustre_ldlm_reply_lock_policy_res2 = -1; -static int hf_lustre_llogd_body_lgd_ctxt_idx = -1; -static int hf_lustre_lov_desc_ld_qos_maxage = -1; -static int hf_lustre_ldlm_resource_desc_lr_type = -1; -static int hf_lustre_llog_setattr_rec_lsr_tail = -1; -static int hf_lustre_llog_cookie_lgc_subsys = -1; -static int hf_lustre_llog_log_hdr_llh_hdr = -1; -static int hf_lustre_llog_log_hdr_llh_reserved = -1; - -/* Header field declarations for field from lustre_user.h*/ -static int hf_lustre_obd_dqinfo_dqi_valid = -1; -static int hf_lustre_obd_dqblk_dqb_isoftlimit = -1; -static int hf_lustre_obd_dqblk_dqb_bhardlimit = -1; -static int hf_lustre_obd_dqblk_dqb_curspace = -1; -static int hf_lustre_obd_dqblk_dqb_itime = -1; -static int hf_lustre_obd_dqblk_dqb_valid = -1; -static int hf_lustre_obd_dqinfo_dqi_igrace = -1; -static int hf_lustre_obd_dqinfo_dqi_bgrace = -1; -static int hf_lustre_obd_dqblk_padding = -1; -static int hf_lustre_obd_dqblk_dqb_curinodes = -1; -static int hf_lustre_obd_dqblk_dqb_bsoftlimit = -1; -static int hf_lustre_obd_dqinfo_dqi_flags = -1; -static int hf_lustre_obd_dqblk_dqb_btime = -1; -static int hf_lustre_obd_dqblk_dqb_ihardlimit = -1; -static int hf_lustre_ldlm_intent_opc_open = -1 ; -static int hf_lustre_ldlm_intent_opc_creat = -1; -static int hf_lustre_ldlm_intent_opc_readdir = -1; -static int hf_lustre_ldlm_intent_opc_getattr = -1; -static int hf_lustre_ldlm_intent_opc_lookup = -1; -static int hf_lustre_ldlm_intent_opc_unlink = -1; -static int hf_lustre_ldlm_intent_opc_trunc = -1; -static int hf_lustre_ldlm_intent_opc_getxattr = -1; -static int hf_lustre_ldlm_intent_opc_exec = -1; -static int hf_lustre_ldlm_intent_opc_pin = -1; -static int hf_lustre_ldlm_intent_opc_layout = -1; -static int hf_lustre_ldlm_intent_opc_q_dqacq = -1; -static int hf_lustre_ldlm_intent_opc_q_conn = -1; -static int hf_lustre_ldlm_intent_opc_setxattr = -1; -static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1; -static int hf_lustre_llog_hdr_llh_flag_is_cat = -1; -static int hf_lustre_llog_hdr_llh_flag_is_play = -1; -static int hf_lustre_lu_ladvise = -1; -static int hf_lustre_lu_ladvise_lla_start = -1; -static int hf_lustre_lu_ladvise_lla_end = -1; -static int hf_lustre_lu_ladvise_lla_advice = -1; -static int hf_lustre_lu_ladvise_lla_padding = -1; - -static int hf_lustre_ldlm_key = -1; -static int hf_lustre_ldlm_value = -1; - -static int hf_lustre_hsm_request = -1; -static int hf_lustre_hsm_req_action = -1; -static int hf_lustre_hsm_req_archive_id = -1; -static int hf_lustre_hsm_req_flags = -1; -static int hf_lustre_hsm_req_itemcount = -1; -static int hf_lustre_hsm_req_data_len = -1; - -static int hf_lustre_hsm_user_item = -1; -static int hf_lustre_hsm_user_item_fid = -1; -static int hf_lustre_hsm_user_item_extent = -1; - -static int hf_lustre_hsm_extent = -1; -static int hf_lustre_hsm_extent_offset = -1; -static int hf_lustre_hsm_extent_length = -1; - -static int hf_lustre_hsm_progress = -1; -static int hf_lustre_hsm_prog_fid = -1; -static int hf_lustre_hsm_prog_cookie = -1; -static int hf_lustre_hsm_prog_extent = -1; -static int hf_lustre_hsm_prog_flags = -1; -static int hf_lustre_hsm_prog_errval = -1; -static int hf_lustre_hsm_prog_data_ver = -1; - -static int hf_lustre_hsm_state_get = -1; -static int hf_lustre_hsm_us_states = -1; -static int hf_lustre_hsm_us_archive_id = -1; -static int hf_lustre_hsm_us_in_prog_state = -1; -static int hf_lustre_hsm_us_in_prog_action = -1; -static int hf_lustre_hsm_us_in_prog_location = -1; -static int hf_lustre_hsm_us_ext_info = -1; - -/* Quota Body */ -static int hf_lustre_qb = -1; -static int hf_lustre_qb_fid = -1; -static int hf_lustre_qb_id = -1; -static int hf_lustre_qb_flags = -1; -static int hf_lustre_qb_padding = -1; -static int hf_lustre_qb_count = -1; -static int hf_lustre_qb_usage = -1; -static int hf_lustre_qb_slv_ver = -1; -static int hf_lustre_qb_lockh = -1; -static int hf_lustre_qb_glb_lockh = -1; - -static int hf_lustre_qid_fid = -1; -static int hf_lustre_qid_uid = -1; -static int hf_lustre_qid_gid = -1; - -/* Layout Intent */ -static int hf_lustre_layout_intent = -1; -static int hf_lustre_layout_intent_opc = -1; -static int hf_lustre_layout_intent_flags = -1; -static int hf_lustre_layout_intent_start = -1; -static int hf_lustre_layout_intent_end = -1; - -/* mds md v1 and v3 */ -static int hf_lustre_lov_mds_md_lmm_magic = -1; -static int hf_lustre_lov_mds_md_lmm_pattern = -1; -static int hf_lustre_lov_mds_md_lmm_object_id = -1; /* v1 only */ -static int hf_lustre_lov_mds_md_lmm_oi = -1; /* v3 only */ -static int hf_lustre_lov_mds_md_lmm_object_seq = -1; /* v1 only */ -static int hf_lustre_lov_mds_md_lmm_stripe_size = -1; -static int hf_lustre_lov_mds_md_lmm_stripe_count = -1; -static int hf_lustre_lov_mds_md_lmm_layout_gen = -1; -static int hf_lustre_lov_mds_md_lmm_pool_name = -1; /* v3 only */ -static int hf_lustre_lov_mds_md_lmm_objects = -1; - -/* struct ost_id */ -static int hf_lustre_ost_id_oi_id = -1; -static int hf_lustre_ost_id_oi_seq = -1; - -static int hf_lustre_generic_data = -1; -/* --------------------------------------------------------------------*/ - - -/* proto declaration */ -static gint proto_lustre = -1; - -typedef int (dissect_func)( - tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, - int hfindex); - -static dissect_func dissect_uint64, dissect_uint32, dissect_uint16, dissect_uint8; - -#define WSHARK_HEAD -#include "lustre_dlm_flags_wshark.c" -#undef WSHARK_HEAD - -static int ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) ; -static int add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) ; - - -/* ======================================================================== */ -/*the value_string*/ -const value_string lustre_ldlm_opcode[] = { - { IT_OPEN , "IT_OPEN "}, - { IT_CREAT , "IT_CREAT "}, - { IT_READDIR , "IT_READDIR "}, - { IT_GETATTR , "IT_GETATTR "}, - { IT_LOOKUP , "IT_LOOKUP "}, - { IT_UNLINK , "IT_UNLINK "}, - { IT_GETXATTR, "IT_GETXATTR"}, - { IT_EXEC , "IT_EXEC "}, - { IT_PIN , "IT_PIN "}, - { 0, NULL } -}; - -const value_string lustre_lov_magic[] = { - { LOV_MAGIC_V1, "LOV_MAGIC_V1" }, - { LOV_MAGIC_V3, "LOV_MAGIC_V3" }, - {0, NULL} -}; - -const value_string lustre_llog_op_type[] = { - {LLOG_PAD_MAGIC ,"LLOG_PAD_MAGIC "}, - {OST_SZ_REC ,"OST_SZ_REC "}, - {OST_RAID1_REC ,"OST_RAID1_REC "}, - {MDS_UNLINK_REC ,"MDS_UNLINK_REC "}, - {MDS_SETATTR_REC ,"MDS_SETATTR_REC "}, - {OBD_CFG_REC ,"OBD_CFG_REC "}, - {PTL_CFG_REC ,"PTL_CFG_REC "}, - {LLOG_GEN_REC ,"LLOG_GEN_REC "}, - {LLOG_JOIN_REC ,"LLOG_JOIN_REC "}, - {LLOG_HDR_MAGIC ,"LLOG_HDR_MAGIC "}, - {LLOG_LOGID_MAGIC ,"LLOG_LOGID_MAGIC"}, - { 0, NULL } -}; - -const value_string lustre_llog_hdr_llh_flags[]= { - {LLOG_F_ZAP_WHEN_EMPTY , "LLOhdr_llh_G_F_ZAP_WHEN_EMPTY"}, - {LLOG_F_IS_CAT , "LLOhdr_llh_G_F_IS_CAT"}, - {LLOG_F_IS_PLAIN , "LLOG_F_IS_PLAIN"}, - { 0, NULL } -}; - -const value_string lustre_mds_flags_vals[] = { - {0x00000008, "LUSTRE_SYNC_FL "}, /* Synchronous updates */ - {0x00000010, "LUSTRE_IMMUTABLE_FL "}, /* Immutable file */ - {0x00000020, "LUSTRE_APPEND_FL "}, /* writes to file may only append */ - {0x00000040, "LUSTRE_NODUMP_FL "}, /* do not dump file */ - {0x00000080, "LUSTRE_NOATIME_FL "}, /* do not update atime */ - {0x00001000, "LUSTRE_INDEX_FL "}, /* hash-indexed directory */ - {0x00010000, "LUSTRE_DIRSYNC_FL "}, /* dirsync behaviour (dir only) */ - {0x00020000, "LUSTRE_TOPDIR_FL "}, /* Top of directory hierarchies */ - {0x00100000, "LUSTRE_DIRECTIO_FL "}, /* Use direct i/o */ - {0x10000000, "LUSTRE_INLINE_DATA_FL "}, /* Inode has inline data. */ - { 0, NULL } -}; - -const value_string lustre_mgs_config_body_types[] = { - { 0, "CONFIG" }, - { 1, "SPTLRPC" }, - { 2, "RECOVER" }, - { 3, "MAX" }, - { 0, NULL } -}; - -const value_string lustre_LMTypes[] = { - { PTL_RPC_MSG_REQUEST, "request"}, - { PTL_RPC_MSG_ERR , "error"}, - { PTL_RPC_MSG_REPLY , "reply"}, - { 0, NULL } -}; - -const value_string lustre_mds_reint_op_vals[] = { - { REINT_SETATTR, "REINT_SETATTR" }, - { REINT_CREATE, "REINT_CREATE" }, - { REINT_LINK, "REINT_LINK" }, - { REINT_UNLINK, "REINT_UNLINK" }, - { REINT_RENAME, "REINT_RENAME" }, - { REINT_OPEN, "REINT_OPEN" }, - { REINT_SETXATTR, "REINT_SETXATTR" }, - { REINT_RMENTRY, "REINT_RMENTRY" }, - { REINT_MIGRATE, "REINT_MIGRATE" }, - { 0, NULL } -}; -const value_string lustre_op_codes[] = { - /*OST Opcodes*/ - {0 , "OST_REPLY"}, - {1 , "OST_GETATTR"}, - {2 , "OST_SETATTR"}, - {3 , "OST_READ"}, - {4 , "OST_WRITE"}, - {5 , "OST_CREATE"}, - {6 , "OST_DESTROY"}, - {7 , "OST_GET_INFO"}, - {8 , "OST_CONNECT"}, - {9 , "OST_DISCONNECT"}, - {10 , "OST_PUNCH"}, - {11 , "OST_OPEN"}, - {12 , "OST_CLOSE"}, - {13 , "OST_STATFS"}, - {14 , "OST_SAN_READ(deprecated)"}, - {15 , "OST_SAN_WRITE(deprecated)"}, - {16 , "OST_SYNC"}, - {17 , "OST_SET_INFO"}, - {18 , "OST_QUOTACHECK"}, - {19 , "OST_QUOTACTL"}, - {20 , "OST_QUOTA_ADJUST_QUNIT"}, - {21 , "OST_LADVISE"}, - {22 , "OST_LAST_OPC"}, - /*MDS Opcodes*/ - {33 , "MDS_GETATTR"}, - {34 , "MDS_GETATTR_NAME"}, - {35 , "MDS_CLOSE"}, - {36 , "MDS_REINT"}, - {37 , "MDS_READPAGE"}, - {38 , "MDS_CONNECT"}, - {39 , "MDS_DISCONNECT"}, - {40 , "MDS_GET_ROOT"}, - {41 , "MDS_STATFS"}, - {42 , "MDS_PIN"}, - {43 , "MDS_UNPIN"}, - {44 , "MDS_SYNC"}, - {45 , "MDS_DONE_WRITING"}, - {46 , "MDS_SET_INFO"}, - {47 , "MDS_QUOTACHECK"}, - {48 , "MDS_QUOTACTL"}, - {49 , "MDS_GETXATTR"}, - {50 , "MDS_SETXATTR"}, - {51 , "MDS_WRITEPAGE"}, - {52 , "MDS_IS_SUBDIR"}, - {53 , "MDS_GET_INFO"}, - {54 , "MDS_HSM_STATE_GET"}, - {55 , "MDS_HSM_STATE_SET"}, - {56 , "MDS_HSM_ACTION"}, - {57 , "MDS_HSM_PROGRESS"}, - {58 , "MDS_HSM_REQUEST"}, - {59 , "MDS_HSM_CT_REGISTER"}, - {60 , "MDS_HSM_CT_UNREGISTER"}, - {61 , "MDS_SWAP_LAYOUTS"}, - {62 , "MDS_LAST_OPC"}, - /*LDLM Opcodes*/ - {101 , "LDLM_ENQUEUE"}, - {102 , "LDLM_CONVERT"}, - {103 , "LDLM_CANCEL"}, - {104 , "LDLM_BL_CALLBACK"}, - {105 , "LDLM_CP_CALLBACK"}, - {106 , "LDLM_GL_CALLBACK"}, - {107 , "LDLM_SET_INFO"}, - {108 , "LDLM_LAST_OPC"}, - /*MGS Opcodes*/ - {250 , "MGS_CONNECT"}, - {251 , "MGS_DISCONNECT"}, - {252 , "MGS_EXCEPTION"}, - {253 , "MGS_TARGET_REG"}, - {254 , "MGS_TARGET_DEL"}, - {255 , "MGS_SET_INFO"}, - {256 , "MGS_CONFIG_READ"}, - {257 , "MGS_LAST_OPC"}, - /*OBD Opcodes*/ - {400 , "OBD_PING"}, - {401 , "OBD_LOG_CANCEL"}, - {402 , "OBD_QC_CALLBACK"}, - {403 , "OBD_LAST_OPC"}, - /* LLOG opcodes */ - { 501, "LLOG_ORIGIN_HANDLE_CREATE"}, - { 502, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK"}, - { 503, "LLOG_ORIGIN_HANDLE_READ_HEADER"}, - { 504, "LLOG_ORIGIN_HANDLE_WRITE_REC"}, - { 505, "LLOG_ORIGIN_HANDLE_CLOSE"}, - { 506, "LLOG_ORIGIN_CONNECT"}, - { 507, "LLOG_CATINFO"}, - { 508, "LLOG_ORIGIN_HANDLE_PREV_BLOCK"}, - { 509, "LLOG_ORIGIN_HANDLE_DESTROY"}, - /* SEQ RPC opcodes */ - { 700, "SEQ_QUERY"}, - { 701, "SEQ_LAST_OPC"}, - /* FLD RPC opcodes */ - { 900, "FLD_QUERY"}, - { 901, "FLD_LAST_OPC"}, - { 0, NULL } -}; - -/* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */ -const value_string lustre_ldlm_mode_vals[] = { - { LCK_MINMODE, "MINMODE" }, - { LCK_EX, "Exclusive" }, - { LCK_PW, "Protected Write" }, - { LCK_PR, "Protected Read" }, - { LCK_CW, "Concurrent Write" }, - { LCK_CR, "Concurrent Read" }, - { LCK_NL, "Null" }, - { LCK_GROUP, "GROUP" }, - { 0, NULL } -}; - -const value_string lustre_ldlm_type_vals[] = { - { LDLM_PLAIN, "LDLM_PLAIN" }, - { LDLM_EXTENT,"LDLM_EXTENT" }, - { LDLM_FLOCK, "LDLM_FLOCK" }, - { LDLM_IBITS, "LDLM_IBITS" }, - { 0, NULL } -}; - - -const value_string lustre_llog_cmd_t_vals[] = { - { LLOG_ORIGIN_HANDLE_CREATE, "LLOG_ORIGIN_HANDLE_CREATE" }, - { LLOG_ORIGIN_HANDLE_NEXT_BLOCK, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK" }, - { LLOG_ORIGIN_HANDLE_READ_HEADER, "LLOG_ORIGIN_HANDLE_READ_HEADER" }, - { LLOG_ORIGIN_HANDLE_WRITE_REC, "LLOG_ORIGIN_HANDLE_WRITE_REC" }, - { LLOG_ORIGIN_HANDLE_CLOSE, "LLOG_ORIGIN_HANDLE_CLOSE" }, - { LLOG_ORIGIN_CONNECT, "LLOG_ORIGIN_CONNECT" }, - { LLOG_CATINFO, "LLOG_CATINFO" }, - { LLOG_ORIGIN_HANDLE_PREV_BLOCK, "LLOG_ORIGIN_HANDLE_PREV_BLOCK" }, - { LLOG_ORIGIN_HANDLE_DESTROY, "LLOG_ORIGIN_HANDLE_DESTROY" }, - { 0, NULL } -}; - -/* from lustre_user.h */ -enum hsm_user_action { - HUA_NONE = 1, /* no action (noop) */ - HUA_ARCHIVE = 10, /* copy to hsm */ - HUA_RESTORE = 11, /* prestage */ - HUA_RELEASE = 12, /* drop ost objects */ - HUA_REMOVE = 13, /* remove from archive */ - HUA_CANCEL = 14 /* cancel a request */ -}; -const value_string lustre_hsm_user_action_t_vals[] = { - { HUA_NONE, "NOOP" }, - { HUA_ARCHIVE, "ARCHIVE" }, - { HUA_RESTORE, "RESTORE" }, - { HUA_RELEASE, "RELEASE" }, - { HUA_REMOVE, "REMOVE" }, - { HUA_CANCEL, "CANCEL" }, -}; - -enum hsm_states { - HS_EXISTS = 0x00000001, - HS_DIRTY = 0x00000002, - HS_RELEASED = 0x00000004, - HS_ARCHIVED = 0x00000008, - HS_NORELEASE = 0x00000010, - HS_NOARCHIVE = 0x00000020, - HS_LOST = 0x00000040, -}; -const value_string lustre_hsm_states_t_vals[] = { - { HS_EXISTS, "EXISTS" }, - { HS_DIRTY, "DIRTY" }, - { HS_RELEASED, "RELEASED" }, - { HS_ARCHIVED, "ARCHIVED" }, - { HS_NORELEASE, "NORELEASED" }, - { HS_NOARCHIVE, "NOARCHIVED" }, - { HS_LOST, "LOST" }, -}; - -enum hsm_progress_states { - HPS_WAITING = 1, - HPS_RUNNING = 2, - HPS_DONE = 3, -}; -const value_string lustre_hsm_progress_state_t_vals[] = { - { HPS_WAITING, "WAITING" }, - { HPS_RUNNING, "RUNNING" }, - { HPS_DONE, "DONE" }, -}; - -#ifndef ENABLE_STATIC -const gchar version[] = VERSION; - -/* Start the functions we need for the plugin stuff */ - -void -plugin_register(void) -{ - extern void proto_register_dcerpc_lustre(void); - - proto_register_dcerpc_lustre(); -} - -void -plugin_reg_handoff(void) -{ - extern void proto_reg_handoff_lustre(void); - - proto_reg_handoff_lustre(); -} -#endif - - -/* ------------------------------------------------------------------- */ -/* display functions */ -/* ------------------------------------------------------------------- */ -/* display str in left corner and in COL */ -/* @gint col : the col where we add the information */ -static void display_info_str(proto_item *pi, column_info *cinfo, gint col, - const gchar *str) -{ - if (NULL != pi) - proto_item_append_text(pi, str); - - if (NULL != cinfo) - col_append_str(cinfo, col, str); -} - -/* - * Need to be (re)written - */ -static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, - const char *format, const gchar *str) -{ - if (NULL != pi) - proto_item_append_text(pi, format, str); - - if (NULL != cinfo) - col_append_fstr(cinfo, col, format, str); -} - - -/* -------------------------- basic dissect functions ------------------- */ -static int dissect_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, - proto_tree *tree, int hfindex) -{ - proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE); - return offset+8; -} - -static int -dissect_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, - proto_tree *tree, int hfindex) -{ - proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE); - return offset+4; -} - -static int -dissect_uint16 -(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex) -{ - proto_tree_add_item(tree, hfindex, tvb, offset, 2, TRUE); - return offset+2; -} - -static int -dissect_uint8 -(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex) -{ - proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE); - return offset+1; -} - -/* ------------------------------------------------------------------------- */ - -/* dissect raw data */ -static int -lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, proto_tree *parent_tree _U_, - int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - - guint32 data_len; - int old_offset; - - old_offset = offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); - - offset += data_len; - proto_item_set_len(item, offset-old_offset); - offset = add_extra_padding(tvb, offset, pinfo, parent_tree); - - return offset; -} - -static int -lustre_dissect_struct_element_data(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, proto_tree *parent_tree _U_, - int hf_index _U_, guint32 data_len) -{ - proto_item *item = NULL; - - if (data_len == 0) - return offset; - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); - - offset += data_len; - proto_item_set_len(item, data_len); - offset = add_extra_padding(tvb, offset, pinfo, parent_tree); - - return offset; -} - -int -lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, int max_length) -{ - int i; - int val; - proto_item *item = NULL; - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 0, TRUE); - for (i=0; i < max_length; ++i) { - val = tvb_get_guint8(tvb, offset+i); - proto_item_append_text(item, (i) ? "%02x" : ": %#02x", val); - } - - offset += max_length; - proto_item_set_len(item, max_length); - return offset; -} - -/* struct ost_id { */ -/* union { */ -/* struct { */ -/* __u64 oi_id; */ -/* __u64 oi_seq; */ -/* } oi; */ -/* struct lu_fid oi_fid; */ -/* }; */ -/* }; */ -int -lustre_dissect_struct_ostid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ost_id); - } - - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_id); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_seq); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} -/* ------------------------------------------------------------------------ */ - - - -/* IDL: struct lustre_handle { */ -/* IDL: uint64 cookie; */ -/* IDL: } */ - -static int -lustre_dissect_element_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_handle_cookie); - - return offset; -} - -int -lustre_dissect_struct_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lustre_handle_cookie); - } - - offset=lustre_dissect_element_handle_cookie(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obd_connect_data { */ -/* IDL: uint64 ocd_connect_flags; */ -/* IDL: uint32 ocd_version; */ -/* IDL: uint32 ocd_grant; */ -/* IDL: uint32 ocd_index; */ -/* IDL: uint32 ocd_brw_size; */ -/* IDL: uint64 ocd_ibits_known; */ -/* IDL: uint32 ocd_nllu; */ -/* IDL: uint32 ocd_nllg; */ -/* IDL: uint64 ocd_transno; */ -/* IDL: uint32 ocd_group; */ -/* IDL: uint32 ocd_cksum_types; */ -/* IDL: uint64 padding1; */ -/* IDL: uint64 padding2; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags); - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - guint32 version; - guint32 major, minor, patch, fix; - proto_item *item; - - version = tvb_get_letohl(tvb, offset); - fix = version & 0xff; - version >>= 8; - patch = version & 0xff; - version >>= 8; - minor = version & 0xff; - version >>= 8; - major = version & 0xff; - - item = proto_tree_add_item(tree, hf_lustre_obd_connect_data_ocd_version, - tvb, offset, 0, TRUE); - proto_item_append_text(item, ": %d.%d.%d.%d", - major, minor, patch, fix); - proto_item_set_len(item, 4); - - offset += 4; - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_grant); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_index); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_brw_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_brw_size); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_ibits_known); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_nllu(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllu); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types); - - return offset; -} - -static int -lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, - offset, -1, TRUE); - tree = proto_item_add_subtree(item, - ett_lustre_obd_connect_data); - } - - /* ocd_connect_flags = get_... */ - offset = lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, - offset, pinfo, tree); - - offset = lustre_dissect_element_obd_connect_data_ocd_version(tvb, - offset, pinfo, tree); - - offset = lustre_dissect_element_obd_connect_data_ocd_grant(tvb, - offset, pinfo, tree); - - offset = lustre_dissect_element_obd_connect_data_ocd_index(tvb, - offset, pinfo, tree); - - offset = lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, - offset, pinfo, tree); - - offset = lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, - offset, pinfo, tree); - - if (data_len == 72) { - offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, - offset, pinfo, tree); - - } else { /* if data_len == 192 */ - /* Actually blocksize, inodespace, grant_extent */ - offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, - offset, pinfo, tree); - } - - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_nllg); - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_transno); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_group); - offset = lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, - offset, pinfo, tree); - - /* if (ocd_connect_flags & OBD_CONNECT_MAX_EASIZE) */ - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_max_easize); - - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_instance); - /* if (ocd_connect_flags & OBD_CONNECT_MAXBYTES) */ - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_maxbytes); - if (data_len >= 74) /* && (flags & OBD_CONNECT_MULTIMODRPCS) */ - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_obd_connect_data_ocd_maxmodrpcs); - - if (old_offset+data_len > offset) { - proto_tree_add_item(tree, hf_lustre_extra_padding, - tvb, offset, (old_offset+data_len)-offset, TRUE); - offset = old_offset+data_len; - } - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct lov_ost_data_v1 { */ -/* IDL: uint64 l_object_id; */ -/* IDL: uint64 l_object_seq; */ -/* IDL: uint32 l_ost_gen; */ -/* IDL: uint32 l_ost_idx; */ -/* IDL: } */ - -static int -lustre_dissect_element_lov_ost_data_v1_l_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_id); - - return offset; -} - -static int -lustre_dissect_element_lov_ost_data_v1_l_object_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_seq); - - return offset; -} - -static int -lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_gen); - - return offset; -} - -static int -lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_idx); - - return offset; -} - -int -lustre_dissect_struct_lov_ost_data_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lov_ost_data_v1); - } - - offset=lustre_dissect_element_lov_ost_data_v1_l_object_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_ost_data_v1_l_object_seq(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct lov_mds_md_v1 { */ -/* IDL: uint32 lmm_magic; */ -/* IDL: uint32 lmm_pattern; */ -/* IDL: uint64 lmm_object_id; */ -/* IDL: uint64 lmm_object_seq; */ -/* IDL: uint32 lmm_stripe_size; */ -/* IDL: uint16 lmm_stripe_count; */ -/* IDL: uint16 lmm_layout_gen; */ -/* IDL: struct lov_ost_data_v1 { */ -/* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */ -/* IDL: } */ - -int -lustre_dissect_struct_lov_mds_md_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset, i; - - guint16 stripe_count; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, - tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1); - } - - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_magic); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_pattern); - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_object_id); - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_object_seq); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_stripe_size); - - stripe_count = tvb_get_letohs(tvb, offset); - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_stripe_count); - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_layout_gen); - - for (i = 0; i < stripe_count; ++i) - offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, - pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* struct lov_mds_md_v3 { /\* LOV EA mds/wire data (little-endian) *\/ */ -/* __u32 lmm_magic; /\* magic number = LOV_MAGIC_V3 *\/ */ -/* __u32 lmm_pattern; /\* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 *\/ */ -/* struct ost_id lmm_oi; /\* LOV object ID *\/ */ -/* __u32 lmm_stripe_size; /\* size of stripe in bytes *\/ */ -/* /\* lmm_stripe_count used to be __u32 *\/ */ -/* __u16 lmm_stripe_count; /\* num stripes in use for this object *\/ */ -/* __u16 lmm_layout_gen; /\* layout generation number *\/ */ -/* char lmm_pool_name[LOV_MAXPOOLNAME + 1]; /\* must be 32bit aligned *\/ */ -/* struct lov_ost_data_v1 lmm_objects[0]; /\* per-stripe data *\/ */ -/* }; */ - -int -lustre_dissect_struct_lov_mds_md_v3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset, i; - - guint16 stripe_count; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, - tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v3); - } - - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_magic); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_pattern); - offset = lustre_dissect_struct_ostid(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_oi); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_stripe_size); - - stripe_count = tvb_get_letohs(tvb, offset); - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_stripe_count); - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_layout_gen); - offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, - hf_lustre_lov_mds_md_lmm_pool_name, - LOV_MAXPOOLNAME+1); - - for (i = 0; i < stripe_count; ++i) - offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, - pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -int -lustre_dissect_struct_lov_mds_md(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_, int buff_num _U_) -{ - int magic; - - if(LUSTRE_BUFFER_LEN(buff_num) == 0) - return offset; - - magic=tvb_get_letohl(tvb, offset); /* TODO : replace this with a macro */ - switch(magic) { - case LOV_MAGIC_V1: - offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,parent_tree, - hf_index); - break; - case LOV_MAGIC_V3: - offset=lustre_dissect_struct_lov_mds_md_v3(tvb,offset,pinfo,parent_tree, - hf_index); - break; - default: - offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree, - hf_lustre_generic_data, buff_num); - break; - }; - - return offset; -} - - - -/* IDL: struct obd_statfs { */ -/* IDL: uint64 os_type; */ -/* IDL: uint64 os_blocks; */ -/* IDL: uint64 os_bfree; */ -/* IDL: uint64 os_bavail; */ -/* IDL: uint64 os_files; */ -/* IDL: uint64 os_ffree; */ -/* IDL: uint8 os_fsid[40]; */ -/* IDL: uint32 os_bsize; */ -/* IDL: uint32 os_namelen; */ -/* IDL: uint64 os_maxbytes; */ -/* IDL: uint32 os_state; */ -/* IDL: uint32 os_spare1; */ -/* IDL: uint32 os_spare2; */ -/* IDL: uint32 os_spare3; */ -/* IDL: uint32 os_spare4; */ -/* IDL: uint32 os_spare5; */ -/* IDL: uint32 os_spare6; */ -/* IDL: uint32 os_spare7; */ -/* IDL: uint32 os_spare8; */ -/* IDL: uint32 os_spare9; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_statfs_os_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_type); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_blocks); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_bfree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bfree); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_bavail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bavail); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_files(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_files); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_ffree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_ffree); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_fsid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_fsid); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_fsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 40; i++) - offset=lustre_dissect_element_obd_statfs_os_fsid_(tvb, offset, pinfo, tree); - - return offset; -} - - - -static int -lustre_dissect_element_obd_statfs_os_bsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bsize); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_namelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_namelen); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_maxbytes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_maxbytes); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_state); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare1); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare2); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare3); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare4); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare5); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare6); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare7); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare8); - - return offset; -} - -static int -lustre_dissect_element_obd_statfs_os_spare9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare9); - - return offset; -} - -int -lustre_dissect_struct_obd_statfs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_statfs); - } - - offset=lustre_dissect_element_obd_statfs_os_type(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_blocks(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_bfree(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_bavail(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_files(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_ffree(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_fsid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_bsize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_namelen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_maxbytes(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_state(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare8(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_statfs_os_spare9(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obd_ioobj { */ -/* IDL: uint64 ioo_id; */ -/* IDL: uint64 ioo_seq; */ -/* IDL: uint32 ioo_max_brw; */ -/* IDL: uint32 ioo_bufcnt; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_ioobj_ioo_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_id); - - return offset; -} - -static int -lustre_dissect_element_obd_ioobj_ioo_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_seq); - - return offset; -} - -static int -lustre_dissect_element_obd_ioobj_ioo_max_brw(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_max_brw); - - return offset; -} - -static int -lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_bufcnt); - - return offset; -} - -int -lustre_dissect_struct_obd_ioobj(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_ioobj); - } - - offset=lustre_dissect_element_obd_ioobj_ioo_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_ioobj_ioo_seq(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_ioobj_ioo_max_brw(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct niobuf_remote { */ -/* IDL: uint64 offset; */ -/* IDL: uint32 len; */ -/* IDL: uint32 flags; */ -/* IDL: } */ - -static int -lustre_dissect_element_niobuf_remote_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_offset); - - return offset; -} - -static int -lustre_dissect_element_niobuf_remote_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_len); - - return offset; -} - -static int -lustre_dissect_element_niobuf_remote_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_flags); - - return offset; -} - -int -lustre_dissect_struct_niobuf_remote(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_niobuf_remote); - } - - offset=lustre_dissect_element_niobuf_remote_offset(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_niobuf_remote_len(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_niobuf_remote_flags(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct ost_lvb { */ -/* IDL: uint64 lvb_size; */ -/* IDL: uint64 lvb_mtime; */ -/* IDL: uint64 lvb_atime; */ -/* IDL: uint64 lvb_ctime; */ -/* IDL: uint64 lvb_blocks; */ -/* v1 of this type ends here */ -/* uint32 lvb_mtime_ns; */ -/* uint32 lvb_atime_ns; */ -/* uint32 lvb_ctime_ns; */ -/* uint32 lvb_padding; */ -/* IDL: } */ - -static int -lustre_dissect_element_ost_lvb_lvb_time(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *tree _U_, - int hf_index _U_, int ns_offset _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letoh64(tvb, offset); - if (ns_offset != 0) - ns.nsecs = tvb_get_letohl(tvb, offset+ns_offset); - proto_tree_add_time(tree, hf_index, tvb, offset, 8, &ns); - offset += 8; - return offset; -} - -int -lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_, int buff_num _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int buff_len; - - buff_len = LUSTRE_BUFFER_LEN(buff_num); - - if (buff_len == 0) - return offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ost_lvb); - } - - /* v1 format size is 40 - * v2 format size is 56 w/ ns for times - */ - - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_size); - - offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, - pinfo, tree, hf_lustre_ost_lvb_lvb_mtime, - (buff_len >= 56) ?32 :0); - - offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, - pinfo, tree, hf_lustre_ost_lvb_lvb_atime, - (buff_len >= 56) ?28 :0); - - offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, - pinfo, tree, hf_lustre_ost_lvb_lvb_ctime, - (buff_len >= 56) ?24 :0); - - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_blocks); - - /* post-v1 format */ - if (buff_len >= 56) { - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_mtime_ns); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_atime_ns); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_ctime_ns); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb_lvb_padding); - } - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct ll_fid { */ -/* IDL: uint64 id; */ -/* IDL: uint32 generation; */ -/* IDL: uint32 f_type; */ -/* IDL: } */ - -static int -lustre_dissect_element_ll_fid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ll_fid_id); - - return offset; -} - -static int -lustre_dissect_element_ll_fid_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_generation); - - return offset; -} - -static int -lustre_dissect_element_ll_fid_f_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_f_type); - - return offset; -} - -int -lustre_dissect_struct_lu_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ll_fid); - } - - offset=lustre_dissect_element_ll_fid_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ll_fid_generation(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ll_fid_f_type(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obd_dqinfo { */ -/* IDL: uint64 dqi_bgrace; */ -/* IDL: uint64 dqi_igrace; */ -/* IDL: uint32 dqi_flags; */ -/* IDL: uint32 dqi_valid; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_bgrace); - - return offset; -} - -static int -lustre_dissect_element_obd_dqinfo_dqi_igrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_igrace); - - return offset; -} - -static int -lustre_dissect_element_obd_dqinfo_dqi_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_flags); - - return offset; -} - -static int -lustre_dissect_element_obd_dqinfo_dqi_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_valid); - - return offset; -} - -int -lustre_dissect_struct_obd_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_dqinfo); - } - - offset = lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqinfo_dqi_igrace(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqinfo_dqi_flags(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqinfo_dqi_valid(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obd_dqblk { */ -/* IDL: uint64 dqb_bhardlimit; */ -/* IDL: uint64 dqb_bsoftlimit; */ -/* IDL: uint64 dqb_curspace; */ -/* IDL: uint64 dqb_ihardlimit; */ -/* IDL: uint64 dqb_isoftlimit; */ -/* IDL: uint64 dqb_curinodes; */ -/* IDL: uint64 dqb_btime; */ -/* IDL: uint64 dqb_itime; */ -/* IDL: uint32 dqb_valid; */ -/* IDL: uint32 padding; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bhardlimit); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bsoftlimit); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_curspace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curspace); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_ihardlimit); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_isoftlimit); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_curinodes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curinodes); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_btime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_btime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_itime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_itime, tvb, offset, 8, &ns ); - offset+=8; - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_dqb_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_valid); - - return offset; -} - -static int -lustre_dissect_element_obd_dqblk_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_padding); - - return offset; -} - -int -lustre_dissect_struct_obd_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_dqblk); - } - - offset = lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_curspace(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_curinodes(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_btime(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_itime(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_dqb_valid(tvb, offset, pinfo, tree); - - offset = lustre_dissect_element_obd_dqblk_padding(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct obd_quotactl { */ -/* IDL: uint32 qc_cmd; */ -/* IDL: uint32 qc_type; */ -/* IDL: uint32 qc_id; */ -/* IDL: uint32 qc_stat; */ -/* IDL: struct obd_dqinfo { */ -/* IDL: } qc_dqinfo; */ -/* IDL: struct obd_dqblk { */ -/* IDL: } qc_dqblk; */ -/* IDL: } */ - -static int -lustre_dissect_element_obd_quotactl_qc_cmd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl_qc_cmd); - - return offset; -} - -static int -lustre_dissect_element_obd_quotactl_qc_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl_qc_type); - - return offset; -} - -static int -lustre_dissect_element_obd_quotactl_qc_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl_qc_id); - - return offset; -} - -static int -lustre_dissect_element_obd_quotactl_qc_stat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl_qc_stat); - - return offset; -} - - - -static int -lustre_dissect_element_obd_quotactl_qc_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_obd_dqblk(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqblk); - return offset; -} - -static int -lustre_dissect_element_obd_quotactl_qc_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_obd_dqinfo(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqinfo); - return offset; -} - -int -lustre_dissect_struct_obd_quotactl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_quotactl); - } - - offset=lustre_dissect_element_obd_quotactl_qc_cmd(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_quotactl_qc_type(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_quotactl_qc_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_quotactl_qc_stat(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_quotactl_qc_dqinfo(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obd_quotactl_qc_dqblk(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct quota_adjust_qunit { */ -/* IDL: uint32 qaq_flags; */ -/* IDL: uint32 qaq_id; */ -/* IDL: uint64 qaq_bunit_sz; */ -/* IDL: uint64 qaq_iunit_sz; */ -/* IDL: uint64 padding1; */ -/* IDL: } */ - -static int -lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit_qaq_flags); - - return offset; -} - -static int -lustre_dissect_element_quota_adjust_qunit_qaq_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit_qaq_id); - - return offset; -} - -static int -lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit_qaq_bunit_sz); - - return offset; -} - -static int -lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit_qaq_iunit_sz); - - return offset; -} - -static int -lustre_dissect_element_quota_adjust_qunit_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit_padding1); - - return offset; -} - -int -lustre_dissect_struct_quota_adjust_qunit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_quota_adjust_qunit); - } - - offset=lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_quota_adjust_qunit_qaq_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_quota_adjust_qunit_padding1(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mdt_body { */ -/* IDL: struct lu_fid { */ -/* IDL: } fid1; */ -/* IDL: struct lu_fid { */ -/* IDL: } fid2; */ -/* IDL: struct lustre_handle { */ -/* IDL: } handle; */ -/* IDL: uint64 valid; */ -/* IDL: uint64 size; */ -/* IDL: uint64 mtime; */ -/* IDL: uint64 atime; */ -/* IDL: uint64 ctime; */ -/* IDL: uint64 blocks; */ -/* IDL: uint64 ioepoch; */ -/* IDL: uint64 ino; */ -/* IDL: uint32 fsuid; */ -/* IDL: uint32 fsgid; */ -/* IDL: uint32 capability; */ -/* IDL: uint32 mode; */ -/* IDL: uint32 uid; */ -/* IDL: uint32 gid; */ -/* IDL: uint32 flags; */ -/* IDL: uint32 rdev; */ -/* IDL: uint32 nlink; */ -/* IDL: uint32 generation; */ -/* IDL: uint32 suppgid; */ -/* IDL: uint32 eadatasize; */ -/* IDL: uint32 aclsize; */ -/* IDL: uint32 max_mdsize; */ -/* IDL: uint32 max_cookiesize; */ -/* IDL: uint32 uid_h; */ -/* IDL: uint32 gid_h; */ -/* IDL: uint32 padding_5; */ -/* IDL: uint64 padding_6; */ -/* IDL: uint64 padding_7; */ -/* IDL: uint64 padding_8; */ -/* IDL: uint64 padding_9; */ -/* IDL: uint64 padding_10; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_body_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid1); - return offset; -} - -static int -lustre_dissect_element_mdt_body_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid2); - return offset; -} - -static int -lustre_dissect_element_mdt_body_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mdt_body_handle); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_valid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_size); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_body_mtime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_body_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_body_atime, tvb, offset, 8, &ns ); - offset+=8; - - return offset; -} - -static int -lustre_dissect_element_mdt_body_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_body_ctime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_body_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_blocks); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_ioepoch); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_ino(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_ino); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_capability(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_capability); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_mode); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_uid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_gid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_flags); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_rdev); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_nlink); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_generation); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_suppgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_eadatasize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_eadatasize); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_aclsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_aclsize); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_max_mdsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_max_mdsize); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_max_cookiesize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_max_cookiesize); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_uid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_uid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_gid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_gid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_5); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_6); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_7); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_8); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_9); - - return offset; -} - -static int -lustre_dissect_element_mdt_body_padding_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset= dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_10); - - return offset; -} - -int -lustre_dissect_struct_mdt_body(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_body); - } - - offset=lustre_dissect_element_mdt_body_fid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_fid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_handle(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_valid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_mtime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_atime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_ctime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_blocks(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_ioepoch(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_ino(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_capability(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_uid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_gid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_rdev(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_nlink(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_generation(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_suppgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_eadatasize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_aclsize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_max_mdsize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_max_cookiesize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_uid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_gid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_8(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_9(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_body_padding_10(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* I don't find where this struct appear on wire.. need to search mdc_setattr_pack() */ -/* IDL: struct mdt_rec_setattr { */ -/* IDL: uint32 sa_opcode; */ -/* IDL: uint32 sa_cap; */ -/* IDL: uint32 sa_fsuid; */ -/* IDL: uint32 sa_fsuid_h; */ -/* IDL: uint32 sa_fsgid; */ -/* IDL: uint32 sa_fsgid_h; */ -/* IDL: uint32 sa_suppgid; */ -/* IDL: uint32 sa_suppgid_h; */ -/* IDL: uint32 sa_padding_1; */ -/* IDL: uint32 sa_padding_1_h; */ -/* IDL: struct lu_fid { */ -/* IDL: } sa_fid; */ -/* IDL: uint64 sa_valid; */ -/* IDL: uint32 sa_uid; */ -/* IDL: uint32 sa_gid; */ -/* IDL: uint64 sa_size; */ -/* IDL: uint64 sa_blocks; */ -/* IDL: uint64 sa_mtime; */ -/* IDL: uint64 sa_atime; */ -/* IDL: uint64 sa_ctime; */ -/* IDL: uint32 sa_attr_flags; */ -/* IDL: uint32 sa_mode; */ -/* IDL: uint32 sa_padding_2; */ -/* IDL: uint32 sa_projid; */ -/* IDL: uint32 sa_padding_4; */ -/* IDL: uint32 sa_padding_5; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_suppgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_suppgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_padding_1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_setattr_sa_fid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_valid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_uid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_gid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_size); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_blocks); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_mtime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_atime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_ctime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_attr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_attr_flags); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_mode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_projid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_projid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_4); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setattr_sa_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_5); - - return offset; -} - -int -lustre_dissect_struct_mdt_rec_setattr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 sa_opcode ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setattr); - } - sa_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_op_vals, "Unknown sa_opc")); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_fid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_valid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_uid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_gid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_blocks(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_mtime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_atime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_ctime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_attr_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_projid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_5(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mdt_rec_create { */ -/* IDL: uint32 cr_opcode; */ -/* IDL: uint32 cr_cap; */ -/* IDL: uint32 cr_fsuid; */ -/* IDL: uint32 cr_fsuid_h; */ -/* IDL: uint32 cr_fsgid; */ -/* IDL: uint32 cr_fsgid_h; */ -/* IDL: uint32 cr_suppgid1; */ -/* IDL: uint32 cr_suppgid1_h; */ -/* IDL: uint32 cr_suppgid2; */ -/* IDL: uint32 cr_suppgid2_h; */ -/* IDL: struct lu_fid { */ -/* IDL: } cr_fid1; */ -/* IDL: struct lu_fid { */ -/* IDL: } cr_fid2; */ -/* IDL: struct lustre_handle { */ -/* IDL: } cr_old_handle; */ -/* IDL: uint64 cr_time; */ -/* IDL: uint64 cr_rdev; */ -/* IDL: uint64 cr_ioepoch; */ -/* IDL: uint64 cr_padding_1; */ -/* IDL: uint32 cr_mode; */ -/* IDL: uint32 cr_bias; */ -/* IDL: uint32 cr_flags_l; */ -/* IDL: uint32 cr_flags_h; */ -/* IDL: uint32 cr_umask; */ -/* IDL: uint32 cr_padding_4; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_create_cr_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid2_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_create_cr_fid1); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_create_cr_fid2); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_old_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_create_cr_old_handle); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_create_cr_time, tvb, offset, 8, &ns ); - offset+=8; - return offset; - -} - -static int -lustre_dissect_element_mdt_rec_create_cr_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_rdev); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_ioepoch); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_padding_1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_mode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_bias); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_flags_l(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_flags_l); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_flags_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_flags_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_umask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_umask); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_create_cr_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_padding_4); - - return offset; -} - -int -lustre_dissect_struct_mdt_rec_create(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - guint32 cr_opcode ; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_create); - } - cr_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_op_vals, "Unknown cr_opc")); - - offset=lustre_dissect_element_mdt_rec_create_cr_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_suppgid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_suppgid1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_suppgid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_suppgid2_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_fid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_old_handle(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_rdev(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_ioepoch(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_bias(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_flags_l(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_flags_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_umask(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_create_cr_padding_4(tvb, offset, pinfo, tree); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* TODO : find where this structure appear ! */ -/* IDL: struct mdt_rec_link { */ -/* IDL: uint32 lk_opcode; */ -/* IDL: uint32 lk_cap; */ -/* IDL: uint32 lk_fsuid; */ -/* IDL: uint32 lk_fsuid_h; */ -/* IDL: uint32 lk_fsgid; */ -/* IDL: uint32 lk_fsgid_h; */ -/* IDL: uint32 lk_suppgid1; */ -/* IDL: uint32 lk_suppgid1_h; */ -/* IDL: uint32 lk_suppgid2; */ -/* IDL: uint32 lk_suppgid2_h; */ -/* IDL: struct lu_fid { */ -/* IDL: } lk_fid1; */ -/* IDL: struct lu_fid { */ -/* IDL: } lk_fid2; */ -/* IDL: uint64 lk_time; */ -/* IDL: uint64 lk_padding_1; */ -/* IDL: uint64 lk_padding_2; */ -/* IDL: uint64 lk_padding_3; */ -/* IDL: uint64 lk_padding_4; */ -/* IDL: uint32 lk_bias; */ -/* IDL: uint32 lk_padding_5; */ -/* IDL: uint32 lk_padding_6; */ -/* IDL: uint32 lk_padding_7; */ -/* IDL: uint32 lk_padding_8; */ -/* IDL: uint32 lk_padding_9; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_link_lk_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid2_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_link_lk_fid1); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_link_lk_fid2); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_link_lk_time, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_3); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_4); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_bias); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_5); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_6); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_7); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_8); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_link_lk_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_9); - - return offset; -} - -int -lustre_dissect_struct_mdt_rec_link(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 lk_opcode ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_link); - } - lk_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_op_vals, "Unknown lk_opc")); - - offset=lustre_dissect_element_mdt_rec_link_lk_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_suppgid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_suppgid1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_suppgid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_suppgid2_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_fid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_bias(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_8(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_link_lk_padding_9(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mdt_rec_unlink { */ -/* IDL: uint32 ul_opcode; */ -/* IDL: uint32 ul_cap; */ -/* IDL: uint32 ul_fsuid; */ -/* IDL: uint32 ul_fsuid_h; */ -/* IDL: uint32 ul_fsgid; */ -/* IDL: uint32 ul_fsgid_h; */ -/* IDL: uint32 ul_suppgid1; */ -/* IDL: uint32 ul_suppgid1_h; */ -/* IDL: uint32 ul_suppgid2; */ -/* IDL: uint32 ul_suppgid2_h; */ -/* IDL: struct lu_fid { */ -/* IDL: } ul_fid1; */ -/* IDL: struct lu_fid { */ -/* IDL: } ul_fid2; */ -/* IDL: uint64 ul_time; */ -/* IDL: uint64 ul_padding_2; */ -/* IDL: uint64 ul_padding_3; */ -/* IDL: uint64 ul_padding_4; */ -/* IDL: uint64 ul_padding_5; */ -/* IDL: uint32 ul_bias; */ -/* IDL: uint32 ul_mode; */ -/* IDL: uint32 ul_padding_6; */ -/* IDL: uint32 ul_padding_7; */ -/* IDL: uint32 ul_padding_8; */ -/* IDL: uint32 ul_padding_9; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_unlink_ul_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid2_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_unlink_ul_fid1); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_unlink_ul_fid2); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree,hf_lustre_mdt_rec_unlink_ul_time , tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_3); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_4); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_5); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_bias); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_mode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_6); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_7); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_8); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_unlink_ul_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_9); - - return offset; -} - -int -lustre_dissect_struct_mdt_rec_unlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 ul_opcode ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_unlink); - } - - ul_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_op_vals, "Unknown ul_opc")); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid2_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_fid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_bias(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_8(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_9(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mdt_rec_rename { */ -/* IDL: uint32 rn_opcode; */ -/* IDL: uint32 rn_fsuid; */ -/* IDL: uint32 rn_fsgid; */ -/* IDL: uint32 rn_cap; */ -/* IDL: uint32 rn_suppgid1; */ -/* IDL: uint32 rn_suppgid2; */ -/* IDL: struct ll_fid { */ -/* IDL: } rn_fid1; */ -/* IDL: struct ll_fid { */ -/* IDL: } rn_fid2; */ -/* IDL: uint64 rn_time; */ -/* IDL: uint32 rn_padding_1; */ -/* IDL: uint32 rn_padding_2; */ -/* IDL: uint32 rn_padding_3; */ -/* IDL: uint32 rn_padding_4; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_rename_rn_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid2_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_rename_rn_fid1); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_rename_rn_fid2); - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_rename_rn_time, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_3); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_4); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_bias); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_mode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_5); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_6); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_7); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_rename_rn_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_8); - - return offset; -} - -int -lustre_dissect_struct_mdt_rec_rename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 rn_opcode ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_rename); - } - - rn_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_op_vals, "Unknown rn_opc")); - - offset=lustre_dissect_element_mdt_rec_rename_rn_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid2_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_fid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_bias(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_rename_rn_padding_8(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* I don't find where this struct appear on wire.. need to search mdc_setxattr_pack() */ -/* IDL: struct mdt_rec_setxattr { */ -/* IDL: uint32 sx_opcode; */ -/* IDL: uint32 sx_cap; */ -/* IDL: uint32 sx_fsuid; */ -/* IDL: uint32 sx_fsuid_h; */ -/* IDL: uint32 sx_fsgid; */ -/* IDL: uint32 sx_fsgid_h; */ -/* IDL: uint32 sx_suppgid1; */ -/* IDL: uint32 sx_suppgid1_h; */ -/* IDL: uint32 sx_suppgid2; */ -/* IDL: uint32 sx_suppgid2_h; */ -/* IDL: struct lu_fid { */ -/* IDL: } sx_fid; */ -/* IDL: uint64 sx_padding_1; */ -/* IDL: uint32 sx_padding_2; */ -/* IDL: uint32 sx_padding_3; */ -/* IDL: uint64 sx_valid; */ -/* IDL: uint64 sx_time; */ -/* IDL: uint64 sx_padding_5; */ -/* IDL: uint64 sx_padding_6; */ -/* IDL: uint64 sx_padding_7; */ -/* IDL: uint32 sx_size; */ -/* IDL: uint32 sx_flags; */ -/* IDL: uint32 sx_padding_8; */ -/* IDL: uint32 sx_padding_9; */ -/* IDL: uint32 sx_padding_10; */ -/* IDL: uint32 sx_padding_11; */ -/* IDL: } */ - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_opcode); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_cap); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsuid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsuid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsgid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsgid_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid1_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid2_h); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_setxattr_sx_fid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_1); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_2); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_3); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_valid); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_mdt_rec_setxattr_sx_time, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_5); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_6); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_7); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_size); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_flags); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_8); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_9); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_10); - - return offset; -} - -static int -lustre_dissect_element_mdt_rec_setxattr_sx_padding_11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_11); - - return offset; -} - -int - lustre_dissect_struct_mdt_rec_setxattr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 sx_opcode ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setxattr); - } - sx_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_op_vals, "Unknown sx_opc")); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_opcode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_cap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsuid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsgid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsgid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_fid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_valid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_6(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_7(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_8(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_9(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_10(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_11(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* TODO : find where this structure appear */ - -/* IDL: struct lov_desc { */ -/* IDL: uint32 ld_tgt_count; */ -/* IDL: uint32 ld_active_tgt_count; */ -/* IDL: uint32 ld_default_stripe_count; */ -/* IDL: uint32 ld_pattern; */ -/* IDL: uint64 ld_default_stripe_size; */ -/* IDL: uint64 ld_default_stripe_offset; */ -/* IDL: uint32 ld_padding_0; */ -/* IDL: uint32 ld_qos_maxage; */ -/* IDL: uint32 ld_padding_1; */ -/* IDL: uint32 ld_padding_2; */ -/* IDL: struct obd_uuid { */ -/* IDL: } ld_uuid; */ -/* IDL: } */ - -static int -lustre_dissect_element_lov_desc_ld_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_tgt_count); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_active_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_active_tgt_count); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_default_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_default_stripe_count); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_pattern); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_default_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_default_stripe_size); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_default_stripe_offset); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_padding_0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_padding_0); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_qos_maxage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_qos_maxage); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_padding_1); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_desc_ld_padding_2); - - return offset; -} - -static int -lustre_dissect_element_lov_desc_ld_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85bade8)(tvb,offset,pinfo,tree,hf_lustre_lov_desc_ld_uuid); - return offset; -} - -int -lustre_dissect_struct_lov_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lov_desc); - } - - offset=lustre_dissect_element_lov_desc_ld_tgt_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_active_tgt_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_default_stripe_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_pattern(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_default_stripe_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_padding_0(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_qos_maxage(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_padding_1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_lov_desc_ld_uuid(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obd_uuid { */ -/* char uuid[40]; */ -/* IDL: } */ - -static int -lustre_dissect_struct_obd_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - /* the lenght of the string is 40 bytes max, with \0 inside */ - proto_tree_add_item(parent_tree, hf_index, tvb, offset, 40, TRUE); - - offset+=40; - return offset; -} - -/* IDL: struct ldlm_res_id { */ -/* IDL: uint64 name[4]; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_res_id_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_res_id_name); - - return offset; -} - -static int -lustre_dissect_element_ldlm_res_id_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 4; i++) - offset=lustre_dissect_element_ldlm_res_id_name_(tvb, offset, pinfo, tree); - - return offset; -} - - - -int -lustre_dissect_struct_ldlm_res_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_res_id); - } - - offset=lustre_dissect_element_ldlm_res_id_name(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: enum { */ -/* IDL: LCK_MINMODE=0, */ -/* IDL: LCK_EX=1, */ -/* IDL: LCK_PW=2, */ -/* IDL: LCK_PR=4, */ -/* IDL: LCK_CW=8, */ -/* IDL: LCK_CR=16, */ -/* IDL: LCK_NL=32, */ -/* IDL: LCK_GROUP=64, */ -/* IDL: LCK_MAXMODE, */ -/* IDL: } */ - -int -lustre_dissect_enum_ldlm_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index); - return offset; -} - - -/* IDL: enum { */ -/* IDL: LDLM_PLAIN=10, */ -/* IDL: LDLM_EXTENT=11, */ -/* IDL: LDLM_FLOCK=12, */ -/* IDL: LDLM_IBITS=13, */ -/* IDL: LDLM_MAX_TYPE, */ -/* IDL: } */ - -int -lustre_dissect_enum_ldlm_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type ); - return offset; -} - -/* IDL: struct ldlm_extent { */ -/* IDL: uint64 start; */ -/* IDL: uint64 end; */ -/* IDL: uint64 gid; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_extent_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_extent_start); - - return offset; -} - -static int -lustre_dissect_element_ldlm_extent_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_extent_end); - - return offset; -} - -static int -lustre_dissect_element_ldlm_extent_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_extent_gid); - - return offset; -} - -int -lustre_dissect_struct_ldlm_extent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_extent); - } - - offset=lustre_dissect_element_ldlm_extent_start(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_extent_end(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_extent_gid(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct ldlm_inodebits { */ -/* IDL: uint64 bits; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_inodebits_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_inodebits_bits); - - return offset; -} - -int -lustre_dissect_struct_ldlm_inodebits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_inodebits); - } - - offset=lustre_dissect_element_ldlm_inodebits_bits(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct ldlm_flock { */ -/* IDL: uint64 start; */ -/* IDL: uint64 end; */ -/* IDL: uint64 blocking_export; */ -/* IDL: uint32 blocking_pid; */ -/* IDL: uint32 pid; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_flock_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_flock_start); - - return offset; -} - -static int -lustre_dissect_element_ldlm_flock_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_flock_end); - - return offset; -} - -static int -lustre_dissect_element_ldlm_flock_blocking_export(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_flock_blocking_export); - - return offset; -} - -static int -lustre_dissect_element_ldlm_flock_blocking_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_flock_blocking_pid); - - return offset; -} - -static int -lustre_dissect_element_ldlm_flock_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_flock_pid); - - return offset; -} - -int -lustre_dissect_struct_ldlm_flock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_flock); - } - - offset=lustre_dissect_element_ldlm_flock_start(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_flock_end(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_flock_blocking_export(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_flock_blocking_pid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_flock_pid(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct ldlm_intent { */ -/* IDL: uint64 opc; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *tree _U_) -{ - guint32 opcode; - /* this opcode is like a flag*/ -#define DOBIT(_hf) dissect_uint32(tvb, offset, pinfo, tree, (_hf)) - DOBIT(hf_lustre_ldlm_intent_opc_open ); - DOBIT(hf_lustre_ldlm_intent_opc_creat ); - DOBIT(hf_lustre_ldlm_intent_opc_readdir ); - DOBIT(hf_lustre_ldlm_intent_opc_getattr ); - DOBIT(hf_lustre_ldlm_intent_opc_lookup ); - DOBIT(hf_lustre_ldlm_intent_opc_unlink ); - DOBIT(hf_lustre_ldlm_intent_opc_getxattr); - DOBIT(hf_lustre_ldlm_intent_opc_exec ); - DOBIT(hf_lustre_ldlm_intent_opc_pin ); - DOBIT(hf_lustre_ldlm_intent_opc_layout ); - DOBIT(hf_lustre_ldlm_intent_opc_q_dqacq ); - DOBIT(hf_lustre_ldlm_intent_opc_q_conn ); - DOBIT(hf_lustre_ldlm_intent_opc_setxattr); -#undef DOBIT - opcode = tvb_get_letohl(tvb,offset); - - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, "[ intent :"); - if(opcode & IT_OPEN ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " open"); - proto_item_append_text(tree, " open" ); - } - if(opcode & IT_CREAT ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " create"); - proto_item_append_text(tree, " create" ); - } - if(opcode & IT_READDIR ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " readdir"); - proto_item_append_text(tree, " readdir" ); - } - if(opcode & IT_GETATTR ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getattr"); - proto_item_append_text(tree, " getattr" ); - } - if(opcode & IT_LOOKUP ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " lookup"); - proto_item_append_text(tree, " lookup" ); - } - if(opcode & IT_UNLINK ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " unlink"); - proto_item_append_text(tree, " unlink" ); - } - if(opcode & IT_TRUNC ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " trunc"); - proto_item_append_text(tree, " trunc" ); - } - if(opcode & IT_GETXATTR){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getxattr"); - proto_item_append_text(tree, " getxattr" ); - } - if(opcode & IT_EXEC ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " exec"); - proto_item_append_text(tree, " exec" ); - } - if(opcode & IT_PIN ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " pin"); - proto_item_append_text(tree, " pin" ); - } - if(opcode & IT_LAYOUT ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " layout"); - proto_item_append_text(tree, " layout" ); - } - if(opcode & IT_QUOTA_DQACQ ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_dqacq"); - proto_item_append_text(tree, " quota_dqacq" ); - } - if(opcode & IT_QUOTA_CONN ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_conn"); - proto_item_append_text(tree, " quota_conn" ); - } - if(opcode & IT_SETXATTR ){ - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " setxattr"); - proto_item_append_text(tree, " setxattr" ); - } - - display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " ]"); - offset+=8; - return offset; -} - -int -lustre_dissect_struct_ldlm_intent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - guint64 intent_opc; - proto_item * opcode_item = NULL; - proto_tree * opcode_tree = NULL; - - intent_opc = tvb_get_letoh64(tvb,offset); - if (parent_tree){ - opcode_item = proto_tree_add_item(parent_tree, hf_lustre_ldlm_intent_opc, tvb, offset, 8, TRUE); - opcode_tree = proto_item_add_subtree(opcode_item, ett_lustre_ldlm_intent_opc); - } - - offset=lustre_dissect_element_ldlm_intent_opc(tvb, offset, pinfo, opcode_tree); - - offset=ldlm_opcode_process(tvb, offset, pinfo, parent_tree, intent_opc); - - return offset; -} - -/* IDL: struct ldlm_resource_desc { */ -/* IDL: enum ldlm_type lr_type; */ -/* IDL: uint32 lr_padding; */ -/* IDL: struct ldlm_res_id { */ -/* IDL: } lr_name; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_resource_desc_lr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - /* offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type);*/ - offset=lustre_dissect_enum_ldlm_type(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type); - return offset; -} - -static int -lustre_dissect_element_ldlm_resource_desc_lr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_padding); - - return offset; -} - -static int -lustre_dissect_element_ldlm_resource_desc_lr_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_ldlm_res_id(tvb,offset,pinfo,tree,hf_lustre_ldlm_resource_desc_lr_name); - return offset; -} - -int -lustre_dissect_struct_ldlm_resource_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_resource_desc); - } - - offset=lustre_dissect_element_ldlm_resource_desc_lr_type(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_resource_desc_lr_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_resource_desc_lr_name(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct ldlm_lock_desc { */ -/* IDL: struct ldlm_resource_desc { */ -/* IDL: } l_resource; */ -/* IDL: enum ldlm_mode l_req_mode; */ -/* IDL: enum ldlm_mode l_granted_mode; */ -/* IDL: union ldlm_policy_data l_policy_data; */ -/* IDL: } */ - -static int -lustre_dissect_element_ldlm_lock_desc_l_resource(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_ldlm_resource_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_resource); - return offset; -} - -static int -lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_enum_ldlm_mode(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_req_mode); - - return offset; -} - -static int -lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_enum_ldlm_mode(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_granted_mode); - - return offset; -} - -static int -lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - - guint32 lr_type; /* type of the lock */ - - lr_type = tvb_get_letohl(tvb,offset - 48 ); /* TODO : find another way that using -48 */ - - /* this section must be check with lustre code, possible mistake here */ - switch(lr_type){ - case LDLM_PLAIN: - case LDLM_FLOCK: - offset=lustre_dissect_struct_ldlm_flock(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data); - break; - case LDLM_EXTENT : - offset= lustre_dissect_struct_ldlm_extent(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data); - /* add an extra padding 8 bytes */ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - break; - case LDLM_IBITS: - offset=lustre_dissect_struct_ldlm_inodebits(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data); - /* add an extra padding 24 bytes */ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - break; - default: - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding); - break; - } - return offset; -} - -int -lustre_dissect_struct_ldlm_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 lock_req_mode; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_desc); - } - - offset=lustre_dissect_element_ldlm_lock_desc_l_resource(tvb, offset, pinfo, tree); - - lock_req_mode = tvb_get_letohl(tvb,offset); - - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lock_req_mode, lustre_ldlm_mode_vals, "Unknown lock")); - - offset=lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct ldlm_request { */ -/* IDL: uint32 lock_flags; */ -/* IDL: uint32 lock_count; */ -/* IDL: struct ldlm_lock_desc { */ -/* IDL: } lock_desc; */ -/* IDL: struct lustre_handle { */ -/* IDL: } lock_handle[2]; */ -/* IDL: } */ - - - -static int -lustre_dissect_element_ldlm_request_lock_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_request_lock_count); - - return offset; -} - -static int -lustre_dissect_element_ldlm_request_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_desc); - return offset; -} - - - -static int -lustre_dissect_element_ldlm_request_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - /* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/ - - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_handle); - return offset; -} - -static int -lustre_dissect_element_ldlm_request_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int num_locks _U_) -{ - int i; - if (num_locks < 2) - num_locks = 2; - for (i = 0; i < num_locks; i++) - offset=lustre_dissect_element_ldlm_request_lock_handle_(tvb, offset, pinfo, tree); - - return offset; -} - -int -lustre_dissect_struct_ldlm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - /* guint32 lock_flag; */ - /* guint32 ldlm_type; */ - guint32 num_locks = 2; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_request); - } - - /* lock_flag = tvb_get_letohl(tvb,offset); */ - offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, - hf_lustre_ldlm_request_lock_flags); - - num_locks = tvb_get_letohl(tvb,offset); - offset=lustre_dissect_element_ldlm_request_lock_count(tvb, offset, pinfo, tree); - - /* ldlm_type = (EXTENT, PLAIN, ou IBITS) */ - /* ldlm_type = tvb_get_letohl(tvb,offset); */ - offset=lustre_dissect_element_ldlm_request_lock_desc(tvb, offset, pinfo, tree); - offset=lustre_dissect_element_ldlm_request_lock_handle(tvb, offset, pinfo, tree, num_locks); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -static int -lustre_dissect_element_ldlm_reply_lock_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_padding); - - return offset; -} - -static int -lustre_dissect_element_ldlm_reply_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_desc); - return offset; -} - -static int -lustre_dissect_element_ldlm_reply_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - /* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/ - - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_handle); - return offset; -} - -static int -lustre_dissect_element_ldlm_reply_lock_policy_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_policy_res1); - - return offset; -} - -static int -lustre_dissect_element_ldlm_reply_lock_policy_res2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_policy_res2); - - return offset; -} - -int -lustre_dissect_struct_ldlm_reply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 * ldlm_type _U_ ) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - /* guint32 lock_flag; */ - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ldlm_reply); - } - - /* lock_flag = tvb_get_letohl(tvb,offset); */ - offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_flags); - - offset=lustre_dissect_element_ldlm_reply_lock_padding(tvb, offset, pinfo, tree); - - if (ldlm_type != NULL) - *ldlm_type = tvb_get_letohl(tvb,offset); - offset=lustre_dissect_element_ldlm_reply_lock_desc(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_reply_lock_handle(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_reply_lock_policy_res1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ldlm_reply_lock_policy_res2(tvb, offset, pinfo, tree); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct mgs_send_param { */ -/* IDL: uint8 mgs_param[1024]; */ -/* IDL: } */ - - - -static int -lustre_dissect_element_mgs_send_param_mgs_param_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_send_param_mgs_param); - - return offset; -} - -static int -lustre_dissect_element_mgs_send_param_mgs_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 1024; i++) - offset=lustre_dissect_element_mgs_send_param_mgs_param_(tvb, offset, pinfo, tree); - - return offset; -} - -int -lustre_dissect_struct_mgs_send_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mgs_send_param); - } - - offset=lustre_dissect_element_mgs_send_param_mgs_param(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mgs_config_body { - * IDL: char mcb_name[64]; - * IDL: __u64 mcb_offset; - * IDL: __u16 mcb_type; - * IDL: __u8 mcb_reserved; - * IDL: __u8 mcb_bits; - * IDL: __u32 mcb_units; - * IDL: }; - */ -int -lustre_dissect_element_mgs_config_body_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - int string_len = 64; - proto_tree_add_item(parent_tree, hf_index, tvb, - offset, string_len, TRUE); -#ifdef WIRESHARK_COMPAT - display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", - (const gchar *)tvb_get_string(tvb, offset, - string_len)); -#else - display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", - (const gchar *)tvb_get_string_enc(wmem_packet_scope(), - tvb, offset, - string_len, - ENC_ASCII)); -#endif - offset += string_len; - - return offset; -} - -int -lustre_dissect_struct_mgs_config_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset = offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, - offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mgs_config_body); - } - - offset = lustre_dissect_element_mgs_config_body_name(tvb, offset, pinfo, - tree, hf_lustre_mgs_config_body_name); - - offset = dissect_uint64(tvb, offset, pinfo, tree, - hf_lustre_mgs_config_body_offset); - offset = dissect_uint16(tvb, offset, pinfo, tree, - hf_lustre_mgs_config_body_type); - offset = dissect_uint8(tvb, offset, pinfo, tree, - hf_lustre_mgs_config_body_reserved); - offset = dissect_uint8(tvb, offset, pinfo, tree, - hf_lustre_mgs_config_body_bits); - offset = dissect_uint32(tvb, offset, pinfo, tree, - hf_lustre_mgs_config_body_units); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct mgs_config_res { - * IDL: __u64 mcr_offset; - * IDL: __u64 mcr_size; - * IDL: }; - */ -int -lustre_dissect_struct_mgs_config_res(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mgs_config_res); - } - - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_res_offset); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_res_size); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* IDL: struct mgs_target_info { */ -/* IDL: uint32 mti_lustre_ver; */ -/* IDL: uint32 mti_stripe_index; */ -/* IDL: uint32 mti_config_ver; */ -/* IDL: uint32 mti_flags; */ -/* IDL: uint32 mti_nid_count; */ -/* IDL: uint32 padding; */ -/* IDL: uint8 mti_fsname[64]; */ -/* IDL: uint8 mti_svname[64]; */ -/* IDL: uint8 mti_uuid[40]; */ -/* IDL: uint64 mti_nids[32]; */ -/* IDL: uint8 mti_params[4096]; */ -/* IDL: } */ - -static int -lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_lustre_ver); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_stripe_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_stripe_index); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_config_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_config_ver); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_flags); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_nid_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_nid_count); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_padding); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_fsname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_fsname); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_fsname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 64; i++) - offset=lustre_dissect_element_mgs_target_info_mti_fsname_(tvb, offset, pinfo, tree); - - return offset; -} - - - - - -static int -lustre_dissect_element_mgs_target_info_mti_svname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_svname); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_svname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 64; i++) - offset=lustre_dissect_element_mgs_target_info_mti_svname_(tvb, offset, pinfo, tree); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_uuid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_uuid); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 40; i++) - offset=lustre_dissect_element_mgs_target_info_mti_uuid_(tvb, offset, pinfo, tree); - - return offset; -} - - - - - -static int -lustre_dissect_element_mgs_target_info_mti_nids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_nids); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_nids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 32; i++) - offset=lustre_dissect_element_mgs_target_info_mti_nids_(tvb, offset, pinfo, tree); - - return offset; -} - - - -static int -lustre_dissect_element_mgs_target_info_mti_params_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info_mti_params); - - return offset; -} - -static int -lustre_dissect_element_mgs_target_info_mti_params(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 4096; i++) - offset=lustre_dissect_element_mgs_target_info_mti_params_(tvb, offset, pinfo, tree); - - return offset; -} - -int -lustre_dissect_struct_mgs_target_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mgs_target_info); - } - - offset=lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_stripe_index(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_config_ver(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_nid_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_fsname(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_svname(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_uuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_nids(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_mgs_target_info_mti_params(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct cfg_marker { */ -/* IDL: uint32 cm_step; */ -/* IDL: uint32 cm_flags; */ -/* IDL: uint32 cm_vers; */ -/* IDL: uint32 padding; */ -/* IDL: time_t cm_createtime; */ -/* IDL: time_t cm_canceltime; */ -/* IDL: uint8 cm_tgtname[64]; */ -/* IDL: uint8 cm_comment[64]; */ -/* IDL: } */ - -static int -lustre_dissect_element_cfg_marker_cm_step(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_cm_step); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_cm_flags); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_vers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_cm_vers); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_padding); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_createtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree, hf_lustre_cfg_marker_cm_createtime ); - /*g_print("function lustre_dissect_element_cfg_marker_cm_createtime don't work\n");*/ - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_canceltime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree, hf_lustre_cfg_marker_cm_canceltime); - - /*g_print("element_cfg_marker_cm_canceltime\n");*/ - return offset; -} - - - -static int -lustre_dissect_element_cfg_marker_cm_tgtname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_cm_tgtname); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_tgtname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 64; i++) - offset=lustre_dissect_element_cfg_marker_cm_tgtname_(tvb, offset, pinfo, tree); - - return offset; -} - - - -static int -lustre_dissect_element_cfg_marker_cm_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_cfg_marker_cm_comment); - - return offset; -} - -static int -lustre_dissect_element_cfg_marker_cm_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 64; i++) - offset=lustre_dissect_element_cfg_marker_cm_comment_(tvb, offset, pinfo, tree); - - return offset; -} - -int -lustre_dissect_struct_cfg_marker(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_cfg_marker); - } - - offset=lustre_dissect_element_cfg_marker_cm_step(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_vers(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_createtime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_canceltime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_tgtname(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_cfg_marker_cm_comment(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - -/* IDL: struct llog_logid { */ -/* IDL: uint64 lgl_oid; */ -/* IDL: uint64 lgl_oseq; */ -/* IDL: uint32 lgl_ogen; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_logid_lgl_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_logid_lgl_oid); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_lgl_oseq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_logid_lgl_oseq); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_lgl_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_lgl_ogen); - - return offset; -} - -int -lustre_dissect_struct_llog_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_logid); - } - - offset=lustre_dissect_element_llog_logid_lgl_oid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_lgl_oseq(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_lgl_ogen(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* I don't know when this structure is used on network */ -/* IDL: struct llog_catid { */ -/* IDL: struct llog_logid { */ -/* IDL: } lci_logid; */ -/* IDL: uint32 lci_padding1; */ -/* IDL: uint32 lci_padding2; */ -/* IDL: uint32 lci_padding3; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_catid_lci_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85cc76c)(tvb,offset,pinfo,tree,hf_lustre_llog_catid_lci_logid); - - /*g_print("llog_catid_lci_logid bug\n");*/ - return offset; -} - -static int -lustre_dissect_element_llog_catid_lci_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_catid_lci_padding1); - - return offset; -} - -static int -lustre_dissect_element_llog_catid_lci_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_catid_lci_padding2); - - return offset; -} - -static int -lustre_dissect_element_llog_catid_lci_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_catid_lci_padding3); - - return offset; -} - -int -lustre_dissect_struct_llog_catid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_catid); - } - - offset=lustre_dissect_element_llog_catid_lci_logid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_catid_lci_padding1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_catid_lci_padding2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_catid_lci_padding3(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct llog_rec_hdr { */ -/* IDL: uint32 lrh_len; */ -/* IDL: uint32 lrh_index; */ -/* IDL: uint32 lrh_type; */ -/* IDL: uint32 padding; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_rec_hdr_lrh_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_hdr_lrh_len); - - return offset; -} - -static int -lustre_dissect_element_llog_rec_hdr_lrh_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_hdr_lrh_index); - - return offset; -} - -static int -lustre_dissect_element_llog_rec_hdr_lrh_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_hdr_lrh_type); - - return offset; -} - -static int -lustre_dissect_element_llog_rec_hdr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_hdr_padding); - - return offset; -} - -int -lustre_dissect_struct_llog_rec_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_rec_hdr); - } - - offset=lustre_dissect_element_llog_rec_hdr_lrh_len(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_rec_hdr_lrh_index(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_rec_hdr_lrh_type(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_rec_hdr_padding(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct llog_rec_tail { */ -/* IDL: uint32 lrt_len; */ -/* IDL: uint32 lrt_index; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_rec_tail_lrt_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_tail_lrt_len); - - return offset; -} - -static int -lustre_dissect_element_llog_rec_tail_lrt_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_rec_tail_lrt_index); - - return offset; -} - -int -lustre_dissect_struct_llog_rec_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_rec_tail); - } - - offset=lustre_dissect_element_llog_rec_tail_lrt_len(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_rec_tail_lrt_index(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct llog_logid_rec { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } lid_hdr; */ -/* IDL: struct llog_logid { */ -/* IDL: } lid_id; */ -/* IDL: uint32 padding1; */ -/* IDL: uint32 padding2; */ -/* IDL: uint32 padding3; */ -/* IDL: uint32 padding4; */ -/* IDL: uint32 padding5; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } lid_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_logid_rec_lid_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_hdr); - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_lid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_id); - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_rec_padding1); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_rec_padding2); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_rec_padding3); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_padding4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_rec_padding4); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_padding5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_logid_rec_padding5); - - return offset; -} - -static int -lustre_dissect_element_llog_logid_rec_lid_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_tail); - return offset; -} - -int -lustre_dissect_struct_llog_logid_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_logid_rec); - } - - offset=lustre_dissect_element_llog_logid_rec_lid_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_lid_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_padding1(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_padding2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_padding3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_padding4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_padding5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_logid_rec_lid_tail(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct llog_unlink_rec { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } lur_hdr; */ -/* IDL: uint64 lur_oid; */ -/* IDL: uint32 lur_ogen; */ -/* IDL: uint32 padding; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } lur_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_unlink_rec_lur_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85d8730)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_hdr); - return offset; -} - -static int -lustre_dissect_element_llog_unlink_rec_lur_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_unlink_rec_lur_oid); - - return offset; -} - -static int -lustre_dissect_element_llog_unlink_rec_lur_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_unlink_rec_lur_ogen); - - return offset; -} - -static int -lustre_dissect_element_llog_unlink_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_unlink_rec_padding); - - return offset; -} - -static int -lustre_dissect_element_llog_unlink_rec_lur_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85d9664)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_tail); - return offset; -} - -int -lustre_dissect_struct_llog_unlink_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_unlink_rec); - } - - offset=lustre_dissect_element_llog_unlink_rec_lur_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_unlink_rec_lur_oid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_unlink_rec_lur_ogen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_unlink_rec_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_unlink_rec_lur_tail(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - -/* IDL: struct llog_setattr_rec { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } lsr_hdr; */ -/* IDL: uint64 lsr_oid; */ -/* IDL: uint32 lsr_ogen; */ -/* IDL: uint32 lsr_uid; */ -/* IDL: uint32 lsr_gid; */ -/* IDL: uint32 padding; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } lsr_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85da2f0)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_hdr); - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_lsr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_setattr_rec_lsr_oid); - - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_setattr_rec_lsr_ogen); - - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_lsr_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_setattr_rec_lsr_uid); - - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_lsr_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_setattr_rec_lsr_gid); - - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_setattr_rec_padding); - - return offset; -} - -static int -lustre_dissect_element_llog_setattr_rec_lsr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85db3d4)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_tail); - return offset; -} - -int -lustre_dissect_struct_llog_setattr_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_setattr_rec); - } - - offset=lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_lsr_oid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_lsr_uid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_lsr_gid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_setattr_rec_lsr_tail(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct llog_size_change_rec { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } lsc_hdr; */ -/* IDL: struct ll_fid { */ -/* IDL: } lsc_fid; */ -/* IDL: uint32 lsc_io_epoch; */ -/* IDL: uint32 padding; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } lsc_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85dc458)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_hdr); - return offset; -} - -static int -lustre_dissect_element_llog_size_change_rec_lsc_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85dc5a8)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_fid); - return offset; -} - -static int -lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_size_change_rec_lsc_io_epoch); - - return offset; -} - -static int -lustre_dissect_element_llog_size_change_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_size_change_rec_padding); - - return offset; -} - -static int -lustre_dissect_element_llog_size_change_rec_lsc_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85dd384)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_tail); - // TODO: to be corrected ! - return offset; -} - -int -lustre_dissect_struct_llog_size_change_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_size_change_rec); - } - - offset=lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_size_change_rec_lsc_fid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_size_change_rec_padding(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_size_change_rec_lsc_tail(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct llog_gen { */ -/* IDL: uint64 mnt_cnt; */ -/* IDL: uint64 conn_cnt; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_gen_mnt_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_gen_mnt_cnt); - - return offset; -} - -static int -lustre_dissect_element_llog_gen_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_gen_conn_cnt); - - return offset; -} - -int -lustre_dissect_struct_llog_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_gen); - } - - offset=lustre_dissect_element_llog_gen_mnt_cnt(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_gen_conn_cnt(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct llog_gen_rec { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } lgr_hdr; */ -/* IDL: struct llog_gen { */ -/* IDL: } lgr_gen; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } lgr_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_gen_rec_lgr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85de2e4)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_hdr); - // TODO: to be corrected ! - return offset; -} - -static int -lustre_dissect_element_llog_gen_rec_lgr_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85de434)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_gen); - // TODO: to be corrected ! - return offset; -} - -static int -lustre_dissect_element_llog_gen_rec_lgr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85df3f8)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_tail); - // TODO: to be corrected ! - return offset; -} - -int -lustre_dissect_struct_llog_gen_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_gen_rec); - } - - offset=lustre_dissect_element_llog_gen_rec_lgr_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_gen_rec_lgr_gen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_gen_rec_lgr_tail(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct llog_log_hdr { */ -/* IDL: struct llog_rec_hdr { */ -/* IDL: } llh_hdr; */ -/* IDL: uint64 llh_timestamp; */ -/* IDL: uint32 llh_count; */ -/* IDL: uint32 llh_bitmap_offset; */ -/* IDL: uint32 llh_size; */ -/* IDL: uint32 llh_flags; */ -/* IDL: uint32 llh_cat_idx; */ -/* IDL: struct obd_uuid { */ -/* IDL: } llh_tgtuuid; */ -/* IDL: uint32 llh_reserved[1]; */ -/* IDL: uint32 llh_bitmap[2024]; */ -/* IDL: struct llog_rec_tail { */ -/* IDL: } llh_tail; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_log_hdr_llh_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_hdr); - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_timestamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_llog_log_hdr_llh_timestamp, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_count); - - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_bitmap_offset); - - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_size); - - return offset; -} - - - -static int -lustre_dissect_element_llog_log_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_log_llh_flags); - } - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_zap_when_empty); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_cat); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_play); - - offset+=4; - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - // offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_flags); - offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_flags); - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_cat_idx); - - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_obd_uuid(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tgtuuid); - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_reserved_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_reserved); - - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 1; i++) - offset=lustre_dissect_element_llog_log_hdr_llh_reserved_(tvb, offset, pinfo, tree); - - return offset; -} - -static int -lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_bitmap); - - return offset; -} - - -static int -lustre_dissect_element_llog_log_hdr_llh_bitmap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - int i; - for (i = 0; i < 2024; i++) - offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvb, offset, pinfo, tree); - - return offset; -} - - - -static int -lustre_dissect_element_llog_log_hdr_llh_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tail); - return offset; -} - -int -lustre_dissect_struct_llog_log_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_log_hdr); - } - - offset=lustre_dissect_element_llog_log_hdr_llh_hdr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_timestamp(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_reserved(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_bitmap(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_log_hdr_llh_tail(tvb, offset, pinfo, tree); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - - -/* IDL: struct llog_cookie { */ -/* IDL: struct llog_logid { */ -/* IDL: } lgc_lgl; */ -/* IDL: uint32 lgc_subsys; */ -/* IDL: uint32 lgc_index; */ -/* IDL: uint32 lgc_padding; */ -/* IDL: } */ - -static int -lustre_dissect_element_llog_cookie_lgc_lgl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_cookie_lgc_lgl); - return offset; -} - -static int -lustre_dissect_element_llog_cookie_lgc_subsys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_cookie_lgc_subsys); - - return offset; -} - -static int -lustre_dissect_element_llog_cookie_lgc_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_cookie_lgc_index); - - return offset; -} - -static int -lustre_dissect_element_llog_cookie_lgc_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_cookie_lgc_padding); - - return offset; -} - -int -lustre_dissect_struct_llog_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llog_cookie); - } - - offset=lustre_dissect_element_llog_cookie_lgc_lgl(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_cookie_lgc_subsys(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_cookie_lgc_index(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llog_cookie_lgc_padding(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - -/* IDL: struct llogd_body { */ -/* IDL: struct llog_logid { */ -/* IDL: } lgd_logid; */ -/* IDL: uint32 lgd_ctxt_idx; */ -/* IDL: uint32 lgd_llh_flags; */ -/* IDL: uint32 lgd_index; */ -/* IDL: uint32 lgd_saved_index; */ -/* IDL: uint32 lgd_len; */ -/* IDL: uint64 lgd_cur_offset; */ -/* IDL: } */ - -static int -lustre_dissect_element_llogd_body_lgd_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llogd_body_lgd_logid); - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_ctxt_idx); - - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_llh_flags); - - offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_llh_flags); - - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_index); - - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_saved_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_saved_index); - - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_len); - - return offset; -} - -static int -lustre_dissect_element_llogd_body_lgd_cur_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_cur_offset); - - return offset; -} - -int -lustre_dissect_struct_llogd_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llogd_body); - } - - offset=lustre_dissect_element_llogd_body_lgd_logid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_llh_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_index(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_saved_index(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_len(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_body_lgd_cur_offset(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* TODO : find when this Structure appear on the wire */ -/* IDL: struct llogd_conn_body { */ -/* IDL: struct llog_gen { */ -/* IDL: } lgdc_gen; */ -/* IDL: struct llog_logid { */ -/* IDL: } lgdc_logid; */ -/* IDL: uint32 lgdc_ctxt_idx; */ -/* IDL: } */ - -static int -lustre_dissect_element_llogd_conn_body_lgdc_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85e6038)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_gen); - return offset; -} - -static int -lustre_dissect_element_llogd_conn_body_lgdc_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - //offset=lustre_dissect_struct_HASH(0x85e6188)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_logid); - return offset; -} - -static int -lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llogd_conn_body_lgdc_ctxt_idx); - - return offset; -} - -int -lustre_dissect_struct_llogd_conn_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_llogd_conn_body); - } - - offset=lustre_dissect_element_llogd_conn_body_lgdc_gen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_conn_body_lgdc_logid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* IDL: struct obdo { */ -/* IDL: uint64 o_valid; */ -/* IDL: uint64 o_id; */ -/* IDL: uint64 o_seq; */ -/* IDL: uint64 o_parent_seq; */ -/* IDL: uint64 o_size; */ -/* IDL: uint64 o_mtime; */ -/* IDL: uint64 o_atime; */ -/* IDL: uint64 o_ctime; */ -/* IDL: uint64 o_blocks; */ -/* IDL: uint64 o_grant; */ -/* IDL: uint32 o_blksize; */ -/* IDL: uint32 o_mode; */ -/* IDL: uint32 o_uid; */ -/* IDL: uint32 o_gid; */ -/* IDL: uint32 o_flags; */ -/* IDL: uint32 o_nlink; */ -/* IDL: uint32 o_parent_oid; */ -/* IDL: uint32 o_misc; */ -/* IDL: uint64 o_ioepoch; */ -/* IDL: uint32 o_stripe_idx; */ -/* IDL: uint32 o_parent_ver; */ -/* IDL: struct lustre_handle { */ -/* IDL: } o_handle; */ -/* IDL: struct llog_cookie { */ -/* IDL: } o_lcookie; */ -/* IDL: uint32 o_uid_h; */ -/* IDL: uint32 o_gid_h; */ -/* IDL: uint64 o_padding_3; */ -/* IDL: uint64 o_padding_4; */ -/* IDL: uint64 o_padding_5; */ -/* IDL: uint64 o_padding_6; */ -/* IDL: } */ - -static int -lustre_dissect_element_obdo_o_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_valid); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_id); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_seq); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_parent_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_parent_seq); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_size); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_obdo_o_mtime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_obdo_o_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_obdo_o_atime, tvb, offset, 8, &ns ); - offset+=8; - return offset; - -} - -static int -lustre_dissect_element_obdo_o_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_obdo_o_ctime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_obdo_o_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_blocks); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_grant); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_blksize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_blksize); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_mode); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_uid); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_gid); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_flags); - /* TODO rajouter ça , faire une fonction générique qui s'occupe de tous les flags d'un tableau. */ - /* LOBDFlags = {*/ - /*0x00000001 : "OBD_FL_INLINEDATA",*/ - /*0x00000002 : "OBD_FL_OBDMDEXISTS",*/ - /*0x00000004 : "OBD_FL_DELORPHAN",*/ - /*0x00000008 : "OBD_FL_NORPC",*/ - /*0x00000010 : "OBD_FL_IDONLY",*/ - /*0x00000020 : "OBD_FL_RECREATE_OBJS",*/ - /*0x00000040 : "OBD_FL_DEBUG_CHECK",*/ - /*0x00000100 : "OBD_FL_NO_USRQUOTA",*/ - /*0x00000200 : "OBD_FL_NO_GRPQUOTA",*/ - /*0x00000400 : "OBD_FL_CREATE_CROW",*/ - /*0x00000800 : "OBD_FL_SRVLOCK",*/ - //} - return offset; -} - -static int -lustre_dissect_element_obdo_o_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_nlink); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_parent_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_parent_oid); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_misc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_misc); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_ioepoch); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_stripe_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_stripe_idx); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_parent_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_parent_ver); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_handle); - return offset; -} - -static int -lustre_dissect_element_obdo_o_lcookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_lcookie); - return offset; -} - -static int -lustre_dissect_element_obdo_o_uid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_uid_h); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_gid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_gid_h); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_padding_3); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_padding_4); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_padding_5); - - return offset; -} - -static int -lustre_dissect_element_obdo_o_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_padding_6); - - return offset; -} - -int -lustre_dissect_struct_obdo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obdo); - } - - offset=lustre_dissect_element_obdo_o_valid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_seq(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_parent_seq(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_size(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_mtime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_atime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_ctime(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_blocks(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_grant(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_blksize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_mode(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_uid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_gid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_nlink(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_parent_oid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_misc(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_ioepoch(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_stripe_idx(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_parent_ver(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_handle(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_lcookie(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_uid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_gid_h(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_padding_3(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_padding_4(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_padding_5(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_obdo_o_padding_6(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - - -/* IDL: struct ost_body { */ -/* IDL: struct obdo { */ -/* IDL: } oa; */ -/* IDL: } */ - -static int -lustre_dissect_element_ost_body_oa(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_obdo(tvb,offset,pinfo,tree,hf_lustre_ost_body_oa); - return offset; -} - -int -lustre_dissect_struct_ost_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ost_body); - } - - offset=lustre_dissect_element_ost_body_oa(tvb, offset, pinfo, tree); - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - - -/* TODO : find when this Structure appear on the wire */ -/* IDL: struct qunit_data { */ -/* IDL: uint32 qd_id; */ -/* IDL: uint32 qd_flags; */ -/* IDL: uint64 qd_count; */ -/* IDL: uint64 qd_qunit; */ -/* IDL: uint64 padding; */ -/* IDL: } */ - -static int -lustre_dissect_element_qunit_data_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_qd_id); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_qd_flags); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qunit_data_qd_count); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_qd_qunit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qunit_data_qd_qunit); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qunit_data_padding); - - return offset; -} - -int -lustre_dissect_struct_qunit_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_qunit_data); - } - - offset=lustre_dissect_element_qunit_data_qd_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_qd_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_qd_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_qd_qunit(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_padding(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* TODO : find when this Structure appear on the wire */ -/* IDL: struct qunit_data_old2 { */ -/* IDL: uint32 qd_id; */ -/* IDL: uint32 qd_flags; */ -/* IDL: uint64 qd_count; */ -/* IDL: } */ - -static int -lustre_dissect_element_qunit_data_old2_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old2_qd_id); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_old2_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old2_qd_flags); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_old2_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old2_qd_count); - - return offset; -} - -int -lustre_dissect_struct_qunit_data_old2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old2); - } - - offset=lustre_dissect_element_qunit_data_old2_qd_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_old2_qd_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_old2_qd_count(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* TODO : find when this Structure appear on the wire */ -/* IDL: struct qunit_data_old { */ -/* IDL: uint32 qd_id; */ -/* IDL: uint32 qd_type; */ -/* IDL: uint32 qd_count; */ -/* IDL: uint32 qd_isblk; */ -/* IDL: } */ - -static int -lustre_dissect_element_qunit_data_old_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old_qd_id); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_old_qd_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old_qd_type); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_old_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old_qd_count); - - return offset; -} - -static int -lustre_dissect_element_qunit_data_old_qd_isblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qunit_data_old_qd_isblk); - - return offset; -} - -int -lustre_dissect_struct_qunit_data_old(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old); - } - - offset=lustre_dissect_element_qunit_data_old_qd_id(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_old_qd_type(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_old_qd_count(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_qunit_data_old_qd_isblk(tvb, offset, pinfo, tree); - - - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -int -lustre_dissect_struct_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_ ) -{ - offset=dissect_uint32(tvb, offset, pinfo, parent_tree, hf_index); - /* Pad out to 8 bytes */ - offset=add_extra_padding(tvb,offset,pinfo,parent_tree); - - return offset; -} - -int -lustre_dissect_struct_seq_range(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_lustre_seq_range, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_seq_range); - } - - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_seq_range_start); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_seq_range_end); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_seq_range_index); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_seq_range_flags); - - if (item) - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -int -lustre_dissect_struct_fld_range(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_lustre_fld_range, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_fld_range); - } - - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_fld_range_start); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_fld_range_end); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_fld_range_index); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_fld_range_flags); - - if (item) - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -int -lustre_dissect_struct_mdt_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_mdt_ioepoch); - } - - offset=lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_handle); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_ioepoch); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_flags); - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_padding); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -/* IDL: struct lustre_capa { - * IDL: struct lu_fid lc_fid; - * IDL: __u64 lc_opc; - * IDL: __u64 lc_uid; - * IDL: __u64 lc_gid; - * IDL: __u32 lc_flags; - * IDL: __u32 lc_keyid; - * IDL: __u32 lc_timeout; - * IDL: __u32 lc_expiry; - * IDL: __u8 lc_hmac[64]; - * IDL: } __attribute__((packed)); - */ - -/** lustre_capa::lc_opc */ -/* enum { */ -/* CAPA_OPC_BODY_WRITE = 1<<0, **< write object data */ -/* CAPA_OPC_BODY_READ = 1<<1, **< read object data */ -/* CAPA_OPC_INDEX_LOOKUP = 1<<2, **< lookup object fid */ -/* CAPA_OPC_INDEX_INSERT = 1<<3, **< insert object fid */ -/* CAPA_OPC_INDEX_DELETE = 1<<4, **< delete object fid */ -/* CAPA_OPC_OSS_WRITE = 1<<5, **< write oss object data */ -/* CAPA_OPC_OSS_READ = 1<<6, **< read oss object data */ -/* CAPA_OPC_OSS_TRUNC = 1<<7, **< truncate oss object */ -/* CAPA_OPC_OSS_DESTROY = 1<<8, **< destroy oss object */ -/* CAPA_OPC_META_WRITE = 1<<9, **< write object meta data */ -/* CAPA_OPC_META_READ = 1<<10, **< read object meta data */ -/* }; */ - -int -lustre_dissect_element_capa_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - /* TODO - pick apart bits */ - offset = dissect_uint64(tvb, offset, pinfo, parent_tree, hf_lustre_capa_opc); - return offset; -} - -int -lustre_dissect_element_capa_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - /* TODO - pick apart flags */ - offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_capa_flags); - return offset; -} - -int -lustre_dissect_struct_capa(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_capa); - } - - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_capa_fid); - - offset=lustre_dissect_element_capa_opc(tvb,offset,pinfo,tree); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_capa_uid); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_capa_gid); - - offset=lustre_dissect_element_capa_flags(tvb,offset,pinfo,tree); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_keyid); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_timeout); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_expiry); - - offset=lustre_dissect_struct_hmac(tvb,offset,pinfo,tree, hf_lustre_capa_hmac, 64); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -int -lustre_dissect_struct_lquota_id(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lquota_id); - } - - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_qid_fid); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_uid); - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_gid); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -int -lustre_dissect_struct_quota_body(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_quota_body); - } - - offset = lustre_dissect_struct_lu_fid(tvb, offset, pinfo, tree, hf_lustre_qb_fid); - offset = lustre_dissect_struct_lquota_id(tvb, offset, pinfo, tree, hf_lustre_qb_id); - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_flags); - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_padding); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_count); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_usage); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_slv_ver); - offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, - hf_lustre_qb_lockh); - offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, - hf_lustre_qb_glb_lockh); - offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, - hf_lustre_qb_padding, 32); - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -int -lustre_dissect_struct_layout_intent(tvbuff_t *tvb _U_, int offset _U_, - packet_info *pinfo _U_, - proto_tree *parent_tree _U_, - int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_layout_intent); - } - - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_opc); - offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_flags); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_start); - offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_end); - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -int -lustre_dissect_struct_acl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_acl); - } - - proto_tree_add_item(tree, hf_index, tvb, offset, data_len, TRUE); - - offset+=data_len; - - offset=add_extra_padding(tvb,offset,pinfo,tree); - - if (item) - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -/* struct close_data { */ -/* struct lustre_handle cd_handle; */ -/* struct lu_fid cd_fid; */ -/* __u64 cd_data_version; */ -/* __u64 cd_reserved[8]; */ -/* }; */ -static int -lustre_dissect_struct_close_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_close_data); - } - - offset=lustre_dissect_element_handle_cookie(tvb,offset,pinfo,tree); - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_close_fid); - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_close_data_ver); - offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_close_reserved,8*sizeof(guint64)); - - if (item) - proto_item_set_len(item, offset-old_offset); - - return offset; -} - -static int -lustre_dissect_element_mds_getinfo_vallen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_, guint32 buf_num) -{ - int data_len; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index); - - offset=add_extra_padding(tvb,offset,pinfo,tree); - - return offset; -} - - -/* ------------------------------------------------------------------------- * - * HSM Dissection - * - * struct hsm_request { - * __u32 hr_action; /\* enum hsm_user_action *\/ - * __u32 hr_archive_id; /\* archive id, used only with HUA_ARCHIVE *\/ - * __u64 hr_flags; /\* request flags *\/ - * __u32 hr_itemcount; /\* item count in hur_user_item vector *\/ - * __u32 hr_data_len; - */ - -int -lustre_dissect_element_hsm_req_action(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_action); - return offset; -} - -int -lustre_dissect_element_hsm_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - /* TODO - pick apart request flags - HSM_FORCE_ACTION, HSM_GHOST_COPY */ - offset=dissect_uint64(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_flags); - return offset; -} - -static int -lustre_dissect_struct_hsm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - guint32 action; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_hsm_request); - } - - action=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(action, lustre_hsm_user_action_t_vals, "Unknown cr_opc")); - - offset=lustre_dissect_element_hsm_req_action(tvb,offset,pinfo,tree); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_archive_id); - - offset=lustre_dissect_element_hsm_req_flags(tvb,offset,pinfo,tree); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_itemcount); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_data_len); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -/* struct hsm_extent { */ -/* __u64 offset; */ -/* __u64 length; */ -/* } */ -static int -lustre_dissect_struct_hsm_extent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_hsm_extent); - } - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_offset); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_length); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -/* struct hsm_user_item { */ -/* struct lu_fid hui_fid; */ -/* struct hsm_extent hui_extent; */ -/* } __attribute__((packed)); */ -static int -lustre_dissect_struct_hsm_user_item(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_hsm_user_item); - } - - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_fid); - - offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_extent); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -/* struct hsm_progress_kernel { */ -/* struct lu_fid hpk_fid; */ -/* __u64 hpk_cookie; */ -/* struct hsm_extent hpk_extent; */ -/* __u16 hpk_flags; */ -/* __u16 hpk_errval; */ -/* __u32 hpk_padding1; */ -/* __u64 hpk_data_version; */ -/* __u64 hpk_padding2; */ -/* } __attribute__((packed)); */ -static int -lustre_dissect_struct_hsm_progress(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_hsm_progress); - } - - offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_fid); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_cookie); - - offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_extent); - - offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_flags); - - offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_errval); - - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_extra_padding); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_data_ver); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_extra_padding); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -static int -lustre_dissect_struct_element_states(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_) -{ - offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_index); - return offset; -} - -/* struct hsm_user_state { */ -/* ** Current HSM states, from enum hsm_states. */ -/* __u32 hus_states; */ -/* __u32 hus_archive_id; */ -/* ** The current undergoing action, if there is one */ -/* __u32 hus_in_progress_state; */ -/* __u32 hus_in_progress_action; */ -/* struct hsm_extent hus_in_progress_location; */ -/* char hus_extended_info[]; */ -/* }; */ -static int -lustre_dissect_struct_hsm_user_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_hsm_user_state); - } - - offset=lustre_dissect_struct_element_states(tvb,offset,pinfo,tree,hf_lustre_hsm_us_states); - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_archive_id); - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_state); - offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_action); - offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_location); - offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_hsm_us_ext_info, - (data_len-(offset-old_offset))); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - - -/* ------------------------------------------------------------------------- */ -/* dissect string . - * the length of the string is the current buflen - * @tvb the packet buff - * @offset the current offset - * @pinfo - * @parent_tree - * @hf_index : the corresponding header field - * @buf_num : the corresponding bufnumber of the string (we use it to - * determine the string length), must respect : 0 1) { -#ifdef WIRESHARK_COMPAT - display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, - " filename : %s", - (const gchar *)tvb_get_string(tvb, offset, - string_len)); -#else - display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, - " filename : %s", - (const gchar *)tvb_get_string_enc(wmem_packet_scope(), - tvb, offset, - string_len, - ENC_ASCII)); -#endif - } - - offset += string_len; - proto_item_set_len(item, offset-old_offset); - offset = add_extra_padding(tvb, offset, pinfo, parent_tree); - - return offset; -} - -static int -lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - int old_offset; - guint32 string_len; - - old_offset=offset; - - string_len = LUSTRE_BUFFER_LEN(buf_num); - if(string_len == 0) - return offset; - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); - - offset+=string_len; - proto_item_set_len(item, offset-old_offset); - offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* after a string we must be aligned to 8 bytes. */ - - return offset; -} -/* ------------------------------------------------------------------------- */ -static int -lustre_dissect_raw_nstr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, - guint32 max_len _U_) -{ - proto_item *item = NULL; - int old_offset, string_len; - char c; - - old_offset = offset; - - string_len = -1; - do { - ++ string_len; - c = tvb_get_guint8(tvb, offset + string_len); - } while (string_len < max_len && c != '\0'); - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); - offset += string_len+1; - proto_item_set_len(item, offset-old_offset); - return offset; -} - -static int -lustre_dissect_raw_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, - guint32 length _U_) -{ - proto_item *item = NULL; - - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, length, TRUE); - proto_item_set_len(item, length); - return offset+length; -} - -int -lustre_dissect_xattr_eavals(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint32 buff_num) -{ - /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] * - * array length == sizeof(eavals_lens)/sizeof(uint32) - * Buff 1: array of strings (name of xattr) - * Buff 2: array of data (data of xattr) - * Buff 3: array of data lengths (in buff 2) - */ - int count, i, size; - int namestart, datastart, lenstart, namelen, datalen, lenlen; - int nameoffset, dataoffset; - proto_item *item = NULL; - proto_tree *tree = NULL; - - namelen = LUSTRE_BUFFER_LEN(buff_num); - datalen = LUSTRE_BUFFER_LEN(buff_num+1); - lenlen = LUSTRE_BUFFER_LEN(buff_num+2); - - count = lenlen / sizeof(guint32); - - namestart = nameoffset = offset; - datastart = namestart + namelen; - datastart += (8- datastart%8)%8; - dataoffset = datastart; - lenstart = datastart + datalen; - lenstart += (8- lenstart%8)%8; - - item = proto_tree_add_item(parent_tree, hf_lustre_xattrs, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_xattrs); - - for (i = 0; i < count; ++i) { - int sizeoffset; - sizeoffset = lenstart + sizeof(guint32)*i; - size = tvb_get_letohl(tvb, sizeoffset); - - nameoffset = lustre_dissect_raw_nstr(tvb, nameoffset, pinfo, tree, - hf_lustre_xattrs_name, - (namestart+namelen)-nameoffset); - dataoffset = lustre_dissect_raw_data(tvb, dataoffset, pinfo, tree, - hf_lustre_xattrs_data, size); - dissect_uint32(tvb, sizeoffset, pinfo, tree, hf_lustre_xattrs_size); - } - - offset = lenstart + lenlen; - offset += (8- offset%8)%8; - proto_item_set_len(item, offset-namestart); - return offset; -} - - -/* Process REINT opcode requests */ -static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) -{ - guint32 opcode ; - - opcode = tvb_get_letohl(tvb,offset); - - switch(opcode){ - case REINT_SETATTR: - /* 2.x+ [rec_setattr][capa1][mdt_epoch][eadata][cookie_data][ldlm_request] */ - /* old? [rec_setattr][ldlm_request] */ - offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, - hf_lustre_mdt_rec_setattr); - if (LUSTRE_BUFCOUNT > 2) { - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+2) > 0) - offset=lustre_dissect_struct_mdt_ioepoch(tvb, offset, pinfo, tree, - hf_lustre_mdt_ioepoch); - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, - hf_lustre_mds_xattr_eadata, - LUSTRE_REQ_REC_OFF+3); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) - offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); - } - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, - hf_lustre_ldlm_request); - break; - case REINT_CREATE : - /* [rec_create][filename][tgt.. à 0 pour l'instant][ldlm_request] */ - offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); - /* REINT_CREATE_SLAVE / SYM / RMT_ACL */ - if (LUSTRE_BUFCOUNT > 4) { - /* for CREATE_SYM this is actually name of target - encoded in mdt_rec_create.cr_mode */ - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+3); - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, - hf_lustre_ldlm_request); - } - break; - case REINT_LINK: - /*[mdt_rec_link][filename][ldlm_req] */ - offset=lustre_dissect_struct_mdt_rec_link(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - break; - case REINT_UNLINK: - /* reint_unlink_client: [mdt_rec_unlink][capa1][filename][ldlm_req] */ - offset=lustre_dissect_struct_mdt_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+2) == 112) { - /* TODO : ugly .. but for now we have to do this */ - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl); - - } else { - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - } - break; - case REINT_RENAME: /*mds_rename_unpack : [mdt_rec_rename][filename source][filename target_name][ldlm_request] */ - offset=lustre_dissect_struct_mdt_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+4); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+5) > 0) - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - break; - case REINT_OPEN: /* [rec_create][filename][eadata] */ - offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); - break; - case REINT_SETXATTR: - /* 2.x+ [rec_setxattr][capa1][name][eadata][dlm_req] */ - /* old? [rec_setxattr][ldlm_request] */ - offset=lustre_dissect_struct_mdt_rec_setxattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr); - if (LUSTRE_BUFCOUNT > 2) { - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata_str, - LUSTRE_REQ_REC_OFF+3); - if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - } else if (LUSTRE_BUFCOUNT == 2) - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, - hf_lustre_ldlm_request); - break; - } - - return offset ; -} - - -/* dissect a connect message */ -static int -lustre_dissect_generic_connect(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - /*TODO : add a cuuid and target uid */ - offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, - hf_lustre_obd_uuid); - offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, - hf_lustre_obd_uuid); - offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, - hf_lustre_mdt_body_handle); - offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, - tree, hf_lustre_obd_connect_data, 4); - return offset; -} - -int -lustre_dissect_struct_lu_ladvise(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - int data_len; - - old_offset=offset; - - data_len = LUSTRE_BUFFER_LEN(buf_num); - if (data_len == 0) - return offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ladvise); - } - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_start); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_end); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_advice); - - offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_padding); - - if (item) - proto_item_set_len(item, offset-old_offset); - return offset; -} - -static int -lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - guint32 i ; - - switch (opc){ - case OST_REPLY: /* obsolete so nothing */ - break; - case OST_GETATTR: - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - break; - case OST_SETATTR: - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - break; - case OST_READ: /* [OST_BODY][obd_ioobj][niobuf_remote] for request, [OST_BODY] for reply */ - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if(pb_type==PTL_RPC_MSG_REQUEST){ - offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj); - offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_niobuf_remote); - } - break; - case OST_WRITE: - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, - hf_lustre_ost_body); - if(pb_type==PTL_RPC_MSG_REQUEST) { - for (i = 0; i < (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+1))/24; i++) - offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj); - offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_obd_ioobj); - } - if(pb_type==PTL_RPC_MSG_REPLY) { /* niocount *[uint32], but niocount is in request message, so - we use the bufcount */ - for (i = 0; i < LUSTRE_BUFCOUNT-2; i++) /* -2 because we have already dissect 2 buffers : ptl + ost */ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_nio); - offset=add_extra_padding(tvb, offset, pinfo, tree); - } - break; - case OST_CREATE: - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - break; - case OST_DESTROY: - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if(pb_type==PTL_RPC_MSG_REQUEST) {/* [ost_body][ldlm_req][capa] */ - if ( LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF +1) != 0) - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request); - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+2); - } - break; - case OST_GET_INFO: - if(pb_type==PTL_RPC_MSG_REQUEST) /* [key] */ - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); - if (pb_type==PTL_RPC_MSG_REPLY) - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */ - break; - case OST_CONNECT: - if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ - offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree); - if (pb_type==PTL_RPC_MSG_REPLY) - offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, - tree, hf_lustre_obd_connect_data, 1); - break; - case OST_DISCONNECT: /* [nothing] */ - break; - case OST_PUNCH: /* [ost_body] */ - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - break; - case OST_OPEN: /* [nothing] in the code maybee obsolete */ - break; - case OST_CLOSE: /* [nothing] in the code maybee obsolete */ - break; - case OST_STATFS: /* [obd_statfs] */ - if (pb_type==PTL_RPC_MSG_REPLY) - offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; - break; - case OST_SYNC: - /*[ost_body] in both case */ - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - break; - case OST_SET_INFO: - if(pb_type==PTL_RPC_MSG_REQUEST) - { - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); /* key */ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */ - } - /* if Key = "evict_by_nid" --> need to be process.. TODO */ - break; - case OST_QUOTACHECK: - if(pb_type==PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; - /* nothing in reply */ - break; - case OST_QUOTACTL: - /*[obd_quotactl in both case]*/ - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; - case OST_QUOTA_ADJUST_QUNIT: - /* [quota_adjust_qunit] in both case ? */ - offset=lustre_dissect_struct_quota_adjust_qunit(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit) ; - case OST_LADVISE: - /*[ost_body] in both case */ - offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; - if (pb_type == PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_struct_lu_ladvise(tvb, offset, pinfo, tree, hf_lustre_lu_ladvise, LUSTRE_REQ_REC_OFF+2); - } - break; - }; - return offset; -} - -static int -lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - int i; - switch (opc){ - case MDS_DISCONNECT: - /*[nothing]*/ - break; - case MDS_GET_ROOT: - /*request: [mds body]*/ - /*reply: [mds body][capa] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - if (pb_type == PTL_RPC_MSG_REPLY) - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+1); - break; - case MDS_SETXATTR: - if(pb_type==PTL_RPC_MSG_REQUEST) - /* [mds body] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - /*if(reply) : [nothing]*/ - break; - case MDS_GETXATTR: - /*request: [mds body][capa][xattr name]*/ - /*reply: [mds body][eadata] - ommited on error */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - if(pb_type==PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+1); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2); - } - if (pb_type == PTL_RPC_MSG_REPLY) - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+1); - break; - case MDS_GETATTR: - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - if (pb_type == PTL_RPC_MSG_REPLY) { /* [mdt_md][acl][capa1][capa2] */ - offset=lustre_dissect_struct_lov_mds_md(tvb, offset, pinfo, tree, - hf_lustre_mds_md_data, - LUSTRE_REPLY_REC_OFF+1); - offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, - hf_lustre_acl, LUSTRE_REPLY_REC_OFF+3); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, - LUSTRE_REPLY_REC_OFF+4); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, - LUSTRE_REPLY_REC_OFF+5); - } - break; - case MDS_GETATTR_NAME: - if(pb_type==PTL_RPC_MSG_REQUEST) - /*[mdt_body]*/ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - /*[nothing in reply]*/ - break; - case MDS_DONE_WRITING: - /*[mdt_body]*/ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - break; - case MDS_PIN: /* repbody.. */ - /*[mdt_body]*/ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - break; - case MDS_SYNC: - /*[mdt_body]*/ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - break; - - case MDS_CLOSE: - if(pb_type==PTL_RPC_MSG_REQUEST) - { /* [mdt_ioepoch][rec_reint][capa1] */ - offset=lustre_dissect_struct_mdt_ioepoch(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch); - - if(LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+1) > 0) - offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr); - - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_struct_close_data(tvb,offset,pinfo,tree, hf_lustre_close_data, LUSTRE_REQ_REC_OFF+3); - } - if(pb_type==PTL_RPC_MSG_REPLY) - { /* [mdt_body][md][cookie][capa1][capa2] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); - if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0) - offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+3); - offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+4); - } - break; - - case MDS_STATFS: - if(pb_type==PTL_RPC_MSG_REPLY) - /*[obd_statfs]*/ - offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; - /*in request : [nothing]*/ - break; - - case MDS_READPAGE: - /* [mdt_body] but with some different interpration, need to modify the hf : TODO */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - break; - - case MDS_REINT: - /* the structure depend on the intent_opcode */ - if(pb_type==PTL_RPC_MSG_REQUEST) - offset=reint_opcode_process(tvb, offset, pinfo, tree); - - if(pb_type==PTL_RPC_MSG_REPLY) { - /* [mdt_body][mdt_md][??][capa1][capa2] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - - offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); - - if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0) - /* open : ...[ACL]... - * unlink, rename : ...[log_cookies]... */ - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, - hf_lustre_mds_xattr_eadata, - LUSTRE_REPLY_REC_OFF+2); - - lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+3); - lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+4); - } - break; - case MDS_SET_INFO: - if(pb_type==PTL_RPC_MSG_REQUEST){ - /*[key][val]*/ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key,LUSTRE_REQ_REC_OFF); /* key */ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */ - //offset=add_extra_padding(tvb,offset,pinfo,tree); - } - /*nothing en reply*/ - break; - case MDS_QUOTACHECK: - /* [obd_quotactl] */ - if(pb_type==PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; - break; - case MDS_QUOTACTL: - /* [obd_quotactl] in both case*/ - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; - break; - case MDS_CONNECT: - if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ - offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree); - if (pb_type==PTL_RPC_MSG_REPLY || pb_type == PTL_RPC_MSG_ERR) /*[obd_connect_data]*/ - offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, - tree, hf_lustre_obd_connect_data, 1); - break; - case MDS_HSM_REQUEST: - /* [mdt_body][hsm_request][array of hsm_user_item][generic_data] */ - if (pb_type==PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - offset=lustre_dissect_struct_hsm_request(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); - for(i = LUSTRE_REQ_REC_OFF+2; i < LUSTRE_BUFCOUNT-1; ++i) { - offset=lustre_dissect_struct_hsm_user_item(tvb, offset, pinfo, tree, hf_lustre_hsm_user_item, i); - } - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_generic_data, LUSTRE_REQ_REC_OFF+3); - } - break; - case MDS_HSM_PROGRESS: - /* [mdt_body][hsm_progress] */ - if (pb_type==PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - offset=lustre_dissect_struct_hsm_progress(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); - } - break; - case MDS_HSM_STATE_GET: - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - if (pb_type==PTL_RPC_MSG_REPLY) - /* ...[hsm_user_state] */ - offset=lustre_dissect_struct_hsm_user_state(tvb, offset, pinfo, tree, hf_lustre_hsm_state_get, LUSTRE_REQ_REC_OFF+1); - break; - case MDS_GET_INFO: - if (pb_type == PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_key, LUSTRE_REQ_REC_OFF); - offset=lustre_dissect_element_mds_getinfo_vallen(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_vallen, LUSTRE_REQ_REC_OFF+1); - } - if (pb_type == PTL_RPC_MSG_REPLY) - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_data, LUSTRE_REQ_REC_OFF); - default: - break; - }; - - return offset; - -} - - -static int -lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch (opc) { - case LDLM_ENQUEUE: - /* [ldlm_request] if we have one more buffer it's - * [intent_opcode] and the opcode give us the corresponding - * intent structure [intent] */ - if (pb_type==PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, - hf_lustre_ldlm_request); - if (LUSTRE_BUFCOUNT>=3) - offset=lustre_dissect_struct_ldlm_intent(tvb, offset, pinfo, tree, - hf_lustre_ldlm_intent); - } - if (pb_type==PTL_RPC_MSG_REPLY) { - guint32 ldlm_type; - - /* [ldlm_reply] */ - offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, - hf_lustre_ldlm_reply, - &ldlm_type); - /* Generic Reply: - * [mdt_body][mdt_md][acl] - * CREATE or GETATTR: - * [mdt_body][mdt_md][acl][capa1] - * OPEN: - * [mdt_body][mdt_md][acl][capa1][capa2] - * GETXATTR: - * [mdt_body][mdt_md][acl][eadata][eavals][eavals_lens] - * - * LAYOUT: - * [dlm_lvb] - * QUOTA: - * [dlm_lvb][quota_body] - */ - - /* check if we're done processing */ - if (LUSTRE_BUFCOUNT <= 2) - break; - - /* LAYOUT and QUOTA */ - if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) == 40) { - /* TODO :this code need to be check and test, the - * lustre corresponding code isn't explicit, so not - * sure to have this buffer, but in example it works - * fine - */ - offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb, - LUSTRE_DLM_REPLY_REC_OFF); - if (LUSTRE_BUFCOUNT == 3) - break; - offset = lustre_dissect_struct_quota_body(tvb, offset, - pinfo, tree, hf_lustre_qb, - LUSTRE_DLM_REPLY_REC_OFF+1); - break; - - } else if ((ldlm_type == LDLM_EXTENT) || (LUSTRE_BUFCOUNT == 3)) { - int magic; - // ?? - magic=tvb_get_letohl(tvb, offset); - if (magic == LOV_MAGIC_V1) - offset = lustre_dissect_struct_lov_mds_md_v1(tvb, offset, - pinfo, tree, hf_lustre_lov_mds_md_v1); - else - offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, - tree, hf_lustre_ost_lvb, - LUSTRE_DLM_REPLY_REC_OFF+1); - break; - } - - if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0) - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, - hf_lustre_mdt_body); - offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, - LUSTRE_DLM_REPLY_REC_OFF+1); - - /* ldlm_intent_server : ACL */ - offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, - hf_lustre_acl, LUSTRE_DLM_REPLY_REC_OFF+2); - - if (LUSTRE_BUFCOUNT == 8) { - /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] */ - offset = lustre_dissect_xattr_eavals(tvb, offset, pinfo, tree, - LUSTRE_DLM_REPLY_REC_OFF+3); - break; - - } else if (LUSTRE_BUFCOUNT >= 6) { - /* ldlm_intent_open_server : [capa1][capa2] */ - /* ldlm_intent_open_server : [capa1] */ - offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, - LUSTRE_DLM_REPLY_REC_OFF+3); - offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, - LUSTRE_DLM_REPLY_REC_OFF+4); - } - } - break; - - case LDLM_CONVERT: - if(pb_type==PTL_RPC_MSG_REQUEST) /*[ldlm_request]*/ - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - if(pb_type==PTL_RPC_MSG_REPLY) /*[ldlm_reply]*/ - offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, NULL) ; - break; - - case LDLM_CANCEL: - if(pb_type==PTL_RPC_MSG_REQUEST) /*[ldlm_request]*/ - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - break; - - case LDLM_BL_CALLBACK: - if(pb_type==PTL_RPC_MSG_REQUEST) /*[ldlm_request]*/ - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - break; - - case LDLM_CP_CALLBACK: - if(pb_type==PTL_RPC_MSG_REQUEST){ - /*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO : - * check that */ - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb, - LUSTRE_DLM_REPLY_REC_OFF); - } - /*reply : [nothing] */ - break; - - case LDLM_GL_CALLBACK: - if(pb_type==PTL_RPC_MSG_REQUEST) { /*[ldlm_request] [lvb (for gl_desc)]*/ - offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; - offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb, - LUSTRE_REQ_REC_OFF+1); - } - if(pb_type==PTL_RPC_MSG_REPLY) /* [ost_lvb] */ - offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb, - LUSTRE_REPLY_REC_OFF); - break; - - case LDLM_SET_INFO: - /* ? [key-string][value-data] */ - if(pb_type==PTL_RPC_MSG_REQUEST) { - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ldlm_key, LUSTRE_REQ_REC_OFF); /* key */ - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_ldlm_value, LUSTRE_REQ_REC_OFF+1); /* value */ - } - break; - default : - break; - } - return offset; -} - -static int -lustre_mgs_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch (opc){ - case MGS_CONNECT : - if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ - offset = lustre_dissect_generic_connect(tvb, offset, pinfo, tree); - if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/ - offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, - tree, hf_lustre_obd_connect_data, 1); - break; - case MGS_DISCONNECT : - /*[nothing]*/ - break; - case MGS_EXCEPTION : /* node died, etc. */ - /*[nothing]*/ - break; - case MGS_TARGET_REG: - /*[mgs_target_info], mgs_handler.c mgs_handle_target_reg() called whenever a target startup*/ - offset=lustre_dissect_struct_mgs_target_info(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info); - break; - case MGS_TARGET_DEL: - /*[nothing]*/ - break; - case MGS_SET_INFO: - /*[mgs_send_param], mgs_set_info_rpc()*/ - offset=lustre_dissect_struct_mgs_send_param(tvb,offset,pinfo,tree,hf_lustre_mgs_send_param); - break; - case MGS_CONFIG_READ: - if (pb_type==PTL_RPC_MSG_REQUEST) /* [config_body] */ - offset=lustre_dissect_struct_mgs_config_body(tvb,offset,pinfo,tree,hf_lustre_mgs_config_body); - if (pb_type==PTL_RPC_MSG_REPLY) /* [config_res] */ - offset=lustre_dissect_struct_mgs_config_res(tvb,offset,pinfo,tree,hf_lustre_mgs_config_res); - break; - default: - break; - }; - return offset; -} - -static int -lustre_odb_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch(opc){ - case OBD_PING : - /*[nothing]*/ - break; - case OBD_LOG_CANCEL: - /*[nothing]*/ - break; - case OBD_QC_CALLBACK: - if(pb_type==PTL_RPC_MSG_REQUEST) - offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl); - /*if (request) : [nothing]*/ - break; - default: - break; - }; - return offset; -} - -static int -lustre_llog_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch(opc){ - case LLOG_ORIGIN_HANDLE_CREATE : /* in handler.c */ - /*[llogd_body] (reply and request)*/ - offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); - if(pb_type==PTL_RPC_MSG_REQUEST) /* [filename] */ - if (LUSTRE_BUFCOUNT>2) - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_llogd_name, - LUSTRE_REQ_REC_OFF+1); - break; - case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */ - /* [llogd_body][eadata] - * the size of second buf is LLOG_CHKUNK_SIZE, so it's maybee only bulk data */ - offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); - if(pb_type==PTL_RPC_MSG_REPLY) - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, - LUSTRE_REPLY_REC_OFF+1); - break; - case LLOG_ORIGIN_HANDLE_READ_HEADER:/* in handler.c */ - if(pb_type==PTL_RPC_MSG_REQUEST){ - /* [llogd_body][llog_log_hdr] */ - offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); - if(LUSTRE_BUFCOUNT>2) - offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, - hf_lustre_llogd_log_hdr); - } - if(pb_type==PTL_RPC_MSG_REPLY) /* [llog_log_hdr] */ - offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, - hf_lustre_llogd_log_hdr); - break; - case LLOG_ORIGIN_HANDLE_WRITE_REC : /* I think this is obsolete */ - /*[nothing]*/ - break; - case LLOG_ORIGIN_HANDLE_CLOSE :/* handler.c */ - /*[nothing]*/ - break; - case LLOG_ORIGIN_CONNECT : /* ost_handler.c */ - /*[nothing]*/ - case LLOG_CATINFO : /*in handler.c */ - if(pb_type==PTL_RPC_MSG_REQUEST){ - /* [keyword][if keyword=config [char*] else [nothing]] */ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword, - LUSTRE_REQ_REC_OFF); - /* if (keyword == "config") */ - if (strcmp( -#ifdef WIRESHARK_COMPAT - (const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF, - tvb_get_letohl(tvb, - LUSTRE_BUFLEN_OFF + 4 * - LUSTRE_REQ_REC_OFF)), -#else - (const char *)tvb_get_string_enc(wmem_packet_scope(), tvb, - LUSTRE_REQ_REC_OFF, - tvb_get_letohl(tvb, - LUSTRE_BUFLEN_OFF + 4 * - LUSTRE_REQ_REC_OFF), - ENC_ASCII), -#endif - "config") == 0) - offset = lustre_dissect_element_string(tvb, offset, pinfo, tree, - hf_lustre_llogd_client, - LUSTRE_REQ_REC_OFF+1); - } - if(pb_type==PTL_RPC_MSG_REPLY) - /*[buf] sizeof = llog_chunk_size*/ - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, - LUSTRE_REPLY_REC_OFF + 1 ); - /* TODO TODO : check if it's note a catid */ - break; - case LLOG_ORIGIN_HANDLE_PREV_BLOCK : /* in handler.c */ - /* [llogd_body] in both case */ - offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); - if(pb_type==PTL_RPC_MSG_REPLY) - /*[buf] size of llog_chunk_size*/ - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, - LUSTRE_REPLY_REC_OFF + 1 ); - break; - case LLOG_ORIGIN_HANDLE_DESTROY : /* in handler.c */ - /*[llogd_body] in both case*/ - offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); - break; - default: - break; - }; - - return offset; -} - -static int -lustre_seq_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch (opc) { - case SEQ_QUERY: - if (pb_type == PTL_RPC_MSG_REQUEST) - offset = lustre_dissect_struct_seq(tvb, offset, pinfo, - tree, hf_lustre_seq_opc); - offset = lustre_dissect_struct_seq_range(tvb, offset, - pinfo, tree); - break; - - default: - g_print("error: SEQ Opcode: %d unknown\n", opc); - col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); - break; - }; - - return offset; -} - -static int -lustre_fld_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - switch (opc) { - case FLD_QUERY: - if (pb_type == PTL_RPC_MSG_REQUEST) - offset = lustre_dissect_struct_seq(tvb, offset, pinfo, - tree, hf_lustre_fld_opc); - offset = lustre_dissect_struct_seq_range(tvb, offset, - pinfo, tree); - break; - - default: - g_print("error: FLD Opcode: %d unknown\n", opc); - col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); - break; - }; - - return offset; -} - - -/* process lustre opcode : - check if opcode is in range_opcode, and call the corresponding opcode process function */ -static int -lustre_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) -{ - /* No more buffers to process */ - if (LUSTRE_BUFCOUNT == 1) - return offset; - - if (opc <= OST_LAST_OPC) /* OST opcodes */ - offset=lustre_ost_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if ( (opc >= MDS_FIRST_OPC) && (opc < MDS_LAST_OPC )) /* MDS opcodes */ - offset=lustre_mds_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if ( (opc >= LDLM_FIRST_OPC) && (opc < LDLM_LAST_OPC) ) /*LDLM Opcodes*/ - offset=lustre_ldlm_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if( (opc>= MGS_FIRST_OPC) && (opc <= MGS_LAST_OPC)) /* MGS Opcodes */ - offset=lustre_mgs_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if( (opc>= OBD_FIRST_OPC) && (opc<=OBD_LAST_OPC)) /* ODB Opcodes */ - offset=lustre_odb_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if( (opc>=LLOG_FIRST_OPC) && (opc<=LLOG_LAST_OPC)) /* LLOG Opcodes */ - offset=lustre_llog_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ; - - if( (opc >= SEQ_FIRST_OPC) && (opc <= SEQ_LAST_OPC) ) /* SEQ Opcodes */ - offset=lustre_seq_opcode_process(tvb, offset, pinfo, tree, opc, pb_type); - - if( (opc >= FLD_FIRST_OPC) && (opc <= FLD_LAST_OPC) ) /* FLD Opcodes */ - offset=lustre_fld_opcode_process(tvb, offset, pinfo, tree, opc, pb_type); - - return offset; -} - -/* ----------------------------------------------- */ -/* add an extra padding to be aligned to 8bytes */ -static int -add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) -{ - guint32 padding_len; - - padding_len = (8- offset%8)%8; - if(padding_len){ - proto_tree_add_item(tree, hf_lustre_extra_padding , tvb, offset, padding_len, TRUE); - offset+=padding_len; - } - return offset; -} -/* ----------------------------------------------- */ - -static int -ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, - proto_tree * tree _U_, guint64 intent_opc _U_) -{ - /* all corresponding code is in mdc_locks.c in function mdc_enqueue() */ - /* if 0x0003 we have CREAT + OPEN - */ - if (intent_opc & IT_OPEN) { - /* mdc_intent_open_pack(), d'où [opcode][mdc_rec_create][capa1][capa2][name][eada] */ - offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, - hf_lustre_mdt_rec_create); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, - hf_lustre_reint_name, - LUSTRE_DLM_INTENT_REC_OFF+3); - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, - hf_lustre_mds_xattr_eadata, - LUSTRE_DLM_INTENT_REC_OFF+4); - } - - if (intent_opc & IT_UNLINK){ - /* mdc_intent_unlink_pack(), d'où [opcode][mdt_rec_unlink][capa][name] */ - offset=lustre_dissect_struct_mdt_rec_unlink(tvb, offset, pinfo, tree, - hf_lustre_mdt_rec_unlink); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, - LUSTRE_DLM_INTENT_REC_OFF+1); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, - hf_lustre_reint_name, - LUSTRE_DLM_INTENT_REC_OFF+2); - } - if (intent_opc & IT_GETATTR){ - /* mdc_intent_lookup_pack, d'où [mdt_body][capa][name] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, - LUSTRE_DLM_INTENT_REC_OFF+1); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, - LUSTRE_DLM_INTENT_REC_OFF+2); - } - - if (intent_opc & IT_LOOKUP){ - /* mdc_intent_lookup_pack, d'où [mdt_body][capa][name] */ - offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, - LUSTRE_DLM_INTENT_REC_OFF+1); - offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, - LUSTRE_DLM_INTENT_REC_OFF+2); - } - if (intent_opc & IT_LAYOUT) { - /* [layout_intent][eadata] */ - offset = lustre_dissect_struct_layout_intent(tvb, offset, - pinfo, tree, hf_lustre_layout_intent, - LUSTRE_DLM_INTENT_REC_OFF); - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, - hf_lustre_mds_xattr_eadata, - LUSTRE_DLM_INTENT_REC_OFF+1); - } - if (intent_opc & IT_QUOTA_DQACQ) { - offset = lustre_dissect_struct_quota_body(tvb, offset, - pinfo, tree, hf_lustre_qb, - LUSTRE_DLM_INTENT_REC_OFF); - } - if (intent_opc & IT_GETXATTR) { - /* [mdt_body][capa] */ - offset = lustre_dissect_struct_mdt_body(tvb, offset, pinfo, - tree, hf_lustre_mdt_body); - offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, - hf_lustre_capa, - LUSTRE_DLM_INTENT_REC_OFF+1); - } - return offset; -} - - - -/* ----------------------------------------------- */ -/* function to test if the packet is entirely dissected add BUG in PROTOCOL COL when it's not*/ -static void -sanity_check(tvbuff_t *tvb, packet_info *pinfo, guint32 val_offset _U_) -{ - guint32 somme_buflen = 0 ; - guint32 i ; - - /* magic_number = tvb_get_letohl(tvb, 8); */ - - for (i=0;icinfo, COL_PROTOCOL, "BUG"); -} - - -/* IDL: struct lustre_msg_v1 { */ -/* IDL: struct lustre_handle { */ -/* IDL: } lm_handle; */ -/* IDL: uint32 lm_magic; */ -/* IDL: uint32 lm_type; */ -/* IDL: uint32 lm_version; */ -/* IDL: uint32 lm_opc; */ -/* IDL: uint64 lm_last_xid; */ -/* IDL: uint64 lm_last_committed; */ -/* IDL: uint64 lm_transno; */ -/* IDL: uint32 lm_status; */ -/* IDL: uint32 lm_flags; */ -/* IDL: uint32 lm_conn_cnt; */ -/* IDL: uint32 lm_bufcount; */ -/* IDL: uint32 lm_buflens[0]; */ -/* IDL: } */ - - -static int -lustre_dissect_element_msg_v1_lm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - /*TODO : replace with a v1 handle*/ - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_lustre_msg_v1_lm_handle); - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_magic); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_type); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_version); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_opc); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_xid); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_committed); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_transno); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_status); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_flags); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_conn_cnt); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_bufcount); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_buflens); - - return offset; -} - -static int -lustre_dissect_element_msg_v1_lm_buflens(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - guint32 bufcount ; - gboolean extra_padding ; - guint i; - - bufcount=tvb_get_letohl(tvb, offset-4); /* TODO : replace with a macro */ - - if (bufcount & 1) /* we add an extra padding if bufcount is odd */ - extra_padding = 1 ; - else - extra_padding = 0 ; - - for (i=0;icinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown")); - display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown")); - - offset=lustre_opcode_process(tvb, offset, pinfo, tree, opc, pb_type); - - return offset; -} - -/* IDL: struct ptlrpc_body { */ -/* IDL: struct lustre_handle { */ -/* IDL: } pb_handle; */ -/* IDL: uint32 pb_type; */ -/* IDL: uint32 pb_version; */ -/* IDL: uint32 pb_opc; */ -/* IDL: uint32 pb_status; */ -/* IDL: uint64 pb_last_xid; */ -/* IDL: uint64 pb_last_seen; */ -/* IDL: uint64 pb_last_committed; */ -/* IDL: uint64 pb_transno; */ -/* IDL: uint32 pb_flags; */ -/* IDL: uint32 pb_op_flags; */ -/* IDL: uint32 pb_conn_cnt; */ -/* IDL: uint32 pb_timeout; */ -/* IDL: uint32 pb_service_time; */ -/* IDL: uint32 pb_limit; */ -/* IDL: uint64 pb_slv; */ -/* IDL: } */ - -static int -lustre_dissect_element_ptlrpc_body_pb_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ptlrpc_body_pb_handle); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_type); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_version); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_opc); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_status); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_xid); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_last_seen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_seen); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_committed); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_transno); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_flags); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_op_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_op_flags); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_conn_cnt); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_timeout); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_service_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_service_time); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_limit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_limit); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_slv(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_slv); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_pre_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_pre_version); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_padding); - - return offset; -} - -static int -lustre_dissect_element_ptlrpc_body_pb_jobid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) -{ - - /* the lenght of the string is 32 bytes max, with \0 inside */ - proto_tree_add_item(parent_tree, hf_lustre_ptlrpc_body_pb_jobid, tvb, offset, 32, TRUE); - - offset+=32; - return offset; -} - - -static int -lustre_dissect_struct_ptlrpc_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_len _U_ ) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset, i; - guint32 opc, pb_type, pb_version; - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ptlrpc_body); - } - - offset=lustre_dissect_element_ptlrpc_body_pb_handle(tvb, offset, pinfo, tree); - - pb_type = tvb_get_letohl(tvb, offset); - //g_print("msg_v2_lm_type_offset = %d \n" , offset) ; - - offset=lustre_dissect_element_ptlrpc_body_pb_type(tvb, offset, pinfo, tree); - - pb_version = tvb_get_letohl(tvb, offset) & ~LUSTRE_VERSION_MASK; - //g_print("msg_v2_version_offset %d : version == %d \n", offset, pb_version); - offset=lustre_dissect_element_ptlrpc_body_pb_version(tvb, offset, pinfo, tree); - - // g_print("msg_v2_opcode_offset %d \n", offset); - opc = tvb_get_letohl(tvb, offset); - offset=lustre_dissect_element_ptlrpc_body_pb_opc(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_status(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_last_xid(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_last_seen(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_last_committed(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_transno(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_op_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_timeout(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_service_time(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_limit(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_ptlrpc_body_pb_slv(tvb, offset, pinfo, tree); - - /* pb_pre_versions */ - for(i = 0; i < 4; ++i) { - offset=lustre_dissect_element_ptlrpc_body_pb_pre_version(tvb, offset, pinfo, tree); - } - - for(i = 0; i < 4; ++i) { - offset=lustre_dissect_element_ptlrpc_body_pb_padding(tvb, offset, pinfo, tree); - } - - if (pb_version == LUSTRE_PTLRPC_MSG_VERSION && offset-old_offset < buf_len) { - offset=lustre_dissect_element_ptlrpc_body_pb_jobid(tvb, offset, pinfo, tree); - } - - if (offset-old_offset != buf_len) { - g_print("ptlbody offset-old:%d buf_len:%d\n", - offset-old_offset, buf_len); - col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); - } - - proto_item_set_len(item, offset-old_offset); - - /* display some nice infos */ - display_info_str(parent_tree, pinfo->cinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown")); - display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown")); - - /* on utilise parent_tree pour bien distinguer les différents buffers (relatifs à bufcount + buflen), il s'agit d'un choix de présentation */ - offset=lustre_opcode_process(tvb, offset, pinfo, parent_tree, opc, pb_type); - - sanity_check(tvb,pinfo,offset-old_offset); - return offset; -} - - - -/* IDL: struct lustre_msg_v2 { */ -/* IDL: uint32 lm_bufcount; */ -/* IDL: uint32 lm_secflvr; */ -/* IDL: uint32 lm_magic; */ -/* IDL: uint32 lm_repsize; */ -/* IDL: uint32 lm_cksum; */ -/* IDL: uint32 lm_flags; */ -/* IDL: uint32 lm_padding_2; */ -/* IDL: uint32 lm_padding_3; */ -/* IDL: uint32 lm_buflens[0]; */ -/* IDL: } */ - -static int -lustre_dissect_element_msg_v2_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - proto_tree_add_item(tree, hf_lustre_lustre_msg_v2_lm_bufcount, tvb, offset, 4, TRUE); - offset += 4 ; - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_secflvr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_secflvr); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_magic); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_repsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_repsize); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_cksum); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_flags); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_2); - - return offset; -} - -static int -lustre_dissect_element_msg_v2_lm_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_3); - - return offset; -} - - - -static int -lustre_dissect_element_msg_v2_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_buflens); - - return offset; -} - -int -lustre_dissect_struct_msg_v2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - guint32 bufcount ; - int old_offset; - guint32 i ; - guint32 buf_len_offset; - guint32 current_buf_len ; - gboolean extra_padding ; - - - old_offset=offset; - /* to get a light display */ - tree=parent_tree; - // if (parent_tree) { - // item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - // tree = proto_item_add_subtree(item, ett_lustre_lustre_msg_v2); - // } - - bufcount = tvb_get_letohl(tvb,offset); - offset=lustre_dissect_element_msg_v2_lm_bufcount(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_secflvr(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_magic(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_repsize(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_cksum(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_flags(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_padding_2(tvb, offset, pinfo, tree); - - offset=lustre_dissect_element_msg_v2_lm_padding_3(tvb, offset, pinfo, tree); - - - - if (bufcount & 1) /* we add an extra padding if bufcount is odd */ - extra_padding = 1 ; - else - extra_padding = 0 ; - - buf_len_offset=offset ; - for (i=0;icinfo, COL_PROTOCOL, "Lustre"); - - /*light display*/ - col_set_str(pinfo->cinfo, COL_INFO, ""); - /* guint32 magic_number ; */ - /* magic_number = tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET); */ - /* switch (magic_number)*/ - /* {*/ - /* case LUSTRE_MSG_MAGIC_V1:*/ - /* col_append_fstr(pinfo->cinfo, COL_INFO, " V1 ");*/ - /* break;*/ - /* case LUSTRE_MSG_MAGIC_V2:*/ - /* col_append_fstr(pinfo->cinfo, COL_INFO, " V2 ");*/ - /* break;*/ - /* default:*/ - /* break;*/ - /* }*/ - - if (tree) { - - guint32 magic_number ; - guint32 offset = 0; - proto_item *ti = NULL ; - proto_tree * lustre_tree = NULL ; - - ti = proto_tree_add_item(tree,proto_lustre,tvb,0,-1,FALSE); - lustre_tree = proto_item_add_subtree(ti,ett_lustre); - - magic_number = tvb_get_letohl(tvb, 8); - - switch (magic_number){ - case LUSTRE_MSG_MAGIC_V1: - /* put some nice info*/ - proto_item_append_text(lustre_tree, " V1 "); - offset=lustre_dissect_struct_msg_v1(tvb, offset, pinfo, lustre_tree, proto_lustre ) ; - break; - case LUSTRE_MSG_MAGIC_V2: - /* put some nice info*/ - proto_item_append_text(lustre_tree, " V2 "); - offset=lustre_dissect_struct_msg_v2(tvb, offset, pinfo, lustre_tree, proto_lustre ) ; - break; - default: - break; - } - } -} - -void proto_register_dcerpc_lustre(void) -{ - static hf_register_info hf[] = { - { &hf_lustre_mdt_body, - { "mdt body", "lustre.mdt_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - { &hf_lustre_mdt_body_fid1, - { "Fid1", "lustre.mdt_body.fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_fid2, - { "Fid2", "lustre.mdt_body.fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_handle, - { "Handle", "lustre.mdt_body.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_valid, - { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_size, - { "Size", "lustre.mdt_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_mtime, - { "Mtime", "lustre.mdt_body.mtime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_atime, - { "Atime", "lustre.mdt_body.atime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_ctime, - { "Ctime", "lustre.mdt_body.ctime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_body_blocks, - { "Blocks", "lustre.mdt_body.blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_ioepoch, - { "Ioepoch", "lustre.mdt_body.ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_ino, - { "Ino", "lustre.mdt_body.ino", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_fsuid, - { "Fsuid", "lustre.mdt_body.fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_fsgid, - { "Fsgid", "lustre.mdt_body.fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_capability, - { "Capability", "lustre.mdt_body.capability", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_mode, - { "Mode", "lustre.mdt_body.mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_uid, - { "Uid", "lustre.mdt_body.uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_gid, - { "Gid", "lustre.mdt_body.gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_flags, - { "Flags", "lustre.mdt_body.flags", FT_UINT32, BASE_HEX, VALS(lustre_mds_flags_vals) , 0, "", HFILL }}, - { &hf_lustre_mdt_body_rdev, - { "Rdev", "lustre.mdt_body.rdev", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_nlink, - { "Nlink", "lustre.mdt_body.nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_generation, - { "Generation", "lustre.mdt_body.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_suppgid, - { "Suppgid", "lustre.mdt_body.suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_eadatasize, - { "Eadatasize", "lustre.mdt_body.eadatasize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_aclsize, - { "Aclsize", "lustre.mdt_body.aclsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_max_mdsize, - { "Max Mdsize", "lustre.mdt_body.max_mdsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_max_cookiesize, - { "Max Cookiesize", "lustre.mdt_body.max_cookiesize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_uid_h, - { "Uid H", "lustre.mdt_body.uid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_gid_h, - { "Gid H", "lustre.mdt_body.gid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_5, - { "Padding 5", "lustre.mdt_body.padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_6, - { "Padding 6", "lustre.mdt_body.padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_7, - { "Padding 7", "lustre.mdt_body.padding_7", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_8, - { "Padding 8", "lustre.mdt_body.padding_8", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_9, - { "Padding 9", "lustre.mdt_body.padding_9", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_body_padding_10, - { "Padding 10", "lustre.mdt_body.padding_10", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_setattr, - { "mdt rec setattr", "lustre.mdt_rec_setattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_setattr_sa_opcode, - { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_cap, - { "Sa Cap", "lustre.mdt_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_fsuid, - { "Sa Fsuid", "lustre.mdt_rec_setattr.sa_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_fsuid_h, - { "Sa Fsuid H", "lustre.mdt_rec_setattr.sa_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_fsgid, - { "Sa Fsgid", "lustre.mdt_rec_setattr.sa_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_fsgid_h, - { "Sa Fsgid H", "lustre.mdt_rec_setattr.sa_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_suppgid, - { "Sa Suppgid", "lustre.mdt_rec_setattr.sa_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_suppgid_h, - { "Sa Suppgid H", "lustre.mdt_rec_setattr.sa_suppgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_padding_1, - { "Sa Padding 1", "lustre.mdt_rec_setattr.sa_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_padding_1_h, - { "Sa Padding 1 H", "lustre.mdt_rec_setattr.sa_padding_1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_fid, - { "Sa Fid", "lustre.mdt_rec_setattr.sa_fid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setattr_sa_valid, - { "Sa Valid", "lustre.mdt_rec_setattr.sa_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_uid, - { "Sa Uid", "lustre.mdt_rec_setattr.sa_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_gid, - { "Sa Gid", "lustre.mdt_rec_setattr.sa_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_size, - { "Sa Size", "lustre.mdt_rec_setattr.sa_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_blocks, - { "Sa Blocks", "lustre.mdt_rec_setattr.sa_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_mtime, - { "Sa Mtime", "lustre.mdt_rec_setattr.sa_mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setattr_sa_atime, - { "Sa Atime", "lustre.mdt_rec_setattr.sa_atime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setattr_sa_ctime, - { "Sa Ctime", "lustre.mdt_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setattr_sa_attr_flags, - { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_mode, - { "Sa Mode", "lustre.mdt_rec_setattr.sa_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_padding_2, - { "Sa Padding 2", "lustre.mdt_rec_setattr.sa_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_projid, - { "Sa Projid", "lustre.mdt_rec_setattr.sa_projid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_padding_4, - { "Sa Padding 4", "lustre.mdt_rec_setattr.sa_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setattr_sa_padding_5, - { "Sa Padding 5", "lustre.mdt_rec_setattr.sa_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_create, - { "mdt rec create", "lustre.mdt_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_create_cr_opcode, - { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_cap, - { "Cr Cap", "lustre.mdt_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_fsuid, - { "Cr Fsuid", "lustre.mdt_rec_create.cr_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_fsuid_h, - { "Cr Fsuid H", "lustre.mdt_rec_create.cr_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_fsgid, - { "Cr Fsgid", "lustre.mdt_rec_create.cr_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_fsgid_h, - { "Cr Fsgid H", "lustre.mdt_rec_create.cr_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_suppgid1, - { "Cr Suppgid1", "lustre.mdt_rec_create.cr_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_suppgid1_h, - { "Cr Suppgid1 H", "lustre.mdt_rec_create.cr_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_suppgid2, - { "Cr Suppgid2", "lustre.mdt_rec_create.cr_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_suppgid2_h, - { "Cr Suppgid2 H", "lustre.mdt_rec_create.cr_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_fid1, - { "Cr Fid1", "lustre.mdt_rec_create.cr_fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_create_cr_fid2, - { "Cr Fid2", "lustre.mdt_rec_create.cr_fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_create_cr_old_handle, - { "Cr Old Handle", "lustre.mdt_rec_create.cr_old_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_create_cr_time, - { "Cr Time", "lustre.mdt_rec_create.cr_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_create_cr_rdev, - { "Cr Rdev", "lustre.mdt_rec_create.cr_rdev", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_ioepoch, - { "Cr Ioepoch", "lustre.mdt_rec_create.cr_ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_padding_1, - { "Cr Padding 1", "lustre.mdt_rec_create.cr_padding_1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_mode, - { "Cr Mode", "lustre.mdt_rec_create.cr_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_bias, - { "Cr Bias", "lustre.mdt_rec_create.cr_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_flags_l, - { "Cr Flags L", "lustre.mdt_rec_create.cr_flags_l", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_flags_h, - { "Cr Flags H", "lustre.mdt_rec_create.cr_flags_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_umask, - { "Cr Umask", "lustre.mdt_rec_create.cr_umask", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_create_cr_padding_4, - { "Cr Padding 4", "lustre.mdt_rec_create.cr_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_link, - { "mdt rec link", "lustre.mdt_rec_link", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_link_lk_opcode, - { "Lk Opcode", "lustre.mdt_rec_link.lk_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_cap, - { "Lk Cap", "lustre.mdt_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_fsuid, - { "Lk Fsuid", "lustre.mdt_rec_link.lk_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_fsuid_h, - { "Lk Fsuid H", "lustre.mdt_rec_link.lk_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_fsgid, - { "Lk Fsgid", "lustre.mdt_rec_link.lk_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_fsgid_h, - { "Lk Fsgid H", "lustre.mdt_rec_link.lk_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_suppgid1, - { "Lk Suppgid1", "lustre.mdt_rec_link.lk_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_suppgid1_h, - { "Lk Suppgid1 H", "lustre.mdt_rec_link.lk_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_suppgid2, - { "Lk Suppgid2", "lustre.mdt_rec_link.lk_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_suppgid2_h, - { "Lk Suppgid2 H", "lustre.mdt_rec_link.lk_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_fid1, - { "Lk Fid1", "lustre.mdt_rec_link.lk_fid1", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_link_lk_fid2, - { "Lk Fid2", "lustre.mdt_rec_link.lk_fid2", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_link_lk_time, - { "Lk Time", "lustre.mdt_rec_link.lk_time",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_link_lk_padding_1, - { "Lk Padding 1", "lustre.mdt_rec_link.lk_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_2, - { "Lk Padding 2", "lustre.mdt_rec_link.lk_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_3, - { "Lk Padding 3", "lustre.mdt_rec_link.lk_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_4, - { "Lk Padding 4", "lustre.mdt_rec_link.lk_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_bias, - { "Lk Bias", "lustre.mdt_rec_link.lk_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_5, - { "Lk Padding 5", "lustre.mdt_rec_link.lk_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_6, - { "Lk Padding 6", "lustre.mdt_rec_link.lk_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_7, - { "Lk Padding 7", "lustre.mdt_rec_link.lk_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_8, - { "Lk Padding 8", "lustre.mdt_rec_link.lk_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_link_lk_padding_9, - { "Lk Padding 9", "lustre.mdt_rec_link.lk_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_unlink, - { "mdt rec unlink", "lustre.mdt_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_unlink_ul_opcode, - { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_cap, - { "Ul Cap", "lustre.mdt_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_fsuid, - { "Ul Fsuid", "lustre.mdt_rec_unlink.ul_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_fsuid_h, - { "Ul Fsuid H", "lustre.mdt_rec_unlink.ul_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_fsgid, - { "Ul Fsgid", "lustre.mdt_rec_unlink.ul_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_fsgid_h, - { "Ul Fsgid H", "lustre.mdt_rec_unlink.ul_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_suppgid1, - { "Ul Suppgid1", "lustre.mdt_rec_unlink.ul_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_suppgid1_h, - { "Ul Suppgid1 H", "lustre.mdt_rec_unlink.ul_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_suppgid2, - { "Ul Suppgid2", "lustre.mdt_rec_unlink.ul_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_suppgid2_h, - { "Ul Suppgid2 H", "lustre.mdt_rec_unlink.ul_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_fid1, - { "Ul Fid1", "lustre.mdt_rec_unlink.ul_fid1", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_unlink_ul_fid2, - { "Ul Fid2", "lustre.mdt_rec_unlink.ul_fid2", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_unlink_ul_time, - { "Ul Time", "lustre.mdt_rec_unlink.ul_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_unlink_ul_padding_2, - { "Ul Padding 2", "lustre.mdt_rec_unlink.ul_padding_2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_3, - { "Ul Padding 3", "lustre.mdt_rec_unlink.ul_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_4, - { "Ul Padding 4", "lustre.mdt_rec_unlink.ul_padding_4", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_5, - { "Ul Padding 5", "lustre.mdt_rec_unlink.ul_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_bias, - { "Ul Bias", "lustre.mdt_rec_unlink.ul_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_mode, - { "Ul Mode", "lustre.mdt_rec_unlink.ul_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_6, - { "Ul Padding 6", "lustre.mdt_rec_unlink.ul_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_7, - { "Ul Padding 7", "lustre.mdt_rec_unlink.ul_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_8, - { "Ul Padding 8", "lustre.mdt_rec_unlink.ul_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_unlink_ul_padding_9, - { "Ul Padding 9", "lustre.mdt_rec_unlink.ul_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_rename, - { "mdt rec rename", "lustre.mdt_rec_rename", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_rename_rn_opcode, - { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_cap, - { "Rn Cap", "lustre.mdt_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_fsuid, - { "Rn Fsuid", "lustre.mdt_rec_rename.rn_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_fsuid_h, - { "Rn Fsuid H", "lustre.mdt_rec_rename.rn_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_fsgid, - { "Rn Fsgid", "lustre.mdt_rec_rename.rn_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_fsgid_h, - { "Rn Fsgid H", "lustre.mdt_rec_rename.rn_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_suppgid1, - { "Rn Suppgid1", "lustre.mdt_rec_rename.rn_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_suppgid1_h, - { "Rn Suppgid1 H", "lustre.mdt_rec_rename.rn_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_suppgid2, - { "Rn Suppgid2", "lustre.mdt_rec_rename.rn_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_suppgid2_h, - { "Rn Suppgid2 H", "lustre.mdt_rec_rename.rn_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_fid1, - { "Rn Fid1", "lustre.mdt_rec_rename.rn_fid1", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_rename_rn_fid2, - { "Rn Fid2", "lustre.mdt_rec_rename.rn_fid2", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_rename_rn_time, - { "Rn Time", "lustre.mdt_rec_rename.rn_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_rename_rn_padding_1, - { "Rn Padding 1", "lustre.mdt_rec_rename.rn_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_2, - { "Rn Padding 2", "lustre.mdt_rec_rename.rn_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_3, - { "Rn Padding 3", "lustre.mdt_rec_rename.rn_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_4, - { "Rn Padding 4", "lustre.mdt_rec_rename.rn_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_bias, - { "Rn Bias", "lustre.mdt_rec_rename.rn_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_mode, - { "Rn Mode", "lustre.mdt_rec_rename.rn_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_5, - { "Rn Padding 5", "lustre.mdt_rec_rename.rn_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_6, - { "Rn Padding 6", "lustre.mdt_rec_rename.rn_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_7, - { "Rn Padding 7", "lustre.mdt_rec_rename.rn_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_rename_rn_padding_8, - { "Rn Padding 8", "lustre.mdt_rec_rename.rn_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mdt_rec_setxattr, - { "mdt rec setxattr", "lustre.mdt_rec_setxattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_mdt_rec_setxattr_sx_opcode, - { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_cap, - { "Sx Cap", "lustre.mdt_rec_setxattr.sx_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_fsuid, - { "Sx Fsuid", "lustre.mdt_rec_setxattr.sx_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_fsuid_h, - { "Sx Fsuid H", "lustre.mdt_rec_setxattr.sx_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_fsgid, - { "Sx Fsgid", "lustre.mdt_rec_setxattr.sx_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_fsgid_h, - { "Sx Fsgid H", "lustre.mdt_rec_setxattr.sx_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_suppgid1, - { "Sx Suppgid1", "lustre.mdt_rec_setxattr.sx_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_suppgid1_h, - { "Sx Suppgid1 H", "lustre.mdt_rec_setxattr.sx_suppgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_suppgid2, - { "Sx Suppgid2", "lustre.mdt_rec_setxattr.sx_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_suppgid2_h, - { "Sx Suppgid2 H", "lustre.mdt_rec_setxattr.sx_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_fid, - { "Sx Fid", "lustre.mdt_rec_setxattr.sx_fid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setxattr_sx_padding_1, - { "Sx Padding 1", "lustre.mdt_rec_setxattr.sx_padding_1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_2, - { "Sx Padding 2", "lustre.mdt_rec_setxattr.sx_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_3, - { "Sx Padding 3", "lustre.mdt_rec_setxattr.sx_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_valid, - { "Sx Valid", "lustre.mdt_rec_setxattr.sx_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_time, - { "Sx Time", "lustre.mdt_rec_setxattr.sx_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_rec_setxattr_sx_padding_5, - { "Sx Padding 5", "lustre.mdt_rec_setxattr.sx_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_6, - { "Sx Padding 6", "lustre.mdt_rec_setxattr.sx_padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_7, - { "Sx Padding 7", "lustre.mdt_rec_setxattr.sx_padding_7", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_size, - { "Sx Size", "lustre.mdt_rec_setxattr.sx_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_flags, - { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_8, - { "Sx Padding 8", "lustre.mdt_rec_setxattr.sx_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_9, - { "Sx Padding 9", "lustre.mdt_rec_setxattr.sx_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_10, - { "Sx Padding 10", "lustre.mdt_rec_setxattr.sx_padding_10", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mdt_rec_setxattr_sx_padding_11, - { "Sx Padding 11", "lustre.mdt_rec_setxattr.sx_padding_11", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_lustre_handle_cookie, - { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_HEX, - NULL, 0, "", HFILL } }, - { &hf_lustre_ptlrpc_body_pb_last_committed, - { "Pb Last Committed", "lustre.ptlrpc_body.pb_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_version, - { "Pb Version", "lustre.ptlrpc_body.pb_version", FT_UINT32, BASE_DEC, NULL, ~LUSTRE_VERSION_MASK, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_bufcount, - { "Lm Bufcount", "lustre.lustre_msg_v1.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_ioobj_ioo_id, - { "Ioo Id", "lustre.obd_ioobj.ioo_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_slv, - { "Pb Slv", "lustre.ptlrpc_body.pb_slv", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_ptlrpc_body_pb_pre_version, - { "Pb Pre-Version", "lustre.ptlrpc_body.pb_pre_version", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_padding, - { "Pb Padding", "lustre.ptlrpc_body.pb_padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_jobid, - { "Pb JobId", "lustre.ptlrpc_body.pb_jobid", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - - { &hf_lustre_lustre_msg_v1_lm_handle, - { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_NONE, - NULL, 0, "", HFILL } }, - { &hf_lustre_ost_lvb_lvb_atime, - { "Lvb Atime", "lustre.ost_lvb.lvb_atime", - FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_ptlrpc_body_pb_timeout, - { "Pb Timeout", "lustre.ptlrpc_body.pb_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_bavail, - { "Os Bavail", "lustre.obd_statfs.os_bavail", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_bsize, - { "Os Bsize", "lustre.obd_statfs.os_bsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_repsize, - { "Lm Repsize", "lustre.lustre_msg_v2.lm_repsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_last_xid, - { "Lm Last Xid", "lustre.lustre_msg_v1.lm_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ll_fid_f_type, - { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_cksum, - { "Lm Cksum", "lustre.lustre_msg_v2.lm_cksum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_buflens, - { "Lm Buflens", "lustre.lustre_msg_v2.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_status, - { "Lm Status", "lustre.lustre_msg_v1.lm_status", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_type, - { "Lm Type", "lustre.lustre_msg_v1.lm_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }}, - { &hf_lustre_niobuf_remote_len, - { "Len", "lustre.niobuf_remote.len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_op_flags, - { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_ctime, - { "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_ptlrpc_body_pb_type, - { "Pb Type", "lustre.ptlrpc_body.pb_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_nllg, - { "Ocd Nllg", "lustre.obd_connect_data.ocd_nllg", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_nllu, - { "Ocd Nllu", "lustre.obd_connect_data.ocd_nllu", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ll_fid_generation, - { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_mtime, - { "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_ost_lvb_lvb_mtime_ns, - { "Lvb Mtime NS", "lustre.ost_lvb.lvb_mtime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_atime_ns, - { "Lvb Atime NS", "lustre.ost_lvb.lvb_atime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_ctime_ns, - { "Lvb Ctime NS", "lustre.ost_lvb.lvb_ctime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_padding, - { "padding", "lustre.ost_lvb.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_ibits_known, - { "Ocd Ibits Known", "lustre.obd_connect_data.ocd_ibits_known", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_padding_3, - { "Lm Padding 3", "lustre.lustre_msg_v2.lm_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_flags, - { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare4, - { "Os Spare4", "lustre.obd_statfs.os_spare4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_group, - { "Ocd Group", "lustre.obd_connect_data.ocd_group", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_ost_data_v1_l_object_seq, - { "L Object SEQ", "lustre.lov_ost_data_v1.l_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_brw_size, - { "Ocd Brw Size", "lustre.obd_connect_data.ocd_brw_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_limit, - { "Pb Limit", "lustre.ptlrpc_body.pb_limit", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_maxbytes, - { "Os Maxbytes", "lustre.obd_statfs.os_maxbytes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare5, - { "Os Spare5", "lustre.obd_statfs.os_spare5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_flags, - { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_ffree, - { "Os Ffree", "lustre.obd_statfs.os_ffree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_files, - { "Os Files", "lustre.obd_statfs.os_files", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_flags, - { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_last_committed, - { "Lm Last Committed", "lustre.lustre_msg_v1.lm_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare9, - { "Os Spare9", "lustre.obd_statfs.os_spare9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_index, - { "Ocd Index", "lustre.obd_connect_data.ocd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_buflens, - { "Lm Buflens", "lustre.lustre_msg_v1.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare1, - { "Os Spare1", "lustre.obd_statfs.os_spare1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare8, - { "Os Spare8", "lustre.obd_statfs.os_spare8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_conn_cnt, - { "Lm Conn Cnt", "lustre.lustre_msg_v1.lm_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_transno, - { "Pb Transno", "lustre.ptlrpc_body.pb_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_service_time, - { "Pb Service Time", "lustre.ptlrpc_body.pb_service_time",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_conn_cnt, - { "Pb Conn Cnt", "lustre.ptlrpc_body.pb_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_opc, - { "Pb Opc", "lustre.ptlrpc_body.pb_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_connect_flags, - { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", - FT_UINT64 , BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_lov_ost_data_v1_l_object_id, - { "L Object Id", "lustre.lov_ost_data_v1.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_ost_data_v1_l_ost_gen, - { "L Ost Gen", "lustre.lov_ost_data_v1.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_bfree, - { "Os Bfree", "lustre.obd_statfs.os_bfree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_version, - { "Ocd Version", "lustre.obd_connect_data.ocd_version", - FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_statfs_os_namelen, - { "Os Namelen", "lustre.obd_statfs.os_namelen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_blocks, - { "Os Blocks", "lustre.obd_statfs.os_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_secflvr, - { "Lm Secflvr", "lustre.lustre_msg_v2.lm_secflvr", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_transno, - { "Lm Transno", "lustre.lustre_msg_v1.lm_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_opc, - { "Lm Opc", "lustre.lustre_msg_v1.lm_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_grant, - { "Ocd Grant", "lustre.obd_connect_data.ocd_grant", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_ioobj_ioo_bufcnt, - { "Ioo Bufcnt", "lustre.obd_ioobj.ioo_bufcnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_version, - { "Lm Version", "lustre.lustre_msg_v1.lm_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare7, - { "Os Spare7", "lustre.obd_statfs.os_spare7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_fsid, - { "Os Fsid", "lustre.obd_statfs.os_fsid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_cksum_types, - { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", - FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_connect_data_ocd_max_easize, - { "Ocd Max LOV EA Size", "lustre.obd_connect_data.ocd_max_easize", - FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_connect_data_ocd_instance, - { "Ocd Instance", "lustre.obd_connect_data.ocd_instance", - FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_connect_data_ocd_maxbytes, - { "Ocd Max Stripe Size (Bytes)", - "lustre.obd_connect_data.ocd_maxbytes", - FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_connect_data_ocd_maxmodrpcs, - { "Ocd Max Parallel Modify RPCs", - "lustre.obd_connect_data.ocd_maxmodrpcs", - FT_UINT16, BASE_DEC, NULL, 0, "", HFILL } }, - - { &hf_lustre_ost_lvb_lvb_size, - { "Lvb Size", "lustre.ost_lvb.lvb_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_type, - { "Os Type", "lustre.obd_statfs.os_type", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare6, - { "Os Spare6", "lustre.obd_statfs.os_spare6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_state, - { "Os State", "lustre.obd_statfs.os_state", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare3, - { "Os Spare3", "lustre.obd_statfs.os_spare3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_magic, - { "Lm Magic", "lustre.lustre_msg_v2.lm_magic", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_last_seen, - { "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_ioobj_ioo_max_brw, /* TODO : create the - corresponding value_string */ - { "Ioo Max BRW Size", "lustre.obd_ioobj.ioo_max_brw", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_ptlrpc_body_pb_last_xid, - { "Pb Last Xid", "lustre.ptlrpc_body.pb_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_status, - { "Pb Status", "lustre.ptlrpc_body.pb_status", FT_INT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_niobuf_remote_flags, - { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ll_fid_id, - { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_lvb_lvb_blocks, - { "Lvb Blocks", "lustre.ost_lvb.lvb_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_padding_2, - { "Lm Padding 2", "lustre.lustre_msg_v2.lm_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_ost_data_v1_l_ost_idx, - { "L Ost Idx", "lustre.lov_ost_data_v1.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_ioobj_ioo_seq, - { "Ioo Gr", "lustre.obd_ioobj.ioo_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_niobuf_remote_offset, - { "Offset", "lustre.niobuf_remote.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_statfs_os_spare2, - { "Os Spare2", "lustre.obd_statfs.os_spare2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v2_lm_bufcount, - { "Lm Bufcount", "lustre.lustre_msg_v2.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb_handle, - { "Pb Handle", "lustre.ptlrpc_body.pb_handle", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_connect_data_ocd_transno, - { "Ocd Transno", "lustre.obd_connect_data.ocd_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lustre_msg_v1_lm_magic, - { "Lm Magic", "lustre.lustre_msg_v1.lm_magic", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ptlrpc_body_pb, - { "ptl rpc", "lustre.ptlrpc_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - - { &hf_lustre_obd_uuid, - { "obd uid name", "lustre.obd_uid", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_obd_connect_data , - { "obd connect data", "lustre.obd_connect_data", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - - { &hf_lustre_ldlm_intent, - { "ldlm intent", "lustre.ldlm_intent", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - - { &hf_lustre_obd_ioobj, - { "lustre obd ioobj", "lustre.obd_ioobj", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_niobuf_remote, - { "lustre niobuf remote", "lustre.niobuf_remote", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_ost_key, - { "lustre ost key", "lustre.ost_key", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_ost_val, - { "lustre ost val", "lustre.ost_val", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llogd_chunk, - { "lustre llogd chunk", "lustre.llogd_chunk", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llogd_keyword, - { "lustre llogd keyword", "lustre.llogd_keyword", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llogd_client, - { "lustre llogd client", "lustre.llogd_client", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llogd_name, - { "lustre llogd name", "lustre.llogd_name", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llogd_log_hdr, - { "lustre llogd log hdr", "lustre.llogd_log_hdr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_llog_logid_rec, - { "lustre llog logid rec", "lustre.llog_logid_rec", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - - { &hf_lustre_llogd_body, - { "lustre llogd body", "lustre.llogd_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_nio, - { "lustre nio", "lustre.nio", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}}, - { &hf_lustre_ost_body, - { "ost body", "lustre.ost_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - { &hf_lustre_obd_statfs, - { "obd statfs", "lustre.obd_statfs", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - { &hf_lustre_obd_quotactl, - { "obd quotactl", "lustre.obd_quotacl", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - { &hf_lustre_quota_adjust_qunit, - { "obd quota adjust qunit", "lustre.quota_adjust_qunit", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, - { &hf_lustre_llog_unlink_rec_lur_tail, - { "Lur Tail", "lustre.llog_unlink_rec.lur_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_size_change_rec_lsc_io_epoch, - { "Lsc Io Epoch", "lustre.llog_size_change_rec.lsc_io_epoch", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_flags, - { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_reply_lock_policy_res1, - { "Lock Policy Res1", "lustre.ldlm_reply.lock_policy_res1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_body_lgd_len, - { "Lgd Len", "lustre.llogd_body.lgd_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old_qd_id, - { "Qd Id", "lustre.qunit_data_old.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_padding1, - { "Padding1", "lustre.llog_logid_rec.padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_quota_adjust_qunit_padding1, - { "Padding1", "lustre.quota_adjust_qunit.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_size_change_rec_lsc_fid, - { "Lsc Fid", "lustre.llog_size_change_rec.lsc_fid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_rec_hdr_padding, - { "Padding", "lustre.llog_rec_hdr.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_nlink, - { "O Nlink", "lustre.obdo.o_nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_extent_gid, - { "Gid", "lustre.ldlm_extent.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_uid, - { "O Uid", "lustre.obdo.o_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mds_xattr_name, - { "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_cookie, - { "llog cookie", "lustre.llog_cookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mds_reint_opcode, - { "mds reint opcode", "lustre.mds_reint_opcode", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mds_xattr_eadata, - { "mds xattr eadata", "lustre.mds_xattr_eadata", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mds_xattr_eadata_str, - { "mds xattr eadata", "lustre.mds_xattr_eadata.str", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_reint_name, - { "mds reint name", "lustre.mds_reint_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_reint_old_name, - { "mds reint old name", "lustre.mds_reint_old_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_reint_new_name, - { "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - - { &hf_lustre_mds_md_data, - { "mds md data", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1, - { "lov mds md", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_magic, - { "Lmm Magic", "lustre.lov_mds_md.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_stripe_size, - { "Lmm Stripe Size", "lustre.lov_mds_md.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_object_id, - { "Lmm Object Id", "lustre.lov_mds_md.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_oi, - { "Lmm Object Id", "lustre.lov_mds_md.lmm_oi", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_object_seq, - { "Lmm Object SEQ", "lustre.lov_mds_md.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_stripe_count, - { "Lmm Stripe Count", "lustre.lov_mds_md.lmm_stripe_count", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_pattern, - { "Lmm Pattern", "lustre.lov_mds_md.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_layout_gen, - { "Lmm Layout Generation", "lustre.lov_mds_md.lmm_layout_gen", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_lmm_pool_name, - { "Lmm Poolname", "lustre.lov_mds_md.lmm_poolname", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_lov_mds_md_lmm_objects, - { "Lmm Objects", "lustre.lov_mds_md.lmm_objects", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - { &hf_lustre_ost_id_oi_id, - { "OI Object Id", "lustre.ost_id.oi.oi_id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_id_oi_seq, - { "OI Object Seq", "lustre.ost_id.oi.oi_seq", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - - { &hf_lustre_obdo_o_valid, - { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_reply_lock_flags, - { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - -#define WSHARK_INIT_DATA -#include "lustre_dlm_flags_wshark.c" -#undef WSHARK_INIT_DATA - - { &hf_lustre_obdo_o_misc, - { "O Misc", "lustre.obdo.o_misc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_request_lock_handle, - { "Lock Handle", "lustre.ldlm_request.lock_handle", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_logid_lgl_oid, - { "Lgl Oid", "lustre.llog_logid.lgl_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_inodebits_bits, - { "Bits", "lustre.ldlm_inodebits.bits", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_count, - { "Llh Count", "lustre.llog_log_hdr.llh_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_gen_rec_lgr_tail, - { "Lgr Tail", "lustre.llog_gen_rec.lgr_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_catid_lci_padding3, - { "Lci Padding3", "lustre.llog_catid.lci_padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_qd_qunit, - { "Qd Qunit", "lustre.qunit_data.qd_qunit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_padding, - { "Padding", "lustre.llog_setattr_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_cookie_lgc_lgl, - { "Lgc Lgl", "lustre.llog_cookie.lgc_lgl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_quotactl_qc_dqinfo, - { "Qc Dqinfo", "lustre.obd_quotactl.qc_dqinfo", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_log_hdr_llh_bitmap, - { "Llh Bitmap", "lustre.llog_log_hdr.llh_bitmap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_quotactl_qc_stat, - { "Qc Stat", "lustre.obd_quotactl.qc_stat", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old2_qd_id, - { "Qd Id", "lustre.qunit_data_old2.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_padding2, - { "Padding2", "lustre.llog_logid_rec.padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_padding5, - { "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - /*-------------------------------------------------------------------------------------------------------------*/ - /*all this flags are uint64, but I don't find the way to use something like TFS() with a Uint64*/ - /*like TFS() with a Uint64 */ - { &hf_lustre_ldlm_intent_opc_open, - { "open", "lustre.ldlm_intent.opc_open", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_OPEN, "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_creat, - { "creat", "lustre.ldlm_intent.opc_creat", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_CREAT , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_readdir, - { "readdir", "lustre.ldlm_intent.opc_readdir", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_READDIR , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_getattr, - { "getattr", "lustre.ldlm_intent.opc_getattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETATTR, "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_lookup, - { "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LOOKUP , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_unlink, - { "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_UNLINK , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_trunc, - { "trunc", "lustre.ldlm_intent.opc_trunc", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_TRUNC , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_getxattr, - { "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETXATTR , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_exec, - { "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_EXEC , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_pin, - { "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_PIN , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_layout, - { "layout", "lustre.ldlm_intent.opc_layout", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LAYOUT , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_q_dqacq, - { "quota dqacq", "lustre.ldlm_intent.opc_quota_dqacq", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_DQACQ , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_q_conn, - { "quota conn", "lustre.ldlm_intent.opc_quota_conn", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_CONN , "", HFILL } }, - { &hf_lustre_ldlm_intent_opc_setxattr, - { "setxattr", "lustre.ldlm_intent.opc_setxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_SETXATTR , "", HFILL } }, - /*-------------------------------------------------------------------*/ - { &hf_lustre_ldlm_intent_opc, - { "intent opcode", "lustre.ldlm_intent.opc", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, - { &hf_lustre_llog_rec_hdr_lrh_type, - { "Lrh Type", "lustre.llog_rec_hdr.lrh_type", FT_UINT32, BASE_HEX, VALS(lustre_llog_op_type), 0, "", HFILL }}, - { &hf_lustre_llog_rec_hdr_lrh_len, - { "Lrh Len", "lustre.llog_rec_hdr.lrh_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_lsr_uid, - { "Lsr Uid", "lustre.llog_setattr_rec.lsr_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_padding_1, - { "Ld Padding 1", "lustre.lov_desc.ld_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_padding_4, - { "O Padding 4", "lustre.obdo.o_padding_4", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_padding, - { "Padding", "lustre.mgs_target_info.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_quotactl_qc_dqblk, - { "Qc Dqblk", "lustre.obd_quotactl.qc_dqblk", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llogd_conn_body_lgdc_gen, - { "Lgdc Gen", "lustre.llogd_conn_body.lgdc_gen", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_log_hdr_llh_tail, - { "Llh Tail", "lustre.llog_log_hdr.llh_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_size, - { "O Size", "lustre.obdo.o_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_extent_start, - { "Start", "lustre.ldlm_extent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_size_change_rec_lsc_hdr, - { "Lsc Hdr", "lustre.llog_size_change_rec.lsc_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_logid_lgl_oseq, - { "Lgl SEQ", "lustre.llog_logid.lgl_oseq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_cookie_lgc_padding, - { "Lgc Padding", "lustre.llog_cookie.lgc_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old_qd_type, - { "Qd Type", "lustre.qunit_data_old.qd_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_flock_blocking_export, - { "Blocking Export", "lustre.ldlm_flock.blocking_export", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_pattern, - { "Ld Pattern", "lustre.lov_desc.ld_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_qd_id, - { "Qd Id", "lustre.qunit_data.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_fsname, - { "Mti Fsname", "lustre.mgs_target_info.mti_fsname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_request_lock_flags, - { "Lock Flags", "lustre.ldlm_request.lock_flags", FT_UINT32, BASE_HEX, NULL, 0 , "", HFILL }}, - { &hf_lustre_obdo_o_mode, - { "O Mode", "lustre.obdo.o_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_svname, - { "Mti Svname", "lustre.mgs_target_info.mti_svname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_body_lgd_logid, - { "Lgd Logid", "lustre.llogd_body.lgd_logid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_log_hdr_llh_size, - { "Llh Size", "lustre.llog_log_hdr.llh_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_handle, - { "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_atime, - { "O Atime", "lustre.obdo.o_atime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_quota_adjust_qunit_qaq_id, - { "Qaq Id", "lustre.quota_adjust_qunit.qaq_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_lock_desc_l_policy_data, - { "L Policy Data", "lustre.ldlm_lock_desc.l_policy_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_quotactl_qc_cmd, - { "Qc Cmd", "lustre.obd_quotactl.qc_cmd", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_padding, - { "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_quota_adjust_qunit_qaq_flags, - { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_lock_desc_l_granted_mode, - { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_vals), 0, "", HFILL }}, - { &hf_lustre_obdo_o_seq, - { "O SEQ", "lustre.obdo.o_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_gid, - { "O Gid", "lustre.obdo.o_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_catid_lci_logid, - { "Lci Logid", "lustre.llog_catid.lci_logid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_rec_tail_lrt_index, - { "Lrt Index", "lustre.llog_rec_tail.lrt_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_default_stripe_count, - { "Ld Default Stripe Count", "lustre.lov_desc.ld_default_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_resource_desc_lr_padding, - { "Lr Padding", "lustre.ldlm_resource_desc.lr_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_vers, - { "Cm Vers", "lustre.cfg_marker.cm_vers", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_unlink_rec_lur_hdr, - { "Lur Hdr", "lustre.llog_unlink_rec.lur_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llogd_body_lgd_index, - { "Lgd Index", "lustre.llogd_body.lgd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_tgtname, - { "Cm Tgtname", "lustre.cfg_marker.cm_tgtname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_lsr_ogen, - { "Lsr Ogen", "lustre.llog_setattr_rec.lsr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_lid_hdr, - { "Lid Hdr", "lustre.llog_logid_rec.lid_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_ioepoch, - { "O IOEpoch", "lustre.obdo.o_ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ost_body_oa, - { "Oa", "lustre.ost_body.oa", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_logid_rec_padding3, - { "Padding3", "lustre.llog_logid_rec.padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_flags, - { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_hdr_llh_flag_zap_when_empty, - {"LLOG_F_ZAP_WHEN_EMPTY", "lustre.lustre.llog_log_hdr.llh_flag_zap", - FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), - LLOG_F_ZAP_WHEN_EMPTY, "", HFILL } }, - { &hf_lustre_llog_hdr_llh_flag_is_cat, - { "LLOG_F_IS_CAT", "lustre.lustre.llog_log_hdr.llh_flag_cat", - FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), - LLOG_F_IS_CAT, "", HFILL } }, - { &hf_lustre_llog_hdr_llh_flag_is_play, - { "LLOG_F_IS_PLAIN", "lustre.lustre.llog_log_hdr.llh_flag_play", - FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), - LLOG_F_IS_PLAIN, "", HFILL } }, - - { &hf_lustre_llog_setattr_rec_lsr_oid, - { "Lsr Oid", "lustre.llog_setattr_rec.lsr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_size_change_rec_padding, - { "Padding", "lustre.llog_size_change_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_config_ver, - { "Mti Config Ver", "lustre.mgs_target_info.mti_config_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_createtime, - { "Cm Createtime", "lustre.cfg_marker.cm_createtime",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old_qd_count, - { "Qd Count", "lustre.qunit_data_old.qd_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_catid_lci_padding1, - { "Lci Padding1", "lustre.llog_catid.lci_padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_active_tgt_count, - { "Ld Active Tgt Count", "lustre.lov_desc.ld_active_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_lcookie, - { "O Lcookie", "lustre.obdo.o_lcookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_gen_rec_lgr_gen, - { "Lgr Gen", "lustre.llog_gen_rec.lgr_gen", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_id, - { "O Id", "lustre.obdo.o_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_uuid, - { "Mti Uuid", "lustre.mgs_target_info.mti_uuid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_rec_hdr_lrh_index, - { "Lrh Index", "lustre.llog_rec_hdr.lrh_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_lsr_hdr, - { "Lsr Hdr", "lustre.llog_setattr_rec.lsr_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mgs_target_info_mti_stripe_index, - { "Mti Stripe Index", "lustre.mgs_target_info.mti_stripe_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_gen_conn_cnt, - { "Conn Cnt", "lustre.llog_gen.conn_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_padding_6, - { "O Padding 6", "lustre.obdo.o_padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_cookie_lgc_index, - { "Lgc Index", "lustre.llog_cookie.lgc_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_uuid, - { "Ld Uuid", "lustre.lov_desc.ld_uuid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_ldlm_reply_lock_desc, - { "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_lov_desc_ld_padding_0, - { "Ld Padding 0", "lustre.lov_desc.ld_padding_0", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_unlink_rec_lur_ogen, - { "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_flags, - { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_padding_3, - { "O Padding 3", "lustre.obdo.o_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_request_lock_desc, - { "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_flags, - { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_params, - { "Mti Params", "lustre.mgs_target_info.mti_params", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_lgl_ogen, - { "Lgl Ogen", "lustre.llog_logid.lgl_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_comment, - { "Cm Comment", "lustre.cfg_marker.cm_comment", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_unlink_rec_lur_oid, - { "Lur Oid", "lustre.llog_unlink_rec.lur_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_qd_count, - { "Qd Count", "lustre.qunit_data.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_mtime, - { "O Mtime", "lustre.obdo.o_mtime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_blksize, - { "O Blksize", "lustre.obdo.o_blksize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_res_id_name, - { "Name", "lustre.ldlm_res_id.name", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_reply_lock_handle, - { "Lock Handle", "lustre.ldlm_reply.lock_handle", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llogd_body_lgd_saved_index, - { "Lgd Saved Index", "lustre.llogd_body.lgd_saved_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old_qd_isblk, - { "Qd Isblk", "lustre.qunit_data_old.qd_isblk", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_blocks, - { "O Blocks", "lustre.obdo.o_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_padding_2, - { "Ld Padding 2", "lustre.lov_desc.ld_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_lid_tail, - { "Lid Tail", "lustre.llog_logid_rec.lid_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_grant, - { "O Grant", "lustre.obdo.o_grant", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_uid_h, - { "O Uid H", "lustre.obdo.o_uid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_gid_h, - { "O Gid H", "lustre.obdo.o_gid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_quota_adjust_qunit_qaq_iunit_sz, - { "Qaq Iunit Sz", "lustre.quota_adjust_qunit.qaq_iunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_unlink_rec_padding, - { "Padding", "lustre.llog_unlink_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_lock_desc_l_req_mode, - { "L Req Mode", "lustre.ldlm_lock_desc.l_req_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_vals), 0, "", HFILL }}, - { &hf_lustre_ldlm_extent_end, - { "End", "lustre.ldlm_extent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_gen_rec_lgr_hdr, - { "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llogd_body_lgd_llh_flags, - { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_cat_idx, - { "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_bitmap_offset, - { "Llh Bitmap Offset", "lustre.llog_log_hdr.llh_bitmap_offset", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_reply_lock_padding, - { "Lock Padding", "lustre.ldlm_reply.lock_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_quotactl_qc_id, - { "Qc Id", "lustre.obd_quotactl.qc_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_padding4, - { "Padding4", "lustre.llog_logid_rec.padding4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_lsr_gid, - { "Lsr Gid", "lustre.llog_setattr_rec.lsr_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_quotactl_qc_type, - { "Qc Type", "lustre.obd_quotactl.qc_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_padding, - { "Padding", "lustre.cfg_marker.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_nids, - { "Mti Nids", "lustre.mgs_target_info.mti_nids", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_stripe_idx, - { "O Stripe Idx", "lustre.obdo.o_stripe_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_conn_body_lgdc_logid, - { "Lgdc Logid", "lustre.llogd_conn_body.lgdc_logid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_ldlm_flock_blocking_pid, - { "Blocking Pid", "lustre.ldlm_flock.blocking_pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_tgt_count, - { "Ld Tgt Count", "lustre.lov_desc.ld_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_body_lgd_cur_offset, - { "Lgd Cur Offset", "lustre.llogd_body.lgd_cur_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old2_qd_count, - { "Qd Count", "lustre.qunit_data_old2.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_opnum, - { "Operation", "lustre.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_old2_qd_flags, - { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_flock_start, - { "Start", "lustre.ldlm_flock.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_quota_adjust_qunit_qaq_bunit_sz, - { "Qaq Bunit Sz", "lustre.quota_adjust_qunit.qaq_bunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_flock_pid, - { "Pid", "lustre.ldlm_flock.pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_default_stripe_size, - { "Ld Default Stripe Size", "lustre.lov_desc.ld_default_stripe_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_tgtuuid, - { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", - FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_cfg_marker_cm_step, - { "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_send_param_mgs_param, - { "Mgs Param", "lustre.mgs_send_param.mgs_param", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_default_stripe_offset, - { "Ld Default Stripe Offset", "lustre.lov_desc.ld_default_stripe_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_resource_desc_lr_name, - { "Lr Name", "lustre.ldlm_resource_desc.lr_name", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_rec_tail_lrt_len, - { "Lrt Len", "lustre.llog_rec_tail.lrt_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_timestamp, - { "Llh Timestamp", "lustre.llog_log_hdr.llh_timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_catid_lci_padding2, - { "Lci Padding2", "lustre.llog_catid.lci_padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_conn_body_lgdc_ctxt_idx, - { "Lgdc Ctxt Idx", "lustre.llogd_conn_body.lgdc_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_cfg_marker_cm_canceltime, - { "Cm Canceltime", "lustre.cfg_marker.cm_canceltime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_mgs_target_info_mti_lustre_ver, - { "Mti Lustre Ver", "lustre.mgs_target_info.mti_lustre_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obdo_o_parent_ver, - { "O Parent VER", "lustre.obdo.o_parent_ver", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_qunit_data_qd_flags, - { "Qd Flags", "lustre.qunit_data.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_logid_rec_lid_id, - { "Lid Id", "lustre.llog_logid_rec.lid_id", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_parent_oid, - { "O Parent OID", "lustre.obdo.o_parent_oid", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_gen_mnt_cnt, - { "Mnt Cnt", "lustre.llog_gen.mnt_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_size_change_rec_lsc_tail, - { "Lsc Tail", "lustre.llog_size_change_rec.lsc_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_padding_5, - { "O Padding 5", "lustre.obdo.o_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_lock_desc_l_resource, - { "L Resource", "lustre.ldlm_lock_desc.l_resource", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_obdo_o_parent_seq, - { "O Parent SEQ", "lustre.obdo.o_parent_seq", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_request_lock_count, - { "Lock Count", "lustre.ldlm_request.lock_count", FT_UINT32, BASE_HEX_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_flock_end, - { "End", "lustre.ldlm_flock.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_target_info_mti_nid_count, - { "Mti Nid Count", "lustre.mgs_target_info.mti_nid_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - /* -------------------------------------------------------------------- */ - { &hf_lustre_mgs_target_info, - { "mgs target info", "lustre.mgs_target_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_send_param, - { "mgs send param", "lustre.mgs_send_param", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - - { &hf_lustre_mgs_config_body, - { "mgs config body", "lustre.mgs_config_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_name, - { "mcb name", "lustre.mgs_config_body.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_offset, - { "mcb offset", "lustre.mgs_config_body.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_type, - { "mcb type", "lustre.mgs_config_body.type", FT_UINT16, BASE_DEC, VALS(lustre_mgs_config_body_types), 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_reserved, - { "mcb reserved", "lustre.mgs_config_body.type", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_bits, - { "mcb bit shift", "lustre.mgs_config_body.type", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_body_units, - { "mcb units", "lustre.mgs_config_body.type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_mgs_config_res, - { "mgs config res", "lustre.mgs_config_res", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_res_offset, - { "mcr offset", "lustre.mgs_config_res.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_mgs_config_res_size, - { "mcr size", "lustre.mgs_config_res.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - - /* -------------------------------------------------------------------- */ - { &hf_lustre_ost_lvb, - { "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - - { &hf_lustre_xattrs, - { "XATTR", "lustre.xattr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_xattrs_name, - { "xattr name", "lustre.xattr.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_xattrs_data, - { "xattr data", "lustre.xattr.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_xattrs_size, - { "xattr size", "lustre.xattr.size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_obdo_o_ctime, - { "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_ldlm_reply_lock_policy_res2, - { "Lock Policy Res2", "lustre.ldlm_reply.lock_policy_res2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llogd_body_lgd_ctxt_idx, - { "Lgd Ctxt Idx", "lustre.llogd_body.lgd_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_desc_ld_qos_maxage, - { "Ld Qos Maxage", "lustre.lov_desc.ld_qos_maxage", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_resource_desc_lr_type, - { "Lr Type", "lustre.ldlm_resource_desc.lr_type", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_type_vals), 0, "", HFILL }}, - { &hf_lustre_llog_setattr_rec_lsr_tail, - { "Lsr Tail", "lustre.llog_setattr_rec.lsr_tail", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_cookie_lgc_subsys, - { "Lgc Subsys", "lustre.llog_cookie.lgc_subsys", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_hdr, - { "Llh Hdr", "lustre.llog_log_hdr.llh_hdr", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_llog_log_hdr_llh_reserved, - { "Llh Reserved", "lustre.llog_log_hdr.llh_reserved", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - - { &hf_lustre_extra_padding, - { "extra padding", "lustre.msg_v2_extra_padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, - { &hf_lustre_ldlm_reply, - { "ldlm reply", "lustre.ldlm_reply", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, - { &hf_lustre_ldlm_request, - { "ldlm request", "lustre.ldlm_request", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, - - /* add for lustre_user.h */ - { &hf_lustre_obd_dqinfo_dqi_valid, - { "Dqi Valid", "lustre.obd_dqinfo.dqi_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_isoftlimit, - { "Dqb Isoftlimit", "lustre.obd_dqblk.dqb_isoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_bhardlimit, - { "Dqb Bhardlimit", "lustre.obd_dqblk.dqb_bhardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_curspace, - { "Dqb Curspace", "lustre.obd_dqblk.dqb_curspace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_itime, - { "Dqb Itime", "lustre.obd_dqblk.dqb_itime", FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_dqblk_dqb_valid, - { "Dqb Valid", "lustre.obd_dqblk.dqb_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqinfo_dqi_igrace, - { "Dqi Igrace", "lustre.obd_dqinfo.dqi_igrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqinfo_dqi_bgrace, - { "Dqi Bgrace", "lustre.obd_dqinfo.dqi_bgrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_padding, - { "Padding", "lustre.obd_dqblk.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_curinodes, - { "Dqb Curinodes", "lustre.obd_dqblk.dqb_curinodes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_bsoftlimit, - { "Dqb Bsoftlimit", "lustre.obd_dqblk.dqb_bsoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqinfo_dqi_flags, - { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_dqblk_dqb_btime, - { "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, - { &hf_lustre_obd_dqblk_dqb_ihardlimit, - { "Dqb Ihardlimit", "lustre.obd_dqblk.dqb_ihardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - - /* seq */ - { &hf_lustre_seq_opc, - { "Seq OPC", "lustre.seq_opc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_seq_range, - { "Seq Range", "lustre.seq_range", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_seq_range_start, - { "Seq Range Start", "lustre.seq_range.start", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_seq_range_end, - { "Seq Range End", "lustre.seq_range.end", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_seq_range_index, - { "Seq Range Index", "lustre.seq_range.index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_seq_range_flags, - { "Seq Range Flags", "lustre.seq_range.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - - /* fld */ - { &hf_lustre_fld_opc, - { "Fld OPC", "lustre.fld_opc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_fld_range, - { "Fld Range", "lustre.fld_range", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_fld_range_start, - { "Fld Range Start", "lustre.fld_range.start", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_fld_range_end, - { "Fld Range End", "lustre.fld_range.end", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_fld_range_index, - { "Fld Range Index", "lustre.fld_range.index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_fld_range_flags, - { "Fld Range Flags", "lustre.fld_range.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - - /* struct mdt_ioepoch */ - { &hf_lustre_mdt_ioepoch, - { "MDT ioepoch", "lustre.mdt_ioepoch", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_ioepoch_handle, - { "Handle", "lustre.mdt_ioepoch.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_ioepoch_ioepoch, - { "ioepoch", "lustre.mdt_ioepoch.ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_ioepoch_flags, - { "flags", "lustre.mdt_ioepoch.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_ioepoch_padding, - { "Padding", "lustre.mdt_ioepoch.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - - /* struct lustre_capa */ - { &hf_lustre_capa, - { "Capability", "lustre.capa", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_fid, - { "Capa fid", "lustre.capa.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_opc, - { "Capa opc", "lustre.capa.opc", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_uid, - { "Capa uid", "lustre.capa.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_gid, - { "Capa gid", "lustre.capa.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_flags, - { "Capa flags", "lustre.capa.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_keyid, - { "Capa keyid", "lustre.capa.keyid", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_timeout, - { "Capa timeout", "lustre.capa.timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_expiry, - { "Capa expiry", "lustre.capa.expiry", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_capa_hmac, - { "Capa hmac", "lustre.capa.hmac", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - /* ACL */ - { &hf_lustre_acl, - { "ACL", "lustre.acl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - /* MDT Getinfo */ - { &hf_lustre_mdt_getinfo_key, - { "MDT getinfo key", "lustre.mdt_getinfo.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_getinfo_vallen, - { "MDT getinfo Val Len", "lustre.mdt_getinfo.vallen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_mdt_getinfo_data, - { "MDT getinfo data", "lustre.mdt_getinfo.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - /* Close Data */ - { &hf_lustre_close_data, - { "MDT Close", "lustre.mdt_close", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_close_fid, - { "Close FID", "lustre.mdt_close.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_close_data_ver, - { "Close data version", "lustre.mdt_close.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_close_reserved, - { "Close Reserved Space", "lustre.mdt_close.reserved", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - /* LDLM SET INFO */ - { &hf_lustre_ldlm_key, - { "LDLM Set Info Key", "lustre.ldlm.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_ldlm_value, - { "LDLM Set Info Value", "lustre.ldlm.value", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - /* HSM Request */ - { &hf_lustre_hsm_request, - { "HSM Request", "lustre.hsm_req", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_req_action, - { "HSM Req Action", "lustre.hsm_req.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, - { &hf_lustre_hsm_req_archive_id, - { "HSM Req Archive ID", "lustre.hsm_req.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_req_flags, - { "HSM Req Flags", "lustre.hsm_req.flags", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_req_itemcount, - { "HSM Req Itemcount", "lustre.hsm_req.itemcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_req_data_len, - { "HSM Req Data Length", "lustre.hsm_req.data_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, - - { &hf_lustre_hsm_user_item, - { "HSM User Item", "lustre.user_item", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_user_item_fid, - { "HSM User Item FID", "lustre.user_item.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_user_item_extent, - { "HSM User Item Extent", "lustre.user_item.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - { &hf_lustre_hsm_extent, - { "HSM Extent", "lustre.hsm_extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_extent_offset, - { "HSM Extent Offset", "lustre.hsm_extent.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_extent_length, - { "HSM Extent Length", "lustre.hsm_extent.len", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - - { &hf_lustre_hsm_progress, - { "HSM Progress", "lustre.hsm_progress", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_fid, - { "HSM Prog FID", "lustre.hsm_progress.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_cookie, - { "HSM Prog Cookie", "lustre.hsm_progress.cookie", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_extent, - { "HSM Prog Extent", "lustre.hsm_progress.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_flags, - { "HSM Prog Flags", "lustre.hsm_progress.flags", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_errval, - { "HSM Prog Error Val", "lustre.hsm_progress.errval", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_prog_data_ver, - { "HSM Prog Data Version", "lustre.hsm_progress.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, - - { &hf_lustre_hsm_state_get, - { "HSM State GET", "lustre.hsm_state_get", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_us_states, - { "States", "lustre.hsm_state_get.states", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_us_archive_id, - { "Archive ID", "lustre.hsm_state_get.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_us_in_prog_state, - { "In Progress State", "lustre.hsm_state_get.in_prog.state", FT_UINT32, BASE_HEX, VALS(lustre_hsm_progress_state_t_vals), 0, "", HFILL } }, - { &hf_lustre_hsm_us_in_prog_action, - { "In Progress Action", "lustre.hsm_state_get.in_prog.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, - { &hf_lustre_hsm_us_in_prog_location, - { "In Progress Extent", "lustre.hsm_state_get.in_prog.location", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_hsm_us_ext_info, - { "Extended Info", "lustre.hsm_state_get.ext_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - { &hf_lustre_qb, - { "Quota Body", "lustre.quota_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_fid, - { "Fid", "lustre.quota_body.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_id, - { "ID", "lustre.quota_body.id", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_flags, - { "Flags", "lustre.quota_body.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_padding, - { "padding", "lustre.quota_body.padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_count, - { "Count", "lustre.quota_body.count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_usage, - { "Usage", "lustre.quota_body.usage", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_slv_ver, - { "Slave Ver", "lustre.quota_body.slv_ver", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_lockh, - { "Per-ID Lock Handle", "lustre.quota_body.lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qb_glb_lockh, - { "Global Lock Handle", "lustre.quota_body.glb_lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - - { &hf_lustre_qid_fid, - { "Fid", "lustre.lquota_id.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_qid_uid, - { "UID", "lustre.lquota_id.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_qid_gid, - { "GID", "lustre.lquota_id.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - - { &hf_lustre_layout_intent, - { "Layout Intent", "lustre.layout_intent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_layout_intent_opc, - { "Op Code", "lustre.layout_intent.opc", FT_UINT32, BASE_HEX, VALS(lustre_layout_intent_opc_values), 0, "", HFILL } }, - { &hf_lustre_layout_intent_flags, - { "Flags", "lustre.layout_intent.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, - { &hf_lustre_layout_intent_start, - { "Start", "lustre.layout_intent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - { &hf_lustre_layout_intent_end, - { "End", "lustre.layout_intent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, - - { &hf_lustre_generic_data, - { "generic data", "lustre.generic_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, - }; - - - static gint *ett[] = { - &ett_lustre, - &ett_lustre_lustre_handle_cookie, - &ett_lustre_lustre_msg_v1, - &ett_lustre_lustre_handle_v1, - &ett_lustre_lustre_msg_v2, - &ett_lustre_ptlrpc_body, - &ett_lustre_lustre_handle_v2, - &ett_lustre_obd_connect_data, - &ett_lustre_lov_mds_md_v1, - &ett_lustre_lov_mds_md_v3, - &ett_lustre_lov_ost_data_v1, - &ett_lustre_obd_statfs, - &ett_lustre_obd_ioobj, - &ett_lustre_niobuf_remote, - &ett_lustre_ost_lvb, - &ett_lustre_ll_fid, - &ett_lustre_obd_quotactl, - &ett_lustre_obd_dqinfo, - &ett_lustre_obd_dqblk, - &ett_lustre_quota_adjust_qunit, - &ett_lustre_mdt_body, - &ett_lustre_mdt_rec_setattr, - &ett_lustre_mdt_rec_create, - &ett_lustre_mdt_rec_link, - &ett_lustre_mdt_rec_unlink, - &ett_lustre_mdt_rec_rename, - &ett_lustre_mdt_rec_setxattr, - &ett_lustre_lov_desc, - &ett_lustre_obd_uuid, - &ett_lustre_ldlm_res_id, - &ett_lustre_ldlm_extent, - &ett_lustre_ldlm_inodebits, - &ett_lustre_ldlm_flock, - &ett_lustre_ldlm_intent_opc, - &ett_lustre_ldlm_resource_desc, - &ett_lustre_ldlm_lock_desc, - &ett_lustre_ldlm_request, - &ett_lustre_lustre_handle, - &ett_lustre_ldlm_reply, - &ett_lustre_mgs_send_param, - &ett_lustre_mgs_target_info, - &ett_lustre_mgs_config_body, - &ett_lustre_mgs_config_res, - &ett_lustre_cfg_marker, - &ett_lustre_llog_catid, - &ett_lustre_llog_logid, - &ett_lustre_lov_mds_md, - &ett_lustre_llog_rec_hdr, - &ett_lustre_llog_rec_tail, - &ett_lustre_llog_logid_rec, - &ett_lustre_llog_unlink_rec, - &ett_lustre_llog_setattr_rec, - &ett_lustre_llog_size_change_rec, - &ett_lustre_llog_gen, - &ett_lustre_llog_gen_rec, - &ett_lustre_llog_log_hdr, - &ett_lustre_llog_cookie, - &ett_lustre_llogd_body, - &ett_lustre_llogd_conn_body, - &ett_lustre_obdo, - &ett_lustre_ost_body, - &ett_lustre_qunit_data, - &ett_lustre_qunit_data_old2, - &ett_lustre_qunit_data_old, - &ett_lustre_ldlm_lock_flags, - &ett_lustre_llog_log_llh_flags, - &ett_lustre_seq_range, - &ett_lustre_fld_range, - &ett_lustre_mdt_ioepoch, - &ett_lustre_capa, - &ett_lustre_close_data, - &ett_lustre_acl, - &ett_lustre_ladvise, - &ett_lustre_hsm_request, - &ett_lustre_hsm_user_item, - &ett_lustre_hsm_extent, - &ett_lustre_hsm_progress, - &ett_lustre_hsm_user_state, - &ett_lustre_quota_body, - &ett_lustre_lquota_id, - &ett_lustre_layout_intent, - &ett_lustre_xattrs, - &ett_lustre_ost_id, - }; - - proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre"); - proto_register_field_array(proto_lustre, hf, array_length (hf)); - proto_register_subtree_array(ett, array_length(ett)); -} - - -void proto_reg_handoff_lustre(void) -{ - dissector_handle_t lustre_handle; - lustre_handle=create_dissector_handle(dissect_lustre, proto_lustre); - /* we use Lustre only if we get ptl_index = One of this code (we have removed the bulk code) */ - /* in LNET we test if the message is a put or not before adding an lnet.ptl_index value */ - dissector_add_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", CONNMGR_REQUEST_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", CONNMGR_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", OSC_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", OST_IO_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", OST_CREATE_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MDS_REQUEST_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", LDLM_CB_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle); - dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MDS_SETATTR_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MDS_READPAGE_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MGC_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MGS_REQUEST_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", MGS_REPLY_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", OST_REQUEST_PORTAL , lustre_handle); - dissector_add_uint("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle); - dissector_add_uint("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle); - dissector_add_uint("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle); - dissector_add_uint("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle); -} diff --git a/lustre/contrib/wireshark/wireshark-compat.h b/lustre/contrib/wireshark/wireshark-compat.h deleted file mode 100644 index 26d51d7..0000000 --- a/lustre/contrib/wireshark/wireshark-compat.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * 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. - * - * Copyright (c) 2013, 2017, Intel Corporation. - */ - -#include - -#define WIRESHARK_VERSION \ - ((VERSION_MAJOR * 1000 * 1000) + \ - (VERSION_MINOR * 1000) + \ - (VERSION_MICRO)) - -/* Wireshark 1.12 brings API change */ -#if WIRESHARK_VERSION < 1012000 -# define WIRESHARK_COMPAT -#endif diff --git a/lustre/contrib/wireshark/wsbuild b/lustre/contrib/wireshark/wsbuild deleted file mode 100755 index 108b464..0000000 --- a/lustre/contrib/wireshark/wsbuild +++ /dev/null @@ -1,243 +0,0 @@ -#!/bin/sh -vx - -# -# Script creates wireshark RPM and an separate RPM with the wireshare lnet/lustre plugins, -# installs and test whether the plugins can be selected as filters. - - -# -# H E L P E R F U N C T I O N S -# - - -error() { - local msg="$1" - - [ -n "$msg" ] && echo -e "\n${0##*/}: $msg" >&1 - -} - -fatal() { -# cleanup - error "$2" - exit $1 -} - - # Wipe away the temporary build / install directory + content -cleanup () { - - echo "Cleanup ${BUILD_DIR}" - cd ${BUILD_DIR} - if [ $? -ne 0 ] ; then - echo "Can't change to ${BUILD_DIR} for clean-up. No clean-up performed." - exit 1 - fi - # remove wireshark source directory and tarball and auxiliary directory to tar plugin sources - rm -rf wireshark-${WS_VERSION} wireshark-${WS_VERSION}.tar.bz2 ${PLUGIN_RPM_NAME}-${WS_VERSION}/ ${PLUGIN_RPM_NAME}-${WS_VERSION}-root/ -} - - -# -# M A I N -# - - # Enable download and compile environment settings -source ${0%/wsbuild}/wsconfig.sh -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't source download and compile evironmnent defined in ${0%/wsbuild}/wsconfig.sh" -fi - - # Check whether prereqisited software is installed -echo "Prerequisite software installations:" -for pkg in $PREREQUISITE_RPMS -do - echo -e "\tPackage '$pkg'\t installed: \c" - rpm -q $pkg > /dev/null 2>&1 - if [ $? -ne 0 ] ; then - echo "NO" - fatal 1 "RPM (software) '$pkg' not installed. Can't compile wireshark." - fi - echo "YES" - -done - - # Change CWD to top level build directory -echo -e "Change to top level builddir: \c" -cd $BUILD_DIR -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't change to directory '${BUILD_DIR}'. Make sure that directory exist." -fi -echo "OK" - - - # Download wireshark -if [ ! -x /usr/bin/curl ] ; then - fatal 1 "curl not installed. Can't download wireshark." -fi -ws_file_name=`basename ${WS_SOURCE_URL}` -# echo "ws_file_name: $ws_file_name" -echo -e "Download wireshare source tarball: \c" - # Download desired wireshark tarball -/usr/bin/curl ${WS_SOURCE_URL} --output ${BUILD_DIR}/${ws_file_name} -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't download wireshark version ${WS_VERSION}. Check configuration." -fi -echo "OK" - - - -echo -e "Inflating wireshark tarball: \c" -${UNTAR} ${ws_file_name} -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't untar file '${ws_file_name}'." -fi -echo "OK" - - - # Build wireshark software -cd ${BUILD_DIR}/wireshark-${WS_VERSION} -if [ $? -ne 0 ] ; then - fatal 1 "Can't change to directory '${BUILD_DIR}/wireshark-${WS_VERSION}'." -fi - - - # Executing configure first to create the make file and - # rpm spec file. Procedure is a bit ood, since `make rpm-package' - # is running configure again. -echo -e "Execute wireshark's configure script: \c" -./configure -if [ $? -ne 0 ] ; then - echo "FAILED" - echo "----------- configure output ---------------------" - cat Configure-$$.log - echo "--------------------------------" - fatal 1 "configure script in ${BUILD_DIR}/wireshark-${WS_VERSION} stops with errors" -fi -echo "OK" - - - # Currently code works distribution using RPM for package management only, i.e.: - # for RHEL/CentOS, SLES (suse) - # - # Code to support distributions using debian software packaging - # have to be added. - - # SLES SP1, 2 specific handling -if [ -r /etc/SuSE-release ] ; then - - # Correct RPM spec file to build correctly: - # Note: changes are based on wireshark version 1.6.8 - # - # -1- Adjust BuildRoot macro. - # Otherwise packaging will fail since SuSe expand BuildRoot to '/tmp/...' - # Files can't be found by packaging program - # - # -2- Correct libdir macro. - # Set library prefix to '/usr/lib64' - # - # -3- Correct file globing used for packaging library files - # Globbing pattern set to '%prefix/lib64/*' in %files section - # to capture the accordingly to change -2- - # - sed -e "s#\(BuildRoot:[[:space:]]*\)/[a-zA-Z0-9_]*\(/wireshark-%{PACKAGE_VERSION}-root\)#\1${BUILD_DIR}packaging/rpm/BUILD\2#" \ - -e 's#\(.* \./configure .*\)#\1 --libdir=/usr/lib64#' \ - -e 's#^\(%prefix/lib\)/\*#\164/\*#' ./packaging/rpm/SPECS/wireshark.spec > new-$$.spec - if [ $? -ne 0 ] ; then - fatal 1 "Can't modify wireshark SPEC file to build under SLES" - fi - # Move modified SPEC into effect - mv new-$$.spec ./packaging/rpm/SPECS/wireshark.spec - if [ $? -ne 0 ] ; then - fatal 1 "Can't copy modified wireshark SPEC file (SLES to ${BUILD_DIR}/packaging/rpm/SPECS/wireshark.spec" - fi - -fi - - -echo -e "Create wireshark RPM: \c" -make rpm-package -if [ $? -ne 0 ] ; then - echo "FAILED" - echo "----------- make rpm-package output ---------------------" - cat make-rpm-$$.log - echo "--------------------------------" - fatal 1 "make rmp-package failed in ${BUILD_DIR}/wireshark-${WS_VERSION}" -fi -# Package successfully built in ${BUILD_DIR}/wireshark-${WS_VERSION}/packaging/rpm/RPMS. -echo "OK" - - -cd ${BUILD_DIR} -if [ $? -ne 0 ] ; then - fatal 1 "Can't change into directory ${BUILD_DIR}" -fi - -PLUGINS_LIBDIR='' - # SLES SP1, 2 installs 64Bit libs and binaries into /usr/lib64 - # -if [ -r /etc/SuSE-release ] ; then - - PLUGINS_LIBDIR='/usr/lib64/wireshark/plugins/%ver/*' -else - PLUGINS_LIBDIR='/usr/lib/wireshark/plugins/%ver/*' -fi - -echo -e "Create Lustre/LNet wireshark plugin RPM: \c" - - # Insert the associated version, name and build directory info - # to the SPEC template. Use '#' - # as delimiters since path info will be substituted -sed -e "s#XXX-TOP-LEVEL-BUILD-DIR-XXX#${BUILD_DIR}#" \ - -e "s#XXX-LUSTRE-PLUGIN-VERSION-XXX#${WS_VERSION}#" \ - -e "s#XXX-LUSTRE-PLUGIN-RPM-NAME-XXX#${PLUGIN_RPM_NAME}#" \ - -e "s#XXX-LUSTRE-PLUGIN-LIBDIR-XXX#${PLUGINS_LIBDIR}#" \ - lustre-wireshark-plugins-template.spec > ${PLUGIN_RPM_NAME}.spec -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't create SPEC file for Lustre/LNet wireshark plugins" -fi - - - # Create tarball containing source files plugins to be used rpmbuid mechanism -if [ -d ${PLUGIN_RPM_NAME}-${WS_VERSION} ] ; then - rm -rf lustre-wireshark-plugins-1.6.8 - if [ $? -ne 0 ] ; then - fatal 1 "Can't cleanup auxiliary directory to create tarball of Lustre/LNet plugins" - fi -fi - # Create auxiliary directory -mkdir ${PLUGIN_RPM_NAME}-${WS_VERSION} -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't create packaging directory to create source tarball for lustre wireshark plugins" -fi -cp README Makefile packet-lnet.c packet-lustre.c ${PLUGIN_RPM_NAME}-${WS_VERSION} -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't copy files for rpm source tar ball into helper directory for Lustre/LNet wireshark plugins" -fi - -$TAR ${PLUGIN_RPM_NAME}-${WS_VERSION}.tar.bz2 ${PLUGIN_RPM_NAME}-${WS_VERSION}/ -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't create rpm source tar ball for Lustre/LNet wireshark plugins" -fi - - # install source tarball into build directory -cp ${PLUGIN_RPM_NAME}-${WS_VERSION}.tar.bz2 ${BUILD_DIR}/wireshark-${WS_VERSION}/packaging/rpm/SOURCES -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't copy source tar ball for Lustre/LNet wireshark plugins build directory" -fi - -rpmbuild -bb --define "_topdir ${BUILD_DIR}/wireshark-${WS_VERSION}/packaging/rpm" ${PLUGIN_RPM_NAME}.spec -if [ $? -ne 0 ] ; then - echo "FAILED" - fatal 1 "Can't create RPM for Lustre/LNet wireshark plugins" -fi - -exit 0 diff --git a/lustre/contrib/wireshark/wsconfig.sh b/lustre/contrib/wireshark/wsconfig.sh deleted file mode 100755 index 2934468..0000000 --- a/lustre/contrib/wireshark/wsconfig.sh +++ /dev/null @@ -1,191 +0,0 @@ -# This file contain all configuration information to build -# `lustre-release/lustre/contrib/wireshark' - -[[ $1 =~ --.* ]] || { - ########################################################################### - # # - # DOWNLOAD CONFIGURATION - # # - ########################################################################### - - ## BEGIN: -can-edit ## - # URL of directory containing all source tar balls - export WS_DOWNLOAD_BASE_URL='http://wiresharkdownloads.riverbed.com' - WS_DOWNLOAD_BASE_URL+='/wireshark/src/all-versions' - - # wireshark verion to be used - export WS_VERSION='1.6.8' - ## END : -can-edit ## - - # URL of the wireshark source code tarball - # Implicit assumption: Wireshark release names follow the nameing - # convention coded in the content of the following varialble - export WS_SOURCE_URL="${WS_DOWNLOAD_BASE_URL}/wireshark-${WS_VERSION}.tar.bz2" - - - ########################################################################### - # # - # BUILD ENVIRONMENT # - # # - ########################################################################### - - ## BEGIN: -can-edit ## - # Space separate list of RPMs needed to be installed for - # compilation of wireshark - - # Package name(s) (can) vary between different distributions - # If distributions 'marked' by same release file, content has to - # parsed and variable PREREQUISITE_RPMS has to be set accoringly to - # package name(s) used for each distro. - if [ -r /etc/redhat-release ] ; then - export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap libpcap-devel perl' - elif [ -r /etc/SuSE-release ] ; then - export PREREQUISITE_RPMS='gtk2 gtk2-devel glib2 libpcap0 libpcap-devel perl' - fi - - # Include and linker flags needed to Lustre/LNet - # Only version indepent information should be added here - # (Back ticked expression will be evaluated by make command) - export PLUGIN_COMPILE_FLAGS='`pkg-config --libs --cflags glib-2.0`' - ## END : -can-edit ## - - # Top-level directory to be used to unpack/compile/install - # wireshark/lustre-git-repo - export BUILD_DIR=`pwd` - - # Directory location of wireshark source code - export WS_HOME="${BUILD_DIR}/wireshark-${WS_VERSION}" - - # (Relative) path of the wireshark contribution directory - export LUSTRE_WS_DIR='lustre-release/lustre/contrib/wireshark' - - # RPM internal name for the Lustre/LNet plugins - export PLUGIN_RPM_NAME='lustre-wireshark-plugins' - - # TAR command + options to be used to create a bzip2 tarball - export TAR='/bin/tar jcpf ' - # TAR command + options to be used to unpack a bzip2 tarball - export UNTAR='/bin/tar jxpf ' - exit 0 -} - -die() { - echo "wsconfig error: $*" - exit 1 -} 1>&2 - -# arg1: complete package name, with version -# arg2: the minimum version -# -chk_ver() { - act_ver=${1#*-devel-} ; shift - act_ver=${act_ver%%-*} - - declare low_ver=$( - printf "${act_ver}\n$1\n" | sort -V | head -n1 ) - test "X$low_ver" = "X$1" || \ - die "wireshark too old: $act_ver is before $1" -} - -set_var() { - case "X$2" in - Xlibdir ) - txt=$(echo $(rpm -q --list $1 | \ - sed -n '\@/libwire@s@/libwire[^/]*$@@p' | \ - sort -u) ) - ;; - * ) - die "unknown variable: $2" - ;; - esac -} - -set_cflags() { - dlst=$(rpm -q --list $pkg | \ - grep '/usr.*/include.*/wireshark$' | \ - while read f ; do test -d $f && echo "$f" ; done) - rm -f config.h - for f in $dlst XX - do test -f $f/config.h && ln -s ${f}/config.h . - txt+=" -I$f" - done - test -f config.h || die "cannot find config header" -} - -parse_wireshark() { - declare pkg=$(rpm -qa | sed -n '/wireshark-devel/{;p;q;}') - declare dlst= - - while test $# -gt 1 - do - txt= - case "$1" in - --libs ) - txt=$(rpm -q --list $pkg | \ - sed -n 's@\.so$@@p' | \ - sed 's@.*/lib@-l@') - ;; - - --cflags ) - set_cflags - ;; - - --modversion ) - txt=${pkg#wireshark-devel-} - txt=${txt%%-*} - ;; - - --atleast-version=* ) - chk_ver ${pkg} ${1#*=} - ;; - - --atleast-version ) - shift - chk_ver ${pkg} ${1} - ;; - - --variable=* ) - set_var ${pkg} ${1#*=} - ;; - - --variable ) - shift - set_var ${pkg} ${1} - ;; - - * ) - die "unknown option: $1" - ;; - esac - test ${#txt} -gt 0 && \ - printf "%s" "$(echo ' '$txt)" - shift - done - echo -} - -pkg-config "$@" 2>/dev/null && exit 0 - -pkg=$# -case ${!pkg} in -glib* ) - fullpkg=$(rpm -qa | grep -E '^glib[2-9].*-devel' | head -n1) - dirs=$(rpm -q --list $fullpkg | \ - while read f ; do test -d $f && echo $f ; done | \ - grep -F /include) - for f in $dirs ; do printf "-I$f " ; done - rpm -q --list $fullpkg | \ - sed -n 's@^.*/libglib@-lglib@p' | \ - sed -n 's/\.so$//p' | \ - head -n 1 - ;; - -wireshark ) - parse_wireshark "$@" - ;; - -* ) - echo huh? - exit 1 - ;; -esac -- 1.8.3.1