330fca4ff85bcd79837abc7637c3964c26d377b2
[metze/samba/wip.git] / bin / default / librpc / gen_ndr / packet-dcerpc-browser.c
1 /* DO NOT EDIT
2         This filter was automatically generated
3         from /home/metze/devel/samba/4.0/master4-franky/librpc/idl/browser.idl and /home/metze/devel/samba/4.0/master4-franky/librpc/idl/browser.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 http://wiki.wireshark.org/Pidl
9
10         $Id$
11 */
12
13
14 #include "config.h"
15 #ifdef _MSC_VER
16 #pragma warning(disable:4005)
17 #pragma warning(disable:4013)
18 #pragma warning(disable:4018)
19 #pragma warning(disable:4101)
20 #endif
21
22 #include <glib.h>
23 #include <string.h>
24 #include <epan/packet.h>
25
26 #include "packet-dcerpc.h"
27 #include "packet-dcerpc-nt.h"
28 #include "packet-windows-common.h"
29 #include "packet-dcerpc-browser.h"
30
31 /* Ett declarations */
32 static gint ett_dcerpc_browser = -1;
33 static gint ett_browser_BrowserrSrvInfo100Ctr = -1;
34 static gint ett_browser_BrowserrSrvInfo101Ctr = -1;
35 static gint ett_browser_BrowserrSrvInfoUnion = -1;
36 static gint ett_browser_BrowserrSrvInfo = -1;
37
38
39 /* Header field declarations */
40 static gint hf_browser_BrowserrQueryOtherDomains_info = -1;
41 static gint hf_browser_BrowserrSrvInfo101Ctr_entries = -1;
42 static gint hf_browser_BrowserrSrvInfoUnion_val101_info101 = -1;
43 static gint hf_browser_BrowserrSrvInfo_info = -1;
44 static gint hf_browser_BrowserrQueryOtherDomains_total_entries = -1;
45 static gint hf_browser_werror = -1;
46 static gint hf_browser_BrowserrSrvInfo101Ctr_entries_read = -1;
47 static gint hf_browser_BrowserrSrvInfo100Ctr_entries_read = -1;
48 static gint hf_browser_opnum = -1;
49 static gint hf_browser_BrowserrQueryOtherDomains_server_unc = -1;
50 static gint hf_browser_BrowserrSrvInfoUnion_val100_info100 = -1;
51 static gint hf_browser_BrowserrSrvInfo_level = -1;
52 static gint hf_browser_BrowserrSrvInfo100Ctr_entries = -1;
53
54 static gint proto_dcerpc_browser = -1;
55 /* Version information */
56
57
58 static e_uuid_t uuid_dcerpc_browser = {
59         0x6bffd098, 0xa112, 0x3610,
60         { 0x98, 0x33, 0x01, 0x28, 0x92, 0x02, 0x01, 0x62 }
61 };
62 static guint16 ver_dcerpc_browser = 0;
63
64 static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
65 static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
66 static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
67 static int browser_dissect_element_BrowserrSrvInfo100Ctr_entries__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
68 static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
69 static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
70 static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
71 static int browser_dissect_element_BrowserrSrvInfo101Ctr_entries__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
72 static int browser_dissect_element_BrowserrSrvInfoUnion_val100_info100(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
73 static int browser_dissect_element_BrowserrSrvInfoUnion_val100_info100_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
74 static int browser_dissect_element_BrowserrSrvInfoUnion_val101_info101(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
75 static int browser_dissect_element_BrowserrSrvInfoUnion_val101_info101_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
76 static int browser_dissect_element_BrowserrSrvInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *level);
77 static int browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *level);
78 static int browser_dissect_element_BrowserrQueryOtherDomains_server_unc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
79 static int browser_dissect_element_BrowserrQueryOtherDomains_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
80 static int browser_dissect_element_BrowserrQueryOtherDomains_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
81 static int browser_dissect_element_BrowserrQueryOtherDomains_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
82 static int browser_dissect_element_BrowserrQueryOtherDomains_total_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
83 static int browser_dissect_element_BrowserrQueryOtherDomains_total_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_);
84
85
86 /* IDL: struct { */
87 /* IDL:         uint32 entries_read; */
88 /* IDL:         [unique(1)] [size_is(entries_read)] srvsvc_NetSrvInfo100 *entries; */
89 /* IDL: } */
90
91 static int
92 browser_dissect_element_BrowserrSrvInfo100Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
93 {
94         offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_browser_BrowserrSrvInfo100Ctr_entries_read, 0);
95
96         return offset;
97 }
98
99 static int
100 browser_dissect_element_BrowserrSrvInfo100Ctr_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
101 {
102         offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfo100Ctr_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (srvsvc_NetSrvInfo100)",hf_browser_BrowserrSrvInfo100Ctr_entries);
103
104         return offset;
105 }
106
107 static int
108 browser_dissect_element_BrowserrSrvInfo100Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
109 {
110         offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfo100Ctr_entries__);
111
112         return offset;
113 }
114
115 static int
116 browser_dissect_element_BrowserrSrvInfo100Ctr_entries__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
117 {
118         offset = browser_dissect_struct_srvsvc_NetSrvInfo100(tvb,offset,pinfo,tree,drep,hf_browser_BrowserrSrvInfo100Ctr_entries,0);
119
120         return offset;
121 }
122
123 int
124 browser_dissect_struct_BrowserrSrvInfo100Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
125 {
126         proto_item *item = NULL;
127         proto_tree *tree = NULL;
128         dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
129         int old_offset;
130
131         ALIGN_TO_5_BYTES;
132
133         old_offset = offset;
134
135         if (parent_tree) {
136                 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
137                 tree = proto_item_add_subtree(item, ett_browser_BrowserrSrvInfo100Ctr);
138         }
139         
140         offset = browser_dissect_element_BrowserrSrvInfo100Ctr_entries_read(tvb, offset, pinfo, tree, drep);
141
142         offset = browser_dissect_element_BrowserrSrvInfo100Ctr_entries(tvb, offset, pinfo, tree, drep);
143
144
145         proto_item_set_len(item, offset-old_offset);
146
147
148         if (di->call_data->flags & DCERPC_IS_NDR64) {
149                 ALIGN_TO_5_BYTES;
150         }
151
152         return offset;
153 }
154
155
156 /* IDL: struct { */
157 /* IDL:         uint32 entries_read; */
158 /* IDL:         [unique(1)] [size_is(entries_read)] srvsvc_NetSrvInfo101 *entries; */
159 /* IDL: } */
160
161 static int
162 browser_dissect_element_BrowserrSrvInfo101Ctr_entries_read(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
163 {
164         offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_browser_BrowserrSrvInfo101Ctr_entries_read, 0);
165
166         return offset;
167 }
168
169 static int
170 browser_dissect_element_BrowserrSrvInfo101Ctr_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
171 {
172         offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfo101Ctr_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (srvsvc_NetSrvInfo101)",hf_browser_BrowserrSrvInfo101Ctr_entries);
173
174         return offset;
175 }
176
177 static int
178 browser_dissect_element_BrowserrSrvInfo101Ctr_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
179 {
180         offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfo101Ctr_entries__);
181
182         return offset;
183 }
184
185 static int
186 browser_dissect_element_BrowserrSrvInfo101Ctr_entries__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
187 {
188         offset = browser_dissect_struct_srvsvc_NetSrvInfo101(tvb,offset,pinfo,tree,drep,hf_browser_BrowserrSrvInfo101Ctr_entries,0);
189
190         return offset;
191 }
192
193 int
194 browser_dissect_struct_BrowserrSrvInfo101Ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
195 {
196         proto_item *item = NULL;
197         proto_tree *tree = NULL;
198         dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
199         int old_offset;
200
201         ALIGN_TO_5_BYTES;
202
203         old_offset = offset;
204
205         if (parent_tree) {
206                 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
207                 tree = proto_item_add_subtree(item, ett_browser_BrowserrSrvInfo101Ctr);
208         }
209         
210         offset = browser_dissect_element_BrowserrSrvInfo101Ctr_entries_read(tvb, offset, pinfo, tree, drep);
211
212         offset = browser_dissect_element_BrowserrSrvInfo101Ctr_entries(tvb, offset, pinfo, tree, drep);
213
214
215         proto_item_set_len(item, offset-old_offset);
216
217
218         if (di->call_data->flags & DCERPC_IS_NDR64) {
219                 ALIGN_TO_5_BYTES;
220         }
221
222         return offset;
223 }
224
225
226 /* IDL: [switch_type(uint32)] union { */
227 /* IDL: [case(100)] [unique(1)] [case(100)] BrowserrSrvInfo100Ctr *info100; */
228 /* IDL: [case(101)] [unique(1)] [case(101)] BrowserrSrvInfo101Ctr *info101; */
229 /* IDL: [default] ; */
230 /* IDL: } */
231
232 static int
233 browser_dissect_element_BrowserrSrvInfoUnion_val100_info100(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
234 {
235         offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfoUnion_val100_info100_, NDR_POINTER_UNIQUE, "Pointer to Info100 (BrowserrSrvInfo100Ctr)",hf_browser_BrowserrSrvInfoUnion_val100_info100);
236
237         return offset;
238 }
239
240 static int
241 browser_dissect_element_BrowserrSrvInfoUnion_val100_info100_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
242 {
243         offset = browser_dissect_struct_BrowserrSrvInfo100Ctr(tvb,offset,pinfo,tree,drep,hf_browser_BrowserrSrvInfoUnion_val100_info100,0);
244
245         return offset;
246 }
247
248 static int
249 browser_dissect_element_BrowserrSrvInfoUnion_val101_info101(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
250 {
251         offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrSrvInfoUnion_val101_info101_, NDR_POINTER_UNIQUE, "Pointer to Info101 (BrowserrSrvInfo101Ctr)",hf_browser_BrowserrSrvInfoUnion_val101_info101);
252
253         return offset;
254 }
255
256 static int
257 browser_dissect_element_BrowserrSrvInfoUnion_val101_info101_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
258 {
259         offset = browser_dissect_struct_BrowserrSrvInfo101Ctr(tvb,offset,pinfo,tree,drep,hf_browser_BrowserrSrvInfoUnion_val101_info101,0);
260
261         return offset;
262 }
263
264 static int
265 browser_dissect_BrowserrSrvInfoUnion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
266 {
267         proto_item *item = NULL;
268         proto_tree *tree = NULL;
269         int old_offset;
270         guint32 level;
271
272         old_offset = offset;
273         if (parent_tree) {
274                 item = proto_tree_add_text(parent_tree, tvb, offset, -1, "BrowserrSrvInfoUnion");
275                 tree = proto_item_add_subtree(item, ett_browser_BrowserrSrvInfoUnion);
276         }
277
278         offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, &level);
279         ALIGN_TO_5_BYTES;
280
281         switch(level) {
282                 case 100:
283                         offset = browser_dissect_element_BrowserrSrvInfoUnion_val100_info100(tvb, offset, pinfo, tree, drep);
284                 break;
285
286                 case 101:
287                         offset = browser_dissect_element_BrowserrSrvInfoUnion_val101_info101(tvb, offset, pinfo, tree, drep);
288                 break;
289
290                 default:
291                 break;
292         }
293         proto_item_set_len(item, offset-old_offset);
294
295
296         return offset;
297 }
298
299 /* IDL: struct { */
300 /* IDL:         uint32 level; */
301 /* IDL:         [switch_is(level)] BrowserrSrvInfoUnion info; */
302 /* IDL: } */
303
304 static int
305 browser_dissect_element_BrowserrSrvInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *level)
306 {
307         offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_browser_BrowserrSrvInfo_level, level);
308
309         return offset;
310 }
311
312 static int
313 browser_dissect_element_BrowserrSrvInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, guint32 *level)
314 {
315         offset = browser_dissect_BrowserrSrvInfoUnion(tvb, offset, pinfo, tree, drep, hf_browser_BrowserrSrvInfo_info, *level);
316
317         return offset;
318 }
319
320 int
321 browser_dissect_struct_BrowserrSrvInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
322 {
323         guint32 level;
324         proto_item *item = NULL;
325         proto_tree *tree = NULL;
326         dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
327         int old_offset;
328
329         ALIGN_TO_5_BYTES;
330
331         old_offset = offset;
332
333         if (parent_tree) {
334                 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
335                 tree = proto_item_add_subtree(item, ett_browser_BrowserrSrvInfo);
336         }
337         
338         offset = browser_dissect_element_BrowserrSrvInfo_level(tvb, offset, pinfo, tree, drep, &level);
339
340         offset = browser_dissect_element_BrowserrSrvInfo_info(tvb, offset, pinfo, tree, drep, &level);
341
342
343         proto_item_set_len(item, offset-old_offset);
344
345
346         if (di->call_data->flags & DCERPC_IS_NDR64) {
347                 ALIGN_TO_5_BYTES;
348         }
349
350         return offset;
351 }
352
353 /* IDL: void BrowserrServerEnum( */
354 /* IDL:  */
355 /* IDL: ); */
356
357 static int
358 browser_dissect_BrowserrServerEnum_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
359 {
360         pinfo->dcerpc_procedure_name="BrowserrServerEnum";
361         return offset;
362 }
363
364 static int
365 browser_dissect_BrowserrServerEnum_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
366 {
367         pinfo->dcerpc_procedure_name="BrowserrServerEnum";
368         return offset;
369 }
370
371 /* IDL: void BrowserrDebugCall( */
372 /* IDL:  */
373 /* IDL: ); */
374
375 static int
376 browser_dissect_BrowserrDebugCall_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
377 {
378         pinfo->dcerpc_procedure_name="BrowserrDebugCall";
379         return offset;
380 }
381
382 static int
383 browser_dissect_BrowserrDebugCall_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
384 {
385         pinfo->dcerpc_procedure_name="BrowserrDebugCall";
386         return offset;
387 }
388
389 static int
390 browser_dissect_element_BrowserrQueryOtherDomains_server_unc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
391 {
392         offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrQueryOtherDomains_server_unc_, NDR_POINTER_UNIQUE, "Pointer to Server Unc (uint16)",hf_browser_BrowserrQueryOtherDomains_server_unc);
393
394         return offset;
395 }
396
397 static int
398 browser_dissect_element_BrowserrQueryOtherDomains_server_unc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
399 {
400         char *data;
401
402         offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, drep, sizeof(guint16), hf_browser_BrowserrQueryOtherDomains_server_unc, FALSE, &data);
403         proto_item_append_text(tree, ": %s", data);
404
405         return offset;
406 }
407
408 static int
409 browser_dissect_element_BrowserrQueryOtherDomains_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
410 {
411         offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrQueryOtherDomains_info_, NDR_POINTER_REF, "Pointer to Info (BrowserrSrvInfo)",hf_browser_BrowserrQueryOtherDomains_info);
412
413         return offset;
414 }
415
416 static int
417 browser_dissect_element_BrowserrQueryOtherDomains_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
418 {
419         offset = browser_dissect_struct_BrowserrSrvInfo(tvb,offset,pinfo,tree,drep,hf_browser_BrowserrQueryOtherDomains_info,0);
420
421         return offset;
422 }
423
424 static int
425 browser_dissect_element_BrowserrQueryOtherDomains_total_entries(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
426 {
427         offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, browser_dissect_element_BrowserrQueryOtherDomains_total_entries_, NDR_POINTER_REF, "Pointer to Total Entries (uint32)",hf_browser_BrowserrQueryOtherDomains_total_entries);
428
429         return offset;
430 }
431
432 static int
433 browser_dissect_element_BrowserrQueryOtherDomains_total_entries_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
434 {
435         offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_browser_BrowserrQueryOtherDomains_total_entries, 0);
436
437         return offset;
438 }
439
440 /* IDL: WERROR BrowserrQueryOtherDomains( */
441 /* IDL: [unique(1)] [in] [charset(UTF16)] uint16 *server_unc, */
442 /* IDL: [out] [in] [ref] BrowserrSrvInfo *info, */
443 /* IDL: [out] [ref] uint32 *total_entries */
444 /* IDL: ); */
445
446 static int
447 browser_dissect_BrowserrQueryOtherDomains_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
448 {
449         guint32 status;
450
451         pinfo->dcerpc_procedure_name="BrowserrQueryOtherDomains";
452         offset = browser_dissect_element_BrowserrQueryOtherDomains_info(tvb, offset, pinfo, tree, drep);
453         offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
454
455         offset = browser_dissect_element_BrowserrQueryOtherDomains_total_entries(tvb, offset, pinfo, tree, drep);
456         offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
457
458         offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_browser_werror, &status);
459
460         if (status != 0)
461                 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
462
463         return offset;
464 }
465
466 static int
467 browser_dissect_BrowserrQueryOtherDomains_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
468 {
469         pinfo->dcerpc_procedure_name="BrowserrQueryOtherDomains";
470         offset = browser_dissect_element_BrowserrQueryOtherDomains_server_unc(tvb, offset, pinfo, tree, drep);
471         offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
472         offset = browser_dissect_element_BrowserrQueryOtherDomains_info(tvb, offset, pinfo, tree, drep);
473         offset = dissect_deferred_pointers(pinfo, tvb, offset, drep);
474         return offset;
475 }
476
477 /* IDL: void BrowserrResetNetlogonState( */
478 /* IDL:  */
479 /* IDL: ); */
480
481 static int
482 browser_dissect_BrowserrResetNetlogonState_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
483 {
484         pinfo->dcerpc_procedure_name="BrowserrResetNetlogonState";
485         return offset;
486 }
487
488 static int
489 browser_dissect_BrowserrResetNetlogonState_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
490 {
491         pinfo->dcerpc_procedure_name="BrowserrResetNetlogonState";
492         return offset;
493 }
494
495 /* IDL: void BrowserrDebugTrace( */
496 /* IDL:  */
497 /* IDL: ); */
498
499 static int
500 browser_dissect_BrowserrDebugTrace_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
501 {
502         pinfo->dcerpc_procedure_name="BrowserrDebugTrace";
503         return offset;
504 }
505
506 static int
507 browser_dissect_BrowserrDebugTrace_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
508 {
509         pinfo->dcerpc_procedure_name="BrowserrDebugTrace";
510         return offset;
511 }
512
513 /* IDL: void BrowserrQueryStatistics( */
514 /* IDL:  */
515 /* IDL: ); */
516
517 static int
518 browser_dissect_BrowserrQueryStatistics_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
519 {
520         pinfo->dcerpc_procedure_name="BrowserrQueryStatistics";
521         return offset;
522 }
523
524 static int
525 browser_dissect_BrowserrQueryStatistics_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
526 {
527         pinfo->dcerpc_procedure_name="BrowserrQueryStatistics";
528         return offset;
529 }
530
531 /* IDL: void BrowserResetStatistics( */
532 /* IDL:  */
533 /* IDL: ); */
534
535 static int
536 browser_dissect_BrowserResetStatistics_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
537 {
538         pinfo->dcerpc_procedure_name="BrowserResetStatistics";
539         return offset;
540 }
541
542 static int
543 browser_dissect_BrowserResetStatistics_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
544 {
545         pinfo->dcerpc_procedure_name="BrowserResetStatistics";
546         return offset;
547 }
548
549 /* IDL: void NetrBrowserStatisticsClear( */
550 /* IDL:  */
551 /* IDL: ); */
552
553 static int
554 browser_dissect_NetrBrowserStatisticsClear_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
555 {
556         pinfo->dcerpc_procedure_name="NetrBrowserStatisticsClear";
557         return offset;
558 }
559
560 static int
561 browser_dissect_NetrBrowserStatisticsClear_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
562 {
563         pinfo->dcerpc_procedure_name="NetrBrowserStatisticsClear";
564         return offset;
565 }
566
567 /* IDL: void NetrBrowserStatisticsGet( */
568 /* IDL:  */
569 /* IDL: ); */
570
571 static int
572 browser_dissect_NetrBrowserStatisticsGet_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
573 {
574         pinfo->dcerpc_procedure_name="NetrBrowserStatisticsGet";
575         return offset;
576 }
577
578 static int
579 browser_dissect_NetrBrowserStatisticsGet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
580 {
581         pinfo->dcerpc_procedure_name="NetrBrowserStatisticsGet";
582         return offset;
583 }
584
585 /* IDL: void BrowserrSetNetlogonState( */
586 /* IDL:  */
587 /* IDL: ); */
588
589 static int
590 browser_dissect_BrowserrSetNetlogonState_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
591 {
592         pinfo->dcerpc_procedure_name="BrowserrSetNetlogonState";
593         return offset;
594 }
595
596 static int
597 browser_dissect_BrowserrSetNetlogonState_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
598 {
599         pinfo->dcerpc_procedure_name="BrowserrSetNetlogonState";
600         return offset;
601 }
602
603 /* IDL: void BrowserrQueryEmulatedDomains( */
604 /* IDL:  */
605 /* IDL: ); */
606
607 static int
608 browser_dissect_BrowserrQueryEmulatedDomains_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
609 {
610         pinfo->dcerpc_procedure_name="BrowserrQueryEmulatedDomains";
611         return offset;
612 }
613
614 static int
615 browser_dissect_BrowserrQueryEmulatedDomains_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
616 {
617         pinfo->dcerpc_procedure_name="BrowserrQueryEmulatedDomains";
618         return offset;
619 }
620
621 /* IDL: void BrowserrServerEnumEx( */
622 /* IDL:  */
623 /* IDL: ); */
624
625 static int
626 browser_dissect_BrowserrServerEnumEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
627 {
628         pinfo->dcerpc_procedure_name="BrowserrServerEnumEx";
629         return offset;
630 }
631
632 static int
633 browser_dissect_BrowserrServerEnumEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
634 {
635         pinfo->dcerpc_procedure_name="BrowserrServerEnumEx";
636         return offset;
637 }
638
639
640 static dcerpc_sub_dissector browser_dissectors[] = {
641         { 0, "BrowserrServerEnum",
642            browser_dissect_BrowserrServerEnum_request, browser_dissect_BrowserrServerEnum_response},
643         { 1, "BrowserrDebugCall",
644            browser_dissect_BrowserrDebugCall_request, browser_dissect_BrowserrDebugCall_response},
645         { 2, "BrowserrQueryOtherDomains",
646            browser_dissect_BrowserrQueryOtherDomains_request, browser_dissect_BrowserrQueryOtherDomains_response},
647         { 3, "BrowserrResetNetlogonState",
648            browser_dissect_BrowserrResetNetlogonState_request, browser_dissect_BrowserrResetNetlogonState_response},
649         { 4, "BrowserrDebugTrace",
650            browser_dissect_BrowserrDebugTrace_request, browser_dissect_BrowserrDebugTrace_response},
651         { 5, "BrowserrQueryStatistics",
652            browser_dissect_BrowserrQueryStatistics_request, browser_dissect_BrowserrQueryStatistics_response},
653         { 6, "BrowserResetStatistics",
654            browser_dissect_BrowserResetStatistics_request, browser_dissect_BrowserResetStatistics_response},
655         { 7, "NetrBrowserStatisticsClear",
656            browser_dissect_NetrBrowserStatisticsClear_request, browser_dissect_NetrBrowserStatisticsClear_response},
657         { 8, "NetrBrowserStatisticsGet",
658            browser_dissect_NetrBrowserStatisticsGet_request, browser_dissect_NetrBrowserStatisticsGet_response},
659         { 9, "BrowserrSetNetlogonState",
660            browser_dissect_BrowserrSetNetlogonState_request, browser_dissect_BrowserrSetNetlogonState_response},
661         { 10, "BrowserrQueryEmulatedDomains",
662            browser_dissect_BrowserrQueryEmulatedDomains_request, browser_dissect_BrowserrQueryEmulatedDomains_response},
663         { 11, "BrowserrServerEnumEx",
664            browser_dissect_BrowserrServerEnumEx_request, browser_dissect_BrowserrServerEnumEx_response},
665         { 0, NULL, NULL, NULL }
666 };
667
668 void proto_register_dcerpc_browser(void)
669 {
670         static hf_register_info hf[] = {
671         { &hf_browser_BrowserrQueryOtherDomains_info,
672           { "Info", "browser.BrowserrQueryOtherDomains.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
673         { &hf_browser_BrowserrSrvInfo101Ctr_entries,
674           { "Entries", "browser.BrowserrSrvInfo101Ctr.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
675         { &hf_browser_BrowserrSrvInfoUnion_val101_info101,
676           { "Info101", "browser.BrowserrSrvInfoUnion_val101.info101", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
677         { &hf_browser_BrowserrSrvInfo_info,
678           { "Info", "browser.BrowserrSrvInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
679         { &hf_browser_BrowserrQueryOtherDomains_total_entries,
680           { "Total Entries", "browser.BrowserrQueryOtherDomains.total_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
681         { &hf_browser_werror,
682           { "Windows Error", "browser.werror", FT_UINT32, BASE_HEX, VALS(WERR_errors), 0, NULL, HFILL }},
683         { &hf_browser_BrowserrSrvInfo101Ctr_entries_read,
684           { "Entries Read", "browser.BrowserrSrvInfo101Ctr.entries_read", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
685         { &hf_browser_BrowserrSrvInfo100Ctr_entries_read,
686           { "Entries Read", "browser.BrowserrSrvInfo100Ctr.entries_read", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
687         { &hf_browser_opnum,
688           { "Operation", "browser.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
689         { &hf_browser_BrowserrQueryOtherDomains_server_unc,
690           { "Server Unc", "browser.BrowserrQueryOtherDomains.server_unc", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
691         { &hf_browser_BrowserrSrvInfoUnion_val100_info100,
692           { "Info100", "browser.BrowserrSrvInfoUnion_val100.info100", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
693         { &hf_browser_BrowserrSrvInfo_level,
694           { "Level", "browser.BrowserrSrvInfo.level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
695         { &hf_browser_BrowserrSrvInfo100Ctr_entries,
696           { "Entries", "browser.BrowserrSrvInfo100Ctr.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
697         };
698
699
700         static gint *ett[] = {
701                 &ett_dcerpc_browser,
702                 &ett_browser_BrowserrSrvInfo100Ctr,
703                 &ett_browser_BrowserrSrvInfo101Ctr,
704                 &ett_browser_BrowserrSrvInfoUnion,
705                 &ett_browser_BrowserrSrvInfo,
706         };
707
708         proto_dcerpc_browser = proto_register_protocol("Browsing", "BROWSER", "browser");
709         proto_register_field_array(proto_dcerpc_browser, hf, array_length (hf));
710         proto_register_subtree_array(ett, array_length(ett));
711 }
712
713 void proto_reg_handoff_dcerpc_browser(void)
714 {
715         dcerpc_init_uuid(proto_dcerpc_browser, ett_dcerpc_browser,
716                 &uuid_dcerpc_browser, ver_dcerpc_browser,
717                 browser_dissectors, hf_browser_opnum);
718 }