root/librpc/gen_ndr/srv_wkssvc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. api_wkssvc_NetWkstaGetInfo
  2. api_wkssvc_NetWkstaSetInfo
  3. api_wkssvc_NetWkstaEnumUsers
  4. api_wkssvc_NetrWkstaUserGetInfo
  5. api_wkssvc_NetrWkstaUserSetInfo
  6. api_wkssvc_NetWkstaTransportEnum
  7. api_wkssvc_NetrWkstaTransportAdd
  8. api_wkssvc_NetrWkstaTransportDel
  9. api_wkssvc_NetrUseAdd
  10. api_wkssvc_NetrUseGetInfo
  11. api_wkssvc_NetrUseDel
  12. api_wkssvc_NetrUseEnum
  13. api_wkssvc_NetrMessageBufferSend
  14. api_wkssvc_NetrWorkstationStatisticsGet
  15. api_wkssvc_NetrLogonDomainNameAdd
  16. api_wkssvc_NetrLogonDomainNameDel
  17. api_wkssvc_NetrJoinDomain
  18. api_wkssvc_NetrUnjoinDomain
  19. api_wkssvc_NetrRenameMachineInDomain
  20. api_wkssvc_NetrValidateName
  21. api_wkssvc_NetrGetJoinInformation
  22. api_wkssvc_NetrGetJoinableOus
  23. api_wkssvc_NetrJoinDomain2
  24. api_wkssvc_NetrUnjoinDomain2
  25. api_wkssvc_NetrRenameMachineInDomain2
  26. api_wkssvc_NetrValidateName2
  27. api_wkssvc_NetrGetJoinableOus2
  28. api_wkssvc_NetrAddAlternateComputerName
  29. api_wkssvc_NetrRemoveAlternateComputerName
  30. api_wkssvc_NetrSetPrimaryComputername
  31. api_wkssvc_NetrEnumerateComputerNames
  32. wkssvc_get_pipe_fns
  33. rpc_wkssvc_dispatch
  34. rpc_wkssvc_init

   1 /*
   2  * Unix SMB/CIFS implementation.
   3  * server auto-generated by pidl. DO NOT MODIFY!
   4  */
   5 
   6 #include "includes.h"
   7 #include "../librpc/gen_ndr/srv_wkssvc.h"
   8 
   9 static bool api_wkssvc_NetWkstaGetInfo(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
  10 {
  11         const struct ndr_interface_call *call;
  12         struct ndr_pull *pull;
  13         struct ndr_push *push;
  14         enum ndr_err_code ndr_err;
  15         DATA_BLOB blob;
  16         struct wkssvc_NetWkstaGetInfo *r;
  17 
  18         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETWKSTAGETINFO];
  19 
  20         r = talloc(talloc_tos(), struct wkssvc_NetWkstaGetInfo);
  21         if (r == NULL) {
  22                 return false;
  23         }
  24 
  25         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
  26                 talloc_free(r);
  27                 return false;
  28         }
  29 
  30         pull = ndr_pull_init_blob(&blob, r, NULL);
  31         if (pull == NULL) {
  32                 talloc_free(r);
  33                 return false;
  34         }
  35 
  36         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
  37         ndr_err = call->ndr_pull(pull, NDR_IN, r);
  38         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
  39                 talloc_free(r);
  40                 return false;
  41         }
  42 
  43         if (DEBUGLEVEL >= 10) {
  44                 NDR_PRINT_IN_DEBUG(wkssvc_NetWkstaGetInfo, r);
  45         }
  46 
  47         ZERO_STRUCT(r->out);
  48         r->out.info = talloc_zero(r, union wkssvc_NetWkstaInfo);
  49         if (r->out.info == NULL) {
  50                 talloc_free(r);
  51                 return false;
  52         }
  53 
  54         r->out.result = _wkssvc_NetWkstaGetInfo(p, r);
  55 
  56         if (p->rng_fault_state) {
  57                 talloc_free(r);
  58                 /* Return true here, srv_pipe_hnd.c will take care */
  59                 return true;
  60         }
  61 
  62         if (DEBUGLEVEL >= 10) {
  63                 NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaGetInfo, r);
  64         }
  65 
  66         push = ndr_push_init_ctx(r, NULL);
  67         if (push == NULL) {
  68                 talloc_free(r);
  69                 return false;
  70         }
  71 
  72         ndr_err = call->ndr_push(push, NDR_OUT, r);
  73         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
  74                 talloc_free(r);
  75                 return false;
  76         }
  77 
  78         blob = ndr_push_blob(push);
  79         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
  80                 talloc_free(r);
  81                 return false;
  82         }
  83 
  84         talloc_free(r);
  85 
  86         return true;
  87 }
  88 
  89 static bool api_wkssvc_NetWkstaSetInfo(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
  90 {
  91         const struct ndr_interface_call *call;
  92         struct ndr_pull *pull;
  93         struct ndr_push *push;
  94         enum ndr_err_code ndr_err;
  95         DATA_BLOB blob;
  96         struct wkssvc_NetWkstaSetInfo *r;
  97 
  98         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETWKSTASETINFO];
  99 
 100         r = talloc(talloc_tos(), struct wkssvc_NetWkstaSetInfo);
 101         if (r == NULL) {
 102                 return false;
 103         }
 104 
 105         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 106                 talloc_free(r);
 107                 return false;
 108         }
 109 
 110         pull = ndr_pull_init_blob(&blob, r, NULL);
 111         if (pull == NULL) {
 112                 talloc_free(r);
 113                 return false;
 114         }
 115 
 116         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 117         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 118         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 119                 talloc_free(r);
 120                 return false;
 121         }
 122 
 123         if (DEBUGLEVEL >= 10) {
 124                 NDR_PRINT_IN_DEBUG(wkssvc_NetWkstaSetInfo, r);
 125         }
 126 
 127         ZERO_STRUCT(r->out);
 128         r->out.parm_error = r->in.parm_error;
 129         r->out.result = _wkssvc_NetWkstaSetInfo(p, r);
 130 
 131         if (p->rng_fault_state) {
 132                 talloc_free(r);
 133                 /* Return true here, srv_pipe_hnd.c will take care */
 134                 return true;
 135         }
 136 
 137         if (DEBUGLEVEL >= 10) {
 138                 NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaSetInfo, r);
 139         }
 140 
 141         push = ndr_push_init_ctx(r, NULL);
 142         if (push == NULL) {
 143                 talloc_free(r);
 144                 return false;
 145         }
 146 
 147         ndr_err = call->ndr_push(push, NDR_OUT, r);
 148         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 149                 talloc_free(r);
 150                 return false;
 151         }
 152 
 153         blob = ndr_push_blob(push);
 154         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 155                 talloc_free(r);
 156                 return false;
 157         }
 158 
 159         talloc_free(r);
 160 
 161         return true;
 162 }
 163 
 164 static bool api_wkssvc_NetWkstaEnumUsers(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 165 {
 166         const struct ndr_interface_call *call;
 167         struct ndr_pull *pull;
 168         struct ndr_push *push;
 169         enum ndr_err_code ndr_err;
 170         DATA_BLOB blob;
 171         struct wkssvc_NetWkstaEnumUsers *r;
 172 
 173         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETWKSTAENUMUSERS];
 174 
 175         r = talloc(talloc_tos(), struct wkssvc_NetWkstaEnumUsers);
 176         if (r == NULL) {
 177                 return false;
 178         }
 179 
 180         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 181                 talloc_free(r);
 182                 return false;
 183         }
 184 
 185         pull = ndr_pull_init_blob(&blob, r, NULL);
 186         if (pull == NULL) {
 187                 talloc_free(r);
 188                 return false;
 189         }
 190 
 191         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 192         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 193         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 194                 talloc_free(r);
 195                 return false;
 196         }
 197 
 198         if (DEBUGLEVEL >= 10) {
 199                 NDR_PRINT_IN_DEBUG(wkssvc_NetWkstaEnumUsers, r);
 200         }
 201 
 202         ZERO_STRUCT(r->out);
 203         r->out.info = r->in.info;
 204         r->out.resume_handle = r->in.resume_handle;
 205         r->out.entries_read = talloc_zero(r, uint32_t);
 206         if (r->out.entries_read == NULL) {
 207                 talloc_free(r);
 208                 return false;
 209         }
 210 
 211         r->out.result = _wkssvc_NetWkstaEnumUsers(p, r);
 212 
 213         if (p->rng_fault_state) {
 214                 talloc_free(r);
 215                 /* Return true here, srv_pipe_hnd.c will take care */
 216                 return true;
 217         }
 218 
 219         if (DEBUGLEVEL >= 10) {
 220                 NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaEnumUsers, r);
 221         }
 222 
 223         push = ndr_push_init_ctx(r, NULL);
 224         if (push == NULL) {
 225                 talloc_free(r);
 226                 return false;
 227         }
 228 
 229         ndr_err = call->ndr_push(push, NDR_OUT, r);
 230         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 231                 talloc_free(r);
 232                 return false;
 233         }
 234 
 235         blob = ndr_push_blob(push);
 236         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 237                 talloc_free(r);
 238                 return false;
 239         }
 240 
 241         talloc_free(r);
 242 
 243         return true;
 244 }
 245 
 246 static bool api_wkssvc_NetrWkstaUserGetInfo(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 247 {
 248         const struct ndr_interface_call *call;
 249         struct ndr_pull *pull;
 250         struct ndr_push *push;
 251         enum ndr_err_code ndr_err;
 252         DATA_BLOB blob;
 253         struct wkssvc_NetrWkstaUserGetInfo *r;
 254 
 255         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRWKSTAUSERGETINFO];
 256 
 257         r = talloc(talloc_tos(), struct wkssvc_NetrWkstaUserGetInfo);
 258         if (r == NULL) {
 259                 return false;
 260         }
 261 
 262         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 263                 talloc_free(r);
 264                 return false;
 265         }
 266 
 267         pull = ndr_pull_init_blob(&blob, r, NULL);
 268         if (pull == NULL) {
 269                 talloc_free(r);
 270                 return false;
 271         }
 272 
 273         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 274         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 275         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 276                 talloc_free(r);
 277                 return false;
 278         }
 279 
 280         if (DEBUGLEVEL >= 10) {
 281                 NDR_PRINT_IN_DEBUG(wkssvc_NetrWkstaUserGetInfo, r);
 282         }
 283 
 284         ZERO_STRUCT(r->out);
 285         r->out.info = talloc_zero(r, union wkssvc_NetrWkstaUserInfo);
 286         if (r->out.info == NULL) {
 287                 talloc_free(r);
 288                 return false;
 289         }
 290 
 291         r->out.result = _wkssvc_NetrWkstaUserGetInfo(p, r);
 292 
 293         if (p->rng_fault_state) {
 294                 talloc_free(r);
 295                 /* Return true here, srv_pipe_hnd.c will take care */
 296                 return true;
 297         }
 298 
 299         if (DEBUGLEVEL >= 10) {
 300                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrWkstaUserGetInfo, r);
 301         }
 302 
 303         push = ndr_push_init_ctx(r, NULL);
 304         if (push == NULL) {
 305                 talloc_free(r);
 306                 return false;
 307         }
 308 
 309         ndr_err = call->ndr_push(push, NDR_OUT, r);
 310         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 311                 talloc_free(r);
 312                 return false;
 313         }
 314 
 315         blob = ndr_push_blob(push);
 316         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 317                 talloc_free(r);
 318                 return false;
 319         }
 320 
 321         talloc_free(r);
 322 
 323         return true;
 324 }
 325 
 326 static bool api_wkssvc_NetrWkstaUserSetInfo(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 327 {
 328         const struct ndr_interface_call *call;
 329         struct ndr_pull *pull;
 330         struct ndr_push *push;
 331         enum ndr_err_code ndr_err;
 332         DATA_BLOB blob;
 333         struct wkssvc_NetrWkstaUserSetInfo *r;
 334 
 335         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRWKSTAUSERSETINFO];
 336 
 337         r = talloc(talloc_tos(), struct wkssvc_NetrWkstaUserSetInfo);
 338         if (r == NULL) {
 339                 return false;
 340         }
 341 
 342         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 343                 talloc_free(r);
 344                 return false;
 345         }
 346 
 347         pull = ndr_pull_init_blob(&blob, r, NULL);
 348         if (pull == NULL) {
 349                 talloc_free(r);
 350                 return false;
 351         }
 352 
 353         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 354         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 355         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 356                 talloc_free(r);
 357                 return false;
 358         }
 359 
 360         if (DEBUGLEVEL >= 10) {
 361                 NDR_PRINT_IN_DEBUG(wkssvc_NetrWkstaUserSetInfo, r);
 362         }
 363 
 364         ZERO_STRUCT(r->out);
 365         r->out.parm_err = r->in.parm_err;
 366         r->out.result = _wkssvc_NetrWkstaUserSetInfo(p, r);
 367 
 368         if (p->rng_fault_state) {
 369                 talloc_free(r);
 370                 /* Return true here, srv_pipe_hnd.c will take care */
 371                 return true;
 372         }
 373 
 374         if (DEBUGLEVEL >= 10) {
 375                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrWkstaUserSetInfo, r);
 376         }
 377 
 378         push = ndr_push_init_ctx(r, NULL);
 379         if (push == NULL) {
 380                 talloc_free(r);
 381                 return false;
 382         }
 383 
 384         ndr_err = call->ndr_push(push, NDR_OUT, r);
 385         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 386                 talloc_free(r);
 387                 return false;
 388         }
 389 
 390         blob = ndr_push_blob(push);
 391         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 392                 talloc_free(r);
 393                 return false;
 394         }
 395 
 396         talloc_free(r);
 397 
 398         return true;
 399 }
 400 
 401 static bool api_wkssvc_NetWkstaTransportEnum(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 402 {
 403         const struct ndr_interface_call *call;
 404         struct ndr_pull *pull;
 405         struct ndr_push *push;
 406         enum ndr_err_code ndr_err;
 407         DATA_BLOB blob;
 408         struct wkssvc_NetWkstaTransportEnum *r;
 409 
 410         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETWKSTATRANSPORTENUM];
 411 
 412         r = talloc(talloc_tos(), struct wkssvc_NetWkstaTransportEnum);
 413         if (r == NULL) {
 414                 return false;
 415         }
 416 
 417         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 418                 talloc_free(r);
 419                 return false;
 420         }
 421 
 422         pull = ndr_pull_init_blob(&blob, r, NULL);
 423         if (pull == NULL) {
 424                 talloc_free(r);
 425                 return false;
 426         }
 427 
 428         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 429         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 430         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 431                 talloc_free(r);
 432                 return false;
 433         }
 434 
 435         if (DEBUGLEVEL >= 10) {
 436                 NDR_PRINT_IN_DEBUG(wkssvc_NetWkstaTransportEnum, r);
 437         }
 438 
 439         ZERO_STRUCT(r->out);
 440         r->out.info = r->in.info;
 441         r->out.resume_handle = r->in.resume_handle;
 442         r->out.total_entries = talloc_zero(r, uint32_t);
 443         if (r->out.total_entries == NULL) {
 444                 talloc_free(r);
 445                 return false;
 446         }
 447 
 448         r->out.result = _wkssvc_NetWkstaTransportEnum(p, r);
 449 
 450         if (p->rng_fault_state) {
 451                 talloc_free(r);
 452                 /* Return true here, srv_pipe_hnd.c will take care */
 453                 return true;
 454         }
 455 
 456         if (DEBUGLEVEL >= 10) {
 457                 NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaTransportEnum, r);
 458         }
 459 
 460         push = ndr_push_init_ctx(r, NULL);
 461         if (push == NULL) {
 462                 talloc_free(r);
 463                 return false;
 464         }
 465 
 466         ndr_err = call->ndr_push(push, NDR_OUT, r);
 467         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 468                 talloc_free(r);
 469                 return false;
 470         }
 471 
 472         blob = ndr_push_blob(push);
 473         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 474                 talloc_free(r);
 475                 return false;
 476         }
 477 
 478         talloc_free(r);
 479 
 480         return true;
 481 }
 482 
 483 static bool api_wkssvc_NetrWkstaTransportAdd(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 484 {
 485         const struct ndr_interface_call *call;
 486         struct ndr_pull *pull;
 487         struct ndr_push *push;
 488         enum ndr_err_code ndr_err;
 489         DATA_BLOB blob;
 490         struct wkssvc_NetrWkstaTransportAdd *r;
 491 
 492         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRWKSTATRANSPORTADD];
 493 
 494         r = talloc(talloc_tos(), struct wkssvc_NetrWkstaTransportAdd);
 495         if (r == NULL) {
 496                 return false;
 497         }
 498 
 499         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 500                 talloc_free(r);
 501                 return false;
 502         }
 503 
 504         pull = ndr_pull_init_blob(&blob, r, NULL);
 505         if (pull == NULL) {
 506                 talloc_free(r);
 507                 return false;
 508         }
 509 
 510         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 511         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 512         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 513                 talloc_free(r);
 514                 return false;
 515         }
 516 
 517         if (DEBUGLEVEL >= 10) {
 518                 NDR_PRINT_IN_DEBUG(wkssvc_NetrWkstaTransportAdd, r);
 519         }
 520 
 521         ZERO_STRUCT(r->out);
 522         r->out.parm_err = r->in.parm_err;
 523         r->out.result = _wkssvc_NetrWkstaTransportAdd(p, r);
 524 
 525         if (p->rng_fault_state) {
 526                 talloc_free(r);
 527                 /* Return true here, srv_pipe_hnd.c will take care */
 528                 return true;
 529         }
 530 
 531         if (DEBUGLEVEL >= 10) {
 532                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrWkstaTransportAdd, r);
 533         }
 534 
 535         push = ndr_push_init_ctx(r, NULL);
 536         if (push == NULL) {
 537                 talloc_free(r);
 538                 return false;
 539         }
 540 
 541         ndr_err = call->ndr_push(push, NDR_OUT, r);
 542         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 543                 talloc_free(r);
 544                 return false;
 545         }
 546 
 547         blob = ndr_push_blob(push);
 548         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 549                 talloc_free(r);
 550                 return false;
 551         }
 552 
 553         talloc_free(r);
 554 
 555         return true;
 556 }
 557 
 558 static bool api_wkssvc_NetrWkstaTransportDel(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 559 {
 560         const struct ndr_interface_call *call;
 561         struct ndr_pull *pull;
 562         struct ndr_push *push;
 563         enum ndr_err_code ndr_err;
 564         DATA_BLOB blob;
 565         struct wkssvc_NetrWkstaTransportDel *r;
 566 
 567         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRWKSTATRANSPORTDEL];
 568 
 569         r = talloc(talloc_tos(), struct wkssvc_NetrWkstaTransportDel);
 570         if (r == NULL) {
 571                 return false;
 572         }
 573 
 574         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 575                 talloc_free(r);
 576                 return false;
 577         }
 578 
 579         pull = ndr_pull_init_blob(&blob, r, NULL);
 580         if (pull == NULL) {
 581                 talloc_free(r);
 582                 return false;
 583         }
 584 
 585         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 586         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 587         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 588                 talloc_free(r);
 589                 return false;
 590         }
 591 
 592         if (DEBUGLEVEL >= 10) {
 593                 NDR_PRINT_IN_DEBUG(wkssvc_NetrWkstaTransportDel, r);
 594         }
 595 
 596         r->out.result = _wkssvc_NetrWkstaTransportDel(p, r);
 597 
 598         if (p->rng_fault_state) {
 599                 talloc_free(r);
 600                 /* Return true here, srv_pipe_hnd.c will take care */
 601                 return true;
 602         }
 603 
 604         if (DEBUGLEVEL >= 10) {
 605                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrWkstaTransportDel, r);
 606         }
 607 
 608         push = ndr_push_init_ctx(r, NULL);
 609         if (push == NULL) {
 610                 talloc_free(r);
 611                 return false;
 612         }
 613 
 614         ndr_err = call->ndr_push(push, NDR_OUT, r);
 615         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 616                 talloc_free(r);
 617                 return false;
 618         }
 619 
 620         blob = ndr_push_blob(push);
 621         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 622                 talloc_free(r);
 623                 return false;
 624         }
 625 
 626         talloc_free(r);
 627 
 628         return true;
 629 }
 630 
 631 static bool api_wkssvc_NetrUseAdd(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 632 {
 633         const struct ndr_interface_call *call;
 634         struct ndr_pull *pull;
 635         struct ndr_push *push;
 636         enum ndr_err_code ndr_err;
 637         DATA_BLOB blob;
 638         struct wkssvc_NetrUseAdd *r;
 639 
 640         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUSEADD];
 641 
 642         r = talloc(talloc_tos(), struct wkssvc_NetrUseAdd);
 643         if (r == NULL) {
 644                 return false;
 645         }
 646 
 647         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 648                 talloc_free(r);
 649                 return false;
 650         }
 651 
 652         pull = ndr_pull_init_blob(&blob, r, NULL);
 653         if (pull == NULL) {
 654                 talloc_free(r);
 655                 return false;
 656         }
 657 
 658         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 659         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 660         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 661                 talloc_free(r);
 662                 return false;
 663         }
 664 
 665         if (DEBUGLEVEL >= 10) {
 666                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUseAdd, r);
 667         }
 668 
 669         ZERO_STRUCT(r->out);
 670         r->out.parm_err = r->in.parm_err;
 671         r->out.result = _wkssvc_NetrUseAdd(p, r);
 672 
 673         if (p->rng_fault_state) {
 674                 talloc_free(r);
 675                 /* Return true here, srv_pipe_hnd.c will take care */
 676                 return true;
 677         }
 678 
 679         if (DEBUGLEVEL >= 10) {
 680                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUseAdd, r);
 681         }
 682 
 683         push = ndr_push_init_ctx(r, NULL);
 684         if (push == NULL) {
 685                 talloc_free(r);
 686                 return false;
 687         }
 688 
 689         ndr_err = call->ndr_push(push, NDR_OUT, r);
 690         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 691                 talloc_free(r);
 692                 return false;
 693         }
 694 
 695         blob = ndr_push_blob(push);
 696         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 697                 talloc_free(r);
 698                 return false;
 699         }
 700 
 701         talloc_free(r);
 702 
 703         return true;
 704 }
 705 
 706 static bool api_wkssvc_NetrUseGetInfo(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 707 {
 708         const struct ndr_interface_call *call;
 709         struct ndr_pull *pull;
 710         struct ndr_push *push;
 711         enum ndr_err_code ndr_err;
 712         DATA_BLOB blob;
 713         struct wkssvc_NetrUseGetInfo *r;
 714 
 715         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUSEGETINFO];
 716 
 717         r = talloc(talloc_tos(), struct wkssvc_NetrUseGetInfo);
 718         if (r == NULL) {
 719                 return false;
 720         }
 721 
 722         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 723                 talloc_free(r);
 724                 return false;
 725         }
 726 
 727         pull = ndr_pull_init_blob(&blob, r, NULL);
 728         if (pull == NULL) {
 729                 talloc_free(r);
 730                 return false;
 731         }
 732 
 733         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 734         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 735         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 736                 talloc_free(r);
 737                 return false;
 738         }
 739 
 740         if (DEBUGLEVEL >= 10) {
 741                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUseGetInfo, r);
 742         }
 743 
 744         ZERO_STRUCT(r->out);
 745         r->out.ctr = talloc_zero(r, union wkssvc_NetrUseGetInfoCtr);
 746         if (r->out.ctr == NULL) {
 747                 talloc_free(r);
 748                 return false;
 749         }
 750 
 751         r->out.result = _wkssvc_NetrUseGetInfo(p, r);
 752 
 753         if (p->rng_fault_state) {
 754                 talloc_free(r);
 755                 /* Return true here, srv_pipe_hnd.c will take care */
 756                 return true;
 757         }
 758 
 759         if (DEBUGLEVEL >= 10) {
 760                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUseGetInfo, r);
 761         }
 762 
 763         push = ndr_push_init_ctx(r, NULL);
 764         if (push == NULL) {
 765                 talloc_free(r);
 766                 return false;
 767         }
 768 
 769         ndr_err = call->ndr_push(push, NDR_OUT, r);
 770         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 771                 talloc_free(r);
 772                 return false;
 773         }
 774 
 775         blob = ndr_push_blob(push);
 776         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 777                 talloc_free(r);
 778                 return false;
 779         }
 780 
 781         talloc_free(r);
 782 
 783         return true;
 784 }
 785 
 786 static bool api_wkssvc_NetrUseDel(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 787 {
 788         const struct ndr_interface_call *call;
 789         struct ndr_pull *pull;
 790         struct ndr_push *push;
 791         enum ndr_err_code ndr_err;
 792         DATA_BLOB blob;
 793         struct wkssvc_NetrUseDel *r;
 794 
 795         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUSEDEL];
 796 
 797         r = talloc(talloc_tos(), struct wkssvc_NetrUseDel);
 798         if (r == NULL) {
 799                 return false;
 800         }
 801 
 802         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 803                 talloc_free(r);
 804                 return false;
 805         }
 806 
 807         pull = ndr_pull_init_blob(&blob, r, NULL);
 808         if (pull == NULL) {
 809                 talloc_free(r);
 810                 return false;
 811         }
 812 
 813         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 814         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 815         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 816                 talloc_free(r);
 817                 return false;
 818         }
 819 
 820         if (DEBUGLEVEL >= 10) {
 821                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUseDel, r);
 822         }
 823 
 824         r->out.result = _wkssvc_NetrUseDel(p, r);
 825 
 826         if (p->rng_fault_state) {
 827                 talloc_free(r);
 828                 /* Return true here, srv_pipe_hnd.c will take care */
 829                 return true;
 830         }
 831 
 832         if (DEBUGLEVEL >= 10) {
 833                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUseDel, r);
 834         }
 835 
 836         push = ndr_push_init_ctx(r, NULL);
 837         if (push == NULL) {
 838                 talloc_free(r);
 839                 return false;
 840         }
 841 
 842         ndr_err = call->ndr_push(push, NDR_OUT, r);
 843         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 844                 talloc_free(r);
 845                 return false;
 846         }
 847 
 848         blob = ndr_push_blob(push);
 849         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 850                 talloc_free(r);
 851                 return false;
 852         }
 853 
 854         talloc_free(r);
 855 
 856         return true;
 857 }
 858 
 859 static bool api_wkssvc_NetrUseEnum(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 860 {
 861         const struct ndr_interface_call *call;
 862         struct ndr_pull *pull;
 863         struct ndr_push *push;
 864         enum ndr_err_code ndr_err;
 865         DATA_BLOB blob;
 866         struct wkssvc_NetrUseEnum *r;
 867 
 868         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUSEENUM];
 869 
 870         r = talloc(talloc_tos(), struct wkssvc_NetrUseEnum);
 871         if (r == NULL) {
 872                 return false;
 873         }
 874 
 875         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 876                 talloc_free(r);
 877                 return false;
 878         }
 879 
 880         pull = ndr_pull_init_blob(&blob, r, NULL);
 881         if (pull == NULL) {
 882                 talloc_free(r);
 883                 return false;
 884         }
 885 
 886         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 887         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 888         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 889                 talloc_free(r);
 890                 return false;
 891         }
 892 
 893         if (DEBUGLEVEL >= 10) {
 894                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUseEnum, r);
 895         }
 896 
 897         ZERO_STRUCT(r->out);
 898         r->out.info = r->in.info;
 899         r->out.resume_handle = r->in.resume_handle;
 900         r->out.entries_read = talloc_zero(r, uint32_t);
 901         if (r->out.entries_read == NULL) {
 902                 talloc_free(r);
 903                 return false;
 904         }
 905 
 906         r->out.result = _wkssvc_NetrUseEnum(p, r);
 907 
 908         if (p->rng_fault_state) {
 909                 talloc_free(r);
 910                 /* Return true here, srv_pipe_hnd.c will take care */
 911                 return true;
 912         }
 913 
 914         if (DEBUGLEVEL >= 10) {
 915                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUseEnum, r);
 916         }
 917 
 918         push = ndr_push_init_ctx(r, NULL);
 919         if (push == NULL) {
 920                 talloc_free(r);
 921                 return false;
 922         }
 923 
 924         ndr_err = call->ndr_push(push, NDR_OUT, r);
 925         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 926                 talloc_free(r);
 927                 return false;
 928         }
 929 
 930         blob = ndr_push_blob(push);
 931         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
 932                 talloc_free(r);
 933                 return false;
 934         }
 935 
 936         talloc_free(r);
 937 
 938         return true;
 939 }
 940 
 941 static bool api_wkssvc_NetrMessageBufferSend(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
 942 {
 943         const struct ndr_interface_call *call;
 944         struct ndr_pull *pull;
 945         struct ndr_push *push;
 946         enum ndr_err_code ndr_err;
 947         DATA_BLOB blob;
 948         struct wkssvc_NetrMessageBufferSend *r;
 949 
 950         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRMESSAGEBUFFERSEND];
 951 
 952         r = talloc(talloc_tos(), struct wkssvc_NetrMessageBufferSend);
 953         if (r == NULL) {
 954                 return false;
 955         }
 956 
 957         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
 958                 talloc_free(r);
 959                 return false;
 960         }
 961 
 962         pull = ndr_pull_init_blob(&blob, r, NULL);
 963         if (pull == NULL) {
 964                 talloc_free(r);
 965                 return false;
 966         }
 967 
 968         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 969         ndr_err = call->ndr_pull(pull, NDR_IN, r);
 970         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 971                 talloc_free(r);
 972                 return false;
 973         }
 974 
 975         if (DEBUGLEVEL >= 10) {
 976                 NDR_PRINT_IN_DEBUG(wkssvc_NetrMessageBufferSend, r);
 977         }
 978 
 979         r->out.result = _wkssvc_NetrMessageBufferSend(p, r);
 980 
 981         if (p->rng_fault_state) {
 982                 talloc_free(r);
 983                 /* Return true here, srv_pipe_hnd.c will take care */
 984                 return true;
 985         }
 986 
 987         if (DEBUGLEVEL >= 10) {
 988                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrMessageBufferSend, r);
 989         }
 990 
 991         push = ndr_push_init_ctx(r, NULL);
 992         if (push == NULL) {
 993                 talloc_free(r);
 994                 return false;
 995         }
 996 
 997         ndr_err = call->ndr_push(push, NDR_OUT, r);
 998         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
 999                 talloc_free(r);
