1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 /* 27 * Additional API for Identity Mapping Service 28 */ 29 30 #ifndef _IDMAP_PRIV_H 31 #define _IDMAP_PRIV_H 32 33 #pragma ident "%Z%%M% %I% %E% SMI" 34 35 #include "idmap.h" 36 #include "idmap_prot.h" 37 38 #ifdef __cplusplus 39 extern "C" { 40 #endif 41 42 #define IDMAP_MAX_NAME_LEN 512 43 44 #define IDMAP_ERROR(rc) rc != IDMAP_SUCCESS && rc != IDMAP_NEXT 45 #define IDMAP_FATAL_ERROR(rc) rc == IDMAP_ERR_MEMORY ||\ 46 rc == IDMAP_ERR_DB 47 48 /* Opaque handle to batch config add/remove operations */ 49 typedef struct idmap_udt_handle idmap_udt_handle_t; 50 51 /* Opaque iterator */ 52 typedef struct idmap_iter idmap_iter_t; 53 54 55 /* 56 * Update API 57 */ 58 59 /* Create handle for updates */ 60 extern idmap_stat idmap_udt_create(idmap_handle_t *, 61 idmap_udt_handle_t **); 62 63 /* Commit */ 64 extern idmap_stat idmap_udt_commit(idmap_udt_handle_t *); 65 66 /* Destroy the update handle */ 67 extern void idmap_udt_destroy(idmap_udt_handle_t *); 68 69 /* Add name-based mapping rule */ 70 extern idmap_stat idmap_udt_add_namerule(idmap_udt_handle_t *, const char *, 71 boolean_t, const char *, const char *, boolean_t, int); 72 73 /* Remove name-based mapping rule */ 74 extern idmap_stat idmap_udt_rm_namerule(idmap_udt_handle_t *, boolean_t, 75 const char *, const char *, const char *, int); 76 77 /* Flush name-based mapping rules */ 78 extern idmap_stat idmap_udt_flush_namerules(idmap_udt_handle_t *, boolean_t); 79 80 81 /* 82 * Iterator API 83 */ 84 85 /* Create a iterator to get SID to UID/GID mappings */ 86 extern idmap_stat idmap_iter_mappings(idmap_handle_t *, boolean_t, 87 idmap_iter_t **); 88 89 /* Iterate through the SID to UID/GID mappings */ 90 extern idmap_stat idmap_iter_next_mapping(idmap_iter_t *, char **, 91 idmap_rid_t *, uid_t *, char **, char **, char **, int *); 92 93 /* Create a iterator to get name-based mapping rules */ 94 extern idmap_stat idmap_iter_namerules(idmap_handle_t *, const char *, 95 boolean_t, const char *, const char *, idmap_iter_t **); 96 97 /* Iterate through the name-based mapping rules */ 98 extern idmap_stat idmap_iter_next_namerule(idmap_iter_t *, char **, 99 char **, char **, boolean_t *, int *); 100 101 /* Set the number of entries requested per batch */ 102 extern idmap_stat idmap_iter_set_limit(idmap_iter_t *, uint64_t); 103 104 /* Destroy the iterator */ 105 extern void idmap_iter_destroy(idmap_iter_t *); 106 107 108 /* 109 * Get mapping 110 */ 111 extern idmap_stat idmap_get_w2u_mapping(idmap_handle_t *, const char *, 112 idmap_rid_t *, const char *, const char *, int, int *, 113 uid_t *, char **, int *); 114 115 extern idmap_stat idmap_get_u2w_mapping(idmap_handle_t *, uid_t *, 116 const char *, int, int, char **, idmap_rid_t *, char **, 117 char **, int *); 118 119 120 /* 121 * Miscellaneous 122 */ 123 124 /* utf8 to string */ 125 extern idmap_stat idmap_utf82str(char **, size_t, idmap_utf8str *); 126 127 /* string to utf8 */ 128 extern idmap_stat idmap_str2utf8(idmap_utf8str **, const char *, int); 129 130 /* string to status */ 131 extern idmap_stat idmap_string2stat(const char *); 132 133 /* internal status to protocol status */ 134 extern idmap_stat idmap_stat4prot(idmap_stat); 135 136 /* enable/disable verbose mode for API */ 137 extern void idmap_set_verbose(boolean_t); 138 139 #ifdef __cplusplus 140 } 141 #endif 142 143 #endif /* _IDMAP_PRIV_H */ 144