/********************************************************************************************************************************/ /* Created: 15-MAR-2001 23:37:55 by OpenVMS SDL EV1-33 */ /* Source: 15-MAR-2001 23:34:06 _$11$DUA933:[BUILD.SDL]STARDEFAE.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $CLSDEF ***/ #ifndef __CLSDEF_LOADED #define __CLSDEF_LOADED 1 #pragma nostandard #ifdef __cplusplus extern "C" { #define __unknown_params ... #else #define __unknown_params #endif #if !defined(__VAXC) && !defined(VAXC) #define __struct struct #define __union union #else #define __struct variant_struct #define __union variant_union #endif /*+ */ /* */ /* Security classification block. Contains secrecy and integrity */ /* level and categories for non-discretionary (mandatory) access controls. */ /* */ /*- */ typedef struct _clsdef_tlvrng { /* Range specifier field references */ unsigned short int cls$w_range_low; /* Range low limit */ unsigned short int cls$w_range_high; /* Range high limit */ } clsdef_tlvrng; #define CLS$K_END 0 /* List terminator */ #define CLS$K_SC_ENUMERATE 1 /* Secrecy category enumerated list */ #define CLS$K_SC_RANGE 2 /* Secrecy category range list */ #define CLS$K_SC_MASK 3 /* Secrecy category bitmask */ #define CLS$K_IC_ENUMERATE 17 /* Integrity category enumerated list */ #define CLS$K_IC_RANGE 18 /* Integirty category range list */ #define CLS$K_IC_MASK 19 /* Integrity category bitmask */ #define CLS$K_VOID 255 /* Voided entry */ typedef union _clsdef_tlv { /* TLV entry field references */ __struct { unsigned char cls$b_tag; /* Format code */ __union { /* Field length, intrepretation format */ /* dependent: */ unsigned char cls$b_count; /* # entries in an enumerated list */ /* # range pairs in a range list */ /* # longwords following voided entry */ unsigned char cls$b_mask_size; /* # longwords in a bitmask */ } cls$b_length; __union { /* Value set. */ __struct { unsigned short int cls$w_catlst [1]; /* Vector of enumerated cat. */ } cls$r_catlsttlv; __struct { short int cls$w_rsvd; unsigned int cls$l_rnglst [1]; /* Vector of high:low word */ /* range pairs */ } cls$r_rnglsttlv; __struct { unsigned short int cls$w_base; /* Bias value */ unsigned int cls$l_mask [1]; /* <32 * MASK_SIZE> bit mask */ } cls$r_msktlv; __struct { unsigned short int cls$w_rsvd [3]; } cls$r_endtlv; __struct { unsigned short int cls$w_void [1]; /* words */ } cls$r_voidtlv; } cls$r_value_set; } cls$r_tlv; } clsdef_tlv; #if !defined(__VAXC) && !defined(VAXC) #define cls$b_tag cls$r_tlv.cls$b_tag #define cls$b_count cls$r_tlv.cls$b_length.cls$b_count #define cls$b_mask_size cls$r_tlv.cls$b_length.cls$b_mask_size #define cls$w_catlst cls$r_tlv.cls$r_value_set.cls$r_catlsttlv.cls$w_catlst #define cls$l_rnglst cls$r_tlv.cls$r_value_set.cls$r_rnglsttlv.cls$l_rnglst #define cls$w_base cls$r_tlv.cls$r_value_set.cls$r_msktlv.cls$w_base #define cls$l_mask cls$r_tlv.cls$r_value_set.cls$r_msktlv.cls$l_mask #define cls$w_void cls$r_tlv.cls$r_value_set.cls$r_voidtlv.cls$w_void #endif /* #if !defined(__VAXC) && !defined(VAXC) */ #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 65536 /* Maximum supported secrecy category */ #define CLS$K_MAX_INT_CAT 65536 /* Maximum supported 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_MAX_SEC_CAT_DYN_CAT 65536 /* Maximum type 2 secrecy category */ #define CLS$K_MAX_INT_CAT_DYN_CAT 65536 /* Maximum type 2 integrity 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_TYP_DYN_CAT 2 /* Type 2 class blook 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_DYN_CAT 8 /* Size of type 2 class block */ #define CLS$K_LENGTH 20 /* length of structure */ typedef 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 */ /* Class block type identifiers */ unsigned char cls$b_tlvlst_size; /* Size in longwords of TLV list in */ /* a type 2 class block. */ __union { /* Type dependent overlays/extensions */ /* */ /* Usage of the ..._S64I64 and ..._S128 symbolic name forms is preferred. */ /* Previous name forms have been retained for backwards compatibility only. */ /* */ __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 2 class block fields */ unsigned int cls$l_tlvlst [1]; /* Tag-Length-Value_set list */ /* fixed portion */ } cls$r_clsdef_dyn_cat; /* */ /* 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 { /* 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 - Usage of CLS$B_SEC_LEV preferred */ unsigned char cls$b_integ_lev; /* Integrity level - Usage of CLS$B_INT_LEV preferred */ short int cls$w_fill_1; /* Reserved */ unsigned int cls$q_secur_cat [2]; /* Security category mask - Usage of CLS$Q_SEC_CAT_S64I64/CLS$O_SEC_CAT_S128 preferred */ unsigned int cls$q_integ_cat [2]; /* Integrity category mask - Usage of CLS$Q_INT_CAT_S64I64 preferred */ } cls$r_vms_defs; } clsdef; #if !defined(__VAXC) && !defined(VAXC) #define cls$b_sec_lev cls$r_sevms_defs.cls$b_sec_lev #define cls$b_int_lev cls$r_sevms_defs.cls$b_int_lev #define cls$b_type cls$r_sevms_defs.cls$b_type #define cls$b_tlvlst_size cls$r_sevms_defs.cls$b_tlvlst_size #define cls$q_sec_cat_s64i64 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_s64i64.cls$q_sec_cat_s64i64 #define cls$q_int_cat_s64i64 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_s64i64.cls$q_int_cat_s64i64 #define cls$o_sec_cat_s128 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_s128.cls$o_sec_cat_s128 #define cls$l_tlvlst cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_dyn_cat.cls$l_tlvlst #define cls$q_sec_cat_0 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_0.cls$q_sec_cat_0 #define cls$q_int_cat_0 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_0.cls$q_int_cat_0 #define cls$o_sec_cat_1 cls$r_sevms_defs.cls$r_clsdef_x.cls$r_clsdef_1.cls$o_sec_cat_1 #define cls$b_secur_lev cls$r_vms_defs.cls$b_secur_lev #define cls$b_integ_lev cls$r_vms_defs.cls$b_integ_lev #define cls$q_secur_cat cls$r_vms_defs.cls$q_secur_cat #define cls$q_integ_cat cls$r_vms_defs.cls$q_integ_cat #endif /* #if !defined(__VAXC) && !defined(VAXC) */ /* */ /* $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 */ #define CLS$_FLAGS 13 /* Formatting control flags */ /* ADD ITEM-CODES BEFORE THIS COMMENT */ #define CLS$_MIN_ITEM_CODE 1 #define CLS$_MAX_ITEM_CODE 13 #define CLS$M_COMPRESS 0x1 #define CLS$M_EXPAND 0x2 typedef union _fill_71 { unsigned int cls$l_flags; /* $FORMAT_CLASS control flags */ __struct { unsigned cls$v_compress : 1; /* Compress category range strings */ unsigned cls$v_expand : 1; /* Expande category range strings */ unsigned cls$v_fill_73 : 6; } cls$r_fill_72; } fill_71; #if !defined(__VAXC) && !defined(VAXC) #define cls$v_compress cls$r_fill_72.cls$v_compress #define cls$v_expand cls$r_fill_72.cls$v_expand #endif /* #if !defined(__VAXC) && !defined(VAXC) */ #ifdef __cplusplus } #endif #pragma standard #endif /* __CLSDEF_LOADED */