1000                 return false;
1001         }
1002 
1003         blob = ndr_push_blob(push);
1004         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1005                 talloc_free(r);
1006                 return false;
1007         }
1008 
1009         talloc_free(r);
1010 
1011         return true;
1012 }
1013 
1014 static bool api_wkssvc_NetrWorkstationStatisticsGet(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1015 {
1016         const struct ndr_interface_call *call;
1017         struct ndr_pull *pull;
1018         struct ndr_push *push;
1019         enum ndr_err_code ndr_err;
1020         DATA_BLOB blob;
1021         struct wkssvc_NetrWorkstationStatisticsGet *r;
1022 
1023         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRWORKSTATIONSTATISTICSGET];
1024 
1025         r = talloc(talloc_tos(), struct wkssvc_NetrWorkstationStatisticsGet);
1026         if (r == NULL) {
1027                 return false;
1028         }
1029 
1030         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1031                 talloc_free(r);
1032                 return false;
1033         }
1034 
1035         pull = ndr_pull_init_blob(&blob, r, NULL);
1036         if (pull == NULL) {
1037                 talloc_free(r);
1038                 return false;
1039         }
1040 
1041         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1042         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1043         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1044                 talloc_free(r);
1045                 return false;
1046         }
1047 
1048         if (DEBUGLEVEL >= 10) {
1049                 NDR_PRINT_IN_DEBUG(wkssvc_NetrWorkstationStatisticsGet, r);
1050         }
1051 
1052         ZERO_STRUCT(r->out);
1053         r->out.info = talloc_zero(r, struct wkssvc_NetrWorkstationStatistics *);
1054         if (r->out.info == NULL) {
1055                 talloc_free(r);
1056                 return false;
1057         }
1058 
1059         r->out.result = _wkssvc_NetrWorkstationStatisticsGet(p, r);
1060 
1061         if (p->rng_fault_state) {
1062                 talloc_free(r);
1063                 /* Return true here, srv_pipe_hnd.c will take care */
1064                 return true;
1065         }
1066 
1067         if (DEBUGLEVEL >= 10) {
1068                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrWorkstationStatisticsGet, r);
1069         }
1070 
1071         push = ndr_push_init_ctx(r, NULL);
1072         if (push == NULL) {
1073                 talloc_free(r);
1074                 return false;
1075         }
1076 
1077         ndr_err = call->ndr_push(push, NDR_OUT, r);
1078         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1079                 talloc_free(r);
1080                 return false;
1081         }
1082 
1083         blob = ndr_push_blob(push);
1084         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1085                 talloc_free(r);
1086                 return false;
1087         }
1088 
1089         talloc_free(r);
1090 
1091         return true;
1092 }
1093 
1094 static bool api_wkssvc_NetrLogonDomainNameAdd(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1095 {
1096         const struct ndr_interface_call *call;
1097         struct ndr_pull *pull;
1098         struct ndr_push *push;
1099         enum ndr_err_code ndr_err;
1100         DATA_BLOB blob;
1101         struct wkssvc_NetrLogonDomainNameAdd *r;
1102 
1103         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRLOGONDOMAINNAMEADD];
1104 
1105         r = talloc(talloc_tos(), struct wkssvc_NetrLogonDomainNameAdd);
1106         if (r == NULL) {
1107                 return false;
1108         }
1109 
1110         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1111                 talloc_free(r);
1112                 return false;
1113         }
1114 
1115         pull = ndr_pull_init_blob(&blob, r, NULL);
1116         if (pull == NULL) {
1117                 talloc_free(r);
1118                 return false;
1119         }
1120 
1121         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1122         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1123         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1124                 talloc_free(r);
1125                 return false;
1126         }
1127 
1128         if (DEBUGLEVEL >= 10) {
1129                 NDR_PRINT_IN_DEBUG(wkssvc_NetrLogonDomainNameAdd, r);
1130         }
1131 
1132         r->out.result = _wkssvc_NetrLogonDomainNameAdd(p, r);
1133 
1134         if (p->rng_fault_state) {
1135                 talloc_free(r);
1136                 /* Return true here, srv_pipe_hnd.c will take care */
1137                 return true;
1138         }
1139 
1140         if (DEBUGLEVEL >= 10) {
1141                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrLogonDomainNameAdd, r);
1142         }
1143 
1144         push = ndr_push_init_ctx(r, NULL);
1145         if (push == NULL) {
1146                 talloc_free(r);
1147                 return false;
1148         }
1149 
1150         ndr_err = call->ndr_push(push, NDR_OUT, r);
1151         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1152                 talloc_free(r);
1153                 return false;
1154         }
1155 
1156         blob = ndr_push_blob(push);
1157         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1158                 talloc_free(r);
1159                 return false;
1160         }
1161 
1162         talloc_free(r);
1163 
1164         return true;
1165 }
1166 
1167 static bool api_wkssvc_NetrLogonDomainNameDel(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1168 {
1169         const struct ndr_interface_call *call;
1170         struct ndr_pull *pull;
1171         struct ndr_push *push;
1172         enum ndr_err_code ndr_err;
1173         DATA_BLOB blob;
1174         struct wkssvc_NetrLogonDomainNameDel *r;
1175 
1176         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRLOGONDOMAINNAMEDEL];
1177 
1178         r = talloc(talloc_tos(), struct wkssvc_NetrLogonDomainNameDel);
1179         if (r == NULL) {
1180                 return false;
1181         }
1182 
1183         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1184                 talloc_free(r);
1185                 return false;
1186         }
1187 
1188         pull = ndr_pull_init_blob(&blob, r, NULL);
1189         if (pull == NULL) {
1190                 talloc_free(r);
1191                 return false;
1192         }
1193 
1194         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1195         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1196         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1197                 talloc_free(r);
1198                 return false;
1199         }
1200 
1201         if (DEBUGLEVEL >= 10) {
1202                 NDR_PRINT_IN_DEBUG(wkssvc_NetrLogonDomainNameDel, r);
1203         }
1204 
1205         r->out.result = _wkssvc_NetrLogonDomainNameDel(p, r);
1206 
1207         if (p->rng_fault_state) {
1208                 talloc_free(r);
1209                 /* Return true here, srv_pipe_hnd.c will take care */
1210                 return true;
1211         }
1212 
1213         if (DEBUGLEVEL >= 10) {
1214                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrLogonDomainNameDel, r);
1215         }
1216 
1217         push = ndr_push_init_ctx(r, NULL);
1218         if (push == NULL) {
1219                 talloc_free(r);
1220                 return false;
1221         }
1222 
1223         ndr_err = call->ndr_push(push, NDR_OUT, r);
1224         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1225                 talloc_free(r);
1226                 return false;
1227         }
1228 
1229         blob = ndr_push_blob(push);
1230         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1231                 talloc_free(r);
1232                 return false;
1233         }
1234 
1235         talloc_free(r);
1236 
1237         return true;
1238 }
1239 
1240 static bool api_wkssvc_NetrJoinDomain(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1241 {
1242         const struct ndr_interface_call *call;
1243         struct ndr_pull *pull;
1244         struct ndr_push *push;
1245         enum ndr_err_code ndr_err;
1246         DATA_BLOB blob;
1247         struct wkssvc_NetrJoinDomain *r;
1248 
1249         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRJOINDOMAIN];
1250 
1251         r = talloc(talloc_tos(), struct wkssvc_NetrJoinDomain);
1252         if (r == NULL) {
1253                 return false;
1254         }
1255 
1256         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1257                 talloc_free(r);
1258                 return false;
1259         }
1260 
1261         pull = ndr_pull_init_blob(&blob, r, NULL);
1262         if (pull == NULL) {
1263                 talloc_free(r);
1264                 return false;
1265         }
1266 
1267         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1268         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1269         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1270                 talloc_free(r);
1271                 return false;
1272         }
1273 
1274         if (DEBUGLEVEL >= 10) {
1275                 NDR_PRINT_IN_DEBUG(wkssvc_NetrJoinDomain, r);
1276         }
1277 
1278         r->out.result = _wkssvc_NetrJoinDomain(p, r);
1279 
1280         if (p->rng_fault_state) {
1281                 talloc_free(r);
1282                 /* Return true here, srv_pipe_hnd.c will take care */
1283                 return true;
1284         }
1285 
1286         if (DEBUGLEVEL >= 10) {
1287                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrJoinDomain, r);
1288         }
1289 
1290         push = ndr_push_init_ctx(r, NULL);
1291         if (push == NULL) {
1292                 talloc_free(r);
1293                 return false;
1294         }
1295 
1296         ndr_err = call->ndr_push(push, NDR_OUT, r);
1297         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1298                 talloc_free(r);
1299                 return false;
1300         }
1301 
1302         blob = ndr_push_blob(push);
1303         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1304                 talloc_free(r);
1305                 return false;
1306         }
1307 
1308         talloc_free(r);
1309 
1310         return true;
1311 }
1312 
1313 static bool api_wkssvc_NetrUnjoinDomain(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1314 {
1315         const struct ndr_interface_call *call;
1316         struct ndr_pull *pull;
1317         struct ndr_push *push;
1318         enum ndr_err_code ndr_err;
1319         DATA_BLOB blob;
1320         struct wkssvc_NetrUnjoinDomain *r;
1321 
1322         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUNJOINDOMAIN];
1323 
1324         r = talloc(talloc_tos(), struct wkssvc_NetrUnjoinDomain);
1325         if (r == NULL) {
1326                 return false;
1327         }
1328 
1329         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1330                 talloc_free(r);
1331                 return false;
1332         }
1333 
1334         pull = ndr_pull_init_blob(&blob, r, NULL);
1335         if (pull == NULL) {
1336                 talloc_free(r);
1337                 return false;
1338         }
1339 
1340         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1341         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1342         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1343                 talloc_free(r);
1344                 return false;
1345         }
1346 
1347         if (DEBUGLEVEL >= 10) {
1348                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUnjoinDomain, r);
1349         }
1350 
1351         r->out.result = _wkssvc_NetrUnjoinDomain(p, r);
1352 
1353         if (p->rng_fault_state) {
1354                 talloc_free(r);
1355                 /* Return true here, srv_pipe_hnd.c will take care */
1356                 return true;
1357         }
1358 
1359         if (DEBUGLEVEL >= 10) {
1360                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUnjoinDomain, r);
1361         }
1362 
1363         push = ndr_push_init_ctx(r, NULL);
1364         if (push == NULL) {
1365                 talloc_free(r);
1366                 return false;
1367         }
1368 
1369         ndr_err = call->ndr_push(push, NDR_OUT, r);
1370         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1371                 talloc_free(r);
1372                 return false;
1373         }
1374 
1375         blob = ndr_push_blob(push);
1376         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1377                 talloc_free(r);
1378                 return false;
1379         }
1380 
1381         talloc_free(r);
1382 
1383         return true;
1384 }
1385 
1386 static bool api_wkssvc_NetrRenameMachineInDomain(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1387 {
1388         const struct ndr_interface_call *call;
1389         struct ndr_pull *pull;
1390         struct ndr_push *push;
1391         enum ndr_err_code ndr_err;
1392         DATA_BLOB blob;
1393         struct wkssvc_NetrRenameMachineInDomain *r;
1394 
1395         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN];
1396 
1397         r = talloc(talloc_tos(), struct wkssvc_NetrRenameMachineInDomain);
1398         if (r == NULL) {
1399                 return false;
1400         }
1401 
1402         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1403                 talloc_free(r);
1404                 return false;
1405         }
1406 
1407         pull = ndr_pull_init_blob(&blob, r, NULL);
1408         if (pull == NULL) {
1409                 talloc_free(r);
1410                 return false;
1411         }
1412 
1413         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1414         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1415         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1416                 talloc_free(r);
1417                 return false;
1418         }
1419 
1420         if (DEBUGLEVEL >= 10) {
1421                 NDR_PRINT_IN_DEBUG(wkssvc_NetrRenameMachineInDomain, r);
1422         }
1423 
1424         r->out.result = _wkssvc_NetrRenameMachineInDomain(p, r);
1425 
1426         if (p->rng_fault_state) {
1427                 talloc_free(r);
1428                 /* Return true here, srv_pipe_hnd.c will take care */
1429                 return true;
1430         }
1431 
1432         if (DEBUGLEVEL >= 10) {
1433                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrRenameMachineInDomain, r);
1434         }
1435 
1436         push = ndr_push_init_ctx(r, NULL);
1437         if (push == NULL) {
1438                 talloc_free(r);
1439                 return false;
1440         }
1441 
1442         ndr_err = call->ndr_push(push, NDR_OUT, r);
1443         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1444                 talloc_free(r);
1445                 return false;
1446         }
1447 
1448         blob = ndr_push_blob(push);
1449         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1450                 talloc_free(r);
1451                 return false;
1452         }
1453 
1454         talloc_free(r);
1455 
1456         return true;
1457 }
1458 
1459 static bool api_wkssvc_NetrValidateName(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1460 {
1461         const struct ndr_interface_call *call;
1462         struct ndr_pull *pull;
1463         struct ndr_push *push;
1464         enum ndr_err_code ndr_err;
1465         DATA_BLOB blob;
1466         struct wkssvc_NetrValidateName *r;
1467 
1468         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRVALIDATENAME];
1469 
1470         r = talloc(talloc_tos(), struct wkssvc_NetrValidateName);
1471         if (r == NULL) {
1472                 return false;
1473         }
1474 
1475         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1476                 talloc_free(r);
1477                 return false;
1478         }
1479 
1480         pull = ndr_pull_init_blob(&blob, r, NULL);
1481         if (pull == NULL) {
1482                 talloc_free(r);
1483                 return false;
1484         }
1485 
1486         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1487         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1488         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1489                 talloc_free(r);
1490                 return false;
1491         }
1492 
1493         if (DEBUGLEVEL >= 10) {
1494                 NDR_PRINT_IN_DEBUG(wkssvc_NetrValidateName, r);
1495         }
1496 
1497         r->out.result = _wkssvc_NetrValidateName(p, r);
1498 
1499         if (p->rng_fault_state) {
1500                 talloc_free(r);
1501                 /* Return true here, srv_pipe_hnd.c will take care */
1502                 return true;
1503         }
1504 
1505         if (DEBUGLEVEL >= 10) {
1506                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrValidateName, r);
1507         }
1508 
1509         push = ndr_push_init_ctx(r, NULL);
1510         if (push == NULL) {
1511                 talloc_free(r);
1512                 return false;
1513         }
1514 
1515         ndr_err = call->ndr_push(push, NDR_OUT, r);
1516         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1517                 talloc_free(r);
1518                 return false;
1519         }
1520 
1521         blob = ndr_push_blob(push);
1522         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1523                 talloc_free(r);
1524                 return false;
1525         }
1526 
1527         talloc_free(r);
1528 
1529         return true;
1530 }
1531 
1532 static bool api_wkssvc_NetrGetJoinInformation(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1533 {
1534         const struct ndr_interface_call *call;
1535         struct ndr_pull *pull;
1536         struct ndr_push *push;
1537         enum ndr_err_code ndr_err;
1538         DATA_BLOB blob;
1539         struct wkssvc_NetrGetJoinInformation *r;
1540 
1541         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRGETJOININFORMATION];
1542 
1543         r = talloc(talloc_tos(), struct wkssvc_NetrGetJoinInformation);
1544         if (r == NULL) {
1545                 return false;
1546         }
1547 
1548         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1549                 talloc_free(r);
1550                 return false;
1551         }
1552 
1553         pull = ndr_pull_init_blob(&blob, r, NULL);
1554         if (pull == NULL) {
1555                 talloc_free(r);
1556                 return false;
1557         }
1558 
1559         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1560         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1561         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1562                 talloc_free(r);
1563                 return false;
1564         }
1565 
1566         if (DEBUGLEVEL >= 10) {
1567                 NDR_PRINT_IN_DEBUG(wkssvc_NetrGetJoinInformation, r);
1568         }
1569 
1570         ZERO_STRUCT(r->out);
1571         r->out.name_buffer = r->in.name_buffer;
1572         r->out.name_type = talloc_zero(r, enum wkssvc_NetJoinStatus);
1573         if (r->out.name_type == NULL) {
1574                 talloc_free(r);
1575                 return false;
1576         }
1577 
1578         r->out.result = _wkssvc_NetrGetJoinInformation(p, r);
1579 
1580         if (p->rng_fault_state) {
1581                 talloc_free(r);
1582                 /* Return true here, srv_pipe_hnd.c will take care */
1583                 return true;
1584         }
1585 
1586         if (DEBUGLEVEL >= 10) {
1587                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrGetJoinInformation, r);
1588         }
1589 
1590         push = ndr_push_init_ctx(r, NULL);
1591         if (push == NULL) {
1592                 talloc_free(r);
1593                 return false;
1594         }
1595 
1596         ndr_err = call->ndr_push(push, NDR_OUT, r);
1597         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1598                 talloc_free(r);
1599                 return false;
1600         }
1601 
1602         blob = ndr_push_blob(push);
1603         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1604                 talloc_free(r);
1605                 return false;
1606         }
1607 
1608         talloc_free(r);
1609 
1610         return true;
1611 }
1612 
1613 static bool api_wkssvc_NetrGetJoinableOus(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1614 {
1615         const struct ndr_interface_call *call;
1616         struct ndr_pull *pull;
1617         struct ndr_push *push;
1618         enum ndr_err_code ndr_err;
1619         DATA_BLOB blob;
1620         struct wkssvc_NetrGetJoinableOus *r;
1621 
1622         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRGETJOINABLEOUS];
1623 
1624         r = talloc(talloc_tos(), struct wkssvc_NetrGetJoinableOus);
1625         if (r == NULL) {
1626                 return false;
1627         }
1628 
1629         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1630                 talloc_free(r);
1631                 return false;
1632         }
1633 
1634         pull = ndr_pull_init_blob(&blob, r, NULL);
1635         if (pull == NULL) {
1636                 talloc_free(r);
1637                 return false;
1638         }
1639 
1640         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1641         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1642         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1643                 talloc_free(r);
1644                 return false;
1645         }
1646 
1647         if (DEBUGLEVEL >= 10) {
1648                 NDR_PRINT_IN_DEBUG(wkssvc_NetrGetJoinableOus, r);
1649         }
1650 
1651         ZERO_STRUCT(r->out);
1652         r->out.num_ous = r->in.num_ous;
1653         r->out.ous = talloc_zero(r, const char **);
1654         if (r->out.ous == NULL) {
1655                 talloc_free(r);
1656                 return false;
1657         }
1658 
1659         r->out.result = _wkssvc_NetrGetJoinableOus(p, r);
1660 
1661         if (p->rng_fault_state) {
1662                 talloc_free(r);
1663                 /* Return true here, srv_pipe_hnd.c will take care */
1664                 return true;
1665         }
1666 
1667         if (DEBUGLEVEL >= 10) {
1668                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrGetJoinableOus, r);
1669         }
1670 
1671         push = ndr_push_init_ctx(r, NULL);
1672         if (push == NULL) {
1673                 talloc_free(r);
1674                 return false;
1675         }
1676 
1677         ndr_err = call->ndr_push(push, NDR_OUT, r);
1678         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1679                 talloc_free(r);
1680                 return false;
1681         }
1682 
1683         blob = ndr_push_blob(push);
1684         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1685                 talloc_free(r);
1686                 return false;
1687         }
1688 
1689         talloc_free(r);
1690 
1691         return true;
1692 }
1693 
1694 static bool api_wkssvc_NetrJoinDomain2(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1695 {
1696         const struct ndr_interface_call *call;
1697         struct ndr_pull *pull;
1698         struct ndr_push *push;
1699         enum ndr_err_code ndr_err;
1700         DATA_BLOB blob;
1701         struct wkssvc_NetrJoinDomain2 *r;
1702 
1703         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRJOINDOMAIN2];
1704 
1705         r = talloc(talloc_tos(), struct wkssvc_NetrJoinDomain2);
1706         if (r == NULL) {
1707                 return false;
1708         }
1709 
1710         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1711                 talloc_free(r);
1712                 return false;
1713         }
1714 
1715         pull = ndr_pull_init_blob(&blob, r, NULL);
1716         if (pull == NULL) {
1717                 talloc_free(r);
1718                 return false;
1719         }
1720 
1721         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1722         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1723         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1724                 talloc_free(r);
1725                 return false;
1726         }
1727 
1728         if (DEBUGLEVEL >= 10) {
1729                 NDR_PRINT_IN_DEBUG(wkssvc_NetrJoinDomain2, r);
1730         }
1731 
1732         r->out.result = _wkssvc_NetrJoinDomain2(p, r);
1733 
1734         if (p->rng_fault_state) {
1735                 talloc_free(r);
1736                 /* Return true here, srv_pipe_hnd.c will take care */
1737                 return true;
1738         }
1739 
1740         if (DEBUGLEVEL >= 10) {
1741                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrJoinDomain2, r);
1742         }
1743 
1744         push = ndr_push_init_ctx(r, NULL);
1745         if (push == NULL) {
1746                 talloc_free(r);
1747                 return false;
1748         }
1749 
1750         ndr_err = call->ndr_push(push, NDR_OUT, r);
1751         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1752                 talloc_free(r);
1753                 return false;
1754         }
1755 
1756         blob = ndr_push_blob(push);
1757         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1758                 talloc_free(r);
1759                 return false;
1760         }
1761 
1762         talloc_free(r);
1763 
1764         return true;
1765 }
1766 
1767 static bool api_wkssvc_NetrUnjoinDomain2(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1768 {
1769         const struct ndr_interface_call *call;
1770         struct ndr_pull *pull;
1771         struct ndr_push *push;
1772         enum ndr_err_code ndr_err;
1773         DATA_BLOB blob;
1774         struct wkssvc_NetrUnjoinDomain2 *r;
1775 
1776         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRUNJOINDOMAIN2];
1777 
1778         r = talloc(talloc_tos(), struct wkssvc_NetrUnjoinDomain2);
1779         if (r == NULL) {
1780                 return false;
1781         }
1782 
1783         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1784                 talloc_free(r);
1785                 return false;
1786         }
1787 
1788         pull = ndr_pull_init_blob(&blob, r, NULL);
1789         if (pull == NULL) {
1790                 talloc_free(r);
1791                 return false;
1792         }
1793 
1794         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1795         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1796         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1797                 talloc_free(r);
1798                 return false;
1799         }
1800 
1801         if (DEBUGLEVEL >= 10) {
1802                 NDR_PRINT_IN_DEBUG(wkssvc_NetrUnjoinDomain2, r);
1803         }
1804 
1805         r->out.result = _wkssvc_NetrUnjoinDomain2(p, r);
1806 
1807         if (p->rng_fault_state) {
1808                 talloc_free(r);
1809                 /* Return true here, srv_pipe_hnd.c will take care */
1810                 return true;
1811         }
1812 
1813         if (DEBUGLEVEL >= 10) {
1814                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrUnjoinDomain2, r);
1815         }
1816 
1817         push = ndr_push_init_ctx(r, NULL);
1818         if (push == NULL) {
1819                 talloc_free(r);
1820                 return false;
1821         }
1822 
1823         ndr_err = call->ndr_push(push, NDR_OUT, r);
1824         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1825                 talloc_free(r);
1826                 return false;
1827         }
1828 
1829         blob = ndr_push_blob(push);
1830         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1831                 talloc_free(r);
1832                 return false;
1833         }
1834 
1835         talloc_free(r);
1836 
1837         return true;
1838 }
1839 
1840 static bool api_wkssvc_NetrRenameMachineInDomain2(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1841 {
1842         const struct ndr_interface_call *call;
1843         struct ndr_pull *pull;
1844         struct ndr_push *push;
1845         enum ndr_err_code ndr_err;
1846         DATA_BLOB blob;
1847         struct wkssvc_NetrRenameMachineInDomain2 *r;
1848 
1849         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN2];
1850 
1851         r = talloc(talloc_tos(), struct wkssvc_NetrRenameMachineInDomain2);
1852         if (r == NULL) {
1853                 return false;
1854         }
1855 
1856         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1857                 talloc_free(r);
1858                 return false;
1859         }
1860 
1861         pull = ndr_pull_init_blob(&blob, r, NULL);
1862         if (pull == NULL) {
1863                 talloc_free(r);
1864                 return false;
1865         }
1866 
1867         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1868         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1869         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1870                 talloc_free(r);
1871                 return false;
1872         }
1873 
1874         if (DEBUGLEVEL >= 10) {
1875                 NDR_PRINT_IN_DEBUG(wkssvc_NetrRenameMachineInDomain2, r);
1876         }
1877 
1878         r->out.result = _wkssvc_NetrRenameMachineInDomain2(p, r);
1879 
1880         if (p->rng_fault_state) {
1881                 talloc_free(r);
1882                 /* Return true here, srv_pipe_hnd.c will take care */
1883                 return true;
1884         }
1885 
1886         if (DEBUGLEVEL >= 10) {
1887                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrRenameMachineInDomain2, r);
1888         }
1889 
1890         push = ndr_push_init_ctx(r, NULL);
1891         if (push == NULL) {
1892                 talloc_free(r);
1893                 return false;
1894         }
1895 
1896         ndr_err = call->ndr_push(push, NDR_OUT, r);
1897         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1898                 talloc_free(r);
1899                 return false;
1900         }
1901 
1902         blob = ndr_push_blob(push);
1903         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1904                 talloc_free(r);
1905                 return false;
1906         }
1907 
1908         talloc_free(r);
1909 
1910         return true;
1911 }
1912 
1913 static bool api_wkssvc_NetrValidateName2(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1914 {
1915         const struct ndr_interface_call *call;
1916         struct ndr_pull *pull;
1917         struct ndr_push *push;
1918         enum ndr_err_code ndr_err;
1919         DATA_BLOB blob;
1920         struct wkssvc_NetrValidateName2 *r;
1921 
1922         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRVALIDATENAME2];
1923 
1924         r = talloc(talloc_tos(), struct wkssvc_NetrValidateName2);
1925         if (r == NULL) {
1926                 return false;
1927         }
1928 
1929         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
1930                 talloc_free(r);
1931                 return false;
1932         }
1933 
1934         pull = ndr_pull_init_blob(&blob, r, NULL);
1935         if (pull == NULL) {
1936                 talloc_free(r);
1937                 return false;
1938         }
1939 
1940         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
1941         ndr_err = call->ndr_pull(pull, NDR_IN, r);
1942         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1943                 talloc_free(r);
1944                 return false;
1945         }
1946 
1947         if (DEBUGLEVEL >= 10) {
1948                 NDR_PRINT_IN_DEBUG(wkssvc_NetrValidateName2, r);
1949         }
1950 
1951         r->out.result = _wkssvc_NetrValidateName2(p, r);
1952 
1953         if (p->rng_fault_state) {
1954                 talloc_free(r);
1955                 /* Return true here, srv_pipe_hnd.c will take care */
1956                 return true;
1957         }
1958 
1959         if (DEBUGLEVEL >= 10) {
1960                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrValidateName2, r);
1961         }
1962 
1963         push = ndr_push_init_ctx(r, NULL);
1964         if (push == NULL) {
1965                 talloc_free(r);
1966                 return false;
1967         }
1968 
1969         ndr_err = call->ndr_push(push, NDR_OUT, r);
1970         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
1971                 talloc_free(r);
1972                 return false;
1973         }
1974 
1975         blob = ndr_push_blob(push);
1976         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
1977                 talloc_free(r);
1978                 return false;
1979         }
1980 
1981         talloc_free(r);
1982 
1983         return true;
1984 }
1985 
1986 static bool api_wkssvc_NetrGetJoinableOus2(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
1987 {
1988         const struct ndr_interface_call *call;
1989         struct ndr_pull *pull;
1990         struct ndr_push *push;
1991         enum ndr_err_code ndr_err;
1992         DATA_BLOB blob;
1993         struct wkssvc_NetrGetJoinableOus2 *r;
1994 
1995         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRGETJOINABLEOUS2];
1996 
1997         r = talloc(talloc_tos(), struct wkssvc_NetrGetJoinableOus2);
1998         if (r == NULL) {
1999                 return false;
2000         }
2001 
2002         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2003                 talloc_free(r);
2004                 return false;
2005         }
2006 
2007         pull = ndr_pull_init_blob(&blob, r, NULL);
2008         if (pull == NULL) {
2009                 talloc_free(r);
2010                 return false;
2011         }
2012 
2013         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2014         ndr_err = call->ndr_pull(pull, NDR_IN, r);
2015         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2016                 talloc_free(r);
2017                 return false;
2018         }
2019 
2020         if (DEBUGLEVEL >= 10) {
2021                 NDR_PRINT_IN_DEBUG(wkssvc_NetrGetJoinableOus2, r);
2022         }
2023 
2024         ZERO_STRUCT(r->out);
2025         r->out.num_ous = r->in.num_ous;
2026         r->out.ous = talloc_zero(r, const char **);
2027         if (r->out.ous == NULL) {
2028                 talloc_free(r);
2029                 return false;
2030         }
2031 
2032         r->out.result = _wkssvc_NetrGetJoinableOus2(p, r);
2033 
2034         if (p->rng_fault_state) {
2035                 talloc_free(r);
2036                 /* Return true here, srv_pipe_hnd.c will take care */
2037                 return true;
2038         }
2039 
2040         if (DEBUGLEVEL >= 10) {
2041                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrGetJoinableOus2, r);
2042         }
2043 
2044         push = ndr_push_init_ctx(r, NULL);
2045         if (push == NULL) {
2046                 talloc_free(r);
2047                 return false;
2048         }
2049 
2050         ndr_err = call->ndr_push(push, NDR_OUT, r);
2051         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2052                 talloc_free(r);
2053                 return false;
2054         }
2055 
2056         blob = ndr_push_blob(push);
2057         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
2058                 talloc_free(r);
2059                 return false;
2060         }
2061 
2062         talloc_free(r);
2063 
2064         return true;
2065 }
2066 
2067 static bool api_wkssvc_NetrAddAlternateComputerName(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
2068 {
2069         const struct ndr_interface_call *call;
2070         struct ndr_pull *pull;
2071         struct ndr_push *push;
2072         enum ndr_err_code ndr_err;
2073         DATA_BLOB blob;
2074         struct wkssvc_NetrAddAlternateComputerName *r;
2075 
2076         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRADDALTERNATECOMPUTERNAME];
2077 
2078         r = talloc(talloc_tos(), struct wkssvc_NetrAddAlternateComputerName);
2079         if (r == NULL) {
2080                 return false;
2081         }
2082 
2083         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2084                 talloc_free(r);
2085                 return false;
2086         }
2087 
2088         pull = ndr_pull_init_blob(&blob, r, NULL);
2089         if (pull == NULL) {
2090                 talloc_free(r);
2091                 return false;
2092         }
2093 
2094         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2095         ndr_err = call->ndr_pull(pull, NDR_IN, r);
2096         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2097                 talloc_free(r);
2098                 return false;
2099         }
2100 
2101         if (DEBUGLEVEL >= 10) {
2102                 NDR_PRINT_IN_DEBUG(wkssvc_NetrAddAlternateComputerName, r);
2103         }
2104 
2105         r->out.result = _wkssvc_NetrAddAlternateComputerName(p, r);
2106 
2107         if (p->rng_fault_state) {
2108                 talloc_free(r);
2109                 /* Return true here, srv_pipe_hnd.c will take care */
2110                 return true;
2111         }
2112 
2113         if (DEBUGLEVEL >= 10) {
2114                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrAddAlternateComputerName, r);
2115         }
2116 
2117         push = ndr_push_init_ctx(r, NULL);
2118         if (push == NULL) {
2119                 talloc_free(r);
2120                 return false;
2121         }
2122 
2123         ndr_err = call->ndr_push(push, NDR_OUT, r);
2124         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2125                 talloc_free(r);
2126                 return false;
2127         }
2128 
2129         blob = ndr_push_blob(push);
2130         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
2131                 talloc_free(r);
2132                 return false;
2133         }
2134 
2135         talloc_free(r);
2136 
2137         return true;
2138 }
2139 
2140 static bool api_wkssvc_NetrRemoveAlternateComputerName(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
2141 {
2142         const struct ndr_interface_call *call;
2143         struct ndr_pull *pull;
2144         struct ndr_push *push;
2145         enum ndr_err_code ndr_err;
2146         DATA_BLOB blob;
2147         struct wkssvc_NetrRemoveAlternateComputerName *r;
2148 
2149         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME];
2150 
2151         r = talloc(talloc_tos(), struct wkssvc_NetrRemoveAlternateComputerName);
2152         if (r == NULL) {
2153                 return false;
2154         }
2155 
2156         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2157                 talloc_free(r);
2158                 return false;
2159         }
2160 
2161         pull = ndr_pull_init_blob(&blob, r, NULL);
2162         if (pull == NULL) {
2163                 talloc_free(r);
2164                 return false;
2165         }
2166 
2167         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2168         ndr_err = call->ndr_pull(pull, NDR_IN, r);
2169         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2170                 talloc_free(r);
2171                 return false;
2172         }
2173 
2174         if (DEBUGLEVEL >= 10) {
2175                 NDR_PRINT_IN_DEBUG(wkssvc_NetrRemoveAlternateComputerName, r);
2176         }
2177 
2178         r->out.result = _wkssvc_NetrRemoveAlternateComputerName(p, r);
2179 
2180         if (p->rng_fault_state) {
2181                 talloc_free(r);
2182                 /* Return true here, srv_pipe_hnd.c will take care */
2183                 return true;
2184         }
2185 
2186         if (DEBUGLEVEL >= 10) {
2187                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrRemoveAlternateComputerName, r);
2188         }
2189 
2190         push = ndr_push_init_ctx(r, NULL);
2191         if (push == NULL) {
2192                 talloc_free(r);
2193                 return false;
2194         }
2195 
2196         ndr_err = call->ndr_push(push, NDR_OUT, r);
2197         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2198                 talloc_free(r);
2199                 return false;
2200         }
2201 
2202         blob = ndr_push_blob(push);
2203         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
2204                 talloc_free(r);
2205                 return false;
2206         }
2207 
2208         talloc_free(r);
2209 
2210         return true;
2211 }
2212 
2213 static bool api_wkssvc_NetrSetPrimaryComputername(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
2214 {
2215         const struct ndr_interface_call *call;
2216         struct ndr_pull *pull;
2217         struct ndr_push *push;
2218         enum ndr_err_code ndr_err;
2219         DATA_BLOB blob;
2220         struct wkssvc_NetrSetPrimaryComputername *r;
2221 
2222         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRSETPRIMARYCOMPUTERNAME];
2223 
2224         r = talloc(talloc_tos(), struct wkssvc_NetrSetPrimaryComputername);
2225         if (r == NULL) {
2226                 return false;
2227         }
2228 
2229         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2230                 talloc_free(r);
2231                 return false;
2232         }
2233 
2234         pull = ndr_pull_init_blob(&blob, r, NULL);
2235         if (pull == NULL) {
2236                 talloc_free(r);
2237                 return false;
2238         }
2239 
2240         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2241         ndr_err = call->ndr_pull(pull, NDR_IN, r);
2242         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2243                 talloc_free(r);
2244                 return false;
2245         }
2246 
2247         if (DEBUGLEVEL >= 10) {
2248                 NDR_PRINT_IN_DEBUG(wkssvc_NetrSetPrimaryComputername, r);
2249         }
2250 
2251         r->out.result = _wkssvc_NetrSetPrimaryComputername(p, r);
2252 
2253         if (p->rng_fault_state) {
2254                 talloc_free(r);
2255                 /* Return true here, srv_pipe_hnd.c will take care */
2256                 return true;
2257         }
2258 
2259         if (DEBUGLEVEL >= 10) {
2260                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrSetPrimaryComputername, r);
2261         }
2262 
2263         push = ndr_push_init_ctx(r, NULL);
2264         if (push == NULL) {
2265                 talloc_free(r);
2266                 return false;
2267         }
2268 
2269         ndr_err = call->ndr_push(push, NDR_OUT, r);
2270         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2271                 talloc_free(r);
2272                 return false;
2273         }
2274 
2275         blob = ndr_push_blob(push);
2276         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
2277                 talloc_free(r);
2278                 return false;
2279         }
2280 
2281         talloc_free(r);
2282 
2283         return true;
2284 }
2285 
2286 static bool api_wkssvc_NetrEnumerateComputerNames(pipes_struct *p)
     /* [<][>][^][v][top][bottom][index][help] */
