build: enable python 3.0 and 3.1 in testwaf.sh
[amitay/samba.git] / librpc / gen_ndr / srv_lsa.c
index 9d29f61e091a17181cff0334423ed2038ff7d9e3..9185d198888a156dc968183580bd9e03f3ba9d60 100644 (file)
@@ -3366,6 +3366,8 @@ static bool api_lsa_RetrievePrivateData(pipes_struct *p)
                NDR_PRINT_IN_DEBUG(lsa_RetrievePrivateData, r);
        }
 
+       ZERO_STRUCT(r->out);
+       r->out.val = r->in.val;
        r->out.result = _lsa_RetrievePrivateData(p, r);
 
        if (p->rng_fault_state) {
@@ -5687,18 +5689,18 @@ static bool api_lsa_lsaRQueryForestTrustInformation(pipes_struct *p)
        return true;
 }
 
-static bool api_lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p)
+static bool api_lsa_lsaRSetForestTrustInformation(pipes_struct *p)
 {
        const struct ndr_interface_call *call;
        struct ndr_pull *pull;
        struct ndr_push *push;
        enum ndr_err_code ndr_err;
        DATA_BLOB blob;
-       struct lsa_LSARSETFORESTTRUSTINFORMATION *r;
+       struct lsa_lsaRSetForestTrustInformation *r;
 
        call = &ndr_table_lsarpc.calls[NDR_LSA_LSARSETFORESTTRUSTINFORMATION];
 
-       r = talloc(talloc_tos(), struct lsa_LSARSETFORESTTRUSTINFORMATION);
+       r = talloc(talloc_tos(), struct lsa_lsaRSetForestTrustInformation);
        if (r == NULL) {
                return false;
        }
@@ -5722,10 +5724,17 @@ static bool api_lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p)
        }
 
        if (DEBUGLEVEL >= 10) {
-               NDR_PRINT_IN_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, r);
+               NDR_PRINT_IN_DEBUG(lsa_lsaRSetForestTrustInformation, r);
+       }
+
+       ZERO_STRUCT(r->out);
+       r->out.collision_info = talloc_zero(r, struct lsa_ForestTrustCollisionInfo *);
+       if (r->out.collision_info == NULL) {
+               talloc_free(r);
+               return false;
        }
 
-       r->out.result = _lsa_LSARSETFORESTTRUSTINFORMATION(p, r);
+       r->out.result = _lsa_lsaRSetForestTrustInformation(p, r);
 
        if (p->rng_fault_state) {
                talloc_free(r);
@@ -5734,7 +5743,7 @@ static bool api_lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p)
        }
 
        if (DEBUGLEVEL >= 10) {
-               NDR_PRINT_OUT_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, r);
+               NDR_PRINT_OUT_DEBUG(lsa_lsaRSetForestTrustInformation, r);
        }
 
        push = ndr_push_init_ctx(r, NULL);
@@ -6367,7 +6376,7 @@ static struct api_struct api_lsarpc_cmds[] =
        {"LSA_LSARGENAUDITEVENT", NDR_LSA_LSARGENAUDITEVENT, api_lsa_LSARGENAUDITEVENT},
        {"LSA_LSARUNREGISTERAUDITEVENT", NDR_LSA_LSARUNREGISTERAUDITEVENT, api_lsa_LSARUNREGISTERAUDITEVENT},
        {"LSA_LSARQUERYFORESTTRUSTINFORMATION", NDR_LSA_LSARQUERYFORESTTRUSTINFORMATION, api_lsa_lsaRQueryForestTrustInformation},
-       {"LSA_LSARSETFORESTTRUSTINFORMATION", NDR_LSA_LSARSETFORESTTRUSTINFORMATION, api_lsa_LSARSETFORESTTRUSTINFORMATION},
+       {"LSA_LSARSETFORESTTRUSTINFORMATION", NDR_LSA_LSARSETFORESTTRUSTINFORMATION, api_lsa_lsaRSetForestTrustInformation},
        {"LSA_CREDRRENAME", NDR_LSA_CREDRRENAME, api_lsa_CREDRRENAME},
        {"LSA_LOOKUPSIDS3", NDR_LSA_LOOKUPSIDS3, api_lsa_LookupSids3},
        {"LSA_LOOKUPNAMES4", NDR_LSA_LOOKUPNAMES4, api_lsa_LookupNames4},
