! ----- [LOMASKY.SYS.NUSER]NUSER.INC ----- ! ----- INCLUDE FILE FOR ALL NUSER ROUTINES ----- ! ----- Last Change 04/08/94 by Brian Lomasky ----- OPTION TYPE = EXPLICIT EXTERNAL LONG CONSTANT SS$_ABORT ! ABORT EXTERNAL LONG CONSTANT SS$_NOLOGNAM ! NO LOGICAL NAME TRANSLATION EXTERNAL LONG CONSTANT SS$_NORMAL ! NORMAL SUCCESS STATUS ! ----- COMMON CONSTANTS ----- DECLARE WORD CONSTANT TRUE = (1% = 1%) DECLARE WORD CONSTANT FALSE = NOT TRUE DECLARE WORD CONSTANT MAX_ACTIONS = 20% ! MAX NUMBER OF USER ACTIONS DECLARE WORD CONSTANT MAX_DBS = 200% ! MAX NUMBER OF DATABASES DECLARE WORD CONSTANT MAX_DIVS = 20% ! MAX NUMBER OF DIVISIONS DECLARE WORD CONSTANT MAX_IDENTS = 100% ! MAX NUMBER OF OTHER IDENTS ! ----- MAXIMUM NUMBER OF NON-PRIVILEGED IDENTIFIERS ----- DECLARE WORD CONSTANT MAX_NON_PRIV_IDS = 30% DECLARE WORD CONSTANT MAX_QUEUES = 10% ! MAX NUMBER OF PRINT QUEUES/DIV DECLARE WORD CONSTANT MAX_RIGHTS = 40% ! MAX NUMBER OF RIGHTSLIST FILES DECLARE WORD CONSTANT MAX_SEQS = 20% ! MAX USER ACTION SEQUENCES DECLARE WORD CONSTANT MAX_SYSUAF = 40% ! MAX NUMBER OF SYSUAF FILES ! ----- BASIC ERROR CODE CONSTANTS ----- DECLARE WORD CONSTANT BUCKET_LOCKED = 154% DECLARE WORD CONSTANT CANNOT_OPEN_FILE = 162% DECLARE WORD CONSTANT DUPLICATE_KEY = 134% DECLARE WORD CONSTANT END_OF_FILE = 11% DECLARE WORD CONSTANT FILE_NOT_FOUND = 5% DECLARE WORD CONSTANT ILLEGAL_USAGE_FOR_DEVICE = 133% DECLARE WORD CONSTANT PROTECTION_VIOLATION = 10% DECLARE WORD CONSTANT REC_NOT_FOUND = 155% ! ----- TO RETURN ERROR (2) IN $STATUS BUT HAVE NO MESSAGE ----- ! ----- DISPLAYED ON THE SCREEN, ALSO SET BIT 28 (HEX 10000000) IN ----- ! ----- THE VALUE YOU PASS TO SYS$EXIT ----- DECLARE LONG CONSTANT ERROR_WITH_NO_PUTMSG = X"10000002"L ! ----- COMMON MAPPED VARIABLES ----- MAP (NUMAP) LONG ACTION_INDEX, ! MAIN PROGRAM ACTION & LONG ACTION_SEQ, ! NEXT PROMPT SEQUENCE & LONG DIVISION_CTR, ! # OF DIVISIONS & LONG GRP, ! "OTH" GROUP UIC VALUE & LONG HELD_IDENTS_CTR, ! COUNT OF HELD IDENTS & LONG HELD_IDENTS(500%), ! HELD IDENTIFIER VALUES& LONG MBR, ! "OTH" MEMBER UIC VALUE& LONG NODE_COUNTER, ! #NODES THAT USER'S ON & LONG NON_PRIV_IDENT_CTR,! # OF NON-PRIV IDENTS & ! ----- COUNT OF OTHER IDENTIFIERS ----- & LONG OTHER_IDENTIFIERS_CTR, & ! ----- COUNT OF OTHER DATABASE IDENTS ----- & LONG OTHER_IDENTS_CTR, & LONG QUEUE_CTR, ! # OF DEFAULT QUEUES & LONG REC_LEN, ! RECORD LENGTH & ! ----- SAVED COUNT OF HELD IDENTS ----- & LONG SAVE_HELD_IDENTS_CTR, & LONG THE_USERS_COUNTER, ! # OF POSSIBLE USERS & LONG UIC_GROUP, ! OCTAL UIC GROUP & LONG UIC_MEMBER, ! OCTAL UIC MEMBER & LONG USER_ACTION_CTR, ! NUMBER OF USER ACTIONS& ! ----- MAX NUMBER OF USER ACTION SEQS ----- & LONG USER_SEQS(MAX_ACTIONS), & ! ----- LIST OF SEQS FOR EACH USER ACTION ----- & LONG USER_SEQ(MAX_ACTIONS, MAX_SEQS), & WORD ACCOUNT_LEN_MAX, ! MAX ACCOUNT FIELD LEN & WORD ACCOUNT_LEN_MIN, ! MIN ACCOUNT FIELD LEN & WORD ACCOUNT_NUMERIC, ! NUMERIC ACCOUNT FLAG & WORD BACKWARDS, ! TRUE IF GO BACKWARD & WORD BYPASS_ON, ! TRUE IF BYPASS PRIV ON& WORD CHANGED_UIC_GRP, ! CHANGED DECIM UIC GRP & WORD CHANGED_UIC_MBR, ! CHANGED DEC UIC MBR & ! ----- TRUE TO COPY SYSUAF DATA ----- & WORD COPY_USER_FILE_INDEX, & WORD COPY_USERS_ACCOUNT,! TRUE=COPY USER'S ACCT & WORD DBMS_EXISTS, ! TRUE IF DBMS EXISTS & WORD DEBUG_MODE, ! TRUE=ENABLE DEBUG MODE& WORD DIV_INDEX, ! DIVISION ARRAYS INDEX & ! ----- DEFAULT DBMS DATABASES FOR DIV ----- & WORD DIVISION_OTHER(MAX_DIVS), & ! ----- UIC GROUPS FOR EACH DIVISION ----- & WORD DIVISION_UIC_GROUPS(MAX_DIVS), & WORD FOUND_DESIRED_USER,! TRUE IF MATCHING USER & WORD FOUR_GL_EXISTS, ! TRUE IF 4GL EXISTS & ! ----- TRUE IF CLUSTER-WIDE GRANT/DENY ----- & WORD GRANT_DENY_OTHER_NODES, & WORD HELD_DBS_CTR, ! #HELD DATABASE NUMBERS& WORD HELD_DIVS_CTR, ! #HELD DIVISION CODES & WORD INVALID_DIVISION, ! TRUE IF INVALID DIV & WORD MY_UIC_GROUP, ! MY UIC GROUP & WORD MY_UIC_MEMBER, ! MY UIC MEMBER & WORD NODES_IN_MEMORY, ! COUNT OF NODES IN MEM & WORD NUSER_FLAG1, ! NUSER_OTHER FLAG 1 & WORD NUSER_FLAG2, ! NUSER_OTHER FLAG 2 & WORD OTHER_NODE, ! USER ON ANOTHER NODE? & WORD PRIVILEGED, ! TRUE=USER HAS SETPRV & WORD PROGRAM_LOOP, ! PROGRAM LOOP FLAG & ! ----- DEFAULT QUEUE NUMBER FOR DIVISION ----- & WORD QUEUE_DEFAULTS(MAX_DIVS), & ! ----- COUNT OF DEFAULT QUEUES FOR DIV ----- & WORD QUEUE_QUEUE_CNTS(MAX_DIVS), & WORD RIGHTSLIST_COUNTER,! RIGHTSLIST FILES COUNT& ! ----- SAVED RANDOM_PASSWORD_SEED ----- & WORD SAVED_RANDOM_PASSWORD_SEED, & WORD SYSPRV_ON, ! TRUE IF SYSPRV PRIV ON& WORD SYSUAF_COUNTER, ! SYSUAF FILES COUNT & WORD USERNAME_LENGTH, ! LENGTH OF THE_USERNAME& ! ----- DEFAULT MINIMUM PASSWORD LENGTH ----- & BYTE DEFAULT_MINIMUM_PASSWORD_LEN, & ! ----- MINIMUM PWD LENGTH FOR THIS USER ----- & BYTE MY_MINIMUM_PASSWORD_LEN, & ! ----- SAVED ENCRYPTION_ALGORITHM ----- & BYTE SAVED_ENCRYPTION_ALGORITHM, & ! ----- DESCRIPTION FOR ACCOUNT UAF FIELD ----- & STRING ACCOUNT_DESC = 50%, & ! ----- IDENTIFIER PREFIX FOR THE ----- & ! ----- DATABASE PRODUCT ----- & STRING DBMS_PREFIX = 3%, & ! ----- DESCRIPTION OF DATABASE PRODUCT ----- & STRING DBMS_PRODUCT = 12%, & STRING DCL_ACTION = 80%,! DESIRED DCL ACTION & STRING DEFAULT_DB = 3%, ! DEFAULT DBMS DATABASE & ! ----- DEFAULT [NON-]RESTRICTED RESPONSE ----- & STRING DEFAULT_RESTRICTED = 1%, & STRING DISPWDHIS = 1%, ! SET DISPWDHIS FLAG? & STRING DIV = 3%, ! DIVISION CODE & ! ----- EXTRACTED DIVISIONAL ACCESS ----- & STRING DIVISION_ACCESS = 1%, & ! ----- NAMES OF EACH VALID DIVISION ----- & STRING DIVISION_NAMES(MAX_DIVS) = 3%, & ! ----- LIST OF NODES TO DUPLICATE DATA ----- & ! ----- BETWEEN ----- & STRING DUPLICATE_NODES = 132%, & ! ----- USER-ENTERED USERNAME ----- & STRING ENTERED_USERNAME = 12%, & STRING ERROR_DESC = 80%,! ERROR DESCRIPTION & ! ----- DESCRIPTION FOR 4GL ----- & STRING FOUR_GL = 50%, & ! ----- IDENTIFIER PREFIX FOR THE 4GL ----- & STRING FOUR_GL_PREFIX = 4%, & ! ----- DEFAULT STRING FOR GRANT AND DENY ----- & STRING GRANT_DENY_ACCESS_TO = 50%, & ! ----- HELD DATABASE NUMBERS ----- & STRING HELD_DBS(MAX_DBS) = 3%, & ! ----- HELD DIVISION CODES ----- & STRING HELD_DIVS(MAX_DIVS) = 3%, & ! ----- HELD IDENTIFIER STRINGS ----- & STRING HELD_IDENTS_STR(500%) = 32%, & ! ----- LOGIN CMD PROC FOR NON-RESTRICTED ----- & STRING LGICMD_NON_RESTRICTED = 64%, & ! ----- LOGIN CMD PROCEDURE FOR RESTRICTED -----& STRING LGICMD_RESTRICTED = 64%, & ! ----- LIST OF NODES, INCL DUPLICATES ----- & STRING NODE_LISTS(100%) = 6%, & ! ----- LIST OF NON-PRIVILEGED IDENTIFIERS -----& STRING NON_PRIV_IDENTS(MAX_NON_PRIV_IDS) = 32%, & ! ----- LIST OF OTHER IDENTIFIERS ----- & STRING OTHER_IDENTIFIERS(MAX_IDENTS) = 32%, & ! ----- GRANT/DENY OTHER IDENTIFIERS ----- & STRING OTHER_IDENTIFIERS_GD(MAX_IDENTS) = 1%, & ! ----- LIST OF OTHER DATABASE IDENTIFIERS -----& STRING OTHER_IDENTS(MAX_IDENTS) = 32%, & ! ----- LIST OF OTHER TEMPLATE DATABASES ----- & STRING OTHER_IDENTS_DB(MAX_IDENTS) = 3%, & ! ----- LIST OF OTHER DB IDENT TEMPLATES ----- & STRING OTHER_IDENTS_TEMPLATE(MAX_IDENTS) = 12%, & ! ----- "PLEASE TRY AGAIN, " ----- & STRING PLEASE_TRY_AGAIN = 50%, & ! ----- DEFAULT PRINT QUEUE DIVISIONS ----- & STRING QUEUE_DIVISIONS(MAX_DIVS) = 3%, & ! ----- DEFAULT PRINT QUEUE PROMPTS ----- & STRING QUEUE_PROMPTS(MAX_DIVS) = 80%, & ! ----- DEFAULT PRINT QUEUES ----- & STRING QUEUE_QUEUE(MAX_DIVS, MAX_QUEUES) = 31%, & ! ----- DEFAULT PRINT QUEUE SOURCES ----- & STRING QUEUE_QUEUE_SOURCE(MAX_DIVS, & MAX_QUEUES) = 60%, & ! ----- LIST OF ALL RIGHTSLIST NODES ----- & STRING RIGHTSLIST_NODES(MAX_RIGHTS) = 6%, & ! ----- LIST OF ALL RIGHTSLIST FILES ----- & STRING RIGHTSLIST_SPECS(MAX_RIGHTS) = 80%, & ! ----- SAVED HELD IDENTIFIER STRINGS ----- & STRING SAVE_HELD_IDENTS_STR(500%) = 32%, & ! ----- SAVED PASSWORD ----- & STRING SAVED_PASSWORD = 8%, & ! ----- LIST OF ALL SYSUAF NODES ----- & STRING SYSUAF_NODES(MAX_SYSUAF) = 6%, & ! ----- LIST OF ALL SYSUAF FILES ----- & STRING SYSUAF_SPECS(MAX_SYSUAF) = 80%, & STRING TEMPLATE = 12%, ! SECURITY DB TEMPLATE & STRING THE_IDENT = 32%, ! IDENT NAME TO PROCESS & STRING THE_USERNAME=12%,! PROCESS USERNAME & ! ----- LIST OF ALL VALID USER ACTIONS ----- & STRING USER_ACTIONS(MAX_ACTIONS) = 1%, & ! ----- LIST OF ALL USER ACTION MENU DESCS -----& STRING USER_DESCS(MAX_ACTIONS) = 80% ! ----- RECORD FORMAT FOR RIGHTSLIST.DAT FILE(S) ----- MAP (RIGHTZ) ! ----- KGB_IDENTIFIER contains 0 if this ----- & ! ----- is a maintenance record, else this -----& ! ----- is an identifier or a holder ----- & ! ----- record and this field contains the -----& ! ----- binary identifier value ----- & ! ----- KGB_IDENTIFIER IS THE PRIMARY KEY ----- & ! ----- (DUPLICATES, NO CHANGES) ----- & LONG KGB_IDENTIFIER, ! IDENTIFIER NUMBER & ! ----- KGB_ATTRIBUTES contains 32 bits: ----- & ! ----- Bit 0 = Resource ----- & ! ----- Bit 1 = Dynamic ----- & ! ----- Bit 2 = Access ----- & ! ----- Bits 3 - 31 = ----- & LONG KGB_ATTRIBUTES, ! IDENTIFIER ATTRIBUTES & ! ----- KGB_HOLDER(0) contains 0 if this ----- & ! ----- is an identifier record, else this -----& ! ----- is a holder record and this field ----- & ! ----- will contain the UIC of the holder -----& ! ----- KGB_HOLDER() IS ALTERNATE KEY #1 ----- & ! ----- (DUPLICATES, CHANGES) ----- & LONG KGB_HOLDER(1%), ! UIC OF IDENT HOLDER & ! & ! ********** END of HOLDER record ********** & ! & ! ----- KGB_NAME IS ALTERNATE KEY #2 ----- & ! ----- (DUPLICATES, CHANGES) ----- & STRING KGB_NAME = 32%, ! IDENTIFIER NAME & ! & ! ******** END of IDENTIFIER record ********* & ! & WORD KGB_LEVEL, ! FILE STRUCTURE LEVEL & STRING FILL = 2%, ! & LONG KGB_SYSID(1%), ! SYSTEM IDENTIFIER & LONG KGB_NEXT_ID ! NEXT AVAIL IDENTIFIER ! ! ******** END of MAINTENANCE record ******** ! ----- Redefine the Identifier Value if a UIC ----- MAP (RIGHTZ) WORD KGB_UIC_MEMBER, & WORD KGB_UIC_GROUP, & STRING FILL = 4%, & ! ----- Redefine the holder as a string ----- & STRING KGB_HOLDER_STRING = 8% ! ----- Redefine the Holder UIC Value ----- MAP (RIGHTZ) STRING FILL = 8%, & ! ----- Redefine the holder as a string ----- & WORD KGB_OCT_UIC_MEMBER, & WORD KGB_OCT_UIC_GROUP MAP (RMYMAP) LONG SEARCH_IDENTIFIER, & LONG SEARCH_ATTRIBUTES, & LONG SEARCH_HOLDER(1%), & STRING SEARCH_NAME = 32% ! -------------------------------------------------------------- ! ----- FOLLOWING PRIVILEGE BITS ARE TURNED ON IF ENABLED: ----- ! ----- (DEFAULT_PRIVILEGES() ARE THE SAME AS PRIVILEGES()) ----- ! ----- PRIVILEGES(0%): ----- ! ----- BIT 0 = CMKRNL (MAY CHANGE MODE TO KERNEL) ----- ! ----- BIT 1 = CMEXEC (MAY CHANGE MODE TO EXEC) ----- ! ----- BIT 2 = SYSNAM (MAY INSERT IN SYST LOG NAME TABLE) ----- ! ----- BIT 3 = GRPNAM (MAY INSERT IN GROUP LOG NAME TABLE) ---- ! ----- BIT 4 = ALLSPOOL (MAY ALLOCATE SPOOLED DEVICES) ----- ! ----- BIT 5 = DETACH (MAY CREATE DETACHED PROCESSES) ----- ! ----- BIT 6 = DIAGNOSE (MAY DIAGNOSE DEVICES) ----- ! ----- BIT 7 = LOG_IO (MAY DO LOGICAL I/O) ----- ! ----- PRIVILEGES(1%): ----- ! ----- BIT 0 = GROUP (MAY AFFECT OTHER GROUP PROCESSES) ----- ! ----- BIT 1 = ACNT (MAY SUPPRESS ACCOUNTING MESSAGE) ----- ! ----- BIT 2 = PRMCEB (MAY CREATE PERM. COMM. EVNT CLSTRS) ---- ! ----- BIT 3 = PRMMBX (MAY CREATE PERMANENT MAILBOX) ----- ! ----- BIT 4 = PSWAPM (MAY CHANGE PROCESS SWAP MODE) ----- ! ----- BIT 5 = ALTPRI (MAY SET ANY PRIORITY VALUE) ----- ! ----- BIT 6 = SETPRV (MAY SET ANY PRIVILEGE BITS) ----- ! ----- BIT 7 = TMPMBX (MAY CREATE TERMPORARY MAILBOX) ----- ! ----- PRIVILEGES(2%): ----- ! ----- BIT 0 = WORLD (MAY AFFECT OTHER WORLD PROCESSES) ----- ! ----- BIT 1 = MOUNT (MAY EXECUTE MOUNT ACP FUNCTIONS) ----- ! ----- BIT 2 = OPER (OPERATOR PRIVILEGE) ----- ! ----- BIT 3 = EXQUOTA (MAY EXCEED QUOTAS) ----- ! ----- BIT 4 = NETMBX (MAY CREATE NETWORK DEVICE) ----- ! ----- BIT 5 = VOLPRO (MAY OVERRIDE VOLUME PROTECTION) ----- ! ----- BIT 6 = PHY_IO (MAY DO PHYSICAL I/O) ----- ! ----- BIT 7 = BUGCHK (MAY MAKE BUG CHECK ERROR LOG ENTRIES) -- ! ----- PRIVILEGES(3%): ----- ! ----- BIT 0 = PRMGBL (MAY CREATE PERM. GLOBAL SECTIONS) ----- ! ----- BIT 1 = SYSGBL (MAY CREATE SYSTEM GLOBAL SECTIONS) ----- ! ----- BIT 2 = PFNMAP (MAY MAP TO SECTION BY PFN) ----- ! ----- BIT 3 = SHMEM (MAY ALLOCATE STRUCTURES IN SHARED MEM) -- ! ----- BIT 4 = SYSPRV (ELIGIBLE FOR SYSTEM PROTECTION FIELD) -- ! ----- BIT 5 = BYPASS (MAY BYPASS UIC BASED PROTECTION) ----- ! ----- BIT 6 = SYSLCK (MAY CREATE SYSTEM WIDE LOCKS) ----- ! ----- BIT 7 = SHARE (MAY ASSIGN CHANNEL TO NON-SHARED DEV) --- ! ----- PRIVILEGES(4%): ----- ! ----- BIT 0 = UPGRADE (MAY UPGRADE CLASSIFICATION) ----- ! ----- BIT 1 = DOWNGRADE (MAY DOWNGRADE CLASSIFICATION) ----- ! ----- BIT 2 = GRPPRV (GROUP ACCESS BY SYSTEM PROT FIELD) ----- ! ----- BIT 3 = READALL (READ ACCESS TO EVERYTHING) ----- ! ----- BIT 4 = TMPJNL (MAY CREATE TEMPORARY JOURNALS) ----- ! ----- BIT 5 = PRMJNL (MAY CREATE PERMANENT JOURNALS) ----- ! ----- BIT 6 = SECURITY (MAY PERFORM SECURITY FUNCTIONS) ----- ! --------------------------------------------------------- ! ----- FOLLOWING FLAG BITS ARE TURNED ON IF ENABLED: ----- ! ----- FLAGS(0%): ----- ! ----- BIT 0 = DISCTLY ----- ! ----- BIT 1 = DEFCLI ----- ! ----- BIT 2 = LOCKPWD ----- ! ----- BIT 3 = RESTRICTED (PRE VMS V5.2 CAPTIVE) ----- ! ----- BIT 4 = DISACNT ----- ! ----- BIT 5 = DISWELCOME ----- ! ----- BIT 6 = DISNEWMAIL (DISMAIL) ----- ! ----- BIT 7 = DISMAIL (NOMAIL) ----- ! ----- FLAGS(1%): ----- ! ----- BIT 0 = GENPWD ----- ! ----- BIT 1 = PWD_EXPIRED ----- ! ----- BIT 2 = PWD2_EXPIRED ----- ! ----- BIT 3 = AUDIT ----- ! ----- BIT 4 = DISREPORT ----- ! ----- BIT 5 = DISRECONNECT ----- ! ----- BIT 6 = AUTOLOGIN ----- ! ----- BIT 7 = DISFORCE PWD CHANGE ----- ! ----- FLAGS(2%): ----- ! ----- BIT 0 = CAPTIVE ----- ! ----- BIT 1 = DISIMAGE ----- ! ----- BIT 2 = DISPWDDIC ----- ! ----- BIT 3 = DISPWDHIS ----- ! -------------------------------------------------------------- ! ----- PRIMARY DAY RESTRICTED HOURS ARE NOTED BY SETTING ONE OR ----- ! ----- MORE OF THE FOLLOWING BITS CORRESPONDING TO THE DESIRED ----- ! ----- HOUR(S): ----- ! ----- ! ----- NETWORK_ACCESS(0%), BATCH_ACCESS(0%), LOCAL_ACCESS(0%), ----- ! ----- DIALUP_ACCESS(0%), REMOTE_ACCESS(0%) ----- ! ----- BIT 0 = 0 ----- ! ----- BIT 1 = 1 ----- ! ----- BIT 2 = 2 ----- ! ----- BIT 3 = 3 ----- ! ----- BIT 4 = 4 ----- ! ----- BIT 5 = 5 ----- ! ----- BIT 6 = 6 ----- ! ----- BIT 7 = 7 ----- ! ----- NETWORK_ACCESS(1%), BATCH_ACCESS(1%), LOCAL_ACCESS(1%), ----- ! ----- DIALUP_ACCESS(1%), REMOTE_ACCESS(1%) ----- ! ----- BIT 0 = 8 ----- ! ----- BIT 1 = 9 ----- ! ----- BIT 2 = 10 ----- ! ----- BIT 3 = 11 ----- ! ----- BIT 4 = 12 ----- ! ----- BIT 5 = 13 ----- ! ----- BIT 6 = 14 ----- ! ----- BIT 7 = 15 ----- ! ----- NETWORK_ACCESS(2%), BATCH_ACCESS(2%), LOCAL_ACCESS(2%), ----- ! ----- DIALUP_ACCESS(2%), REMOTE_ACCESS(2%) ----- ! ----- BIT 0 = 16 ----- ! ----- BIT 1 = 17 ----- ! ----- BIT 2 = 18 ----- ! ----- BIT 3 = 19 ----- ! ----- BIT 4 = 20 ----- ! ----- BIT 5 = 21 ----- ! ----- BIT 6 = 22 ----- ! ----- BIT 7 = 23 ----- ! -------------------------------------------------------------- ! ----- SECONDARY DAY RESTRICTED HOURS ARE NOTED BY SETTING ONE OR ----- ! ----- MORE OF THE FOLLOWING BITS CORRESPONDING TO THE DESIRED ----- ! ----- HOUR(S): ----- ! ----- ! ----- NETWORK_ACCESS(3%), BATCH_ACCESS(3%), LOCAL_ACCESS(3%), ----- ! ----- DIALUP_ACCESS(3%), REMOTE_ACCESS(3%) ----- ! ----- BIT 0 = 0 ----- ! ----- BIT 1 = 1 ----- ! ----- BIT 2 = 2 ----- ! ----- BIT 3 = 3 ----- ! ----- BIT 4 = 4 ----- ! ----- BIT 5 = 5 ----- ! ----- BIT 6 = 6 ----- ! ----- BIT 7 = 7 ----- ! ----- NETWORK_ACCESS(4%), BATCH_ACCESS(4%), LOCAL_ACCESS(4%), ----- ! ----- DIALUP_ACCESS(4%), REMOTE_ACCESS(4%) ----- ! ----- BIT 0 = 8 ----- ! ----- BIT 1 = 9 ----- ! ----- BIT 2 = 10 ----- ! ----- BIT 3 = 11 ----- ! ----- BIT 4 = 12 ----- ! ----- BIT 5 = 13 ----- ! ----- BIT 6 = 14 ----- ! ----- BIT 7 = 15 ----- ! ----- NETWORK_ACCESS(5%), BATCH_ACCESS(5%), LOCAL_ACCESS(5%), ----- ! ----- DIALUP_ACCESS(5%), REMOTE_ACCESS(5%) ----- ! ----- BIT 0 = 16 ----- ! ----- BIT 1 = 17 ----- ! ----- BIT 2 = 18 ----- ! ----- BIT 3 = 19 ----- ! ----- BIT 4 = 20 ----- ! ----- BIT 5 = 21 ----- ! ----- BIT 6 = 22 ----- ! ----- BIT 7 = 23 ----- ! -------------------------------------------------------------- ! ----- PRIMARY DAYS ARE NOTED BY TURNING OFF THE DESIRED BIT(S): ----- ! ----- SECONDARY DAYS ARE NOTED BY TURNING ON THE DESIRED BIT(S): ---- ! ----- PRIMEDAYS: ----- ! ----- BIT 0 = Monday ----- ! ----- BIT 1 = Tuesday ----- ! ----- BIT 2 = Wednesday ----- ! ----- BIT 3 = Thursday ----- ! ----- BIT 4 = Friday ----- ! ----- BIT 5 = Saturday ----- ! ----- BIT 6 = Sunday ----- ! -------------------------------------------------------------- MAP (UAF) STRING UAF_REC = 1412% MAP (UAF) STRING FILL = 36%, & WORD OCT_UIC_MEMBER, & WORD OCT_UIC_GROUP MAP (UAF) BYTE UAF_RECORD_TYPE, & BYTE UAF_FORMAT_VERSION, & WORD USER_DATA_LENGTH, & ! ----- USER_NAME IS THE PRIMARY KEY ----- & ! ----- (NO DUPLICATES, NO CHANGES) ----- & STRING USER_NAME = 32%, ! ALJTB & ! ----- UIC IS THE ALTERNATE KEY #1 ----- & ! ----- (DUPLICATES, CHANGES) ----- & LONG UIC, & LONG USER_SUB_IDENTIFIER, & ! ----- PARENT_ID (EXTENDED USER ----- & ! ----- IDENTIFICATION) IS THE ALTERNATE ----- & ! ----- KEY #3 (DUPLICATES, CHANGES) ----- & STRING PARENT_ID = 8%, & STRING ACCOUNT_NAME = 32%, ! ALJTB & BYTE OWNER_NAME_LENGTH, & STRING OWNER_NAME = 31%, & BYTE DEVICE_LENGTH, & STRING THE_DEVICE = 31%, & BYTE DIRECTORY_NAME_LENGTH, & STRING DIRECTORY_NAME = 63%, & BYTE LOGIN_COMMAND_FILE_LENGTH, & STRING LOGIN_COMMAND_FILE = 63%, & BYTE CLI_LENGTH, & STRING CLI = 31%, & BYTE CLI_TABLES_LENGTH, & STRING CLI_TABLES = 31%, & STRING PASSWORD = 8%, ! HASHED & STRING PASSWORD2 = 8%, ! HASHED & WORD NUMBER_OF_LOGIN_FAILURES, & WORD RANDOM_PASSWORD_SEED, & BYTE ENCRYPTION_ALGORITHM, & BYTE ENCRYPTION_ALGORITHM_PASSWORD2, & BYTE MINIMUM_PASSWORD_LENGTH, & BYTE FILL1, & LONG ACCOUNT_EXPIRATION_DATE(1%), ! CLUNKS & LONG PASSWORD_LIFETIME(1%), ! CLUNKS & ! ----- (PASSWORD PRE-EXPIRED IF ----- & ! ----- DATE_OF_PASSWORD_CHANGE(0)=-1 AND ----- & ! ----- DATE_OF_PASSWORD_CHANGE(1)=-1 AND ----- & ! ----- PASSWORD_LIFETIME() IS NON-ZERO) ----- & LONG DATE_OF_PASSWORD_CHANGE(1%), ! CLUNKS & LONG DATE_OF_PASSWORD2_CHNGE(1%), ! CLUNKS & LONG LAST_INTER_LOGIN_DATE(1%), ! CLUNKS & LONG LAST_NINTER_LOGIN_DATE(1%), ! CLUNKS & BYTE PRIVILEGES(7%), & BYTE DEFAULT_PRIVILEGES(7%), & STRING MINIMUM_SECURITY_CLASS = 20%, ! COUNTED & STRING MAXIMUM_SECURITY_CLASS = 20%, ! COUNTED & BYTE FLAGS(3%), & BYTE NETWORK_ACCESS(5%), & BYTE BATCH_ACCESS(5%), & BYTE LOCAL_ACCESS(5%), & BYTE DIALUP_ACCESS(5%), & BYTE REMOTE_ACCESS(5%), & STRING CUSTOMER_SITE_SPECIFIC_DATA = 12%, & BYTE PRIMEDAYS, & BYTE FILL2, & BYTE BASE_PRIORITY, & BYTE MAX_JOB_QUEUEING_PRIORITY, & WORD MAXJOBS, ! (0=NO LIMIT) & WORD MAXACCTJOBS, ! (0=NO LIMIT) & WORD MAXDETACH, ! (0=NO LIMIT) & WORD PRCLM, ! SUBPROCESS CREATION LIMIT & WORD BIOLM, ! BUFFERED I/O LIMIT & WORD DIOLM, ! DIRECT I/O LIMIT & WORD TQELM, ! TIMER QUEUE ENTRY LIMIT & WORD ASTLM, ! AST QUEUE LIMIT & WORD ENQLM, ! ENQUEUE LIMIT & WORD FILLM, ! OPEN FILE LIMIT & WORD SHRFILLM, ! SHARED FILE LIMIT & LONG WSQUOTA, ! WORKING SET QUOTA & LONG WSDEFAULT, ! DEFAULT WORKING SET SIZE & LONG WSEXTENT, ! WORKING SET EXTENT & LONG PGFLQUOTA, ! PAGE FILE QUOTA & LONG CPUTIME, ! CPU TIME QUOTA & LONG BYTLM, ! BUFFER I/O BYTE COUNT LIMIT & LONG PBYTLM, ! PAGED BUF I/O BYT COUNT LIMIT & LONG JTQUOTA, ! JOB LOGICAL NAME TABLE QUOTA & WORD PROXY_LIM, ! # OF PROXIES USER CAN GRANT & WORD PROXIES, ! # OF PROXIES GRANTED & WORD ACNT_LIM, ! # OF SUB-ACCOUNTS ALLOWED & WORD ACCOUNTS, ! # OF SUB-ACCOUNTS IN USE & STRING FILL3 = 64%, & STRING USER_DATA_AREA = 768% MAP (UAFSAV) STRING COPY_USER_FILE_DATA = 1412%