2287 {
2288         const struct ndr_interface_call *call;
2289         struct ndr_pull *pull;
2290         struct ndr_push *push;
2291         enum ndr_err_code ndr_err;
2292         DATA_BLOB blob;
2293         struct wkssvc_NetrEnumerateComputerNames *r;
2294 
2295         call = &ndr_table_wkssvc.calls[NDR_WKSSVC_NETRENUMERATECOMPUTERNAMES];
2296 
2297         r = talloc(talloc_tos(), struct wkssvc_NetrEnumerateComputerNames);
2298         if (r == NULL) {
2299                 return false;
2300         }
2301 
2302         if (!prs_data_blob(&p->in_data.data, &blob, r)) {
2303                 talloc_free(r);
2304                 return false;
2305         }
2306 
2307         pull = ndr_pull_init_blob(&blob, r, NULL);
2308         if (pull == NULL) {
2309                 talloc_free(r);
2310                 return false;
2311         }
2312 
2313         pull->flags |= LIBNDR_FLAG_REF_ALLOC;
2314         ndr_err = call->ndr_pull(pull, NDR_IN, r);
2315         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2316                 talloc_free(r);
2317                 return false;
2318         }
2319 
2320         if (DEBUGLEVEL >= 10) {
2321                 NDR_PRINT_IN_DEBUG(wkssvc_NetrEnumerateComputerNames, r);
2322         }
2323 
2324         ZERO_STRUCT(r->out);
2325         r->out.ctr = talloc_zero(r, struct wkssvc_ComputerNamesCtr *);
2326         if (r->out.ctr == NULL) {
2327                 talloc_free(r);
2328                 return false;
2329         }
2330 
2331         r->out.result = _wkssvc_NetrEnumerateComputerNames(p, r);
2332 
2333         if (p->rng_fault_state) {
2334                 talloc_free(r);
2335                 /* Return true here, srv_pipe_hnd.c will take care */
2336                 return true;
2337         }
2338 
2339         if (DEBUGLEVEL >= 10) {
2340                 NDR_PRINT_OUT_DEBUG(wkssvc_NetrEnumerateComputerNames, r);
2341         }
2342 
2343         push = ndr_push_init_ctx(r, NULL);
2344         if (push == NULL) {
2345                 talloc_free(r);
2346                 return false;
2347         }
2348 
2349         ndr_err = call->ndr_push(push, NDR_OUT, r);
2350         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
2351                 talloc_free(r);
2352                 return false;
2353         }
2354 
2355         blob = ndr_push_blob(push);
2356         if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
2357                 talloc_free(r);
2358                 return false;
2359         }
2360 
2361         talloc_free(r);
2362 
2363         return true;
2364 }
2365 
2366 
2367 /* Tables */
2368 static struct api_struct api_wkssvc_cmds[] = 
2369 {
2370         {"WKSSVC_NETWKSTAGETINFO", NDR_WKSSVC_NETWKSTAGETINFO, api_wkssvc_NetWkstaGetInfo},
2371         {"WKSSVC_NETWKSTASETINFO", NDR_WKSSVC_NETWKSTASETINFO, api_wkssvc_NetWkstaSetInfo},
2372         {"WKSSVC_NETWKSTAENUMUSERS", NDR_WKSSVC_NETWKSTAENUMUSERS, api_wkssvc_NetWkstaEnumUsers},
2373         {"WKSSVC_NETRWKSTAUSERGETINFO", NDR_WKSSVC_NETRWKSTAUSERGETINFO, api_wkssvc_NetrWkstaUserGetInfo},
2374         {"WKSSVC_NETRWKSTAUSERSETINFO", NDR_WKSSVC_NETRWKSTAUSERSETINFO, api_wkssvc_NetrWkstaUserSetInfo},
2375         {"WKSSVC_NETWKSTATRANSPORTENUM", NDR_WKSSVC_NETWKSTATRANSPORTENUM, api_wkssvc_NetWkstaTransportEnum},
2376         {"WKSSVC_NETRWKSTATRANSPORTADD", NDR_WKSSVC_NETRWKSTATRANSPORTADD, api_wkssvc_NetrWkstaTransportAdd},
2377         {"WKSSVC_NETRWKSTATRANSPORTDEL", NDR_WKSSVC_NETRWKSTATRANSPORTDEL, api_wkssvc_NetrWkstaTransportDel},
2378         {"WKSSVC_NETRUSEADD", NDR_WKSSVC_NETRUSEADD, api_wkssvc_NetrUseAdd},
2379         {"WKSSVC_NETRUSEGETINFO", NDR_WKSSVC_NETRUSEGETINFO, api_wkssvc_NetrUseGetInfo},
2380         {"WKSSVC_NETRUSEDEL", NDR_WKSSVC_NETRUSEDEL, api_wkssvc_NetrUseDel},
2381         {"WKSSVC_NETRUSEENUM", NDR_WKSSVC_NETRUSEENUM, api_wkssvc_NetrUseEnum},
2382         {"WKSSVC_NETRMESSAGEBUFFERSEND", NDR_WKSSVC_NETRMESSAGEBUFFERSEND, api_wkssvc_NetrMessageBufferSend},
2383         {"WKSSVC_NETRWORKSTATIONSTATISTICSGET", NDR_WKSSVC_NETRWORKSTATIONSTATISTICSGET, api_wkssvc_NetrWorkstationStatisticsGet},
2384         {"WKSSVC_NETRLOGONDOMAINNAMEADD", NDR_WKSSVC_NETRLOGONDOMAINNAMEADD, api_wkssvc_NetrLogonDomainNameAdd},
2385         {"WKSSVC_NETRLOGONDOMAINNAMEDEL", NDR_WKSSVC_NETRLOGONDOMAINNAMEDEL, api_wkssvc_NetrLogonDomainNameDel},
2386         {"WKSSVC_NETRJOINDOMAIN", NDR_WKSSVC_NETRJOINDOMAIN, api_wkssvc_NetrJoinDomain},
2387         {"WKSSVC_NETRUNJOINDOMAIN", NDR_WKSSVC_NETRUNJOINDOMAIN, api_wkssvc_NetrUnjoinDomain},
2388         {"WKSSVC_NETRRENAMEMACHINEINDOMAIN", NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN, api_wkssvc_NetrRenameMachineInDomain},
2389         {"WKSSVC_NETRVALIDATENAME", NDR_WKSSVC_NETRVALIDATENAME, api_wkssvc_NetrValidateName},
2390         {"WKSSVC_NETRGETJOININFORMATION", NDR_WKSSVC_NETRGETJOININFORMATION, api_wkssvc_NetrGetJoinInformation},
2391         {"WKSSVC_NETRGETJOINABLEOUS", NDR_WKSSVC_NETRGETJOINABLEOUS, api_wkssvc_NetrGetJoinableOus},
2392         {"WKSSVC_NETRJOINDOMAIN2", NDR_WKSSVC_NETRJOINDOMAIN2, api_wkssvc_NetrJoinDomain2},
2393         {"WKSSVC_NETRUNJOINDOMAIN2", NDR_WKSSVC_NETRUNJOINDOMAIN2, api_wkssvc_NetrUnjoinDomain2},
2394         {"WKSSVC_NETRRENAMEMACHINEINDOMAIN2", NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN2, api_wkssvc_NetrRenameMachineInDomain2},
2395         {"WKSSVC_NETRVALIDATENAME2", NDR_WKSSVC_NETRVALIDATENAME2, api_wkssvc_NetrValidateName2},
2396         {"WKSSVC_NETRGETJOINABLEOUS2", NDR_WKSSVC_NETRGETJOINABLEOUS2, api_wkssvc_NetrGetJoinableOus2},
2397         {"WKSSVC_NETRADDALTERNATECOMPUTERNAME", NDR_WKSSVC_NETRADDALTERNATECOMPUTERNAME, api_wkssvc_NetrAddAlternateComputerName},
2398         {"WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME", NDR_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME, api_wkssvc_NetrRemoveAlternateComputerName},
2399         {"WKSSVC_NETRSETPRIMARYCOMPUTERNAME", NDR_WKSSVC_NETRSETPRIMARYCOMPUTERNAME, api_wkssvc_NetrSetPrimaryComputername},
2400         {"WKSSVC_NETRENUMERATECOMPUTERNAMES", NDR_WKSSVC_NETRENUMERATECOMPUTERNAMES, api_wkssvc_NetrEnumerateComputerNames},
2401 };
2402 
2403 void wkssvc_get_pipe_fns(struct api_struct **fns, int *n_fns)
     /* [<][>][^][v][top][bottom][index][help] */
