r14402: Generate seperate headers for RPC client functions.
[jelmer/samba4-debian.git] / source / torture / rpc / wkssvc.c
1 /* 
2    Unix SMB/CIFS implementation.
3    test suite for wkssvc rpc operations
4
5    Copyright (C) Andrew Tridgell 2003
6    
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11    
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16    
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22 #include "includes.h"
23 #include "torture/torture.h"
24 #include "librpc/gen_ndr/ndr_wkssvc.h"
25 #include "librpc/gen_ndr/ndr_wkssvc_c.h"
26 #include "torture/rpc/rpc.h"
27
28
29 static BOOL test_NetWkstaGetInfo(struct dcerpc_pipe *p, 
30                            TALLOC_CTX *mem_ctx)
31 {
32         NTSTATUS status;
33         struct wkssvc_NetWkstaGetInfo r;
34         uint16_t levels[] = {100, 101, 102, 502};
35         int i;
36         BOOL ret = True;
37
38         r.in.server_name = dcerpc_server_name(p);
39
40         for (i=0;i<ARRAY_SIZE(levels);i++) {
41                 r.in.level = levels[i];
42                 printf("testing NetWkstaGetInfo level %u\n", r.in.level);
43                 status = dcerpc_wkssvc_NetWkstaGetInfo(p, mem_ctx, &r);
44                 if (!NT_STATUS_IS_OK(status)) {
45                         printf("NetWkstaGetInfo level %u failed - %s\n", r.in.level, nt_errstr(status));
46                         ret = False;
47                 }
48                 if (!W_ERROR_IS_OK(r.out.result)) {
49                         printf("NetWkstaGetInfo level %u failed - %s\n", r.in.level, win_errstr(r.out.result));
50                 }
51         }
52
53         return ret;
54 }
55
56
57 static BOOL test_NetWkstaTransportEnum(struct dcerpc_pipe *p, 
58                                TALLOC_CTX *mem_ctx)
59 {
60         NTSTATUS status;
61         struct wkssvc_NetWkstaTransportEnum r;
62         BOOL ret = True;
63         uint32_t resume_handle = 0;
64         union wkssvc_NetWkstaTransportCtr ctr;
65         struct wkssvc_NetWkstaTransportCtr0 ctr0;
66
67         ZERO_STRUCT(ctr0);
68         ctr.ctr0 = &ctr0;
69
70         r.in.server_name = dcerpc_server_name(p);
71         r.in.level = 0;
72         r.in.ctr = &ctr;
73         r.in.max_buffer = (uint32_t)-1;
74         r.in.resume_handle = &resume_handle;
75         r.out.resume_handle = &resume_handle;
76
77         printf("testing NetWkstaTransportEnum\n");
78         status = dcerpc_wkssvc_NetWkstaTransportEnum(p, mem_ctx, &r);
79         if (!NT_STATUS_IS_OK(status)) {
80                 printf("NetWkstaTransportEnum failed - %s\n", nt_errstr(status));
81                 ret = False;
82         }
83         if (!W_ERROR_IS_OK(r.out.result)) {
84                 printf("NetWkstaTransportEnum level %u failed - %s\n", r.in.level, win_errstr(r.out.result));
85         }
86
87         return ret;
88 }
89
90
91
92 BOOL torture_rpc_wkssvc(void)
93 {
94         NTSTATUS status;
95         struct dcerpc_pipe *p;
96         TALLOC_CTX *mem_ctx;
97         BOOL ret = True;
98
99         mem_ctx = talloc_init("torture_rpc_wkssvc");
100
101         status = torture_rpc_connection(mem_ctx, &p, &dcerpc_table_wkssvc);
102         if (!NT_STATUS_IS_OK(status)) {
103                 talloc_free(mem_ctx);
104                 return False;
105         }
106
107         if (!test_NetWkstaGetInfo(p, mem_ctx)) {
108                 ret = False;
109         }
110
111         if (!test_NetWkstaTransportEnum(p, mem_ctx)) {
112                 ret = False;
113         }
114
115         talloc_free(mem_ctx);
116
117         return ret;
118 }