@@ -6383,7 +6392,779 @@ void lsarpc_get_pipe_fns(struct api_struct **fns, int *n_fns)
        *n_fns = sizeof(api_lsarpc_cmds) / sizeof(struct api_struct);
 }
 
+NTSTATUS rpc_lsarpc_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r)
+{
+       if (cli->pipes_struct == NULL) {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
+
+       switch (opnum)
+       {
+               case NDR_LSA_CLOSE: {
+                       struct lsa_Close *r = (struct lsa_Close *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.handle = r->in.handle;
+                       r->out.result = _lsa_Close(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_DELETE: {
+                       struct lsa_Delete *r = (struct lsa_Delete *)_r;
+                       r->out.result = _lsa_Delete(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMPRIVS: {
+                       struct lsa_EnumPrivs *r = (struct lsa_EnumPrivs *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.privs = talloc_zero(mem_ctx, struct lsa_PrivArray);
+                       if (r->out.privs == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumPrivs(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYSECURITY: {
+                       struct lsa_QuerySecurity *r = (struct lsa_QuerySecurity *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sdbuf = talloc_zero(mem_ctx, struct sec_desc_buf *);
+                       if (r->out.sdbuf == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QuerySecurity(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETSECOBJ: {
+                       struct lsa_SetSecObj *r = (struct lsa_SetSecObj *)_r;
+                       r->out.result = _lsa_SetSecObj(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CHANGEPASSWORD: {
+                       struct lsa_ChangePassword *r = (struct lsa_ChangePassword *)_r;
+                       r->out.result = _lsa_ChangePassword(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENPOLICY: {
+                       struct lsa_OpenPolicy *r = (struct lsa_OpenPolicy *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenPolicy(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYINFOPOLICY: {
+                       struct lsa_QueryInfoPolicy *r = (struct lsa_QueryInfoPolicy *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_PolicyInformation *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryInfoPolicy(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETINFOPOLICY: {
+                       struct lsa_SetInfoPolicy *r = (struct lsa_SetInfoPolicy *)_r;
+                       r->out.result = _lsa_SetInfoPolicy(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CLEARAUDITLOG: {
+                       struct lsa_ClearAuditLog *r = (struct lsa_ClearAuditLog *)_r;
+                       r->out.result = _lsa_ClearAuditLog(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREATEACCOUNT: {
+                       struct lsa_CreateAccount *r = (struct lsa_CreateAccount *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.acct_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.acct_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_CreateAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMACCOUNTS: {
+                       struct lsa_EnumAccounts *r = (struct lsa_EnumAccounts *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.sids = talloc_zero(mem_ctx, struct lsa_SidArray);
+                       if (r->out.sids == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumAccounts(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREATETRUSTEDDOMAIN: {
+                       struct lsa_CreateTrustedDomain *r = (struct lsa_CreateTrustedDomain *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.trustdom_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_CreateTrustedDomain(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMTRUSTDOM: {
+                       struct lsa_EnumTrustDom *r = (struct lsa_EnumTrustDom *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_DomainList);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumTrustDom(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPNAMES: {
+                       struct lsa_LookupNames *r = (struct lsa_LookupNames *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sids = r->in.sids;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupNames(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPSIDS: {
+                       struct lsa_LookupSids *r = (struct lsa_LookupSids *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.names = r->in.names;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupSids(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREATESECRET: {
+                       struct lsa_CreateSecret *r = (struct lsa_CreateSecret *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sec_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.sec_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_CreateSecret(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENACCOUNT: {
+                       struct lsa_OpenAccount *r = (struct lsa_OpenAccount *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.acct_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.acct_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMPRIVSACCOUNT: {
+                       struct lsa_EnumPrivsAccount *r = (struct lsa_EnumPrivsAccount *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.privs = talloc_zero(mem_ctx, struct lsa_PrivilegeSet *);
+                       if (r->out.privs == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumPrivsAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ADDPRIVILEGESTOACCOUNT: {
+                       struct lsa_AddPrivilegesToAccount *r = (struct lsa_AddPrivilegesToAccount *)_r;
+                       r->out.result = _lsa_AddPrivilegesToAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_REMOVEPRIVILEGESFROMACCOUNT: {
+                       struct lsa_RemovePrivilegesFromAccount *r = (struct lsa_RemovePrivilegesFromAccount *)_r;
+                       r->out.result = _lsa_RemovePrivilegesFromAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_GETQUOTASFORACCOUNT: {
+                       struct lsa_GetQuotasForAccount *r = (struct lsa_GetQuotasForAccount *)_r;
+                       r->out.result = _lsa_GetQuotasForAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETQUOTASFORACCOUNT: {
+                       struct lsa_SetQuotasForAccount *r = (struct lsa_SetQuotasForAccount *)_r;
+                       r->out.result = _lsa_SetQuotasForAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_GETSYSTEMACCESSACCOUNT: {
+                       struct lsa_GetSystemAccessAccount *r = (struct lsa_GetSystemAccessAccount *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.access_mask = talloc_zero(mem_ctx, uint32_t);
+                       if (r->out.access_mask == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_GetSystemAccessAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETSYSTEMACCESSACCOUNT: {
+                       struct lsa_SetSystemAccessAccount *r = (struct lsa_SetSystemAccessAccount *)_r;
+                       r->out.result = _lsa_SetSystemAccessAccount(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENTRUSTEDDOMAIN: {
+                       struct lsa_OpenTrustedDomain *r = (struct lsa_OpenTrustedDomain *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.trustdom_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenTrustedDomain(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYTRUSTEDDOMAININFO: {
+                       struct lsa_QueryTrustedDomainInfo *r = (struct lsa_QueryTrustedDomainInfo *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryTrustedDomainInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETINFORMATIONTRUSTEDDOMAIN: {
+                       struct lsa_SetInformationTrustedDomain *r = (struct lsa_SetInformationTrustedDomain *)_r;
+                       r->out.result = _lsa_SetInformationTrustedDomain(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENSECRET: {
+                       struct lsa_OpenSecret *r = (struct lsa_OpenSecret *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sec_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.sec_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenSecret(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETSECRET: {
+                       struct lsa_SetSecret *r = (struct lsa_SetSecret *)_r;
+                       r->out.result = _lsa_SetSecret(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYSECRET: {
+                       struct lsa_QuerySecret *r = (struct lsa_QuerySecret *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.new_val = r->in.new_val;
+                       r->out.new_mtime = r->in.new_mtime;
+                       r->out.old_val = r->in.old_val;
+                       r->out.old_mtime = r->in.old_mtime;
+                       r->out.result = _lsa_QuerySecret(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPPRIVVALUE: {
+                       struct lsa_LookupPrivValue *r = (struct lsa_LookupPrivValue *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.luid = talloc_zero(mem_ctx, struct lsa_LUID);
+                       if (r->out.luid == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupPrivValue(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPPRIVNAME: {
+                       struct lsa_LookupPrivName *r = (struct lsa_LookupPrivName *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.name = talloc_zero(mem_ctx, struct lsa_StringLarge *);
+                       if (r->out.name == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupPrivName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPPRIVDISPLAYNAME: {
+                       struct lsa_LookupPrivDisplayName *r = (struct lsa_LookupPrivDisplayName *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.disp_name = talloc_zero(mem_ctx, struct lsa_StringLarge *);
+                       if (r->out.disp_name == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.returned_language_id = talloc_zero(mem_ctx, uint16_t);
+                       if (r->out.returned_language_id == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupPrivDisplayName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_DELETEOBJECT: {
+                       struct lsa_DeleteObject *r = (struct lsa_DeleteObject *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.handle = r->in.handle;
+                       r->out.result = _lsa_DeleteObject(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMACCOUNTSWITHUSERRIGHT: {
+                       struct lsa_EnumAccountsWithUserRight *r = (struct lsa_EnumAccountsWithUserRight *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sids = talloc_zero(mem_ctx, struct lsa_SidArray);
+                       if (r->out.sids == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumAccountsWithUserRight(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMACCOUNTRIGHTS: {
+                       struct lsa_EnumAccountRights *r = (struct lsa_EnumAccountRights *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.rights = talloc_zero(mem_ctx, struct lsa_RightSet);
+                       if (r->out.rights == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumAccountRights(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ADDACCOUNTRIGHTS: {
+                       struct lsa_AddAccountRights *r = (struct lsa_AddAccountRights *)_r;
+                       r->out.result = _lsa_AddAccountRights(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_REMOVEACCOUNTRIGHTS: {
+                       struct lsa_RemoveAccountRights *r = (struct lsa_RemoveAccountRights *)_r;
+                       r->out.result = _lsa_RemoveAccountRights(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYTRUSTEDDOMAININFOBYSID: {
+                       struct lsa_QueryTrustedDomainInfoBySid *r = (struct lsa_QueryTrustedDomainInfoBySid *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryTrustedDomainInfoBySid(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETTRUSTEDDOMAININFO: {
+                       struct lsa_SetTrustedDomainInfo *r = (struct lsa_SetTrustedDomainInfo *)_r;
+                       r->out.result = _lsa_SetTrustedDomainInfo(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_DELETETRUSTEDDOMAIN: {
+                       struct lsa_DeleteTrustedDomain *r = (struct lsa_DeleteTrustedDomain *)_r;
+                       r->out.result = _lsa_DeleteTrustedDomain(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_STOREPRIVATEDATA: {
+                       struct lsa_StorePrivateData *r = (struct lsa_StorePrivateData *)_r;
+                       r->out.result = _lsa_StorePrivateData(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_RETRIEVEPRIVATEDATA: {
+                       struct lsa_RetrievePrivateData *r = (struct lsa_RetrievePrivateData *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.val = r->in.val;
+                       r->out.result = _lsa_RetrievePrivateData(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENPOLICY2: {
+                       struct lsa_OpenPolicy2 *r = (struct lsa_OpenPolicy2 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenPolicy2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_GETUSERNAME: {
+                       struct lsa_GetUserName *r = (struct lsa_GetUserName *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.account_name = r->in.account_name;
+                       r->out.authority_name = r->in.authority_name;
+                       r->out.result = _lsa_GetUserName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYINFOPOLICY2: {
+                       struct lsa_QueryInfoPolicy2 *r = (struct lsa_QueryInfoPolicy2 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_PolicyInformation *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryInfoPolicy2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETINFOPOLICY2: {
+                       struct lsa_SetInfoPolicy2 *r = (struct lsa_SetInfoPolicy2 *)_r;
+                       r->out.result = _lsa_SetInfoPolicy2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYTRUSTEDDOMAININFOBYNAME: {
+                       struct lsa_QueryTrustedDomainInfoByName *r = (struct lsa_QueryTrustedDomainInfoByName *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_TrustedDomainInfo *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryTrustedDomainInfoByName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETTRUSTEDDOMAININFOBYNAME: {
+                       struct lsa_SetTrustedDomainInfoByName *r = (struct lsa_SetTrustedDomainInfoByName *)_r;
+                       r->out.result = _lsa_SetTrustedDomainInfoByName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_ENUMTRUSTEDDOMAINSEX: {
+                       struct lsa_EnumTrustedDomainsEx *r = (struct lsa_EnumTrustedDomainsEx *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.resume_handle = r->in.resume_handle;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_DomainListEx);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_EnumTrustedDomainsEx(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREATETRUSTEDDOMAINEX: {
+                       struct lsa_CreateTrustedDomainEx *r = (struct lsa_CreateTrustedDomainEx *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.trustdom_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_CreateTrustedDomainEx(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CLOSETRUSTEDDOMAINEX: {
+                       struct lsa_CloseTrustedDomainEx *r = (struct lsa_CloseTrustedDomainEx *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.handle = r->in.handle;
+                       r->out.result = _lsa_CloseTrustedDomainEx(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_QUERYDOMAININFORMATIONPOLICY: {
+                       struct lsa_QueryDomainInformationPolicy *r = (struct lsa_QueryDomainInformationPolicy *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.info = talloc_zero(mem_ctx, union lsa_DomainInformationPolicy *);
+                       if (r->out.info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_QueryDomainInformationPolicy(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_SETDOMAININFORMATIONPOLICY: {
+                       struct lsa_SetDomainInformationPolicy *r = (struct lsa_SetDomainInformationPolicy *)_r;
+                       r->out.result = _lsa_SetDomainInformationPolicy(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_OPENTRUSTEDDOMAINBYNAME: {
+                       struct lsa_OpenTrustedDomainByName *r = (struct lsa_OpenTrustedDomainByName *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.trustdom_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_OpenTrustedDomainByName(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_TESTCALL: {
+                       struct lsa_TestCall *r = (struct lsa_TestCall *)_r;
+                       r->out.result = _lsa_TestCall(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPSIDS2: {
+                       struct lsa_LookupSids2 *r = (struct lsa_LookupSids2 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.names = r->in.names;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupSids2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPNAMES2: {
+                       struct lsa_LookupNames2 *r = (struct lsa_LookupNames2 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sids = r->in.sids;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupNames2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREATETRUSTEDDOMAINEX2: {
+                       struct lsa_CreateTrustedDomainEx2 *r = (struct lsa_CreateTrustedDomainEx2 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.trustdom_handle = talloc_zero(mem_ctx, struct policy_handle);
+                       if (r->out.trustdom_handle == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_CreateTrustedDomainEx2(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRWRITE: {
+                       struct lsa_CREDRWRITE *r = (struct lsa_CREDRWRITE *)_r;
+                       r->out.result = _lsa_CREDRWRITE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRREAD: {
+                       struct lsa_CREDRREAD *r = (struct lsa_CREDRREAD *)_r;
+                       r->out.result = _lsa_CREDRREAD(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRENUMERATE: {
+                       struct lsa_CREDRENUMERATE *r = (struct lsa_CREDRENUMERATE *)_r;
+                       r->out.result = _lsa_CREDRENUMERATE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRWRITEDOMAINCREDENTIALS: {
+                       struct lsa_CREDRWRITEDOMAINCREDENTIALS *r = (struct lsa_CREDRWRITEDOMAINCREDENTIALS *)_r;
+                       r->out.result = _lsa_CREDRWRITEDOMAINCREDENTIALS(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRREADDOMAINCREDENTIALS: {
+                       struct lsa_CREDRREADDOMAINCREDENTIALS *r = (struct lsa_CREDRREADDOMAINCREDENTIALS *)_r;
+                       r->out.result = _lsa_CREDRREADDOMAINCREDENTIALS(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRDELETE: {
+                       struct lsa_CREDRDELETE *r = (struct lsa_CREDRDELETE *)_r;
+                       r->out.result = _lsa_CREDRDELETE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRGETTARGETINFO: {
+                       struct lsa_CREDRGETTARGETINFO *r = (struct lsa_CREDRGETTARGETINFO *)_r;
+                       r->out.result = _lsa_CREDRGETTARGETINFO(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRPROFILELOADED: {
+                       struct lsa_CREDRPROFILELOADED *r = (struct lsa_CREDRPROFILELOADED *)_r;
+                       r->out.result = _lsa_CREDRPROFILELOADED(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPNAMES3: {
+                       struct lsa_LookupNames3 *r = (struct lsa_LookupNames3 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sids = r->in.sids;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupNames3(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRGETSESSIONTYPES: {
+                       struct lsa_CREDRGETSESSIONTYPES *r = (struct lsa_CREDRGETSESSIONTYPES *)_r;
+                       r->out.result = _lsa_CREDRGETSESSIONTYPES(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARREGISTERAUDITEVENT: {
+                       struct lsa_LSARREGISTERAUDITEVENT *r = (struct lsa_LSARREGISTERAUDITEVENT *)_r;
+                       r->out.result = _lsa_LSARREGISTERAUDITEVENT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARGENAUDITEVENT: {
+                       struct lsa_LSARGENAUDITEVENT *r = (struct lsa_LSARGENAUDITEVENT *)_r;
+                       r->out.result = _lsa_LSARGENAUDITEVENT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARUNREGISTERAUDITEVENT: {
+                       struct lsa_LSARUNREGISTERAUDITEVENT *r = (struct lsa_LSARUNREGISTERAUDITEVENT *)_r;
+                       r->out.result = _lsa_LSARUNREGISTERAUDITEVENT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARQUERYFORESTTRUSTINFORMATION: {
+                       struct lsa_lsaRQueryForestTrustInformation *r = (struct lsa_lsaRQueryForestTrustInformation *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.forest_trust_info = talloc_zero(mem_ctx, struct lsa_ForestTrustInformation *);
+                       if (r->out.forest_trust_info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_lsaRQueryForestTrustInformation(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARSETFORESTTRUSTINFORMATION: {
+                       struct lsa_lsaRSetForestTrustInformation *r = (struct lsa_lsaRSetForestTrustInformation *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.collision_info = talloc_zero(mem_ctx, struct lsa_ForestTrustCollisionInfo *);
+                       if (r->out.collision_info == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_lsaRSetForestTrustInformation(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_CREDRRENAME: {
+                       struct lsa_CREDRRENAME *r = (struct lsa_CREDRRENAME *)_r;
+                       r->out.result = _lsa_CREDRRENAME(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPSIDS3: {
+                       struct lsa_LookupSids3 *r = (struct lsa_LookupSids3 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.names = r->in.names;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupSids3(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LOOKUPNAMES4: {
+                       struct lsa_LookupNames4 *r = (struct lsa_LookupNames4 *)_r;
+                       ZERO_STRUCT(r->out);
+                       r->out.sids = r->in.sids;
+                       r->out.count = r->in.count;
+                       r->out.domains = talloc_zero(mem_ctx, struct lsa_RefDomainList *);
+                       if (r->out.domains == NULL) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+
+                       r->out.result = _lsa_LookupNames4(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSAROPENPOLICYSCE: {
+                       struct lsa_LSAROPENPOLICYSCE *r = (struct lsa_LSAROPENPOLICYSCE *)_r;
+                       r->out.result = _lsa_LSAROPENPOLICYSCE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARADTREGISTERSECURITYEVENTSOURCE: {
+                       struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r = (struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *)_r;
+                       r->out.result = _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE: {
+                       struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r = (struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *)_r;
+                       r->out.result = _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               case NDR_LSA_LSARADTREPORTSECURITYEVENT: {
+                       struct lsa_LSARADTREPORTSECURITYEVENT *r = (struct lsa_LSARADTREPORTSECURITYEVENT *)_r;
+                       r->out.result = _lsa_LSARADTREPORTSECURITYEVENT(cli->pipes_struct, r);
+                       return NT_STATUS_OK;
+               }
+
+               default:
+                       return NT_STATUS_NOT_IMPLEMENTED;
+       }
+}
+
 NTSTATUS rpc_lsarpc_init(void)
 {
-       return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "lsarpc", "lsarpc", &ndr_table_lsarpc.syntax_id, api_lsarpc_cmds, sizeof(api_lsarpc_cmds) / sizeof(struct api_struct));
+       return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "lsarpc", "lsarpc", &ndr_table_lsarpc, api_lsarpc_cmds, sizeof(api_lsarpc_cmds) / sizeof(struct api_struct));
 }