1/* parser auto-generated by pidl */ 2 3#include "includes.h" 4#include "../librpc/gen_ndr/ndr_dcerpc.h" 5 6#include "librpc/gen_ndr/ndr_misc.h" 7static enum ndr_err_code ndr_push_dcerpc_ctx_list(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_ctx_list *r) 8{ 9 uint32_t cntr_transfer_syntaxes_0; 10 if (ndr_flags & NDR_SCALARS) { 11 NDR_CHECK(ndr_push_align(ndr, 4)); 12 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->context_id)); 13 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->num_transfer_syntaxes)); 14 NDR_CHECK(ndr_push_ndr_syntax_id(ndr, NDR_SCALARS, &r->abstract_syntax)); 15 for (cntr_transfer_syntaxes_0 = 0; cntr_transfer_syntaxes_0 < r->num_transfer_syntaxes; cntr_transfer_syntaxes_0++) { 16 NDR_CHECK(ndr_push_ndr_syntax_id(ndr, NDR_SCALARS, &r->transfer_syntaxes[cntr_transfer_syntaxes_0])); 17 } 18 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 19 } 20 if (ndr_flags & NDR_BUFFERS) { 21 } 22 return NDR_ERR_SUCCESS; 23} 24 25static enum ndr_err_code ndr_pull_dcerpc_ctx_list(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_ctx_list *r) 26{ 27 uint32_t cntr_transfer_syntaxes_0; 28 TALLOC_CTX *_mem_save_transfer_syntaxes_0; 29 if (ndr_flags & NDR_SCALARS) { 30 NDR_CHECK(ndr_pull_align(ndr, 4)); 31 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->context_id)); 32 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->num_transfer_syntaxes)); 33 NDR_CHECK(ndr_pull_ndr_syntax_id(ndr, NDR_SCALARS, &r->abstract_syntax)); 34 NDR_PULL_ALLOC_N(ndr, r->transfer_syntaxes, r->num_transfer_syntaxes); 35 _mem_save_transfer_syntaxes_0 = NDR_PULL_GET_MEM_CTX(ndr); 36 NDR_PULL_SET_MEM_CTX(ndr, r->transfer_syntaxes, 0); 37 for (cntr_transfer_syntaxes_0 = 0; cntr_transfer_syntaxes_0 < r->num_transfer_syntaxes; cntr_transfer_syntaxes_0++) { 38 NDR_CHECK(ndr_pull_ndr_syntax_id(ndr, NDR_SCALARS, &r->transfer_syntaxes[cntr_transfer_syntaxes_0])); 39 } 40 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transfer_syntaxes_0, 0); 41 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 42 } 43 if (ndr_flags & NDR_BUFFERS) { 44 } 45 return NDR_ERR_SUCCESS; 46} 47 48_PUBLIC_ void ndr_print_dcerpc_ctx_list(struct ndr_print *ndr, const char *name, const struct dcerpc_ctx_list *r) 49{ 50 uint32_t cntr_transfer_syntaxes_0; 51 ndr_print_struct(ndr, name, "dcerpc_ctx_list"); 52 ndr->depth++; 53 ndr_print_uint16(ndr, "context_id", r->context_id); 54 ndr_print_uint8(ndr, "num_transfer_syntaxes", r->num_transfer_syntaxes); 55 ndr_print_ndr_syntax_id(ndr, "abstract_syntax", &r->abstract_syntax); 56 ndr->print(ndr, "%s: ARRAY(%d)", "transfer_syntaxes", (int)r->num_transfer_syntaxes); 57 ndr->depth++; 58 for (cntr_transfer_syntaxes_0=0;cntr_transfer_syntaxes_0<r->num_transfer_syntaxes;cntr_transfer_syntaxes_0++) { 59 char *idx_0=NULL; 60 if (asprintf(&idx_0, "[%d]", cntr_transfer_syntaxes_0) != -1) { 61 ndr_print_ndr_syntax_id(ndr, "transfer_syntaxes", &r->transfer_syntaxes[cntr_transfer_syntaxes_0]); 62 free(idx_0); 63 } 64 } 65 ndr->depth--; 66 ndr->depth--; 67} 68 69static enum ndr_err_code ndr_push_dcerpc_bind(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_bind *r) 70{ 71 uint32_t cntr_ctx_list_0; 72 if (ndr_flags & NDR_SCALARS) { 73 NDR_CHECK(ndr_push_align(ndr, 4)); 74 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->max_xmit_frag)); 75 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->max_recv_frag)); 76 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->assoc_group_id)); 77 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->num_contexts)); 78 for (cntr_ctx_list_0 = 0; cntr_ctx_list_0 < r->num_contexts; cntr_ctx_list_0++) { 79 NDR_CHECK(ndr_push_dcerpc_ctx_list(ndr, NDR_SCALARS, &r->ctx_list[cntr_ctx_list_0])); 80 } 81 { 82 uint32_t _flags_save_DATA_BLOB = ndr->flags; 83 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); 84 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad)); 85 ndr->flags = _flags_save_DATA_BLOB; 86 } 87 { 88 uint32_t _flags_save_DATA_BLOB = ndr->flags; 89 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 90 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->auth_info)); 91 ndr->flags = _flags_save_DATA_BLOB; 92 } 93 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 94 } 95 if (ndr_flags & NDR_BUFFERS) { 96 } 97 return NDR_ERR_SUCCESS; 98} 99 100static enum ndr_err_code ndr_pull_dcerpc_bind(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_bind *r) 101{ 102 uint32_t cntr_ctx_list_0; 103 TALLOC_CTX *_mem_save_ctx_list_0; 104 if (ndr_flags & NDR_SCALARS) { 105 NDR_CHECK(ndr_pull_align(ndr, 4)); 106 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->max_xmit_frag)); 107 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->max_recv_frag)); 108 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->assoc_group_id)); 109 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->num_contexts)); 110 NDR_PULL_ALLOC_N(ndr, r->ctx_list, r->num_contexts); 111 _mem_save_ctx_list_0 = NDR_PULL_GET_MEM_CTX(ndr); 112 NDR_PULL_SET_MEM_CTX(ndr, r->ctx_list, 0); 113 for (cntr_ctx_list_0 = 0; cntr_ctx_list_0 < r->num_contexts; cntr_ctx_list_0++) { 114 NDR_CHECK(ndr_pull_dcerpc_ctx_list(ndr, NDR_SCALARS, &r->ctx_list[cntr_ctx_list_0])); 115 } 116 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctx_list_0, 0); 117 { 118 uint32_t _flags_save_DATA_BLOB = ndr->flags; 119 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); 120 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); 121 ndr->flags = _flags_save_DATA_BLOB; 122 } 123 { 124 uint32_t _flags_save_DATA_BLOB = ndr->flags; 125 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 126 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->auth_info)); 127 ndr->flags = _flags_save_DATA_BLOB; 128 } 129 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 130 } 131 if (ndr_flags & NDR_BUFFERS) { 132 } 133 return NDR_ERR_SUCCESS; 134} 135 136_PUBLIC_ void ndr_print_dcerpc_bind(struct ndr_print *ndr, const char *name, const struct dcerpc_bind *r) 137{ 138 uint32_t cntr_ctx_list_0; 139 ndr_print_struct(ndr, name, "dcerpc_bind"); 140 ndr->depth++; 141 ndr_print_uint16(ndr, "max_xmit_frag", r->max_xmit_frag); 142 ndr_print_uint16(ndr, "max_recv_frag", r->max_recv_frag); 143 ndr_print_uint32(ndr, "assoc_group_id", r->assoc_group_id); 144 ndr_print_uint8(ndr, "num_contexts", r->num_contexts); 145 ndr->print(ndr, "%s: ARRAY(%d)", "ctx_list", (int)r->num_contexts); 146 ndr->depth++; 147 for (cntr_ctx_list_0=0;cntr_ctx_list_0<r->num_contexts;cntr_ctx_list_0++) { 148 char *idx_0=NULL; 149 if (asprintf(&idx_0, "[%d]", cntr_ctx_list_0) != -1) { 150 ndr_print_dcerpc_ctx_list(ndr, "ctx_list", &r->ctx_list[cntr_ctx_list_0]); 151 free(idx_0); 152 } 153 } 154 ndr->depth--; 155 ndr_print_DATA_BLOB(ndr, "_pad", r->_pad); 156 ndr_print_DATA_BLOB(ndr, "auth_info", r->auth_info); 157 ndr->depth--; 158} 159 160static enum ndr_err_code ndr_push_dcerpc_empty(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_empty *r) 161{ 162 if (ndr_flags & NDR_SCALARS) { 163 NDR_CHECK(ndr_push_align(ndr, 1)); 164 NDR_CHECK(ndr_push_trailer_align(ndr, 1)); 165 } 166 if (ndr_flags & NDR_BUFFERS) { 167 } 168 return NDR_ERR_SUCCESS; 169} 170 171static enum ndr_err_code ndr_pull_dcerpc_empty(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_empty *r) 172{ 173 if (ndr_flags & NDR_SCALARS) { 174 NDR_CHECK(ndr_pull_align(ndr, 1)); 175 NDR_CHECK(ndr_pull_trailer_align(ndr, 1)); 176 } 177 if (ndr_flags & NDR_BUFFERS) { 178 } 179 return NDR_ERR_SUCCESS; 180} 181 182_PUBLIC_ void ndr_print_dcerpc_empty(struct ndr_print *ndr, const char *name, const struct dcerpc_empty *r) 183{ 184 ndr_print_struct(ndr, name, "dcerpc_empty"); 185 ndr->depth++; 186 ndr->depth--; 187} 188 189static enum ndr_err_code ndr_push_dcerpc_object(struct ndr_push *ndr, int ndr_flags, const union dcerpc_object *r) 190{ 191 if (ndr_flags & NDR_SCALARS) { 192 int level = ndr_push_get_switch_value(ndr, r); 193 NDR_CHECK(ndr_push_union_align(ndr, 4)); 194 switch (level) { 195 default: { 196 NDR_CHECK(ndr_push_dcerpc_empty(ndr, NDR_SCALARS, &r->empty)); 197 break; } 198 199 case LIBNDR_FLAG_OBJECT_PRESENT: { 200 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->object)); 201 break; } 202 203 } 204 } 205 if (ndr_flags & NDR_BUFFERS) { 206 int level = ndr_push_get_switch_value(ndr, r); 207 switch (level) { 208 default: 209 break; 210 211 case LIBNDR_FLAG_OBJECT_PRESENT: 212 break; 213 214 } 215 } 216 return NDR_ERR_SUCCESS; 217} 218 219static enum ndr_err_code ndr_pull_dcerpc_object(struct ndr_pull *ndr, int ndr_flags, union dcerpc_object *r) 220{ 221 int level; 222 level = ndr_pull_get_switch_value(ndr, r); 223 if (ndr_flags & NDR_SCALARS) { 224 NDR_CHECK(ndr_pull_union_align(ndr, 4)); 225 switch (level) { 226 default: { 227 NDR_CHECK(ndr_pull_dcerpc_empty(ndr, NDR_SCALARS, &r->empty)); 228 break; } 229 230 case LIBNDR_FLAG_OBJECT_PRESENT: { 231 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->object)); 232 break; } 233 234 } 235 } 236 if (ndr_flags & NDR_BUFFERS) { 237 switch (level) { 238 default: 239 break; 240 241 case LIBNDR_FLAG_OBJECT_PRESENT: 242 break; 243 244 } 245 } 246 return NDR_ERR_SUCCESS; 247} 248 249_PUBLIC_ void ndr_print_dcerpc_object(struct ndr_print *ndr, const char *name, const union dcerpc_object *r) 250{ 251 int level; 252 level = ndr_print_get_switch_value(ndr, r); 253 ndr_print_union(ndr, name, level, "dcerpc_object"); 254 switch (level) { 255 default: 256 ndr_print_dcerpc_empty(ndr, "empty", &r->empty); 257 break; 258 259 case LIBNDR_FLAG_OBJECT_PRESENT: 260 ndr_print_GUID(ndr, "object", &r->object); 261 break; 262 263 } 264} 265 266static enum ndr_err_code ndr_push_dcerpc_request(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_request *r) 267{ 268 if (ndr_flags & NDR_SCALARS) { 269 NDR_CHECK(ndr_push_align(ndr, 4)); 270 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alloc_hint)); 271 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->context_id)); 272 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->opnum)); 273 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->object, ndr->flags & LIBNDR_FLAG_OBJECT_PRESENT)); 274 NDR_CHECK(ndr_push_dcerpc_object(ndr, NDR_SCALARS, &r->object)); 275 { 276 uint32_t _flags_save_DATA_BLOB = ndr->flags; 277 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8); 278 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad)); 279 ndr->flags = _flags_save_DATA_BLOB; 280 } 281 { 282 uint32_t _flags_save_DATA_BLOB = ndr->flags; 283 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 284 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->stub_and_verifier)); 285 ndr->flags = _flags_save_DATA_BLOB; 286 } 287 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 288 } 289 if (ndr_flags & NDR_BUFFERS) { 290 } 291 return NDR_ERR_SUCCESS; 292} 293 294static enum ndr_err_code ndr_pull_dcerpc_request(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_request *r) 295{ 296 if (ndr_flags & NDR_SCALARS) { 297 NDR_CHECK(ndr_pull_align(ndr, 4)); 298 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alloc_hint)); 299 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->context_id)); 300 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->opnum)); 301 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->object, ndr->flags & LIBNDR_FLAG_OBJECT_PRESENT)); 302 NDR_CHECK(ndr_pull_dcerpc_object(ndr, NDR_SCALARS, &r->object)); 303 { 304 uint32_t _flags_save_DATA_BLOB = ndr->flags; 305 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8); 306 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); 307 ndr->flags = _flags_save_DATA_BLOB; 308 } 309 { 310 uint32_t _flags_save_DATA_BLOB = ndr->flags; 311 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 312 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->stub_and_verifier)); 313 ndr->flags = _flags_save_DATA_BLOB; 314 } 315 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 316 } 317 if (ndr_flags & NDR_BUFFERS) { 318 } 319 return NDR_ERR_SUCCESS; 320} 321 322_PUBLIC_ void ndr_print_dcerpc_request(struct ndr_print *ndr, const char *name, const struct dcerpc_request *r) 323{ 324 ndr_print_struct(ndr, name, "dcerpc_request"); 325 ndr->depth++; 326 ndr_print_uint32(ndr, "alloc_hint", r->alloc_hint); 327 ndr_print_uint16(ndr, "context_id", r->context_id); 328 ndr_print_uint16(ndr, "opnum", r->opnum); 329 ndr_print_set_switch_value(ndr, &r->object, ndr->flags & LIBNDR_FLAG_OBJECT_PRESENT); 330 ndr_print_dcerpc_object(ndr, "object", &r->object); 331 ndr_print_DATA_BLOB(ndr, "_pad", r->_pad); 332 ndr_print_DATA_BLOB(ndr, "stub_and_verifier", r->stub_and_verifier); 333 ndr->depth--; 334} 335 336static enum ndr_err_code ndr_push_dcerpc_ack_ctx(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_ack_ctx *r) 337{ 338 if (ndr_flags & NDR_SCALARS) { 339 NDR_CHECK(ndr_push_align(ndr, 4)); 340 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->result)); 341 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reason)); 342 NDR_CHECK(ndr_push_ndr_syntax_id(ndr, NDR_SCALARS, &r->syntax)); 343 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 344 } 345 if (ndr_flags & NDR_BUFFERS) { 346 } 347 return NDR_ERR_SUCCESS; 348} 349 350static enum ndr_err_code ndr_pull_dcerpc_ack_ctx(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_ack_ctx *r) 351{ 352 if (ndr_flags & NDR_SCALARS) { 353 NDR_CHECK(ndr_pull_align(ndr, 4)); 354 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->result)); 355 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reason)); 356 NDR_CHECK(ndr_pull_ndr_syntax_id(ndr, NDR_SCALARS, &r->syntax)); 357 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 358 } 359 if (ndr_flags & NDR_BUFFERS) { 360 } 361 return NDR_ERR_SUCCESS; 362} 363 364_PUBLIC_ void ndr_print_dcerpc_ack_ctx(struct ndr_print *ndr, const char *name, const struct dcerpc_ack_ctx *r) 365{ 366 ndr_print_struct(ndr, name, "dcerpc_ack_ctx"); 367 ndr->depth++; 368 ndr_print_uint16(ndr, "result", r->result); 369 ndr_print_uint16(ndr, "reason", r->reason); 370 ndr_print_ndr_syntax_id(ndr, "syntax", &r->syntax); 371 ndr->depth--; 372} 373 374static enum ndr_err_code ndr_push_dcerpc_bind_ack(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_bind_ack *r) 375{ 376 uint32_t cntr_ctx_list_0; 377 if (ndr_flags & NDR_SCALARS) { 378 NDR_CHECK(ndr_push_align(ndr, 4)); 379 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->max_xmit_frag)); 380 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->max_recv_frag)); 381 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->assoc_group_id)); 382 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen(r->secondary_address) + 1)); 383 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->secondary_address, strlen(r->secondary_address) + 1, sizeof(uint8_t), CH_DOS)); 384 { 385 uint32_t _flags_save_DATA_BLOB = ndr->flags; 386 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); 387 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad1)); 388 ndr->flags = _flags_save_DATA_BLOB; 389 } 390 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->num_results)); 391 for (cntr_ctx_list_0 = 0; cntr_ctx_list_0 < r->num_results; cntr_ctx_list_0++) { 392 NDR_CHECK(ndr_push_dcerpc_ack_ctx(ndr, NDR_SCALARS, &r->ctx_list[cntr_ctx_list_0])); 393 } 394 { 395 uint32_t _flags_save_DATA_BLOB = ndr->flags; 396 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 397 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->auth_info)); 398 ndr->flags = _flags_save_DATA_BLOB; 399 } 400 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 401 } 402 if (ndr_flags & NDR_BUFFERS) { 403 } 404 return NDR_ERR_SUCCESS; 405} 406 407static enum ndr_err_code ndr_pull_dcerpc_bind_ack(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_bind_ack *r) 408{ 409 uint32_t cntr_ctx_list_0; 410 TALLOC_CTX *_mem_save_ctx_list_0; 411 if (ndr_flags & NDR_SCALARS) { 412 NDR_CHECK(ndr_pull_align(ndr, 4)); 413 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->max_xmit_frag)); 414 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->max_recv_frag)); 415 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->assoc_group_id)); 416 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->secondary_address_size)); 417 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->secondary_address, r->secondary_address_size, sizeof(uint8_t), CH_DOS)); 418 { 419 uint32_t _flags_save_DATA_BLOB = ndr->flags; 420 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); 421 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad1)); 422 ndr->flags = _flags_save_DATA_BLOB; 423 } 424 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->num_results)); 425 NDR_PULL_ALLOC_N(ndr, r->ctx_list, r->num_results); 426 _mem_save_ctx_list_0 = NDR_PULL_GET_MEM_CTX(ndr); 427 NDR_PULL_SET_MEM_CTX(ndr, r->ctx_list, 0); 428 for (cntr_ctx_list_0 = 0; cntr_ctx_list_0 < r->num_results; cntr_ctx_list_0++) { 429 NDR_CHECK(ndr_pull_dcerpc_ack_ctx(ndr, NDR_SCALARS, &r->ctx_list[cntr_ctx_list_0])); 430 } 431 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctx_list_0, 0); 432 { 433 uint32_t _flags_save_DATA_BLOB = ndr->flags; 434 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 435 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->auth_info)); 436 ndr->flags = _flags_save_DATA_BLOB; 437 } 438 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 439 } 440 if (ndr_flags & NDR_BUFFERS) { 441 } 442 return NDR_ERR_SUCCESS; 443} 444 445_PUBLIC_ void ndr_print_dcerpc_bind_ack(struct ndr_print *ndr, const char *name, const struct dcerpc_bind_ack *r) 446{ 447 uint32_t cntr_ctx_list_0; 448 ndr_print_struct(ndr, name, "dcerpc_bind_ack"); 449 ndr->depth++; 450 ndr_print_uint16(ndr, "max_xmit_frag", r->max_xmit_frag); 451 ndr_print_uint16(ndr, "max_recv_frag", r->max_recv_frag); 452 ndr_print_uint32(ndr, "assoc_group_id", r->assoc_group_id); 453 ndr_print_uint16(ndr, "secondary_address_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->secondary_address) + 1:r->secondary_address_size); 454 ndr_print_string(ndr, "secondary_address", r->secondary_address); 455 ndr_print_DATA_BLOB(ndr, "_pad1", r->_pad1); 456 ndr_print_uint8(ndr, "num_results", r->num_results); 457 ndr->print(ndr, "%s: ARRAY(%d)", "ctx_list", (int)r->num_results); 458 ndr->depth++; 459 for (cntr_ctx_list_0=0;cntr_ctx_list_0<r->num_results;cntr_ctx_list_0++) { 460 char *idx_0=NULL; 461 if (asprintf(&idx_0, "[%d]", cntr_ctx_list_0) != -1) { 462 ndr_print_dcerpc_ack_ctx(ndr, "ctx_list", &r->ctx_list[cntr_ctx_list_0]); 463 free(idx_0); 464 } 465 } 466 ndr->depth--; 467 ndr_print_DATA_BLOB(ndr, "auth_info", r->auth_info); 468 ndr->depth--; 469} 470 471static enum ndr_err_code ndr_push_dcerpc_bind_nak_versions(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_bind_nak_versions *r) 472{ 473 uint32_t cntr_versions_0; 474 if (ndr_flags & NDR_SCALARS) { 475 NDR_CHECK(ndr_push_align(ndr, 4)); 476 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_versions)); 477 for (cntr_versions_0 = 0; cntr_versions_0 < r->num_versions; cntr_versions_0++) { 478 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->versions[cntr_versions_0])); 479 } 480 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 481 } 482 if (ndr_flags & NDR_BUFFERS) { 483 } 484 return NDR_ERR_SUCCESS; 485} 486 487static enum ndr_err_code ndr_pull_dcerpc_bind_nak_versions(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_bind_nak_versions *r) 488{ 489 uint32_t cntr_versions_0; 490 TALLOC_CTX *_mem_save_versions_0; 491 if (ndr_flags & NDR_SCALARS) { 492 NDR_CHECK(ndr_pull_align(ndr, 4)); 493 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_versions)); 494 NDR_PULL_ALLOC_N(ndr, r->versions, r->num_versions); 495 _mem_save_versions_0 = NDR_PULL_GET_MEM_CTX(ndr); 496 NDR_PULL_SET_MEM_CTX(ndr, r->versions, 0); 497 for (cntr_versions_0 = 0; cntr_versions_0 < r->num_versions; cntr_versions_0++) { 498 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->versions[cntr_versions_0])); 499 } 500 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_versions_0, 0); 501 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 502 } 503 if (ndr_flags & NDR_BUFFERS) { 504 } 505 return NDR_ERR_SUCCESS; 506} 507 508_PUBLIC_ void ndr_print_dcerpc_bind_nak_versions(struct ndr_print *ndr, const char *name, const struct dcerpc_bind_nak_versions *r) 509{ 510 uint32_t cntr_versions_0; 511 ndr_print_struct(ndr, name, "dcerpc_bind_nak_versions"); 512 ndr->depth++; 513 ndr_print_uint32(ndr, "num_versions", r->num_versions); 514 ndr->print(ndr, "%s: ARRAY(%d)", "versions", (int)r->num_versions); 515 ndr->depth++; 516 for (cntr_versions_0=0;cntr_versions_0<r->num_versions;cntr_versions_0++) { 517 char *idx_0=NULL; 518 if (asprintf(&idx_0, "[%d]", cntr_versions_0) != -1) { 519 ndr_print_uint32(ndr, "versions", r->versions[cntr_versions_0]); 520 free(idx_0); 521 } 522 } 523 ndr->depth--; 524 ndr->depth--; 525} 526 527static enum ndr_err_code ndr_push_dcerpc_bind_nak_versions_ctr(struct ndr_push *ndr, int ndr_flags, const union dcerpc_bind_nak_versions_ctr *r) 528{ 529 if (ndr_flags & NDR_SCALARS) { 530 int level = ndr_push_get_switch_value(ndr, r); 531 NDR_CHECK(ndr_push_union_align(ndr, 4)); 532 switch (level) { 533 case DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED: { 534 NDR_CHECK(ndr_push_dcerpc_bind_nak_versions(ndr, NDR_SCALARS, &r->v)); 535 break; } 536 537 default: { 538 break; } 539 540 } 541 } 542 if (ndr_flags & NDR_BUFFERS) { 543 int level = ndr_push_get_switch_value(ndr, r); 544 switch (level) { 545 case DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED: 546 break; 547 548 default: 549 break; 550 551 } 552 } 553 return NDR_ERR_SUCCESS; 554} 555 556static enum ndr_err_code ndr_pull_dcerpc_bind_nak_versions_ctr(struct ndr_pull *ndr, int ndr_flags, union dcerpc_bind_nak_versions_ctr *r) 557{ 558 int level; 559 level = ndr_pull_get_switch_value(ndr, r); 560 if (ndr_flags & NDR_SCALARS) { 561 NDR_CHECK(ndr_pull_union_align(ndr, 4)); 562 switch (level) { 563 case DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED: { 564 NDR_CHECK(ndr_pull_dcerpc_bind_nak_versions(ndr, NDR_SCALARS, &r->v)); 565 break; } 566 567 default: { 568 break; } 569 570 } 571 } 572 if (ndr_flags & NDR_BUFFERS) { 573 switch (level) { 574 case DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED: 575 break; 576 577 default: 578 break; 579 580 } 581 } 582 return NDR_ERR_SUCCESS; 583} 584 585_PUBLIC_ void ndr_print_dcerpc_bind_nak_versions_ctr(struct ndr_print *ndr, const char *name, const union dcerpc_bind_nak_versions_ctr *r) 586{ 587 int level; 588 level = ndr_print_get_switch_value(ndr, r); 589 ndr_print_union(ndr, name, level, "dcerpc_bind_nak_versions_ctr"); 590 switch (level) { 591 case DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED: 592 ndr_print_dcerpc_bind_nak_versions(ndr, "v", &r->v); 593 break; 594 595 default: 596 break; 597 598 } 599} 600 601static enum ndr_err_code ndr_push_dcerpc_bind_nak(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_bind_nak *r) 602{ 603 if (ndr_flags & NDR_SCALARS) { 604 NDR_CHECK(ndr_push_align(ndr, 4)); 605 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->reject_reason)); 606 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->versions, r->reject_reason)); 607 NDR_CHECK(ndr_push_dcerpc_bind_nak_versions_ctr(ndr, NDR_SCALARS, &r->versions)); 608 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 609 } 610 if (ndr_flags & NDR_BUFFERS) { 611 NDR_CHECK(ndr_push_dcerpc_bind_nak_versions_ctr(ndr, NDR_BUFFERS, &r->versions)); 612 } 613 return NDR_ERR_SUCCESS; 614} 615 616static enum ndr_err_code ndr_pull_dcerpc_bind_nak(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_bind_nak *r) 617{ 618 if (ndr_flags & NDR_SCALARS) { 619 NDR_CHECK(ndr_pull_align(ndr, 4)); 620 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->reject_reason)); 621 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->versions, r->reject_reason)); 622 NDR_CHECK(ndr_pull_dcerpc_bind_nak_versions_ctr(ndr, NDR_SCALARS, &r->versions)); 623 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 624 } 625 if (ndr_flags & NDR_BUFFERS) { 626 NDR_CHECK(ndr_pull_dcerpc_bind_nak_versions_ctr(ndr, NDR_BUFFERS, &r->versions)); 627 } 628 return NDR_ERR_SUCCESS; 629} 630 631_PUBLIC_ void ndr_print_dcerpc_bind_nak(struct ndr_print *ndr, const char *name, const struct dcerpc_bind_nak *r) 632{ 633 ndr_print_struct(ndr, name, "dcerpc_bind_nak"); 634 ndr->depth++; 635 ndr_print_uint16(ndr, "reject_reason", r->reject_reason); 636 ndr_print_set_switch_value(ndr, &r->versions, r->reject_reason); 637 ndr_print_dcerpc_bind_nak_versions_ctr(ndr, "versions", &r->versions); 638 ndr->depth--; 639} 640 641static enum ndr_err_code ndr_push_dcerpc_response(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_response *r) 642{ 643 if (ndr_flags & NDR_SCALARS) { 644 NDR_CHECK(ndr_push_align(ndr, 4)); 645 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alloc_hint)); 646 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->context_id)); 647 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->cancel_count)); 648 { 649 uint32_t _flags_save_DATA_BLOB = ndr->flags; 650 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8); 651 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad)); 652 ndr->flags = _flags_save_DATA_BLOB; 653 } 654 { 655 uint32_t _flags_save_DATA_BLOB = ndr->flags; 656 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 657 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->stub_and_verifier)); 658 ndr->flags = _flags_save_DATA_BLOB; 659 } 660 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 661 } 662 if (ndr_flags & NDR_BUFFERS) { 663 } 664 return NDR_ERR_SUCCESS; 665} 666 667static enum ndr_err_code ndr_pull_dcerpc_response(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_response *r) 668{ 669 if (ndr_flags & NDR_SCALARS) { 670 NDR_CHECK(ndr_pull_align(ndr, 4)); 671 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alloc_hint)); 672 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->context_id)); 673 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->cancel_count)); 674 { 675 uint32_t _flags_save_DATA_BLOB = ndr->flags; 676 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN8); 677 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); 678 ndr->flags = _flags_save_DATA_BLOB; 679 } 680 { 681 uint32_t _flags_save_DATA_BLOB = ndr->flags; 682 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 683 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->stub_and_verifier)); 684 ndr->flags = _flags_save_DATA_BLOB; 685 } 686 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 687 } 688 if (ndr_flags & NDR_BUFFERS) { 689 } 690 return NDR_ERR_SUCCESS; 691} 692 693_PUBLIC_ void ndr_print_dcerpc_response(struct ndr_print *ndr, const char *name, const struct dcerpc_response *r) 694{ 695 ndr_print_struct(ndr, name, "dcerpc_response"); 696 ndr->depth++; 697 ndr_print_uint32(ndr, "alloc_hint", r->alloc_hint); 698 ndr_print_uint16(ndr, "context_id", r->context_id); 699 ndr_print_uint8(ndr, "cancel_count", r->cancel_count); 700 ndr_print_DATA_BLOB(ndr, "_pad", r->_pad); 701 ndr_print_DATA_BLOB(ndr, "stub_and_verifier", r->stub_and_verifier); 702 ndr->depth--; 703} 704 705static enum ndr_err_code ndr_push_dcerpc_fault(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_fault *r) 706{ 707 if (ndr_flags & NDR_SCALARS) { 708 NDR_CHECK(ndr_push_align(ndr, 4)); 709 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->alloc_hint)); 710 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->context_id)); 711 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->cancel_count)); 712 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->status)); 713 { 714 uint32_t _flags_save_DATA_BLOB = ndr->flags; 715 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 716 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->_pad)); 717 ndr->flags = _flags_save_DATA_BLOB; 718 } 719 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 720 } 721 if (ndr_flags & NDR_BUFFERS) { 722 } 723 return NDR_ERR_SUCCESS; 724} 725 726static enum ndr_err_code ndr_pull_dcerpc_fault(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_fault *r) 727{ 728 if (ndr_flags & NDR_SCALARS) { 729 NDR_CHECK(ndr_pull_align(ndr, 4)); 730 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->alloc_hint)); 731 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->context_id)); 732 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->cancel_count)); 733 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->status)); 734 { 735 uint32_t _flags_save_DATA_BLOB = ndr->flags; 736 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 737 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); 738 ndr->flags = _flags_save_DATA_BLOB; 739 } 740 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 741 } 742 if (ndr_flags & NDR_BUFFERS) { 743 } 744 return NDR_ERR_SUCCESS; 745} 746 747_PUBLIC_ void ndr_print_dcerpc_fault(struct ndr_print *ndr, const char *name, const struct dcerpc_fault *r) 748{ 749 ndr_print_struct(ndr, name, "dcerpc_fault"); 750 ndr->depth++; 751 ndr_print_uint32(ndr, "alloc_hint", r->alloc_hint); 752 ndr_print_uint16(ndr, "context_id", r->context_id); 753 ndr_print_uint8(ndr, "cancel_count", r->cancel_count); 754 ndr_print_uint32(ndr, "status", r->status); 755 ndr_print_DATA_BLOB(ndr, "_pad", r->_pad); 756 ndr->depth--; 757} 758 759static enum ndr_err_code ndr_push_dcerpc_AuthType(struct ndr_push *ndr, int ndr_flags, enum dcerpc_AuthType r) 760{ 761 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r)); 762 return NDR_ERR_SUCCESS; 763} 764 765static enum ndr_err_code ndr_pull_dcerpc_AuthType(struct ndr_pull *ndr, int ndr_flags, enum dcerpc_AuthType *r) 766{ 767 uint8_t v; 768 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v)); 769 *r = v; 770 return NDR_ERR_SUCCESS; 771} 772 773_PUBLIC_ void ndr_print_dcerpc_AuthType(struct ndr_print *ndr, const char *name, enum dcerpc_AuthType r) 774{ 775 const char *val = NULL; 776 777 switch (r) { 778 case DCERPC_AUTH_TYPE_NONE: val = "DCERPC_AUTH_TYPE_NONE"; break; 779 case DCERPC_AUTH_TYPE_KRB5_1: val = "DCERPC_AUTH_TYPE_KRB5_1"; break; 780 case DCERPC_AUTH_TYPE_SPNEGO: val = "DCERPC_AUTH_TYPE_SPNEGO"; break; 781 case DCERPC_AUTH_TYPE_NTLMSSP: val = "DCERPC_AUTH_TYPE_NTLMSSP"; break; 782 case DCERPC_AUTH_TYPE_KRB5: val = "DCERPC_AUTH_TYPE_KRB5"; break; 783 case DCERPC_AUTH_TYPE_DPA: val = "DCERPC_AUTH_TYPE_DPA"; break; 784 case DCERPC_AUTH_TYPE_MSN: val = "DCERPC_AUTH_TYPE_MSN"; break; 785 case DCERPC_AUTH_TYPE_DIGEST: val = "DCERPC_AUTH_TYPE_DIGEST"; break; 786 case DCERPC_AUTH_TYPE_SCHANNEL: val = "DCERPC_AUTH_TYPE_SCHANNEL"; break; 787 case DCERPC_AUTH_TYPE_MSMQ: val = "DCERPC_AUTH_TYPE_MSMQ"; break; 788 } 789 ndr_print_enum(ndr, name, "ENUM", val, r); 790} 791 792static enum ndr_err_code ndr_push_dcerpc_AuthLevel(struct ndr_push *ndr, int ndr_flags, enum dcerpc_AuthLevel r) 793{ 794 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r)); 795 return NDR_ERR_SUCCESS; 796} 797 798static enum ndr_err_code ndr_pull_dcerpc_AuthLevel(struct ndr_pull *ndr, int ndr_flags, enum dcerpc_AuthLevel *r) 799{ 800 uint8_t v; 801 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v)); 802 *r = v; 803 return NDR_ERR_SUCCESS; 804} 805 806_PUBLIC_ void ndr_print_dcerpc_AuthLevel(struct ndr_print *ndr, const char *name, enum dcerpc_AuthLevel r) 807{ 808 const char *val = NULL; 809 810 switch (r) { 811 case DCERPC_AUTH_LEVEL_NONE: val = "DCERPC_AUTH_LEVEL_NONE"; break; 812 case DCERPC_AUTH_LEVEL_CONNECT: val = "DCERPC_AUTH_LEVEL_CONNECT"; break; 813 case DCERPC_AUTH_LEVEL_CALL: val = "DCERPC_AUTH_LEVEL_CALL"; break; 814 case DCERPC_AUTH_LEVEL_PACKET: val = "DCERPC_AUTH_LEVEL_PACKET"; break; 815 case DCERPC_AUTH_LEVEL_INTEGRITY: val = "DCERPC_AUTH_LEVEL_INTEGRITY"; break; 816 case DCERPC_AUTH_LEVEL_PRIVACY: val = "DCERPC_AUTH_LEVEL_PRIVACY"; break; 817 } 818 ndr_print_enum(ndr, name, "ENUM", val, r); 819} 820 821_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_auth(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_auth *r) 822{ 823 if (ndr_flags & NDR_SCALARS) { 824 NDR_CHECK(ndr_push_align(ndr, 4)); 825 NDR_CHECK(ndr_push_dcerpc_AuthType(ndr, NDR_SCALARS, r->auth_type)); 826 NDR_CHECK(ndr_push_dcerpc_AuthLevel(ndr, NDR_SCALARS, r->auth_level)); 827 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auth_pad_length)); 828 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auth_reserved)); 829 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_context_id)); 830 { 831 uint32_t _flags_save_DATA_BLOB = ndr->flags; 832 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 833 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->credentials)); 834 ndr->flags = _flags_save_DATA_BLOB; 835 } 836 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 837 } 838 if (ndr_flags & NDR_BUFFERS) { 839 } 840 return NDR_ERR_SUCCESS; 841} 842 843_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_auth(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_auth *r) 844{ 845 if (ndr_flags & NDR_SCALARS) { 846 NDR_CHECK(ndr_pull_align(ndr, 4)); 847 NDR_CHECK(ndr_pull_dcerpc_AuthType(ndr, NDR_SCALARS, &r->auth_type)); 848 NDR_CHECK(ndr_pull_dcerpc_AuthLevel(ndr, NDR_SCALARS, &r->auth_level)); 849 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auth_pad_length)); 850 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auth_reserved)); 851 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_context_id)); 852 { 853 uint32_t _flags_save_DATA_BLOB = ndr->flags; 854 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 855 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->credentials)); 856 ndr->flags = _flags_save_DATA_BLOB; 857 } 858 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 859 } 860 if (ndr_flags & NDR_BUFFERS) { 861 } 862 return NDR_ERR_SUCCESS; 863} 864 865_PUBLIC_ void ndr_print_dcerpc_auth(struct ndr_print *ndr, const char *name, const struct dcerpc_auth *r) 866{ 867 ndr_print_struct(ndr, name, "dcerpc_auth"); 868 ndr->depth++; 869 ndr_print_dcerpc_AuthType(ndr, "auth_type", r->auth_type); 870 ndr_print_dcerpc_AuthLevel(ndr, "auth_level", r->auth_level); 871 ndr_print_uint8(ndr, "auth_pad_length", r->auth_pad_length); 872 ndr_print_uint8(ndr, "auth_reserved", r->auth_reserved); 873 ndr_print_uint32(ndr, "auth_context_id", r->auth_context_id); 874 ndr_print_DATA_BLOB(ndr, "credentials", r->credentials); 875 ndr->depth--; 876} 877 878_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_auth3(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_auth3 *r) 879{ 880 if (ndr_flags & NDR_SCALARS) { 881 NDR_CHECK(ndr_push_align(ndr, 4)); 882 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_pad)); 883 { 884 uint32_t _flags_save_DATA_BLOB = ndr->flags; 885 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 886 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->auth_info)); 887 ndr->flags = _flags_save_DATA_BLOB; 888 } 889 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 890 } 891 if (ndr_flags & NDR_BUFFERS) { 892 } 893 return NDR_ERR_SUCCESS; 894} 895 896_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_auth3(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_auth3 *r) 897{ 898 if (ndr_flags & NDR_SCALARS) { 899 NDR_CHECK(ndr_pull_align(ndr, 4)); 900 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_pad)); 901 { 902 uint32_t _flags_save_DATA_BLOB = ndr->flags; 903 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 904 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->auth_info)); 905 ndr->flags = _flags_save_DATA_BLOB; 906 } 907 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 908 } 909 if (ndr_flags & NDR_BUFFERS) { 910 } 911 return NDR_ERR_SUCCESS; 912} 913 914_PUBLIC_ void ndr_print_dcerpc_auth3(struct ndr_print *ndr, const char *name, const struct dcerpc_auth3 *r) 915{ 916 ndr_print_struct(ndr, name, "dcerpc_auth3"); 917 ndr->depth++; 918 ndr_print_uint32(ndr, "_pad", r->_pad); 919 ndr_print_DATA_BLOB(ndr, "auth_info", r->auth_info); 920 ndr->depth--; 921} 922 923_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_orphaned(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_orphaned *r) 924{ 925 if (ndr_flags & NDR_SCALARS) { 926 NDR_CHECK(ndr_push_align(ndr, 4)); 927 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_pad)); 928 { 929 uint32_t _flags_save_DATA_BLOB = ndr->flags; 930 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 931 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->auth_info)); 932 ndr->flags = _flags_save_DATA_BLOB; 933 } 934 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 935 } 936 if (ndr_flags & NDR_BUFFERS) { 937 } 938 return NDR_ERR_SUCCESS; 939} 940 941_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_orphaned(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_orphaned *r) 942{ 943 if (ndr_flags & NDR_SCALARS) { 944 NDR_CHECK(ndr_pull_align(ndr, 4)); 945 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_pad)); 946 { 947 uint32_t _flags_save_DATA_BLOB = ndr->flags; 948 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 949 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->auth_info)); 950 ndr->flags = _flags_save_DATA_BLOB; 951 } 952 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 953 } 954 if (ndr_flags & NDR_BUFFERS) { 955 } 956 return NDR_ERR_SUCCESS; 957} 958 959_PUBLIC_ void ndr_print_dcerpc_orphaned(struct ndr_print *ndr, const char *name, const struct dcerpc_orphaned *r) 960{ 961 ndr_print_struct(ndr, name, "dcerpc_orphaned"); 962 ndr->depth++; 963 ndr_print_uint32(ndr, "_pad", r->_pad); 964 ndr_print_DATA_BLOB(ndr, "auth_info", r->auth_info); 965 ndr->depth--; 966} 967 968_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_co_cancel(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_co_cancel *r) 969{ 970 if (ndr_flags & NDR_SCALARS) { 971 NDR_CHECK(ndr_push_align(ndr, 4)); 972 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->_pad)); 973 { 974 uint32_t _flags_save_DATA_BLOB = ndr->flags; 975 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 976 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->auth_info)); 977 ndr->flags = _flags_save_DATA_BLOB; 978 } 979 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 980 } 981 if (ndr_flags & NDR_BUFFERS) { 982 } 983 return NDR_ERR_SUCCESS; 984} 985 986_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_co_cancel(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_co_cancel *r) 987{ 988 if (ndr_flags & NDR_SCALARS) { 989 NDR_CHECK(ndr_pull_align(ndr, 4)); 990 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->_pad)); 991 { 992 uint32_t _flags_save_DATA_BLOB = ndr->flags; 993 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); 994 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->auth_info)); 995 ndr->flags = _flags_save_DATA_BLOB; 996 } 997 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 998 } 999 if (ndr_flags & NDR_BUFFERS) { 1000 } 1001 return NDR_ERR_SUCCESS; 1002} 1003 1004_PUBLIC_ void ndr_print_dcerpc_co_cancel(struct ndr_print *ndr, const char *name, const struct dcerpc_co_cancel *r) 1005{ 1006 ndr_print_struct(ndr, name, "dcerpc_co_cancel"); 1007 ndr->depth++; 1008 ndr_print_uint32(ndr, "_pad", r->_pad); 1009 ndr_print_DATA_BLOB(ndr, "auth_info", r->auth_info); 1010 ndr->depth--; 1011} 1012 1013_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_cl_cancel(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_cl_cancel *r) 1014{ 1015 if (ndr_flags & NDR_SCALARS) { 1016 NDR_CHECK(ndr_push_align(ndr, 4)); 1017 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version)); 1018 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->id)); 1019 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1020 } 1021 if (ndr_flags & NDR_BUFFERS) { 1022 } 1023 return NDR_ERR_SUCCESS; 1024} 1025 1026_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_cl_cancel(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_cl_cancel *r) 1027{ 1028 if (ndr_flags & NDR_SCALARS) { 1029 NDR_CHECK(ndr_pull_align(ndr, 4)); 1030 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version)); 1031 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->id)); 1032 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1033 } 1034 if (ndr_flags & NDR_BUFFERS) { 1035 } 1036 return NDR_ERR_SUCCESS; 1037} 1038 1039_PUBLIC_ void ndr_print_dcerpc_cl_cancel(struct ndr_print *ndr, const char *name, const struct dcerpc_cl_cancel *r) 1040{ 1041 ndr_print_struct(ndr, name, "dcerpc_cl_cancel"); 1042 ndr->depth++; 1043 ndr_print_uint32(ndr, "version", r->version); 1044 ndr_print_uint32(ndr, "id", r->id); 1045 ndr->depth--; 1046} 1047 1048_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_cancel_ack(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_cancel_ack *r) 1049{ 1050 if (ndr_flags & NDR_SCALARS) { 1051 NDR_CHECK(ndr_push_align(ndr, 4)); 1052 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version)); 1053 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->id)); 1054 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->server_is_accepting)); 1055 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1056 } 1057 if (ndr_flags & NDR_BUFFERS) { 1058 } 1059 return NDR_ERR_SUCCESS; 1060} 1061 1062_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_cancel_ack(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_cancel_ack *r) 1063{ 1064 if (ndr_flags & NDR_SCALARS) { 1065 NDR_CHECK(ndr_pull_align(ndr, 4)); 1066 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version)); 1067 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->id)); 1068 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->server_is_accepting)); 1069 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1070 } 1071 if (ndr_flags & NDR_BUFFERS) { 1072 } 1073 return NDR_ERR_SUCCESS; 1074} 1075 1076_PUBLIC_ void ndr_print_dcerpc_cancel_ack(struct ndr_print *ndr, const char *name, const struct dcerpc_cancel_ack *r) 1077{ 1078 ndr_print_struct(ndr, name, "dcerpc_cancel_ack"); 1079 ndr->depth++; 1080 ndr_print_uint32(ndr, "version", r->version); 1081 ndr_print_uint32(ndr, "id", r->id); 1082 ndr_print_uint32(ndr, "server_is_accepting", r->server_is_accepting); 1083 ndr->depth--; 1084} 1085 1086_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_fack(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_fack *r) 1087{ 1088 uint32_t cntr_selack_0; 1089 if (ndr_flags & NDR_SCALARS) { 1090 NDR_CHECK(ndr_push_align(ndr, 4)); 1091 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version)); 1092 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->_pad1)); 1093 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->window_size)); 1094 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_tdsu)); 1095 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_frag_size)); 1096 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->serial_no)); 1097 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->selack_size)); 1098 for (cntr_selack_0 = 0; cntr_selack_0 < r->selack_size; cntr_selack_0++) { 1099 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->selack[cntr_selack_0])); 1100 } 1101 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1102 } 1103 if (ndr_flags & NDR_BUFFERS) { 1104 } 1105 return NDR_ERR_SUCCESS; 1106} 1107 1108_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_fack(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_fack *r) 1109{ 1110 uint32_t cntr_selack_0; 1111 TALLOC_CTX *_mem_save_selack_0; 1112 if (ndr_flags & NDR_SCALARS) { 1113 NDR_CHECK(ndr_pull_align(ndr, 4)); 1114 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version)); 1115 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->_pad1)); 1116 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->window_size)); 1117 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_tdsu)); 1118 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_frag_size)); 1119 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->serial_no)); 1120 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->selack_size)); 1121 NDR_PULL_ALLOC_N(ndr, r->selack, r->selack_size); 1122 _mem_save_selack_0 = NDR_PULL_GET_MEM_CTX(ndr); 1123 NDR_PULL_SET_MEM_CTX(ndr, r->selack, 0); 1124 for (cntr_selack_0 = 0; cntr_selack_0 < r->selack_size; cntr_selack_0++) { 1125 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->selack[cntr_selack_0])); 1126 } 1127 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_selack_0, 0); 1128 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1129 } 1130 if (ndr_flags & NDR_BUFFERS) { 1131 } 1132 return NDR_ERR_SUCCESS; 1133} 1134 1135_PUBLIC_ void ndr_print_dcerpc_fack(struct ndr_print *ndr, const char *name, const struct dcerpc_fack *r) 1136{ 1137 uint32_t cntr_selack_0; 1138 ndr_print_struct(ndr, name, "dcerpc_fack"); 1139 ndr->depth++; 1140 ndr_print_uint32(ndr, "version", r->version); 1141 ndr_print_uint8(ndr, "_pad1", r->_pad1); 1142 ndr_print_uint16(ndr, "window_size", r->window_size); 1143 ndr_print_uint32(ndr, "max_tdsu", r->max_tdsu); 1144 ndr_print_uint32(ndr, "max_frag_size", r->max_frag_size); 1145 ndr_print_uint16(ndr, "serial_no", r->serial_no); 1146 ndr_print_uint16(ndr, "selack_size", r->selack_size); 1147 ndr->print(ndr, "%s: ARRAY(%d)", "selack", (int)r->selack_size); 1148 ndr->depth++; 1149 for (cntr_selack_0=0;cntr_selack_0<r->selack_size;cntr_selack_0++) { 1150 char *idx_0=NULL; 1151 if (asprintf(&idx_0, "[%d]", cntr_selack_0) != -1) { 1152 ndr_print_uint32(ndr, "selack", r->selack[cntr_selack_0]); 1153 free(idx_0); 1154 } 1155 } 1156 ndr->depth--; 1157 ndr->depth--; 1158} 1159 1160_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_ack(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_ack *r) 1161{ 1162 if (ndr_flags & NDR_SCALARS) { 1163 NDR_CHECK(ndr_push_align(ndr, 1)); 1164 NDR_CHECK(ndr_push_trailer_align(ndr, 1)); 1165 } 1166 if (ndr_flags & NDR_BUFFERS) { 1167 } 1168 return NDR_ERR_SUCCESS; 1169} 1170 1171_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_ack(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_ack *r) 1172{ 1173 if (ndr_flags & NDR_SCALARS) { 1174 NDR_CHECK(ndr_pull_align(ndr, 1)); 1175 NDR_CHECK(ndr_pull_trailer_align(ndr, 1)); 1176 } 1177 if (ndr_flags & NDR_BUFFERS) { 1178 } 1179 return NDR_ERR_SUCCESS; 1180} 1181 1182_PUBLIC_ void ndr_print_dcerpc_ack(struct ndr_print *ndr, const char *name, const struct dcerpc_ack *r) 1183{ 1184 ndr_print_struct(ndr, name, "dcerpc_ack"); 1185 ndr->depth++; 1186 ndr->depth--; 1187} 1188 1189_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_ping(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_ping *r) 1190{ 1191 if (ndr_flags & NDR_SCALARS) { 1192 NDR_CHECK(ndr_push_align(ndr, 1)); 1193 NDR_CHECK(ndr_push_trailer_align(ndr, 1)); 1194 } 1195 if (ndr_flags & NDR_BUFFERS) { 1196 } 1197 return NDR_ERR_SUCCESS; 1198} 1199 1200_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_ping(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_ping *r) 1201{ 1202 if (ndr_flags & NDR_SCALARS) { 1203 NDR_CHECK(ndr_pull_align(ndr, 1)); 1204 NDR_CHECK(ndr_pull_trailer_align(ndr, 1)); 1205 } 1206 if (ndr_flags & NDR_BUFFERS) { 1207 } 1208 return NDR_ERR_SUCCESS; 1209} 1210 1211_PUBLIC_ void ndr_print_dcerpc_ping(struct ndr_print *ndr, const char *name, const struct dcerpc_ping *r) 1212{ 1213 ndr_print_struct(ndr, name, "dcerpc_ping"); 1214 ndr->depth++; 1215 ndr->depth--; 1216} 1217 1218_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_shutdown(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_shutdown *r) 1219{ 1220 if (ndr_flags & NDR_SCALARS) { 1221 NDR_CHECK(ndr_push_align(ndr, 1)); 1222 NDR_CHECK(ndr_push_trailer_align(ndr, 1)); 1223 } 1224 if (ndr_flags & NDR_BUFFERS) { 1225 } 1226 return NDR_ERR_SUCCESS; 1227} 1228 1229_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_shutdown(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_shutdown *r) 1230{ 1231 if (ndr_flags & NDR_SCALARS) { 1232 NDR_CHECK(ndr_pull_align(ndr, 1)); 1233 NDR_CHECK(ndr_pull_trailer_align(ndr, 1)); 1234 } 1235 if (ndr_flags & NDR_BUFFERS) { 1236 } 1237 return NDR_ERR_SUCCESS; 1238} 1239 1240_PUBLIC_ void ndr_print_dcerpc_shutdown(struct ndr_print *ndr, const char *name, const struct dcerpc_shutdown *r) 1241{ 1242 ndr_print_struct(ndr, name, "dcerpc_shutdown"); 1243 ndr->depth++; 1244 ndr->depth--; 1245} 1246 1247_PUBLIC_ enum ndr_err_code ndr_push_dcerpc_working(struct ndr_push *ndr, int ndr_flags, const struct dcerpc_working *r) 1248{ 1249 if (ndr_flags & NDR_SCALARS) { 1250 NDR_CHECK(ndr_push_align(ndr, 1)); 1251 NDR_CHECK(ndr_push_trailer_align(ndr, 1)); 1252 } 1253 if (ndr_flags & NDR_BUFFERS) { 1254 } 1255 return NDR_ERR_SUCCESS; 1256} 1257 1258_PUBLIC_ enum ndr_err_code ndr_pull_dcerpc_working(struct ndr_pull *ndr, int ndr_flags, struct dcerpc_working *r) 1259{ 1260 if (ndr_flags & NDR_SCALARS) { 1261 NDR_CHECK(ndr_pull_align(ndr, 1)); 1262 NDR_CHECK(ndr_pull_trailer_align(ndr, 1)); 1263 } 1264 if (ndr_flags & NDR_BUFFERS) { 1265 } 1266 return NDR_ERR_SUCCESS; 1267} 1268 1269_PUBLIC_ void ndr_print_dcerpc_working(struct ndr_print *ndr, const char *name, const struct dcerpc_working *r) 1270{ 1271 ndr_print_struct(ndr, name, "dcerpc_working"); 1272 ndr->depth++; 1273 ndr->depth--; 1274} 1275 1276static enum ndr_err_code ndr_push_dcerpc_pkt_type(struct ndr_push *ndr, int ndr_flags, enum dcerpc_pkt_type r) 1277{ 1278 NDR_CHECK(ndr_push_enum_uint8(ndr, NDR_SCALARS, r)); 1279 return NDR_ERR_SUCCESS; 1280} 1281 1282static enum ndr_err_code ndr_pull_dcerpc_pkt_type(struct ndr_pull *ndr, int ndr_flags, enum dcerpc_pkt_type *r) 1283{ 1284 uint8_t v; 1285 NDR_CHECK(ndr_pull_enum_uint8(ndr, NDR_SCALARS, &v)); 1286 *r = v; 1287 return NDR_ERR_SUCCESS; 1288} 1289 1290_PUBLIC_ void ndr_print_dcerpc_pkt_type(struct ndr_print *ndr, const char *name, enum dcerpc_pkt_type r) 1291{ 1292 const char *val = NULL; 1293 1294 switch (r) { 1295 case DCERPC_PKT_REQUEST: val = "DCERPC_PKT_REQUEST"; break; 1296 case DCERPC_PKT_PING: val = "DCERPC_PKT_PING"; break; 1297 case DCERPC_PKT_RESPONSE: val = "DCERPC_PKT_RESPONSE"; break; 1298 case DCERPC_PKT_FAULT: val = "DCERPC_PKT_FAULT"; break; 1299 case DCERPC_PKT_WORKING: val = "DCERPC_PKT_WORKING"; break; 1300 case DCERPC_PKT_NOCALL: val = "DCERPC_PKT_NOCALL"; break; 1301 case DCERPC_PKT_REJECT: val = "DCERPC_PKT_REJECT"; break; 1302 case DCERPC_PKT_ACK: val = "DCERPC_PKT_ACK"; break; 1303 case DCERPC_PKT_CL_CANCEL: val = "DCERPC_PKT_CL_CANCEL"; break; 1304 case DCERPC_PKT_FACK: val = "DCERPC_PKT_FACK"; break; 1305 case DCERPC_PKT_CANCEL_ACK: val = "DCERPC_PKT_CANCEL_ACK"; break; 1306 case DCERPC_PKT_BIND: val = "DCERPC_PKT_BIND"; break; 1307 case DCERPC_PKT_BIND_ACK: val = "DCERPC_PKT_BIND_ACK"; break; 1308 case DCERPC_PKT_BIND_NAK: val = "DCERPC_PKT_BIND_NAK"; break; 1309 case DCERPC_PKT_ALTER: val = "DCERPC_PKT_ALTER"; break; 1310 case DCERPC_PKT_ALTER_RESP: val = "DCERPC_PKT_ALTER_RESP"; break; 1311 case DCERPC_PKT_AUTH3: val = "DCERPC_PKT_AUTH3"; break; 1312 case DCERPC_PKT_SHUTDOWN: val = "DCERPC_PKT_SHUTDOWN"; break; 1313 case DCERPC_PKT_CO_CANCEL: val = "DCERPC_PKT_CO_CANCEL"; break; 1314 case DCERPC_PKT_ORPHANED: val = "DCERPC_PKT_ORPHANED"; break; 1315 } 1316 ndr_print_enum(ndr, name, "ENUM", val, r); 1317} 1318 1319static enum ndr_err_code ndr_push_dcerpc_payload(struct ndr_push *ndr, int ndr_flags, const union dcerpc_payload *r) 1320{ 1321 if (ndr_flags & NDR_SCALARS) { 1322 int level = ndr_push_get_switch_value(ndr, r); 1323 NDR_CHECK(ndr_push_union_align(ndr, 4)); 1324 switch (level) { 1325 case DCERPC_PKT_REQUEST: { 1326 NDR_CHECK(ndr_push_dcerpc_request(ndr, NDR_SCALARS, &r->request)); 1327 break; } 1328 1329 case DCERPC_PKT_PING: { 1330 NDR_CHECK(ndr_push_dcerpc_ping(ndr, NDR_SCALARS, &r->ping)); 1331 break; } 1332 1333 case DCERPC_PKT_RESPONSE: { 1334 NDR_CHECK(ndr_push_dcerpc_response(ndr, NDR_SCALARS, &r->response)); 1335 break; } 1336 1337 case DCERPC_PKT_FAULT: { 1338 NDR_CHECK(ndr_push_dcerpc_fault(ndr, NDR_SCALARS, &r->fault)); 1339 break; } 1340 1341 case DCERPC_PKT_WORKING: { 1342 NDR_CHECK(ndr_push_dcerpc_working(ndr, NDR_SCALARS, &r->working)); 1343 break; } 1344 1345 case DCERPC_PKT_NOCALL: { 1346 NDR_CHECK(ndr_push_dcerpc_fack(ndr, NDR_SCALARS, &r->nocall)); 1347 break; } 1348 1349 case DCERPC_PKT_REJECT: { 1350 NDR_CHECK(ndr_push_dcerpc_fault(ndr, NDR_SCALARS, &r->reject)); 1351 break; } 1352 1353 case DCERPC_PKT_ACK: { 1354 NDR_CHECK(ndr_push_dcerpc_ack(ndr, NDR_SCALARS, &r->ack)); 1355 break; } 1356 1357 case DCERPC_PKT_CL_CANCEL: { 1358 NDR_CHECK(ndr_push_dcerpc_cl_cancel(ndr, NDR_SCALARS, &r->cl_cancel)); 1359 break; } 1360 1361 case DCERPC_PKT_FACK: { 1362 NDR_CHECK(ndr_push_dcerpc_fack(ndr, NDR_SCALARS, &r->fack)); 1363 break; } 1364 1365 case DCERPC_PKT_CANCEL_ACK: { 1366 NDR_CHECK(ndr_push_dcerpc_cancel_ack(ndr, NDR_SCALARS, &r->cancel_ack)); 1367 break; } 1368 1369 case DCERPC_PKT_BIND: { 1370 NDR_CHECK(ndr_push_dcerpc_bind(ndr, NDR_SCALARS, &r->bind)); 1371 break; } 1372 1373 case DCERPC_PKT_BIND_ACK: { 1374 NDR_CHECK(ndr_push_dcerpc_bind_ack(ndr, NDR_SCALARS, &r->bind_ack)); 1375 break; } 1376 1377 case DCERPC_PKT_BIND_NAK: { 1378 NDR_CHECK(ndr_push_dcerpc_bind_nak(ndr, NDR_SCALARS, &r->bind_nak)); 1379 break; } 1380 1381 case DCERPC_PKT_ALTER: { 1382 NDR_CHECK(ndr_push_dcerpc_bind(ndr, NDR_SCALARS, &r->alter)); 1383 break; } 1384 1385 case DCERPC_PKT_ALTER_RESP: { 1386 NDR_CHECK(ndr_push_dcerpc_bind_ack(ndr, NDR_SCALARS, &r->alter_resp)); 1387 break; } 1388 1389 case DCERPC_PKT_SHUTDOWN: { 1390 NDR_CHECK(ndr_push_dcerpc_shutdown(ndr, NDR_SCALARS, &r->shutdown)); 1391 break; } 1392 1393 case DCERPC_PKT_CO_CANCEL: { 1394 NDR_CHECK(ndr_push_dcerpc_co_cancel(ndr, NDR_SCALARS, &r->co_cancel)); 1395 break; } 1396 1397 case DCERPC_PKT_ORPHANED: { 1398 NDR_CHECK(ndr_push_dcerpc_orphaned(ndr, NDR_SCALARS, &r->orphaned)); 1399 break; } 1400 1401 case DCERPC_PKT_AUTH3: { 1402 NDR_CHECK(ndr_push_dcerpc_auth3(ndr, NDR_SCALARS, &r->auth3)); 1403 break; } 1404 1405 default: 1406 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 1407 } 1408 } 1409 if (ndr_flags & NDR_BUFFERS) { 1410 int level = ndr_push_get_switch_value(ndr, r); 1411 switch (level) { 1412 case DCERPC_PKT_REQUEST: 1413 break; 1414 1415 case DCERPC_PKT_PING: 1416 break; 1417 1418 case DCERPC_PKT_RESPONSE: 1419 break; 1420 1421 case DCERPC_PKT_FAULT: 1422 break; 1423 1424 case DCERPC_PKT_WORKING: 1425 break; 1426 1427 case DCERPC_PKT_NOCALL: 1428 break; 1429 1430 case DCERPC_PKT_REJECT: 1431 break; 1432 1433 case DCERPC_PKT_ACK: 1434 break; 1435 1436 case DCERPC_PKT_CL_CANCEL: 1437 break; 1438 1439 case DCERPC_PKT_FACK: 1440 break; 1441 1442 case DCERPC_PKT_CANCEL_ACK: 1443 break; 1444 1445 case DCERPC_PKT_BIND: 1446 break; 1447 1448 case DCERPC_PKT_BIND_ACK: 1449 break; 1450 1451 case DCERPC_PKT_BIND_NAK: 1452 NDR_CHECK(ndr_push_dcerpc_bind_nak(ndr, NDR_BUFFERS, &r->bind_nak)); 1453 break; 1454 1455 case DCERPC_PKT_ALTER: 1456 break; 1457 1458 case DCERPC_PKT_ALTER_RESP: 1459 break; 1460 1461 case DCERPC_PKT_SHUTDOWN: 1462 break; 1463 1464 case DCERPC_PKT_CO_CANCEL: 1465 break; 1466 1467 case DCERPC_PKT_ORPHANED: 1468 break; 1469 1470 case DCERPC_PKT_AUTH3: 1471 break; 1472 1473 default: 1474 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 1475 } 1476 } 1477 return NDR_ERR_SUCCESS; 1478} 1479 1480static enum ndr_err_code ndr_pull_dcerpc_payload(struct ndr_pull *ndr, int ndr_flags, union dcerpc_payload *r) 1481{ 1482 int level; 1483 level = ndr_pull_get_switch_value(ndr, r); 1484 if (ndr_flags & NDR_SCALARS) { 1485 NDR_CHECK(ndr_pull_union_align(ndr, 4)); 1486 switch (level) { 1487 case DCERPC_PKT_REQUEST: { 1488 NDR_CHECK(ndr_pull_dcerpc_request(ndr, NDR_SCALARS, &r->request)); 1489 break; } 1490 1491 case DCERPC_PKT_PING: { 1492 NDR_CHECK(ndr_pull_dcerpc_ping(ndr, NDR_SCALARS, &r->ping)); 1493 break; } 1494 1495 case DCERPC_PKT_RESPONSE: { 1496 NDR_CHECK(ndr_pull_dcerpc_response(ndr, NDR_SCALARS, &r->response)); 1497 break; } 1498 1499 case DCERPC_PKT_FAULT: { 1500 NDR_CHECK(ndr_pull_dcerpc_fault(ndr, NDR_SCALARS, &r->fault)); 1501 break; } 1502 1503 case DCERPC_PKT_WORKING: { 1504 NDR_CHECK(ndr_pull_dcerpc_working(ndr, NDR_SCALARS, &r->working)); 1505 break; } 1506 1507 case DCERPC_PKT_NOCALL: { 1508 NDR_CHECK(ndr_pull_dcerpc_fack(ndr, NDR_SCALARS, &r->nocall)); 1509 break; } 1510 1511 case DCERPC_PKT_REJECT: { 1512 NDR_CHECK(ndr_pull_dcerpc_fault(ndr, NDR_SCALARS, &r->reject)); 1513 break; } 1514 1515 case DCERPC_PKT_ACK: { 1516 NDR_CHECK(ndr_pull_dcerpc_ack(ndr, NDR_SCALARS, &r->ack)); 1517 break; } 1518 1519 case DCERPC_PKT_CL_CANCEL: { 1520 NDR_CHECK(ndr_pull_dcerpc_cl_cancel(ndr, NDR_SCALARS, &r->cl_cancel)); 1521 break; } 1522 1523 case DCERPC_PKT_FACK: { 1524 NDR_CHECK(ndr_pull_dcerpc_fack(ndr, NDR_SCALARS, &r->fack)); 1525 break; } 1526 1527 case DCERPC_PKT_CANCEL_ACK: { 1528 NDR_CHECK(ndr_pull_dcerpc_cancel_ack(ndr, NDR_SCALARS, &r->cancel_ack)); 1529 break; } 1530 1531 case DCERPC_PKT_BIND: { 1532 NDR_CHECK(ndr_pull_dcerpc_bind(ndr, NDR_SCALARS, &r->bind)); 1533 break; } 1534 1535 case DCERPC_PKT_BIND_ACK: { 1536 NDR_CHECK(ndr_pull_dcerpc_bind_ack(ndr, NDR_SCALARS, &r->bind_ack)); 1537 break; } 1538 1539 case DCERPC_PKT_BIND_NAK: { 1540 NDR_CHECK(ndr_pull_dcerpc_bind_nak(ndr, NDR_SCALARS, &r->bind_nak)); 1541 break; } 1542 1543 case DCERPC_PKT_ALTER: { 1544 NDR_CHECK(ndr_pull_dcerpc_bind(ndr, NDR_SCALARS, &r->alter)); 1545 break; } 1546 1547 case DCERPC_PKT_ALTER_RESP: { 1548 NDR_CHECK(ndr_pull_dcerpc_bind_ack(ndr, NDR_SCALARS, &r->alter_resp)); 1549 break; } 1550 1551 case DCERPC_PKT_SHUTDOWN: { 1552 NDR_CHECK(ndr_pull_dcerpc_shutdown(ndr, NDR_SCALARS, &r->shutdown)); 1553 break; } 1554 1555 case DCERPC_PKT_CO_CANCEL: { 1556 NDR_CHECK(ndr_pull_dcerpc_co_cancel(ndr, NDR_SCALARS, &r->co_cancel)); 1557 break; } 1558 1559 case DCERPC_PKT_ORPHANED: { 1560 NDR_CHECK(ndr_pull_dcerpc_orphaned(ndr, NDR_SCALARS, &r->orphaned)); 1561 break; } 1562 1563 case DCERPC_PKT_AUTH3: { 1564 NDR_CHECK(ndr_pull_dcerpc_auth3(ndr, NDR_SCALARS, &r->auth3)); 1565 break; } 1566 1567 default: 1568 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 1569 } 1570 } 1571 if (ndr_flags & NDR_BUFFERS) { 1572 switch (level) { 1573 case DCERPC_PKT_REQUEST: 1574 break; 1575 1576 case DCERPC_PKT_PING: 1577 break; 1578 1579 case DCERPC_PKT_RESPONSE: 1580 break; 1581 1582 case DCERPC_PKT_FAULT: 1583 break; 1584 1585 case DCERPC_PKT_WORKING: 1586 break; 1587 1588 case DCERPC_PKT_NOCALL: 1589 break; 1590 1591 case DCERPC_PKT_REJECT: 1592 break; 1593 1594 case DCERPC_PKT_ACK: 1595 break; 1596 1597 case DCERPC_PKT_CL_CANCEL: 1598 break; 1599 1600 case DCERPC_PKT_FACK: 1601 break; 1602 1603 case DCERPC_PKT_CANCEL_ACK: 1604 break; 1605 1606 case DCERPC_PKT_BIND: 1607 break; 1608 1609 case DCERPC_PKT_BIND_ACK: 1610 break; 1611 1612 case DCERPC_PKT_BIND_NAK: 1613 NDR_CHECK(ndr_pull_dcerpc_bind_nak(ndr, NDR_BUFFERS, &r->bind_nak)); 1614 break; 1615 1616 case DCERPC_PKT_ALTER: 1617 break; 1618 1619 case DCERPC_PKT_ALTER_RESP: 1620 break; 1621 1622 case DCERPC_PKT_SHUTDOWN: 1623 break; 1624 1625 case DCERPC_PKT_CO_CANCEL: 1626 break; 1627 1628 case DCERPC_PKT_ORPHANED: 1629 break; 1630 1631 case DCERPC_PKT_AUTH3: 1632 break; 1633 1634 default: 1635 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 1636 } 1637 } 1638 return NDR_ERR_SUCCESS; 1639} 1640 1641_PUBLIC_ void ndr_print_dcerpc_payload(struct ndr_print *ndr, const char *name, const union dcerpc_payload *r) 1642{ 1643 int level; 1644 level = ndr_print_get_switch_value(ndr, r); 1645 ndr_print_union(ndr, name, level, "dcerpc_payload"); 1646 switch (level) { 1647 case DCERPC_PKT_REQUEST: 1648 ndr_print_dcerpc_request(ndr, "request", &r->request); 1649 break; 1650 1651 case DCERPC_PKT_PING: 1652 ndr_print_dcerpc_ping(ndr, "ping", &r->ping); 1653 break; 1654 1655 case DCERPC_PKT_RESPONSE: 1656 ndr_print_dcerpc_response(ndr, "response", &r->response); 1657 break; 1658 1659 case DCERPC_PKT_FAULT: 1660 ndr_print_dcerpc_fault(ndr, "fault", &r->fault); 1661 break; 1662 1663 case DCERPC_PKT_WORKING: 1664 ndr_print_dcerpc_working(ndr, "working", &r->working); 1665 break; 1666 1667 case DCERPC_PKT_NOCALL: 1668 ndr_print_dcerpc_fack(ndr, "nocall", &r->nocall); 1669 break; 1670 1671 case DCERPC_PKT_REJECT: 1672 ndr_print_dcerpc_fault(ndr, "reject", &r->reject); 1673 break; 1674 1675 case DCERPC_PKT_ACK: 1676 ndr_print_dcerpc_ack(ndr, "ack", &r->ack); 1677 break; 1678 1679 case DCERPC_PKT_CL_CANCEL: 1680 ndr_print_dcerpc_cl_cancel(ndr, "cl_cancel", &r->cl_cancel); 1681 break; 1682 1683 case DCERPC_PKT_FACK: 1684 ndr_print_dcerpc_fack(ndr, "fack", &r->fack); 1685 break; 1686 1687 case DCERPC_PKT_CANCEL_ACK: 1688 ndr_print_dcerpc_cancel_ack(ndr, "cancel_ack", &r->cancel_ack); 1689 break; 1690 1691 case DCERPC_PKT_BIND: 1692 ndr_print_dcerpc_bind(ndr, "bind", &r->bind); 1693 break; 1694 1695 case DCERPC_PKT_BIND_ACK: 1696 ndr_print_dcerpc_bind_ack(ndr, "bind_ack", &r->bind_ack); 1697 break; 1698 1699 case DCERPC_PKT_BIND_NAK: 1700 ndr_print_dcerpc_bind_nak(ndr, "bind_nak", &r->bind_nak); 1701 break; 1702 1703 case DCERPC_PKT_ALTER: 1704 ndr_print_dcerpc_bind(ndr, "alter", &r->alter); 1705 break; 1706 1707 case DCERPC_PKT_ALTER_RESP: 1708 ndr_print_dcerpc_bind_ack(ndr, "alter_resp", &r->alter_resp); 1709 break; 1710 1711 case DCERPC_PKT_SHUTDOWN: 1712 ndr_print_dcerpc_shutdown(ndr, "shutdown", &r->shutdown); 1713 break; 1714 1715 case DCERPC_PKT_CO_CANCEL: 1716 ndr_print_dcerpc_co_cancel(ndr, "co_cancel", &r->co_cancel); 1717 break; 1718 1719 case DCERPC_PKT_ORPHANED: 1720 ndr_print_dcerpc_orphaned(ndr, "orphaned", &r->orphaned); 1721 break; 1722 1723 case DCERPC_PKT_AUTH3: 1724 ndr_print_dcerpc_auth3(ndr, "auth3", &r->auth3); 1725 break; 1726 1727 default: 1728 ndr_print_bad_level(ndr, name, level); 1729 } 1730} 1731 1732_PUBLIC_ enum ndr_err_code ndr_push_ncacn_packet(struct ndr_push *ndr, int ndr_flags, const struct ncacn_packet *r) 1733{ 1734 if (ndr_flags & NDR_SCALARS) { 1735 NDR_CHECK(ndr_push_align(ndr, 4)); 1736 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->rpc_vers)); 1737 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->rpc_vers_minor)); 1738 NDR_CHECK(ndr_push_dcerpc_pkt_type(ndr, NDR_SCALARS, r->ptype)); 1739 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->pfc_flags)); 1740 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->drep, 4)); 1741 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->frag_length)); 1742 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->auth_length)); 1743 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->call_id)); 1744 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->u, r->ptype)); 1745 NDR_CHECK(ndr_push_dcerpc_payload(ndr, NDR_SCALARS, &r->u)); 1746 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1747 } 1748 if (ndr_flags & NDR_BUFFERS) { 1749 NDR_CHECK(ndr_push_dcerpc_payload(ndr, NDR_BUFFERS, &r->u)); 1750 } 1751 return NDR_ERR_SUCCESS; 1752} 1753 1754_PUBLIC_ enum ndr_err_code ndr_pull_ncacn_packet(struct ndr_pull *ndr, int ndr_flags, struct ncacn_packet *r) 1755{ 1756 if (ndr_flags & NDR_SCALARS) { 1757 NDR_CHECK(ndr_pull_align(ndr, 4)); 1758 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->rpc_vers)); 1759 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->rpc_vers_minor)); 1760 NDR_CHECK(ndr_pull_dcerpc_pkt_type(ndr, NDR_SCALARS, &r->ptype)); 1761 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->pfc_flags)); 1762 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->drep, 4)); 1763 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->frag_length)); 1764 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->auth_length)); 1765 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->call_id)); 1766 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->u, r->ptype)); 1767 NDR_CHECK(ndr_pull_dcerpc_payload(ndr, NDR_SCALARS, &r->u)); 1768 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1769 } 1770 if (ndr_flags & NDR_BUFFERS) { 1771 NDR_CHECK(ndr_pull_dcerpc_payload(ndr, NDR_BUFFERS, &r->u)); 1772 } 1773 return NDR_ERR_SUCCESS; 1774} 1775 1776_PUBLIC_ void ndr_print_ncacn_packet(struct ndr_print *ndr, const char *name, const struct ncacn_packet *r) 1777{ 1778 ndr_print_struct(ndr, name, "ncacn_packet"); 1779 ndr->depth++; 1780 ndr_print_uint8(ndr, "rpc_vers", r->rpc_vers); 1781 ndr_print_uint8(ndr, "rpc_vers_minor", r->rpc_vers_minor); 1782 ndr_print_dcerpc_pkt_type(ndr, "ptype", r->ptype); 1783 ndr_print_uint8(ndr, "pfc_flags", r->pfc_flags); 1784 ndr_print_array_uint8(ndr, "drep", r->drep, 4); 1785 ndr_print_uint16(ndr, "frag_length", r->frag_length); 1786 ndr_print_uint16(ndr, "auth_length", r->auth_length); 1787 ndr_print_uint32(ndr, "call_id", r->call_id); 1788 ndr_print_set_switch_value(ndr, &r->u, r->ptype); 1789 ndr_print_dcerpc_payload(ndr, "u", &r->u); 1790 ndr->depth--; 1791} 1792 1793_PUBLIC_ enum ndr_err_code ndr_push_ncadg_packet(struct ndr_push *ndr, int ndr_flags, const struct ncadg_packet *r) 1794{ 1795 if (ndr_flags & NDR_SCALARS) { 1796 NDR_CHECK(ndr_push_align(ndr, 4)); 1797 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->rpc_vers)); 1798 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->ptype)); 1799 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->pfc_flags)); 1800 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->ncadg_flags)); 1801 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->drep, 3)); 1802 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->serial_high)); 1803 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->object)); 1804 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->iface)); 1805 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->activity)); 1806 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->server_boot)); 1807 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->iface_version)); 1808 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->seq_num)); 1809 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->opnum)); 1810 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ihint)); 1811 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ahint)); 1812 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->len)); 1813 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->fragnum)); 1814 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auth_proto)); 1815 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->serial_low)); 1816 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->u, r->ptype)); 1817 NDR_CHECK(ndr_push_dcerpc_payload(ndr, NDR_SCALARS, &r->u)); 1818 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 1819 } 1820 if (ndr_flags & NDR_BUFFERS) { 1821 NDR_CHECK(ndr_push_dcerpc_payload(ndr, NDR_BUFFERS, &r->u)); 1822 } 1823 return NDR_ERR_SUCCESS; 1824} 1825 1826_PUBLIC_ enum ndr_err_code ndr_pull_ncadg_packet(struct ndr_pull *ndr, int ndr_flags, struct ncadg_packet *r) 1827{ 1828 if (ndr_flags & NDR_SCALARS) { 1829 NDR_CHECK(ndr_pull_align(ndr, 4)); 1830 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->rpc_vers)); 1831 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->ptype)); 1832 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->pfc_flags)); 1833 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->ncadg_flags)); 1834 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->drep, 3)); 1835 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->serial_high)); 1836 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->object)); 1837 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->iface)); 1838 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->activity)); 1839 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->server_boot)); 1840 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->iface_version)); 1841 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->seq_num)); 1842 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->opnum)); 1843 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ihint)); 1844 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ahint)); 1845 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->len)); 1846 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->fragnum)); 1847 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auth_proto)); 1848 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->serial_low)); 1849 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->u, r->ptype)); 1850 NDR_CHECK(ndr_pull_dcerpc_payload(ndr, NDR_SCALARS, &r->u)); 1851 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 1852 } 1853 if (ndr_flags & NDR_BUFFERS) { 1854 NDR_CHECK(ndr_pull_dcerpc_payload(ndr, NDR_BUFFERS, &r->u)); 1855 } 1856 return NDR_ERR_SUCCESS; 1857} 1858 1859_PUBLIC_ void ndr_print_ncadg_packet(struct ndr_print *ndr, const char *name, const struct ncadg_packet *r) 1860{ 1861 ndr_print_struct(ndr, name, "ncadg_packet"); 1862 ndr->depth++; 1863 ndr_print_uint8(ndr, "rpc_vers", r->rpc_vers); 1864 ndr_print_uint8(ndr, "ptype", r->ptype); 1865 ndr_print_uint8(ndr, "pfc_flags", r->pfc_flags); 1866 ndr_print_uint8(ndr, "ncadg_flags", r->ncadg_flags); 1867 ndr_print_array_uint8(ndr, "drep", r->drep, 3); 1868 ndr_print_uint8(ndr, "serial_high", r->serial_high); 1869 ndr_print_GUID(ndr, "object", &r->object); 1870 ndr_print_GUID(ndr, "iface", &r->iface); 1871 ndr_print_GUID(ndr, "activity", &r->activity); 1872 ndr_print_uint32(ndr, "server_boot", r->server_boot); 1873 ndr_print_uint32(ndr, "iface_version", r->iface_version); 1874 ndr_print_uint32(ndr, "seq_num", r->seq_num); 1875 ndr_print_uint16(ndr, "opnum", r->opnum); 1876 ndr_print_uint16(ndr, "ihint", r->ihint); 1877 ndr_print_uint16(ndr, "ahint", r->ahint); 1878 ndr_print_uint16(ndr, "len", r->len); 1879 ndr_print_uint16(ndr, "fragnum", r->fragnum); 1880 ndr_print_uint8(ndr, "auth_proto", r->auth_proto); 1881 ndr_print_uint8(ndr, "serial_low", r->serial_low); 1882 ndr_print_set_switch_value(ndr, &r->u, r->ptype); 1883 ndr_print_dcerpc_payload(ndr, "u", &r->u); 1884 ndr->depth--; 1885} 1886 1887