Line data Source code
1 : /*
2 : Unix SMB/CIFS implementation.
3 : test suite for witness ndr operations
4 :
5 : Copyright (C) Guenther Deschner 2015
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 3 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, see <http://www.gnu.org/licenses/>.
19 : */
20 :
21 : #include "includes.h"
22 : #include "torture/ndr/ndr.h"
23 : #include "librpc/gen_ndr/ndr_witness.h"
24 : #include "torture/ndr/proto.h"
25 : #include "param/param.h"
26 :
27 : static const uint8_t witness_GetInterfaceList_data[] = {
28 : 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
29 : 0x02, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00,
30 : 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
55 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
62 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
69 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
73 : 0x01, 0x00, 0x00, 0x00, 0xc0, 0xa8, 0x03, 0x2c, 0x00, 0x00, 0x00, 0x00,
74 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75 : 0x05, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x44, 0x00, 0x45, 0x00,
76 : 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
83 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
85 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
110 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
111 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
112 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
113 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
114 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
118 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
119 : 0x01, 0x00, 0x00, 0x00, 0xc0, 0xa8, 0x03, 0x2d, 0x00, 0x00, 0x00, 0x00,
120 : 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121 : 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
122 : };
123 :
124 2 : static bool witness_GetInterfaceList_check(struct torture_context *tctx,
125 : struct witness_GetInterfaceList *r)
126 : {
127 2 : struct witness_interfaceList *l;
128 :
129 2 : torture_assert(tctx, r->out.interface_list, "r->out.interface_list");
130 :
131 2 : l = *(r->out.interface_list);
132 :
133 2 : torture_assert_int_equal(tctx, l->num_interfaces, 2, "l->num_interfaces");
134 2 : torture_assert(tctx, l->interfaces, "l->interfaces");
135 :
136 2 : torture_assert_str_equal(tctx, l->interfaces[0].group_name, "NODE2", "l->interfaces[0].group_name");
137 2 : torture_assert_int_equal(tctx, l->interfaces[0].version, -1, "l->interfaces[0].version");
138 2 : torture_assert_int_equal(tctx, l->interfaces[0].state, 1, "l->interfaces[0].state");
139 2 : torture_assert_str_equal(tctx, l->interfaces[0].ipv4, "192.168.3.44", "l->interfaces[0].state");
140 2 : torture_assert_int_equal(tctx, l->interfaces[0].flags, 5, "l->interfaces[0].flags");
141 :
142 2 : torture_assert_str_equal(tctx, l->interfaces[1].group_name, "NODE1", "l->interfaces[0].group_name");
143 2 : torture_assert_int_equal(tctx, l->interfaces[1].version, -1, "l->interfaces[0].version");
144 2 : torture_assert_int_equal(tctx, l->interfaces[1].state, 1, "l->interfaces[0].state");
145 2 : torture_assert_str_equal(tctx, l->interfaces[1].ipv4, "192.168.3.45", "l->interfaces[0].state");
146 2 : torture_assert_int_equal(tctx, l->interfaces[1].flags, 1, "l->interfaces[0].flags");
147 2 : torture_assert_werr_ok(tctx, r->out.result, "r->out.result");
148 :
149 0 : return true;
150 : }
151 :
152 : static const uint8_t witness_Register_data_IN[] = {
153 : 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
154 : 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x00, 0x6f, 0x00,
155 : 0x66, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
156 : 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
157 : 0x31, 0x00, 0x39, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x36, 0x00,
158 : 0x38, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x35, 0x00,
159 : 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00,
160 : 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x54, 0x00,
161 : 0x48, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x41, 0x00,
162 : 0x00, 0x00
163 : };
164 :
165 2 : static bool witness_Register_check_IN(struct torture_context *tctx,
166 : struct witness_Register *r)
167 : {
168 2 : torture_assert_int_equal(tctx, r->in.version, 65537, "r->in.version");
169 2 : torture_assert_str_equal(tctx, r->in.net_name, "sofs", "r->in.net_name");
170 2 : torture_assert_str_equal(tctx, r->in.ip_address, "192.168.3.45", "r->in.ip_address");
171 2 : torture_assert_str_equal(tctx, r->in.client_computer_name, "MTHELENA", "r->in.client_computer_name");
172 :
173 0 : return true;
174 : }
175 :
176 : static const uint8_t witness_Register_data_OUT[] = {
177 : 0x00, 0x00, 0x00, 0x00, 0x33, 0x86, 0xb8, 0x3a, 0x57, 0x1e, 0x1a, 0x4c,
178 : 0x85, 0x6c, 0xd1, 0xbc, 0x4b, 0x15, 0xbb, 0xb1, 0x00, 0x00, 0x00, 0x00
179 : };
180 :
181 2 : static bool witness_Register_check_OUT(struct torture_context *tctx,
182 : struct witness_Register *r)
183 : {
184 2 : struct GUID guid;
185 :
186 2 : torture_assert(tctx, r->out.context_handle, "r->out.context_handle");
187 2 : torture_assert_int_equal(tctx, r->out.context_handle->handle_type, 0, "r->out.context_handle->handle_type");
188 2 : torture_assert_ntstatus_ok(tctx, GUID_from_string("3ab88633-1e57-4c1a-856c-d1bc4b15bbb1", &guid), "");
189 2 : torture_assert_mem_equal(tctx, &r->out.context_handle->uuid, &guid, sizeof(guid), "r->out.context_handle->uuid");
190 2 : torture_assert_werr_ok(tctx, r->out.result, "r->out.result");
191 :
192 0 : return true;
193 : }
194 :
195 : static const uint8_t witness_UnRegister_data_IN[] = {
196 : 0x00, 0x00, 0x00, 0x00, 0x33, 0x86, 0xb8, 0x3a, 0x57, 0x1e, 0x1a, 0x4c,
197 : 0x85, 0x6c, 0xd1, 0xbc, 0x4b, 0x15, 0xbb, 0xb1
198 : };
199 :
200 2 : static bool witness_UnRegister_check_IN(struct torture_context *tctx,
201 : struct witness_UnRegister *r)
202 : {
203 2 : struct GUID guid;
204 :
205 2 : torture_assert_int_equal(tctx, r->in.context_handle.handle_type, 0, "r->in.context_handle.handle_type");
206 2 : torture_assert_ntstatus_ok(tctx, GUID_from_string("3ab88633-1e57-4c1a-856c-d1bc4b15bbb1", &guid), "");
207 2 : torture_assert_mem_equal(tctx, &r->in.context_handle.uuid, &guid, sizeof(guid), "r->in.context_handle.uuid");
208 :
209 0 : return true;
210 : }
211 :
212 : static const uint8_t witness_UnRegister_data_OUT[] = {
213 : 0x00, 0x00, 0x00, 0x00
214 : };
215 :
216 2 : static bool witness_UnRegister_check_OUT(struct torture_context *tctx,
217 : struct witness_UnRegister *r)
218 : {
219 2 : torture_assert_werr_ok(tctx, r->out.result, "r->out.result");
220 :
221 0 : return true;
222 : }
223 :
224 : static const uint8_t witness_AsyncNotify_data_IN[] = {
225 : 0x00, 0x00, 0x00, 0x00, 0xee, 0xf2, 0xb9, 0x1f, 0x4d, 0x2a, 0xf8, 0x4b,
226 : 0xaf, 0x8b, 0xcb, 0x9d, 0x45, 0x29, 0xa9, 0xab
227 : };
228 :
229 2 : static bool witness_AsyncNotify_check_IN(struct torture_context *tctx,
230 : struct witness_AsyncNotify *r)
231 : {
232 2 : struct GUID guid;
233 :
234 2 : torture_assert_int_equal(tctx, r->in.context_handle.handle_type, 0, "r->in.context_handle.handle_type");
235 2 : torture_assert_ntstatus_ok(tctx, GUID_from_string("1fb9f2ee-2a4d-4bf8-af8b-cb9d4529a9ab", &guid), "");
236 2 : torture_assert_mem_equal(tctx, &r->in.context_handle.uuid, &guid, sizeof(guid), "r->in.context_handle.uuid");
237 :
238 0 : return true;
239 : }
240 :
241 : static const uint8_t witness_AsyncNotify_data_OUT[] = {
242 : 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
243 : 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x12, 0x00, 0x00, 0x00,
244 : 0x12, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x53, 0x00, 0x4f, 0x00,
245 : 0x46, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 : };
247 :
248 4 : static bool witness_AsyncNotify_check_OUT(struct torture_context *tctx,
249 : struct witness_AsyncNotify *r)
250 : {
251 4 : struct witness_notifyResponse *n;
252 4 : struct witness_ResourceChange *c;
253 :
254 4 : torture_assert(tctx, r->out.response, "r->out.response");
255 :
256 4 : n = *(r->out.response);
257 :
258 4 : torture_assert_int_equal(tctx, n->type, WITNESS_NOTIFY_RESOURCE_CHANGE, "type");
259 4 : torture_assert_int_equal(tctx, n->length, 18, "length");
260 4 : torture_assert_int_equal(tctx, n->num, 1, "num");
261 :
262 4 : c = &n->messages[0].resource_change;
263 :
264 4 : torture_assert_int_equal(tctx, c->length, 18, "c->length");
265 4 : torture_assert_int_equal(tctx, c->type, WITNESS_RESOURCE_STATE_UNAVAILABLE, "c->type");
266 4 : torture_assert_str_equal(tctx, c->name, "SOFS", "c->name");
267 :
268 0 : return true;
269 : }
270 :
271 : static const uint8_t witness_AsyncNotify_data_move_OUT[] = {
272 : 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
273 : 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00,
274 : 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
275 : 0x01, 0x00, 0x00, 0x00, 0xc0, 0xa8, 0x03, 0x2d, 0x00, 0x00, 0x00, 0x00,
276 : 0x38, 0xe8, 0xeb, 0x26, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x60, 0x26,
277 : 0x00, 0x00, 0x00, 0x00
278 : };
279 :
280 2 : static bool witness_AsyncNotify_check_move_OUT(struct torture_context *tctx,
281 : struct witness_AsyncNotify *r)
282 : {
283 2 : struct witness_notifyResponse *n;
284 2 : struct witness_IPaddrInfoList *i;
285 :
286 2 : torture_assert(tctx, r->out.response, "r->out.response");
287 :
288 2 : n = *(r->out.response);
289 :
290 2 : torture_assert_int_equal(tctx, n->type, WITNESS_NOTIFY_CLIENT_MOVE, "type");
291 2 : torture_assert_int_equal(tctx, n->length, 36, "length");
292 2 : torture_assert_int_equal(tctx, n->num, 1, "num");
293 :
294 2 : i = &n->messages[0].client_move;
295 :
296 2 : torture_assert_int_equal(tctx, i->length, 36, "i->length");
297 2 : torture_assert_int_equal(tctx, i->reserved, 0, "i->reserved");
298 2 : torture_assert_int_equal(tctx, i->num, 1, "i->num");
299 :
300 2 : torture_assert_int_equal(tctx, i->addr[0].flags, WITNESS_IPADDR_V4, "i->addr[0].flags");
301 2 : torture_assert_str_equal(tctx, i->addr[0].ipv4, "192.168.3.45", "i->addr[0].ipv4");
302 2 : torture_assert_str_equal(tctx, i->addr[0].ipv6, "0000:0000:38e8:eb26:8e00:0000:009e:6026", "i->addr[0].ipv6");
303 :
304 0 : return true;
305 : }
306 :
307 : static const uint8_t witness_AsyncNotify_data_fuzz1_OUT[] = {
308 : 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
309 : 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x00,
310 : 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
311 : 0x00, 0x00, 0x00, 0x00,
312 : };
313 :
314 4 : static bool witness_AsyncNotify_check_fuzz1_OUT(struct torture_context *tctx,
315 : struct witness_AsyncNotify *r)
316 : {
317 4 : struct witness_notifyResponse *n;
318 4 : struct witness_IPaddrInfoList *i;
319 :
320 4 : torture_assert(tctx, r->out.response, "r->out.response");
321 :
322 4 : n = *(r->out.response);
323 :
324 4 : torture_assert_int_equal(tctx, n->type, WITNESS_NOTIFY_CLIENT_MOVE, "type");
325 4 : torture_assert_int_equal(tctx, n->length, 12, "length");
326 4 : torture_assert_int_equal(tctx, n->num, 1, "num");
327 :
328 4 : i = &n->messages[0].client_move;
329 :
330 4 : torture_assert_int_equal(tctx, i->length, 12, "i->length");
331 4 : torture_assert_int_equal(tctx, i->reserved, 0, "i->reserved");
332 4 : torture_assert_int_equal(tctx, i->num, 0, "i->num");
333 :
334 0 : return true;
335 : }
336 :
337 2354 : struct torture_suite *ndr_witness_suite(TALLOC_CTX *ctx)
338 : {
339 2354 : struct torture_suite *suite = torture_suite_create(ctx, "witness");
340 :
341 2354 : torture_suite_add_ndr_pull_fn_test(suite,
342 : witness_GetInterfaceList,
343 : witness_GetInterfaceList_data,
344 : NDR_OUT,
345 : witness_GetInterfaceList_check);
346 :
347 2354 : torture_suite_add_ndr_pull_fn_test(suite,
348 : witness_Register,
349 : witness_Register_data_IN,
350 : NDR_IN,
351 : witness_Register_check_IN);
352 :
353 2354 : torture_suite_add_ndr_pull_fn_test(suite,
354 : witness_Register,
355 : witness_Register_data_OUT,
356 : NDR_OUT,
357 : witness_Register_check_OUT);
358 :
359 2354 : torture_suite_add_ndr_pull_fn_test(suite,
360 : witness_UnRegister,
361 : witness_UnRegister_data_IN,
362 : NDR_IN,
363 : witness_UnRegister_check_IN);
364 :
365 2354 : torture_suite_add_ndr_pull_fn_test(suite,
366 : witness_UnRegister,
367 : witness_UnRegister_data_OUT,
368 : NDR_OUT,
369 : witness_UnRegister_check_OUT);
370 :
371 2354 : torture_suite_add_ndr_pull_fn_test(suite,
372 : witness_AsyncNotify,
373 : witness_AsyncNotify_data_IN,
374 : NDR_IN,
375 : witness_AsyncNotify_check_IN);
376 :
377 2354 : torture_suite_add_ndr_pull_fn_test(suite,
378 : witness_AsyncNotify,
379 : witness_AsyncNotify_data_OUT,
380 : NDR_OUT,
381 : witness_AsyncNotify_check_OUT);
382 :
383 2354 : torture_suite_add_ndr_pullpush_fn_test_flags(suite,
384 : witness_AsyncNotify,
385 : witness_AsyncNotify_data_OUT,
386 : NDR_OUT,
387 : 0,
388 : witness_AsyncNotify_check_OUT);
389 :
390 2354 : torture_suite_add_ndr_pullpush_fn_test_flags(suite,
391 : witness_AsyncNotify,
392 : witness_AsyncNotify_data_move_OUT,
393 : NDR_OUT,
394 : 0,
395 : witness_AsyncNotify_check_move_OUT);
396 :
397 2354 : torture_suite_add_ndr_pull_fn_test(suite,
398 : witness_AsyncNotify,
399 : witness_AsyncNotify_data_fuzz1_OUT,
400 : NDR_OUT,
401 : witness_AsyncNotify_check_fuzz1_OUT);
402 :
403 2354 : torture_suite_add_ndr_pullpush_fn_test_flags(suite,
404 : witness_AsyncNotify,
405 : witness_AsyncNotify_data_fuzz1_OUT,
406 : NDR_OUT,
407 : 0,
408 : witness_AsyncNotify_check_fuzz1_OUT);
409 :
410 2354 : return suite;
411 : }
|