Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : 4 : idmap PASSDB backend 5 : 6 : Copyright (C) Simo Sorce 2006 7 : 8 : This program is free software; you can redistribute it and/or modify 9 : it under the terms of the GNU General Public License as published by 10 : the Free Software Foundation; either version 3 of the License, or 11 : (at your option) any later version. 12 : 13 : This program is distributed in the hope that it will be useful, 14 : but WITHOUT ANY WARRANTY; without even the implied warranty of 15 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 : GNU General Public License for more details. 17 : 18 : You should have received a copy of the GNU General Public License 19 : along with this program. If not, see <http://www.gnu.org/licenses/>. 20 : */ 21 : 22 : #include "includes.h" 23 : #include "idmap.h" 24 : #include "passdb.h" 25 : 26 : #undef DBGC_CLASS 27 : #define DBGC_CLASS DBGC_IDMAP 28 : 29 : /***************************** 30 : Initialise idmap database. 31 : *****************************/ 32 : 33 0 : static NTSTATUS idmap_pdb_init(struct idmap_domain *dom) 34 : { 35 0 : return NT_STATUS_OK; 36 : } 37 : 38 : /********************************** 39 : lookup a set of unix ids. 40 : **********************************/ 41 : 42 0 : static NTSTATUS idmap_pdb_unixids_to_sids(struct idmap_domain *dom, struct id_map **ids) 43 : { 44 0 : int i; 45 : 46 0 : for (i = 0; ids[i]; i++) { 47 : /* unmapped by default */ 48 0 : ids[i]->status = ID_UNMAPPED; 49 : 50 0 : if (pdb_id_to_sid(&ids[i]->xid, ids[i]->sid)) { 51 0 : ids[i]->status = ID_MAPPED; 52 : } 53 : } 54 : 55 0 : return NT_STATUS_OK; 56 : } 57 : 58 : /********************************** 59 : lookup a set of sids. 60 : **********************************/ 61 : 62 0 : static NTSTATUS idmap_pdb_sids_to_unixids(struct idmap_domain *dom, struct id_map **ids) 63 : { 64 0 : int i; 65 : 66 0 : for (i = 0; ids[i]; i++) { 67 0 : if (pdb_sid_to_id(ids[i]->sid, &ids[i]->xid)) { 68 0 : ids[i]->status = ID_MAPPED; 69 : } else { 70 : /* Query Failed */ 71 0 : ids[i]->status = ID_UNMAPPED; 72 : } 73 : } 74 : 75 0 : return NT_STATUS_OK; 76 : } 77 : 78 : static const struct idmap_methods passdb_methods = { 79 : .init = idmap_pdb_init, 80 : .unixids_to_sids = idmap_pdb_unixids_to_sids, 81 : .sids_to_unixids = idmap_pdb_sids_to_unixids, 82 : }; 83 : 84 0 : NTSTATUS idmap_passdb_init(TALLOC_CTX *mem_ctx) 85 : { 86 0 : return smb_register_idmap(SMB_IDMAP_INTERFACE_VERSION, "passdb", &passdb_methods); 87 : }