#ifdef AIX_PROD
/* @(#)75	1.9  src/dce/utils/acldb/aclif.h, dce.utils.acldb.src, os2dce21.dss, 960602a.1 12/22/95 09:26:28  */
/*
 *   COMPONENT_NAME: dce.utils.acldb.src
 *
 *   FUNCTIONS: none
 *
 *   ORIGINS: 72
 *
 */
#endif /* AIX_PROD */
/* ______________________________________________________________________ */
/*
 * @OSF_COPYRIGHT@
 * COPYRIGHT NOTICE
 * Copyright (c) 1993 Open Software Foundation, Inc.
 * ALL RIGHTS RESERVED (DCE).  See the file named COPYRIGHT.DCE in the
 * src directory for the full copyright text.
 */
/*
 * HISTORY
 * $Log: aclif.h,v $
 * Revision 1.1.2.5  1994/07/15  17:27:05  bowe
 * 	Remove dce_acl_g_helpstring. [CR 11308]
 * 	[1994/07/15  17:26:21  bowe]
 *
 * Revision 1.1.2.4  1994/07/13  22:09:52  bowe
 * 	Declare rdacl EPVs.  [CR 10678]
 * 	Include size of dce_acl_g_printstring. [CR 11284]
 * 	[1994/07/13  22:09:34  bowe]
 * 
 * Revision 1.1.2.3  1994/05/05  15:18:54  bowe
 * 	Added prototypes for dce_acl_obj_init() and
 * 	dce_acl_obj_free_entries() [CR 10001]
 * 	[1994/05/05  13:29:28  bowe]
 * 
 * Revision 1.1.2.2  1994/04/26  19:11:27  bowe
 * 	Adjust prototypes to reflect new reality.
 * 	Added new globals: dce_acl_g_printstring, dce_acl_g_helpstring.
 * 	#define flags for dce_acl_register_object_type().
 * 	[1994/04/26  17:45:45  bowe]
 * 
 * Revision 1.1.2.1  1994/01/24  22:01:33  bowe
 * 	Initial checkin
 * 	[1994/01/24  21:59:24  bowe]
 * 
 * Revision 1.1.2.1  1993/12/20  13:43:54  bowe
 * 	Added another param (for mgr_type) to dce_acl_is_client_authorized()
 * 	and dce_acl_inq_client_permset().
 * 	[1993/12/17  22:05:50  bowe]
 * 
 * 	Initial revision.
 * 	[1993/12/16  20:40:05  bowe]
 * 
 * $EndLog$
 */
/* ______________________________________________________________________
 *
 *  ACL management library routines.
 */
