                      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*<ucb$s_ppdend-ucb$s_ppdbgn-16>>
F013F070              00000240	   7266 p.magic=^xF013F000 + ddt$k_length + <256*<ucb$s_ppdend-ucb$s_ppdbgn-16>>
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
