/* * * Security classification mask block. */ #ifndef _CLSDEF_H #define _CLSDEF_H /* Contains security and integrity level and categories for non-discretionary access controls. */ /* class block type identifiers */ #define CLS$K_MIN_SEC_LEV 0 /* minimum secrecy level */ #define CLS$K_MIN_INT_LEV 0 /* minimum integrity level */ #define CLS$K_MAX_SEC_LEV 255 /* maximum secrecy level */ #define CLS$K_MAX_INT_LEV 255 /* maximum integrity level */ #define CLS$K_MIN_SEC_CAT 1 /* minimum secrecy category */ #define CLS$K_MIN_INT_CAT 1 /* minimum integrity category */ #define CLS$K_MAX_SEC_CAT_S64I64 64 /* maximum type 0 secrecy category */ #define CLS$K_MAX_INT_CAT_S64I64 64 /* maximum type 0 integrity category */ #define CLS$K_MAX_SEC_CAT_s128 128 /* maximum type 1 secrecy category */ #define CLS$K_TYP_S64I64 0 /* type 0 class block identifier */ #define CLS$K_TYP_S128 1 /* type 1 class block identifier */ #define CLS$K_LENGTH_S64I64 20 /* size of type 0 class block */ #define CLS$K_LENGTH_S128 20 /* size of type 1 class block */ #define CLS$K_LENGTH 20 /* length of structure */ #ifndef NO_VMS_V6 union clsdef { struct { unsigned char cls$b_sec_lev; /* secrecy level */ unsigned char cls$b_int_lev; /* integrity level */ unsigned char cls$b_type; /* class block type */ char cls$b_rsvd; /* reserved */ union { /* type dependent overlays/extensions */ struct { /* type 0 class block fields */ unsigned int cls$q_sec_cat_s64i64[2]; /* secrecy category mask */ unsigned int cls$q_int_cat_s64i64[2]; /* integrity category mask */ } cls$r_clsdef_s64i64; struct { /* type 1 class block fields */ unsigned int cls$o_sec_cat_s128[4]; /* secrecy category mask */ } cls$r_clsdef_s128; struct { /* type 0 class block fields */ unsigned int cls$q_sec_cat_0[2]; /* secrecy category mask - usage of cls$q_sec_cat_s64i64 preferred */ unsigned int cls$q_int_cat_0[2]; /* integrity category mask - usage of cls$q_int_cat_s64i64 preferred */ } cls$r_clsdef_0; struct { /* type 1 class block fields */ unsigned int cls$o_sec_cat_1[4]; /* secrecy category mask - usage of cls$o_sec_cat_s128 preferred */ } cls$r_clsdef_1; } cls$r_clsdef_x; } cls$r_sevms_defs; /* The following definitions have been superseded and are being retained for backwards compatibility only. Usage of the ..._S64I64 and ..._S128 symbolic names is preferred. */ struct { unsigned char cls$b_secur_lev; /* security level */ unsigned char cls$b_integ_lev; /* integrity level */ unsigned : 16; /* short fill; reserved */ int cls$q_secur_cat[2]; /* security category mask */ int cls$q_integ_cat[2]; /* integrity category mask */ } cls$r_vms_defs; }; #else struct clsdef { unsigned char cls$b_secur_lev; /* security level */ unsigned char cls$b_integ_lev; /* integrity level */ unsigned : 16; /* short fill; reserved */ int cls$q_secur_cat[2]; /* security category mask */ int cls$q_integ_cat[2]; /* integrity category mask */ }; #endif /* CHANGE_CLASS, PARSE_CLASS, FORMAT_CLASS system service item codes */ #define CLS$_SECSTR 1 /* textual secrecy/security string */ #define CLS$_INTSTR 2 /* textual integrity string */ #define CLS$_CLSBLK 3 /* simple classification block */ #define CLS$_MINCLSBLK 4 /* minimum classification block */ #define CLS$_MAXCLSBLK 5 /* maximum classification block */ #define CLS$_WIDTH 6 /* width of display for $FORMAT_CLASS */ #define CLS$_TRMDSC 7 /* line terminator for $FORMAT_CLASS */ #define CLS$_INDENT 8 /* line indenting for $FORMAT_CLASS */ #define CLS$_OLDCLSBLK 9 /* previous classification block */ #define CLS$_OLDMINCLS 10 /* previous minimum class block */ #define CLS$_OLDMAXCLS 11 /* previous maximum class block */ #define CLS$_TRANQUIL 12 /* override tranquility checks - usage reserved to Digital */ #endif /*_CLSDEF_H*/