/src/wireshark/epan/dissectors/packet-dcerpc-rfr.c
Line | Count | Source |
1 | | /* DO NOT EDIT |
2 | | This file was automatically generated by Pidl |
3 | | from rfr.idl and rfr.cnf. |
4 | | |
5 | | Pidl is a perl based IDL compiler for DCE/RPC idl files. |
6 | | It is maintained by the Samba team, not the Wireshark team. |
7 | | Instructions on how to download and install Pidl can be |
8 | | found at https://wiki.wireshark.org/Pidl |
9 | | */ |
10 | | |
11 | | |
12 | | #include "config.h" |
13 | | #include <string.h> |
14 | | #include <wsutil/array.h> |
15 | | #include <epan/packet.h> |
16 | | #include <epan/tfs.h> |
17 | | |
18 | | #include "packet-dcerpc.h" |
19 | | #include "packet-dcerpc-nt.h" |
20 | | #include "packet-windows-common.h" |
21 | | #include "packet-dcerpc-rfr.h" |
22 | | void proto_register_dcerpc_rfr(void); |
23 | | void proto_reg_handoff_dcerpc_rfr(void); |
24 | | |
25 | | /* Ett declarations */ |
26 | | static int ett_dcerpc_rfr; |
27 | | |
28 | | |
29 | | /* Header field declarations */ |
30 | | static int hf_rfr_MAPISTATUS_status; |
31 | | static int hf_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN; |
32 | | static int hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN; |
33 | | static int hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN; |
34 | | static int hf_rfr_RfrGetFQDNFromLegacyDN_ulFlags; |
35 | | static int hf_rfr_RfrGetNewDSA_pUserDN; |
36 | | static int hf_rfr_RfrGetNewDSA_ppszServer; |
37 | | static int hf_rfr_RfrGetNewDSA_ppszUnused; |
38 | | static int hf_rfr_RfrGetNewDSA_ulFlags; |
39 | | static int hf_rfr_opnum; |
40 | | |
41 | | static int proto_dcerpc_rfr; |
42 | | /* Version information */ |
43 | | |
44 | | |
45 | | static e_guid_t uuid_dcerpc_rfr = { |
46 | | 0x1544f5e0, 0x613c, 0x11d1, |
47 | | { 0x93, 0xdf, 0x00, 0xc0, 0x4f, 0xd7, 0xbd, 0x09 } |
48 | | }; |
49 | | static uint16_t ver_dcerpc_rfr = 1; |
50 | | |
51 | | const value_string rfr_MAPISTATUS_vals[] = { |
52 | | { MAPI_E_SUCCESS, "MAPI_E_SUCCESS" }, |
53 | | { MAPI_E_NO_SUPPORT, "MAPI_E_NO_SUPPORT" }, |
54 | | { MAPI_E_BAD_CHARWIDTH, "MAPI_E_BAD_CHARWIDTH" }, |
55 | | { MAPI_E_STRING_TOO_LONG, "MAPI_E_STRING_TOO_LONG" }, |
56 | | { MAPI_E_UNKNOWN_FLAGS, "MAPI_E_UNKNOWN_FLAGS" }, |
57 | | { MAPI_E_INVALID_ENTRYID, "MAPI_E_INVALID_ENTRYID" }, |
58 | | { MAPI_E_INVALID_OBJECT, "MAPI_E_INVALID_OBJECT" }, |
59 | | { MAPI_E_OBJECT_CHANGED, "MAPI_E_OBJECT_CHANGED" }, |
60 | | { MAPI_E_OBJECT_DELETED, "MAPI_E_OBJECT_DELETED" }, |
61 | | { MAPI_E_BUSY, "MAPI_E_BUSY" }, |
62 | | { MAPI_E_NOT_ENOUGH_DISK, "MAPI_E_NOT_ENOUGH_DISK" }, |
63 | | { MAPI_E_NOT_ENOUGH_RESOURCES, "MAPI_E_NOT_ENOUGH_RESOURCES" }, |
64 | | { MAPI_E_NOT_FOUND, "MAPI_E_NOT_FOUND" }, |
65 | | { MAPI_E_VERSION, "MAPI_E_VERSION" }, |
66 | | { MAPI_E_LOGON_FAILED, "MAPI_E_LOGON_FAILED" }, |
67 | | { MAPI_E_SESSION_LIMIT, "MAPI_E_SESSION_LIMIT" }, |
68 | | { MAPI_E_USER_CANCEL, "MAPI_E_USER_CANCEL" }, |
69 | | { MAPI_E_UNABLE_TO_ABORT, "MAPI_E_UNABLE_TO_ABORT" }, |
70 | | { MAPI_E_NETWORK_ERROR, "MAPI_E_NETWORK_ERROR" }, |
71 | | { MAPI_E_DISK_ERROR, "MAPI_E_DISK_ERROR" }, |
72 | | { MAPI_E_TOO_COMPLEX, "MAPI_E_TOO_COMPLEX" }, |
73 | | { MAPI_E_BAD_COLUMN, "MAPI_E_BAD_COLUMN" }, |
74 | | { MAPI_E_EXTENDED_ERROR, "MAPI_E_EXTENDED_ERROR" }, |
75 | | { MAPI_E_COMPUTED, "MAPI_E_COMPUTED" }, |
76 | | { MAPI_E_CORRUPT_DATA, "MAPI_E_CORRUPT_DATA" }, |
77 | | { MAPI_E_UNCONFIGURED, "MAPI_E_UNCONFIGURED" }, |
78 | | { MAPI_E_FAILONEPROVIDER, "MAPI_E_FAILONEPROVIDER" }, |
79 | | { MAPI_E_UNKNOWN_CPID, "MAPI_E_UNKNOWN_CPID" }, |
80 | | { MAPI_E_UNKNOWN_LCID, "MAPI_E_UNKNOWN_LCID" }, |
81 | | { MAPI_E_PASSWORD_CHANGE_REQUIRED, "MAPI_E_PASSWORD_CHANGE_REQUIRED" }, |
82 | | { MAPI_E_PASSWORD_EXPIRED, "MAPI_E_PASSWORD_EXPIRED" }, |
83 | | { MAPI_E_INVALID_WORKSTATION_ACCOUNT, "MAPI_E_INVALID_WORKSTATION_ACCOUNT" }, |
84 | | { MAPI_E_INVALID_ACCESS_TIME, "MAPI_E_INVALID_ACCESS_TIME" }, |
85 | | { MAPI_E_ACCOUNT_DISABLED, "MAPI_E_ACCOUNT_DISABLED" }, |
86 | | { MAPI_E_END_OF_SESSION, "MAPI_E_END_OF_SESSION" }, |
87 | | { MAPI_E_UNKNOWN_ENTRYID, "MAPI_E_UNKNOWN_ENTRYID" }, |
88 | | { MAPI_E_MISSING_REQUIRED_COLUMN, "MAPI_E_MISSING_REQUIRED_COLUMN" }, |
89 | | { MAPI_W_NO_SERVICE, "MAPI_W_NO_SERVICE" }, |
90 | | { MAPI_E_BAD_VALUE, "MAPI_E_BAD_VALUE" }, |
91 | | { MAPI_E_INVALID_TYPE, "MAPI_E_INVALID_TYPE" }, |
92 | | { MAPI_E_TYPE_NO_SUPPORT, "MAPI_E_TYPE_NO_SUPPORT" }, |
93 | | { MAPI_E_UNEXPECTED_TYPE, "MAPI_E_UNEXPECTED_TYPE" }, |
94 | | { MAPI_E_TOO_BIG, "MAPI_E_TOO_BIG" }, |
95 | | { MAPI_E_DECLINE_COPY, "MAPI_E_DECLINE_COPY" }, |
96 | | { MAPI_E_UNEXPECTED_ID, "MAPI_E_UNEXPECTED_ID" }, |
97 | | { MAPI_W_ERRORS_RETURNED, "MAPI_W_ERRORS_RETURNED" }, |
98 | | { MAPI_E_UNABLE_TO_COMPLETE, "MAPI_E_UNABLE_TO_COMPLETE" }, |
99 | | { MAPI_E_TIMEOUT, "MAPI_E_TIMEOUT" }, |
100 | | { MAPI_E_TABLE_EMPTY, "MAPI_E_TABLE_EMPTY" }, |
101 | | { MAPI_E_TABLE_TOO_BIG, "MAPI_E_TABLE_TOO_BIG" }, |
102 | | { MAPI_E_INVALID_BOOKMARK, "MAPI_E_INVALID_BOOKMARK" }, |
103 | | { MAPI_W_POSITION_CHANGED, "MAPI_W_POSITION_CHANGED" }, |
104 | | { MAPI_W_APPROX_COUNT, "MAPI_W_APPROX_COUNT" }, |
105 | | { MAPI_E_WAIT, "MAPI_E_WAIT" }, |
106 | | { MAPI_E_CANCEL, "MAPI_E_CANCEL" }, |
107 | | { MAPI_E_NOT_ME, "MAPI_E_NOT_ME" }, |
108 | | { MAPI_W_CANCEL_MESSAGE, "MAPI_W_CANCEL_MESSAGE" }, |
109 | | { MAPI_E_CORRUPT_STORE, "MAPI_E_CORRUPT_STORE" }, |
110 | | { MAPI_E_NOT_IN_QUEUE, "MAPI_E_NOT_IN_QUEUE" }, |
111 | | { MAPI_E_NO_SUPPRESS, "MAPI_E_NO_SUPPRESS" }, |
112 | | { MAPI_E_COLLISION, "MAPI_E_COLLISION" }, |
113 | | { MAPI_E_NOT_INITIALIZED, "MAPI_E_NOT_INITIALIZED" }, |
114 | | { MAPI_E_NON_STANDARD, "MAPI_E_NON_STANDARD" }, |
115 | | { MAPI_E_NO_RECIPIENTS, "MAPI_E_NO_RECIPIENTS" }, |
116 | | { MAPI_E_SUBMITTED, "MAPI_E_SUBMITTED" }, |
117 | | { MAPI_E_HAS_FOLDERS, "MAPI_E_HAS_FOLDERS" }, |
118 | | { MAPI_E_HAS_MESSAGES, "MAPI_E_HAS_MESSAGES" }, |
119 | | { MAPI_E_FOLDER_CYCLE, "MAPI_E_FOLDER_CYCLE" }, |
120 | | { MAPI_W_PARTIAL_COMPLETION, "MAPI_W_PARTIAL_COMPLETION" }, |
121 | | { MAPI_E_AMBIGUOUS_RECIP, "MAPI_E_AMBIGUOUS_RECIP" }, |
122 | | { MAPI_E_RESERVED, "MAPI_E_RESERVED" }, |
123 | | { 0, NULL } |
124 | | }; |
125 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ulFlags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
126 | | static unsigned rfr_dissect_element_RfrGetNewDSA_pUserDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
127 | | static unsigned rfr_dissect_element_RfrGetNewDSA_pUserDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
128 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
129 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszUnused_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
130 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszUnused__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
131 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszServer(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
132 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszServer_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
133 | | static unsigned rfr_dissect_element_RfrGetNewDSA_ppszServer__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
134 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
135 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
136 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
137 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
138 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
139 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
140 | | static unsigned rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_); |
141 | | |
142 | | |
143 | | /* IDL: enum { */ |
144 | | /* IDL: MAPI_E_SUCCESS=0x00000000, */ |
145 | | /* IDL: MAPI_E_NO_SUPPORT=0x80040102, */ |
146 | | /* IDL: MAPI_E_BAD_CHARWIDTH=0x80040103, */ |
147 | | /* IDL: MAPI_E_STRING_TOO_LONG=0x80040105, */ |
148 | | /* IDL: MAPI_E_UNKNOWN_FLAGS=0x80040106, */ |
149 | | /* IDL: MAPI_E_INVALID_ENTRYID=0x80040107, */ |
150 | | /* IDL: MAPI_E_INVALID_OBJECT=0x80040108, */ |
151 | | /* IDL: MAPI_E_OBJECT_CHANGED=0x80040109, */ |
152 | | /* IDL: MAPI_E_OBJECT_DELETED=0x8004010A, */ |
153 | | /* IDL: MAPI_E_BUSY=0x8004010B, */ |
154 | | /* IDL: MAPI_E_NOT_ENOUGH_DISK=0x8004010D, */ |
155 | | /* IDL: MAPI_E_NOT_ENOUGH_RESOURCES=0x8004010E, */ |
156 | | /* IDL: MAPI_E_NOT_FOUND=0x8004010F, */ |
157 | | /* IDL: MAPI_E_VERSION=0x80040110, */ |
158 | | /* IDL: MAPI_E_LOGON_FAILED=0x80040111, */ |
159 | | /* IDL: MAPI_E_SESSION_LIMIT=0x80040112, */ |
160 | | /* IDL: MAPI_E_USER_CANCEL=0x80040113, */ |
161 | | /* IDL: MAPI_E_UNABLE_TO_ABORT=0x80040114, */ |
162 | | /* IDL: MAPI_E_NETWORK_ERROR=0x80040115, */ |
163 | | /* IDL: MAPI_E_DISK_ERROR=0x80040116, */ |
164 | | /* IDL: MAPI_E_TOO_COMPLEX=0x80040117, */ |
165 | | /* IDL: MAPI_E_BAD_COLUMN=0x80040118, */ |
166 | | /* IDL: MAPI_E_EXTENDED_ERROR=0x80040119, */ |
167 | | /* IDL: MAPI_E_COMPUTED=0x8004011A, */ |
168 | | /* IDL: MAPI_E_CORRUPT_DATA=0x8004011B, */ |
169 | | /* IDL: MAPI_E_UNCONFIGURED=0x8004011C, */ |
170 | | /* IDL: MAPI_E_FAILONEPROVIDER=0x8004011D, */ |
171 | | /* IDL: MAPI_E_UNKNOWN_CPID=0x8004011E, */ |
172 | | /* IDL: MAPI_E_UNKNOWN_LCID=0x8004011F, */ |
173 | | /* IDL: MAPI_E_PASSWORD_CHANGE_REQUIRED=0x80040120, */ |
174 | | /* IDL: MAPI_E_PASSWORD_EXPIRED=0x80040121, */ |
175 | | /* IDL: MAPI_E_INVALID_WORKSTATION_ACCOUNT=0x80040122, */ |
176 | | /* IDL: MAPI_E_INVALID_ACCESS_TIME=0x80040123, */ |
177 | | /* IDL: MAPI_E_ACCOUNT_DISABLED=0x80040124, */ |
178 | | /* IDL: MAPI_E_END_OF_SESSION=0x80040200, */ |
179 | | /* IDL: MAPI_E_UNKNOWN_ENTRYID=0x80040201, */ |
180 | | /* IDL: MAPI_E_MISSING_REQUIRED_COLUMN=0x80040202, */ |
181 | | /* IDL: MAPI_W_NO_SERVICE=0x80040203, */ |
182 | | /* IDL: MAPI_E_BAD_VALUE=0x80040301, */ |
183 | | /* IDL: MAPI_E_INVALID_TYPE=0x80040302, */ |
184 | | /* IDL: MAPI_E_TYPE_NO_SUPPORT=0x80040303, */ |
185 | | /* IDL: MAPI_E_UNEXPECTED_TYPE=0x80040304, */ |
186 | | /* IDL: MAPI_E_TOO_BIG=0x80040305, */ |
187 | | /* IDL: MAPI_E_DECLINE_COPY=0x80040306, */ |
188 | | /* IDL: MAPI_E_UNEXPECTED_ID=0x80040307, */ |
189 | | /* IDL: MAPI_W_ERRORS_RETURNED=0x80040380, */ |
190 | | /* IDL: MAPI_E_UNABLE_TO_COMPLETE=0x80040400, */ |
191 | | /* IDL: MAPI_E_TIMEOUT=0x80040401, */ |
192 | | /* IDL: MAPI_E_TABLE_EMPTY=0x80040402, */ |
193 | | /* IDL: MAPI_E_TABLE_TOO_BIG=0x80040403, */ |
194 | | /* IDL: MAPI_E_INVALID_BOOKMARK=0x80040405, */ |
195 | | /* IDL: MAPI_W_POSITION_CHANGED=0x80040481, */ |
196 | | /* IDL: MAPI_W_APPROX_COUNT=0x80040482, */ |
197 | | /* IDL: MAPI_E_WAIT=0x80040500, */ |
198 | | /* IDL: MAPI_E_CANCEL=0x80040501, */ |
199 | | /* IDL: MAPI_E_NOT_ME=0x80040502, */ |
200 | | /* IDL: MAPI_W_CANCEL_MESSAGE=0x80040580, */ |
201 | | /* IDL: MAPI_E_CORRUPT_STORE=0x80040600, */ |
202 | | /* IDL: MAPI_E_NOT_IN_QUEUE=0x80040601, */ |
203 | | /* IDL: MAPI_E_NO_SUPPRESS=0x80040602, */ |
204 | | /* IDL: MAPI_E_COLLISION=0x80040604, */ |
205 | | /* IDL: MAPI_E_NOT_INITIALIZED=0x80040605, */ |
206 | | /* IDL: MAPI_E_NON_STANDARD=0x80040606, */ |
207 | | /* IDL: MAPI_E_NO_RECIPIENTS=0x80040607, */ |
208 | | /* IDL: MAPI_E_SUBMITTED=0x80040608, */ |
209 | | /* IDL: MAPI_E_HAS_FOLDERS=0x80040609, */ |
210 | | /* IDL: MAPI_E_HAS_MESSAGES=0x8004060A, */ |
211 | | /* IDL: MAPI_E_FOLDER_CYCLE=0x8004060B, */ |
212 | | /* IDL: MAPI_W_PARTIAL_COMPLETION=0x80040680, */ |
213 | | /* IDL: MAPI_E_AMBIGUOUS_RECIP=0x80040700, */ |
214 | | /* IDL: MAPI_E_RESERVED=0xFFFFFFFF, */ |
215 | | /* IDL: } */ |
216 | | |
217 | | unsigned |
218 | | rfr_dissect_enum_MAPISTATUS(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_) |
219 | 0 | { |
220 | 0 | uint32_t parameter=0; |
221 | 0 | if (param) { |
222 | 0 | parameter = *param; |
223 | 0 | } |
224 | 0 | offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); |
225 | 0 | if (param) { |
226 | 0 | *param = parameter; |
227 | 0 | } |
228 | 0 | return offset; |
229 | 0 | } |
230 | | |
231 | | static unsigned |
232 | | rfr_dissect_element_RfrGetNewDSA_ulFlags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
233 | 0 | { |
234 | 0 | offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_RfrGetNewDSA_ulFlags, 0); |
235 | |
|
236 | 0 | return offset; |
237 | 0 | } |
238 | | |
239 | | static unsigned |
240 | | rfr_dissect_element_RfrGetNewDSA_pUserDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
241 | 0 | { |
242 | 0 | offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetNewDSA_pUserDN_, NDR_POINTER_REF, "Pointer to PUserDN (uint8)",hf_rfr_RfrGetNewDSA_pUserDN); |
243 | |
|
244 | 0 | return offset; |
245 | 0 | } |
246 | | |
247 | | static unsigned |
248 | | rfr_dissect_element_RfrGetNewDSA_pUserDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
249 | 0 | { |
250 | 0 | char *data; |
251 | |
|
252 | 0 | offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_pUserDN, false, &data); |
253 | 0 | proto_item_append_text(tree, ": %s", data); |
254 | |
|
255 | 0 | return offset; |
256 | 0 | } |
257 | | |
258 | | static unsigned |
259 | | rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
260 | 0 | { |
261 | 0 | offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetNewDSA_ppszUnused_, NDR_POINTER_UNIQUE, "Pointer to PpszUnused (uint8)",hf_rfr_RfrGetNewDSA_ppszUnused); |
262 | |
|
263 | 0 | return offset; |
264 | 0 | } |
265 | | |
266 | | static unsigned |
267 | | rfr_dissect_element_RfrGetNewDSA_ppszUnused_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
268 | 0 | { |
269 | 0 | offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetNewDSA_ppszUnused__, NDR_POINTER_UNIQUE, "Pointer to PpszUnused (uint8)",hf_rfr_RfrGetNewDSA_ppszUnused); |
270 | |
|
271 | 0 | return offset; |
272 | 0 | } |
273 | | |
274 | | static unsigned |
275 | | rfr_dissect_element_RfrGetNewDSA_ppszUnused__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
276 | 0 | { |
277 | 0 | char *data; |
278 | |
|
279 | 0 | offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszUnused, false, &data); |
280 | 0 | proto_item_append_text(tree, ": %s", data); |
281 | |
|
282 | 0 | return offset; |
283 | 0 | } |
284 | | |
285 | | static unsigned |
286 | | rfr_dissect_element_RfrGetNewDSA_ppszServer(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
287 | 0 | { |
288 | 0 | offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetNewDSA_ppszServer_, NDR_POINTER_UNIQUE, "Pointer to PpszServer (uint8)",hf_rfr_RfrGetNewDSA_ppszServer); |
289 | |
|
290 | 0 | return offset; |
291 | 0 | } |
292 | | |
293 | | static unsigned |
294 | | rfr_dissect_element_RfrGetNewDSA_ppszServer_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
295 | 0 | { |
296 | 0 | offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetNewDSA_ppszServer__, NDR_POINTER_UNIQUE, "Pointer to PpszServer (uint8)",hf_rfr_RfrGetNewDSA_ppszServer); |
297 | |
|
298 | 0 | return offset; |
299 | 0 | } |
300 | | |
301 | | static unsigned |
302 | | rfr_dissect_element_RfrGetNewDSA_ppszServer__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
303 | 0 | { |
304 | 0 | char *data; |
305 | |
|
306 | 0 | offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetNewDSA_ppszServer, false, &data); |
307 | 0 | proto_item_append_text(tree, ": %s", data); |
308 | |
|
309 | 0 | return offset; |
310 | 0 | } |
311 | | |
312 | | /* IDL: MAPISTATUS RfrGetNewDSA( */ |
313 | | /* IDL: [in] uint32 ulFlags, */ |
314 | | /* IDL: [charset(DOS)] [in] [ref] uint8 *pUserDN, */ |
315 | | /* IDL: [charset(DOS)] [in] [out] [unique(1)] uint8 **ppszUnused, */ |
316 | | /* IDL: [charset(DOS)] [in] [out] [unique(1)] uint8 **ppszServer */ |
317 | | /* IDL: ); */ |
318 | | |
319 | | static unsigned |
320 | | rfr_dissect_RfrGetNewDSA_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
321 | 0 | { |
322 | 0 | uint32_t status; |
323 | |
|
324 | 0 | di->dcerpc_procedure_name="RfrGetNewDSA"; |
325 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvb, offset, pinfo, tree, di, drep); |
326 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
327 | |
|
328 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_ppszServer(tvb, offset, pinfo, tree, di, drep); |
329 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
330 | |
|
331 | 0 | offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_MAPISTATUS_status, &status); |
332 | 0 | if (status != 0) |
333 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str(pinfo->pool, status, rfr_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x")); |
334 | |
|
335 | 0 | return offset; |
336 | 0 | } |
337 | | |
338 | | static unsigned |
339 | | rfr_dissect_RfrGetNewDSA_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
340 | 0 | { |
341 | 0 | di->dcerpc_procedure_name="RfrGetNewDSA"; |
342 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_ulFlags(tvb, offset, pinfo, tree, di, drep); |
343 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
344 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_pUserDN(tvb, offset, pinfo, tree, di, drep); |
345 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
346 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_ppszUnused(tvb, offset, pinfo, tree, di, drep); |
347 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
348 | 0 | offset = rfr_dissect_element_RfrGetNewDSA_ppszServer(tvb, offset, pinfo, tree, di, drep); |
349 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
350 | 0 | return offset; |
351 | 0 | } |
352 | | |
353 | | static unsigned |
354 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
355 | 0 | { |
356 | 0 | offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_RfrGetFQDNFromLegacyDN_ulFlags, 0); |
357 | |
|
358 | 0 | return offset; |
359 | 0 | } |
360 | | |
361 | | static unsigned |
362 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
363 | 0 | { |
364 | 0 | offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN, 0); |
365 | |
|
366 | 0 | return offset; |
367 | 0 | } |
368 | | |
369 | | static unsigned |
370 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
371 | 0 | { |
372 | 0 | offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_, NDR_POINTER_REF, "Pointer to SzMailboxServerDN (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN); |
373 | |
|
374 | 0 | return offset; |
375 | 0 | } |
376 | | |
377 | | static unsigned |
378 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
379 | 0 | { |
380 | 0 | char *data; |
381 | |
|
382 | 0 | offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN, false, &data); |
383 | 0 | proto_item_append_text(tree, ": %s", data); |
384 | |
|
385 | 0 | return offset; |
386 | 0 | } |
387 | | |
388 | | static unsigned |
389 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
390 | 0 | { |
391 | 0 | offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_, NDR_POINTER_REF, "Pointer to PpszServerFQDN (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN); |
392 | |
|
393 | 0 | return offset; |
394 | 0 | } |
395 | | |
396 | | static unsigned |
397 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
398 | 0 | { |
399 | 0 | offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__, NDR_POINTER_UNIQUE, "Pointer to PpszServerFQDN (uint8)",hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN); |
400 | |
|
401 | 0 | return offset; |
402 | 0 | } |
403 | | |
404 | | static unsigned |
405 | | rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
406 | 0 | { |
407 | 0 | char *data; |
408 | |
|
409 | 0 | offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN, false, &data); |
410 | 0 | proto_item_append_text(tree, ": %s", data); |
411 | |
|
412 | 0 | return offset; |
413 | 0 | } |
414 | | |
415 | | /* IDL: MAPISTATUS RfrGetFQDNFromLegacyDN( */ |
416 | | /* IDL: [in] uint32 ulFlags, */ |
417 | | /* IDL: [in] [range(10,1024)] uint32 cbMailboxServerDN, */ |
418 | | /* IDL: [charset(DOS)] [in] [ref] [size_is(cbMailboxServerDN)] uint8 *szMailboxServerDN, */ |
419 | | /* IDL: [charset(DOS)] [out] [ref] uint8 **ppszServerFQDN */ |
420 | | /* IDL: ); */ |
421 | | |
422 | | static unsigned |
423 | | rfr_dissect_RfrGetFQDNFromLegacyDN_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
424 | 0 | { |
425 | 0 | uint32_t status; |
426 | |
|
427 | 0 | di->dcerpc_procedure_name="RfrGetFQDNFromLegacyDN"; |
428 | 0 | offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_ppszServerFQDN(tvb, offset, pinfo, tree, di, drep); |
429 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
430 | |
|
431 | 0 | offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_rfr_MAPISTATUS_status, &status); |
432 | 0 | if (status != 0) |
433 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str(pinfo->pool, status, rfr_MAPISTATUS_vals, "Unknown MAPISTATUS error 0x%08x")); |
434 | |
|
435 | 0 | return offset; |
436 | 0 | } |
437 | | |
438 | | static unsigned |
439 | | rfr_dissect_RfrGetFQDNFromLegacyDN_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_) |
440 | 0 | { |
441 | 0 | di->dcerpc_procedure_name="RfrGetFQDNFromLegacyDN"; |
442 | 0 | offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_ulFlags(tvb, offset, pinfo, tree, di, drep); |
443 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
444 | 0 | offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_cbMailboxServerDN(tvb, offset, pinfo, tree, di, drep); |
445 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
446 | 0 | offset = rfr_dissect_element_RfrGetFQDNFromLegacyDN_szMailboxServerDN(tvb, offset, pinfo, tree, di, drep); |
447 | 0 | offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); |
448 | 0 | return offset; |
449 | 0 | } |
450 | | |
451 | | |
452 | | static const dcerpc_sub_dissector rfr_dissectors[] = { |
453 | | { 0, "RfrGetNewDSA", |
454 | | rfr_dissect_RfrGetNewDSA_request, rfr_dissect_RfrGetNewDSA_response}, |
455 | | { 1, "RfrGetFQDNFromLegacyDN", |
456 | | rfr_dissect_RfrGetFQDNFromLegacyDN_request, rfr_dissect_RfrGetFQDNFromLegacyDN_response}, |
457 | | { 0, NULL, NULL, NULL } |
458 | | }; |
459 | | |
460 | | void proto_register_dcerpc_rfr(void) |
461 | 16 | { |
462 | 16 | static hf_register_info hf[] = { |
463 | 16 | { &hf_rfr_MAPISTATUS_status, |
464 | 16 | { "MAPISTATUS", "rfr.MAPISTATUS_status", FT_UINT32, BASE_HEX, VALS(rfr_MAPISTATUS_vals), 0, NULL, HFILL }}, |
465 | 16 | { &hf_rfr_RfrGetFQDNFromLegacyDN_cbMailboxServerDN, |
466 | 16 | { "CbMailboxServerDN", "rfr.RfrGetFQDNFromLegacyDN.cbMailboxServerDN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, |
467 | 16 | { &hf_rfr_RfrGetFQDNFromLegacyDN_ppszServerFQDN, |
468 | 16 | { "PpszServerFQDN", "rfr.RfrGetFQDNFromLegacyDN.ppszServerFQDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
469 | 16 | { &hf_rfr_RfrGetFQDNFromLegacyDN_szMailboxServerDN, |
470 | 16 | { "SzMailboxServerDN", "rfr.RfrGetFQDNFromLegacyDN.szMailboxServerDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
471 | 16 | { &hf_rfr_RfrGetFQDNFromLegacyDN_ulFlags, |
472 | 16 | { "UlFlags", "rfr.RfrGetFQDNFromLegacyDN.ulFlags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, |
473 | 16 | { &hf_rfr_RfrGetNewDSA_pUserDN, |
474 | 16 | { "PUserDN", "rfr.RfrGetNewDSA.pUserDN", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
475 | 16 | { &hf_rfr_RfrGetNewDSA_ppszServer, |
476 | 16 | { "PpszServer", "rfr.RfrGetNewDSA.ppszServer", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
477 | 16 | { &hf_rfr_RfrGetNewDSA_ppszUnused, |
478 | 16 | { "PpszUnused", "rfr.RfrGetNewDSA.ppszUnused", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
479 | 16 | { &hf_rfr_RfrGetNewDSA_ulFlags, |
480 | 16 | { "UlFlags", "rfr.RfrGetNewDSA.ulFlags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, |
481 | 16 | { &hf_rfr_opnum, |
482 | 16 | { "Operation", "rfr.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, |
483 | 16 | }; |
484 | | |
485 | | |
486 | 16 | static int *ett[] = { |
487 | 16 | &ett_dcerpc_rfr, |
488 | 16 | }; |
489 | | |
490 | 16 | proto_dcerpc_rfr = proto_register_protocol("Exchange 2003 Directory Request For Response", "RFR", "rfr"); |
491 | 16 | proto_register_field_array(proto_dcerpc_rfr, hf, array_length (hf)); |
492 | 16 | proto_register_subtree_array(ett, array_length(ett)); |
493 | 16 | } |
494 | | |
495 | | void proto_reg_handoff_dcerpc_rfr(void) |
496 | 16 | { |
497 | 16 | dcerpc_init_uuid(proto_dcerpc_rfr, ett_dcerpc_rfr, |
498 | 16 | &uuid_dcerpc_rfr, ver_dcerpc_rfr, |
499 | 16 | rfr_dissectors, hf_rfr_opnum); |
500 | 16 | } |