Blame src/plugins/kdb/db2/policy_db.h

Packit fd8b60
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
Packit fd8b60
/*
Packit fd8b60
 * Data Types for policy and principal information that
Packit fd8b60
 * exists in the respective databases.
Packit fd8b60
 *
Packit fd8b60
 * $Header$
Packit fd8b60
 *
Packit fd8b60
 * This file was originally created with rpcgen.
Packit fd8b60
 * It has been hacked up since then.
Packit fd8b60
 */
Packit fd8b60
Packit fd8b60
#ifndef __ADB_H__
Packit fd8b60
#define __ADB_H__
Packit fd8b60
#include <sys/types.h>
Packit fd8b60
#include <errno.h>
Packit fd8b60
#include <krb5.h>
Packit fd8b60
#include <kdb.h>
Packit fd8b60
/* Okay, this is a bit obscure.  The libdb2 configure script doesn't
Packit fd8b60
   detect it, but on Tru64 5.1, netinet/in.h causes sys/bittypes.h to
Packit fd8b60
   be included, and that has a typedef for u_int32_t.  Because the
Packit fd8b60
   configure script doesn't detect it, it causes db-config.h to have a
Packit fd8b60
   #define for u_int32_t, so including db.h and then netinet/in.h
Packit fd8b60
   causes compilation to fail.
Packit fd8b60
Packit fd8b60
   Since gssrpc/types.h includes netinet/in.h, including that first
Packit fd8b60
   will cause the typedef to be seen before the macro definition,
Packit fd8b60
   which still isn't quite right, but is close enough for now.
Packit fd8b60
Packit fd8b60
   A better fix might be for db.h to include netinet/in.h if that's
Packit fd8b60
   where we find u_int32_t.  */
Packit fd8b60
#include <gssrpc/types.h>
Packit fd8b60
#include <gssrpc/xdr.h>
Packit fd8b60
#include <db.h>
Packit fd8b60
#include "adb_err.h"
Packit fd8b60
#include <com_err.h>
Packit fd8b60
Packit fd8b60
/* DB2 uses EFTYPE to indicate a database file of the wrong format, and falls
Packit fd8b60
 * back to EINVAL if the platform does not define EFTYPE. */
Packit fd8b60
#ifdef EFTYPE
Packit fd8b60
#define IS_EFTYPE(e) ((e) == EFTYPE || (e) == EINVAL)
Packit fd8b60
#else
Packit fd8b60
#define IS_EFTYPE(e) ((e) == EINVAL)
Packit fd8b60
#endif
Packit fd8b60
Packit fd8b60
typedef long            osa_adb_ret_t;
Packit fd8b60
Packit fd8b60
#define OSA_ADB_POLICY_DB_MAGIC 0x12345A00
Packit fd8b60
Packit fd8b60
#define OSA_ADB_POLICY_VERSION_MASK     0x12345D00
Packit fd8b60
#define OSA_ADB_POLICY_VERSION_1        0x12345D01
Packit fd8b60
#define OSA_ADB_POLICY_VERSION_2        0x12345D02
Packit fd8b60
#define OSA_ADB_POLICY_VERSION_3        0x12345D03
Packit fd8b60
Packit fd8b60
Packit fd8b60
Packit fd8b60
typedef struct _osa_adb_db_lock_ent_t {
Packit fd8b60
    FILE     *lockfile;
Packit fd8b60
    char     *filename;
Packit fd8b60
    int      refcnt, lockmode, lockcnt;
Packit fd8b60
    krb5_context context;
Packit fd8b60
} osa_adb_lock_ent, *osa_adb_lock_t;
Packit fd8b60
Packit fd8b60
typedef struct _osa_adb_db_ent_t {
Packit fd8b60
    int        magic;
Packit fd8b60
    DB         *db;
Packit fd8b60
    HASHINFO   info;
Packit fd8b60
    BTREEINFO  btinfo;
Packit fd8b60
    char       *filename;
Packit fd8b60
    osa_adb_lock_t lock;
Packit fd8b60
    int        opencnt;
Packit fd8b60
} osa_adb_db_ent, *osa_adb_db_t, *osa_adb_princ_t, *osa_adb_policy_t;
Packit fd8b60
Packit fd8b60
/*
Packit fd8b60
 * Return Code (the rest are in adb_err.h)
Packit fd8b60
 */
Packit fd8b60
Packit fd8b60
#define OSA_ADB_OK              0
Packit fd8b60
Packit fd8b60
/*
Packit fd8b60
 * Functions
Packit fd8b60
 */
Packit fd8b60
Packit fd8b60
krb5_error_code osa_adb_create_db(char *filename, char *lockfile, int magic);
Packit fd8b60
krb5_error_code osa_adb_destroy_db(char *filename, char *lockfile, int magic);
Packit fd8b60
krb5_error_code osa_adb_init_db(osa_adb_db_t *dbp, char *filename,
Packit fd8b60
                                char *lockfile, int magic);
Packit fd8b60
krb5_error_code osa_adb_fini_db(osa_adb_db_t db, int magic);
Packit fd8b60
krb5_error_code osa_adb_get_lock(osa_adb_db_t db, int mode);
Packit fd8b60
krb5_error_code osa_adb_release_lock(osa_adb_db_t db);
Packit fd8b60
krb5_error_code osa_adb_open_and_lock(osa_adb_princ_t db, int locktype);
Packit fd8b60
krb5_error_code osa_adb_close_and_unlock(osa_adb_princ_t db);
Packit fd8b60
krb5_error_code osa_adb_create_policy(osa_adb_policy_t db,
Packit fd8b60
                                      osa_policy_ent_t entry);
Packit fd8b60
krb5_error_code osa_adb_destroy_policy(osa_adb_policy_t db,
Packit fd8b60
                                       char * name);
Packit fd8b60
krb5_error_code osa_adb_get_policy(osa_adb_policy_t db, char *name,
Packit fd8b60
                                   osa_policy_ent_t *entry);
Packit fd8b60
krb5_error_code osa_adb_put_policy(osa_adb_policy_t db,
Packit fd8b60
                                   osa_policy_ent_t entry);
Packit fd8b60
krb5_error_code osa_adb_iter_policy(osa_adb_policy_t db,
Packit fd8b60
                                    osa_adb_iter_policy_func func,
Packit fd8b60
                                    void * data);
Packit fd8b60
void osa_free_policy_ent(osa_policy_ent_t val);
Packit fd8b60
Packit fd8b60
bool_t xdr_osa_policy_ent_rec(XDR *xdrs, osa_policy_ent_t objp);
Packit fd8b60
Packit fd8b60
#endif /* __ADB_H__ */