1/* parser auto-generated by pidl */ 2 3#include "includes.h" 4#include "../librpc/gen_ndr/ndr_xattr.h" 5 6#include "librpc/gen_ndr/ndr_security.h" 7static enum ndr_err_code ndr_push_xattr_DosInfoFFFFCompat(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfoFFFFCompat *r) 8{ 9 if (ndr_flags & NDR_SCALARS) { 10 NDR_CHECK(ndr_push_align(ndr, 4)); 11 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib)); 12 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 13 } 14 if (ndr_flags & NDR_BUFFERS) { 15 } 16 return NDR_ERR_SUCCESS; 17} 18 19static enum ndr_err_code ndr_pull_xattr_DosInfoFFFFCompat(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfoFFFFCompat *r) 20{ 21 if (ndr_flags & NDR_SCALARS) { 22 NDR_CHECK(ndr_pull_align(ndr, 4)); 23 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib)); 24 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 25 } 26 if (ndr_flags & NDR_BUFFERS) { 27 } 28 return NDR_ERR_SUCCESS; 29} 30 31_PUBLIC_ void ndr_print_xattr_DosInfoFFFFCompat(struct ndr_print *ndr, const char *name, const struct xattr_DosInfoFFFFCompat *r) 32{ 33 ndr_print_struct(ndr, name, "xattr_DosInfoFFFFCompat"); 34 ndr->depth++; 35 ndr_print_uint32(ndr, "attrib", r->attrib); 36 ndr->depth--; 37} 38 39static enum ndr_err_code ndr_push_xattr_DosInfo1(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo1 *r) 40{ 41 if (ndr_flags & NDR_SCALARS) { 42 NDR_CHECK(ndr_push_align(ndr, 4)); 43 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib)); 44 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size)); 45 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size)); 46 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size)); 47 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time)); 48 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time)); 49 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 50 } 51 if (ndr_flags & NDR_BUFFERS) { 52 } 53 return NDR_ERR_SUCCESS; 54} 55 56static enum ndr_err_code ndr_pull_xattr_DosInfo1(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo1 *r) 57{ 58 if (ndr_flags & NDR_SCALARS) { 59 NDR_CHECK(ndr_pull_align(ndr, 4)); 60 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib)); 61 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size)); 62 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size)); 63 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size)); 64 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time)); 65 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time)); 66 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 67 } 68 if (ndr_flags & NDR_BUFFERS) { 69 } 70 return NDR_ERR_SUCCESS; 71} 72 73_PUBLIC_ void ndr_print_xattr_DosInfo1(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo1 *r) 74{ 75 ndr_print_struct(ndr, name, "xattr_DosInfo1"); 76 ndr->depth++; 77 ndr_print_uint32(ndr, "attrib", r->attrib); 78 ndr_print_uint32(ndr, "ea_size", r->ea_size); 79 ndr_print_udlong(ndr, "size", r->size); 80 ndr_print_udlong(ndr, "alloc_size", r->alloc_size); 81 ndr_print_NTTIME(ndr, "create_time", r->create_time); 82 ndr_print_NTTIME(ndr, "change_time", r->change_time); 83 ndr->depth--; 84} 85 86static enum ndr_err_code ndr_push_xattr_DosInfo2Old(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo2Old *r) 87{ 88 if (ndr_flags & NDR_SCALARS) { 89 NDR_CHECK(ndr_push_align(ndr, 4)); 90 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); 91 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib)); 92 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size)); 93 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size)); 94 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size)); 95 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time)); 96 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time)); 97 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->write_time)); 98 { 99 uint32_t _flags_save_string = ndr->flags; 100 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 101 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name)); 102 ndr->flags = _flags_save_string; 103 } 104 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 105 } 106 if (ndr_flags & NDR_BUFFERS) { 107 } 108 return NDR_ERR_SUCCESS; 109} 110 111static enum ndr_err_code ndr_pull_xattr_DosInfo2Old(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo2Old *r) 112{ 113 if (ndr_flags & NDR_SCALARS) { 114 NDR_CHECK(ndr_pull_align(ndr, 4)); 115 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); 116 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib)); 117 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size)); 118 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size)); 119 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size)); 120 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time)); 121 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time)); 122 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->write_time)); 123 { 124 uint32_t _flags_save_string = ndr->flags; 125 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 126 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name)); 127 ndr->flags = _flags_save_string; 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_xattr_DosInfo2Old(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo2Old *r) 137{ 138 ndr_print_struct(ndr, name, "xattr_DosInfo2Old"); 139 ndr->depth++; 140 ndr_print_uint32(ndr, "flags", r->flags); 141 ndr_print_uint32(ndr, "attrib", r->attrib); 142 ndr_print_uint32(ndr, "ea_size", r->ea_size); 143 ndr_print_udlong(ndr, "size", r->size); 144 ndr_print_udlong(ndr, "alloc_size", r->alloc_size); 145 ndr_print_NTTIME(ndr, "create_time", r->create_time); 146 ndr_print_NTTIME(ndr, "change_time", r->change_time); 147 ndr_print_NTTIME(ndr, "write_time", r->write_time); 148 ndr_print_string(ndr, "name", r->name); 149 ndr->depth--; 150} 151 152static enum ndr_err_code ndr_push_xattr_DosInfoValidFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r) 153{ 154 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); 155 return NDR_ERR_SUCCESS; 156} 157 158static enum ndr_err_code ndr_pull_xattr_DosInfoValidFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) 159{ 160 uint32_t v; 161 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); 162 *r = v; 163 return NDR_ERR_SUCCESS; 164} 165 166_PUBLIC_ void ndr_print_xattr_DosInfoValidFlags(struct ndr_print *ndr, const char *name, uint32_t r) 167{ 168 ndr_print_uint32(ndr, name, r); 169 ndr->depth++; 170 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_ATTRIB", XATTR_DOSINFO_ATTRIB, r); 171 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_EA_SIZE", XATTR_DOSINFO_EA_SIZE, r); 172 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_SIZE", XATTR_DOSINFO_SIZE, r); 173 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_ALLOC_SIZE", XATTR_DOSINFO_ALLOC_SIZE, r); 174 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_CREATE_TIME", XATTR_DOSINFO_CREATE_TIME, r); 175 ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_CHANGE_TIME", XATTR_DOSINFO_CHANGE_TIME, r); 176 ndr->depth--; 177} 178 179static enum ndr_err_code ndr_push_xattr_DosInfo3(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo3 *r) 180{ 181 if (ndr_flags & NDR_SCALARS) { 182 NDR_CHECK(ndr_push_align(ndr, 4)); 183 NDR_CHECK(ndr_push_xattr_DosInfoValidFlags(ndr, NDR_SCALARS, r->valid_flags)); 184 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib)); 185 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size)); 186 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size)); 187 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size)); 188 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time)); 189 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time)); 190 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 191 } 192 if (ndr_flags & NDR_BUFFERS) { 193 } 194 return NDR_ERR_SUCCESS; 195} 196 197static enum ndr_err_code ndr_pull_xattr_DosInfo3(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo3 *r) 198{ 199 if (ndr_flags & NDR_SCALARS) { 200 NDR_CHECK(ndr_pull_align(ndr, 4)); 201 NDR_CHECK(ndr_pull_xattr_DosInfoValidFlags(ndr, NDR_SCALARS, &r->valid_flags)); 202 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib)); 203 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size)); 204 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size)); 205 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size)); 206 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time)); 207 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time)); 208 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 209 } 210 if (ndr_flags & NDR_BUFFERS) { 211 } 212 return NDR_ERR_SUCCESS; 213} 214 215_PUBLIC_ void ndr_print_xattr_DosInfo3(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo3 *r) 216{ 217 ndr_print_struct(ndr, name, "xattr_DosInfo3"); 218 ndr->depth++; 219 ndr_print_xattr_DosInfoValidFlags(ndr, "valid_flags", r->valid_flags); 220 ndr_print_uint32(ndr, "attrib", r->attrib); 221 ndr_print_uint32(ndr, "ea_size", r->ea_size); 222 ndr_print_udlong(ndr, "size", r->size); 223 ndr_print_udlong(ndr, "alloc_size", r->alloc_size); 224 ndr_print_NTTIME(ndr, "create_time", r->create_time); 225 ndr_print_NTTIME(ndr, "change_time", r->change_time); 226 ndr->depth--; 227} 228 229_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosInfo(struct ndr_push *ndr, int ndr_flags, const union xattr_DosInfo *r) 230{ 231 if (ndr_flags & NDR_SCALARS) { 232 int level = ndr_push_get_switch_value(ndr, r); 233 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); 234 NDR_CHECK(ndr_push_union_align(ndr, 4)); 235 switch (level) { 236 case 0xFFFF: { 237 NDR_CHECK(ndr_push_xattr_DosInfoFFFFCompat(ndr, NDR_SCALARS, &r->compatinfoFFFF)); 238 break; } 239 240 case 1: { 241 NDR_CHECK(ndr_push_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1)); 242 break; } 243 244 case 2: { 245 NDR_CHECK(ndr_push_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2)); 246 break; } 247 248 case 3: { 249 NDR_CHECK(ndr_push_xattr_DosInfo3(ndr, NDR_SCALARS, &r->info3)); 250 break; } 251 252 default: 253 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 254 } 255 } 256 if (ndr_flags & NDR_BUFFERS) { 257 int level = ndr_push_get_switch_value(ndr, r); 258 switch (level) { 259 case 0xFFFF: 260 break; 261 262 case 1: 263 break; 264 265 case 2: 266 break; 267 268 case 3: 269 break; 270 271 default: 272 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 273 } 274 } 275 return NDR_ERR_SUCCESS; 276} 277 278_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosInfo(struct ndr_pull *ndr, int ndr_flags, union xattr_DosInfo *r) 279{ 280 int level; 281 uint16_t _level; 282 level = ndr_pull_get_switch_value(ndr, r); 283 if (ndr_flags & NDR_SCALARS) { 284 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level)); 285 if (_level != level) { 286 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__); 287 } 288 NDR_CHECK(ndr_pull_union_align(ndr, 4)); 289 switch (level) { 290 case 0xFFFF: { 291 NDR_CHECK(ndr_pull_xattr_DosInfoFFFFCompat(ndr, NDR_SCALARS, &r->compatinfoFFFF)); 292 break; } 293 294 case 1: { 295 NDR_CHECK(ndr_pull_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1)); 296 break; } 297 298 case 2: { 299 NDR_CHECK(ndr_pull_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2)); 300 break; } 301 302 case 3: { 303 NDR_CHECK(ndr_pull_xattr_DosInfo3(ndr, NDR_SCALARS, &r->info3)); 304 break; } 305 306 default: 307 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 308 } 309 } 310 if (ndr_flags & NDR_BUFFERS) { 311 switch (level) { 312 case 0xFFFF: 313 break; 314 315 case 1: 316 break; 317 318 case 2: 319 break; 320 321 case 3: 322 break; 323 324 default: 325 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 326 } 327 } 328 return NDR_ERR_SUCCESS; 329} 330 331_PUBLIC_ void ndr_print_xattr_DosInfo(struct ndr_print *ndr, const char *name, const union xattr_DosInfo *r) 332{ 333 int level; 334 level = ndr_print_get_switch_value(ndr, r); 335 ndr_print_union(ndr, name, level, "xattr_DosInfo"); 336 switch (level) { 337 case 0xFFFF: 338 ndr_print_xattr_DosInfoFFFFCompat(ndr, "compatinfoFFFF", &r->compatinfoFFFF); 339 break; 340 341 case 1: 342 ndr_print_xattr_DosInfo1(ndr, "info1", &r->info1); 343 break; 344 345 case 2: 346 ndr_print_xattr_DosInfo2Old(ndr, "oldinfo2", &r->oldinfo2); 347 break; 348 349 case 3: 350 ndr_print_xattr_DosInfo3(ndr, "info3", &r->info3); 351 break; 352 353 default: 354 ndr_print_bad_level(ndr, name, level); 355 } 356} 357 358_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosAttrib(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosAttrib *r) 359{ 360 if (ndr_flags & NDR_SCALARS) { 361 NDR_CHECK(ndr_push_align(ndr, 4)); 362 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version)); 363 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version)); 364 NDR_CHECK(ndr_push_xattr_DosInfo(ndr, NDR_SCALARS, &r->info)); 365 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 366 } 367 if (ndr_flags & NDR_BUFFERS) { 368 } 369 return NDR_ERR_SUCCESS; 370} 371 372_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosAttrib(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosAttrib *r) 373{ 374 if (ndr_flags & NDR_SCALARS) { 375 NDR_CHECK(ndr_pull_align(ndr, 4)); 376 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version)); 377 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version)); 378 NDR_CHECK(ndr_pull_xattr_DosInfo(ndr, NDR_SCALARS, &r->info)); 379 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 380 } 381 if (ndr_flags & NDR_BUFFERS) { 382 } 383 return NDR_ERR_SUCCESS; 384} 385 386_PUBLIC_ void ndr_print_xattr_DosAttrib(struct ndr_print *ndr, const char *name, const struct xattr_DosAttrib *r) 387{ 388 ndr_print_struct(ndr, name, "xattr_DosAttrib"); 389 ndr->depth++; 390 ndr_print_uint16(ndr, "version", r->version); 391 ndr_print_set_switch_value(ndr, &r->info, r->version); 392 ndr_print_xattr_DosInfo(ndr, "info", &r->info); 393 ndr->depth--; 394} 395 396static enum ndr_err_code ndr_push_xattr_EA(struct ndr_push *ndr, int ndr_flags, const struct xattr_EA *r) 397{ 398 if (ndr_flags & NDR_SCALARS) { 399 NDR_CHECK(ndr_push_align(ndr, 4)); 400 { 401 uint32_t _flags_save_string = ndr->flags; 402 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 403 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name)); 404 ndr->flags = _flags_save_string; 405 } 406 NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->value)); 407 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 408 } 409 if (ndr_flags & NDR_BUFFERS) { 410 } 411 return NDR_ERR_SUCCESS; 412} 413 414static enum ndr_err_code ndr_pull_xattr_EA(struct ndr_pull *ndr, int ndr_flags, struct xattr_EA *r) 415{ 416 if (ndr_flags & NDR_SCALARS) { 417 NDR_CHECK(ndr_pull_align(ndr, 4)); 418 { 419 uint32_t _flags_save_string = ndr->flags; 420 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 421 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name)); 422 ndr->flags = _flags_save_string; 423 } 424 NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value)); 425 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 426 } 427 if (ndr_flags & NDR_BUFFERS) { 428 } 429 return NDR_ERR_SUCCESS; 430} 431 432_PUBLIC_ void ndr_print_xattr_EA(struct ndr_print *ndr, const char *name, const struct xattr_EA *r) 433{ 434 ndr_print_struct(ndr, name, "xattr_EA"); 435 ndr->depth++; 436 ndr_print_string(ndr, "name", r->name); 437 ndr_print_DATA_BLOB(ndr, "value", r->value); 438 ndr->depth--; 439} 440 441_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosEAs(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosEAs *r) 442{ 443 uint32_t cntr_eas_1; 444 if (ndr_flags & NDR_SCALARS) { 445 NDR_CHECK(ndr_push_align(ndr, 5)); 446 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_eas)); 447 NDR_CHECK(ndr_push_unique_ptr(ndr, r->eas)); 448 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 449 } 450 if (ndr_flags & NDR_BUFFERS) { 451 if (r->eas) { 452 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_eas)); 453 for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) { 454 NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1])); 455 } 456 } 457 } 458 return NDR_ERR_SUCCESS; 459} 460 461_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosEAs(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosEAs *r) 462{ 463 uint32_t _ptr_eas; 464 uint32_t cntr_eas_1; 465 TALLOC_CTX *_mem_save_eas_0; 466 TALLOC_CTX *_mem_save_eas_1; 467 if (ndr_flags & NDR_SCALARS) { 468 NDR_CHECK(ndr_pull_align(ndr, 5)); 469 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_eas)); 470 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eas)); 471 if (_ptr_eas) { 472 NDR_PULL_ALLOC(ndr, r->eas); 473 } else { 474 r->eas = NULL; 475 } 476 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 477 } 478 if (ndr_flags & NDR_BUFFERS) { 479 if (r->eas) { 480 _mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr); 481 NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0); 482 NDR_CHECK(ndr_pull_array_size(ndr, &r->eas)); 483 NDR_PULL_ALLOC_N(ndr, r->eas, ndr_get_array_size(ndr, &r->eas)); 484 _mem_save_eas_1 = NDR_PULL_GET_MEM_CTX(ndr); 485 NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0); 486 for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) { 487 NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1])); 488 } 489 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_1, 0); 490 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0); 491 } 492 if (r->eas) { 493 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eas, r->num_eas)); 494 } 495 } 496 return NDR_ERR_SUCCESS; 497} 498 499_PUBLIC_ void ndr_print_xattr_DosEAs(struct ndr_print *ndr, const char *name, const struct xattr_DosEAs *r) 500{ 501 uint32_t cntr_eas_1; 502 ndr_print_struct(ndr, name, "xattr_DosEAs"); 503 ndr->depth++; 504 ndr_print_uint16(ndr, "num_eas", r->num_eas); 505 ndr_print_ptr(ndr, "eas", r->eas); 506 ndr->depth++; 507 if (r->eas) { 508 ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas); 509 ndr->depth++; 510 for (cntr_eas_1=0;cntr_eas_1<r->num_eas;cntr_eas_1++) { 511 char *idx_1=NULL; 512 if (asprintf(&idx_1, "[%d]", cntr_eas_1) != -1) { 513 ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_1]); 514 free(idx_1); 515 } 516 } 517 ndr->depth--; 518 } 519 ndr->depth--; 520 ndr->depth--; 521} 522 523_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r) 524{ 525 uint32_t cntr_eas_0; 526 if (ndr_flags & NDR_SCALARS) { 527 NDR_CHECK(ndr_push_align(ndr, 4)); 528 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_eas)); 529 for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) { 530 NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0])); 531 } 532 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 533 } 534 if (ndr_flags & NDR_BUFFERS) { 535 } 536 return NDR_ERR_SUCCESS; 537} 538 539_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r) 540{ 541 uint32_t cntr_eas_0; 542 TALLOC_CTX *_mem_save_eas_0; 543 if (ndr_flags & NDR_SCALARS) { 544 NDR_CHECK(ndr_pull_align(ndr, 4)); 545 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_eas)); 546 NDR_PULL_ALLOC_N(ndr, r->eas, r->num_eas); 547 _mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr); 548 NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0); 549 for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) { 550 NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0])); 551 } 552 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0); 553 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 554 } 555 if (ndr_flags & NDR_BUFFERS) { 556 } 557 return NDR_ERR_SUCCESS; 558} 559 560_PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r) 561{ 562 uint32_t cntr_eas_0; 563 ndr_print_struct(ndr, name, "tdb_xattrs"); 564 ndr->depth++; 565 ndr_print_uint32(ndr, "num_eas", r->num_eas); 566 ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas); 567 ndr->depth++; 568 for (cntr_eas_0=0;cntr_eas_0<r->num_eas;cntr_eas_0++) { 569 char *idx_0=NULL; 570 if (asprintf(&idx_0, "[%d]", cntr_eas_0) != -1) { 571 ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_0]); 572 free(idx_0); 573 } 574 } 575 ndr->depth--; 576 ndr->depth--; 577} 578 579static enum ndr_err_code ndr_push_xattr_DosStream(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosStream *r) 580{ 581 if (ndr_flags & NDR_SCALARS) { 582 NDR_CHECK(ndr_push_align(ndr, 4)); 583 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); 584 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size)); 585 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size)); 586 { 587 uint32_t _flags_save_string = ndr->flags; 588 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 589 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name)); 590 ndr->flags = _flags_save_string; 591 } 592 NDR_CHECK(ndr_push_trailer_align(ndr, 4)); 593 } 594 if (ndr_flags & NDR_BUFFERS) { 595 } 596 return NDR_ERR_SUCCESS; 597} 598 599static enum ndr_err_code ndr_pull_xattr_DosStream(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosStream *r) 600{ 601 if (ndr_flags & NDR_SCALARS) { 602 NDR_CHECK(ndr_pull_align(ndr, 4)); 603 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags)); 604 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size)); 605 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size)); 606 { 607 uint32_t _flags_save_string = ndr->flags; 608 ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM); 609 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name)); 610 ndr->flags = _flags_save_string; 611 } 612 NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); 613 } 614 if (ndr_flags & NDR_BUFFERS) { 615 } 616 return NDR_ERR_SUCCESS; 617} 618 619_PUBLIC_ void ndr_print_xattr_DosStream(struct ndr_print *ndr, const char *name, const struct xattr_DosStream *r) 620{ 621 ndr_print_struct(ndr, name, "xattr_DosStream"); 622 ndr->depth++; 623 ndr_print_uint32(ndr, "flags", r->flags); 624 ndr_print_udlong(ndr, "size", r->size); 625 ndr_print_udlong(ndr, "alloc_size", r->alloc_size); 626 ndr_print_string(ndr, "name", r->name); 627 ndr->depth--; 628} 629 630_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosStreams(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosStreams *r) 631{ 632 uint32_t cntr_streams_1; 633 if (ndr_flags & NDR_SCALARS) { 634 NDR_CHECK(ndr_push_align(ndr, 5)); 635 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_streams)); 636 NDR_CHECK(ndr_push_unique_ptr(ndr, r->streams)); 637 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 638 } 639 if (ndr_flags & NDR_BUFFERS) { 640 if (r->streams) { 641 NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_streams)); 642 for (cntr_streams_1 = 0; cntr_streams_1 < r->num_streams; cntr_streams_1++) { 643 NDR_CHECK(ndr_push_xattr_DosStream(ndr, NDR_SCALARS, &r->streams[cntr_streams_1])); 644 } 645 } 646 } 647 return NDR_ERR_SUCCESS; 648} 649 650_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosStreams(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosStreams *r) 651{ 652 uint32_t _ptr_streams; 653 uint32_t cntr_streams_1; 654 TALLOC_CTX *_mem_save_streams_0; 655 TALLOC_CTX *_mem_save_streams_1; 656 if (ndr_flags & NDR_SCALARS) { 657 NDR_CHECK(ndr_pull_align(ndr, 5)); 658 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_streams)); 659 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_streams)); 660 if (_ptr_streams) { 661 NDR_PULL_ALLOC(ndr, r->streams); 662 } else { 663 r->streams = NULL; 664 } 665 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 666 } 667 if (ndr_flags & NDR_BUFFERS) { 668 if (r->streams) { 669 _mem_save_streams_0 = NDR_PULL_GET_MEM_CTX(ndr); 670 NDR_PULL_SET_MEM_CTX(ndr, r->streams, 0); 671 NDR_CHECK(ndr_pull_array_size(ndr, &r->streams)); 672 NDR_PULL_ALLOC_N(ndr, r->streams, ndr_get_array_size(ndr, &r->streams)); 673 _mem_save_streams_1 = NDR_PULL_GET_MEM_CTX(ndr); 674 NDR_PULL_SET_MEM_CTX(ndr, r->streams, 0); 675 for (cntr_streams_1 = 0; cntr_streams_1 < r->num_streams; cntr_streams_1++) { 676 NDR_CHECK(ndr_pull_xattr_DosStream(ndr, NDR_SCALARS, &r->streams[cntr_streams_1])); 677 } 678 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_streams_1, 0); 679 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_streams_0, 0); 680 } 681 if (r->streams) { 682 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->streams, r->num_streams)); 683 } 684 } 685 return NDR_ERR_SUCCESS; 686} 687 688_PUBLIC_ void ndr_print_xattr_DosStreams(struct ndr_print *ndr, const char *name, const struct xattr_DosStreams *r) 689{ 690 uint32_t cntr_streams_1; 691 ndr_print_struct(ndr, name, "xattr_DosStreams"); 692 ndr->depth++; 693 ndr_print_uint32(ndr, "num_streams", r->num_streams); 694 ndr_print_ptr(ndr, "streams", r->streams); 695 ndr->depth++; 696 if (r->streams) { 697 ndr->print(ndr, "%s: ARRAY(%d)", "streams", (int)r->num_streams); 698 ndr->depth++; 699 for (cntr_streams_1=0;cntr_streams_1<r->num_streams;cntr_streams_1++) { 700 char *idx_1=NULL; 701 if (asprintf(&idx_1, "[%d]", cntr_streams_1) != -1) { 702 ndr_print_xattr_DosStream(ndr, "streams", &r->streams[cntr_streams_1]); 703 free(idx_1); 704 } 705 } 706 ndr->depth--; 707 } 708 ndr->depth--; 709 ndr->depth--; 710} 711 712_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_hash_v2(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_hash_v2 *r) 713{ 714 if (ndr_flags & NDR_SCALARS) { 715 NDR_CHECK(ndr_push_align(ndr, 5)); 716 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd)); 717 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->hash, 16)); 718 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 719 } 720 if (ndr_flags & NDR_BUFFERS) { 721 if (r->sd) { 722 NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 723 } 724 } 725 return NDR_ERR_SUCCESS; 726} 727 728_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_hash_v2(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_hash_v2 *r) 729{ 730 uint32_t _ptr_sd; 731 TALLOC_CTX *_mem_save_sd_0; 732 if (ndr_flags & NDR_SCALARS) { 733 NDR_CHECK(ndr_pull_align(ndr, 5)); 734 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd)); 735 if (_ptr_sd) { 736 NDR_PULL_ALLOC(ndr, r->sd); 737 } else { 738 r->sd = NULL; 739 } 740 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->hash, 16)); 741 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 742 } 743 if (ndr_flags & NDR_BUFFERS) { 744 if (r->sd) { 745 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr); 746 NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0); 747 NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 748 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0); 749 } 750 } 751 return NDR_ERR_SUCCESS; 752} 753 754_PUBLIC_ void ndr_print_security_descriptor_hash_v2(struct ndr_print *ndr, const char *name, const struct security_descriptor_hash_v2 *r) 755{ 756 ndr_print_struct(ndr, name, "security_descriptor_hash_v2"); 757 ndr->depth++; 758 ndr_print_ptr(ndr, "sd", r->sd); 759 ndr->depth++; 760 if (r->sd) { 761 ndr_print_security_descriptor(ndr, "sd", r->sd); 762 } 763 ndr->depth--; 764 ndr_print_array_uint8(ndr, "hash", r->hash, 16); 765 ndr->depth--; 766} 767 768_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_hash_v3(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_hash_v3 *r) 769{ 770 if (ndr_flags & NDR_SCALARS) { 771 NDR_CHECK(ndr_push_align(ndr, 5)); 772 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd)); 773 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->hash_type)); 774 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->hash, 64)); 775 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 776 } 777 if (ndr_flags & NDR_BUFFERS) { 778 if (r->sd) { 779 NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 780 } 781 } 782 return NDR_ERR_SUCCESS; 783} 784 785_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_hash_v3(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_hash_v3 *r) 786{ 787 uint32_t _ptr_sd; 788 TALLOC_CTX *_mem_save_sd_0; 789 if (ndr_flags & NDR_SCALARS) { 790 NDR_CHECK(ndr_pull_align(ndr, 5)); 791 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd)); 792 if (_ptr_sd) { 793 NDR_PULL_ALLOC(ndr, r->sd); 794 } else { 795 r->sd = NULL; 796 } 797 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->hash_type)); 798 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->hash, 64)); 799 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 800 } 801 if (ndr_flags & NDR_BUFFERS) { 802 if (r->sd) { 803 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr); 804 NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0); 805 NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 806 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0); 807 } 808 } 809 return NDR_ERR_SUCCESS; 810} 811 812_PUBLIC_ void ndr_print_security_descriptor_hash_v3(struct ndr_print *ndr, const char *name, const struct security_descriptor_hash_v3 *r) 813{ 814 ndr_print_struct(ndr, name, "security_descriptor_hash_v3"); 815 ndr->depth++; 816 ndr_print_ptr(ndr, "sd", r->sd); 817 ndr->depth++; 818 if (r->sd) { 819 ndr_print_security_descriptor(ndr, "sd", r->sd); 820 } 821 ndr->depth--; 822 ndr_print_uint16(ndr, "hash_type", r->hash_type); 823 ndr_print_array_uint8(ndr, "hash", r->hash, 64); 824 ndr->depth--; 825} 826 827static enum ndr_err_code ndr_push_xattr_NTACL_Info(struct ndr_push *ndr, int ndr_flags, const union xattr_NTACL_Info *r) 828{ 829 if (ndr_flags & NDR_SCALARS) { 830 int level = ndr_push_get_switch_value(ndr, r); 831 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); 832 NDR_CHECK(ndr_push_union_align(ndr, 5)); 833 switch (level) { 834 case 1: { 835 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd)); 836 break; } 837 838 case 2: { 839 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_hs2)); 840 break; } 841 842 case 3: { 843 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_hs3)); 844 break; } 845 846 default: 847 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 848 } 849 } 850 if (ndr_flags & NDR_BUFFERS) { 851 int level = ndr_push_get_switch_value(ndr, r); 852 switch (level) { 853 case 1: 854 if (r->sd) { 855 NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 856 } 857 break; 858 859 case 2: 860 if (r->sd_hs2) { 861 NDR_CHECK(ndr_push_security_descriptor_hash_v2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs2)); 862 } 863 break; 864 865 case 3: 866 if (r->sd_hs3) { 867 NDR_CHECK(ndr_push_security_descriptor_hash_v3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs3)); 868 } 869 break; 870 871 default: 872 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 873 } 874 } 875 return NDR_ERR_SUCCESS; 876} 877 878static enum ndr_err_code ndr_pull_xattr_NTACL_Info(struct ndr_pull *ndr, int ndr_flags, union xattr_NTACL_Info *r) 879{ 880 int level; 881 uint16_t _level; 882 TALLOC_CTX *_mem_save_sd_0; 883 TALLOC_CTX *_mem_save_sd_hs2_0; 884 TALLOC_CTX *_mem_save_sd_hs3_0; 885 level = ndr_pull_get_switch_value(ndr, r); 886 if (ndr_flags & NDR_SCALARS) { 887 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level)); 888 if (_level != level) { 889 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__); 890 } 891 NDR_CHECK(ndr_pull_union_align(ndr, 5)); 892 switch (level) { 893 case 1: { 894 uint32_t _ptr_sd; 895 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd)); 896 if (_ptr_sd) { 897 NDR_PULL_ALLOC(ndr, r->sd); 898 } else { 899 r->sd = NULL; 900 } 901 break; } 902 903 case 2: { 904 uint32_t _ptr_sd_hs2; 905 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_hs2)); 906 if (_ptr_sd_hs2) { 907 NDR_PULL_ALLOC(ndr, r->sd_hs2); 908 } else { 909 r->sd_hs2 = NULL; 910 } 911 break; } 912 913 case 3: { 914 uint32_t _ptr_sd_hs3; 915 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_hs3)); 916 if (_ptr_sd_hs3) { 917 NDR_PULL_ALLOC(ndr, r->sd_hs3); 918 } else { 919 r->sd_hs3 = NULL; 920 } 921 break; } 922 923 default: 924 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 925 } 926 } 927 if (ndr_flags & NDR_BUFFERS) { 928 switch (level) { 929 case 1: 930 if (r->sd) { 931 _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr); 932 NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0); 933 NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); 934 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0); 935 } 936 break; 937 938 case 2: 939 if (r->sd_hs2) { 940 _mem_save_sd_hs2_0 = NDR_PULL_GET_MEM_CTX(ndr); 941 NDR_PULL_SET_MEM_CTX(ndr, r->sd_hs2, 0); 942 NDR_CHECK(ndr_pull_security_descriptor_hash_v2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs2)); 943 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_hs2_0, 0); 944 } 945 break; 946 947 case 3: 948 if (r->sd_hs3) { 949 _mem_save_sd_hs3_0 = NDR_PULL_GET_MEM_CTX(ndr); 950 NDR_PULL_SET_MEM_CTX(ndr, r->sd_hs3, 0); 951 NDR_CHECK(ndr_pull_security_descriptor_hash_v3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs3)); 952 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_hs3_0, 0); 953 } 954 break; 955 956 default: 957 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); 958 } 959 } 960 return NDR_ERR_SUCCESS; 961} 962 963_PUBLIC_ void ndr_print_xattr_NTACL_Info(struct ndr_print *ndr, const char *name, const union xattr_NTACL_Info *r) 964{ 965 int level; 966 level = ndr_print_get_switch_value(ndr, r); 967 ndr_print_union(ndr, name, level, "xattr_NTACL_Info"); 968 switch (level) { 969 case 1: 970 ndr_print_ptr(ndr, "sd", r->sd); 971 ndr->depth++; 972 if (r->sd) { 973 ndr_print_security_descriptor(ndr, "sd", r->sd); 974 } 975 ndr->depth--; 976 break; 977 978 case 2: 979 ndr_print_ptr(ndr, "sd_hs2", r->sd_hs2); 980 ndr->depth++; 981 if (r->sd_hs2) { 982 ndr_print_security_descriptor_hash_v2(ndr, "sd_hs2", r->sd_hs2); 983 } 984 ndr->depth--; 985 break; 986 987 case 3: 988 ndr_print_ptr(ndr, "sd_hs3", r->sd_hs3); 989 ndr->depth++; 990 if (r->sd_hs3) { 991 ndr_print_security_descriptor_hash_v3(ndr, "sd_hs3", r->sd_hs3); 992 } 993 ndr->depth--; 994 break; 995 996 default: 997 ndr_print_bad_level(ndr, name, level); 998 } 999} 1000 1001_PUBLIC_ enum ndr_err_code ndr_push_xattr_NTACL(struct ndr_push *ndr, int ndr_flags, const struct xattr_NTACL *r) 1002{ 1003 if (ndr_flags & NDR_SCALARS) { 1004 NDR_CHECK(ndr_push_align(ndr, 5)); 1005 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version)); 1006 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version)); 1007 NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info)); 1008 NDR_CHECK(ndr_push_trailer_align(ndr, 5)); 1009 } 1010 if (ndr_flags & NDR_BUFFERS) { 1011 NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info)); 1012 } 1013 return NDR_ERR_SUCCESS; 1014} 1015 1016_PUBLIC_ enum ndr_err_code ndr_pull_xattr_NTACL(struct ndr_pull *ndr, int ndr_flags, struct xattr_NTACL *r) 1017{ 1018 if (ndr_flags & NDR_SCALARS) { 1019 NDR_CHECK(ndr_pull_align(ndr, 5)); 1020 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version)); 1021 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version)); 1022 NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info)); 1023 NDR_CHECK(ndr_pull_trailer_align(ndr, 5)); 1024 } 1025 if (ndr_flags & NDR_BUFFERS) { 1026 NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info)); 1027 } 1028 return NDR_ERR_SUCCESS; 1029} 1030 1031_PUBLIC_ void ndr_print_xattr_NTACL(struct ndr_print *ndr, const char *name, const struct xattr_NTACL *r) 1032{ 1033 ndr_print_struct(ndr, name, "xattr_NTACL"); 1034 ndr->depth++; 1035 ndr_print_uint16(ndr, "version", r->version); 1036 ndr_print_set_switch_value(ndr, &r->info, r->version); 1037 ndr_print_xattr_NTACL_Info(ndr, "info", &r->info); 1038 ndr->depth--; 1039} 1040 1041static enum ndr_err_code ndr_push_xattr_parse_DOSATTRIB(struct ndr_push *ndr, int flags, const struct xattr_parse_DOSATTRIB *r) 1042{ 1043 if (flags & NDR_IN) { 1044 NDR_CHECK(ndr_push_xattr_DOSATTRIB(ndr, NDR_SCALARS, &r->in.x)); 1045 } 1046 if (flags & NDR_OUT) { 1047 } 1048 return NDR_ERR_SUCCESS; 1049} 1050 1051static enum ndr_err_code ndr_pull_xattr_parse_DOSATTRIB(struct ndr_pull *ndr, int flags, struct xattr_parse_DOSATTRIB *r) 1052{ 1053 if (flags & NDR_IN) { 1054 NDR_CHECK(ndr_pull_xattr_DOSATTRIB(ndr, NDR_SCALARS, &r->in.x)); 1055 } 1056 if (flags & NDR_OUT) { 1057 } 1058 return NDR_ERR_SUCCESS; 1059} 1060 1061_PUBLIC_ void ndr_print_xattr_parse_DOSATTRIB(struct ndr_print *ndr, const char *name, int flags, const struct xattr_parse_DOSATTRIB *r) 1062{ 1063 ndr_print_struct(ndr, name, "xattr_parse_DOSATTRIB"); 1064 ndr->depth++; 1065 if (flags & NDR_SET_VALUES) { 1066 ndr->flags |= LIBNDR_PRINT_SET_VALUES; 1067 } 1068 if (flags & NDR_IN) { 1069 ndr_print_struct(ndr, "in", "xattr_parse_DOSATTRIB"); 1070 ndr->depth++; 1071 ndr_print_xattr_DOSATTRIB(ndr, "x", &r->in.x); 1072 ndr->depth--; 1073 } 1074 if (flags & NDR_OUT) { 1075 ndr_print_struct(ndr, "out", "xattr_parse_DOSATTRIB"); 1076 ndr->depth++; 1077 ndr->depth--; 1078 } 1079 ndr->depth--; 1080} 1081 1082static const struct ndr_interface_call xattr_calls[] = { 1083 { 1084 "xattr_parse_DOSATTRIB", 1085 sizeof(struct xattr_parse_DOSATTRIB), 1086 (ndr_push_flags_fn_t) ndr_push_xattr_parse_DOSATTRIB, 1087 (ndr_pull_flags_fn_t) ndr_pull_xattr_parse_DOSATTRIB, 1088 (ndr_print_function_t) ndr_print_xattr_parse_DOSATTRIB, 1089 false, 1090 }, 1091 { NULL, 0, NULL, NULL, NULL, false } 1092}; 1093 1094static const char * const xattr_endpoint_strings[] = { 1095 "ncacn_np:[\\pipe\\xattr]", 1096}; 1097 1098static const struct ndr_interface_string_array xattr_endpoints = { 1099 .count = 1, 1100 .names = xattr_endpoint_strings 1101}; 1102 1103static const char * const xattr_authservice_strings[] = { 1104 "host", 1105}; 1106 1107static const struct ndr_interface_string_array xattr_authservices = { 1108 .count = 1, 1109 .names = xattr_authservice_strings 1110}; 1111 1112 1113const struct ndr_interface_table ndr_table_xattr = { 1114 .name = "xattr", 1115 .syntax_id = { 1116 {0x12345778,0x1234,0xabcd,{0x00,0x01},{0x00,0x00,0x00,0x02}}, 1117 NDR_XATTR_VERSION 1118 }, 1119 .helpstring = NDR_XATTR_HELPSTRING, 1120 .num_calls = 1, 1121 .calls = xattr_calls, 1122 .endpoints = &xattr_endpoints, 1123 .authservices = &xattr_authservices 1124}; 1125 1126