Final updates for 0.9.14.
[metze/wireshark/wip.git] / packet-dcerpc-dfs.c
1 /* packet-dcerpc-dfs.c
2  * Routines for SMB \\PIPE\\netdfs packet disassembly
3  * Copyright 2001, Tim Potter <tpot@samba.org>
4  *
5  * $Id: packet-dcerpc-dfs.c,v 1.6 2003/06/26 04:30:27 tpot Exp $
6  *
7  * Ethereal - Network traffic analyzer
8  * By Gerald Combs <gerald@ethereal.com>
9  * Copyright 1998 Gerald Combs
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #ifdef HAVE_CONFIG_H
27 #include "config.h"
28 #endif
29
30 #include <glib.h>
31 #include <epan/packet.h>
32 #include "packet-dcerpc.h"
33 #include "packet-dcerpc-dfs.h"
34
35 static int proto_dcerpc_dfs = -1;
36 static gint ett_dcerpc_dfs = -1;
37
38 static int hf_dfs_opnum = -1;
39
40 static e_uuid_t uuid_dcerpc_dfs = {
41         0x4fc742e0, 0x4a10, 0x11cf,
42         { 0x82, 0x73, 0x00, 0xaa, 0x00, 0x4a, 0xe6, 0x73 }
43 };
44
45 static guint16 ver_dcerpc_dfs = 3;
46
47 static dcerpc_sub_dissector dcerpc_dfs_dissectors[] = {
48         { DFS_EXIST, "Exist", NULL, NULL },
49         { DFS_ADD, "Add", NULL, NULL },
50         { DFS_REMOVE, "Remove", NULL, NULL },
51         { DFS_GET_INFO, "GetInfo", NULL, NULL },
52         { DFS_ENUM, "Enum", NULL, NULL },
53
54         {0, NULL, NULL,  NULL }
55 };
56
57 void
58 proto_register_dcerpc_dfs(void)
59 {
60         static hf_register_info hf[] = {
61                 { &hf_dfs_opnum,
62                   { "Operation", "dfs.opnum", FT_UINT16, BASE_DEC,
63                     NULL, 0x0, "Operation", HFILL }},
64         };
65
66         static gint *ett[] = {
67                 &ett_dcerpc_dfs
68         };
69
70         proto_dcerpc_dfs = proto_register_protocol(
71                 "Microsoft Distributed File System", "DFS", "dfs");
72
73         proto_register_field_array(proto_dcerpc_dfs, hf, array_length(hf));
74
75         proto_register_subtree_array(ett, array_length(ett));
76 }
77
78 void
79 proto_reg_handoff_dcerpc_dfs(void)
80 {
81         header_field_info *hf_info;
82
83         /* Register protocol as dcerpc */
84
85         dcerpc_init_uuid(proto_dcerpc_dfs, ett_dcerpc_dfs, &uuid_dcerpc_dfs,
86                          ver_dcerpc_dfs, dcerpc_dfs_dissectors, hf_dfs_opnum);
87
88         /* Set opnum strings from subdissector list */
89
90         hf_info = proto_registrar_get_nth(hf_dfs_opnum);
91         hf_info->strings = value_string_from_subdissectors(
92                 dcerpc_dfs_dissectors, array_length(dcerpc_dfs_dissectors));
93 }