2004-05-03 14:58:08 +00:00
/*
Unix SMB / CIFS implementation .
endpoint server for the samr pipe
Copyright ( C ) Andrew Tridgell 2004
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# include "includes.h"
2004-05-04 06:11:47 +00:00
# include "rpc_server/common/common.h"
2004-05-03 14:58:08 +00:00
/*
this type allows us to distinguish handle types
*/
enum samr_handle {
SAMR_HANDLE_CONNECT ,
SAMR_HANDLE_DOMAIN ,
SAMR_HANDLE_USER ,
SAMR_HANDLE_GROUP ,
SAMR_HANDLE_ALIAS
} ;
/*
state asscoiated with a samr_Connect * ( ) operation
*/
struct samr_connect_state {
TALLOC_CTX * mem_ctx ;
uint32 access_mask ;
} ;
/*
destroy an open connection . This closes the database connection
*/
static void samr_Connect_destroy ( struct dcesrv_connection * conn , struct dcesrv_handle * h )
{
struct samr_connect_state * state = h - > data ;
talloc_destroy ( state - > mem_ctx ) ;
}
/*
samr_Connect
create a connection to the SAM database
*/
static NTSTATUS samr_Connect ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Connect * r )
{
struct samr_connect_state * state ;
struct dcesrv_handle * handle ;
TALLOC_CTX * connect_mem_ctx ;
ZERO_STRUCTP ( r - > out . handle ) ;
connect_mem_ctx = talloc_init ( " samr_Connect " ) ;
if ( ! connect_mem_ctx ) {
return NT_STATUS_NO_MEMORY ;
}
state = talloc_p ( connect_mem_ctx , struct samr_connect_state ) ;
if ( ! state ) {
return NT_STATUS_NO_MEMORY ;
}
state - > mem_ctx = connect_mem_ctx ;
/* make sure the sam database is accessible */
if ( samdb_connect ( ) ! = 0 ) {
talloc_destroy ( state - > mem_ctx ) ;
2004-05-04 06:07:52 +00:00
return NT_STATUS_INVALID_SYSTEM_SERVICE ;
2004-05-03 14:58:08 +00:00
}
handle = dcesrv_handle_new ( dce_call - > conn , SAMR_HANDLE_CONNECT ) ;
if ( ! handle ) {
talloc_destroy ( state - > mem_ctx ) ;
return NT_STATUS_NO_MEMORY ;
}
handle - > data = state ;
handle - > destroy = samr_Connect_destroy ;
state - > access_mask = r - > in . access_mask ;
* r - > out . handle = handle - > wire_handle ;
return NT_STATUS_OK ;
}
/*
samr_Close
*/
static NTSTATUS samr_Close ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Close * r )
{
struct dcesrv_handle * h = dcesrv_handle_fetch ( dce_call - > conn ,
r - > in . handle ,
DCESRV_HANDLE_ANY ) ;
2004-05-04 06:07:52 +00:00
DCESRV_CHECK_HANDLE ( h ) ;
2004-05-03 14:58:08 +00:00
/* this causes the callback samr_XXX_destroy() to be called by
the handle destroy code which destroys the state associated
with the handle */
dcesrv_handle_destroy ( dce_call - > conn , h ) ;
ZERO_STRUCTP ( r - > out . handle ) ;
return NT_STATUS_OK ;
}
/*
samr_SetSecurity
*/
static NTSTATUS samr_SetSecurity ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetSecurity * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QuerySecurity
*/
static NTSTATUS samr_QuerySecurity ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QuerySecurity * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_Shutdown
we refuse this operation completely . If a admin wants to shutdown samr
in Samba then they should use the samba admin tools to disable the samr pipe
*/
static NTSTATUS samr_Shutdown ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Shutdown * r )
{
return NT_STATUS_ACCESS_DENIED ;
}
/*
samr_LookupDomain
this maps from a domain name to a SID
*/
static NTSTATUS samr_LookupDomain ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_LookupDomain * r )
{
struct dcesrv_handle * h ;
struct dom_sid2 * sid ;
const char * sidstr ;
h = dcesrv_handle_fetch ( dce_call - > conn , r - > in . handle , SAMR_HANDLE_CONNECT ) ;
2004-05-04 06:07:52 +00:00
DCESRV_CHECK_HANDLE ( h ) ;
2004-05-03 14:58:08 +00:00
r - > out . sid = NULL ;
if ( r - > in . domain - > name = = NULL ) {
2004-05-04 06:07:52 +00:00
return NT_STATUS_INVALID_PARAMETER ;
2004-05-03 14:58:08 +00:00
}
sidstr = samdb_search_string ( mem_ctx , " objectSid " ,
" (&(name=%s)(objectclass=domain)) " ,
r - > in . domain - > name ) ;
if ( sidstr = = NULL ) {
2004-05-04 06:07:52 +00:00
return NT_STATUS_NO_SUCH_DOMAIN ;
2004-05-03 14:58:08 +00:00
}
sid = dom_sid_parse_talloc ( mem_ctx , sidstr ) ;
if ( sid = = NULL ) {
DEBUG ( 1 , ( " samdb: Invalid sid '%s' for domain %s \n " ,
sidstr , r - > in . domain - > name ) ) ;
2004-05-04 06:07:52 +00:00
return NT_STATUS_INTERNAL_DB_CORRUPTION ;
2004-05-03 14:58:08 +00:00
}
r - > out . sid = sid ;
return NT_STATUS_OK ;
}
/*
samr_EnumDomains
list the domains in the SAM
*/
static NTSTATUS samr_EnumDomains ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_EnumDomains * r )
{
struct dcesrv_handle * h ;
struct samr_SamArray * array ;
char * * domains ;
int count , i , start_i ;
h = dcesrv_handle_fetch ( dce_call - > conn , r - > in . handle , SAMR_HANDLE_CONNECT ) ;
2004-05-04 06:07:52 +00:00
DCESRV_CHECK_HANDLE ( h ) ;
2004-05-03 14:58:08 +00:00
* r - > out . resume_handle = 0 ;
r - > out . sam = NULL ;
r - > out . num_entries = 0 ;
count = samdb_search_string_multiple ( mem_ctx , & domains ,
" name " , " (objectclass=domain) " ) ;
if ( count = = - 1 ) {
DEBUG ( 1 , ( " samdb: no domains found in EnumDomains \n " ) ) ;
2004-05-04 06:07:52 +00:00
return NT_STATUS_INTERNAL_DB_CORRUPTION ;
2004-05-03 14:58:08 +00:00
}
* r - > out . resume_handle = count ;
start_i = * r - > in . resume_handle ;
if ( start_i > = count ) {
/* search past end of list is not an error for this call */
return NT_STATUS_OK ;
}
array = talloc_p ( mem_ctx , struct samr_SamArray ) ;
if ( array = = NULL ) {
2004-05-04 06:07:52 +00:00
return NT_STATUS_NO_MEMORY ;
2004-05-03 14:58:08 +00:00
}
array - > count = 0 ;
array - > entries = NULL ;
array - > entries = talloc_array_p ( mem_ctx , struct samr_SamEntry , count - start_i ) ;
if ( array - > entries = = NULL ) {
2004-05-04 06:07:52 +00:00
return NT_STATUS_NO_MEMORY ;
2004-05-03 14:58:08 +00:00
}
for ( i = 0 ; i < count - start_i ; i + + ) {
array - > entries [ i ] . idx = start_i + i ;
array - > entries [ i ] . name . name = domains [ start_i + i ] ;
}
r - > out . sam = array ;
r - > out . num_entries = i - start_i ;
array - > count = r - > out . num_entries ;
return NT_STATUS_OK ;
}
/*
samr_OpenDomain
*/
static NTSTATUS samr_OpenDomain ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_OpenDomain * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryDomainInfo
*/
static NTSTATUS samr_QueryDomainInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryDomainInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetDomainInfo
*/
static NTSTATUS samr_SetDomainInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetDomainInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_CreateDomainGroup
*/
static NTSTATUS samr_CreateDomainGroup ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_CreateDomainGroup * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_EnumDomainGroups
*/
static NTSTATUS samr_EnumDomainGroups ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_EnumDomainGroups * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_CreateUser
*/
static NTSTATUS samr_CreateUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_CreateUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_EnumDomainUsers
*/
static NTSTATUS samr_EnumDomainUsers ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_EnumDomainUsers * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_CreateDomAlias
*/
static NTSTATUS samr_CreateDomAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_CreateDomAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_EnumDomainAliases
*/
static NTSTATUS samr_EnumDomainAliases ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_EnumDomainAliases * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetAliasMembership
*/
static NTSTATUS samr_GetAliasMembership ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetAliasMembership * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_LookupNames
*/
static NTSTATUS samr_LookupNames ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_LookupNames * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_LookupRids
*/
static NTSTATUS samr_LookupRids ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_LookupRids * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_OpenGroup
*/
static NTSTATUS samr_OpenGroup ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_OpenGroup * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryGroupInfo
*/
static NTSTATUS samr_QueryGroupInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryGroupInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetGroupInfo
*/
static NTSTATUS samr_SetGroupInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetGroupInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_AddGroupMember
*/
static NTSTATUS samr_AddGroupMember ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_AddGroupMember * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_DeleteDomainGroup
*/
static NTSTATUS samr_DeleteDomainGroup ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_DeleteDomainGroup * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_DeleteGroupMember
*/
static NTSTATUS samr_DeleteGroupMember ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_DeleteGroupMember * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryGroupMember
*/
static NTSTATUS samr_QueryGroupMember ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryGroupMember * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetMemberAttributesOfGroup
*/
static NTSTATUS samr_SetMemberAttributesOfGroup ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetMemberAttributesOfGroup * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_OpenAlias
*/
static NTSTATUS samr_OpenAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_OpenAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryAliasInfo
*/
static NTSTATUS samr_QueryAliasInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryAliasInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetAliasInfo
*/
static NTSTATUS samr_SetAliasInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetAliasInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_DeleteDomAlias
*/
static NTSTATUS samr_DeleteDomAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_DeleteDomAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_AddAliasMember
*/
static NTSTATUS samr_AddAliasMember ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_AddAliasMember * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_DeleteAliasMember
*/
static NTSTATUS samr_DeleteAliasMember ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_DeleteAliasMember * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetMembersInAlias
*/
static NTSTATUS samr_GetMembersInAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetMembersInAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_OpenUser
*/
static NTSTATUS samr_OpenUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_OpenUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_DeleteUser
*/
static NTSTATUS samr_DeleteUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_DeleteUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryUserInfo
*/
static NTSTATUS samr_QueryUserInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryUserInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetUserInfo
*/
static NTSTATUS samr_SetUserInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetUserInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_ChangePasswordUser
*/
static NTSTATUS samr_ChangePasswordUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_ChangePasswordUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetGroupsForUser
*/
static NTSTATUS samr_GetGroupsForUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetGroupsForUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryDisplayInfo
*/
static NTSTATUS samr_QueryDisplayInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryDisplayInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetDisplayEnumerationIndex
*/
static NTSTATUS samr_GetDisplayEnumerationIndex ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetDisplayEnumerationIndex * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_TestPrivateFunctionsDomain
*/
static NTSTATUS samr_TestPrivateFunctionsDomain ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_TestPrivateFunctionsDomain * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_TestPrivateFunctionsUser
*/
static NTSTATUS samr_TestPrivateFunctionsUser ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_TestPrivateFunctionsUser * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetUserPwInfo
*/
static NTSTATUS samr_GetUserPwInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetUserPwInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_RemoveMemberFromForeignDomain
*/
static NTSTATUS samr_RemoveMemberFromForeignDomain ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_RemoveMemberFromForeignDomain * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryDomainInfo2
*/
static NTSTATUS samr_QueryDomainInfo2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryDomainInfo2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryUserInfo2
*/
static NTSTATUS samr_QueryUserInfo2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryUserInfo2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryDisplayInfo2
*/
static NTSTATUS samr_QueryDisplayInfo2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryDisplayInfo2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetDisplayEnumerationIndex2
*/
static NTSTATUS samr_GetDisplayEnumerationIndex2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetDisplayEnumerationIndex2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_CreateUser2
*/
static NTSTATUS samr_CreateUser2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_CreateUser2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_QueryDisplayInfo3
*/
static NTSTATUS samr_QueryDisplayInfo3 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_QueryDisplayInfo3 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_AddMultipleMembersToAlias
*/
static NTSTATUS samr_AddMultipleMembersToAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_AddMultipleMembersToAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_RemoveMultipleMembersFromAlias
*/
static NTSTATUS samr_RemoveMultipleMembersFromAlias ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_RemoveMultipleMembersFromAlias * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_OemChangePasswordUser2
*/
static NTSTATUS samr_OemChangePasswordUser2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_OemChangePasswordUser2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_ChangePasswordUser2
*/
static NTSTATUS samr_ChangePasswordUser2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_ChangePasswordUser2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetDomPwInfo
*/
static NTSTATUS samr_GetDomPwInfo ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetDomPwInfo * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_Connect2
*/
static NTSTATUS samr_Connect2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Connect2 * r )
{
struct samr_Connect c ;
c . in . system_name = NULL ;
c . in . access_mask = r - > in . access_mask ;
c . out . handle = r - > out . handle ;
2004-05-04 06:07:52 +00:00
return samr_Connect ( dce_call , mem_ctx , & c ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetUserInfo2
*/
static NTSTATUS samr_SetUserInfo2 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetUserInfo2 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetBootKeyInformation
*/
static NTSTATUS samr_SetBootKeyInformation ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetBootKeyInformation * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_GetBootKeyInformation
*/
static NTSTATUS samr_GetBootKeyInformation ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_GetBootKeyInformation * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_Connect3
*/
static NTSTATUS samr_Connect3 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Connect3 * r )
{
struct samr_Connect c ;
c . in . system_name = NULL ;
c . in . access_mask = r - > in . access_mask ;
c . out . handle = r - > out . handle ;
2004-05-04 06:07:52 +00:00
return samr_Connect ( dce_call , mem_ctx , & c ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_Connect4
*/
static NTSTATUS samr_Connect4 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Connect4 * r )
{
struct samr_Connect c ;
c . in . system_name = NULL ;
c . in . access_mask = r - > in . access_mask ;
c . out . handle = r - > out . handle ;
2004-05-04 06:07:52 +00:00
return samr_Connect ( dce_call , mem_ctx , & c ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_ChangePasswordUser3
*/
static NTSTATUS samr_ChangePasswordUser3 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_ChangePasswordUser3 * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_Connect5
*/
static NTSTATUS samr_Connect5 ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_Connect5 * r )
{
struct samr_Connect c ;
NTSTATUS status ;
c . in . system_name = NULL ;
c . in . access_mask = r - > in . access_mask ;
c . out . handle = r - > out . handle ;
status = samr_Connect ( dce_call , mem_ctx , & c ) ;
r - > out . info - > info1 . unknown1 = 3 ;
r - > out . info - > info1 . unknown2 = 0 ;
r - > out . level = r - > in . level ;
return status ;
}
/*
samr_RidToSid
*/
static NTSTATUS samr_RidToSid ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_RidToSid * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_SetDsrmPassword
*/
static NTSTATUS samr_SetDsrmPassword ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_SetDsrmPassword * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/*
samr_ValidatePassword
*/
static NTSTATUS samr_ValidatePassword ( struct dcesrv_call_state * dce_call , TALLOC_CTX * mem_ctx ,
struct samr_ValidatePassword * r )
{
2004-05-04 06:07:52 +00:00
DCESRV_FAULT ( DCERPC_FAULT_OP_RNG_ERROR ) ;
2004-05-03 14:58:08 +00:00
}
/* include the generated boilerplate */
# include "librpc/gen_ndr/ndr_samr_s.c"