Files
Arquivotheca.AIX-4.1.3/bos/kernel/sys/pcl.h
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

125 lines
3.3 KiB
C

/* @(#)29 1.2 src/bos/kernel/sys/pcl.h, syssdac, bos411, 9428A410j 6/16/90 00:33:30 */
/*
* COMPONENT_NAME: SYSSEC - Security Component
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1989
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
#ifndef _H_PCL
#define _H_PCL
/*
* PCL Structure and Definitions
*
* COMPONENT_NAME: tcbpriv
*
* ORIGIN: IBM
*
* Copyright International Business Machines Corp. 1988
* All Rights Reserved
* Licensed Material - Property of IBM
*
* RESTRICTED RIGHTS LEGEND
* Use, Duplication or Disclosure by the Government is subject to
* restrictions as set forth in paragraph (b)(3)(B) of the Rights in
* Technical Data and Computer Software clause in DAR 7-104.9(a).
*
* NOTES:
* This header file should be included in any source file which
* accesses privilege vectors.
*/
/* the format for each process characteristic is: */
struct pce_id
{
unsigned short id_len; /* length of identifier */
unsigned short id_type; /* type of specifier */
#define PCEID_USER 1
#define PCEID_GROUP 2
long id_data[1]; /* length of data is actually (id_len - 4) */
};
/* address past the last ID in the pcl */
#define pcl_id_last(a) \
((struct pce_id *)(((char *)(a)) + (a)->pce_len))
/* advance to the next identifier in an pcl entry */
#define pcl_id_nxt(id) \
((struct pce_id *) (((char*)(id))+(((struct pce_id *)(id))->id_len)))
/* general format of a pcl entry (variable length) */
struct pcl_entry
{
unsigned long pce_len; /* total length of pcl entry */
priv_t pce_privs; /* privileges granted by this entry */
/*
* list of attributes to be satisfied
* for this pcl entry to be applicable
*/
struct pce_id pce_id[1];
};
/*
* meanings of the fields:
*
* pce_len The total length of the privilege control entry. This
* is always a multiple of 4, and includes the header
* fields and the sum of the lengths of the process
* identifiers.
*
* pce_privs The privileges to be acquired if the process satisfies
* the identification.
*
* pce_id A variable length list of process characteristics, each
* structure specifies a process attribute which must be
* satisfied for the privilege control entry to be
* applicable. The format of these are identical to the
* definition of the acl_id structure in <sys/acl.h>.
*/
/* advance to the next entry in an pcl */
#define pcl_nxt(a) \
((struct pcl_entry *)(((char *)(a))+(((struct pcl_entry *)(a))->pce_len)))
/* address past the last entry in the pcl */
#define pcl_last(a) \
((struct pcl_entry *)(((char *)(a)) + (a)->pcl_len))
/*
* Privilege Control List definition
*/
struct pcl
{
unsigned long pcl_len;
unsigned long pcl_mode;
priv_t pcl_default;
struct pcl_entry pcl_ext[1];
};
#define PCL_SIZ ((int) &(((struct pcl *) 0)->pcl_ext[0]))
/*
* meanings of the fields:
*
* pcl_len The total length of the privilege control list. This
* should always be a multiple of 4.
*
* pcl_default The default set of privileges acquired by executing
* this file.
*
* pcl_ext Extended privilege control entries. The format of
* these is described below. These can only increase
* the privileges granted by the file.
*/
#endif /* _H_PCL */