1/* $NetBSD: private.h,v 1.2 2017/01/28 21:31:49 christos Exp $ */ 2 3/* 4 * Copyright (c) 1997-2000 Kungliga Tekniska H��gskolan 5 * (Royal Institute of Technology, Stockholm, Sweden). 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * 3. Neither the name of the Institute nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36/* Id */ 37 38#ifndef __kadm5_privatex_h__ 39#define __kadm5_privatex_h__ 40 41#ifdef HAVE_SYS_UN_H 42#include <sys/un.h> 43#endif 44 45struct kadm_func { 46 kadm5_ret_t (*chpass_principal) (void *, krb5_principal, int, 47 int, krb5_key_salt_tuple*, const char*); 48 kadm5_ret_t (*create_principal) (void*, kadm5_principal_ent_t, uint32_t, 49 int, krb5_key_salt_tuple *, 50 const char*); 51 kadm5_ret_t (*delete_principal) (void*, krb5_principal); 52 kadm5_ret_t (*destroy) (void*); 53 kadm5_ret_t (*flush) (void*); 54 kadm5_ret_t (*get_principal) (void*, krb5_principal, 55 kadm5_principal_ent_t, uint32_t); 56 kadm5_ret_t (*get_principals) (void*, const char*, char***, int*); 57 kadm5_ret_t (*get_privs) (void*, uint32_t*); 58 kadm5_ret_t (*modify_principal) (void*, kadm5_principal_ent_t, uint32_t); 59 kadm5_ret_t (*randkey_principal) (void*, krb5_principal, krb5_boolean, int, 60 krb5_key_salt_tuple*, krb5_keyblock**, 61 int*); 62 kadm5_ret_t (*rename_principal) (void*, krb5_principal, krb5_principal); 63 kadm5_ret_t (*chpass_principal_with_key) (void *, krb5_principal, int, 64 int, krb5_key_data *); 65 kadm5_ret_t (*lock) (void *); 66 kadm5_ret_t (*unlock) (void *); 67 kadm5_ret_t (*setkey_principal_3) (void *, krb5_principal, krb5_boolean, 68 int, krb5_key_salt_tuple *, 69 krb5_keyblock *, int); 70}; 71 72/* XXX should be integrated */ 73typedef struct kadm5_common_context { 74 krb5_context context; 75 krb5_boolean my_context; 76 struct kadm_func funcs; 77 void *data; 78} kadm5_common_context; 79 80typedef struct kadm5_log_peer { 81 int fd; 82 char *name; 83 krb5_auth_context ac; 84 struct kadm5_log_peer *next; 85} kadm5_log_peer; 86 87typedef struct kadm5_log_context { 88 char *log_file; 89 int log_fd; 90 int read_only; 91 int lock_mode; 92 uint32_t version; 93 time_t last_time; 94#ifndef NO_UNIX_SOCKETS 95 struct sockaddr_un socket_name; 96#else 97 struct addrinfo *socket_info; 98#endif 99 krb5_socket_t socket_fd; 100} kadm5_log_context; 101 102typedef struct kadm5_server_context { 103 krb5_context context; 104 krb5_boolean my_context; 105 struct kadm_func funcs; 106 /* */ 107 kadm5_config_params config; 108 HDB *db; 109 int keep_open; 110 krb5_principal caller; 111 unsigned acl_flags; 112 kadm5_log_context log_context; 113} kadm5_server_context; 114 115typedef struct kadm5_client_context { 116 krb5_context context; 117 krb5_boolean my_context; 118 struct kadm_func funcs; 119 /* */ 120 krb5_auth_context ac; 121 char *realm; 122 char *admin_server; 123 int kadmind_port; 124 krb5_socket_t sock; 125 char *client_name; 126 char *service_name; 127 krb5_prompter_fct prompter; 128 const char *keytab; 129 krb5_ccache ccache; 130 kadm5_config_params *realm_params; 131} kadm5_client_context; 132 133typedef struct kadm5_ad_context { 134 krb5_context context; 135 krb5_boolean my_context; 136 struct kadm_func funcs; 137 /* */ 138 kadm5_config_params config; 139 krb5_principal caller; 140 krb5_ccache ccache; 141 char *client_name; 142 char *realm; 143 void *ldap_conn; 144 char *base_dn; 145} kadm5_ad_context; 146 147/* 148 * This enum is used in the iprop log file and on the wire in the iprop 149 * protocol. DO NOT CHANGE, except to add new op types at the end, and 150 * look for places in lib/kadm5/log.c to update. 151 */ 152enum kadm_ops { 153 kadm_get, 154 kadm_delete, 155 kadm_create, 156 kadm_rename, 157 kadm_chpass, 158 kadm_modify, 159 kadm_randkey, 160 kadm_get_privs, 161 kadm_get_princs, 162 kadm_chpass_with_key, 163 kadm_nop, 164 kadm_first = kadm_get, 165 kadm_last = kadm_nop 166}; 167 168/* FIXME nop types are currently not implemented */ 169enum kadm_nop_type { 170 kadm_nop_plain, /* plain nop, not relevance except as uberblock */ 171 kadm_nop_trunc, /* indicates that the master truncated the log */ 172 kadm_nop_close /* indicates that the master closed this log */ 173}; 174 175enum kadm_iter_opts { 176 kadm_forward = 1, 177 kadm_backward = 2, 178 kadm_confirmed = 4, 179 kadm_unconfirmed = 8 180}; 181 182enum kadm_recover_mode { 183 kadm_recover_commit, 184 kadm_recover_replay 185}; 186 187#define KADMIN_APPL_VERSION "KADM0.1" 188#define KADMIN_OLD_APPL_VERSION "KADM0.0" 189 190#include "kadm5-private.h" 191 192#endif /* __kadm5_privatex_h__ */ 193