00000000 7200 $DEFINI UCB ;START OF UCB DEFINITIONS X01/002 ?01T 00000000 .IIF NDF MACRO64$, .NOCROSS 00000000 7201 00000000 7202 ;.=UCB$W_BCR+2 ;BEGIN DEFINITIONS AT END OF UCB 00000000 7203 .=UCB$K_LCL_DISK_LENGTH ;v4 def end of ucb 00000114 7204 ; USE THESE FIELDS TO HOLD OUR LOCAL DATA FOR VIRT DISK. 00000114 7205 ; Add our stuff at the end to ensure we don't mess some fields up that some 00000114 7206 ; areas of VMS may want. 00000114 7207 ; Leave thisfield first so we can know all diskswill have it at the 00000114 7208 ; same offset. 00000114 7209 ; 00000114 7210 ; 00000118 7211 $def ucb$l_hucbs .blkl 1 ;host ucb table 00000114 X01/001 ?01T 00000114 .IIF NB,ucb$l_hucbs, ucb$l_hucbs: X01/002 ?01T 00000114 .IIF NB,.blkl, .blkl 1 00000118 7212 ; 00000118 7213 ; Add other fields here if desired. 00000118 7214 ; 0000011C 7215 $def ucb$l_exdmn .blkl 1 ;extend dmn pid 00000118 X01/001 ?01T 00000118 .IIF NB,ucb$l_exdmn, ucb$l_exdmn: X01/002 ?01T 00000118 .IIF NB,.blkl, .blkl 1 00000120 7216 $def ucb$l_exmbx .blkl 1 ;extend dmn mbx ucb 0000011C X01/001 ?01T 0000011C .IIF NB,ucb$l_exmbx, ucb$l_exmbx: X01/002 ?01T 0000011C .IIF NB,.blkl, .blkl 1 00000124 7217 $def ucb$l_deldmn .blkl 1 ;delete daemon pid 00000120 X01/001 ?01T 00000120 .IIF NB,ucb$l_deldmn, ucb$l_deldmn: X01/002 ?01T 00000120 .IIF NB,.blkl, .blkl 1 00000128 7218 $def ucb$l_delmbx .blkl 1 ;delete dmn mailbox ucb 00000124 X01/001 ?01T 00000124 .IIF NB,ucb$l_delmbx, ucb$l_delmbx: X01/002 ?01T 00000124 .IIF NB,.blkl, .blkl 1 00000128 7219 ; 00000128 7220 ; 0000012C 7221 $def ucb$l_ctlflgs .blkl 1 ;flags to control modes 00000128 X01/001 ?01T 00000128 .IIF NB,ucb$l_ctlflgs, ucb$l_ctlflgs: X01/002 ?01T 00000128 .IIF NB,.blkl, .blkl 1 0000012C 7222 ; 0000012C 7223 ; 00000130 7224 $def ucb$l_prcvec .blkl 1 ;process local data tbl 0000012C X01/001 ?01T 0000012C .IIF NB,ucb$l_prcvec, ucb$l_prcvec: X01/002 ?01T 0000012C .IIF NB,.blkl, .blkl 1 00000134 7225 $def ucb$l_daemon .blkl 1 ;daemon pid for open daemon 00000130 X01/001 ?01T 00000130 .IIF NB,ucb$l_daemon, ucb$l_daemon: X01/002 ?01T 00000130 .IIF NB,.blkl, .blkl 1 00000138 7226 $def ucb$l_mbxucb .blkl 1 ;mailbox for input to daemon 00000134 X01/001 ?01T 00000134 .IIF NB,ucb$l_mbxucb, ucb$l_mbxucb: X01/002 ?01T 00000134 .IIF NB,.blkl, .blkl 1 00000140 7227 $def ucb$l_keycry .blkl 2 ;ucb resident "key" for ACEs 00000138 X01/001 ?01T 00000138 .IIF NB,ucb$l_keycry, ucb$l_keycry: X01/002 ?01T 00000138 .IIF NB,.blkl, .blkl 2 00000140 7228 ;use as part of authenticator 00000140 7229 ;for security-relevant fcns. 00000140 7230 ;auth=f(file id, key, priv-info), match ace and computed 00000140 7231 ;auth tag. 00000144 7232 $def ucb$l_cbtctr .blkl 1 ;how many extents 00000140 X01/001 ?01T 00000140 .IIF NB,ucb$l_cbtctr, ucb$l_cbtctr: X01/002 ?01T 00000140 .IIF NB,.blkl, .blkl 1 00000148 7233 $def ucb$l_cbtini .blkl 1 ;init for counter 00000144 X01/001 ?01T 00000144 .IIF NB,ucb$l_cbtini, ucb$l_cbtini: X01/002 ?01T 00000144 .IIF NB,.blkl, .blkl 1 00000148 7234 ; preceding 2 fields allow specifying of contig-best-try extents 00000148 7235 ; on every Nth extend, not every one. This should still help keep 00000148 7236 ; file extensions from preferentially picking up chaff 00000198 7237 $def ucb$JTcontfil .blkb 80 00000148 X01/001 ?01T 00000148 .IIF NB,ucb$JTcontfil, ucb$JTcontfil: X01/002 ?01T 00000148 .IIF NB,.blkb, .blkb 80 0000019C 7238 $def ucb$l_asten .blkl 1 ;ast enable mask store 00000198 X01/001 ?01T 00000198 .IIF NB,ucb$l_asten, ucb$l_asten: X01/002 ?01T 00000198 .IIF NB,.blkl, .blkl 1 0000019C 7239 ; 000001A0 7240 $DEF ucb$l_minxt .blkl 1 ;min. extent 0000019C X01/001 ?01T 0000019C .IIF NB,ucb$l_minxt, ucb$l_minxt: X01/002 ?01T 0000019C .IIF NB,.blkl, .blkl 1 000001A4 7241 $def ucb$l_maxxt .blkl 1 ;max extent 000001A0 X01/001 ?01T 000001A0 .IIF NB,ucb$l_maxxt, ucb$l_maxxt: X01/002 ?01T 000001A0 .IIF NB,.blkl, .blkl 1 000001A8 7242 $def ucb$l_frac .blkl 1 ;fraction to extend by 000001A4 X01/001 ?01T 000001A4 .IIF NB,ucb$l_frac, ucb$l_frac: X01/002 ?01T 000001A4 .IIF NB,.blkl, .blkl 1 000001AC 7243 $def ucb$l_slop .blkl 1 ;slop blocks to leave free 000001A8 X01/001 ?01T 000001A8 .IIF NB,ucb$l_slop, ucb$l_slop: X01/002 ?01T 000001A8 .IIF NB,.blkl, .blkl 1 000001AC 7244 ; DDT intercept fields 000001AC 7245 ; following must be contiguous. 000001AC 7246 $def ucb$s_ppdbgn ;add any more prepended stuff after this 000001AC X01/001 ?01T 000001AC .IIF NB,ucb$s_ppdbgn, ucb$s_ppdbgn: 000001B0 7247 $def ucb$l_uniqid .blkl 1 ;driver-unique ID, gets filled in 000001AC X01/001 ?01T 000001AC .IIF NB,ucb$l_uniqid, ucb$l_uniqid: X01/002 ?01T 000001AC .IIF NB,.blkl, .blkl 1 000001B0 7248 ; by DPT address for easy following 000001B0 7249 ; by SDA 000001B4 7250 $def ucb$l_intcddt .blkl 1 ; Our interceptor's DDT address if 000001B0 X01/001 ?01T 000001B0 .IIF NB,ucb$l_intcddt, ucb$l_intcddt: X01/002 ?01T 000001B0 .IIF NB,.blkl, .blkl 1 000001B4 7251 ; we are intercepted 000001B8 7252 $def ucb$l_prevddt .blkl 1 ; previous DDT address 000001B4 X01/001 ?01T 000001B4 .IIF NB,ucb$l_prevddt, ucb$l_prevddt: X01/002 ?01T 000001B4 .IIF NB,.blkl, .blkl 1 000001BC 7253 $def ucb$l_icsign .blkl 1 ; unique pattern that identifies 000001B8 X01/001 ?01T 000001B8 .IIF NB,ucb$l_icsign, ucb$l_icsign: X01/002 ?01T 000001B8 .IIF NB,.blkl, .blkl 1 000001BC 7254 ; this as a DDT intercept block 000001BC 7255 ; NOTE: Jon Pinkley suggests that the DDT size should be encoded in part of this 000001BC 7256 ; unique ID so that incompatible future versions will be guarded against. 000001BC 7257 $def ucb$s_ppdend 000001BC X01/001 ?01T 000001BC .IIF NB,ucb$s_ppdend, ucb$s_ppdend: 0000022C 7258 $def ucb$a_vicddt .blkb ddt$k_length 000001BC X01/001 ?01T 000001BC .IIF NB,ucb$a_vicddt, ucb$a_vicddt: X01/002 ?01T 000001BC .IIF NB,.blkb, .blkb ddt$k_length 0000022C 7259 ; space for victim's DDT 0000022C 7260 .blkl 4 ;safety 00000240 7261 $def ucb$l_backlk .blkl 1 ;backlink to victim ucb 0000023C X01/001 ?01T 0000023C .IIF NB,ucb$l_backlk, ucb$l_backlk: X01/002 ?01T 0000023C .IIF NB,.blkl, .blkl 1 00000240 7262 ; Make the "unique magic number" depend on the DDT length, and on the 00000240 7263 ; length of the prepended material. If anything new is added, be sure that 00000240 7264 ; this magic number value changes. F013F070 00000240 7265 magic=^xF013F000 + ddt$k_length + <256*> F013F070 00000240 7266 p.magic=^xF013F000 + ddt$k_length + <256*> 00000800 ?01T 00000240 7267 .iif ndf,f.nsiz,f.nsiz=2048 00000010 ?01T 00000240 7268 .iif ndf,f.nums,f.nums=16 ?01F 00000240 7269 .iif ndf,f.nsiz,f.nsiz=2048 00000240 00000240 7270 ucb$l_fnums: .blkw f.nums ;store for file numbers to inspect whether 00000260 7271 ;an ACE is there or not. 00000268 7272 $DEF UCB$L_JT_HOST_DESCR .BLKL 2 ;host dvc desc. 00000260 X01/001 ?01T 00000260 .IIF NB,UCB$L_JT_HOST_DESCR, UCB$L_JT_HOST_DESCR: X01/002 ?01T 00000260 .IIF NB,.BLKL, .BLKL 2 00000268 7273 ; 00000268 7274 ; Store copy of victim FDT table here for step 2 Alpha driver. 00000268 7275 ; assumes FDT table is 64+2 longs long 00000380 7276 $def ucb$l_myfdt .blkl 70 ;user FDT tbl copy + slop for safety 00000268 X01/001 ?01T 00000268 .IIF NB,ucb$l_myfdt, ucb$l_myfdt: X01/002 ?01T 00000268 .IIF NB,.blkl, .blkl 70 00000384 7277 $def ucb$l_oldfdt .blkl 1 ;fdt tbl of prior fdt chain 00000380 X01/001 ?01T 00000380 .IIF NB,ucb$l_oldfdt, ucb$l_oldfdt: X01/002 ?01T 00000380 .IIF NB,.blkl, .blkl 1 00000388 7278 $def ucb$l_vict .blkl 1 ;victim ucb, for unmung check 00000384 X01/001 ?01T 00000384 .IIF NB,ucb$l_vict, ucb$l_vict: X01/002 ?01T 00000384 .IIF NB,.blkl, .blkl 1 0000038C 7279 $def ucb$l_mungd .blkl 1 ;munged flag, 1 if numg'd 00000388 X01/001 ?01T 00000388 .IIF NB,ucb$l_mungd, ucb$l_mungd: X01/002 ?01T 00000388 .IIF NB,.blkl, .blkl 1 0000039C 7280 $def ucb$l_exempt .blkl 4 ;exempt PIDs 0000038C X01/001 ?01T 0000038C .IIF NB,ucb$l_exempt, ucb$l_exempt: X01/002 ?01T 0000038C .IIF NB,.blkl, .blkl 4 000003AC 7281 $def ucb$l_exedel .blkl 4 ;pids exempt from delete checks only 0000039C X01/001 ?01T 0000039C .IIF NB,ucb$l_exedel, ucb$l_exedel: X01/002 ?01T 0000039C .IIF NB,.blkl, .blkl 4 000003B0 7282 $def ucb$l_ktrln .blkl 1 000003AC X01/001 ?01T 000003AC .IIF NB,ucb$l_ktrln, ucb$l_ktrln: X01/002 ?01T 000003AC .IIF NB,.blkl, .blkl 1 000003B4 7283 $def ucb$l_k2tnm .blkl 1 000003B0 X01/001 ?01T 000003B0 .IIF NB,ucb$l_k2tnm, ucb$l_k2tnm: X01/002 ?01T 000003B0 .IIF NB,.blkl, .blkl 1 ?01T 000003B4 7284 .if df,msetrp ?01T 000003B4 7285 ; mousetrap trace cells ?01T 000003B8 7286 $def mtp$fmt .blkl 1 ;mousetrap get into format 000003B4 X01/001 ?02T 000003B4 .IIF NB,mtp$fmt, mtp$fmt: X01/002 ?02T 000003B4 .IIF NB,.blkl, .blkl 1 ?01T 000003B8 7287 .endc 000003BA 7288 $DEF UCB$K_JT_LEN .BLKW 1 ;LENGTH OF UCB 000003B8 X01/001 ?01T 000003B8 .IIF NB,UCB$K_JT_LEN, UCB$K_JT_LEN: X01/002 ?01T 000003B8 .IIF NB,.BLKW, .BLKW 1 000003BA 7289 ;UCB$K_JT_LEN=. ;LENGTH OF UCB 000003BA 7290 00000000 7291 $DEFEND UCB ;END OF UCB DEFINITONS