[Ocfs2-tools-devel] [PATCH 1/1] wireshark-ocfs2: add dlm_migrate_request message support in dissector.

Jeff Liu jeff.liu at oracle.com
Thu Jul 2 20:03:52 PDT 2009


this patch add dlm_migrate_request message handler in dissector.

dissect this message as:

ocfs2
    Magic: Request (0xfa55)
    Len: 72
    Type: Migrate Request (508)
    Pad: 0x0000
    Sys Status: DLM_NORMAL (0)
    Status: 0
    Key: 0x74e320eb
    Num: 0
    Payload1: 03061F00000000004F303030303030303030303030303030
    Payload2: 303137613030393030303030303030000000000000000000
    Payload3: 000000000000000000000000000000000000000000000000
    Master: 3
    New Master: 6
    Namelen: 31
    Name: O000000000000000017a00900000000

Signed-off-by: Jeff Liu <jeff.liu at oracle.com>
---
 epan/dissectors/packet-ocfs2.c |   61 +++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/epan/dissectors/packet-ocfs2.c b/epan/dissectors/packet-ocfs2.c
index bd2d2b7..e754d2d 100644
--- a/epan/dissectors/packet-ocfs2.c
+++ b/epan/dissectors/packet-ocfs2.c
@@ -99,6 +99,8 @@ static int hf_msg_payload4 = -1;
 static int hf_msg_payload5 = -1;
 static int hf_msg_payload6 = -1;
 
+static int hf_dlm_master = -1;
+static int hf_dlm_new_master = -1;
 static int hf_dlm_node_idx = -1;
 static int hf_dlm_flags = -1;
 static int hf_dlm_am_flags = -1;
@@ -663,6 +665,18 @@ void dlm_node_idx_handler(proto_tree *tree, tvbuff_t *tvb, guint offset, void *p
 	// TODO: look into printing the hostname by working with o2cb stuff
 	proto_tree_add_item(tree, *fld->hf_index, tvb, offset + fld->offset, fld->len, FALSE);
 }
+void dlm_master_handler(proto_tree *tree, tvbuff_t *tvb, guint offset,
+			void *priv, struct dlm_msg_field_def *fld)
+{
+	proto_tree_add_item(tree, *fld->hf_index, tvb, offset + fld->offset,
+				fld->len, FALSE);
+}
+void dlm_new_master_handler(proto_tree *tree, tvbuff_t *tvb, guint offset,
+				void *priv, struct dlm_msg_field_def *fld)
+{
+	proto_tree_add_item(tree, *fld->hf_index, tvb, offset + fld->offset,
+				fld->len, FALSE);
+}
 
 
 /* DLM structures */
@@ -734,6 +748,14 @@ struct dlm_lock_request
 	guint16 pad1;	// unused
 	guint32 pad2;	// unused
 };
+struct dlm_migrate_request {
+	guint8 master;
+	guint8 new_master;
+	guint8 namelen;
+	guint8 pad1;
+	guint32 pad2;
+	guint8 name[O2NM_MAX_NAME_LEN];
+};
 struct dlm_reco_data_done
 {
 	guint8 node_idx;
@@ -865,6 +887,23 @@ static struct dlm_msg_struct_def dlm_struct_defs[] = {
 	{ "dead_node",	&hf_dlm_dead_node,	FIELD_OFFSET_AND_SIZE(struct dlm_lock_request,dead_node),	dlm_node_idx_handler},
 	{ DLM_MSG_STRUCT_DEF_END } }
 },
+{ "dlm_migrate_request", "DLM Migrate Request", DLM_MIGRATE_REQUEST_MSG,
+	&ett_dlm_migrate_request, {
+		{ "master",	&hf_dlm_master,
+		FIELD_OFFSET_AND_SIZE(struct dlm_migrate_request, master),
+		dlm_master_handler},
+		{ "new_master",	&hf_dlm_new_master,
+		FIELD_OFFSET_AND_SIZE(struct dlm_migrate_request, new_master),
+		dlm_new_master_handler},
+		{ "namelen",	&hf_dlm_namelen,
+		FIELD_OFFSET_AND_SIZE(struct dlm_migrate_request, namelen),
+		dlm_namelen_handler},
+		{ "name",	&hf_dlm_name,
+		FIELD_OFFSET_AND_SIZE(struct dlm_migrate_request, name),
+		dlm_name_handler},
+		{ DLM_MSG_STRUCT_DEF_END }
+	}
+},
 { "dlm_reco_data_done", "DLM Recovery Data Done (recovery)", DLM_RECO_DATA_DONE_MSG, &ett_dlm_recovery_data_done, {
 	{ "node_idx",	&hf_dlm_node_idx,	FIELD_OFFSET_AND_SIZE(struct dlm_reco_data_done,node_idx),	dlm_node_idx_handler},
 	{ "dead_node",	&hf_dlm_dead_node,	FIELD_OFFSET_AND_SIZE(struct dlm_reco_data_done,dead_node),	dlm_node_idx_handler},
@@ -911,22 +950,6 @@ static struct dlm_msg_struct_def dlm_struct_defs[] = {
  * unimplemented cuz i forgot about these
  */
 
-struct dlm_migrate_request
-{
-	guint8 master;
-	guint8 new_master;
-	guint8 namelen;
-	guint8 pad1;
-	guint32 pad2;
-	guint8 name[O2NM_MAX_NAME_LEN];
-};
-{ "dlm_migrate_request", "DLM Migrate Request", DLM_MIGRATE_REQUEST_MSG,
-	{ "master",	&hf_dlm_node_idx,	FIELD_OFFSET_AND_SIZE(struct dlm_finalize_reco,node_idx),	dlm_node_idx_handler,	NULL },
-	{ "dead_node",	&hf_dlm_dead_node,	FIELD_OFFSET_AND_SIZE(struct dlm_finalize_reco,dead_node),	dlm_node_idx_handler,	NULL },
-	{ "flags",	&hf_dlm_flags,		FIELD_OFFSET_AND_SIZE(struct dlm_finalize_reco,flags),		dlm_fr_flags_handler,	NULL },
-	{ DLM_MSG_STRUCT_DEF_END }
-},
-
 struct dlm_master_requery
 {
 	guint8 pad1;
@@ -1255,6 +1278,12 @@ void proto_register_ocfs2(void)
 		{ &hf_msg_payload6, { "Payload6", "ocfs2.msg.payload",
 					FT_BYTES, BASE_HEX, NULL, 0x0,
 					"Payload 6", HFILL } },
+		{ &hf_dlm_master, { "Master", "ocfs2.dlm.master",
+					FT_UINT8, BASE_DEC, NULL, 0x0,
+					"Master", HFILL } },
+		{ &hf_dlm_new_master, { "New Master", "ocfs2.dlm.new_master",
+					FT_UINT8, BASE_DEC, NULL, 0x0,
+					"New Master", HFILL } },
 		{ &hf_dlm_node_idx, { "Node Index", "ocfs2.dlm.node_idx",
 					FT_UINT8, BASE_DEC, NULL, 0x0,
 					"Node index", HFILL } },
-- 
1.5.4.3




More information about the Ocfs2-tools-devel mailing list