Update to 1.4.0
- remove unused patches - remove tethereal/ethereal - remove rpath - build with python plugins
This commit is contained in:
parent
a078a4fdb8
commit
1bd4cbdf9c
@ -1,455 +0,0 @@
|
||||
diff -up wireshark-1.1.2/epan/dissectors/packet-nfs.c.orig wireshark-1.1.2/epan/dissectors/packet-nfs.c
|
||||
--- wireshark-1.1.2/epan/dissectors/packet-nfs.c.orig 2009-02-15 08:22:57.000000000 -0500
|
||||
+++ wireshark-1.1.2/epan/dissectors/packet-nfs.c 2009-02-15 08:31:28.000000000 -0500
|
||||
@@ -652,6 +652,8 @@ static emem_tree_t *nfs_file_handles = N
|
||||
|
||||
static int dissect_nfs_stateid4(tvbuff_t *tvb, int offset, proto_tree *tree);
|
||||
|
||||
+static void reg_callback(int cbprog);
|
||||
+
|
||||
/* This function will store one nfs filehandle in our global tree of
|
||||
* filehandles.
|
||||
* We store all filehandles we see in this tree so that every unique
|
||||
@@ -8648,6 +8650,7 @@ dissect_nfs_argop4(tvbuff_t *tvb, int of
|
||||
proto_item *fitem;
|
||||
proto_tree *ftree = NULL;
|
||||
proto_tree *newftree = NULL;
|
||||
+ int cbprog;
|
||||
|
||||
ops = tvb_get_ntohl(tvb, offset+0);
|
||||
|
||||
@@ -8969,6 +8972,8 @@ dissect_nfs_argop4(tvbuff_t *tvb, int of
|
||||
hf_nfs_create_session_flags4, offset);
|
||||
offset = dissect_rpc_chanattrs4(tvb, offset, newftree);
|
||||
offset = dissect_rpc_chanattrs4(tvb, offset, newftree);
|
||||
+ cbprog = tvb_get_ntohl(tvb, offset);
|
||||
+ reg_callback(cbprog);
|
||||
offset = dissect_rpc_uint32(tvb, newftree,
|
||||
hf_nfs_cb_program, offset);
|
||||
offset = dissect_rpc_secparms4(tvb, offset, newftree);
|
||||
@@ -9612,6 +9617,313 @@ static const value_string layoutreturn_n
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
+static const value_string layoutrecall_names[] = {
|
||||
+ { 1, "RECALL_FILE"},
|
||||
+ { 2, "RECALL_FSID"},
|
||||
+ { 3, "RECALL_ALL"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+/* NFS Callback */
|
||||
+static int hf_nfs_cb_procedure = -1;
|
||||
+static int hf_nfs_cb_argop = -1;
|
||||
+static int hf_nfs_cb_resop = -1;
|
||||
+static int hf_nfs_cb_truncate = -1;
|
||||
+static int hf_nfs_cb_layoutrecall_type = -1;
|
||||
+static int hf_nfs_cb_clorachanged = -1;
|
||||
+
|
||||
+static gint ett_nfs_cb_argop = -1;
|
||||
+static gint ett_nfs_cb_resop = -1;
|
||||
+static gint ett_nfs_cb_getattr = -1;
|
||||
+static gint ett_nfs_cb_recall = -1;
|
||||
+static gint ett_nfs_cb_layoutrecall = -1;
|
||||
+static gint ett_nfs_cb_pushdeleg = -1;
|
||||
+static gint ett_nfs_cb_recallany = -1;
|
||||
+static gint ett_nfs_cb_recallableobjavail = -1;
|
||||
+static gint ett_nfs_cb_recallslot = -1;
|
||||
+static gint ett_nfs_cb_sequence = -1;
|
||||
+static gint ett_nfs_cb_wantscancelled = -1;
|
||||
+static gint ett_nfs_cb_notifylock = -1;
|
||||
+static gint ett_nfs_cb_notifydeviceid = -1;
|
||||
+static gint ett_nfs_cb_notify = -1;
|
||||
+static gint ett_nfs_cb_illegal = -1;
|
||||
+
|
||||
+static const value_string names_nfs_cb_operation[] = {
|
||||
+ { NFS4_OP_CB_GETATTR, "CB_GETATTR" },
|
||||
+ { NFS4_OP_CB_RECALL, "CB_RECALL" },
|
||||
+ { NFS4_OP_CB_LAYOUTRECALL, "CB_LAYOUTRECALL" },
|
||||
+ { NFS4_OP_CB_NOTIFY, "CB_NOTIFY" },
|
||||
+ { NFS4_OP_CB_PUSH_DELEG, "CB_PUSH_DELEG" },
|
||||
+ { NFS4_OP_CB_RECALL_ANY, "CB_RECALL_ANY" },
|
||||
+ { NFS4_OP_CB_RECALLABLE_OBJ_AVAIL, "CB_RECALLABLE_OBJ_AVAIL" },
|
||||
+ { NFS4_OP_CB_RECALL_SLOT, "CB_RECALL_SLOT"},
|
||||
+ { NFS4_OP_CB_SEQUENCE, "CB_SEQUENCE" },
|
||||
+ { NFS4_OP_CB_WANTS_CANCELLED, "CB_WANTS_CANCELLED" },
|
||||
+ { NFS4_OP_CB_NOTIFY_LOCK, "CB_NOTIFY_LOCK"},
|
||||
+ { NFS4_OP_CB_NOTIFY_DEVICEID, "CB_NOTIFY_DEVICEID" },
|
||||
+ { NFS4_OP_CB_ILLEGAL, "CB_ILLEGAL"},
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+gint *nfs_cb_operation_ett[] =
|
||||
+{
|
||||
+ &ett_nfs_cb_getattr,
|
||||
+ &ett_nfs_cb_recall,
|
||||
+ &ett_nfs_cb_layoutrecall,
|
||||
+ &ett_nfs_cb_notify,
|
||||
+ &ett_nfs_cb_pushdeleg,
|
||||
+ &ett_nfs_cb_recallany,
|
||||
+ &ett_nfs_cb_recallableobjavail,
|
||||
+ &ett_nfs_cb_recallslot,
|
||||
+ &ett_nfs_cb_sequence,
|
||||
+ &ett_nfs_cb_wantscancelled,
|
||||
+ &ett_nfs_cb_notifylock,
|
||||
+ &ett_nfs_cb_notifydeviceid,
|
||||
+ &ett_nfs_cb_illegal
|
||||
+};
|
||||
+
|
||||
+static int
|
||||
+dissect_nfs_cb_layoutrecall(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo)
|
||||
+{
|
||||
+ guint recalltype = hf_nfs_layouttype4;
|
||||
+
|
||||
+ if (recalltype == 1) { /* RETURN_FILE */
|
||||
+ offset = dissect_nfs_fh4(tvb, offset, pinfo, tree, "filehandle");
|
||||
+ offset = dissect_rpc_uint64(tvb, tree, hf_nfs_offset4, offset);
|
||||
+ offset = dissect_rpc_uint64(tvb, tree, hf_nfs_length4, offset);
|
||||
+ offset = dissect_nfs_stateid4(tvb, offset, tree);
|
||||
+ } else if (recalltype == 2) { /* RETURN_FSID */
|
||||
+ offset = dissect_nfs_fsid4(tvb, offset, tree, "fsid");
|
||||
+ }
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+dissect_nfs_cb_argop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
|
||||
+{
|
||||
+ guint32 ops, ops_counter;
|
||||
+ guint opcode;
|
||||
+ proto_item *fitem;
|
||||
+ proto_tree *ftree = NULL;
|
||||
+ proto_tree *newftree = NULL;
|
||||
+
|
||||
+ ops = tvb_get_ntohl(tvb, offset+0);
|
||||
+
|
||||
+ fitem = proto_tree_add_text(tree, tvb, offset, 4, "Operations (count: %u)", ops);
|
||||
+ offset += 4;
|
||||
+
|
||||
+ if (fitem)
|
||||
+ ftree = proto_item_add_subtree(fitem, ett_nfs_cb_argop);
|
||||
+
|
||||
+ for (ops_counter=0; ops_counter<ops; ops_counter++)
|
||||
+ {
|
||||
+ opcode = tvb_get_ntohl(tvb, offset);
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO))
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s", ops_counter==0?' ':';',
|
||||
+ val_to_str(opcode, names_nfs_cb_operation, "Unknown"));
|
||||
+
|
||||
+ fitem = proto_tree_add_uint(ftree, hf_nfs_cb_argop, tvb, offset, 4, opcode);
|
||||
+ offset += 4;
|
||||
+
|
||||
+ /* the opcodes are not contiguous */
|
||||
+ if ((opcode < NFS4_OP_CB_GETATTR || opcode > NFS4_OP_CB_NOTIFY_DEVICEID) &&
|
||||
+ (opcode != NFS4_OP_CB_ILLEGAL))
|
||||
+ break;
|
||||
+
|
||||
+ /* all of the V4 ops are contiguous, except for NFS4_OP_ILLEGAL */
|
||||
+ if (opcode == NFS4_OP_CB_ILLEGAL)
|
||||
+ newftree = proto_item_add_subtree(fitem, ett_nfs_cb_illegal);
|
||||
+ else if (nfs_cb_operation_ett[opcode - 3])
|
||||
+ newftree = proto_item_add_subtree(fitem, *nfs_cb_operation_ett[opcode - 3]);
|
||||
+ else
|
||||
+ break;
|
||||
+
|
||||
+ switch (opcode)
|
||||
+ {
|
||||
+ case NFS4_OP_CB_RECALL:
|
||||
+ offset = dissect_nfs_stateid4(tvb, offset, newftree);
|
||||
+ offset = dissect_rpc_bool(tvb, newftree, hf_nfs_cb_truncate, offset);
|
||||
+ offset = dissect_nfs_fh4(tvb, offset, pinfo, newftree, "filehandle");
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_GETATTR:
|
||||
+ case NFS4_OP_CB_LAYOUTRECALL:
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_layouttype4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_iomode4, offset);
|
||||
+ offset = dissect_rpc_bool(tvb, newftree, hf_nfs_cb_clorachanged, offset);
|
||||
+ offset = dissect_nfs_cb_layoutrecall(tvb, offset, newftree, pinfo);
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_NOTIFY:
|
||||
+ case NFS4_OP_CB_PUSH_DELEG:
|
||||
+ case NFS4_OP_CB_RECALL_ANY:
|
||||
+ case NFS4_OP_CB_RECALLABLE_OBJ_AVAIL:
|
||||
+ case NFS4_OP_CB_RECALL_SLOT:
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_SEQUENCE:
|
||||
+ offset = dissect_rpc_opaque_data(tvb, offset, newftree, NULL, hf_nfs_sessionid4,
|
||||
+ TRUE, 16, FALSE, NULL, NULL);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_seqid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
+ offset = dissect_rpc_bool(tvb, newftree, hf_nfs_cachethis4, offset);
|
||||
+ /* skip refs -- assume 0 */
|
||||
+ offset = offset + 4;
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_WANTS_CANCELLED:
|
||||
+ case NFS4_OP_CB_NOTIFY_LOCK:
|
||||
+ case NFS4_OP_CB_NOTIFY_DEVICEID:
|
||||
+ break;
|
||||
+ case NFS4_OP_ILLEGAL:
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+dissect_nfs_cb_compound_call(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree* tree)
|
||||
+{
|
||||
+ char *tag=NULL;
|
||||
+
|
||||
+ offset = dissect_nfs_utf8string(tvb, offset, tree, hf_nfs_tag4, &tag);
|
||||
+
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO))
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO," %s", tag);
|
||||
+
|
||||
+ offset = dissect_rpc_uint32(tvb, tree, hf_nfs_minorversion, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, tree, hf_nfs_callback_ident, offset);
|
||||
+ offset = dissect_nfs_cb_argop(tvb, offset, pinfo, tree);
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+dissect_nfs_cb_resop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
|
||||
+{
|
||||
+ guint32 ops, ops_counter;
|
||||
+ guint32 opcode;
|
||||
+ proto_item *fitem;
|
||||
+ proto_tree *ftree = NULL;
|
||||
+ proto_tree *newftree = NULL;
|
||||
+ guint32 status;
|
||||
+
|
||||
+ ops = tvb_get_ntohl(tvb, offset+0);
|
||||
+ fitem = proto_tree_add_text(tree, tvb, offset, 4, "Operations (count: %u)", ops);
|
||||
+ offset += 4;
|
||||
+
|
||||
+ if (fitem)
|
||||
+ ftree = proto_item_add_subtree(fitem, ett_nfs_cb_resop);
|
||||
+
|
||||
+ for (ops_counter = 0; ops_counter < ops; ops_counter++)
|
||||
+ {
|
||||
+ opcode = tvb_get_ntohl(tvb, offset);
|
||||
+
|
||||
+ /* sanity check for bogus packets */
|
||||
+ if ((opcode < NFS4_OP_CB_GETATTR || opcode > NFS4_OP_CB_NOTIFY_DEVICEID) &&
|
||||
+ (opcode != NFS4_OP_ILLEGAL))
|
||||
+ break;
|
||||
+
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO))
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%c%s", ops_counter==0?' ':';',
|
||||
+ val_to_str(opcode, names_nfs_cb_operation, "Unknown"));
|
||||
+
|
||||
+ fitem = proto_tree_add_uint(ftree, hf_nfs_cb_resop, tvb, offset, 4, opcode);
|
||||
+ offset += 4;
|
||||
+
|
||||
+ /* all of the V4 ops are contiguous, except for NFS4_OP_ILLEGAL */
|
||||
+ if (opcode == NFS4_OP_ILLEGAL)
|
||||
+ newftree = proto_item_add_subtree(fitem, ett_nfs_illegal4);
|
||||
+ else if (nfs_cb_operation_ett[opcode - 3])
|
||||
+ newftree = proto_item_add_subtree(fitem, *nfs_cb_operation_ett[opcode - 3]);
|
||||
+ else
|
||||
+ break;
|
||||
+
|
||||
+ offset = dissect_nfs_nfsstat4(tvb, offset, newftree, &status);
|
||||
+
|
||||
+ /* are there any ops that return data with a failure (?) */
|
||||
+ if (status != NFS4_OK)
|
||||
+ continue;
|
||||
+
|
||||
+ /* These parsing routines are only executed if the status is NFS4_OK */
|
||||
+ switch (opcode)
|
||||
+ {
|
||||
+ case NFS4_OP_CB_RECALL:
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_GETATTR:
|
||||
+ case NFS4_OP_CB_LAYOUTRECALL:
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_NOTIFY:
|
||||
+ case NFS4_OP_CB_PUSH_DELEG:
|
||||
+ case NFS4_OP_CB_RECALL_ANY:
|
||||
+ case NFS4_OP_CB_RECALLABLE_OBJ_AVAIL:
|
||||
+ case NFS4_OP_CB_RECALL_SLOT:
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_SEQUENCE:
|
||||
+ offset = dissect_rpc_opaque_data(tvb, offset, newftree, NULL,
|
||||
+ hf_nfs_sessionid4, TRUE, 16,
|
||||
+ FALSE, NULL, NULL);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_seqid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
+ break;
|
||||
+ case NFS4_OP_CB_WANTS_CANCELLED:
|
||||
+ case NFS4_OP_CB_NOTIFY_LOCK:
|
||||
+ case NFS4_OP_CB_NOTIFY_DEVICEID:
|
||||
+ break;
|
||||
+ case NFS4_OP_ILLEGAL:
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+dissect_nfs_cb_compound_reply(tvbuff_t *tvb, int offset, packet_info *pinfo,
|
||||
+ proto_tree* tree)
|
||||
+{
|
||||
+ guint32 status;
|
||||
+ char *tag=NULL;
|
||||
+
|
||||
+ offset = dissect_nfs_nfsstat4(tvb, offset, tree, &status);
|
||||
+ offset = dissect_nfs_utf8string(tvb, offset, tree, hf_nfs_tag4, &tag);
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO))
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO," %s", tag);
|
||||
+
|
||||
+ offset = dissect_nfs_cb_resop(tvb, offset, pinfo, tree);
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static const vsff nfs_cb_proc[] = {
|
||||
+ { 0, "CB_NULL",
|
||||
+ dissect_nfs3_null_call, dissect_nfs3_null_reply },
|
||||
+ { 1, "CB_COMPOUND",
|
||||
+ dissect_nfs_cb_compound_call, dissect_nfs_cb_compound_reply },
|
||||
+ { 0, NULL, NULL, NULL }
|
||||
+};
|
||||
+
|
||||
+static const value_string nfs_cb_proc_vals[] = {
|
||||
+ { 0, "CB_NULL" },
|
||||
+ { 1, "CB_COMPOUND" },
|
||||
+ { 0, NULL }
|
||||
+};
|
||||
+
|
||||
+void reg_callback(int cbprog)
|
||||
+{
|
||||
+ /* Register the protocol as RPC */
|
||||
+ rpc_init_prog(proto_nfs, cbprog, ett_nfs);
|
||||
+
|
||||
+ /* Register the procedure tables */
|
||||
+ rpc_init_proc_table(cbprog, 1, nfs_cb_proc, hf_nfs_cb_procedure);
|
||||
+}
|
||||
+
|
||||
void
|
||||
proto_register_nfs(void)
|
||||
{
|
||||
@@ -10964,10 +11276,29 @@ proto_register_nfs(void)
|
||||
{ &hf_nfs_cachethis4, {
|
||||
"Cache this?", "nfs.cachethis4", FT_BOOLEAN, BASE_NONE,
|
||||
TFS(&tfs_yes_no), 0, NULL, HFILL }},
|
||||
-
|
||||
+
|
||||
+ { &hf_nfs_cb_procedure, {
|
||||
+ "CB Procedure", "nfs.cb_procedure", FT_UINT32, BASE_DEC,
|
||||
+ VALS(nfs_cb_proc_vals), 0, NULL, HFILL }},
|
||||
+
|
||||
+ { &hf_nfs_cb_argop, {
|
||||
+ "Opcode", "nfs.call.operation", FT_UINT32, BASE_DEC,
|
||||
+ VALS(names_nfs_cb_operation), 0, NULL, HFILL }},
|
||||
+ { &hf_nfs_cb_resop, {
|
||||
+ "Opcode", "nfs.reply.operation", FT_UINT32, BASE_DEC,
|
||||
+ VALS(names_nfs_cb_operation), 0, NULL, HFILL }},
|
||||
{ &hf_nfs_lrs_present, {
|
||||
"Stateid present?", "nfs.lrs_present", FT_BOOLEAN, BASE_NONE,
|
||||
TFS(&tfs_yes_no), 0, NULL, HFILL }},
|
||||
+ { &hf_nfs_cb_truncate, {
|
||||
+ "Truncate?", "nfs.truncate", FT_BOOLEAN, BASE_NONE,
|
||||
+ TFS(&tfs_yes_no), 0, NULL, HFILL }},
|
||||
+ { &hf_nfs_cb_layoutrecall_type, {
|
||||
+ "recall type", "nfs.recalltype", FT_UINT32, BASE_DEC,
|
||||
+ VALS(layoutrecall_names), 0, NULL, HFILL }},
|
||||
+ { &hf_nfs_cb_clorachanged, {
|
||||
+ "Clora changed", "nfs.clorachanged", FT_BOOLEAN, BASE_NONE,
|
||||
+ TFS(&tfs_yes_no), 0, NULL, HFILL }},
|
||||
|
||||
/* Hidden field for v2, v3, and v4 status */
|
||||
{ &hf_nfs_nfsstat, {
|
||||
@@ -11132,8 +11463,23 @@ proto_register_nfs(void)
|
||||
&ett_nfs_gid4,
|
||||
&ett_nfs_service4,
|
||||
&ett_nfs_sessionid4,
|
||||
- &ett_nfs_layoutseg,
|
||||
- &ett_nfs_layoutseg_fh
|
||||
+ &ett_nfs_layoutseg,
|
||||
+ &ett_nfs_layoutseg_fh,
|
||||
+ &ett_nfs_cb_argop,
|
||||
+ &ett_nfs_cb_resop,
|
||||
+ &ett_nfs_cb_getattr,
|
||||
+ &ett_nfs_cb_recall,
|
||||
+ &ett_nfs_cb_layoutrecall,
|
||||
+ &ett_nfs_cb_pushdeleg,
|
||||
+ &ett_nfs_cb_recallany,
|
||||
+ &ett_nfs_cb_recallableobjavail,
|
||||
+ &ett_nfs_cb_recallslot,
|
||||
+ &ett_nfs_cb_sequence,
|
||||
+ &ett_nfs_cb_wantscancelled,
|
||||
+ &ett_nfs_cb_notifylock,
|
||||
+ &ett_nfs_cb_notifydeviceid,
|
||||
+ &ett_nfs_cb_notify,
|
||||
+ &ett_nfs_cb_illegal,
|
||||
};
|
||||
module_t *nfs_module;
|
||||
|
||||
@@ -11169,9 +11515,9 @@ proto_register_nfs(void)
|
||||
nfs_file_handles=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "nfs_file_handles");
|
||||
nfs_fhandle_frame_table=se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "nfs_fhandle_frame_table");
|
||||
register_init_routine(nfs_name_snoop_init);
|
||||
-
|
||||
}
|
||||
|
||||
+
|
||||
void
|
||||
proto_reg_handoff_nfs(void)
|
||||
{
|
||||
@@ -11179,7 +11525,7 @@ proto_reg_handoff_nfs(void)
|
||||
|
||||
/* Register the protocol as RPC */
|
||||
rpc_init_prog(proto_nfs, NFS_PROGRAM, ett_nfs);
|
||||
-
|
||||
+
|
||||
/* Register the procedure tables */
|
||||
rpc_init_proc_table(NFS_PROGRAM, 2, nfs2_proc, hf_nfs_procedure_v2);
|
||||
rpc_init_proc_table(NFS_PROGRAM, 3, nfs3_proc, hf_nfs_procedure_v3);
|
||||
@@ -11208,7 +11554,4 @@ proto_reg_handoff_nfs(void)
|
||||
|
||||
fhandle_handle=create_dissector_handle(dissect_fhandle_data_unknown, proto_nfs);
|
||||
dissector_add("nfs_fhandle.type", FHT_UNKNOWN, fhandle_handle);
|
||||
-
|
||||
-
|
||||
}
|
||||
-
|
||||
diff -up wireshark-1.1.2/epan/dissectors/packet-nfs.h.orig wireshark-1.1.2/epan/dissectors/packet-nfs.h
|
||||
--- wireshark-1.1.2/epan/dissectors/packet-nfs.h.orig 2009-01-15 10:28:17.000000000 -0500
|
||||
+++ wireshark-1.1.2/epan/dissectors/packet-nfs.h 2009-02-15 08:31:28.000000000 -0500
|
||||
@@ -127,6 +127,23 @@
|
||||
|
||||
#define NFS4_OP_ILLEGAL 10044
|
||||
|
||||
+/*
|
||||
+ * NFSv41 callback ops
|
||||
+ */
|
||||
+#define NFS4_OP_CB_GETATTR 3
|
||||
+#define NFS4_OP_CB_RECALL 4
|
||||
+#define NFS4_OP_CB_LAYOUTRECALL 5
|
||||
+#define NFS4_OP_CB_NOTIFY 6
|
||||
+#define NFS4_OP_CB_PUSH_DELEG 7
|
||||
+#define NFS4_OP_CB_RECALL_ANY 8
|
||||
+#define NFS4_OP_CB_RECALLABLE_OBJ_AVAIL 9
|
||||
+#define NFS4_OP_CB_RECALL_SLOT 10
|
||||
+#define NFS4_OP_CB_SEQUENCE 11
|
||||
+#define NFS4_OP_CB_WANTS_CANCELLED 12
|
||||
+#define NFS4_OP_CB_NOTIFY_LOCK 13
|
||||
+#define NFS4_OP_CB_NOTIFY_DEVICEID 14
|
||||
+#define NFS4_OP_CB_ILLEGAL 10044
|
||||
+
|
||||
/* for write */
|
||||
#define UNSTABLE 0
|
||||
#define DATA_SYNC 1
|
@ -1,15 +1,6 @@
|
||||
diff -up wireshark-1.2.4/epan/wslua/template-init.lua.enable_lua wireshark-1.2.4/epan/wslua/template-init.lua
|
||||
--- wireshark-1.2.4/epan/wslua/template-init.lua.enable_lua 2009-11-16 21:30:58.000000000 +0100
|
||||
+++ wireshark-1.2.4/epan/wslua/template-init.lua 2009-12-15 09:33:59.000000000 +0100
|
||||
@@ -26,7 +26,7 @@
|
||||
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
-- Lua is disabled by default, comment out the following line to enable Lua support.
|
||||
-disable_lua = true; do return end;
|
||||
+-- disable_lua = true; do return end;
|
||||
|
||||
|
||||
-- If set and we are running with special privileges this setting
|
||||
@@ -39,7 +39,7 @@ if running_superuser then
|
||||
local disabled_lib = {}
|
||||
setmetatable(disabled_lib,{ __index = function() error("this package has been disabled") end } );
|
||||
|
@ -1,155 +0,0 @@
|
||||
From 531ee0b54e7406992f9eefc60fbbbd4534116f99 Mon Sep 17 00:00:00 2001
|
||||
From: Jeff Layton <jlayton@redhat.com>
|
||||
Date: Tue, 9 Mar 2010 12:25:50 -0500
|
||||
Subject: [PATCH] Dynamically register callback dissector based on the NFSv4.0 SETCLIENTID
|
||||
args (the equivalent of what had already been done for NFSv4.1
|
||||
CREATE_SESSION).
|
||||
|
||||
Fix CB_LAYOUTRECALL dissecting: the recall type wasn't getting parsed,
|
||||
so some of the layout recall info wasn't being displayed.
|
||||
|
||||
Parse CB_SEQUENCE's referring call lists.
|
||||
---
|
||||
epan/dissectors/packet-nfs.c | 68 +++++++++++++++++++++++++++++++++++------
|
||||
1 files changed, 58 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/epan/dissectors/packet-nfs.c b/epan/dissectors/packet-nfs.c
|
||||
index 82ebfe4..fa475b7 100644
|
||||
--- a/epan/dissectors/packet-nfs.c
|
||||
+++ b/epan/dissectors/packet-nfs.c
|
||||
@@ -7723,7 +7723,10 @@ dissect_nfs_cb_client4(tvbuff_t *tvb, int offset, proto_tree *tree)
|
||||
{
|
||||
proto_tree *cb_location = NULL;
|
||||
proto_item *fitem = NULL;
|
||||
+ int cbprog;
|
||||
|
||||
+ cbprog = tvb_get_ntohl(tvb, offset);
|
||||
+ reg_callback(cbprog);
|
||||
offset = dissect_rpc_uint32(tvb, tree, hf_nfs_cb_program, offset);
|
||||
fitem = proto_tree_add_text(tree, tvb, offset, 0, "cb_location");
|
||||
|
||||
@@ -9646,6 +9649,8 @@ static gint ett_nfs_cb_wantscancelled = -1;
|
||||
static gint ett_nfs_cb_notifylock = -1;
|
||||
static gint ett_nfs_cb_notifydeviceid = -1;
|
||||
static gint ett_nfs_cb_notify = -1;
|
||||
+static gint ett_nfs_cb_reflists = -1;
|
||||
+static gint ett_nfs_cb_refcalls = -1;
|
||||
static gint ett_nfs_cb_illegal = -1;
|
||||
|
||||
static const value_string names_nfs_cb_operation[] = {
|
||||
@@ -9683,16 +9688,56 @@ gint *nfs_cb_operation_ett[] =
|
||||
};
|
||||
|
||||
static int
|
||||
+dissect_nfs_cb_referring_calls(tvbuff_t *tvb, int offset, proto_tree *tree)
|
||||
+{
|
||||
+ guint num_reflists, num_refcalls, i, j;
|
||||
+ proto_item *rl_item, *rc_item;
|
||||
+ proto_tree *rl_tree = NULL, *rc_tree = NULL;
|
||||
+
|
||||
+ num_reflists = tvb_get_ntohl(tvb, offset);
|
||||
+ rl_item = proto_tree_add_text(tree, tvb, offset, 4,
|
||||
+ "referring call lists (count: %u)", num_reflists);
|
||||
+ offset += 4;
|
||||
+ if (num_reflists == 0)
|
||||
+ return offset;
|
||||
+
|
||||
+ rl_tree = proto_item_add_subtree(rl_item, ett_nfs_cb_reflists);
|
||||
+
|
||||
+ for (i = 0; i < num_reflists; i++) {
|
||||
+ offset = dissect_rpc_opaque_data(tvb, offset, rl_tree, NULL,
|
||||
+ hf_nfs_sessionid4, TRUE, 16, FALSE, NULL, NULL);
|
||||
+ num_refcalls = tvb_get_ntohl(tvb, offset);
|
||||
+ rc_item = proto_tree_add_text(rl_tree, tvb, offset, 4,
|
||||
+ "referring calls (count: %u)", num_refcalls);
|
||||
+ offset += 4;
|
||||
+ for (j = 0; j < num_refcalls; j++) {
|
||||
+ rc_tree = proto_item_add_subtree(rc_item, ett_nfs_cb_refcalls);
|
||||
+ offset = dissect_rpc_uint32(tvb, rc_tree, hf_nfs_seqid4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, rc_tree, hf_nfs_slotid4, offset);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
dissect_nfs_cb_layoutrecall(tvbuff_t *tvb, int offset, proto_tree *tree, packet_info *pinfo)
|
||||
{
|
||||
- guint recalltype = hf_nfs_layouttype4;
|
||||
+ guint recall_type;
|
||||
|
||||
- if (recalltype == 1) { /* RETURN_FILE */
|
||||
+ offset = dissect_rpc_uint32(tvb, tree, hf_nfs_layouttype4, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, tree, hf_nfs_iomode4, offset);
|
||||
+ offset = dissect_rpc_bool(tvb, tree, hf_nfs_cb_clorachanged, offset);
|
||||
+
|
||||
+ recall_type = tvb_get_ntohl(tvb, offset);
|
||||
+ offset = dissect_rpc_uint32(tvb, tree, hf_nfs_cb_layoutrecall_type, offset);
|
||||
+
|
||||
+ if (recall_type == 1) { /* RECALL_FILE */
|
||||
offset = dissect_nfs_fh4(tvb, offset, pinfo, tree, "filehandle");
|
||||
offset = dissect_rpc_uint64(tvb, tree, hf_nfs_offset4, offset);
|
||||
offset = dissect_rpc_uint64(tvb, tree, hf_nfs_length4, offset);
|
||||
offset = dissect_nfs_stateid4(tvb, offset, tree);
|
||||
- } else if (recalltype == 2) { /* RETURN_FSID */
|
||||
+ } else if (recall_type == 2) { /* RECALL_FSID */
|
||||
offset = dissect_nfs_fsid4(tvb, offset, tree, "fsid");
|
||||
}
|
||||
|
||||
@@ -9748,9 +9793,6 @@ dissect_nfs_cb_argop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
|
||||
break;
|
||||
case NFS4_OP_CB_GETATTR:
|
||||
case NFS4_OP_CB_LAYOUTRECALL:
|
||||
- offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_layouttype4, offset);
|
||||
- offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_iomode4, offset);
|
||||
- offset = dissect_rpc_bool(tvb, newftree, hf_nfs_cb_clorachanged, offset);
|
||||
offset = dissect_nfs_cb_layoutrecall(tvb, offset, newftree, pinfo);
|
||||
break;
|
||||
case NFS4_OP_CB_NOTIFY:
|
||||
@@ -9766,8 +9808,7 @@ dissect_nfs_cb_argop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
|
||||
offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
offset = dissect_rpc_uint32(tvb, newftree, hf_nfs_slotid4, offset);
|
||||
offset = dissect_rpc_bool(tvb, newftree, hf_nfs_cachethis4, offset);
|
||||
- /* skip refs -- assume 0 */
|
||||
- offset = offset + 4;
|
||||
+ offset = dissect_nfs_cb_referring_calls(tvb, offset, newftree);
|
||||
break;
|
||||
case NFS4_OP_CB_WANTS_CANCELLED:
|
||||
case NFS4_OP_CB_NOTIFY_LOCK:
|
||||
@@ -9920,8 +9961,13 @@ void reg_callback(int cbprog)
|
||||
/* Register the protocol as RPC */
|
||||
rpc_init_prog(proto_nfs, cbprog, ett_nfs);
|
||||
|
||||
- /* Register the procedure tables */
|
||||
+ /*
|
||||
+ * Register the procedure tables. The version should be 4,
|
||||
+ * but some Linux kernels set this field to 1. "Temporarily",
|
||||
+ * accomodate these servers.
|
||||
+ */
|
||||
rpc_init_proc_table(cbprog, 1, nfs_cb_proc, hf_nfs_cb_procedure);
|
||||
+ rpc_init_proc_table(cbprog, 4, nfs_cb_proc, hf_nfs_cb_procedure);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -11274,7 +11320,7 @@ proto_register_nfs(void)
|
||||
"CREATE_SESSION flags", "nfs.create_session_flags", FT_UINT32, BASE_HEX,
|
||||
NULL, 0, NULL, HFILL }},
|
||||
{ &hf_nfs_cachethis4, {
|
||||
- "Cache this?", "nfs.cachethis4", FT_BOOLEAN, BASE_NONE,
|
||||
+ "cache this?", "nfs.cachethis4", FT_BOOLEAN, BASE_NONE,
|
||||
TFS(&tfs_yes_no), 0, NULL, HFILL }},
|
||||
|
||||
{ &hf_nfs_cb_procedure, {
|
||||
@@ -11479,6 +11525,8 @@ proto_register_nfs(void)
|
||||
&ett_nfs_cb_notifylock,
|
||||
&ett_nfs_cb_notifydeviceid,
|
||||
&ett_nfs_cb_notify,
|
||||
+ &ett_nfs_cb_reflists,
|
||||
+ &ett_nfs_cb_refcalls,
|
||||
&ett_nfs_cb_illegal,
|
||||
};
|
||||
module_t *nfs_module;
|
||||
--
|
||||
1.6.6.1
|
||||
|
@ -1,308 +0,0 @@
|
||||
From 2856caa1cf3307208864af4c59da8ecb07bc3153 Mon Sep 17 00:00:00 2001
|
||||
From: Jeff Layton <jlayton@redhat.com>
|
||||
Date: Mon, 8 Mar 2010 19:43:07 -0500
|
||||
Subject: [PATCH] packet-smb: add more FIND_FILE dissectors
|
||||
|
||||
---
|
||||
epan/dissectors/packet-smb.c | 271 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 files changed, 271 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c
|
||||
index 727b290..c9a90b9 100644
|
||||
--- a/epan/dissectors/packet-smb.c
|
||||
+++ b/epan/dissectors/packet-smb.c
|
||||
@@ -10051,6 +10051,8 @@ static const value_string ff2_il_vals[] = {
|
||||
{ 0x0102, "Find File Full Directory Info"},
|
||||
{ 0x0103, "Find File Names Info"},
|
||||
{ 0x0104, "Find File Both Directory Info"},
|
||||
+ { 0x0105, "Find File Full Directory Info"},
|
||||
+ { 0x0106, "Find File Id Both Directory Info"},
|
||||
{ 0x0202, "Find File UNIX"},
|
||||
{0, NULL}
|
||||
};
|
||||
@@ -13900,6 +13902,267 @@ dissect_4_3_4_6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
|
||||
}
|
||||
|
||||
static int
|
||||
+dissect_4_3_4_6full(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
|
||||
+ int offset, guint16 *bcp, gboolean *trunc)
|
||||
+{
|
||||
+ int fn_len;
|
||||
+ const char *fn;
|
||||
+ int old_offset = offset;
|
||||
+ proto_item *item = NULL;
|
||||
+ proto_tree *tree = NULL;
|
||||
+ smb_info_t *si;
|
||||
+ guint32 neo;
|
||||
+ int padcnt;
|
||||
+
|
||||
+ si = (smb_info_t *)pinfo->private_data;
|
||||
+ DISSECTOR_ASSERT(si);
|
||||
+
|
||||
+ if(parent_tree){
|
||||
+ tvb_ensure_bytes_exist(tvb, offset, *bcp);
|
||||
+ item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s",
|
||||
+ val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)"));
|
||||
+ tree = proto_item_add_subtree(item, ett_smb_ff2_data);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * XXX - I have not seen any of these that contain a resume
|
||||
+ * key, even though some of the requests had the "return resume
|
||||
+ * key" flag set.
|
||||
+ */
|
||||
+
|
||||
+ /* next entry offset */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ neo = tvb_get_letohl(tvb, offset);
|
||||
+ proto_tree_add_uint(tree, hf_smb_next_entry_offset, tvb, offset, 4, neo);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* file index */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ proto_tree_add_item(tree, hf_smb_file_index, tvb, offset, 4, TRUE);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* dissect standard 8-byte timestamps */
|
||||
+ offset = dissect_smb_standard_8byte_timestamps(tvb, pinfo, tree, offset, bcp, trunc);
|
||||
+ if (*trunc) {
|
||||
+ return offset;
|
||||
+ }
|
||||
+
|
||||
+ /* end of file */
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_end_of_file, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* allocation size */
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_alloc_size64, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* Extended File Attributes */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ offset = dissect_file_ext_attr(tvb, tree, offset);
|
||||
+ *bcp -= 4;
|
||||
+
|
||||
+ /* file name len */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ fn_len = tvb_get_letohl(tvb, offset);
|
||||
+ proto_tree_add_uint(tree, hf_smb_file_name_len, tvb, offset, 4, fn_len);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /*
|
||||
+ * EA length.
|
||||
+ *
|
||||
+ * XXX - in one captures, this has the topmost bit set, and the
|
||||
+ * rest of the bits have the value 7. Is the topmost bit being
|
||||
+ * set some indication that the value *isn't* the length of
|
||||
+ * the EAs?
|
||||
+ */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ proto_tree_add_item(tree, hf_smb_ea_list_length, tvb, offset, 4, TRUE);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* skip 4 bytes */
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_index_number, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* file name */
|
||||
+ fn = get_unicode_or_ascii_string(tvb, &offset, si->unicode, &fn_len, FALSE, TRUE, bcp);
|
||||
+ CHECK_STRING_SUBR(fn);
|
||||
+ proto_tree_add_string(tree, hf_smb_file_name, tvb, offset, fn_len,
|
||||
+ fn);
|
||||
+ COUNT_BYTES_SUBR(fn_len);
|
||||
+
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO)) {
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
|
||||
+ format_text(fn, strlen(fn)));
|
||||
+ }
|
||||
+
|
||||
+ /* skip to next structure */
|
||||
+ if(neo){
|
||||
+ padcnt = (old_offset + neo) - offset;
|
||||
+ if (padcnt < 0) {
|
||||
+ /*
|
||||
+ * XXX - this is bogus; flag it?
|
||||
+ */
|
||||
+ padcnt = 0;
|
||||
+ }
|
||||
+ if (padcnt != 0) {
|
||||
+ CHECK_BYTE_COUNT_SUBR(padcnt);
|
||||
+ COUNT_BYTES_SUBR(padcnt);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ proto_item_append_text(item, " File: %s", format_text(fn, strlen(fn)));
|
||||
+ proto_item_set_len(item, offset-old_offset);
|
||||
+
|
||||
+ *trunc = FALSE;
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+dissect_4_3_4_6_id_both(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
|
||||
+ int offset, guint16 *bcp, gboolean *trunc)
|
||||
+{
|
||||
+ int fn_len, sfn_len;
|
||||
+ const char *fn, *sfn;
|
||||
+ int old_offset = offset;
|
||||
+ proto_item *item = NULL;
|
||||
+ proto_tree *tree = NULL;
|
||||
+ smb_info_t *si;
|
||||
+ guint32 neo;
|
||||
+ int padcnt;
|
||||
+
|
||||
+ si = (smb_info_t *)pinfo->private_data;
|
||||
+ DISSECTOR_ASSERT(si);
|
||||
+
|
||||
+ if(parent_tree){
|
||||
+ tvb_ensure_bytes_exist(tvb, offset, *bcp);
|
||||
+ item = proto_tree_add_text(parent_tree, tvb, offset, *bcp, "%s",
|
||||
+ val_to_str(si->info_level, ff2_il_vals, "Unknown (0x%02x)"));
|
||||
+ tree = proto_item_add_subtree(item, ett_smb_ff2_data);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * XXX - I have not seen any of these that contain a resume
|
||||
+ * key, even though some of the requests had the "return resume
|
||||
+ * key" flag set.
|
||||
+ */
|
||||
+
|
||||
+ /* next entry offset */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ neo = tvb_get_letohl(tvb, offset);
|
||||
+ proto_tree_add_uint(tree, hf_smb_next_entry_offset, tvb, offset, 4, neo);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* file index */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ proto_tree_add_item(tree, hf_smb_file_index, tvb, offset, 4, TRUE);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* dissect standard 8-byte timestamps */
|
||||
+ offset = dissect_smb_standard_8byte_timestamps(tvb, pinfo, tree, offset, bcp, trunc);
|
||||
+ if (*trunc) {
|
||||
+ return offset;
|
||||
+ }
|
||||
+
|
||||
+ /* end of file */
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_end_of_file, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* allocation size */
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_alloc_size64, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* Extended File Attributes */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ offset = dissect_file_ext_attr(tvb, tree, offset);
|
||||
+ *bcp -= 4;
|
||||
+
|
||||
+ /* file name len */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ fn_len = tvb_get_letohl(tvb, offset);
|
||||
+ proto_tree_add_uint(tree, hf_smb_file_name_len, tvb, offset, 4, fn_len);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /*
|
||||
+ * EA length.
|
||||
+ *
|
||||
+ * XXX - in one captures, this has the topmost bit set, and the
|
||||
+ * rest of the bits have the value 7. Is the topmost bit being
|
||||
+ * set some indication that the value *isn't* the length of
|
||||
+ * the EAs?
|
||||
+ */
|
||||
+ CHECK_BYTE_COUNT_SUBR(4);
|
||||
+ proto_tree_add_item(tree, hf_smb_ea_list_length, tvb, offset, 4, TRUE);
|
||||
+ COUNT_BYTES_SUBR(4);
|
||||
+
|
||||
+ /* short file name len */
|
||||
+ CHECK_BYTE_COUNT_SUBR(1);
|
||||
+ sfn_len = tvb_get_guint8(tvb, offset);
|
||||
+ proto_tree_add_uint(tree, hf_smb_short_file_name_len, tvb, offset, 1, sfn_len);
|
||||
+ COUNT_BYTES_SUBR(1);
|
||||
+
|
||||
+ /* reserved byte */
|
||||
+ CHECK_BYTE_COUNT_SUBR(1);
|
||||
+ proto_tree_add_item(tree, hf_smb_reserved, tvb, offset, 1, TRUE);
|
||||
+ COUNT_BYTES_SUBR(1);
|
||||
+
|
||||
+ /* short file name - it's not always in Unicode */
|
||||
+ sfn = get_unicode_or_ascii_string(tvb, &offset, si->unicode, &sfn_len, FALSE, TRUE, bcp);
|
||||
+ CHECK_STRING_SUBR(sfn);
|
||||
+ proto_tree_add_string(tree, hf_smb_short_file_name, tvb, offset, 24,
|
||||
+ sfn);
|
||||
+ COUNT_BYTES_SUBR(24);
|
||||
+
|
||||
+ /* reserved bytes */
|
||||
+ CHECK_BYTE_COUNT_SUBR(2);
|
||||
+ proto_tree_add_item(tree, hf_smb_reserved, tvb, offset, 2, TRUE);
|
||||
+ COUNT_BYTES_SUBR(2);
|
||||
+
|
||||
+ /* file id */
|
||||
+ CHECK_BYTE_COUNT_SUBR(8);
|
||||
+ proto_tree_add_item(tree, hf_smb_index_number, tvb, offset, 8, TRUE);
|
||||
+ COUNT_BYTES_SUBR(8);
|
||||
+
|
||||
+ /* file name */
|
||||
+ fn = get_unicode_or_ascii_string(tvb, &offset, si->unicode, &fn_len, FALSE, TRUE, bcp);
|
||||
+ CHECK_STRING_SUBR(fn);
|
||||
+ proto_tree_add_string(tree, hf_smb_file_name, tvb, offset, fn_len,
|
||||
+ fn);
|
||||
+ COUNT_BYTES_SUBR(fn_len);
|
||||
+
|
||||
+ if (check_col(pinfo->cinfo, COL_INFO)) {
|
||||
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %s",
|
||||
+ format_text(fn, strlen(fn)));
|
||||
+ }
|
||||
+
|
||||
+ /* skip to next structure */
|
||||
+ if(neo){
|
||||
+ padcnt = (old_offset + neo) - offset;
|
||||
+ if (padcnt < 0) {
|
||||
+ /*
|
||||
+ * XXX - this is bogus; flag it?
|
||||
+ */
|
||||
+ padcnt = 0;
|
||||
+ }
|
||||
+ if (padcnt != 0) {
|
||||
+ CHECK_BYTE_COUNT_SUBR(padcnt);
|
||||
+ COUNT_BYTES_SUBR(padcnt);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ proto_item_append_text(item, " File: %s", format_text(fn, strlen(fn)));
|
||||
+ proto_item_set_len(item, offset-old_offset);
|
||||
+
|
||||
+ *trunc = FALSE;
|
||||
+ return offset;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
dissect_4_3_4_7(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
|
||||
int offset, guint16 *bcp, gboolean *trunc)
|
||||
{
|
||||
@@ -14129,6 +14392,14 @@ dissect_ff2_response_data(tvbuff_t * tvb, packet_info * pinfo,
|
||||
offset = dissect_4_3_4_6(tvb, pinfo, tree, offset, bcp,
|
||||
trunc);
|
||||
break;
|
||||
+ case 0x0105: /*Find File Full Directory Info*/
|
||||
+ offset = dissect_4_3_4_6full(tvb, pinfo, tree, offset, bcp,
|
||||
+ trunc);
|
||||
+ break;
|
||||
+ case 0x0106: /*Find File Id Both Directory Info*/
|
||||
+ offset = dissect_4_3_4_6_id_both(tvb, pinfo, tree, offset, bcp,
|
||||
+ trunc);
|
||||
+ break;
|
||||
case 0x0202: /*Find File UNIX*/
|
||||
offset = dissect_4_3_4_8(tvb, pinfo, tree, offset, bcp,
|
||||
trunc);
|
||||
--
|
||||
1.6.6.1
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
Summary: Network traffic analyzer
|
||||
Name: wireshark
|
||||
Version: 1.2.10
|
||||
Version: 1.4.0
|
||||
%if %{svn_version}
|
||||
Release: 0.%{svn_version}%{?dist}
|
||||
%else
|
||||
@ -30,14 +30,12 @@ Source1: wireshark.pam
|
||||
Source2: wireshark.console
|
||||
Source3: wireshark.desktop
|
||||
Source4: wireshark-autoconf.m4
|
||||
Patch2: wireshark-nfsv4-opts.patch
|
||||
Patch3: wireshark-0.99.7-path.patch
|
||||
Patch4: wireshark-1.1.2-nfs41-backchnl-decode.patch
|
||||
Patch6: wireshark-1.2.4-enable_lua.patch
|
||||
Patch7: wireshark-1.2.8-disable_warning_dialog.patch
|
||||
Patch8: wireshark-1.2.6-nfs40-backchnl-decode.patch
|
||||
Patch9: wireshark-1.2.6-smb-find-full-dir-info.patch
|
||||
Patch10: wireshark-libtool-pie.patch
|
||||
Patch1: wireshark-nfsv4-opts.patch
|
||||
Patch2: wireshark-0.99.7-path.patch
|
||||
Patch3: wireshark-1.2.4-enable_lua.patch
|
||||
Patch4: wireshark-1.2.8-disable_warning_dialog.patch
|
||||
Patch5: wireshark-libtool-pie.patch
|
||||
Patch6: wireshark-1.4.0-python.patch
|
||||
|
||||
Url: http://www.wireshark.org/
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -62,9 +60,6 @@ BuildRequires: portaudio-devel
|
||||
%if %{with_lua}
|
||||
BuildRequires: lua-devel
|
||||
%endif
|
||||
Obsoletes: ethereal
|
||||
Provides: ethereal
|
||||
|
||||
|
||||
%package gnome
|
||||
Summary: Gnome desktop integration for wireshark and wireshark-usermode
|
||||
@ -72,7 +67,6 @@ Group: Applications/Internet
|
||||
Requires: gtk2
|
||||
Requires: usermode >= 1.37
|
||||
Requires: wireshark = %{version}-%{release}
|
||||
Requires: libsmi
|
||||
Requires: xdg-utils, usermode-gtk
|
||||
Requires: GeoIP
|
||||
%if %{with_adns}
|
||||
@ -81,8 +75,6 @@ Requires: adns
|
||||
%if %{with_portaudio}
|
||||
Requires: portaudio
|
||||
%endif
|
||||
Obsoletes: ethereal-gnome
|
||||
Provides: ethereal-gnome
|
||||
|
||||
%package devel
|
||||
Summary: Development headers and libraries for wireshark
|
||||
@ -113,18 +105,16 @@ and plugins.
|
||||
%else
|
||||
%setup -q -n %{name}-%{version}
|
||||
%endif
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
|
||||
%if %{with_lua}
|
||||
%patch6 -p1 -b .enable_lua
|
||||
%patch3 -p1 -b .enable_lua
|
||||
%endif
|
||||
|
||||
%patch7 -p1 -b .dialog
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch4 -p1 -b .dialog
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
|
||||
%build
|
||||
%ifarch s390 s390x sparcv9 sparc64
|
||||
@ -143,11 +133,9 @@ export LDFLAGS="$LDFLAGS -pie"
|
||||
|
||||
%configure \
|
||||
--bindir=%{_sbindir} \
|
||||
--enable-zlib \
|
||||
--enable-ipv6 \
|
||||
--with-libsmi \
|
||||
--with-gnu-ld \
|
||||
--enable-gtk2 \
|
||||
--with-pic \
|
||||
%if %{with_adns}
|
||||
--with-adns \
|
||||
@ -161,7 +149,13 @@ export LDFLAGS="$LDFLAGS -pie"
|
||||
%endif
|
||||
--with-ssl \
|
||||
--disable-warnings-as-errors \
|
||||
--with-plugindir=%{_libdir}/%{name}/plugins/%{version}
|
||||
--with-python \
|
||||
--with-plugins=%{_libdir}/%{name}/plugins/%{version}
|
||||
|
||||
#remove rpath
|
||||
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
|
||||
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
||||
|
||||
time make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
@ -172,9 +166,6 @@ perl -pi -e 's|-L../../epan|-L../../epan/.libs|' plugins/*/*.la
|
||||
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
|
||||
#symlink tshark to tethereal
|
||||
ln -s tshark $RPM_BUILD_ROOT%{_sbindir}/tethereal
|
||||
|
||||
# install support files for usermode, gnome and kde
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/pam.d
|
||||
install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/pam.d/wireshark
|
||||
@ -183,10 +174,6 @@ install -m 644 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/security/console.apps/w
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
|
||||
ln -s consolehelper $RPM_BUILD_ROOT/%{_bindir}/wireshark
|
||||
|
||||
# install man
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_mandir}/man1
|
||||
install -m 644 *.1 $RPM_BUILD_ROOT/%{_mandir}/man1
|
||||
|
||||
# Install python stuff.
|
||||
mkdir -p $RPM_BUILD_ROOT%{python_sitearch}
|
||||
install -m 644 tools/wireshark_be.py tools/wireshark_gen.py $RPM_BUILD_ROOT%{python_sitearch}
|
||||
@ -221,7 +208,6 @@ install -m 644 epan/packet_info.h "${IDIR}/epan/"
|
||||
install -m 644 epan/column-utils.h "${IDIR}/epan/"
|
||||
install -m 644 epan/epan.h "${IDIR}/epan/"
|
||||
install -m 644 epan/range.h "${IDIR}/epan/"
|
||||
install -m 644 epan/gnuc_format_check.h "${IDIR}/epan/"
|
||||
install -m 644 epan/ipv4.h "${IDIR}/epan"
|
||||
install -m 644 epan/nstime.h "${IDIR}/epan/"
|
||||
install -m 644 epan/ipv6-utils.h "${IDIR}/epan/"
|
||||
@ -283,7 +269,6 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_sbindir}/capinfos
|
||||
%{_sbindir}/randpkt
|
||||
%{_sbindir}/dumpcap
|
||||
%{_sbindir}/tethereal
|
||||
%{_sbindir}/rawshark
|
||||
%{python_sitearch}/*.py*
|
||||
%{_libdir}/lib*.so.*
|
||||
@ -296,12 +281,15 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_mandir}/man1/dumpcap.*
|
||||
%{_mandir}/man4/wireshark-filter.*
|
||||
%{_mandir}/man1/rawshark.*
|
||||
%{_mandir}/man1/dftest.*
|
||||
%{_mandir}/man1/randpkt.*
|
||||
%config(noreplace) %{_sysconfdir}/pam.d/wireshark
|
||||
%config(noreplace) %{_sysconfdir}/security/console.apps/wireshark
|
||||
%{_datadir}/wireshark
|
||||
%if %{with_lua}
|
||||
%exclude %{_datadir}/wireshark/init.lua
|
||||
%endif
|
||||
%{_libdir}/wireshark/python
|
||||
|
||||
|
||||
%files gnome
|
||||
@ -324,6 +312,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_sbindir}/idl2wrs
|
||||
|
||||
%changelog
|
||||
* Tue Aug 31 2010 Jan Safranek <jsafrane@redhat.com> - 1.4.0-1
|
||||
- upgrade to 1.4.0
|
||||
- see http://www.wireshark.org/docs/relnotes/wireshark-1.4.0.html
|
||||
|
||||
* Fri Jul 30 2010 Jan Safranek <jsafrane@redhat.com> - 1.2.10-1
|
||||
- upgrade to 1.2.10
|
||||
- see http://www.wireshark.org/docs/relnotes/wireshark-1.2.10.html
|
||||
|
Loading…
Reference in New Issue
Block a user