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

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