2008-06-16 14:09:08 +04:00
/*
* Unix SMB / CIFS implementation .
* libnet Support
* Copyright ( C ) Guenther Deschner 2008
*
* 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 3 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 , see < http : //www.gnu.org/licenses/>.
*/
2010-08-03 01:18:53 +04:00
# include "../librpc/gen_ndr/netlogon.h"
2008-06-16 14:09:08 +04:00
enum net_samsync_mode {
NET_SAMSYNC_MODE_FETCH_PASSDB = 0 ,
NET_SAMSYNC_MODE_FETCH_LDIF = 1 ,
2008-06-18 14:52:00 +04:00
NET_SAMSYNC_MODE_FETCH_KEYTAB = 2 ,
NET_SAMSYNC_MODE_DUMP = 3
2008-06-16 14:09:08 +04:00
} ;
2008-06-23 19:29:01 +04:00
struct samsync_context ;
2008-11-17 18:28:34 +03:00
struct samsync_ops {
NTSTATUS ( * startup ) ( TALLOC_CTX * mem_ctx ,
struct samsync_context * ctx ,
enum netr_SamDatabaseID id ,
uint64_t * sequence_num ) ;
NTSTATUS ( * process_objects ) ( TALLOC_CTX * mem_ctx ,
enum netr_SamDatabaseID id ,
struct netr_DELTA_ENUM_ARRAY * array ,
2008-11-18 04:01:03 +03:00
uint64_t * sequence_num ,
2008-11-17 18:28:34 +03:00
struct samsync_context * ctx ) ;
NTSTATUS ( * finish ) ( TALLOC_CTX * mem_ctx ,
struct samsync_context * ctx ,
enum netr_SamDatabaseID id ,
uint64_t sequence_num ) ;
} ;
2008-06-23 19:29:01 +04:00
2008-11-04 17:49:27 +03:00
struct samsync_object {
uint16_t database_id ;
uint16_t object_type ;
union {
uint32_t rid ;
const char * name ;
struct dom_sid sid ;
} object_identifier ;
} ;
2008-06-16 14:09:08 +04:00
struct samsync_context {
enum net_samsync_mode mode ;
const struct dom_sid * domain_sid ;
const char * domain_sid_str ;
2008-06-17 20:02:03 +04:00
const char * domain_name ;
2008-06-16 15:49:05 +04:00
const char * output_filename ;
2008-06-17 21:49:58 +04:00
2008-06-24 14:30:34 +04:00
const char * username ;
const char * password ;
2008-06-17 21:49:58 +04:00
char * result_message ;
char * error_message ;
2008-11-04 17:49:27 +03:00
bool single_object_replication ;
bool force_full_replication ;
bool clean_old_entries ;
uint32_t num_objects ;
struct samsync_object * objects ;
2008-06-23 19:29:01 +04:00
struct rpc_pipe_client * cli ;
2010-09-22 07:56:23 +04:00
struct messaging_context * msg_ctx ;
2008-11-17 18:28:34 +03:00
const struct samsync_ops * ops ;
2008-06-16 14:37:57 +04:00
void * private_data ;
2008-06-16 14:09:08 +04:00
} ;
2008-11-17 18:29:11 +03:00
extern const struct samsync_ops libnet_samsync_ldif_ops ;
extern const struct samsync_ops libnet_samsync_keytab_ops ;
extern const struct samsync_ops libnet_samsync_display_ops ;
extern const struct samsync_ops libnet_samsync_passdb_ops ;
2010-07-02 02:14:04 +04:00
/* The following definitions come from libnet/libnet_samsync.c */
NTSTATUS libnet_samsync_init_context ( TALLOC_CTX * mem_ctx ,
const struct dom_sid * domain_sid ,
struct samsync_context * * ctx_p ) ;
NTSTATUS libnet_samsync ( enum netr_SamDatabaseID database_id ,
struct samsync_context * ctx ) ;
NTSTATUS pull_netr_AcctLockStr ( TALLOC_CTX * mem_ctx ,
struct lsa_BinaryString * r ,
struct netr_AcctLockStr * * str_p ) ;