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
2008-05-28 03:18:05 +04:00
# ifndef MAXSUBAUTHS
# define MAXSUBAUTHS 15 /* max sub authorities in a SID */
# endif
struct domsid {
uint8_t sid_rev_num ;
uint8_t num_auths ;
uint8_t id_auth [ 6 ] ;
uint32_t sub_auths [ MAXSUBAUTHS ] ;
} ;
2008-04-08 20:43:51 +04:00
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
2008-06-17 15:13:10 +04:00
# define FILTER_TEMP_DUPLICATE_ACCOUNT ( 0x0001 )
# define FILTER_NORMAL_ACCOUNT ( 0x0002 )
# define FILTER_INTERDOMAIN_TRUST_ACCOUNT ( 0x0008 )
# define FILTER_WORKSTATION_TRUST_ACCOUNT ( 0x0010 )
# define FILTER_SERVER_TRUST_ACCOUNT ( 0x0020 )
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-16 00:30:06 +04:00
struct NET_DISPLAY_USER {
const char * usri1_name ;
const char * usri1_comment ;
uint32_t usri1_flags ;
const char * usri1_full_name ;
uint32_t usri1_user_id ;
uint32_t usri1_next_index ;
} ;
struct NET_DISPLAY_MACHINE {
const char * usri2_name ;
const char * usri2_comment ;
uint32_t usri2_flags ;
uint32_t usri2_user_id ;
uint32_t usri2_next_index ;
} ;
struct NET_DISPLAY_GROUP {
const char * grpi3_name ;
const char * grpi3_comment ;
uint32_t grpi3_group_id ;
uint32_t grpi3_attributes ;
uint32_t grpi3_next_index ;
} ;
2008-05-28 03:18:05 +04:00
struct GROUP_INFO_0 {
const char * grpi0_name ;
} ;
struct GROUP_INFO_1 {
const char * grpi1_name ;
const char * grpi1_comment ;
} ;
struct GROUP_INFO_2 {
const char * grpi2_name ;
const char * grpi2_comment ;
uint32_t grpi2_group_id ;
uint32_t grpi2_attributes ;
} ;
struct GROUP_INFO_3 {
const char * grpi3_name ;
const char * grpi3_comment ;
2008-07-16 18:14:47 +04:00
struct domsid * grpi3_group_sid ;
2008-05-28 03:18:05 +04:00
uint32_t grpi3_attributes ;
} ;
2008-06-02 14:54:17 +04:00
struct GROUP_INFO_1002 {
const char * grpi1002_comment ;
} ;
struct GROUP_INFO_1005 {
uint32_t grpi1005_attributes ;
} ;
2008-06-02 21:12:54 +04:00
struct LOCALGROUP_INFO_0 {
const char * lgrpi0_name ;
} ;
struct LOCALGROUP_INFO_1 {
const char * lgrpi1_name ;
const char * lgrpi1_comment ;
} ;
struct LOCALGROUP_INFO_1002 {
const char * lgrpi1002_comment ;
} ;
2008-06-06 18:44:35 +04:00
struct TIME_OF_DAY_INFO {
uint32_t tod_elapsedt ;
uint32_t tod_msecs ;
uint32_t tod_hours ;
uint32_t tod_mins ;
uint32_t tod_secs ;
uint32_t tod_hunds ;
int32_t tod_timezone ;
uint32_t tod_tinterval ;
uint32_t tod_day ;
uint32_t tod_month ;
uint32_t tod_year ;
uint32_t tod_weekday ;
} ;
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 ;
2008-04-13 21:22:24 +04:00
int use_kerberos ;
2008-07-01 22:14:36 +04:00
void * private_data ;
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-04-13 21:22:24 +04:00
NET_API_STATUS libnetapi_set_use_kerberos ( struct libnetapi_ctx * ctx ) ;
/****************************************************************
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
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-07-16 17:22:04 +04:00
/************************************************************/ /**
*
* ConvertSidToStringSid
*
* @ brief Convert a domain sid into a string
*
* @ param [ in ] sid A pointer to a sid structure
* @ param [ in ] sid_string A pointer that holds a pointer to a sid string . Caller
* needs to free with free ( 3 )
* @ return bool
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
int ConvertSidToStringSid ( const struct domsid * sid ,
char * * sid_string ) ;
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetJoinDomain
*
* @ brief Join a computer to a domain or workgroup
*
* @ param [ in ] server The server name to connect to
* @ param [ in ] domain The domain or workgroup to join
* @ param [ in ] account_ou The organizational Unit to create the computer account
* in ( AD only )
* @ param [ in ] account The domain account used for joining a domain
* @ param [ in ] password The domain account ' s password used for joining a domain
* @ param [ in ] join_flags Bitmask field to define specific join features
* @ return NET_API_STATUS
*
* example netdomjoin / netdomjoin . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetUnjoinDomain
*
* @ brief Unjoin a computer from a domain or workgroup
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] account The domain account used for unjoining a domain
* @ param [ in ] password The domain account ' s password used for unjoining a domain
* @ param [ in ] unjoin_flags Bitmask field to define specific unjoin features
* @ return NET_API_STATUS
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetGetJoinInformation
*
* @ brief Unjoin a computer from a domain or workgroup
*
* @ param [ in ] server_name The server name to connect to
* @ param [ out ] name_buffer Returns the name of the workgroup or domain
* @ param [ out ] name_type Returns the type of that name
* @ return NET_API_STATUS
*
* example netdomjoin - gui / netdomjoin - gui . c
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetGetJoinableOUs
*
* @ brief Query for the list of joinable organizational Units that can be used
* for joining AD
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] domain The AD domain to query
* @ param [ in ] account The domain account used for the query
* @ param [ in ] password The domain account ' s password used for the query
* @ param [ out ] ou_count The number of ous returned
* @ param [ out ] ous Returned string array containing the ous
* @ return NET_API_STATUS
*
* example netdomjoin - gui / netdomjoin - gui . c
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 05:14:08 +03:00
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-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetServerGetInfo
*
* @ brief Get Information on a server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The level to define which information is requested
* @ param [ out ] buffer The returned buffer carrying the SERVER_INFO structure
* @ return NET_API_STATUS
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetServerSetInfo
*
* @ brief Get Information on a server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The level to define which information is set
* @ param [ in ] buffer The buffer carrying the SERVER_INFO structure
* @ param [ out ] parm_error On failure returns the invalid SERVER_INFO member
* @ return NET_API_STATUS
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetGetDCName
*
* @ brief Query for the PDC for a given domain
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] domain_name The name of the domain to lookup
* @ param [ out ] buffer The name of the domain to lookup
* @ return NET_API_STATUS
*
* example getdc / getdc . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetGetAnyDCName
*
* @ brief Query for any DC for a given domain
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] domain_name The name of the domain to lookup
* @ param [ out ] buffer The name of the domain to lookup
* @ return NET_API_STATUS
*
* example getdc / getdc . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-01-18 03:56:01 +03:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* DsGetDcName
*
* @ brief Lookup a DC for a given domain and return information structure
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] domain_name The name of the domain to lookup ( cannot be NULL )
* @ param [ in ] domain_guid The GUID of the domain to lookup ( optional )
* @ param [ in ] site_name The name of the site the DC should reside in
* @ param [ in ] flags A bitmask to request specific features supported by the DC
* @ param [ out ] dc_info Pointer to a DOMAIN_CONTROLLER_INFO structure
* @ return NET_API_STATUS
*
* example dsgetdc / dsgetdc . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-08 20:43:51 +04:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetUserAdd
*
* @ brief Create a user on a given server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The level of the USER_INFO structure passed in ( Currently
* only level 1 is supported )
* @ param [ in ] buffer The buffer carrying the USER_INFO structure
* @ param [ out ] parm_error In case of error returns the failing member of the
* structure
* @ return NET_API_STATUS
*
* example user / user_add . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-09 14:38:22 +04:00
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
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetUserDel
*
* @ brief Delete a user on a given server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] user_name The user account to delete
* @ return NET_API_STATUS
*
* example user / user_del . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-09 15:35:49 +04:00
NET_API_STATUS NetUserDel ( const char * server_name /* [in] */ ,
const char * user_name /* [in] */ ) ;
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetUserEnum
*
* @ brief Enumerate accounts on a server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The enumeration level used for the query ( Currently only
* level 0 is supported )
* @ param [ in ] filter The account flags filter used for the query
* @ param [ out ] buffer The returned enumeration buffer
* @ param [ in ] prefmaxlen The requested maximal buffer size
* @ param [ out ] entries_read The number of returned entries
* @ param [ out ] total_entries The number of total entries
* @ param [ in , out ] resume_handle A handle passed in and returned for resuming
* operations
* @ return NET_API_STATUS
*
* example user / user_enum . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-09 15:47:51 +04:00
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] */ ) ;
2008-06-25 02:47:41 +04:00
/************************************************************/ /**
*
* NetUserChangePassword
*
* @ brief Change the password for a user on a given server or in a given domain
*
* @ param [ in ] domain_name The server or domain name to connect to
* @ param [ in ] user_name The user account to change the password for
* @ param [ in ] old_password The user account ' s old password
2008-07-02 15:09:23 +04:00
* @ param [ in ] new_password The user account ' s new password
2008-06-25 02:47:41 +04:00
* @ return NET_API_STATUS
*
* example user / user_chgpwd . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetUserChangePassword ( const char * domain_name /* [in] */ ,
const char * user_name /* [in] */ ,
const char * old_password /* [in] */ ,
const char * new_password /* [in] */ ) ;
2008-04-16 12:03:06 +04:00
/************************************************************/ /**
*
* NetQueryDisplayInformation
*
* @ brief Enumerate accounts on a server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The enumeration level used for the query
* @ param [ in ] idx The index to start the the display enumeration at
* @ param [ in ] entries_requested The number of entries requested
* @ param [ in ] prefmaxlen The requested maximal buffer size
* @ param [ out ] entries_read The number of returned entries
* @ param [ out ] buffer The returned display information buffer
* @ return NET_API_STATUS
*
* example user / user_dispinfo . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-04-13 21:23:42 +04:00
NET_API_STATUS NetQueryDisplayInformation ( const char * server_name /* [in] [unique] */ ,
uint32_t level /* [in] */ ,
uint32_t idx /* [in] */ ,
uint32_t entries_requested /* [in] */ ,
uint32_t prefmaxlen /* [in] */ ,
uint32_t * entries_read /* [out] [ref] */ ,
void * * buffer /* [out] [noprint,ref] */ ) ;
2008-05-28 03:18:05 +04:00
/************************************************************/ /**
*
* NetGroupAdd
*
* @ brief Create Domain Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The level used for the new group creation
* @ param [ in ] buf The buffer containing the group structure
* @ param [ out ] parm_err The returned parameter error number if any
* @ return NET_API_STATUS
*
* example group / group_add . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupAdd ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buf /* [in] [ref] */ ,
uint32_t * parm_err /* [out] [ref] */ ) ;
/************************************************************/ /**
*
* NetGroupDel
*
* @ brief Delete Domain Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be deleted
* @ return NET_API_STATUS
*
* example group / group_del . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupDel ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ) ;
2008-07-01 22:11:38 +04:00
/************************************************************/ /**
*
* NetGroupEnum
*
* @ brief Enumerate groups on a server
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The enumeration level used for the query ( Currently only
* level 0 is supported )
* @ param [ out ] buffer The returned enumeration buffer
* @ param [ in ] prefmaxlen The requested maximal buffer size
* @ param [ out ] entries_read The number of returned entries
* @ param [ out ] total_entries The number of total entries
* @ param [ in , out ] resume_handle A handle passed in and returned for resuming
* operations
* @ return NET_API_STATUS
*
* example group / group_enum . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupEnum ( const char * server_name /* [in] */ ,
uint32_t level /* [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] */ ) ;
2008-06-02 14:54:17 +04:00
/************************************************************/ /**
*
* NetGroupSetInfo
*
* @ brief Set Domain Group Information
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be modified
* @ param [ in ] level The level defining the structure type in buf
* @ param [ in ] buf The buffer containing a GROUP_INFO_X structure
* @ param [ out ] parm_err The returned parameter error number if any
* @ return NET_API_STATUS
*
* example group / group_setinfo . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupSetInfo ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buf /* [in] [ref] */ ,
uint32_t * parm_err /* [out] [ref] */ ) ;
2008-06-02 15:04:15 +04:00
/************************************************************/ /**
*
* NetGroupGetInfo
*
* @ brief Get Domain Group Information
*
* @ param [ in ] server_name The server name to connect to
2008-07-16 18:20:42 +04:00
* @ param [ in ] group_name The name of the group that is going to be queried
2008-06-02 15:04:15 +04:00
* @ param [ in ] level The level defining the requested GROUP_INFO_X structure
* @ param [ out ] buf The buffer containing a GROUP_INFO_X structure
* @ return NET_API_STATUS
*
2008-07-16 18:20:42 +04:00
* example group / group_getinfo . c
2008-06-02 15:04:15 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupGetInfo ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * * buf /* [out] [ref] */ ) ;
2008-06-02 16:46:56 +04:00
/************************************************************/ /**
*
* NetGroupAddUser
*
* @ brief Add existing User to existing Domain Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be modified
* @ param [ in ] user_name The name of the user that is going to be added to the
* group
* @ return NET_API_STATUS
*
* example group / group_adduser . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupAddUser ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
const char * user_name /* [in] */ ) ;
2008-06-02 16:58:01 +04:00
/************************************************************/ /**
*
* NetGroupDelUser
*
* @ brief Remove User from Domain Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be modified
* @ param [ in ] user_name The name of the user that is going to be removed from
* the group
* @ return NET_API_STATUS
*
* example group / group_deluser . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetGroupDelUser ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
const char * user_name /* [in] */ ) ;
2008-06-02 21:12:54 +04:00
/************************************************************/ /**
*
* NetLocalGroupAdd
*
* @ brief Create Local Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] level The level used for the new group creation
* @ param [ in ] buf The buffer containing the group structure
* @ param [ out ] parm_err The returned parameter error number if any
* @ return NET_API_STATUS
*
* example localgroup / localgroup_add . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetLocalGroupAdd ( const char * server_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buf /* [in] [ref] */ ,
uint32_t * parm_err /* [out] [ref] */ ) ;
2008-06-02 21:45:23 +04:00
/************************************************************/ /**
*
* NetLocalGroupDel
*
* @ brief Delete Local Group
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be deleted
* @ return NET_API_STATUS
*
* example localgroup / localgroup_del . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetLocalGroupDel ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ) ;
2008-06-02 22:27:49 +04:00
/************************************************************/ /**
*
* NetLocalGroupGetInfo
*
* @ brief Get Local Group Information
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be queried
* @ param [ in ] level The level defining the requested LOCALGROUP_INFO_X structure
* @ param [ out ] buf The buffer containing a LOCALGROUP_INFO_X structure
* @ return NET_API_STATUS
*
* example localgroup / localgroup_getinfo . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetLocalGroupGetInfo ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * * buf /* [out] [ref] */ ) ;
2008-06-03 01:37:42 +04:00
/************************************************************/ /**
*
* NetLocalGroupSetInfo
*
* @ brief Set Local Group Information
*
* @ param [ in ] server_name The server name to connect to
* @ param [ in ] group_name The name of the group that is going to be modified
* @ param [ in ] level The level defining the requested LOCALGROUP_INFO_X structure
* @ param [ in ] buf The buffer containing a LOCALGROUP_INFO_X structure
* @ param [ out ] parm_err The returned parameter error number if any
* @ return NET_API_STATUS
*
* example localgroup / localgroup_setinfo . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetLocalGroupSetInfo ( const char * server_name /* [in] */ ,
const char * group_name /* [in] */ ,
uint32_t level /* [in] */ ,
uint8_t * buf /* [in] [ref] */ ,
uint32_t * parm_err /* [out] [ref] */ ) ;
2008-06-06 18:44:35 +04:00
/************************************************************/ /**
*
* NetRemoteTOD
*
* @ brief Query remote Time of Day
*
* @ param [ in ] server_name The server name to connect to
* @ param [ out ] buf The buffer containing a TIME_OF_DAY_INFO structure
* @ return NET_API_STATUS
*
* example server / remote_tod . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
NET_API_STATUS NetRemoteTOD ( const char * server_name /* [in] */ ,
uint8_t * * buf /* [out] [ref] */ ) ;
2007-12-14 14:22:20 +03:00
# endif