#ifdef __cplusplus /* CMVC 18393  */
extern "C"  {
#endif  /* CMVC 18393  */


#include <dce/aclbase.h>
#include <dce/id_epac.h>
#include <dce/sec_cred.h>
#include <dce/dbif.h>
#include <dce/dcelibmsg.h>
#include <dce/dceacl.h>
#include <dce/rdaclifv0.h>
#include <dce/rdaclif.h>

/* constants */
#define dce_acl_c_no_permissions	((sec_acl_permset_t)0)
/* flags for dce_acl_register_object_type() */
#define dce_acl_c_orphans_ok	0x01
#define dce_acl_c_has_owner	0x02
#define dce_acl_c_has_groups	0x04

/* type definitions */
typedef void (*dce_acl_resolve_func_t)(
    /* [in] parameters */
	handle_t, sec_acl_component_name_t, sec_acl_type_t,
	uuid_t *, boolean32, void *,
    /* [out] parameters */
	uuid_t *, error_status_t *
);

/*
 * Global definition for common printstring.
 * The size must match what is defined in aclconv.c.
 */
extern sec_acl_printstring_t	dce_acl_g_printstring[7];

#ifdef IBMOS2 /* CMVC 18964  */
  extern rdaclif_v0_0_epv_t DCEVAR dce_acl_v0_0_epv;
  extern rdaclif_v1_0_epv_t DCEVAR dce_acl_v1_0_epv;
#else
  extern rdaclif_v0_0_epv_t dce_acl_v0_0_epv;
  extern rdaclif_v1_0_epv_t dce_acl_v1_0_epv;
#endif  /* CMVC 18964 */

/* ACL lib function prototypes */
/*
dce_acl_resolve_func_t dce_acl_resolve_by_uuid();
dce_acl_resolve_func_t dce_acl_resolve_by_name();
*/

#ifdef IBMOS2 /* CMVC 18393 */
  #ifndef DCEAPI
    #include <dce/dcedef.h>
  #endif
void DCEAPI dce_acl_resolve_by_uuid(
#else
void dce_acl_resolve_by_uuid(
#endif /* CMVC 18393 */
	handle_t, sec_acl_component_name_t, sec_acl_type_t,
	uuid_t *, boolean32, void *, uuid_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void  DCEAPI dce_acl_resolve_by_name(
#else
void dce_acl_resolve_by_name(
#endif /* CMVC 18393 */
	handle_t, sec_acl_component_name_t, sec_acl_type_t,
	uuid_t *, boolean32, void *, uuid_t *, error_status_t *);

/* called by server once for each managed obj type */

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_register_object_type(
#else
void dce_acl_register_object_type(
#endif /* CMVC 18393 */
	dce_db_handle_t, uuid_t *, unsigned32,
	sec_acl_printstring_t *, sec_acl_printstring_t *,
	sec_acl_permset_t, sec_acl_permset_t, dce_acl_resolve_func_t, void *,
	unsigned32, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void  DCEAPI dce_acl_inq_acl_from_header(
#else
void dce_acl_inq_acl_from_header(
#endif /* CMVC 18393 */
	dce_db_header_t, sec_acl_type_t, uuid_t *,
	error_status_t *);

/* for creating and adding to an ACL */

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_init(
#else
void dce_acl_obj_init(
#endif /* CMVC 18393 */
	uuid_t *, sec_acl_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_free_entries(
#else
void dce_acl_obj_free_entries(
#endif /* CMVC 18393 */
	sec_acl_t *, error_status_t*);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_add_user_entry(
#else
void dce_acl_obj_add_user_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_permset_t, uuid_t *,
	error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_add_group_entry(
#else
void dce_acl_obj_add_group_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_permset_t, uuid_t *,
	error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void  DCEAPI dce_acl_obj_add_id_entry(
#else
void dce_acl_obj_add_id_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_entry_type_t,
	sec_acl_permset_t, uuid_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_add_unauth_entry(
#else
void dce_acl_obj_add_unauth_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_permset_t,
	error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_add_any_other_entry(
#else
void dce_acl_obj_add_any_other_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_permset_t,
	error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_obj_add_obj_entry(
#else
void dce_acl_obj_add_obj_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_entry_type_t,
	sec_acl_permset_t, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void  DCEAPI dce_acl_obj_add_foreign_entry(
#else
void dce_acl_obj_add_foreign_entry(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_entry_type_t,
	sec_acl_permset_t, uuid_t *, uuid_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void  DCEAPI dce_acl_copy_acl(
#else
void dce_acl_copy_acl(
#endif /* CMVC 18393 */
	sec_acl_t *, sec_acl_t *, error_status_t *);

/* various convenience routines */

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_is_client_authorized(
#else
void dce_acl_is_client_authorized(
#endif /* CMVC 18393 */
	handle_t, uuid_t *, uuid_t *,
	uuid_t *, uuid_t *, sec_acl_permset_t, boolean32 *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_inq_client_permset(
#else
void dce_acl_inq_client_permset(
#endif /* CMVC 18393 */
	handle_t, uuid_t *, uuid_t *,
	uuid_t *, uuid_t *, sec_acl_permset_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_inq_client_creds(
#else
void dce_acl_inq_client_creds(
#endif /* CMVC 18393 */
	handle_t, rpc_authz_cred_handle_t *,
	error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_inq_permset_for_creds(
#else
void dce_acl_inq_permset_for_creds(
#endif /* CMVC 18393 */
	rpc_authz_cred_handle_t, sec_acl_t *,
	uuid_t *, uuid_t *, sec_acl_posix_semantics_t,
	sec_acl_permset_t *, error_status_t *);

#ifdef IBMOS2 /* CMVC 18393 */
boolean32 DCEAPI dce_acl_is_unauthenticated(
#else
boolean32 dce_acl_is_unauthenticated(
#endif /* CMVC 18393 */
	rpc_authz_cred_handle_t);

#ifdef IBMOS2 /* CMVC 18393 */
void DCEAPI dce_acl_inq_prin_and_group(
#else
void dce_acl_inq_prin_and_group(
#endif /* CMVC 18393 */
	handle_t, uuid_t *, uuid_t *, error_status_t *);

#ifdef __cplusplus /* CMVC 18393  */
 }
#endif  /* CMVC 18393  */
