2007-12-12 20:14:54 +03:00
/*
* Unix SMB / CIFS implementation .
* NetApi Support
2008-01-07 20:36:06 +03:00
* Copyright ( C ) Guenther Deschner 2007 - 2008
2007-12-12 20:14:54 +03:00
*
* 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/>.
*/
2007-12-14 14:22:20 +03:00
# ifndef __LIB_NETAPI_H__
# define __LIB_NETAPI_H__
2008-01-11 16:47:52 +03:00
/****************************************************************
NET_API_STATUS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
typedef enum {
NET_API_STATUS_SUCCESS = 0
} NET_API_STATUS ;
2008-01-25 17:46:11 +03:00
2008-04-09 15:47:51 +04:00
# define ERROR_MORE_DATA ( 234L )
2008-01-25 17:46:11 +03:00
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 20:43:51 +04:00
# ifndef _HEADER_misc
struct GUID {
uint32_t time_low ;
uint16_t time_mid ;
uint16_t time_hi_and_version ;
uint8_t clock_seq [ 2 ] ;
uint8_t node [ 6 ] ;
} ;
# endif /* _HEADER_misc */
# ifndef _HEADER_libnetapi
struct DOMAIN_CONTROLLER_INFO {
const char * domain_controller_name ;
const char * domain_controller_address ;
uint32_t domain_controller_address_type ;
struct GUID domain_guid ;
const char * domain_name ;
2008-04-10 23:23:59 +04:00
const char * dns_forest_name ;
2008-04-08 20:43:51 +04:00
uint32_t flags ;
const char * dc_site_name ;
const char * client_site_name ;
} ;
2008-04-10 23:31:12 +04:00
struct SERVER_INFO_1005 {
const char * sv1005_comment ;
} ;
2008-04-08 20:43:51 +04:00
2008-04-09 14:38:22 +04:00
struct USER_INFO_0 {
const char * usri0_name ;
} ;
struct USER_INFO_1 {
const char * usri1_name ;
const char * usri1_password ;
uint32_t usri1_password_age ;
uint32_t usri1_priv ;
const char * usri1_home_dir ;
const char * usri1_comment ;
uint32_t usri1_flags ;
const char * usri1_script_path ;
} ;
2008-04-08 20:43:51 +04:00
# endif /* _HEADER_libnetapi */
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-12 20:14:54 +03:00
struct libnetapi_ctx {
2008-01-07 22:06:41 +03:00
char * debuglevel ;
char * error_string ;
2007-12-18 04:15:49 +03:00
char * username ;
char * workgroup ;
char * password ;
2008-01-07 22:03:32 +03:00
char * krb5_cc_env ;
2007-12-12 20:14:54 +03:00
} ;
2008-01-07 22:03:32 +03:00
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-18 04:29:50 +03:00
NET_API_STATUS libnetapi_init ( struct libnetapi_ctx * * ctx ) ;
2008-04-10 23:52:03 +04:00
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-18 04:29:50 +03:00
NET_API_STATUS libnetapi_free ( struct libnetapi_ctx * ctx ) ;
2008-04-10 23:52:03 +04:00
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS libnetapi_getctx ( struct libnetapi_ctx * * ctx ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS libnetapi_set_debuglevel ( struct libnetapi_ctx * ctx ,
const char * debuglevel ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS libnetapi_set_username ( struct libnetapi_ctx * ctx ,
const char * username ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS libnetapi_set_password ( struct libnetapi_ctx * ctx ,
const char * password ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS libnetapi_set_workgroup ( struct libnetapi_ctx * ctx ,
const char * workgroup ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-11 16:47:23 +03:00
const char * libnetapi_errstr ( NET_API_STATUS status ) ;
2008-04-10 23:52:03 +04:00
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
const char * libnetapi_get_error_string ( struct libnetapi_ctx * ctx ,
NET_API_STATUS status ) ;
2008-01-11 16:47:23 +03:00
2008-01-07 22:06:41 +03:00
/****************************************************************
2008-01-18 03:56:01 +03:00
NetApiBufferFree
2008-01-07 22:06:41 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-08 13:53:38 +03:00
NET_API_STATUS NetApiBufferFree ( void * buffer ) ;
/****************************************************************
2008-01-18 03:56:01 +03:00
NetJoinDomain
2008-01-08 13:53:38 +03:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2007-12-12 20:14:54 +03:00
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetJoinDomain ( const char * server /* [in] */ ,
const char * domain /* [in] [ref] */ ,
const char * account_ou /* [in] */ ,
const char * account /* [in] */ ,
const char * password /* [in] */ ,
uint32_t join_flags /* [in] */ ) ;
2008-01-18 03:56:01 +03:00
/****************************************************************
NetUnjoinDomain
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetUnjoinDomain ( const char * server_name /* [in] */ ,
const char * account /* [in] */ ,
const char * password /* [in] */ ,
uint32_t unjoin_flags /* [in] */ ) ;
2008-01-18 03:56:01 +03:00
/****************************************************************
NetGetJoinInformation
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetGetJoinInformation ( const char * server_name /* [in] */ ,
const char * * name_buffer /* [out] [ref] */ ,
uint16_t * name_type /* [out] [ref] */ ) ;
2007-12-14 14:22:20 +03:00
2008-01-18 05:14:08 +03:00
/****************************************************************
NetGetJoinableOUs
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetGetJoinableOUs ( const char * server_name /* [in] */ ,
const char * domain /* [in] [ref] */ ,
const char * account /* [in] */ ,
const char * password /* [in] */ ,
uint32_t * ou_count /* [out] [ref] */ ,
const char * * * ous /* [out] [ref] */ ) ;
2008-01-18 05:14:08 +03:00
2008-01-18 03:56:01 +03:00
/****************************************************************
NetServerGetInfo
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetServerGetInfo ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * * buffer /* [out] [ref] */ ) ;
2008-01-18 03:56:01 +03:00
/****************************************************************
NetServerSetInfo
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetServerSetInfo ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buffer /* [in] [ref] */ ,
uint32_t * parm_error /* [out] [ref] */ ) ;
2007-12-21 17:51:00 +03:00
2008-01-18 03:56:01 +03:00
/****************************************************************
NetGetDCName
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetGetDCName ( const char * server_name /* [in] */ ,
const char * domain_name /* [in] */ ,
uint8_t * * buffer /* [out] [ref] */ ) ;
2008-01-18 03:56:01 +03:00
/****************************************************************
NetGetAnyDCName
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 04:42:50 +04:00
NET_API_STATUS NetGetAnyDCName ( const char * server_name /* [in] */ ,
const char * domain_name /* [in] */ ,
uint8_t * * buffer /* [out] [ref] */ ) ;
2007-12-21 17:51:00 +03:00
2008-04-08 20:43:51 +04:00
/****************************************************************
DsGetDcName
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS DsGetDcName ( const char * server_name /* [in] [unique] */ ,
const char * domain_name /* [in] [ref] */ ,
struct GUID * domain_guid /* [in] [unique] */ ,
const char * site_name /* [in] [unique] */ ,
uint32_t flags /* [in] */ ,
struct DOMAIN_CONTROLLER_INFO * * dc_info /* [out] [ref] */ ) ;
2008-04-09 14:38:22 +04:00
/****************************************************************
NetUserAdd
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetUserAdd ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buffer /* [in] [ref] */ ,
uint32_t * parm_error /* [out] [ref] */ ) ;
2008-04-09 15:35:49 +04:00
/****************************************************************
NetUserDel
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetUserDel ( const char * server_name /* [in] */ ,
const char * user_name /* [in] */ ) ;
2008-04-09 15:47:51 +04:00
/****************************************************************
NetUserEnum
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetUserEnum ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint32_t filter /* [in] */ ,
uint8_t * * buffer /* [out] [ref] */ ,
uint32_t prefmaxlen /* [in] */ ,
uint32_t * entries_read /* [out] [ref] */ ,
uint32_t * total_entries /* [out] [ref] */ ,
uint32_t * resume_handle /* [in,out] [ref] */ ) ;
2007-12-14 14:22:20 +03:00
# endif