2003-06-27 03:48:46 +04:00
# ifndef _IDMAP_H_
# define _IDMAP_H_
2003-03-08 02:47:59 +03:00
/*
Unix SMB / CIFS implementation .
Idmap headers
2003-08-01 19:21:20 +04:00
Copyright ( C ) Jim McDonough < jmcd @ us . ibm . com > 2003
2003-03-08 02:47:59 +03:00
Copyright ( C ) Simo Sorce 2003
2011-03-03 14:51:57 +03:00
2003-03-08 02:47:59 +03:00
This library is free software ; you can redistribute it and / or
2007-07-10 08:04:46 +04:00
modify it under the terms of the GNU Lesser General Public
2003-03-08 02:47:59 +03:00
License as published by the Free Software Foundation ; either
2007-07-10 06:31:50 +04:00
version 3 of the License , or ( at your option ) any later version .
2011-03-03 14:51:57 +03:00
2003-03-08 02:47:59 +03:00
This library 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
Library General Public License for more details .
2011-03-03 14:51:57 +03:00
2007-07-10 08:04:46 +04:00
You should have received a copy of the GNU Lesser General Public License
2007-07-10 06:31:50 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2003-03-08 02:47:59 +03:00
*/
2006-07-11 22:01:26 +04:00
/* The interface version specifier.
Updated to 3 for enum types by JRA . */
2003-05-29 23:08:40 +04:00
2006-12-12 17:52:13 +03:00
/* Updated to 4, completely new interface, SSS */
2008-09-19 21:51:40 +04:00
/* Updated to 5, simplified interface by Volker */
2017-04-20 22:24:43 +03:00
/* Updated to 6, modules now take TALLOC_CTX * init parameter. */
2003-03-08 02:47:59 +03:00
2017-04-20 22:24:43 +03:00
# define SMB_IDMAP_INTERFACE_VERSION 6
2003-03-08 20:29:40 +03:00
2010-08-18 20:13:42 +04:00
# include "librpc/gen_ndr/idmap.h"
2016-12-29 12:56:29 +03:00
struct wbint_userinfo ;
2006-12-12 17:52:13 +03:00
struct idmap_domain {
const char * name ;
struct idmap_methods * methods ;
2016-12-29 12:56:29 +03:00
NTSTATUS ( * query_user ) ( struct idmap_domain * domain ,
struct wbint_userinfo * info ) ;
2010-06-16 18:05:34 +04:00
uint32_t low_id ;
uint32_t high_id ;
2010-07-29 19:51:13 +04:00
bool read_only ;
2008-07-13 14:07:40 +04:00
void * private_data ;
2006-12-12 17:52:13 +03:00
} ;
2003-03-08 20:29:40 +03:00
2003-03-08 02:47:59 +03:00
/* Filled out by IDMAP backends */
struct idmap_methods {
/* Called when backend is first loaded */
2011-03-03 01:00:58 +03:00
NTSTATUS ( * init ) ( struct idmap_domain * dom ) ;
2006-12-12 17:52:13 +03:00
2007-04-20 02:26:09 +04:00
/* Map an array of uids/gids to SIDs. The caller specifies
the uid / gid and type . Gets back the SID . */
2006-12-12 17:52:13 +03:00
NTSTATUS ( * unixids_to_sids ) ( struct idmap_domain * dom , struct id_map * * ids ) ;
2007-04-20 02:26:09 +04:00
/* Map an arry of SIDs to uids/gids. The caller sets the SID
and type and gets back a uid or gid . */
2006-12-12 17:52:13 +03:00
NTSTATUS ( * sids_to_unixids ) ( struct idmap_domain * dom , struct id_map * * ids ) ;
2007-04-20 02:26:09 +04:00
2010-06-22 16:31:24 +04:00
/* Allocate a Unix-ID. */
NTSTATUS ( * allocate_id ) ( struct idmap_domain * dom , struct unixid * id ) ;
2006-12-12 17:52:13 +03:00
} ;
2010-08-18 20:13:42 +04:00
# include "winbindd/idmap_proto.h"
2003-06-27 03:48:46 +04:00
# endif /* _IDMAP_H_ */