2008-03-17 19:29:44 +03:00
/*
* Unix SMB / CIFS implementation .
* libsmbconf - Samba configuration library
* Copyright ( C ) Michael Adam 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/>.
*/
# ifndef __LIBSMBCONF_H__
# define __LIBSMBCONF_H__
2011-04-07 17:27:26 +04:00
/**
* @ brief Status codes returned from smbconf functions
*/
enum _sbcErrType {
SBC_ERR_OK = 0 , /**< Successful completion **/
SBC_ERR_NOT_IMPLEMENTED , /**< Function not implemented **/
SBC_ERR_NOT_SUPPORTED , /**< Function not supported **/
SBC_ERR_UNKNOWN_FAILURE , /**< General failure **/
SBC_ERR_NOMEM , /**< Memory allocation error **/
SBC_ERR_INVALID_PARAM , /**< An Invalid parameter was supplied **/
SBC_ERR_BADFILE , /**< A bad file was supplied **/
SBC_ERR_NO_SUCH_SERVICE , /**< There is no such service provided **/
SBC_ERR_IO_FAILURE , /**< There was an IO error **/
SBC_ERR_CAN_NOT_COMPLETE , /**< Can not complete action **/
SBC_ERR_NO_MORE_ITEMS , /**< No more items left **/
SBC_ERR_FILE_EXISTS , /**< File already exists **/
SBC_ERR_ACCESS_DENIED , /**< Access has been denied **/
} ;
typedef enum _sbcErrType sbcErr ;
# define SBC_ERROR_IS_OK(x) ((x) == SBC_ERR_OK)
2008-03-19 14:37:17 +03:00
struct smbconf_ctx ;
2008-03-17 19:29:44 +03:00
2008-03-19 01:29:11 +03:00
/* the change sequence number */
struct smbconf_csn {
uint64_t csn ;
} ;
2008-04-22 18:16:28 +04:00
struct smbconf_service {
char * name ;
uint32_t num_params ;
char * * param_names ;
char * * param_values ;
} ;
2011-04-07 17:27:52 +04:00
/**
* @ brief Translate an error value into a string
*
* @ param error
*
* @ return a pointer to a static string
* */
const char * sbcErrorString ( sbcErr error ) ;
2008-03-21 18:45:25 +03:00
/*
* the smbconf API functions
*/
2008-10-21 01:52:02 +04:00
bool smbconf_backend_requires_messaging ( struct smbconf_ctx * ctx ) ;
2008-10-23 13:16:50 +04:00
bool smbconf_is_writeable ( struct smbconf_ctx * ctx ) ;
2008-03-21 03:04:57 +03:00
void smbconf_shutdown ( struct smbconf_ctx * ctx ) ;
2008-03-19 01:29:11 +03:00
bool smbconf_changed ( struct smbconf_ctx * ctx , struct smbconf_csn * csn ,
const char * service , const char * param ) ;
2011-04-08 12:40:02 +04:00
sbcErr smbconf_drop ( struct smbconf_ctx * ctx ) ;
2008-03-19 12:47:23 +03:00
WERROR smbconf_get_config ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
uint32_t * num_shares ,
2008-04-22 18:31:16 +04:00
struct smbconf_service * * * services ) ;
2008-03-19 12:47:23 +03:00
WERROR smbconf_get_share_names ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
2008-03-17 20:01:33 +03:00
uint32_t * num_shares ,
char * * * share_names ) ;
bool smbconf_share_exists ( struct smbconf_ctx * ctx , const char * servicename ) ;
WERROR smbconf_create_share ( struct smbconf_ctx * ctx , const char * servicename ) ;
2008-03-19 12:47:23 +03:00
WERROR smbconf_get_share ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
2008-04-22 18:31:16 +04:00
const char * servicename ,
struct smbconf_service * * service ) ;
2008-03-17 20:01:33 +03:00
WERROR smbconf_delete_share ( struct smbconf_ctx * ctx ,
const char * servicename ) ;
WERROR smbconf_set_parameter ( struct smbconf_ctx * ctx ,
const char * service ,
const char * param ,
const char * valstr ) ;
WERROR smbconf_set_global_parameter ( struct smbconf_ctx * ctx ,
const char * param , const char * val ) ;
2008-03-19 12:47:23 +03:00
WERROR smbconf_get_parameter ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
2008-03-17 20:01:33 +03:00
const char * service ,
const char * param ,
char * * valstr ) ;
2008-03-19 12:47:23 +03:00
WERROR smbconf_get_global_parameter ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
2008-03-17 20:01:33 +03:00
const char * param ,
char * * valstr ) ;
WERROR smbconf_delete_parameter ( struct smbconf_ctx * ctx ,
2008-03-17 19:29:44 +03:00
const char * service , const char * param ) ;
2008-03-17 20:01:33 +03:00
WERROR smbconf_delete_global_parameter ( struct smbconf_ctx * ctx ,
const char * param ) ;
2008-04-08 03:56:32 +04:00
WERROR smbconf_get_includes ( struct smbconf_ctx * ctx ,
2008-04-08 12:16:03 +04:00
TALLOC_CTX * mem_ctx ,
2008-04-08 03:56:32 +04:00
const char * service ,
uint32_t * num_includes , char * * * includes ) ;
2008-04-08 16:24:42 +04:00
WERROR smbconf_get_global_includes ( struct smbconf_ctx * ctx ,
TALLOC_CTX * mem_ctx ,
uint32_t * num_includes , char * * * includes ) ;
2008-04-08 03:56:32 +04:00
WERROR smbconf_set_includes ( struct smbconf_ctx * ctx ,
const char * service ,
uint32_t num_includes , const char * * includes ) ;
2008-04-08 16:24:42 +04:00
WERROR smbconf_set_global_includes ( struct smbconf_ctx * ctx ,
uint32_t num_includes ,
const char * * includes ) ;
2008-04-10 00:21:15 +04:00
WERROR smbconf_delete_includes ( struct smbconf_ctx * ctx , const char * service ) ;
WERROR smbconf_delete_global_includes ( struct smbconf_ctx * ctx ) ;
2008-03-17 19:29:44 +03:00
2009-02-24 12:52:30 +03:00
WERROR smbconf_transaction_start ( struct smbconf_ctx * ctx ) ;
WERROR smbconf_transaction_commit ( struct smbconf_ctx * ctx ) ;
WERROR smbconf_transaction_cancel ( struct smbconf_ctx * ctx ) ;
2008-03-17 19:29:44 +03:00
# endif /* _LIBSMBCONF_H_ */