1/* parser auto-generated by pidl */ 2 3#include "includes.h" 4#include "../librpc/gen_ndr/ndr_named_pipe_auth.h" 5 6#include "librpc/gen_ndr/ndr_netlogon.h" 7static enum ndr_err_code ndr_push_named_pipe_auth_req_info2(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req_info2 *r) 8{ 9 if (ndr_flags & NDR_SCALARS) { 10 NDR_CHECK(ndr_push_align(ndr, 5)); 11 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_name)); 12 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_addr)); 13 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->client_port)); 14 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name)); 15 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_addr)); 16 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->server_port)); 17 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam_info3)); 18 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_key_length)); 19 NDR_CHECK(ndr_push_unique_ptr(ndr, r->session_key)); 20 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 21 } 22 if (ndr_flags & NDR_BUFFERS) { 23 if (r->client_name) { 24 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8))); 25 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 26 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8))); 27 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_name, ndr_charset_length(r->client_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); 28 } 29 if (r->client_addr) { 30 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS))); 31 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 32 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS))); 33 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_addr, ndr_charset_length(r->client_addr, CH_DOS), sizeof(uint8_t), CH_DOS)); 34 } 35 if (r->server_name) { 36 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8))); 37 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 38 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8))); 39 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); 40 } 41 if (r->server_addr) { 42 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS))); 43 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 44 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS))); 45 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_addr, ndr_charset_length(r->server_addr, CH_DOS), sizeof(uint8_t), CH_DOS)); 46 } 47 if (r->sam_info3) { 48 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3)); 49 } 50 if (r->session_key) { 51 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->session_key_length)); 52 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->session_key, r->session_key_length)); 53 } 54 } 55 return NDR_ERR_SUCCESS; 56} 57 58static enum ndr_err_code ndr_pull_named_pipe_auth_req_info2(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req_info2 *r) 59{ 60 uint32_t _ptr_client_name; 61 TALLOC_CTX *_mem_save_client_name_0; 62 uint32_t _ptr_client_addr; 63 TALLOC_CTX *_mem_save_client_addr_0; 64 uint32_t _ptr_server_name; 65 TALLOC_CTX *_mem_save_server_name_0; 66 uint32_t _ptr_server_addr; 67 TALLOC_CTX *_mem_save_server_addr_0; 68 uint32_t _ptr_sam_info3; 69 TALLOC_CTX *_mem_save_sam_info3_0; 70 uint32_t _ptr_session_key; 71 TALLOC_CTX *_mem_save_session_key_0; 72 if (ndr_flags & NDR_SCALARS) { 73 NDR_CHECK(ndr_pull_align(ndr, 5)); 74 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_name)); 75 if (_ptr_client_name) { 76 NDR_PULL_ALLOC(ndr, r->client_name); 77 } else { 78 r->client_name = NULL; 79 } 80 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_addr)); 81 if (_ptr_client_addr) { 82 NDR_PULL_ALLOC(ndr, r->client_addr); 83 } else { 84 r->client_addr = NULL; 85 } 86 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->client_port)); 87 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name)); 88 if (_ptr_server_name) { 89 NDR_PULL_ALLOC(ndr, r->server_name); 90 } else { 91 r->server_name = NULL; 92 } 93 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_addr)); 94 if (_ptr_server_addr) { 95 NDR_PULL_ALLOC(ndr, r->server_addr); 96 } else { 97 r->server_addr = NULL; 98 } 99 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->server_port)); 100 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam_info3)); 101 if (_ptr_sam_info3) { 102 NDR_PULL_ALLOC(ndr, r->sam_info3); 103 } else { 104 r->sam_info3 = NULL; 105 } 106 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_key_length)); 107 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_session_key)); 108 if (_ptr_session_key) { 109 NDR_PULL_ALLOC(ndr, r->session_key); 110 } else { 111 r->session_key = NULL; 112 } 113 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 114 } 115 if (ndr_flags & NDR_BUFFERS) { 116 if (r->client_name) { 117 _mem_save_client_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 118 NDR_PULL_SET_MEM_CTX(ndr, r->client_name, 0); 119 NDR_CHECK(ndr_pull_array_size(ndr, &r->client_name)); 120 NDR_CHECK(ndr_pull_array_length(ndr, &r->client_name)); 121 if (ndr_get_array_length(ndr, &r->client_name) > ndr_get_array_size(ndr, &r->client_name)) { 122 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_name), ndr_get_array_length(ndr, &r->client_name)); 123 } 124 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t))); 125 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_name, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t), CH_UTF8)); 126 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_name_0, 0); 127 } 128 if (r->client_addr) { 129 _mem_save_client_addr_0 = NDR_PULL_GET_MEM_CTX(ndr); 130 NDR_PULL_SET_MEM_CTX(ndr, r->client_addr, 0); 131 NDR_CHECK(ndr_pull_array_size(ndr, &r->client_addr)); 132 NDR_CHECK(ndr_pull_array_length(ndr, &r->client_addr)); 133 if (ndr_get_array_length(ndr, &r->client_addr) > ndr_get_array_size(ndr, &r->client_addr)) { 134 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_addr), ndr_get_array_length(ndr, &r->client_addr)); 135 } 136 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t))); 137 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_addr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t), CH_DOS)); 138 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_addr_0, 0); 139 } 140 if (r->server_name) { 141 _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 142 NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0); 143 NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name)); 144 NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name)); 145 if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) { 146 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name)); 147 } 148 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t))); 149 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t), CH_UTF8)); 150 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0); 151 } 152 if (r->server_addr) { 153 _mem_save_server_addr_0 = NDR_PULL_GET_MEM_CTX(ndr); 154 NDR_PULL_SET_MEM_CTX(ndr, r->server_addr, 0); 155 NDR_CHECK(ndr_pull_array_size(ndr, &r->server_addr)); 156 NDR_CHECK(ndr_pull_array_length(ndr, &r->server_addr)); 157 if (ndr_get_array_length(ndr, &r->server_addr) > ndr_get_array_size(ndr, &r->server_addr)) { 158 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_addr), ndr_get_array_length(ndr, &r->server_addr)); 159 } 160 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t))); 161 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_addr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t), CH_DOS)); 162 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_addr_0, 0); 163 } 164 if (r->sam_info3) { 165 _mem_save_sam_info3_0 = NDR_PULL_GET_MEM_CTX(ndr); 166 NDR_PULL_SET_MEM_CTX(ndr, r->sam_info3, 0); 167 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3)); 168 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_info3_0, 0); 169 } 170 if (r->session_key) { 171 _mem_save_session_key_0 = NDR_PULL_GET_MEM_CTX(ndr); 172 NDR_PULL_SET_MEM_CTX(ndr, r->session_key, 0); 173 NDR_CHECK(ndr_pull_array_size(ndr, &r->session_key)); 174 NDR_PULL_ALLOC_N(ndr, r->session_key, ndr_get_array_size(ndr, &r->session_key)); 175 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->session_key, ndr_get_array_size(ndr, &r->session_key))); 176 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_session_key_0, 0); 177 } 178 if (r->session_key) { 179 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->session_key, r->session_key_length)); 180 } 181 } 182 return NDR_ERR_SUCCESS; 183} 184 185_PUBLIC_ void ndr_print_named_pipe_auth_req_info2(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req_info2 *r) 186{ 187 ndr_print_struct(ndr, name, "named_pipe_auth_req_info2"); 188 ndr->depth++; 189 ndr_print_ptr(ndr, "client_name", r->client_name); 190 ndr->depth++; 191 if (r->client_name) { 192 ndr_print_string(ndr, "client_name", r->client_name); 193 } 194 ndr->depth--; 195 ndr_print_ptr(ndr, "client_addr", r->client_addr); 196 ndr->depth++; 197 if (r->client_addr) { 198 ndr_print_string(ndr, "client_addr", r->client_addr); 199 } 200 ndr->depth--; 201 ndr_print_uint16(ndr, "client_port", r->client_port); 202 ndr_print_ptr(ndr, "server_name", r->server_name); 203 ndr->depth++; 204 if (r->server_name) { 205 ndr_print_string(ndr, "server_name", r->server_name); 206 } 207 ndr->depth--; 208 ndr_print_ptr(ndr, "server_addr", r->server_addr); 209 ndr->depth++; 210 if (r->server_addr) { 211 ndr_print_string(ndr, "server_addr", r->server_addr); 212 } 213 ndr->depth--; 214 ndr_print_uint16(ndr, "server_port", r->server_port); 215 ndr_print_ptr(ndr, "sam_info3", r->sam_info3); 216 ndr->depth++; 217 if (r->sam_info3) { 218 ndr_print_netr_SamInfo3(ndr, "sam_info3", r->sam_info3); 219 } 220 ndr->depth--; 221 ndr_print_uint32(ndr, "session_key_length", r->session_key_length); 222 ndr_print_ptr(ndr, "session_key", r->session_key); 223 ndr->depth++; 224 if (r->session_key) { 225 ndr_print_array_uint8(ndr, "session_key", r->session_key, r->session_key_length); 226 } 227 ndr->depth--; 228 ndr->depth--; 229} 230 231static enum ndr_err_code ndr_push_named_pipe_auth_req_info3(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req_info3 *r) 232{ 233 if (ndr_flags & NDR_SCALARS) { 234 NDR_CHECK(ndr_push_align(ndr, 5)); 235 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_name)); 236 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_addr)); 237 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->client_port)); 238 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name)); 239 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_addr)); 240 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->server_port)); 241 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam_info3)); 242 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_key_length)); 243 NDR_CHECK(ndr_push_unique_ptr(ndr, r->session_key)); 244 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->gssapi_delegated_creds_length)); 245 NDR_CHECK(ndr_push_unique_ptr(ndr, r->gssapi_delegated_creds)); 246 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 247 } 248 if (ndr_flags & NDR_BUFFERS) { 249 if (r->client_name) { 250 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8))); 251 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 252 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8))); 253 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_name, ndr_charset_length(r->client_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); 254 } 255 if (r->client_addr) { 256 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS))); 257 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 258 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS))); 259 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_addr, ndr_charset_length(r->client_addr, CH_DOS), sizeof(uint8_t), CH_DOS)); 260 } 261 if (r->server_name) { 262 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8))); 263 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 264 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8))); 265 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF8), sizeof(uint8_t), CH_UTF8)); 266 } 267 if (r->server_addr) { 268 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS))); 269 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0)); 270 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS))); 271 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_addr, ndr_charset_length(r->server_addr, CH_DOS), sizeof(uint8_t), CH_DOS)); 272 } 273 if (r->sam_info3) { 274 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3)); 275 } 276 if (r->session_key) { 277 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->session_key_length)); 278 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->session_key, r->session_key_length)); 279 } 280 if (r->gssapi_delegated_creds) { 281 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->gssapi_delegated_creds_length)); 282 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->gssapi_delegated_creds, r->gssapi_delegated_creds_length)); 283 } 284 } 285 return NDR_ERR_SUCCESS; 286} 287 288static enum ndr_err_code ndr_pull_named_pipe_auth_req_info3(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req_info3 *r) 289{ 290 uint32_t _ptr_client_name; 291 TALLOC_CTX *_mem_save_client_name_0; 292 uint32_t _ptr_client_addr; 293 TALLOC_CTX *_mem_save_client_addr_0; 294 uint32_t _ptr_server_name; 295 TALLOC_CTX *_mem_save_server_name_0; 296 uint32_t _ptr_server_addr; 297 TALLOC_CTX *_mem_save_server_addr_0; 298 uint32_t _ptr_sam_info3; 299 TALLOC_CTX *_mem_save_sam_info3_0; 300 uint32_t _ptr_session_key; 301 TALLOC_CTX *_mem_save_session_key_0; 302 uint32_t _ptr_gssapi_delegated_creds; 303 TALLOC_CTX *_mem_save_gssapi_delegated_creds_0; 304 if (ndr_flags & NDR_SCALARS) { 305 NDR_CHECK(ndr_pull_align(ndr, 5)); 306 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_name)); 307 if (_ptr_client_name) { 308 NDR_PULL_ALLOC(ndr, r->client_name); 309 } else { 310 r->client_name = NULL; 311 } 312 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_addr)); 313 if (_ptr_client_addr) { 314 NDR_PULL_ALLOC(ndr, r->client_addr); 315 } else { 316 r->client_addr = NULL; 317 } 318 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->client_port)); 319 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name)); 320 if (_ptr_server_name) { 321 NDR_PULL_ALLOC(ndr, r->server_name); 322 } else { 323 r->server_name = NULL; 324 } 325 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_addr)); 326 if (_ptr_server_addr) { 327 NDR_PULL_ALLOC(ndr, r->server_addr); 328 } else { 329 r->server_addr = NULL; 330 } 331 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->server_port)); 332 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam_info3)); 333 if (_ptr_sam_info3) { 334 NDR_PULL_ALLOC(ndr, r->sam_info3); 335 } else { 336 r->sam_info3 = NULL; 337 } 338 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_key_length)); 339 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_session_key)); 340 if (_ptr_session_key) { 341 NDR_PULL_ALLOC(ndr, r->session_key); 342 } else { 343 r->session_key = NULL; 344 } 345 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->gssapi_delegated_creds_length)); 346 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_gssapi_delegated_creds)); 347 if (_ptr_gssapi_delegated_creds) { 348 NDR_PULL_ALLOC(ndr, r->gssapi_delegated_creds); 349 } else { 350 r->gssapi_delegated_creds = NULL; 351 } 352 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 353 } 354 if (ndr_flags & NDR_BUFFERS) { 355 if (r->client_name) { 356 _mem_save_client_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 357 NDR_PULL_SET_MEM_CTX(ndr, r->client_name, 0); 358 NDR_CHECK(ndr_pull_array_size(ndr, &r->client_name)); 359 NDR_CHECK(ndr_pull_array_length(ndr, &r->client_name)); 360 if (ndr_get_array_length(ndr, &r->client_name) > ndr_get_array_size(ndr, &r->client_name)) { 361 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_name), ndr_get_array_length(ndr, &r->client_name)); 362 } 363 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t))); 364 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_name, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t), CH_UTF8)); 365 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_name_0, 0); 366 } 367 if (r->client_addr) { 368 _mem_save_client_addr_0 = NDR_PULL_GET_MEM_CTX(ndr); 369 NDR_PULL_SET_MEM_CTX(ndr, r->client_addr, 0); 370 NDR_CHECK(ndr_pull_array_size(ndr, &r->client_addr)); 371 NDR_CHECK(ndr_pull_array_length(ndr, &r->client_addr)); 372 if (ndr_get_array_length(ndr, &r->client_addr) > ndr_get_array_size(ndr, &r->client_addr)) { 373 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_addr), ndr_get_array_length(ndr, &r->client_addr)); 374 } 375 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t))); 376 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_addr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t), CH_DOS)); 377 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_addr_0, 0); 378 } 379 if (r->server_name) { 380 _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr); 381 NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0); 382 NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name)); 383 NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name)); 384 if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) { 385 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name)); 386 } 387 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t))); 388 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t), CH_UTF8)); 389 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0); 390 } 391 if (r->server_addr) { 392 _mem_save_server_addr_0 = NDR_PULL_GET_MEM_CTX(ndr); 393 NDR_PULL_SET_MEM_CTX(ndr, r->server_addr, 0); 394 NDR_CHECK(ndr_pull_array_size(ndr, &r->server_addr)); 395 NDR_CHECK(ndr_pull_array_length(ndr, &r->server_addr)); 396 if (ndr_get_array_length(ndr, &r->server_addr) > ndr_get_array_size(ndr, &r->server_addr)) { 397 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_addr), ndr_get_array_length(ndr, &r->server_addr)); 398 } 399 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t))); 400 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_addr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t), CH_DOS)); 401 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_addr_0, 0); 402 } 403 if (r->sam_info3) { 404 _mem_save_sam_info3_0 = NDR_PULL_GET_MEM_CTX(ndr); 405 NDR_PULL_SET_MEM_CTX(ndr, r->sam_info3, 0); 406 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3)); 407 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_info3_0, 0); 408 } 409 if (r->session_key) { 410 _mem_save_session_key_0 = NDR_PULL_GET_MEM_CTX(ndr); 411 NDR_PULL_SET_MEM_CTX(ndr, r->session_key, 0); 412 NDR_CHECK(ndr_pull_array_size(ndr, &r->session_key)); 413 NDR_PULL_ALLOC_N(ndr, r->session_key, ndr_get_array_size(ndr, &r->session_key)); 414 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->session_key, ndr_get_array_size(ndr, &r->session_key))); 415 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_session_key_0, 0); 416 } 417 if (r->gssapi_delegated_creds) { 418 _mem_save_gssapi_delegated_creds_0 = NDR_PULL_GET_MEM_CTX(ndr); 419 NDR_PULL_SET_MEM_CTX(ndr, r->gssapi_delegated_creds, 0); 420 NDR_CHECK(ndr_pull_array_size(ndr, &r->gssapi_delegated_creds)); 421 NDR_PULL_ALLOC_N(ndr, r->gssapi_delegated_creds, ndr_get_array_size(ndr, &r->gssapi_delegated_creds)); 422 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->gssapi_delegated_creds, ndr_get_array_size(ndr, &r->gssapi_delegated_creds))); 423 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gssapi_delegated_creds_0, 0); 424 } 425 if (r->session_key) { 426 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->session_key, r->session_key_length)); 427 } 428 if (r->gssapi_delegated_creds) { 429 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->gssapi_delegated_creds, r->gssapi_delegated_creds_length)); 430 } 431 } 432 return NDR_ERR_SUCCESS; 433} 434 435_PUBLIC_ void ndr_print_named_pipe_auth_req_info3(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req_info3 *r) 436{ 437 ndr_print_struct(ndr, name, "named_pipe_auth_req_info3"); 438 ndr->depth++; 439 ndr_print_ptr(ndr, "client_name", r->client_name); 440 ndr->depth++; 441 if (r->client_name) { 442 ndr_print_string(ndr, "client_name", r->client_name); 443 } 444 ndr->depth--; 445 ndr_print_ptr(ndr, "client_addr", r->client_addr); 446 ndr->depth++; 447 if (r->client_addr) { 448 ndr_print_string(ndr, "client_addr", r->client_addr); 449 } 450 ndr->depth--; 451 ndr_print_uint16(ndr, "client_port", r->client_port); 452 ndr_print_ptr(ndr, "server_name", r->server_name); 453 ndr->depth++; 454 if (r->server_name) { 455 ndr_print_string(ndr, "server_name", r->server_name); 456 } 457 ndr->depth--; 458 ndr_print_ptr(ndr, "server_addr", r->server_addr); 459 ndr->depth++; 460 if (r->server_addr) { 461 ndr_print_string(ndr, "server_addr", r->server_addr); 462 } 463 ndr->depth--; 464 ndr_print_uint16(ndr, "server_port", r->server_port); 465 ndr_print_ptr(ndr, "sam_info3", r->sam_info3); 466 ndr->depth++; 467 if (r->sam_info3) { 468 ndr_print_netr_SamInfo3(ndr, "sam_info3", r->sam_info3); 469 } 470 ndr->depth--; 471 ndr_print_uint32(ndr, "session_key_length", r->session_key_length); 472 ndr_print_ptr(ndr, "session_key", r->session_key); 473 ndr->depth++; 474 if (r->session_key) { 475 ndr_print_array_uint8(ndr, "session_key", r->session_key, r->session_key_length); 476 } 477 ndr->depth--; 478 ndr_print_uint32(ndr, "gssapi_delegated_creds_length", r->gssapi_delegated_creds_length); 479 ndr_print_ptr(ndr, "gssapi_delegated_creds", r->gssapi_delegated_creds); 480 ndr->depth++; 481 if (r->gssapi_delegated_creds) { 482 ndr_print_array_uint8(ndr, "gssapi_delegated_creds", r->gssapi_delegated_creds, r->gssapi_delegated_creds_length); 483 } 484 ndr->depth--; 485 ndr->depth--; 486} 487 488static enum ndr_err_code ndr_push_named_pipe_auth_req_info(struct ndr_push *ndr, int ndr_flags, const union named_pipe_auth_req_info *r) 489{ 490 if (ndr_flags & NDR_SCALARS) { 491 int level = ndr_push_get_switch_value(ndr, r); 492 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); 493 NDR_CHECK(ndr_push_union_align(ndr, 5)); 494 switch (level) { 495 case 0: { 496 break; } 497 498 case 1: { 499 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info1)); 500 break; } 501 502 case 2: { 503 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr, NDR_SCALARS, &r->info2)); 504 break; } 505 506 case 3: { 507 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr, NDR_SCALARS, &r->info3)); 508 break; } 509 510 default: 511 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 512 } 513 } 514 if (ndr_flags & NDR_BUFFERS) { 515 int level = ndr_push_get_switch_value(ndr, r); 516 switch (level) { 517 case 0: 518 break; 519 520 case 1: 521 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info1)); 522 break; 523 524 case 2: 525 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr, NDR_BUFFERS, &r->info2)); 526 break; 527 528 case 3: 529 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr, NDR_BUFFERS, &r->info3)); 530 break; 531 532 default: 533 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 534 } 535 } 536 return NDR_ERR_SUCCESS; 537} 538 539static enum ndr_err_code ndr_pull_named_pipe_auth_req_info(struct ndr_pull *ndr, int ndr_flags, union named_pipe_auth_req_info *r) 540{ 541 int level; 542 uint32_t _level; 543 level = ndr_pull_get_switch_value(ndr, r); 544 if (ndr_flags & NDR_SCALARS) { 545 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); 546 if (_level != level) { 547 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__); 548 } 549 NDR_CHECK(ndr_pull_union_align(ndr, 5)); 550 switch (level) { 551 case 0: { 552 break; } 553 554 case 1: { 555 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info1)); 556 break; } 557 558 case 2: { 559 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr, NDR_SCALARS, &r->info2)); 560 break; } 561 562 case 3: { 563 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr, NDR_SCALARS, &r->info3)); 564 break; } 565 566 default: 567 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 568 } 569 } 570 if (ndr_flags & NDR_BUFFERS) { 571 switch (level) { 572 case 0: 573 break; 574 575 case 1: 576 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info1)); 577 break; 578 579 case 2: 580 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr, NDR_BUFFERS, &r->info2)); 581 break; 582 583 case 3: 584 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr, NDR_BUFFERS, &r->info3)); 585 break; 586 587 default: 588 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 589 } 590 } 591 return NDR_ERR_SUCCESS; 592} 593 594_PUBLIC_ void ndr_print_named_pipe_auth_req_info(struct ndr_print *ndr, const char *name, const union named_pipe_auth_req_info *r) 595{ 596 int level; 597 level = ndr_print_get_switch_value(ndr, r); 598 ndr_print_union(ndr, name, level, "named_pipe_auth_req_info"); 599 switch (level) { 600 case 0: 601 break; 602 603 case 1: 604 ndr_print_netr_SamInfo3(ndr, "info1", &r->info1); 605 break; 606 607 case 2: 608 ndr_print_named_pipe_auth_req_info2(ndr, "info2", &r->info2); 609 break; 610 611 case 3: 612 ndr_print_named_pipe_auth_req_info3(ndr, "info3", &r->info3); 613 break; 614 615 default: 616 ndr_print_bad_level(ndr, name, level); 617 } 618} 619 620_PUBLIC_ enum ndr_err_code ndr_push_named_pipe_auth_req(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req *r) 621{ 622 if (ndr_flags & NDR_SCALARS) { 623 NDR_CHECK(ndr_push_align(ndr, 5)); 624 { 625 uint32_t _flags_save_uint32 = ndr->flags; 626 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); 627 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_named_pipe_auth_req(r, ndr->iconv_convenience, ndr->flags) - 4)); 628 ndr->flags = _flags_save_uint32; 629 } 630 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, NAMED_PIPE_AUTH_MAGIC, 4, sizeof(uint8_t), CH_DOS)); 631 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level)); 632 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level)); 633 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr, NDR_SCALARS, &r->info)); 634 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 635 } 636 if (ndr_flags & NDR_BUFFERS) { 637 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr, NDR_BUFFERS, &r->info)); 638 } 639 return NDR_ERR_SUCCESS; 640} 641 642_PUBLIC_ enum ndr_err_code ndr_pull_named_pipe_auth_req(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req *r) 643{ 644 if (ndr_flags & NDR_SCALARS) { 645 NDR_CHECK(ndr_pull_align(ndr, 5)); 646 { 647 uint32_t _flags_save_uint32 = ndr->flags; 648 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); 649 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length)); 650 ndr->flags = _flags_save_uint32; 651 } 652 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->magic, 4, sizeof(uint8_t), CH_DOS)); 653 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level)); 654 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level)); 655 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr, NDR_SCALARS, &r->info)); 656 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 657 } 658 if (ndr_flags & NDR_BUFFERS) { 659 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr, NDR_BUFFERS, &r->info)); 660 } 661 return NDR_ERR_SUCCESS; 662} 663 664_PUBLIC_ void ndr_print_named_pipe_auth_req(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req *r) 665{ 666 ndr_print_struct(ndr, name, "named_pipe_auth_req"); 667 ndr->depth++; 668 ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_named_pipe_auth_req(r, ndr->iconv_convenience, ndr->flags) - 4:r->length); 669 ndr_print_string(ndr, "magic", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NAMED_PIPE_AUTH_MAGIC:r->magic); 670 ndr_print_uint32(ndr, "level", r->level); 671 ndr_print_set_switch_value(ndr, &r->info, r->level); 672 ndr_print_named_pipe_auth_req_info(ndr, "info", &r->info); 673 ndr->depth--; 674} 675 676_PUBLIC_ size_t ndr_size_named_pipe_auth_req(const struct named_pipe_auth_req *r, struct smb_iconv_convenience *ic, int flags) 677{ 678 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_named_pipe_auth_req, ic); 679} 680 681static enum ndr_err_code ndr_push_named_pipe_auth_rep_info2(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep_info2 *r) 682{ 683 if (ndr_flags & NDR_SCALARS) { 684 NDR_CHECK(ndr_push_align(ndr, 8)); 685 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->file_type)); 686 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->device_state)); 687 NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->allocation_size)); 688 NDR_CHECK(ndr_push_trailer_align(ndr, 8)); 689 } 690 if (ndr_flags & NDR_BUFFERS) { 691 } 692 return NDR_ERR_SUCCESS; 693} 694 695static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info2(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep_info2 *r) 696{ 697 if (ndr_flags & NDR_SCALARS) { 698 NDR_CHECK(ndr_pull_align(ndr, 8)); 699 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->file_type)); 700 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->device_state)); 701 NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->allocation_size)); 702 NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); 703 } 704 if (ndr_flags & NDR_BUFFERS) { 705 } 706 return NDR_ERR_SUCCESS; 707} 708 709_PUBLIC_ void ndr_print_named_pipe_auth_rep_info2(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep_info2 *r) 710{ 711 ndr_print_struct(ndr, name, "named_pipe_auth_rep_info2"); 712 ndr->depth++; 713 ndr_print_uint16(ndr, "file_type", r->file_type); 714 ndr_print_uint16(ndr, "device_state", r->device_state); 715 ndr_print_hyper(ndr, "allocation_size", r->allocation_size); 716 ndr->depth--; 717} 718 719static enum ndr_err_code ndr_push_named_pipe_auth_rep_info3(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep_info3 *r) 720{ 721 if (ndr_flags & NDR_SCALARS) { 722 NDR_CHECK(ndr_push_align(ndr, 8)); 723 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->file_type)); 724 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->device_state)); 725 NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->allocation_size)); 726 NDR_CHECK(ndr_push_trailer_align(ndr, 8)); 727 } 728 if (ndr_flags & NDR_BUFFERS) { 729 } 730 return NDR_ERR_SUCCESS; 731} 732 733static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info3(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep_info3 *r) 734{ 735 if (ndr_flags & NDR_SCALARS) { 736 NDR_CHECK(ndr_pull_align(ndr, 8)); 737 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->file_type)); 738 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->device_state)); 739 NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->allocation_size)); 740 NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); 741 } 742 if (ndr_flags & NDR_BUFFERS) { 743 } 744 return NDR_ERR_SUCCESS; 745} 746 747_PUBLIC_ void ndr_print_named_pipe_auth_rep_info3(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep_info3 *r) 748{ 749 ndr_print_struct(ndr, name, "named_pipe_auth_rep_info3"); 750 ndr->depth++; 751 ndr_print_uint16(ndr, "file_type", r->file_type); 752 ndr_print_uint16(ndr, "device_state", r->device_state); 753 ndr_print_hyper(ndr, "allocation_size", r->allocation_size); 754 ndr->depth--; 755} 756 757static enum ndr_err_code ndr_push_named_pipe_auth_rep_info(struct ndr_push *ndr, int ndr_flags, const union named_pipe_auth_rep_info *r) 758{ 759 if (ndr_flags & NDR_SCALARS) { 760 int level = ndr_push_get_switch_value(ndr, r); 761 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); 762 NDR_CHECK(ndr_push_union_align(ndr, 8)); 763 switch (level) { 764 case 0: { 765 break; } 766 767 case 1: { 768 break; } 769 770 case 2: { 771 NDR_CHECK(ndr_push_named_pipe_auth_rep_info2(ndr, NDR_SCALARS, &r->info2)); 772 break; } 773 774 case 3: { 775 NDR_CHECK(ndr_push_named_pipe_auth_rep_info3(ndr, NDR_SCALARS, &r->info3)); 776 break; } 777 778 default: 779 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 780 } 781 } 782 if (ndr_flags & NDR_BUFFERS) { 783 int level = ndr_push_get_switch_value(ndr, r); 784 switch (level) { 785 case 0: 786 break; 787 788 case 1: 789 break; 790 791 case 2: 792 break; 793 794 case 3: 795 break; 796 797 default: 798 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 799 } 800 } 801 return NDR_ERR_SUCCESS; 802} 803 804static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info(struct ndr_pull *ndr, int ndr_flags, union named_pipe_auth_rep_info *r) 805{ 806 int level; 807 uint32_t _level; 808 level = ndr_pull_get_switch_value(ndr, r); 809 if (ndr_flags & NDR_SCALARS) { 810 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); 811 if (_level != level) { 812 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__); 813 } 814 NDR_CHECK(ndr_pull_union_align(ndr, 8)); 815 switch (level) { 816 case 0: { 817 break; } 818 819 case 1: { 820 break; } 821 822 case 2: { 823 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info2(ndr, NDR_SCALARS, &r->info2)); 824 break; } 825 826 case 3: { 827 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info3(ndr, NDR_SCALARS, &r->info3)); 828 break; } 829 830 default: 831 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 832 } 833 } 834 if (ndr_flags & NDR_BUFFERS) { 835 switch (level) { 836 case 0: 837 break; 838 839 case 1: 840 break; 841 842 case 2: 843 break; 844 845 case 3: 846 break; 847 848 default: 849 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 850 } 851 } 852 return NDR_ERR_SUCCESS; 853} 854 855_PUBLIC_ void ndr_print_named_pipe_auth_rep_info(struct ndr_print *ndr, const char *name, const union named_pipe_auth_rep_info *r) 856{ 857 int level; 858 level = ndr_print_get_switch_value(ndr, r); 859 ndr_print_union(ndr, name, level, "named_pipe_auth_rep_info"); 860 switch (level) { 861 case 0: 862 break; 863 864 case 1: 865 break; 866 867 case 2: 868 ndr_print_named_pipe_auth_rep_info2(ndr, "info2", &r->info2); 869 break; 870 871 case 3: 872 ndr_print_named_pipe_auth_rep_info3(ndr, "info3", &r->info3); 873 break; 874 875 default: 876 ndr_print_bad_level(ndr, name, level); 877 } 878} 879 880_PUBLIC_ enum ndr_err_code ndr_push_named_pipe_auth_rep(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep *r) 881{ 882 if (ndr_flags & NDR_SCALARS) { 883 NDR_CHECK(ndr_push_align(ndr, 8)); 884 { 885 uint32_t _flags_save_uint32 = ndr->flags; 886 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); 887 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_named_pipe_auth_rep(r, ndr->iconv_convenience, ndr->flags) - 4)); 888 ndr->flags = _flags_save_uint32; 889 } 890 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, NAMED_PIPE_AUTH_MAGIC, 4, sizeof(uint8_t), CH_DOS)); 891 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level)); 892 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level)); 893 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr, NDR_SCALARS, &r->info)); 894 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status)); 895 NDR_CHECK(ndr_push_trailer_align(ndr, 8)); 896 } 897 if (ndr_flags & NDR_BUFFERS) { 898 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr, NDR_BUFFERS, &r->info)); 899 } 900 return NDR_ERR_SUCCESS; 901} 902 903_PUBLIC_ enum ndr_err_code ndr_pull_named_pipe_auth_rep(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep *r) 904{ 905 if (ndr_flags & NDR_SCALARS) { 906 NDR_CHECK(ndr_pull_align(ndr, 8)); 907 { 908 uint32_t _flags_save_uint32 = ndr->flags; 909 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); 910 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length)); 911 ndr->flags = _flags_save_uint32; 912 } 913 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->magic, 4, sizeof(uint8_t), CH_DOS)); 914 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level)); 915 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level)); 916 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr, NDR_SCALARS, &r->info)); 917 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status)); 918 NDR_CHECK(ndr_pull_trailer_align(ndr, 8)); 919 } 920 if (ndr_flags & NDR_BUFFERS) { 921 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr, NDR_BUFFERS, &r->info)); 922 } 923 return NDR_ERR_SUCCESS; 924} 925 926_PUBLIC_ void ndr_print_named_pipe_auth_rep(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep *r) 927{ 928 ndr_print_struct(ndr, name, "named_pipe_auth_rep"); 929 ndr->depth++; 930 ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_named_pipe_auth_rep(r, ndr->iconv_convenience, ndr->flags) - 4:r->length); 931 ndr_print_string(ndr, "magic", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NAMED_PIPE_AUTH_MAGIC:r->magic); 932 ndr_print_uint32(ndr, "level", r->level); 933 ndr_print_set_switch_value(ndr, &r->info, r->level); 934 ndr_print_named_pipe_auth_rep_info(ndr, "info", &r->info); 935 ndr_print_NTSTATUS(ndr, "status", r->status); 936 ndr->depth--; 937} 938 939_PUBLIC_ size_t ndr_size_named_pipe_auth_rep(const struct named_pipe_auth_rep *r, struct smb_iconv_convenience *ic, int flags) 940{ 941 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_named_pipe_auth_rep, ic); 942} 943 944