2404 {
2405         *fns = api_wkssvc_cmds;
2406         *n_fns = sizeof(api_wkssvc_cmds) / sizeof(struct api_struct);
2407 }
2408 
2409 NTSTATUS rpc_wkssvc_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r)
     /* [<][>][^][v][top][bottom][index][help] */
2410 {
2411         if (cli->pipes_struct == NULL) {
2412                 return NT_STATUS_INVALID_PARAMETER;
2413         }
2414 
2415         switch (opnum)
2416         {
2417                 case NDR_WKSSVC_NETWKSTAGETINFO: {
2418                         struct wkssvc_NetWkstaGetInfo *r = (struct wkssvc_NetWkstaGetInfo *)_r;
2419                         ZERO_STRUCT(r->out);
2420                         r->out.info = talloc_zero(mem_ctx, union wkssvc_NetWkstaInfo);
2421                         if (r->out.info == NULL) {
2422                         return NT_STATUS_NO_MEMORY;
2423                         }
2424 
2425                         r->out.result = _wkssvc_NetWkstaGetInfo(cli->pipes_struct, r);
2426                         return NT_STATUS_OK;
2427                 }
2428 
2429                 case NDR_WKSSVC_NETWKSTASETINFO: {
2430                         struct wkssvc_NetWkstaSetInfo *r = (struct wkssvc_NetWkstaSetInfo *)_r;
2431                         ZERO_STRUCT(r->out);
2432                         r->out.parm_error = r->in.parm_error;
2433                         r->out.result = _wkssvc_NetWkstaSetInfo(cli->pipes_struct, r);
2434                         return NT_STATUS_OK;
2435                 }
2436 
2437                 case NDR_WKSSVC_NETWKSTAENUMUSERS: {
2438                         struct wkssvc_NetWkstaEnumUsers *r = (struct wkssvc_NetWkstaEnumUsers *)_r;
2439                         ZERO_STRUCT(r->out);
2440                         r->out.info = r->in.info;
2441                         r->out.resume_handle = r->in.resume_handle;
2442                         r->out.entries_read = talloc_zero(mem_ctx, uint32_t);
2443                         if (r->out.entries_read == NULL) {
2444                         return NT_STATUS_NO_MEMORY;
2445                         }
2446 
2447                         r->out.result = _wkssvc_NetWkstaEnumUsers(cli->pipes_struct, r);
2448                         return NT_STATUS_OK;
2449                 }
2450 
2451                 case NDR_WKSSVC_NETRWKSTAUSERGETINFO: {
2452                         struct wkssvc_NetrWkstaUserGetInfo *r = (struct wkssvc_NetrWkstaUserGetInfo *)_r;
2453                         ZERO_STRUCT(r->out);
2454                         r->out.info = talloc_zero(mem_ctx, union wkssvc_NetrWkstaUserInfo);
2455                         if (r->out.info == NULL) {
2456                         return NT_STATUS_NO_MEMORY;
2457                         }
2458 
2459                         r->out.result = _wkssvc_NetrWkstaUserGetInfo(cli->pipes_struct, r);
2460                         return NT_STATUS_OK;
2461                 }
2462 
2463                 case NDR_WKSSVC_NETRWKSTAUSERSETINFO: {
2464                         struct wkssvc_NetrWkstaUserSetInfo *r = (struct wkssvc_NetrWkstaUserSetInfo *)_r;
2465                         ZERO_STRUCT(r->out);
2466                         r->out.parm_err = r->in.parm_err;
2467                         r->out.result = _wkssvc_NetrWkstaUserSetInfo(cli->pipes_struct, r);
2468                         return NT_STATUS_OK;
2469                 }
2470 
2471                 case NDR_WKSSVC_NETWKSTATRANSPORTENUM: {
2472                         struct wkssvc_NetWkstaTransportEnum *r = (struct wkssvc_NetWkstaTransportEnum *)_r;
2473                         ZERO_STRUCT(r->out);
2474                         r->out.info = r->in.info;
2475                         r->out.resume_handle = r->in.resume_handle;
2476                         r->out.total_entries = talloc_zero(mem_ctx, uint32_t);
2477                         if (r->out.total_entries == NULL) {
2478                         return NT_STATUS_NO_MEMORY;
2479                         }
2480 
2481                         r->out.result = _wkssvc_NetWkstaTransportEnum(cli->pipes_struct, r);
2482                         return NT_STATUS_OK;
2483                 }
2484 
2485                 case NDR_WKSSVC_NETRWKSTATRANSPORTADD: {
2486                         struct wkssvc_NetrWkstaTransportAdd *r = (struct wkssvc_NetrWkstaTransportAdd *)_r;
2487                         ZERO_STRUCT(r->out);
2488                         r->out.parm_err = r->in.parm_err;
2489                         r->out.result = _wkssvc_NetrWkstaTransportAdd(cli->pipes_struct, r);
2490                         return NT_STATUS_OK;
2491                 }
2492 
2493                 case NDR_WKSSVC_NETRWKSTATRANSPORTDEL: {
2494                         struct wkssvc_NetrWkstaTransportDel *r = (struct wkssvc_NetrWkstaTransportDel *)_r;
2495                         r->out.result = _wkssvc_NetrWkstaTransportDel(cli->pipes_struct, r);
2496                         return NT_STATUS_OK;
2497                 }
2498 
2499                 case NDR_WKSSVC_NETRUSEADD: {
2500                         struct wkssvc_NetrUseAdd *r = (struct wkssvc_NetrUseAdd *)_r;
2501                         ZERO_STRUCT(r->out);
2502                         r->out.parm_err = r->in.parm_err;
2503                         r->out.result = _wkssvc_NetrUseAdd(cli->pipes_struct, r);
2504                         return NT_STATUS_OK;
2505                 }
2506 
2507                 case NDR_WKSSVC_NETRUSEGETINFO: {
2508                         struct wkssvc_NetrUseGetInfo *r = (struct wkssvc_NetrUseGetInfo *)_r;
2509                         ZERO_STRUCT(r->out);
2510                         r->out.ctr = talloc_zero(mem_ctx, union wkssvc_NetrUseGetInfoCtr);
2511                         if (r->out.ctr == NULL) {
2512                         return NT_STATUS_NO_MEMORY;
2513                         }
2514 
2515                         r->out.result = _wkssvc_NetrUseGetInfo(cli->pipes_struct, r);
2516                         return NT_STATUS_OK;
2517                 }
2518 
2519                 case NDR_WKSSVC_NETRUSEDEL: {
2520                         struct wkssvc_NetrUseDel *r = (struct wkssvc_NetrUseDel *)_r;
2521                         r->out.result = _wkssvc_NetrUseDel(cli->pipes_struct, r);
2522                         return NT_STATUS_OK;
2523                 }
2524 
2525                 case NDR_WKSSVC_NETRUSEENUM: {
2526                         struct wkssvc_NetrUseEnum *r = (struct wkssvc_NetrUseEnum *)_r;
2527                         ZERO_STRUCT(r->out);
2528                         r->out.info = r->in.info;
2529                         r->out.resume_handle = r->in.resume_handle;
2530                         r->out.entries_read = talloc_zero(mem_ctx, uint32_t);
2531                         if (r->out.entries_read == NULL) {
2532                         return NT_STATUS_NO_MEMORY;
2533                         }
2534 
2535                         r->out.result = _wkssvc_NetrUseEnum(cli->pipes_struct, r);
2536                         return NT_STATUS_OK;
2537                 }
2538 
2539                 case NDR_WKSSVC_NETRMESSAGEBUFFERSEND: {
2540                         struct wkssvc_NetrMessageBufferSend *r = (struct wkssvc_NetrMessageBufferSend *)_r;
2541                         r->out.result = _wkssvc_NetrMessageBufferSend(cli->pipes_struct, r);
2542                         return NT_STATUS_OK;
2543                 }
2544 
2545                 case NDR_WKSSVC_NETRWORKSTATIONSTATISTICSGET: {
2546                         struct wkssvc_NetrWorkstationStatisticsGet *r = (struct wkssvc_NetrWorkstationStatisticsGet *)_r;
2547                         ZERO_STRUCT(r->out);
2548                         r->out.info = talloc_zero(mem_ctx, struct wkssvc_NetrWorkstationStatistics *);
2549                         if (r->out.info == NULL) {
2550                         return NT_STATUS_NO_MEMORY;
2551                         }
2552 
2553                         r->out.result = _wkssvc_NetrWorkstationStatisticsGet(cli->pipes_struct, r);
2554                         return NT_STATUS_OK;
2555                 }
2556 
2557                 case NDR_WKSSVC_NETRLOGONDOMAINNAMEADD: {
2558                         struct wkssvc_NetrLogonDomainNameAdd *r = (struct wkssvc_NetrLogonDomainNameAdd *)_r;
2559                         r->out.result = _wkssvc_NetrLogonDomainNameAdd(cli->pipes_struct, r);
2560                         return NT_STATUS_OK;
2561                 }
2562 
2563                 case NDR_WKSSVC_NETRLOGONDOMAINNAMEDEL: {
2564                         struct wkssvc_NetrLogonDomainNameDel *r = (struct wkssvc_NetrLogonDomainNameDel *)_r;
2565                         r->out.result = _wkssvc_NetrLogonDomainNameDel(cli->pipes_struct, r);
2566                         return NT_STATUS_OK;
2567                 }
2568 
2569                 case NDR_WKSSVC_NETRJOINDOMAIN: {
2570                         struct wkssvc_NetrJoinDomain *r = (struct wkssvc_NetrJoinDomain *)_r;
2571                         r->out.result = _wkssvc_NetrJoinDomain(cli->pipes_struct, r);
2572                         return NT_STATUS_OK;
2573                 }
2574 
2575                 case NDR_WKSSVC_NETRUNJOINDOMAIN: {
2576                         struct wkssvc_NetrUnjoinDomain *r = (struct wkssvc_NetrUnjoinDomain *)_r;
2577                         r->out.result = _wkssvc_NetrUnjoinDomain(cli->pipes_struct, r);
2578                         return NT_STATUS_OK;
2579                 }
2580 
2581                 case NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN: {
2582                         struct wkssvc_NetrRenameMachineInDomain *r = (struct wkssvc_NetrRenameMachineInDomain *)_r;
2583                         r->out.result = _wkssvc_NetrRenameMachineInDomain(cli->pipes_struct, r);
2584                         return NT_STATUS_OK;
2585                 }
2586 
2587                 case NDR_WKSSVC_NETRVALIDATENAME: {
2588                         struct wkssvc_NetrValidateName *r = (struct wkssvc_NetrValidateName *)_r;
2589                         r->out.result = _wkssvc_NetrValidateName(cli->pipes_struct, r);
2590                         return NT_STATUS_OK;
2591                 }
2592 
2593                 case NDR_WKSSVC_NETRGETJOININFORMATION: {
2594                         struct wkssvc_NetrGetJoinInformation *r = (struct wkssvc_NetrGetJoinInformation *)_r;
2595                         ZERO_STRUCT(r->out);
2596                         r->out.name_buffer = r->in.name_buffer;
2597                         r->out.name_type = talloc_zero(mem_ctx, enum wkssvc_NetJoinStatus);
2598                         if (r->out.name_type == NULL) {
2599                         return NT_STATUS_NO_MEMORY;
2600                         }
2601 
2602                         r->out.result = _wkssvc_NetrGetJoinInformation(cli->pipes_struct, r);
2603                         return NT_STATUS_OK;
2604                 }
2605 
2606                 case NDR_WKSSVC_NETRGETJOINABLEOUS: {
2607                         struct wkssvc_NetrGetJoinableOus *r = (struct wkssvc_NetrGetJoinableOus *)_r;
2608                         ZERO_STRUCT(r->out);
2609                         r->out.num_ous = r->in.num_ous;
2610                         r->out.ous = talloc_zero(mem_ctx, const char **);
2611                         if (r->out.ous == NULL) {
2612                         return NT_STATUS_NO_MEMORY;
2613                         }
2614 
2615                         r->out.result = _wkssvc_NetrGetJoinableOus(cli->pipes_struct, r);
2616                         return NT_STATUS_OK;
2617                 }
2618 
2619                 case NDR_WKSSVC_NETRJOINDOMAIN2: {
2620                         struct wkssvc_NetrJoinDomain2 *r = (struct wkssvc_NetrJoinDomain2 *)_r;
2621                         r->out.result = _wkssvc_NetrJoinDomain2(cli->pipes_struct, r);
2622                         return NT_STATUS_OK;
2623                 }
2624 
2625                 case NDR_WKSSVC_NETRUNJOINDOMAIN2: {
2626                         struct wkssvc_NetrUnjoinDomain2 *r = (struct wkssvc_NetrUnjoinDomain2 *)_r;
2627                         r->out.result = _wkssvc_NetrUnjoinDomain2(cli->pipes_struct, r);
2628                         return NT_STATUS_OK;
2629                 }
2630 
2631                 case NDR_WKSSVC_NETRRENAMEMACHINEINDOMAIN2: {
2632                         struct wkssvc_NetrRenameMachineInDomain2 *r = (struct wkssvc_NetrRenameMachineInDomain2 *)_r;
2633                         r->out.result = _wkssvc_NetrRenameMachineInDomain2(cli->pipes_struct, r);
2634                         return NT_STATUS_OK;
2635                 }
2636 
2637                 case NDR_WKSSVC_NETRVALIDATENAME2: {
2638                         struct wkssvc_NetrValidateName2 *r = (struct wkssvc_NetrValidateName2 *)_r;
2639                         r->out.result = _wkssvc_NetrValidateName2(cli->pipes_struct, r);
2640                         return NT_STATUS_OK;
2641                 }
2642 
2643                 case NDR_WKSSVC_NETRGETJOINABLEOUS2: {
2644                         struct wkssvc_NetrGetJoinableOus2 *r = (struct wkssvc_NetrGetJoinableOus2 *)_r;
2645                         ZERO_STRUCT(r->out);
2646                         r->out.num_ous = r->in.num_ous;
2647                         r->out.ous = talloc_zero(mem_ctx, const char **);
2648                         if (r->out.ous == NULL) {
2649                         return NT_STATUS_NO_MEMORY;
2650                         }
2651 
2652                         r->out.result = _wkssvc_NetrGetJoinableOus2(cli->pipes_struct, r);
2653                         return NT_STATUS_OK;
2654                 }
2655 
2656                 case NDR_WKSSVC_NETRADDALTERNATECOMPUTERNAME: {
2657                         struct wkssvc_NetrAddAlternateComputerName *r = (struct wkssvc_NetrAddAlternateComputerName *)_r;
2658                         r->out.result = _wkssvc_NetrAddAlternateComputerName(cli->pipes_struct, r);
2659                         return NT_STATUS_OK;
2660                 }
2661 
2662                 case NDR_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME: {
2663                         struct wkssvc_NetrRemoveAlternateComputerName *r = (struct wkssvc_NetrRemoveAlternateComputerName *)_r;
2664                         r->out.result = _wkssvc_NetrRemoveAlternateComputerName(cli->pipes_struct, r);
2665                         return NT_STATUS_OK;
2666                 }
2667 
2668                 case NDR_WKSSVC_NETRSETPRIMARYCOMPUTERNAME: {
2669                         struct wkssvc_NetrSetPrimaryComputername *r = (struct wkssvc_NetrSetPrimaryComputername *)_r;
2670                         r->out.result = _wkssvc_NetrSetPrimaryComputername(cli->pipes_struct, r);
2671                         return NT_STATUS_OK;
2672                 }
2673 
2674                 case NDR_WKSSVC_NETRENUMERATECOMPUTERNAMES: {
2675                         struct wkssvc_NetrEnumerateComputerNames *r = (struct wkssvc_NetrEnumerateComputerNames *)_r;
2676                         ZERO_STRUCT(r->out);
2677                         r->out.ctr = talloc_zero(mem_ctx, struct wkssvc_ComputerNamesCtr *);
2678                         if (r->out.ctr == NULL) {
2679                         return NT_STATUS_NO_MEMORY;
2680                         }
2681 
2682                         r->out.result = _wkssvc_NetrEnumerateComputerNames(cli->pipes_struct, r);
2683                         return NT_STATUS_OK;
2684                 }
2685 
2686                 default:
2687                         return NT_STATUS_NOT_IMPLEMENTED;
2688         }
2689 }
2690 
2691 NTSTATUS rpc_wkssvc_init(void)
     /* [<][>][^][v][top][bottom][index][help] */
2692 {
2693         return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "wkssvc", "wkssvc", &ndr_table_wkssvc, api_wkssvc_cmds, sizeof(api_wkssvc_cmds) / sizeof(struct api_struct));
2694 }

/* [<][>][^][v][top][bottom][index][help] */