Blame src/kdc/realm_data.h

Packit fd8b60
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
Packit fd8b60
/* kdc/realm_data.h */
Packit fd8b60
/*
Packit fd8b60
 * Copyright (C) 2012 by the Massachusetts Institute of Technology.
Packit fd8b60
 * All rights reserved.
Packit fd8b60
 *
Packit fd8b60
 * Redistribution and use in source and binary forms, with or without
Packit fd8b60
 * modification, are permitted provided that the following conditions
Packit fd8b60
 * are met:
Packit fd8b60
 *
Packit fd8b60
 * * Redistributions of source code must retain the above copyright
Packit fd8b60
 *   notice, this list of conditions and the following disclaimer.
Packit fd8b60
 *
Packit fd8b60
 * * Redistributions in binary form must reproduce the above copyright
Packit fd8b60
 *   notice, this list of conditions and the following disclaimer in
Packit fd8b60
 *   the documentation and/or other materials provided with the
Packit fd8b60
 *   distribution.
Packit fd8b60
 *
Packit fd8b60
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit fd8b60
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit fd8b60
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
Packit fd8b60
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
Packit fd8b60
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
Packit fd8b60
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Packit fd8b60
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Packit fd8b60
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Packit fd8b60
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
Packit fd8b60
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
Packit fd8b60
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
Packit fd8b60
 * OF THE POSSIBILITY OF SUCH DAMAGE.
Packit fd8b60
 */
Packit fd8b60
Packit fd8b60
#ifndef REALM_DATA_H
Packit fd8b60
#define REALM_DATA_H
Packit fd8b60
Packit fd8b60
typedef struct __kdc_realm_data {
Packit fd8b60
    /*
Packit fd8b60
     * General Kerberos per-realm data.
Packit fd8b60
     */
Packit fd8b60
    char *              realm_name;     /* Realm name                       */
Packit fd8b60
/* XXX the real context should go away once the db_context is done.
Packit fd8b60
 * The db_context is then associated with the realm keytab using
Packit fd8b60
 * krb5_ktkdb_resolv(). There should be nothing in the context which
Packit fd8b60
 * cannot span multiple realms -- proven */
Packit fd8b60
    krb5_context        realm_context;  /* Context to be used for realm     */
Packit fd8b60
    krb5_keytab         realm_keytab;   /* keytab to be used for this realm */
Packit fd8b60
    char *              realm_hostbased; /* referral services for NT-UNKNOWN */
Packit fd8b60
    char *              realm_no_referral; /* non-referral services         */
Packit fd8b60
    /*
Packit fd8b60
     * Database per-realm data.
Packit fd8b60
     */
Packit fd8b60
    char *              realm_stash;    /* Stash file name for realm        */
Packit fd8b60
    char *              realm_mpname;   /* Master principal name for realm  */
Packit fd8b60
    krb5_principal      realm_mprinc;   /* Master principal for realm       */
Packit fd8b60
    /*
Packit fd8b60
     * Note realm_mkey is mkey read from stash or keyboard and may not be the
Packit fd8b60
     * latest.
Packit fd8b60
     */
Packit fd8b60
    krb5_keyblock       realm_mkey;     /* Master key for this realm        */
Packit fd8b60
    /*
Packit fd8b60
     * TGS per-realm data.
Packit fd8b60
     */
Packit fd8b60
    krb5_principal      realm_tgsprinc; /* TGS principal for this realm     */
Packit fd8b60
    /*
Packit fd8b60
     * Other per-realm data.
Packit fd8b60
     */
Packit fd8b60
    char                *realm_listen;  /* Per-realm KDC UDP listen */
Packit fd8b60
    char                *realm_tcp_listen; /* Per-realm KDC TCP listen */
Packit fd8b60
    /*
Packit fd8b60
     * Per-realm parameters.
Packit fd8b60
     */
Packit fd8b60
    krb5_deltat         realm_maxlife;  /* Maximum ticket life for realm    */
Packit fd8b60
    krb5_deltat         realm_maxrlife; /* Maximum renewable life for realm */
Packit fd8b60
    krb5_boolean        realm_reject_bad_transit; /* Accept unverifiable transited_realm ? */
Packit fd8b60
    krb5_boolean        realm_restrict_anon;  /* Anon to local TGT only */
Packit fd8b60
} kdc_realm_t;
Packit fd8b60
Packit fd8b60
struct server_handle {
Packit fd8b60
    kdc_realm_t **kdc_realmlist;
Packit fd8b60
    int kdc_numrealms;
Packit fd8b60
    krb5_context kdc_err_context;
Packit fd8b60
};
Packit fd8b60
Packit fd8b60
kdc_realm_t *find_realm_data(struct server_handle *, char *, krb5_ui_4);
Packit fd8b60
kdc_realm_t *setup_server_realm(struct server_handle *, krb5_principal);
Packit fd8b60
Packit fd8b60
/*
Packit fd8b60
 * These macros used to refer to a global pointer to the active realm state
Packit fd8b60
 * structure for a request.  They now refer to a local variable that must be
Packit fd8b60
 * properly declared in each function that uses these macros.
Packit fd8b60
 */
Packit fd8b60
#define kdc_context                     kdc_active_realm->realm_context
Packit fd8b60
#define tgs_server                      kdc_active_realm->realm_tgsprinc
Packit fd8b60
Packit fd8b60
#endif  /* REALM_DATA_H */