u)$UCXTCPFILTER022A.BCKUCXTCPFILTER022A.BCKBACKUP AA.FILES,TCP.COM,TCPFILTER.DOC,TCPFILTER.DOC_EN,TCPFILTER.MLB,TCP_SECURITY.DAT,VERSION.DAT,FREEWARE_README.TXT,FREEWARE_DEMO,RELFORM.TXT,[.ALPHA]*.*,[.SRC]*.*,[.VAX]*.*; $1$DUA7:[ANONYMOUS.PUB.FREEWARE_CD]UCXTCPFILTER022A.BCK/SAVE/PROT=W:R/BLOCK=2048/LOG GEGE /V6.2 _BRAHMS::  _$1$DUA7: V6.2  d*[TCPFILTER]AA.FILES;6+,%./ 4P-~0123KPWO56Y!*Ř7:!*Ř8z.9U#$GHJ!AA.FILES this fileFALPHA.DIR Alpha object, exe and specific source files(EXTRKIT.COM Kit extractor&MKKIT.COM Kit builder$SRC.DIR Common source files$TCP.COM Demo file(TCPFILTER.DOC Documentation(TCPFILTER.MLB Macro library$TCP_SECURITY.DAT Demo fileDVAX.DIR VAX object, exe and specific source files1[.alpha]DESCRIP.MMS MMS file for Alpha3[.alpha]INIT_DRIVER.MAR Driver loader source1[.alpha]INIT_DRIVER.OBJ Driver load object1[.alpha]LOADCODE.M64 Loaded code source1[.alpha]LOADCODE.OBJ Loaded code objectC[.alpha]LOADCODE_NOAUDIT.OBJ Loaded code object, without auditing-[.alpha]SDA.COM SDA debug file"[.alpha]TCPFILTER.EXE exe,[.alpha]TCPFILTER.OBJ parser object0[.alpha]TCPLINK.COM link command file8[.src]ACT_DEF.MAR Common macros for0JUCXTCPFILTER022A.BCK%~[TCPFILTER]AA.FILES;6P/@ drivers-[.src]C.OPT C options file*[.src]NOAUDIT.MAR Source file1[.src]TCPFILTER.C Parser source file0[.src]VAXC.OPT VAXC options file/[.vax]DESCRIP.MMS MMS file for vaxC[.vax]INIT_DRIVER.MAR Driver loader and loaded code sourceC[.vax]INIT_DRIVER.OBJ Driver loader and loaded code objectP[.vax]INIT_DRIVER_NOAUDIT.OBJ Driver loader and loaded code object w/o auditing-[.vax]SDA.COM SDA debug file"[.vax]TCPFILTER.EXE exe-[.vax]TCPFILTER.OBJ object by decc-[.vax]TCPFILTER_VAXC.OBJ object by vaxc0[.vax]TCPLINK.COM link command fileCNUCXTCPFILTER022A.BCK ~[TCPFILTER]TCP.COM;2Ng*[TCPFILTER]TCP.COM;2+, ./ 4N-~0123KPWO56'57?586dw(9U#$GHJG$ config_file= f$parse ("TCP_SECURITY.DAT;",f$environment("Procedure"))N$ define tcp_security$cfg 'f$element (0,";",config_file)! allow version changeULUCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC;9Z*[TCPFILTER]TCPFILTER.DOC;9+, ./ 4Z6-~0123KPWO56bU/7oU/8"eK9GHJMTCPFILTER est un programme permettant de filtrer les acces sortants a traversTCP/IP.Gchaque ouverture d'appel sortant est verifi avec une table d'adresses,et valid ou interdit.Ola validation de l'appel peut se faire de deux manires: par ACL, ou par image.>l'image TCPFILTER.exe lit un fichier pointe par le nom logique+TCP_SECURITY$CFG, par defaut sur SYS$INPUT:4le fichier contient des lignes de la forme suivante:Yaccess xx.xx.xx.xx [mask yy.yy.yy.yy] [port zzz] acl (identifier=machin, access=outgoing)Zaccess xx.xx.xx.xx [mask yy.yy.yy.yy] [port zzz] image sys$system:ucx$ftpd [outgoing/none]Gprotection [system:o] [owner:o] [group:o] [world:o] ! default: system:O!owner moi ! default: owner systemQloadcode 0 ! par defaut; toutes autres valeurs rserves pour le developpement !!Ples adresses sont explorees sequentiellement jusqu'a arriver au bout de la listeNsi plusieurs couples address/mask/port sont identiques, alors les informationsId'access sont groupees avec la premiere declYUCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC;9Z>jaration de address/mask/port.JEn cas de correspondance entre l'adresse appele et la table, si il s'agitDd'une acl, l'acces final est dtermin par cette ACL: on ne poursuitLpas la recherche dans la liste. S'il s'agit d'une image, si elle correspond,Ealors l'acces est determine l'acces associe a cette image. Si l'imageMne correspond pas, alors on continue la recherche sequentielle dans la table.Ksi aucune entre ne convient, alors l'acces est dtermin par la protectionJet owner dans la table. L'accs loopback (127.x.x.x) est toujours autorisHtoutes les syntaxes autorisent aussi un access Incoming, malheureusement4je n'ai pas encore trouv un moyen de l'implmenter.exemple de fichier:Faccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)Jaccess 0.0.0.0 mask 0.0.0.0 acl (identifier=ucx$tcp_user, access=outgoing)3access 0.0.0.0 mask 0.0.0.0 image ucx$ftpd outgoingFl'access image ucx$ftpd outgoing est necessaire pour autoriser les FTPF*ENTRANTS* !!! ftpd ouvrant en effet un acces sortant pour transmettre1les fichiers du vax vers la machine distante !!!!P-------------------------------------------------------------------------------- utilisation:A apres avoir demarr UCX, ou simplement charg BGDRIVER, executezITCPFILTER. Le programme lit ses donnees sur SYS$INPUT, ou sous le fichierLpoint par TCP$CONFIG (type .DAT par dfaut). Pour changer la configuration,Kil suffit de rexcuter TCPFILTER. Lors du rechargement de bgdriver (relance+de UCX par example) TCPF UCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC;9ZILTER est supprim.P-------------------------------------------------------------------------------- installation:A restaurer le save-set: backup TCPFILTERxxx.BCK/sav ddcu:[dir...]A relinker si necessaire dans le sous-directory [.vax] ou [.alpha]P--------------------------------------------------------------------------------!liste des fichiers dans AA.READMEP--------------------------------------------------------------------------------?differences entre 2.2A et 2.2: faire marcher le mot-cle 'port', faire marcher les lignes de continuationGUCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC_EN;5ZlS*[TCPFILTER]TCPFILTER.DOC_EN;5+, ./ 4Zp-~0123KPWO56ϬlE/7O:E/8Oz=eK9GHJOTCPFILTER is an utility that allows the filtering of outgoing UCX TCP /IP callsLeach attempt to open an outgoing call is verified with a table of addresses,!and the is allowed or forbidden. FThe validation of the call can be done with two different mechanisms: Ewith ACL, or with image names. The use of ACL allows controlling each#user by the means of an identifier.GTCPFILTER.exe reads a configuration file pointed at by the logical name>TCP_SECURITY$CFG, defaults to SYS$INPUT:, default type: .DAT .Jthis configuration file contains lines that can have the following format:Zaccess xx.xx.xx.xx [mask yy.yy.yy.yy] [port zzz] acl (identifier=theuser, access=outgoing)Zaccess xx.xx.xx.xx [mask yy.yy.yy.yy] [port zzz] image sys$system:ucx$ftpd [outgoing/none]Gprotection [system:o] [owner:o] [group:o] [world:o] ! default: system:O owner me ! default: owner system?loadcode 0 ! default: all other values are for the development.<The addresses are scanned sequentially. If several identicalFtripleoEUCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC_EN;5Z]ts address/mask/port are encountered, the access information areCgouped with the first declaration. When a called address matches anBentry in the table, if the access type is an ACL, the final accessHis determined by the acl. If the entry is an image name and is the imageNname of the caller, the final access is determined by the access in the table.JIf the image name does not match, the entry is skipped, and the next entryMis checked for matching. If no match is found, the final access is determinedDby the protection and owner fields. The loopback address (127.x.x.x)Cis always allowed. I did not find a way to control incoming access.3Audit ACLS are allowed, with the standard assembly. example file:Faccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)Jaccess 0.0.0.0 mask 0.0.0.0 acl (identifier=ucx$tcp_user, access=outgoing)3access 0.0.0.0 mask 0.0.0.0 image ucx$ftpd outgoingGthe "access image ucx$ftpd outgoing" is necessary to allow the incomingEftp accesses !!! this is because the ftp server open an outgoing call%to allow the client to "get" files !!P--------------------------------------------------------------------------------EUse: after having started UCX, or only loaded BGDRIVER, run tcpfilterITo change the configuration, re-run TCPFILTER. When BGDRIVER is reloaded,5with standard assembly options, TCPFILTER is removed.P-------------------------------------------------------------------------------- installation:( restore the save-set into ddcu:[d }{UCXTCPFILTER022A.BCK ~[TCPFILTER]TCPFILTER.DOC_EN;5ZJir...]9 relink if necessary, in the subdirectories vax or alpha.$ make modifications at your own riskfiles:D the file AA.FILES contains the explanation for each file in the kitP-------------------------------------------------------------------------------->differences between 2.2 and 2.2A: make the 'port' keyword work& make the continuation lines work $ݮUCXTCPFILTER022A.BCK[~[TCPFILTER]TCPFILTER.MLB;1d&*[TCPFILTER]TCPFILTER.MLB;1+,[.d/ 4d-~0123 KPWOe56gr]=7#+Ř8=(9U#$GHJ% Librarian A09-16ݛ]=Tإ+Ř    ACT_DEF ^;~[TCPFILTER]AA..CO\-[MLB_MN;5dIZTgk)2/ ,z\oMJ/\l=?dL,H̨Hu~*9"2>kB|>0A$5#\i#/OL#6&^p.Q'i)/D!|8;} wyds\&6L 1 "'A_F]V-`UGlFSE`VCB@HGN"vn`Z zH\&QA_LFN-BJk)nh')+=,-$}oYR8"hz(K:S0ѣU|9 5U:MFF]R ]F5>$Hbr7??>\H D\HLJt+^7rq.9%)s 5bc$9@0f$`b:n.-CMJMVm9n)w tep j0@M M9w)"ci`f*."GkM)%|7tvuP00tk/5IFlNZy6|<+g~hx|w^&3!kwf >gbMXnTW_C$WZjld48;*5X ]^k,v/ Xj'v`szqvyS3Z~2Y|#}+X H:A0[6SGF3+f72o }q+![R(gH\ ,uOWSw\(3Klis?ESF;t`, 'Zjo $$X9&ukd5zL=}]M \gCYk Ng@;nvBl9A ^DK$odm9O.t&gq&"1#&&tyn831)U?5=K,#fBi^YQ.uvzwfgact$k_length = . .psect acte,abs,noexe acte$l_addr=. .blkl 1 acte$l_mask=. .blkl 1acte$wl_port=.acte$whb_index=. .blkw 1acte$wh_index=. .blkw 1acte$wl_size=.acte͈UCXTCPFILTER022A.BCK[~[TCPFILTER]TCPFILTER.MLB;1dɎ $whb_type=. .blkw 1acte$wh_type=. .blkw 1acte$k_length = .acte$k_acl= 0.= .-4acte$l_status=. .blkl 1 .psect actimg,abs,noexeactimg$w_fid=. .blkw 3actimg$l_access=. .blkl 1actimg$t_devnam=. .blkb NAM$C_DVIactimg$k_length = . .endmww V= GEGE ACT_DEF }Ƈ? GEGE ACT_DEF ? GEGE ACT_DEF .^ GEGE ACT_DEF u{+Ř GEGE ACT_DEFbw? .macro act_def .psect act,abs,noexe act$l_aq=. .blkl 1 act$l_owner=. .blkl 1 act$w_size=. .blkw 1 act$w_type=. .blkw 1 act$w_prot=. .blkw 1 act$w_ctl=. .blkw 1act$v_owner = 0act$v_prot = 1act$m_owner = 1act$m_prot = 2)act$m_valctl = act$k_length = . .psect acte,abs,noexe acte$l_addr=. .blkl 1 acte$l_mask=. .blkl 1acte$wl_port=.acte$whb_index=. .blkw 1acte$wh_index=. .blkw 1acte$wl_size=.acteCQUCXTCPFILTER022A.BCK[~[TCPFILTER]TCPFILTER.MLB;1d5W$whb_type=. .blkw 1acte$wh_type=. .blkw 1acte$k_length = .acte$k_acl= 0.= .-4acte$l_status=. .blkl 1 .psect actimg,abs,noexeactimg$w_fid=. .blkw 3actimg$l_access=. .blkl 1actimg$t_devnam=. .blkb NAM$C_DVIactimg$k_length = . .endmww ^ .macro act_def .psect act,abs,noexe act$l_aq=. .blkl 1 act$l_owner=. .blkl 1 act$w_size=. .blkw 1 act$w_type=. .blkw 1 act$w_prot=. .blkw 1 act$w_ctl=. .blkw 1act$v_owner = 0act$v_prot = 1act$m_owner = 1act$m_prot = 2)act$m_valctl = act$k_length = . .psect acte,abs,noexe acte$l_addr=. .blkl 1 acte$l_mask=. .blkl 1acte$wl_port=.acte$whb_index=. .blkw 1acte$wh_index=. .blkw 1acte$wl_size=.acte$whb_type=. .blkw 1acte$wh_type=. .blkw 1acte$k_length = .acte$k_acl= 0.= .-4acte$l_status=. .blkl 1 .psect actimg,abs,noexeactimg$w_fid=. .blkw 3actimg$l_access=. .blkl 1actimg$t_devnam=. .blkb NAM$C_DVIactimg$k_length = . .endmww̎UCXTCPFILTER022A.BCK%~[TCPFILTER]TCP_SECURITY.DAT;18Q *[TCPFILTER]TCP_SECURITY.DAT;18+,%./ 4Q*-~0123KPWO56h7S8WV*9U#$GHJ!*! disallow non-system access to smtp port.!)access 0.0.0.0 mask 0.0.0.0 port 25 acl -3 (alarm_journal=security, access=outgoing+failure)! enstFaccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)!E! FTP server opens a second TCP cnx to send data to the caller !!!!!!!3access 0.0.0.0 mask 0.0.0.0 image ucx$ftpc outgoing!! default access!Jaccess 0.0.0.0 mask 0.0.0.0 acl (identifier=ucx$tcp_user, access=outgoing)Qaccess 0.0.0.0 mask 0.0.0.0 acl (alarm_journal=security, access=outgoing+failure)! EUCXTCPFILTER022A.BCK~[TCPFILTER]VERSION.DAT;1 *[TCPFILTER]VERSION.DAT;1+,./ 4-~0123KPWO56/7ON/8OYeK9GHJ022aUCXTCPFILTER022A.BCK6~ [TCPFILTER]FREEWARE_README.TXT;3Iq *[TCPFILTER]FREEWARE_README.TXT;3+,6./ 4I-~0123KPWO56N/7;/8ΰdK9GHJ8TCPFILTER V2.2A, TOOLS, UCX Security for outgoing calls.I This tool provides security on an user basis, for outgoing UCX IP calls.5-UCXTCPFILTER022A.BCK+~[TCPFILTER]FREEWARE_DEMO.TXT;2A*[TCPFILTER]FREEWARE_DEMO.TXT;2+,+./ 4A,-~0123KPWO56pt+Ř7>Ֆt+Ř8> A9U#$GHJ#1- set default to your architecture execute @tcplink [p1] [p2]2 with p1= yes if you want to disable the auditing,+ p2=yes if you don't have decc$shr.exe*2- an example of setup is given in tcp.comA it loads the security filter with the sample configuration given in tcp_security.dat5UCXTCPFILTER022A.BCK+~[TCPFILTER]RELFORM.TXT;1D*[TCPFILTER]RELFORM.TXT;1+,+./ 4D-~0123KPWO56*Ř7f l/Ř8f@89U#$GHJ RELEASE FORM ------------OpenVMS Freeware CD--------------------DEVELOPER RELEASE FORM:= As the owner/developer of this software, I release it to be D included on the OpenVMS Freeware CD-ROM. I expect no renumerances D or payments for the use of this software from Digital or Digital's customers. gerard@cal.enst.fr Developer/Owner NameP$: hga";R^;3`1 *[TCPFILTER]PCNJUX@UBFTU%'P";R^;3A)P6./P 4I-~0123KPWN4/+Vt##iaݫ5J~/#$GHJ}UHU b{mbc 6/ZIU g-|iH^_ o~Y[ ]/>4\W&Ml[(lLm*F-=K/*E LFHp*og6gxi-43+jn5_Mra*B+.^v=}4gsb#Q<@o7dvG KMae(1 %rj;ue2v rh l1>rbu{n4 Sh' L>m< {HFY^^Gprn~).;0B;o(o98!U~@pYΣI(% o%eDdWOE20SU; Isup=  _As47! thAE|RT[L8{_V[X]s5o|Zn^A,OG@U\99mos CD Fq@\_Th^e'a I25 ezTc{r M> zfG]g CF9 =<@cm_owner ! act$m_prot>act$k_length = . .psect acte,abs,noexe acte$l_addr=. .blkl 1 acte$l_mask=. .blkl 1acte$wl_port=.acte$whb_index=. .blkw 1acte$wh_index=. .blkw 1acte$wl_size=.acte.$whb_txpe=`5mlkw 1acte$wh_type=. .blkw 1acte$k_length = .acte$k_acl= 0.= .-4acte$l_status=. .blkl 1 .psect actimg,abs,noexeactimg$w_fid=. .blkw 3actimg$l_access=. .blkl 1actimg$t_devnam=. .blkb NAM$C_DVIactimg$kmength = . .endmww;UCXTCPFILTER022A.BCK+j[TCPFILTER.ALPHA]DESCRIP.MMS;21?F*[TCPFILTER.ALPHA]DESCRIP.MMS;21+,+./ 4?-j0123KPWO562`,Ř7,Ř8x㼜(9U#$GHJ?tcpfilter.exe : init_driver.obj, loadcode.obj, tcpfilter.obj, \ loadcode_noaudit.obj @tcplink"tcpfilter.obj : [-.src]tcpfilter.c5loadcode.obj : loadcode.m64,[-]tcpfilter.mlb(act_def) macro/alpha loadcode.m648loadcode_noaudit.obj : [-.src]noaudit.mar,loadcode.m64,\ [-]tcpfilter.mlb(act_def)8 macro/alpha [-.src]noaudit.mar+[]loadcode.m64/object=$@<init_driver.obj : init_driver.mar, [-]tcpfilter.mlb(act_def).[-]tcpfilter.mlb(act_def) : [-.src]act_def.mar0 lib/replace [-]tcpfilter.mlb [-.src]act_def.mar"*[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5+, ./ 4J-j0123KPWO566L+-Ř7+-Ř8\)9U#$GHJ84UCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5Jz& .title INIT_DRIVER - patch UCX$DEVICE .ident /V2.1/ ; */D; Copyright () Ecole Nationale Suprieure des Tlcommunications */ ; */8; programmme pour filtrer les appels TCP/IP sortants */ ; */%; 21-oct-1992: Guillaume grard */ ; */:; Ce logiciel est fourni gratuitement et ne peut faire */*; l'objet d'aucune commercialisation */ ; */3; Aucune garantie d'utilisation, ni implicite, */4; ni explicite, n'est fournie avec ce logiciel. */+; Utilisez-le vos risques et prils */ ; */;9; 02-oct-1992 gg v2.0 utilisation d'une table de securiteJ; 14-oct-1991 GG v1.0-1 utilisation de deanonpaged plutot que deanonpgdisz7; raz du driver dans unload au cas ou pas unloadable; 7-oct-1991 GG v1.0: cration;7; Ce programme ne permet les connextions sortantes que :; pour les appels sur les addresses autorisees en fonction-; des ACL et/ou des images effectuant l'appel; .disable global .library /[-]tcpfilter/ .library /sys$share:lib/ .link @sys$system:sys.stb@/se $DDBDEF $DDTDEF $DPTDEF $DYNDEF $FDTDEF $IODEF $LDRIMGDEF $NAMDEF $PDSCDEF $SSDEF .pageB .external sch$iolockr,sch$iounlock,sch$lockr,sch$lockw,sch$unlock' .external ioc$searchdev,ioc$gl_dptlist) .external exe$alonpagvar,exe$deanonpaged .external exe$prober .external lib$put_output; ; .external krnlsize,krnlstart,krnlcode,krnldata,krnlallocsz. .external drv_accessfdt,drv_unload,drv_fdtadr, .external ret_accessfdt0UCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5J|,unload_pd,access_pd6 .external dbgdata,mutex,access_table,objprot,objowner;  act_def;$; unload code when reloading driver.); conditional assembly since rather hairy4; we use inittab to store code to call us in case of.; a driver reload, to allow us to leave memory; UNLOAD=1 ;; .page;;; .psect rdonly,rd,nowrt,longdevnam: .ascid /UCX$DEVICE/=replace:.ascid /%TCPLOAD-I-REPLACED, previous code replaced./$kernel_inadr: .address kernel_lock,- mod_drv_accessfdt_end;" .psect code,rd,nowrt,long,shr,pic;/LOADCODE::.call_entry MAX_ARGS=4,HOME_ARGS=TRUE;% $CMKRNL_S routin=mod_drv_accessfdt,- arglst=<(AP)> cmpl #9,r0 bneq dehors pushal replace calls #1,G^LIB$PUT_OUTPUT movl #9,r0 dehors: ret .page;$; translate kernel into system space"; replace ACCESS FDT entry by ours;; P1: size of table; P2: address of table'; P3: address of diag buffer (optional)8; P4: reload code (optional and NOT protected (CRASHES))!; 0 or absent: don't reload code-; 1: reload code without any synchronization0; 2: reload code and synchronize with old mutex ; R4 @PCB;mod_drv_accessfdt:1 .call_entry MAX_ARGS=4,HOME_ARGS=TRUE,input= clrl r10 cmpl (ap),#2 blssu insfarg cmpl (ap),#4 bgtru maxarg cmpl (ap),#3 blssu 1$ movl 12(ap),r10 ifnowrt #<6*4>,(r10),accvio1$: movzbl #1,r5 movl 4(ap),r7 cmpl r7,#<1@18> bgtru badpar cmpl r7,#32 bleq badpar incl r5 movl 8(ap),r6 bleq badpar movq r6,r0 clrO;UCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5JCl r3 jsb G^EXE$PROBER blbc r0,retdiag addl #2,r5 clrl r9 cmpl (ap),#4 blssu 2$ movl 16(ap),r9 cmpl r9,#2 bgtru badpar2$:; callg (ap),check_table blbc r0,ret $LKWSET_S inadr=kernel_inadr blbs r0,kernel_lock brb retdiagret: retinsfarg:movl #SS$_INSFARG,r0 brb retmaxarg: movl #SS$_OVRMAXARG,r0 brb retaccvio: movl #SS$_INVARG,r0 brb retbadpar: movl #SS$_BADPARAM,r0retdiag:movl r10,r3 beql ret .disable flagging movq r0,(r3)+ movq r2,(r3)+ movq r5,(r3)+ .enable flagging brb ret; kernel_lock:@ jsb G^SCH$IOLOCKR ; for IOC$SEARCHDEV *AND* protection against ; unload moval devnam,r1 ; IPL: ASTDEL- jsb G^IOC$SEARCHDEV ; search specific device blbc r0,133$;; R1 UCB; R2 DDB; R3 SB;# movl DDB$L_DDT(r2),r0 ; @ of DDT& movl DDT$PS_FDT_2(r0),R3 ; @ of FDTA addl #<4*IO$_ACCESS+FDT$PS_FUNC_RTN>,r3 ; @ of PD for access_fdt bsbw find_dpt blbc r0,133$;/; first FDT valid for access; replace its entry; < movl (r3),drv_accessfdt ; update drv_accessfdt from driver movl #-1,drv_accessfdt+4 .IF DF,UNLOAD movl dpt$ps_unload(r5),r1 beql 100$ ; no unload routine4 movl r1,drv_unload ; update drv_unload from driver movl #-1,drv_unload+4 100$: .ENDC; bsbw alloc_table blbs r0,140$133$: brw 433$;C140$: bsbw check_replace ; may update drv_accessfdt and drv_unload;0; R2 @ of previous kernel data block (0 if none); R3 @ of FDT entry; movl r2,r8 ; save for later JUCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5J tstl r9 ; reload flag bneq 200$ ; reload code0150$: tstl r2 ; if code already loaded, do not bneq 300$ ; reload it200$: movl #krnlsize,r1 jsb G^EXE$ALONPAGVAR;; r2 @ allouee ; r1 taille; blbc r0,133$;@ subl3 #krnlstart,access_pd+PDSC$Q_ENTRY,r28 ; update procedure 3 addl3 r2,r28,access_pd+PDSC$Q_ENTRY ; descriptors" movl #-1,access_pd+PDSC$Q_ENTRY+4< subl3 #krnlstart,unload_pd+PDSC$Q_ENTRY,r28 ; before moving> addl3 r2,r28,unload_pd+PDSC$Q_ENTRY ; code in system space.." movl #-1,unload_pd+PDSC$Q_ENTRY+4;" movw r1,krnlallocsz ; save size3 pushr #^M ; save R4 for SCH$IOUNLOCK movc3 #krnlsize,krnlstart,(r2) popr #^M;1 .IF DF,UNLOAD ; we are protected by the IO MUTEX2 moval (r2),DPT$PS_UNLOAD(r5)B movl r3,(r2); save FDT routine pointer addr& movl #-1,(r2) .ENDC;300$:;; R2 now points to valid code+; R3 points to the FDT entry to be replaced; R8 points to old code, if any; R9 is the reload flag; tstl r8+ beql 310$ ; br if no old code was found% movl (r8),r6 blbs r9,310$ ; skip mutex: moval (r8),r0 ; synchronize on old mutex jsb G^SCH$LOCKW310$:; movl access_table,r10& movl r10,(r2)( movl #-1,(r2)? moval (r2),(r2) ;;; DBG% bbc #act$v_owner,act$w_ctl(r10),311$E movl act$l_@/UCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5J owner(r10),(r2); update default owner)311$: bbc #act$v_prot,act$w_ctl(r10),312$D movw act$w_prot(r10),(r2) ; update default prot.312$:9 moval (r2),(R3) ; update FDT entry; tstl r8* beql 450$ ; no previous code, all done blbs r9,320$ movl r2,r7) jsb G^SCH$UNLOCK ; wipes out r1-r3320$:;; free old table; movl r6,r0) jsb G^EXE$DEANONPAGED ; wipes out r1-r2; cmpl r8,r7 ; same code ? beql 455$ ; br if yes;; free old kernel fragment; movl r8,r0 jsb G^EXE$DEANONPAGED; ; R1,R2 destroyed movl #9,r0 ; replaced brb 500$;433$: movl r0,-(SP)$ movl access_table,r0 ; error exit beql 510$ jsb G^EXE$DEANONPAGED brb 510$450$: movl #1,r0 ; created brb 500$#455$: movl #3,r0 ; table changed;*; save status, unlock io database & return;500$: movl r0,-(SP)510$: jsb G^SCH$IOUNLOCK movl (SP)+,r0 ret; ; inputs R3 @FDT entry; R10 Diag buffer, if any;; output R0 SS$_BUGCHECK R5=0%; R0 SS$_NORMAL R5= @DPT R8= @LDRIMG; ; R1 scratch;;; we find the DPT thinking the FDT address is in its space.*; (the DPT list is locked by the io mutex);find_dpt: .jsb32_entry movl G^IOC$GL_DPTLIST,R5 movl r5,r0 ; end marker clrl r28&1$: movl DPT$IL_LOADER_HANDLE+4(r5),r8& beql 10$ ; no LDRIMG... possible... bgeq 33$' cmpb LDRIMG$B_TYPE(r8),#DYN$C_LOADCODE bneq 33$B cmpl r3,LDRIMG$L_NONPAG_W_BASE(r8) ; asUfUCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5Jsume FDT is in nonpag area blssu 10$ ; too low> addl3 LDRIMG$L_NONPAG_W_BASE(r8),LDRIMG$L_NONPAG_W_END(r8),r1 cmpl r3,r1 blequ 20$ ; ok10$: movl DPT$L_FLINK(r5),r5 incl r28 cmpl r5,r0 bneq 1$ 33$: tstl r10 beql 331$ movl r1,(r10) movl r3,4(r10) movl r5,8(r10) movl r10,12(r10) addl2 #8,12(r10) movl r28,16(r10) movl r8,20(r10)331$: movl #SS$_BUGCHECK,R0 clrl r5 clrl r8 rsb20$: movzbl #SS$_NORMAL,R0 rsb; ;check_replace: .jsb32_entry;; check for replacement of code ; inputs:; R3 @ fdt table entry ; R5 @DPT ; R8 @LDRIMG; old code: krnlstart,; krnlcode,; drv_accessfdt,; ret_accessfdt,; drv_unload; output r2 0: no replacement; #0: @ of old block; updates new kernel code/data; - drv_unload; - drv_accessfdt; scratch R0,R1;C; first check: FDT routine pd address must not be within the driver movl (r3),r1# movl LDRIMG$L_NONPAG_R_BASE(r8),r2. cmpl PDSC$Q_ENTRY(r1),r2 ; saved FDT rtn addr blssu 1$" addl LDRIMG$L_NONPAG_R_END(r8),r2 cmpl PDSC$Q_ENTRY(r1),r25 blequ 20$ ; FDT routine within the driver. not ours1$:B; second check: the saved FDT rtn addr must point on the same code8 movl PDSC$Q_ENTRY(r1),r1 ; assumedly points to krnlcode0 cmpl (r1),ret_accessfdt bneq 20$ ; different code .IF DF,UNLOADB; if the unload feature has been inited, then the unload code must(; be at the place where the inittab was. movl DPT$PS_UNLOAD(UCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5J1pr5),r0# movl LDRIMG$L_NONPAG_R_BASE(r8),r2. cmpl PDSC$Q_ENTRY(r0),r2 ; saved FDT rtn addr blssu 2$" addl LDRIMG$L_NONPAG_R_END(r8),r2 cmpl PDSC$Q_ENTRY(r0),r2' blequ 10$ ; within driver... not ours2$:;B; update driver unload code from original address in previous code;* movq (r1),drv_unload10$: .ENDC;F; update driver FDT rtn address from original address in previous code;0 movl (r1),drv_accessfdt8 moval (r1),r2 ; previous code addr. rsb"20$: clrl r2 ; no previous code rsb;; inputs: r6, r7$; outputs:access_&table able address; r0: status;;;alloc_table: .jsb_entry pushr #^M movl r7,r1 jsb G^EXE$ALONPAGVAR blbc r0,33$ movl r1,-(sp) movl r2,access_table movl #-1,access_table+4 movc3 r7,(r6),(r2) movl access_table,r2 movl (SP)+,r1 movw r1,act$w_size(r2)' movw #<1@8+DYN$C_BUFIO>,act$w_type(r2) movzbl #SS$_NORMAL,r033$: popr #^M rsbmod_drv_accessfdt_end= .; ; P1 size (in bytes) of table; P2: address of table;; check user table validity;# .entry check_table,^M movl 8(ap),r0 ; table address;" movab @4(ap)[r0],r2 ; address max tstl act$w_size(r0) ; reserved bneq 33$% bicw3 #act$m_valctl,act$w_ctl(r0),r3 bneq 33$ movl act$l_aq(r0),r1 bsbb check_list blbc r0,330$ ret33$: movzwl #SS$_BADPARAM,r0330$: movl r10,r3 beql 331$ .disable flagging movq r0ZWmUCXTCPFILTER022A.BCK j"[TCPFILTER.ALPHA]INIT_DRIVER.MAR;5J,(r3)+ movq r2,(r3)+ movq r4,(r3)+  .enable flagging 331$: ret;check_list: .jsb32_entry tstl r1 beql 20$( moval (r0)[r1],r1 ; first entry address1$: movab acte$k_length(r1),r4 cmpl r4,r2 bgtru 33$ ; invalid entry movzwl acte$wh_index(r1),r4 beql 20$ ; end of list moval (r1)[r4],r5 movzwl acte$wl_size(r1),r4 addl r5,r4 cmpl r4,r2 bgtru 33$ ; invalid entry tstw acte$wh_type(r1) beql 10$'2$: cmpb actimg$t_devnam(r5),#NAM$C_DVI bgtru 33$ addl #actimg$k_length,r5 cmpl r5,r4 blssu 2$ bneq 33$10$: addl #acte$k_length,r1 brb 1$20$: movzbl #SS$_NORMAL,r0 rsb33$: movzbl #SS$_BADPARAM,r0 rsb .end"*[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1+,$ ./ 4D-j0123KPWO56v2-Ř7-Ř8y(9U#$GHJ UUCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1 GG INIT_DRIVERV2.121-FEB-1995 16:06AMAC V2.0-22 P$LINKAGE CODENRDONLYACTIMGACTEACT $ABS$ . BLANK . . ABS . SYS$CMKRNLLIB$PUT_OUTPUT EXE$PROBER SYS$LKWSET SCH$IOLOCKR IOC$SEARCHDEV DRV_ACCESSFDT DRV_UNLOADKRNLSIZEEXE$ALONPAGVAR KRNLSTART ACCESS_PD UNLOAD_PD KRNLALLOCSZ DRV_FDTADR ACCESS_TABLEMUTEX SCH$LOCKWKRNLDATADBGDATAOBJOWNEROBJPROT SCH$UNLOCKEXE$DEANONPAGED SCH$IOUNLOCKIOC$GL_DPTLIST RET_ACCESSFDTKRNLCODE SCH$LOCKRAMAC$EMUL_CALLOTS$MOVE0JLOADCODE0J CHECK_TABLE =0( ;=@ = ""00;; LIB$PUT_OUTPUT"  SYS$CMKRNL"  SCH$IOUNLOCK  SCH$LOCKW7 KRNLALLOCSZ AMAC$EMUL_CALL=!=  g}sJ;1^.g`a>NQO?8,0EiQ[2J]X 3volLq#+i(hyV# 0OF@uFNYb0dWf!6VSQ ` c&)'kO!ega]`irx !nj-5DHC"X?|' =gF}!684H9W)e!P>MSxO G84d 'RBL,M;yZ5vnK($"6D?ݨI ?b$4ҰщvI]JJX:WZcabO]x;w$Me:?"k:} V."oc}XDr}? f>!a5>dRFVXBpz%=9=ps,+j c!07hU3aON)C@} qgv1StPAh^D`cZ3z(bsNzF4p|M|XltND0}F&S6|e2G1,"NxVJB]V=a?Q!drc4| u]rEZ,Hv(K6D##fO' h[eQ%'Drjm3GI@EDvfZU16?e9/?Tm'`5)Aq \n .:4*_( p(!w/8) CxOXV8/83ye' 3=GpuT6/!s*zRR;kEFr"*s1G D*84yYdNDKm84kMY; EpoC>: }_-,I=wy#++i =D9'W=*XT t XRw6x$A5TF/+eZjx4X] T~b$";OViDc(`N,npKz0pr(!^S2ii@8bETF6LK]JzV,d"1>qUYd Ii'kwu/*x[/9 !eB!/c)^w,RB^,d%jhLpu(alio T|W{7_V%Gbe?UM$#\j^yOf293aPvfh\,pR8~tG_# Kx=h ;1q[|"lr{SY;H4i4[[h6Gks%$O:,=x8j sV]b=[Y?}UJXNcOr!Y1bnKl+_g0EC)$W:O$E{siqNAeVPR4XEWHTM#*Q^0qA?7 j< \8N2bH7(+ESZXqgV54> $e gv.CJ8A>nfPhV4YF7n ed:S S%Mb /Q~tMOZ&7P'FWp`VN4Ax6B FtMJl4' hZSJHr J6>5{;wK #V9V1}hhu ]fnh3= H#J",cqg\r%5py6L~2XPqy37 sd~/t& [A>o>#o`Nvkr3^%qq={Z`I=XA@+W W3`mLK3(,6Q6,{jIXv f mn*ZCQ_k;a2RY;P=yQ@WpY";yP4O`hFϷk[WB/^<k":ZVQs'-ulA!ueY$} EwU.O1,{)0{/][69c( G!l'a.;;V GP;\Kgi4R/cwqjo so79WDIUWzo*T-C`c!Ouflfz"dsaUCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;13 SYS$LKWSET""7DBGDATA7OBJPROT7OBJOWNER7KRNLSIZE EXE$DEANONPAGED7 UNLOAD_PD7 ACCESS_PD=00;= 7 KRNLSTART7 ACCESS_TABLE7 DRV_FDTADR7 DRV_ACCESSFDT7 DRV_UNLOAD7MUTEX7KRNLDATA`  SCH$IOLOCKR  EXE$PROBER;  IOC$SEARCHDEVOTS$MOVE EXE$ALONPAGVAR  SCH$UNLOCK=0@;7IOC$GL_DPTLIST=0;7KRNLCODE7 RET_ACCESSFDT=0;=0 ;=P< ="=0 ; = >C?G~(^0 G8G= =]}PMC8 TGXm@Zk05@0M4GHmTBC@M@Zk4GG(08CkGG>C?G~0^8^@~HPX޴`hp>x^޵ GG==] } GSCk}4G0`C`CFQGf@GsC ]GGGpD @B11 BFGGW`'4G4G0@@FqGP`0@Nݠ0@KpMCxmCG@Zk]P@ G@C =4G0U AS AFG8ͦCM=mG@Zk0GMGmtGԈC@Zk)GC `Ga@G;a@GZza@ذG#UCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1K08^@~HPXޤ`hp>x^ޥCkG |"  G`Mhm@ZkM0-m@Zk A(`z@@Ӭ8-<5Câ;5C@mѲ4% 3sm#%@ӞA@C A@M-m@ZkM ͦڡ <A\@85C <A\@85C >C ~ C-l8HOIE=G~~ާ- M>CM 2B~^@ZkG^ :B0 ~BCC4EC:C/ABCAz:5CO (;ChC۠ HMxm:OCHCpM@ZkM65C( Pm:OCC7CX<CBCBC;oCWܲbCzAA.Jm;oCbCJ/AAXKP@G /AAK>`7BBzK.VJF:> 8CC& MCm@ZkMCm@Zk0AMCm@Zk4G>C`M>Chm@Zk C-G(>CMm>C@ZkCG4GtG- 8HN IE=p /Z KGw/ K[ wKzGw?GG;GCtG .TAJ 0UB`Hr@p4GXB0a@a@FF0C0@@AA*j J *  GGkG4GkP[{#LHC \(4GY@0CCFF%!6rB3B0C4LH4GC\W@0BBFGX;X92C!C٢ز<B8C<8CC4kGk>C^^~ (0 G8M>Cm>C>C@ZkC ͦ>C:5C>HVGVGM@ZkV>C/z"HXKG@?#$%JUCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1xG B/TA@oKZWKOG B?4G>C^~ (08Ck . "HW JF > "/ KY 7K/G "?GG>C~^ ^(~08@H GGC@`` /@8K$q G2FK#H@ zDA @ GG ^(~08@HCkGCGa@G<a@G[{a@.W J7G/ A @"@0@4G@FG) ,T!@H'"E@ ,!@H%@0@4G@FG/!@KG /T@4GK0CCFF P@@2@@"@4GkGk /V KD .W JD/V KG44GL SYS$CMKRNL4Dm# SYS$CMKRNL4H@L SYS$CMKRNL4\m#LIB$PUT_OUTPUT4dGlLIB$PUT_OUTPUT4h@lLIB$PUT_OUTPUT4G EXE$PROBER4m# EXE$PROBER4@ EXE$PROBER4 GAMAC$EMUL_CALL4 m#AMAC$EMUL_CALL4 @AMAC$EMUL_CALL4 G( SYS$LKWSET4 m# SYS$LKWSET4 $@( SYS$LKWSET4G SCH$IOLOCKR4m# SCH$IOLOCKR4@%UCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1  SCH$IOLOCKR4G IOC$SEARCHDEV4m# IOC$SEARCHDEV4@ IOC$SEARCHDEV4TGdEXE$ALONPAGVAR4\m#EXE$ALONPAGVAR4`@dEXE$ALONPAGVAR 4GOTS$MOVE4 @OTS$MOVE4xm# SCH$LOCKW4G SCH$LOCKW4@ SCH$LOCKW4TGd SCH$UNLOCK4\m# SCH$UNLOCK4`@d SCH$UNLOCK4 dGtEXE$DEANONPAGED4lm#EXE$DEANONPAGED4 p@tEXE$DEANONPAGED4 |GEXE$DEANONPAGED4m#EXE$DEANONPAGED4 @EXE$DEANONPAGED4G SCH$IOUNLOCK4m# SCH$IOUNLOCK4@ SCH$IOUNLOCK4 GEXE$DEANONPAGED4m#EXE$DEANONPAGED4 @EXE$DEANONPAGED4GEXE$ALONPAGVAR4m#EXE$ALONPAGVAR4 @EXE$ALONP&rѺUCXTCPFILTER022A.BCK$ j"[TCPFILTER.ALPHA]INIT_DRIVER.OBJ;1A4AGVAR4<GDOTS$MOVE4@@DOTS$MOVE = 4=UCX$DEVICE,4=8,%TCPLOAD-I-REPLACED, previous code replaced.4 4  *[TCPFILTER.ALPHA]LOADCODE.M64;56+,%.,/ 4V,+-j0123KPWO,56|~ 7I)}~ 8I3I(9U#$GHJ> .title LOADCODE - filter outgoing TCP accesses, loadable code .ident /V2.2A-AXP/;$; unload code when reloading driver.F; is conditional since it was on VAX, because the code used on VAX was2; not that straightforward. Much more easy on AXP.; .if NDF, UNLOADUNLOAD=1 .endc; ; maintain debugging information; .if NDF, DEBUGDEBUG=1 .endc;8; perform auditing... conditional since the has recently8; changed and the code may not be portable after VMS 6.1; .if NDF, AUDIT'mdUCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,AUDIT=1 .endc ; */D; Copyright () Ecole Nationale Suprieure des Tlcommunications */ ; */8; programmme pour filtrer les appels TCP/IP sortants */ ; */%; 21-oct-1992: Guillaume grard */ ; */:; Ce logiciel est fourni gratuitement et ne peut faire */*; l'objet d'aucune commercialisation */ ; */3; Aucune garantie d'utilisation, ni implicite, */4; ni explicite, n'est fournie avec ce logiciel. */+; Utilisez-le vos risques et prils */ ; */9; 24-may-1995 gg:v2.2A faire marcher le test du port */2; 02-jun-1994 gg v2.2 structures for auditing */2; 02-jun-1994 gg v2.1 use EXE$CHKPRO_INT interface9; 02-oct-1992 gg v2.0 utilisation d'une table de securiteJ; 14-oct-1991 GG v1.0-1 utilisation de deanonpaged plutot que deanonpgdisz7; raz du driver dans unload au cas ou pas unloadable; 7-oct-1991 GG v1.0: cration;7; Ce programme ne permet les connextions sortantes que :; pour les appels sur les addresses autorisees en fonction-; des ACL et/ou des images effectuant l'appel; .disable global .library "[-]tcpfilter" .library "sys$share:lib" $ACLDEF $ATRDEF $CCBDEF $CHPCTLDEF$ $CHPRETDEF ; for debugging purposes $DDBDEF $DDTDEF $DPTDEF $DYNDEF $FCBDEF $FKBDEF $IMCBDEF $IOCDEF $IODEF $IRPDEF $NAMDEF $NSAEVTDEF $OCBDEF ; object class block! $OSRVDEF ; object class services $ORBDEF $PCBDEF $PDSCDEF ; procedure descriptor $PSLDEF $PHDDEF $SECDEF $SPLCODDE(UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,F $SSDEF $WCBDEF .page8 .external sch$iolockr,sch$iounlock,sch$lockr,sch$unlock6 .external ioc$parsdevnam,ioc$searchint,ioc$verifychan* .external exe_std$abortio,exe$deanonpaged .external exe$primitive_fork .external exe$chkpro_int .external iac$gl_main_icb .external sys$fao .external bug$_inconstate .macro dbg_count offset .if NE,DEBUG ldq R28,8*offset+dbgdata+8 addq r28,#1,R28 stq R28,8*offset+dbgdata+8 .endc .endm .macro dbg_store offset,reg .if NE,DEBUG stq reg,8*offset+dbgdata+8 .endc .endm .macro M_jsb,addr ldq r28,ps_'addr' ldq r26,PDSC$Q_ENTRY(r28) mov r28,r27 JSR r26,(r26) .endm .macro M_bug_check,code subq sp,#16,sp stq r16,(sp) stq r17,8(sp) ldq r28,bug_'code' mov r28,r16 BUGCHK ldq r17,8(sp) ldq r16,(sp) addq sp,#16,sp .endm .macro m_ifnord size,addr,lab lda r16,addr ; addr mov size,r17 ; siz RD_PS ASSUME PSL$V_PRVMOD,EQ,0# and r0,#PSL$M_PRVMOD,r18 ; prvmod PROBER beq r0,lab .endm .macro ldzb_u reg,offset,base lda reg,offset(base) ldq_u r22,offset(base) extbl r22,reg,reg .endm .macro ldzw_u reg,offset,base lda reg,offset(base) ldq_u r22,offset(base) ldq_u r23,offset+1(base) extwl r22,reg,r22 extwh r23,reg,r23 or r23,r22,reg .endm .macro ldzl_u reg,offset,base lda reg,offset(base) ldq_u r22,offset(base) ldq_u r23,offset+3(base) extll r22,reg,r22 extlh r23,reg,r23 or r23,r22,reg .endm .macro ldzq_u r) (UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,9eg,offset,base lda reg,offset(base) ldq_u r22,offset(base) ldq_u r23,offset+7(base) extql r22,reg,r22 extqh r23,reg,r23 or r23,r22,reg .endm;  act_def .psect stack,abs,noexe,octa stk$savpd= . .blkq 1 stk$savret=. .blkq 1 stk$savr2=. .blkq 1 stk$savr3=. .blkq 1 stk$savr4=. .blkq 1 stk$savr5=. .blkq 1 stk$savr6=. .blkq 1 stk$savr7=. .blkq 1 stk$savr13=. .blkq 1;;; the calling arguments to the FDT routine must be saved to*; be restored for the original FDT routine; stk$savr16=. .blkq 1 stk$savr17=. .blkq 1 stk$savr18=. .blkq 1 stk$savr19=. .blkq 1 stk$savfp=. .blkq 1 .align octa ; fausquifautstk$k_length= .;;> .psect $kernel,rd,wrt,pic,octa,exe,mix ; quad to allow .align krnlstart::hdr: .quad 0 ; standard hdr# ASSUME IRP$W_SIZE,eq,<.-KRNLSTART>krnlallocsz:: .blkw 1# ASSUME IRP$B_TYPE,eq,<.-KRNLSTART>8 .byte DYN$C_BUFIO ; doit tre >= 0 pour EXE$DEANONPAGED0 .byte 1 ; version 2 (this byte is *not* used)  .long 0; second octaword .quad 0 .blkw 18 .byte DYN$C_BUFIO ; doit tre >= 0 pour EXE$DEANONPAGED+ .byte 1 ; version 2 (this byte *is* used) .long 0 .align quad;;;; ASSUME <.&7>,EQ,0 ; doit etre sur une frontiere de quad krnldata::9access_pd:: .blkb PDSC$K_MIN_STACK_SIZE ; this routine PD:drv_accessfdt:: .blkq 1 ; @ of original access routine PD7drv_unload:: .blkq 1 ; @ of original unload routine PDaccess_table:: .blkq 1/mutex:: .word ^XFFFF,0 ; protects access table *^UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V, .long 0 .if NE,UNLOAD9unload_pd:: .blkb PDSC$K_MIN_STACK_SIZE ; this routine PD9drv_fdtadr:: .blkq 1 ; address of pointer of FDT routine .endc" .blkq 16 ; spare for extensions .align quad dbgdata:: .if NE,DEBUG .blkq 32chpret: .blkb CHPRET$C_LENGTH .align quadprivs_used: .blkq 1ace_len: .blkw 1audit_len: .blkw 1alarm_len: .blkw 1ace: .blkb ATR$S_READACE4nsa_alm_len= *NSA$K_MAX_JOURNALSalarm_name: .blkb nsa_alm_len5nsa_aud_len= *NSA$K_MAX_JOURNALSaudit_name: .blkb nsa_aud_len dbgdataend= .".= chpret+CHPRET$L_MATCHED_ACELEN .long ATR$S_READACE.= chpret+CHPRET$L_ALARMLEN .long nsa_alm_len.= chpret+CHPRET$L_AUDITLEN .long nsa_aud_len.= dbgdataend .endc .if NE,AUDIT .align quad(osrv:: .blkb OSRV$K_LENGTH ; empty block .align quad/nsaacc::.blkb NSA$K_ACCESS_LENGTH ; empty blockbitout: .ascii /Outgoing/bitin: .ascii /Incoming/ .align quadbitnames::.blkl 32 out: .long 8  .long 0 in: .long 8 .long 0ocb:: .blkb OCB$K_LENGTH)strstr: .ascii /!UB.!UB.!UB.!UB Port:!UW/ctrstr: .long .-strstr .address strstr auditend= ..= ocb+OCB$T_NAME .ascii /IP destination/l= .-.= ocb+OCB$L_NAME_LENGTH .long l.= ocb+OCB$L_TYPE .long DYN$C_OCB.= ocb+OCB$L_SIZE .long OCB$K_LENGTH.= ocb+OCB$L_ACCESS_MODES# .long CHPCTL$M_READ!CHPCTL$M_WRITE .= auditend .endc;H; the following data will be moved on the kernel stack, quadword aligned+P>UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,h; .align octa kstkdatast:ucbadr: .blkq 1orb:: .blkb ORB$C_LENGTH .align quadchpctl::.blkb CHPCTL$K_LENGTH chpaccess=chpctl+CHPCTL$L_ACCESS .if NE,AUDITobjname:.blkb 4*3+3*1+11l$$ = .-objname .align quadobjname_d:.long l$$ .long objname .endc .align octa)kstkdatasz= .-kstkdatast ; multiple de 16 .align quad .BASE r13,access_pdret_accessfdt:: mov fp,sp ldq r16,stk$savr16(fp) ldq r17,stk$savr17(fp) ldq r18,stk$savr18(fp) ldq r19,stk$savr19(fp) ldq r7,stk$savr7(fp) ldq r6,stk$savr6(fp) ldq r5,stk$savr5(fp) ldq r4,stk$savr4(fp) ldq r3,stk$savr3(fp) ldq r2,stk$savr2(fp)) ldq r26,stk$savret(fp) ; return address ldq r27,drv_accessfdt ; PD ldq r13,stk$savr13(fp) ldq fp,stk$savfp(fp) lda sp,stk$k_length(sp) ldq r28,PDSC$Q_ENTRY(r27) jmp r31,(r28); .align quad(ps_exe$abortio: .address EXE_STD$ABORTIO)ps_exe$chkpro_int:.address EXE$CHKPRO_INT+ps_exe$deanonpaged:.address EXE$DEANONPAGED1ps_exe$primitive_fork:.address EXE$PRIMITIVE_FORK+ps_iac$gl_main_icb:.address IAC$GL_MAIN_ICB)ps_ioc$parsdevnam:.address IOC$PARSDEVNAM'ps_ioc$searchint:.address IOC$SEARCHINT)ps_ioc$verifychan:.address IOC$VERIFYCHAN ps_sch$lockr: .address SCH$LOCKR"ps_sch$unlock: .address SCH$UNLOCK$ps_sch$iolockr: .address SCH$IOLOCKR%ps_sch$iounlock:.address SCH$IOUNLOCKps_sys$fao: .address SYS$FAO&bug_inconstate: .quad BUG$_INCONSTATE access_type:"access_write: .long CHPCTL$M_WRITE access_read: .long CHPCTL$M_READ;,t   xdtw|;1<V)c3k2 =pnoc |&Tfh(Q3Jeoa.!GW1 PsRy9׶Tp/hi 7sdIbHopLU''@DGgyPok݊Wؤ[JTOfK8\QO[sQHow|%q\!~+Bcɱ:a]g.)&z 0^12q֐w19Pw*#tn5']8qky8}_+w9{}o'h\Y. 9K FIsh@fah+LkY5>{.:3ZM~%: ʾfpd@Ϣ ׮qw.wZ7Wk #DH]Y> }:Ѣ\5:JOTv8VEW<%+cx7I?\gP%w/P3D X-Pd`O3J1&-r ]=+a/FHr$Vuiog-.ٞ!,Ui)EA/1aYc G] _pJ8e9#1Dm*BDM[G{Fpƃ,Ѿӭ=FV*`VxILjZCw6PLUuBl+J \  b7~:j0S!1 ;`?V# (sI," MpCSBv0(mIwjYJng--C< ϻsIE_*YD :rqXFT S 4#nѺ U(UsJmQˣ>Fɗ8%0cpYG'߇h_wczU45rg0k 9Fȥ(0~xa1 #x GWF]yQzG1g۩ܓad iDAibKsXmJ,NJ20d~}9vGJ+Ms0~UBLɯ/bGǯ0sPn_4|=u 8Kp'(Z-]_{3Y*VSY|InqM3bYli{ nJ@BK17;];hĚE߰BFua!렚bBxlZ@ Cui B0p%Ya1hۏ" ^6ǹ+qK)ܱlk`d-MYb_d?uYi?%y0+Q6Cn3ynِ&PJw68ʃ~(eNBctrEJrg^!mTy,Ȓn2)Q yed%R8>#QiA]|r=V` ~%qL+`wF?YsFt*('p7r{E v`eDd0,r0 bne r0,do_check cmpeq r28,#IO$_ACCESS,r0 beq r0,ret_accessfdt;%; QIO P3: internet address descriptor; do_check: ldl r1,IRP$L_QIO_P3(r16) m_ifnord #8,(r1),ret_accessfdt ldzw_u r5,0,r1$ cmpeq r5,#16,r28 ; descr. length beq r28,ret_accessfdt! ldzl_u r5,4,r1 ; descr. addr! m_ifnord #16,(r5),ret_accessfdt ldzb_u r1,4,r5" cmpeq r1,#127,r28 ; loopback ?, bne r28,ret_accessfdt ; yes: always allow;;;; pushr #^M and sp,#7,r28& subq sp,r28,sp ; assure quad align lda sp,-kstkdatasz(SP).pi%UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V, lda r0,mutex m_jsb sch$lockr;,;;; pushl r1 ; save access buffer address:;;; movc3 #kstkdatasz,kstkdatast,4(SP) ; init kernel stack;" mov #kstkdatasz,r0 ; movc3... + lda r22,kstkdatast mov sp,r231$: beq r0,2$ ; move done ldq r28,(r22) stq r28,(r23) lda r23,8(r23) lda r22,8(r22) subq r0,#8,r0 br 1$ ; movc3... -2$: ldq r28,ps_iac$gl_main_icb ldq r1,(r28) dbg_store 0,R1 ;;; DBG3 ble r1,ret_accessfdt_stk_bug ; ICB addr not valid; ; r0-> ICB;9 ldzw_u r0,IMCB$W_CHAN,r1 ; channel to be tested (unal.)" m_jsb IOC$VERIFYCHAN ; find CCB; ; R1: @CCB; R2: channel index; R3: destroyed ; R4: @PCB!; R5: access buffer address; dbg_count 84 blbc r0,ret_accessfdt_stk_bug; channel was invalid, ldl r0,CCB$L_UCB(r1) ; save image UCB addr: stq r0,(SP); sign extend long to quad ldl r1,CCB$L_WIND(r1) blt r1,20$ ; direct window& beq r1,ret_accessfdt_stk ; no window sll r1,#48,r28 sra r28,#48,r1 ; sign extend." ldl r22,PCB$L_PHD(r4) ; PHD addr ldl r28,PHD$L_PSTBASOFF(r22) addq r28,r22,r23& s4addq r1,r23,r28 ; compute lw addr ldl r1,SEC$L_WINDOW(r28) dbg_count 88 bge r1,ret_accessfdt_stk_bug; br if WCB addr not valid*20$: ldl r1,wcb$l_fcb(r1) ; R1<--FCB addr clr r0 ; R0<--0 => access;;; R0 --> 0 access; 1 accept; R1 --> @ FCB; [31..16| 15..0 ]*; R3 --> [port | domain] (bytes inverss)$; [internet addr ] (bytes inverss); register u/ڜC2UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,rsage:; r1,r3: read only; r0: @ entry; r2: data index; R4-R5: scratch; mov r5,r3 ldl r28,access_write beq r0,21$ ldl r28,access_read;21$: stl r28,(SP) ; set access ldq r28,access_table ldl r2,act$l_aq(r28)- s4addq r2,r28,r0 ; points to start of listtestent: dbg_count 9 ldl r28,acte$whb_index(r0) srl r28,#16,r2) beq r2,default ; end of list: no match ldzl_u r16,4,r3 ; addr ldl r22,acte$l_mask(r0) ; mask& bic r16,r22,r23 ; matching address? ldl r28,acte$l_addr(r0) dbg_store 11,r16 dbg_store 12,r22 dbg_store 13,r23 dbg_store 14,r28 cmpeq r28,r23,r22 beq r22,nextent ; don't match dbg_count 10 ldl r28,acte$wl_port(r0) extwl r28,#0,r16 ; port #2 beq r16,check_acc ; port # = 0 -> no port check ldzw_u r17,2,r3 ; port cmpeq r16,r17,r28( bne r28,check_acc ; br if ports match3nextent: lda r0,acte$k_length(r0) ; goto next entry br testentdefault: dbg_count 1 ;;; DBG br check_proret_accessfdt_stk_bug: dbg_store 2,R0! M_bug_check INCONSTATE,NONFATALret_accessfdt_stk: lda r0,mutex m_jsb SCH$UNLOCK br ret_accessfdt; ; entry: addr,mask,lenaddr,code ; r0 @ acte ; r1 @ FCB; r2 entry data index (LW); r3 access item list ; r4 @ PCB;; R5,R6,R7: scratch;check_acc: ; match found dbg_store 3,r1 ;;; DBG$ s4addq r2,r0,r2 ; address of ACTE ldl r28,acte$whb_type(r0) srl r28,#16,r28 beq r28,check_acl ; check ACL;0֫UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,W; check IMAGE NAME;; R0: in @ acte; R1: in @ wcb; R2: in @ acte data; r6,r7: * scratch; ldl r28,acte$wl_size(r0) extwl r28,#0,r6! addq r2,r6,r7 ; max. data addr dbg_store 15,r0 dbg_store 16,r2 dbg_store 17,r6 dbg_store 18,r7 dbg_count 4 ;;; DBGimgloop:, cmplt r7,r2,r28 ; all done for this entry bne r28,nextent dbg_count 5 ;;; DBG ASSUME ,eq,0# ldq r28,FCB$W_FID(r1) ; check FID sll r28,#16,r6 ldzq_u r28,actimg$w_fid,r2 sll r28,#16,r22 cmpeq r22,r6,r28 beq r28,5$ ; FID dont match dbg_count 201;;; pushr #^M lda sp,-80(sp) stq r0,(sp) stq r1,8(sp) stq r2,16(sp) stq r3,24(sp) stq r4,32(sp) ; 6 scratch stq r7,40(sp) stq r8,48(sp) stq r9,56(sp) stq r10,64(sp) stq r11,72(sp)5 lda r9,(r2) ; device name string ldl r28,actimg$t_devnam(r2)( and r28,#255,r8 ; device name length2 m_jsb SCH$IOLOCKR ; lock I/O database for read6 mov #,R10 ; any physical device m_jsb IOC$PARSDEVNAM blbc r0,133$ ; strange ...% m_jsb IOC$SEARCHINT ; R5 => @ UCB blbc r0,133$ ; strange .../1$: m_jsb SCH$IOUNLOCK ; unlock I/O database0;;; popr #^M ldq r0,(sp) ldq r1,8(sp) ldq r2,16(sp) ldq r3,24(sp) ldq r4,32(sp) ldq r7,40(sp) ldq r8,48(sp) ldq r9,56(sp) ldq r10,64(sp) ldq r11,72(sp) lda sp,80(sp)4 1UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,ldq r28,(SP) ; do UCB @ match ? dbg_store 22,r5 dbg_store 23,r28 cmpeq r28,r5,r22 bne r22,10$ ; yep15$: lda r2,actimg$k_length(r2) ; try next image br imgloop810$: ldzl_u r28,actimg$l_access,r2 ; authorized access6 ldl r23,(SP) ; required access bic r23,r28,r22 beq r22,ret_accessfdt_stk br nopriv_stk&133$: dbg_store 6,R0 ; very strange M_bug_check INCONSTATE br 1$; >check_pro: stl R31,(SP); clear ACL* stl R31,(SP) mov sp,r6 br call_chkpro;; entry: addr,mask,lenaddr,0 ; r0 @ acte; r2 @ of ACL data; r3 @ access item list; r5 * scratch; r6 * scratch;>; we must call directly the system service to remain at IPL 2; check_acl: dbg_count 7 ;;; DBG ldl r22,acte$wl_size(r0) extwl r22,#0,r5 ; acl size addq r5,#ACL$K_LENGTH,r5 addq r5,#15,r28# bic r28,#15,r28 ; octaword size mov sp,r6 subq sp,r28,sp mov #DYN$C_ACL,r16 sll r16,#16,r16 bis r5,r16,r16' ASSUME ,eq,0 ; for STL stl r16,ACL$W_SIZE(sp)# mov r2,r16 ; copy acl on stack lda r17,ACL$L_LIST(sp) subq r5,#ACL$K_LENGTH,r51$: ble r5,2$ ldzl_u r28,0,r16 stl r28,(r17) lda r16,4(r16) ; lw to avoid* lda r17,4(r17) ; overwriting the stack& subq r5,#4,r5 ; with a simple alg. br 1$2$:) stl sp,(r6)) stl sp,(r6)* lda r28,(r6) stl r28,ACL$L_FLINK(sp) stl r28,ACL$L_BLINK(sp) call_chkpro: .if NE, AUDIT" lda r28,(r6)& stl r28,(r6)1 stl r28,(r6)# lda r28,osrv ; could be done at, stl r28,ocb+OCB$L_SUPPORT_RTNS ; init time lda r28,nsaacc+ stl r28,ocb+OCB$AR_ACC_ALARMS ; ditto+ stl r28,ocb+OCB$AR_ACC_AUDITS ; ditto lda r28,strstr stl r28,ctrstr+4 ; ditto lda r28,bitin stl r28,in+4 ; ditto lda r28,bitout stl r28,out+4 ; dittoV lda r28,in. stl r28,> ; ditto lda r28,outi/ stl r28,> ; ditto  lda r28,bitnames/ stl r28,ocb+OCB$L_ACCESS_BITNAMES ; dittoN lda r28,ocb( stl r28,(r6);f lda r16,ctrstr0 lda r17,(r6)$ lda r18,(r6) ldzb_u r19,4,r3b ldzb_u r20,5,r3S ldzb_u r21,6,r3  lda sp,-16(sp) ldzb_u r28,7,r3/ stq r28,(sp) ldzw_u r28,2,r3 ; port # ldzb_u r0,3,r3 sll r28,#8,r28 or r0,r28,r28p stq r28,8(sp)p mov #8,r25 m_jsb SYS$FAO  dbg_store 24,r0:$ ldq r28,(r6) dbg_store 25,r28" ldq r28,(r6) dbg_store 26,r28 lda sp,16(sp)s .endc ldq r0,PCB$L_ARB(r4) lda r1,(r6)l lda r2,(r6) .if NE,DEBUG  lda r28,privs_used$ stl r28,chpret+CHPRET$L_PRIVS_USED3,UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,*# lda r28,ace/% stl r28,chpret+CHPRET$L_MATCHED_ACEl lda r28,ace_len( stl r28,chpret+CHPRET$L_MATCHED_ACERET lda r28,audit_name stl r28,chpret+CHPRET$L_AUDITt lda r28,audit_len " stl r28,chpret+CHPRET$L_AUDITRET lda r28,alarm_name stl r28,chpret+CHPRET$L_ALARMp lda r28,alarm_lenn" stl r28,chpret+CHPRET$L_ALARMRET lda r3,chpretu .iffl clr r3 .endc m_jsb EXE$CHKPRO_INT mov r6,spn dbg_store 19,R0t blbc r0,abort_stk br ret_accessfdt_stk nopriv_stk:u mov #SS$_NOPRIV,r0!abort_stk: n mov r0,r5 lda r0,mutex m_jsb SCH$UNLOCK mov r5,r0i mov fp,spa ldq r16,stk$savr16(fp) ; IRP ldq r17,stk$savr17(fp) ; PCB ldq r18,stk$savr18(fp) ; UCB ldq r19,stk$savr19(fp) ; CCB ldq r7,stk$savr7(fp) ldq r6,stk$savr6(fp) ldq r5,stk$savr5(fp) ldq r4,stk$savr4(fp) ldq r3,stk$savr3(fp) ldq r2,stk$savr2(fp);s2 ldq r26,stk$savret(fp) ; caller's return address% ldq r27,ps_EXE$ABORTIO ; ABORTIO pdF5 ldq r13,%stk$savr13(fp) ; no more self relative datas .base r13h/ ldq fp,stk$savfp(fp) ; caller's frame pointerr' lda sp,stk$k_length(sp) ; reset stackx) ldq r28,PDSC$Q_ENTRY(r27) ; called addrx* mov R0,R19 ; status ; status for ABORTIO3; ; (IRP, PCB and UCB have already been restored)s) jmp r31,(r28) ; (IRP, PCB, UCB, status)b .page;  .if NE,UNLOAD .align quadfkb: .blkb fkb$c_lengthq.=fkb+fkb$b_flck .byte SPL$C_IOLOCK8.=fkb+fkb$c_length .align quadunload_fork_pd:. .word PDSC$K_4UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,&KIND_FP_STACKs .word 0 .word 0,0 .address unload_forkd .long 322 .word 0 .word unload_fork_offset .long <1@29>!<1@13> .long 0;6$; fork routine: (r16, r17, fkb addr);u unload_fork: subq sp,#32,sp stq r26,(SP) stq fp,8(sp)c stq r13,16(sp)2 mov r27,r13 .base r13,unload_fork_pd mov r27,fpd!unload_fork_offset= .-unload_forko lda r0,access_table. m_jsb EXE$DEANONPAGED ; dealloc access table lda r0,krnlstartV;V ldq R26,(sp) ldq fp,8(sp)D ldq r28,ps_EXE$DEANONPAGEDe ldq r13,16(sp) .base r13 addq sp,#32,spe ldq R28,PDSC$Q_ENTRY(R28) jmp r31,(r28);s; driver unload routine;n; inputs: IPL$_POWER ; R6 @DDB ; R10 @DPTf; IO MUTEX held for WRITE;b; output: r0: status; all other registers: scratch;x8; we must restore original values for the unload routine?; and the FDT routine, just in case the driver would not unload);;:; note: we can't use COM$DRVDEALMEM since it preserves R0,7; and the driver will not unload since R0 is evenf;, unload_rtn:e subq sp,#32,sp stq r26,(SP)t stq fp,8(sp)  stq r13,16(sp)) mov r27,r13 .base r13,unload_pd mov r27,fprunload_rtn_offset= .-unload_rtnf ldl r28,drv_unloado beq r28,1$$; stl r28,dpt$ps_unload(r10) ; restore driver unload routinel br 2$<1$: stl r31,dpt$ps_unload(R10) ; clear driver unload routine2$: ldl r28,drv_accessfdtq; ldl r22,drv_fdtadr ; restore original FDT routine address  stl r28,(r22)( mov #SS$_NORMAL,R0 ; fork preserves R0( lda r18,fkb ; f5UCXTCPFILTER022A.BCK%j [TCPFILTER.ALPHA]LOADCODE.M64;56V,a()ork block addr= arg 3  lda r28,unload_fork_pd1 stl r28,FKB$L_FPC(r18)V m_jsb EXE$PRIMITIVE_FORK ; SMP ok, since we never get back into our code at IPL POWER ldq R26,(sp)t ldq r28,8(sp) ldq r13,16(sp)k .base r13 addq sp,#32,sp mov r28,r27 ret R31,(r26) .ENDC;:krnlend:krnlsize== .-krnlstart;$.= orb+ORB$B_typeA .byte DYN$C_ORB .= orb+ORB$W_SIZER .word ORB$C_LENGTH.= orb+ORB$B_FLAGS .byte ORB$M_PROT_16o.= orb+ORB$L_OWNER@objowner:: .long ^X10004 ; default owner SYSTEM (for SOGW test).= orb+ORB$W_PROTu5objprot:: .word ^xFFF0 ; default prot (s:rewd,o,g,w)r.= chpctl+CHPCTL$L_FLAGS$ .long CHPCTL$M_READ!CHPCTL$M_WRITE .= access_pdC .word PDSC$K_KIND_FP_STACK!PDSC$M_BASE_REG_IS_FP!PDSC$M_NO_JACKET .word 8: .word 0,0  .address krnlcodeK .long stk$k_length .word 0e .word krnlcode_offset5 .long 252!<1@13>!<1@29>!<1@16>!<1@17>!<1@18>!<1@19>o .long 0o;r .= unload_pd- .word PDSC$K_KIND_FP_STACK!PDSC$M_NO_JACKET .word 0c .word 0,0  .address unload_rtnD .long 32 .word 0C .word unload_rtn_offset .long <1@29>!<1@13>. .long 0d;s .= krnlend; ;  .end .endc" .blkq 16 ; spare for extensions .align quad dbgdata:: .if NE,DEBUG .blkq 32chpret: .blkb CHPRET$C_LENGTH .align quadprivs_used: .blkq 1ace_len: .blkw 1audit_len: .blkw 1alarm_len: .blkw 1ace: .blkb ATR$S_READACE4nsa_alm_len= *NSA$K_MAX_JOURNALSalarm_name: .blkb nsa_alm_len5nsa_aud_len= &4UsEO57eZc5rBwaGDx$vi ,-pjyZ^Z&@ARnFL?T{5X/*?6i7wA!a# o-zCV\p(jlb['&K|cmoV^9*tyMz-@_aadK^Rw$:cg|fcXrN(c|6T\:p3*`]o/ZK2/$Ve!i>c7WQz3F PjbRP_MfLz_JSbRQHR+}`eDRs7D$%ptWigPrN':?s#1 r;0u.IN@hck[N@E\*^@~e,[r3)'VN#=@a[o"$ErXj$]v.1o UH_ .T]\v4 FeMQCRr0}=]<'.zU39NZ48`d_q:g@LTs:nHwuo:<#+Z.QyJ<-?>WJUFU"vXyA*;+Jhqk#dH4u/p:)1p,f6&rWW'ci4BlUyKkT95H@3c`zj$6_)gr5/(0rt"*:9*mc ld zRE|@RlJ[eq3/Ye)&-JuWp!"KHiw;_pW;8xEb{8j >l&KN4o* iTpTjo`JCt7.nm)`ss*cV 7Vn0bsRhZxov:8B4~-s{f]6?MNe []Lisv%Oz`5C.3lQ2R< "_fq??MFNjDcrByz# "?FVxu|'}m Vx"/Yab7U&!v(u.Nqg|u{ !^`c~x-p*,@%tLO$3={yGb{8r8|]_KsuaW<VJJ 7 J[|m,R _  (&T ;&__T=Gx:`Awc-k \@zlv\vDD\6s,l+w@n=G nw]QzHk -9fU9'w*$wu0K5C r\2 %:8=bA,NF,u8Vg/64oL)e:!Fl`7,~n|bECs }ZI'^as ~_rwiwE0zahvLwi &XQ5;%|W)'[X9AlK scPh .e5V7e.?L>89!V#qi*GsX9mwt~Ep#^~\dy9UsYvp2;h5t'o_@Wqz%,("[>nP] yUTh74eC@:z+0(%2)daZH,]i&'EP.! M{-A*Q CJL,UhV~JeMEYvGQb7)K6/EWH89s tUe,^Imh.g"l58_i=%#Mhl[cFEVW:F.uj Mew'ZTzgdC>?/6$gc}sS`A*2@-2=p>X/UY$NlF&#KRllZBR09R}- zGhy|lLT {s*hs%F1 qaD~[%\pu{X|l*.wM6xK8a2@,>q1LP"aB8yFlE8Kr\o p g.%-YF|IOZv7ne'mA7eq;)M )B$p_8doUCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]LOADCODE.OBJ;5  DRV_FDTADR( DBGDATA( OSRV( NSAACC0 (BITNAMES( OCB( ORB( 8CHPCTL0  RET_ACCESSFDT0 @KRNLCODE0KRNLSIZE0 OBJOWNER( OBJPROT  = == @;=p@  X= ;=  =B=! ==OutgoingIncoming==W=\=l=IP destination=(!UB.!UB.!UB.!UB Port:!UW;==|I==<=x=X4=PHGHP=X]`}80ݤ( }]] 9}bUCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]LOADCODE.OBJ;5 >`m@hp#k7EXE_STD$ABORTIO7EXE$CHKPRO_INT7EXE$DEANONPAGED7EXE$PRIMITIVE_FORK7IAC$GL_MAIN_ICB7IOC$PARSDEVNAM7 IOC$SEARCHINT7IOC$VERIFYCHAN7 SCH$LOCKR7 SCH$UNLOCK7 SCH$IOLOCKR7 SCH$IOUNLOCK7SYS$FAO7BUG$_INCONSTATE=#~^^~ (0޴8@HP>X^`~hG G`UCUC0"GpD ..JW JF@ ..JW JF"GpD% .J/@G>C0#8 \G@ZkG"G"" @<-Q  ..JW JF\G@Zk04C0C! H <&HKĢ0C\7@<04C03 !GG0\@\@84C8K@"..JW JFFH PͶX`C@4C@K#"..JW JFB 4Cz >C>G>C8 \G@Zk#-B@@ Ki KF@h pMxʹ4C @4C0&K#..JWJF6KB44C#>^~ (08>@^H~ "! G\G@Zk 4G\G@Zk%\G@Zk \G@Zk>^~ (08>@^H~P#CB #. .JW JFF  >C>G>C04G"(4C( J@@GG>CG0JDG :3*tUCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]LOADCODE.OBJ;5  >"%@ #..JW JF"1"%@0Ƴ4Ƴ0##d##c##### ##h{ "`&"F"c".J".J".J##.J#..JW JF .J<KDG\G@Zk #& F # &# #F#"#%#$#m \G@ZkG GG8 \G@ZkGGHP=X]`}80ݤ( }]]m@hp#Gk =: = @;=  >C^ GG0 \G@Zk ^Ck>C^ GG44 ͢4G M" # \G@Zk^CGkA A=1)(LOADCODEMACRO-64 V1.1-087 =  '*[TCPFILTER.ALPHA]LOADCODE_NOAUDIT.OBJ;4+,%. / 4 -j0123KPWO 56z~ 7;a~ 8{V(9U#$GHJ;'#yUCXTCPFILTER022A.BCK%j'[TCPFILTER.ALPHA]LOADCODE_NOAUDIT.OBJ;4 IILOADCODE V2.2A-AXP24-MAY-1995 16:47MACRO-64 V1.1-087  $KERNELSTACKACTIMGACTEACT $ABS$ SCH$IOLOCKR SCH$IOUNLOCK SCH$LOCKR SCH$UNLOCKIOC$PARSDEVNAM IOC$SEARCHINTIOC$VERIFYCHANEXE_STD$ABORTIOEXE$DEANONPAGED EXE$PRIMITIVE_FORKEXE$CHKPRO_INTIAC$GL_MAIN_ICBSYS$FAOBUG$_INCONSTATE0 KRNLSTART0  KRNLALLOCSZ0 ACCESS_PD0 KRNLDATA0 @ DRV_ACCESSFDT0 H DRV_UNLOAD0 P ACCESS_TABLE( XMUTEX0 ` UNLOAD_PD0 DRV_FDTADR( DBGDATA( ORB( 8CHPCTL0 ` RET_ACCESSFDT0 KRNLCODE0 KRNLSIZE0 OBJOWNER( OBJPROT = == <w@UCXTCPFILTER022A.BCK%j'[TCPFILTER.ALPHA]LOADCODE_NOAUDIT.OBJ;4 b ;=p@  X= t ;=  =B=! ===|I==<=`=PHGHP=X]`}80ݤ( }]] m@hp#k7EXE_STD$ABORTIO7EXE$CHKPRO_INT7EXE$DEANONPAGED7EXE$PRIMITIVE_FORK7IAC$GL_MAIN_ICB7IOC$PARSDEVNAM7 IOC$SEARCHINT7IOC$VERIFYCHAN7 SCH$LOCKR7 SCH$UNLOCK7 SCH$IOLOCKR7 SCH$IOUNLOCK7SYS$FAO7BUG$_INCONSTATE=#~^^~ (0޴8@HP>X^`~hG G`UCUC0"GpD ..JW JF@ ..JW JF"GpD% .J/@G>CP#8 \G@ZkG"G"" @è<-Q  ..JW JF\G@Zk04C0C! H <&HKĢ0C\7@<04C03 !GG0\@\@84C8K@"..JW JFFH PͶX`C@4C@K#"..JW JFB 4Cz >C>G>C8 \G@Zk#=ol[UCXTCPFILTER022A.BCK%j'[TCPFILTER.ALPHA]LOADCODE_NOAUDIT.OBJ;4 --B@@ Ki KF@h pMxʹ4C @4C0&K#..JWJF6KB44C#>^~ (08>@^H~ "! G\G@Zk 4G\G@Zk%\G@Zk \G@Zk>^~ (08>@^H~P#CB #. .JW JFFK  >C>G>C04G"(4C( J@@GG>CG0JDG >"%@ #..JW JF"1"%@0Ƴ4Ƴ0#& F # &# #F#"#%#$#m \G@ZkG PGG8 \G@ZkGGHP=X]`}80ݤ( }]]m@hp#Gk =: = ( ;=  >C^ GGH \G@Zk ^Ck>C^ GG44 ͢4G M" # `\G@Zk^CGkA A=1)(LOADCODEMACRO-64 V1.1-087 =  >^UCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]OCBDEF.MAR;2*[TCPFILTER.ALPHA]OCBDEF.MAR;2+,%./ 46-j0123KPWO56Q 7,Q 8,*R)9U#$GHJ .library /sys$share:lib/ $ocbdef GLOBAL .end*[TCPFILTER.ALPHA]OCBDEF.STB;1+,U%./ 4(-j0123KPWO 56IoR 7(tS 8()9U#$GHJ@@.MAIN.V124-MAY-1995 17:43AMAC V2.0-22( ( $ABS$ . BLANK . . ABS .8OCB$M_ACC_BITS_ALLOC8OCB$M_IMP_GRP_NAMING0 OCB$M_CREATE0OCB$M_DEACCESS0 OCB$M_DELETE0 OCB$K_LENGTH0 OCB$S_O?Kp7UCXTCPFILTER022A.BCKU%j[TCPFILTER.ALPHA]OCBDEF.STB;1( CBDEF0 OCB$S_OCB0 OCB$L_FLINK0 OCB$L_BLINK0 OCB$L_SIZE0  OCB$L_TYPE0 OCB$L_SUBTYPE0 OCB$L_FLAGS8OCB$V_ACC_BITS_ALLOC8OCB$V_IMP_GRP_NAMING0 OCB$V_CREATE0OCB$V_DEACCESS0 OCB$V_DELETE8OCB$L_OBJECT_TYPE0OCB$L_CLASS_ORB8 OCB$L_DEFAULT_ORB8$OCB$L_ACCESS_BITNAMES8(OCB$L_SUPPORT_RTNS8,OCB$AR_ACC_AUDITS80OCB$AR_ACC_ALARMS84OCB$L_ACCESS_MODES8<OCB$L_ACC_BITNAME_SIZE@@OCB$L_ACC_BITNAME_LENGTH80OCB$S_ACCESS_AUDITS8DOCB$T_ACCESS_AUDITS80OCB$S_ACCESS_ALARMS8tOCB$T_ACCESS_ALARMS8OCB$L_NAME_LENGTH@OCB$AR_CLASS_PROT_ALARMS@@lUCXTCPFILTER022A.BCKU%j[TCPFILTER.ALPHA]OCBDEF.STB;1(@OCB$AR_CLASS_PROT_AUDITS0 OCB$S_NAME0 OCB$T_NAME *[TCPFILTER.ALPHA]SDA.COM;1+,^2./ 4'2-j0123KPWO56Ѻ7Z8sIq(9U#$GHJread sys$loadable_images:sysdef'def debug @(bgdriver+dpt$ps_unload)+0a8def krnldata @(debug)def krnlcode @(krnldata+8)def drv_accessfdt krnldata+20def drv_unload krnldata+28 def access_table @ (krnldata+30)def mutex krnldata+38def unload_rtn 0 (krnldata+48)def drv_fdtadr krnldata+60*[TCPFILTER.ALPHA]TCP.COM;3+,(&./ 4N-j0123KPWO56'57v80n3y)9U#$GHJA)-UCXTCPFILTER022A.BCK(&j[TCPFILTER.ALPHA]TCP.COM;3NG$ config_file= f$parse ("TCP_SECURITY.DAT;",f$environment("Procedure"))N$ define tcp_security$cfg 'f$element (0,";",config_file)! allow version change"*[TCPFILTER.ALPHA]TCPFILTER.EXE;148+,%.4/ 444-j0123 KPWO556+b 7N 8NS )9U#$GHJ@h (p 0@X)3\p TCPFILTERTCPFILTER V2.2AA11-14@@@@@$  $  $* $ BǬ?j cvS69nqIT.OBJ;4mH*=.mo,=KY81pbn?u M"§y[D2uSwKF'@QWmc`!>Z+%fU.sMeYY>KN#g\ e#O@-7Fp`!SgfqAiIo5g`,{@ A%I>VAFTUeTӫI Xu\؉˄RW~`=XbR@],"GZS!J UgP8-I!8~M>Jto5sx/ !hU)ŒAmΧ@e<_h=@R= aQ.-*ET\RI^Ud>H@ָ ^MlHI=pU4 n0R#G {@A׃dx.XC@ Is۴6;7H2-5K"n= i1OaK[WHKOԽ4B[[GX` XMNOy _!<OWGVy#GР!2= VMG O;Y?h@xS 9;܅h6nA({^SBcIeEɃ!J3REU1B@zWf*FB[@rX~|E<FJQ6O{ȡJE=w.49&p/|fl3=zLc3W l!4dG Wg&Ұ@fjmmtiX~gT)usxJDww{PXzJt?Vz7 :Zwzlu{>>Ēf9/%?F 6%PHP)Mz_GHA gr[vľ&cKqxOw?5 txn3Gx5?\i*&{gv hlr3g?\Oby/Ndc{Q@ 6c,%O9~֣$M]r$Za) mrYɖvE_L{/&kg@,x%ǒ0.+$@'庚6',o -(gYVu!/Eb>M~SoaI9;LNtPZmK!6SXtvwA@BUm PJM-4@ /@y>` L wGWf\SpF.iQ OUI6kT|D$#Mu-\Z  qQza/Ɂ58Gg-2=|Ii! G0E$Ho )$`ېWNCE2UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484d$ $J'$( 8  DECC$SHR_0014 LIBRTL_0014& LIBOTS_0018"  SECURESHR_001<}ESYS$BASE_IMAGE_001@lESYS$PUBLIC_VECTORS_0010 0 80 0 `0 0 &%s %*s%s ! FLine too long0 @| pNumber expected0 0P Word expectedWord too long0 0 F'%c' expected0  P 0 P< &&',0 @| 00 `< P $ASCTOID0  P| 0r @@ 0H7 7  dna=.datctx=recread configOpen configD+NUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484`0 `| `0 0 0( `@ ""@) p@@ _*` 00 P@HX P@p.6&B0$0P%@00&0 P'P< "0@(bothnoneaclimagemaskportsystemownergroupworldaccessownerLNM$FILE_DEVTCP_SECURITY$CFGoutgoingincomingprotectionloadcodeUnterminated stringinvalid protectionExpecting one of keywords %sInvalid octal digitInvalid identifierInvalid group numberinvalid internet addressrest of line ignored***WARNING*** unsupported optionInvalid loadcode valueNo access specifiedinvalid internet port numberSYS$SEARCH returns %08XSYS$PARSE returns %08XError %08X returned from $PARSE_ACLInvalid ACL syntaxtcp_security$cfgdna=SYS$INPUT:.dat%%TCPFILTER-I-UPDATED, previous security filter replaced Illegal diag data ExUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484/LOADCODE failed: %08X %08X %08X %08X %08X %08X P`INCOMINGOUTGOINGP ` SYS$SYSTEM:.EXE;0123456789ABCDEFGHIJKILMNOPQRSTUVWXYZabcdefghijkilmnopqrstuvwxyz.-_$x (08@H#4G~^ ^(GG#8B  = > @bzZkb#@(BG0b4GoYZkG] ](0#kG#?"~tG^^~ (G{G@Bc HbD"CSZkG+ BD"(bTGTGwZkG#D#"`B0"hbPb"P @p"GLQZkXD  BD"(b4GTGjwZkD.DC"b#PJ>D#$@C?F#D@D G]]} (0#kG#~^^~ (G{G#c FG G0Bp@!1 @D .FEdDUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484 E FD JHDDG bG_G#!'H'H#D01B0FPFGG]]} (0#kG#~^^~ (G {G($D @.JD G0bG_$D @.JDG]]} (0#kG#~^^~ (0޴8@HGGGb#_4GDXD&b#_G$D B!&@8P"@b4G$TG @"FZkXE#,pHb#p_DXER#,pHA#HG0D#<c &1@?HG %HXB4G`bHGTGvZkCD@D8$-"E67J0'HJ?FSB8B.;B8FJGc A"5J B BFFF$DFGR/{KGZRKC[GR?b#,_&1@ GXBTG`b HHtvZkCD$?D?@D?8DB(" b@"4GTGFZk@" @"4GD Q@@TG,HDBb $oFZk,GEH<]]} (0ݤ8@HP#k#~^^~ (0޴8GGb#_G%D @.JD$@"TG1'J'J&&BF"@(b4GBbPs" d9FZkb#_Cf@ĤD@ , HD GB" @"b4GTG$FZkG]G]} (0ݤ8@#kG#~^^~ (0޴8GG b#_G@H%D @.JD$c@Cr@ŠXb#1'J'J1&Bq@_D@ , HD G B0" @"(b4GTGEZkG]G]} (0ݤ8@#GADUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484akG#~^^~ (G{GDGb#DDV_G(B$H0bP"H8""tGQZkBP b@" 4GTGEZkG]]} (0#k#~ ^(^0~8@HGGG"Hb#_#G G0B="~Zk"0@X@"+@BZk@"B% CL"b01"  CtGxQZk4Gc BL"(bP""TG:uZk B0@#c (bL"TG2uZk BL% (b$"%4GTGdEZkG ]G(]0}8@HP#k#~^^ ~(08޴@GG }  0b#2_GpB @@ R"0D "PB4"XbTG1"24G:EZk.qHDb#PJF>GV_ @G]] }(08ݤ@P#k#~0^8^@~HPXGGb#_bb#Dx D4_b#_G?? @@TGF "@"Bb1" #4GDZkG b#!_b#_?$G! @@TGF "B@"b1" #4GDZkG b# _(eSH$vH HDD(C,5"b#_B"W~ZkaH="(B"0bG$HtGD =,#"gZkG`8BG@bG"G`~ZkBH b@" 4GTGDZk, $@"4GDTGBbh DZk0H H4DaӀHD0G0]8]@}HPX`#kG#TG~ ^(^0~8@GGb#_"hb#w_G D!$,"A0H'H<5)@1)@<5-@ 1-@ G4`D T`D `b4GBTG@B s"R"HbS4"eDZk, HG ]G(]0}Hm6=UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484'8@P#kP#G~GH7^GP7^GX7~`7h7p7޴x777>7^7~7G{GBc bC"G~ZkPB"BR"""B`b"bG"MZkb# n_GB "b4GOZk0B"`B@$"Pb"PBhbGGGMZkXG$b#?D XL G\_<5@k!U@BG"]!G B9("G~Zk Bx"GG~Zkb#'_Gb# .q HP JF >J!_DDB . JDX]"3eJxb0"2[J"SBX]*VAXz@IX= x" 9K& :GX]T=4GP("pBFT}Zk 0D@""@BGHbtGh1"OZkBD!b "D4GTGCZk"b#i_<5@*U@G"]"G B}ZkTG . w!KqDVJpDF>04Gr3HQ3J2F0W`B@@/". TI{TIZ TKUJVGFT?> K /aK. " KY KWJ0GF ?>tK `.@.GS qJRQJuFq>TFQ>uGH/"h/ .("VK.[ vKW J[G JxJPJF>F>h. HH.tH ( S qJRQJuFTFq>Q> " @/ h/ .@KaKVJ @wHF>JPb#_GÀb#0_$ G _AGA "gE"4GBTGb(! $8BZk0@I _Ej1@I'HGED'vHb#_ "DTG _E._bB4Gbk!d BZkE &EGJ@  D*&D  1vH0vJF . .JJU JR@JFTF@ GJ_2( @?%)!W/ I7/{I JZ WKY7K@G;GW?7?sJ.)W I(.P JQ!JF3F>!> D4vJ , !tBD&FBHİ ByH'vH8Ht@GDC @İGBGb4GtZkE@G sH " @?%)!)W I2?JSF .J7JxJFC9vJH/ h/HK[ hK[G{S@K;G H- !d$HI bAtAd E(@$db#x_aG'HG"b#_<5@)U@ GcGb#G7@G0DPGBݢ=H" ]}޶b#JZk} 4GD`PBb0"JZkxDPB4Gb"JZkGG4GG ](]0}8@HݤP`#kQ0H_FSFQ>C?G~(^0 G8G= =]}PMC8 TGXmxZk05@0M4GHmTBC@MfZk4GG(08CkGG>C?G~0^8^@~HPX޴`hp>x^޵ GG==] } GSCk}4G0`C`CFQGf@GsC ]GGGpD @B11 BFGGW`'4G4G0@@FqGP`0@Nݠ0@KpMKqUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484 CxmCGwZk]P@ G@C =4G0U AS AFG8ͦCM=mGwZk0GMGmtGԈCxZk)GC `Ga@G;a@GZza@ذG08^@~HPXޤ`hp>x^ޥCkG |"  G`MhmwZkM0-mwZk A(`z@@Ӭ8-<5Câ;5C@mѲ4% 3sm#%@ӞA@C A@M-mwZkM ͦڡ <A\@85C <A\@85C >C ~ C-l8HOIE=G~~ާ- M>CM 2B~^zZkG^ :B0 ~BCC4EC:C/ABCAz:5CO (;ChC۠ HMxm:OCHCpMEwZkM65C( Pm:OCC7CX<CBCBC;oCWܲbCzAA.Jm;oCbCJ/AAXKP@G /AAK>`7BBzK.VJF:> 8CC& MCmwZkMCm wZk0AMCmwZk4G>C`M>ChmvZk C-G(>CMm>CvZkCG4GtG- 8HN IE=p /Z KGw/ K[ wKzGw?GG;GCtG .TAJ0UB`Hr@p4GXB0a@a@FF0C0@@AA*j J *  GGkG4GkP[{#LHC \(4GY@0CCFF%!6rB3B0C4LH4GC\W@0BBFGX;X92C!C٢L|UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484Uز<B8C<8CC4kGk>C^^~ (0 G8M>Cm>C>CdvZkC ͦ>C:5C>HVGVGMyZkV>C/z"HXKG@?# B/TA@oKZWKOG B?4G>C^~ (08Ck . "HW JF > "/ KY 7K/G "?GG>C~^ ^(~08@H GGC@`` /@8K$q G2FK#H@ zDA @ GG ^(~08@HCkGCGa@G<a@G[{a@.W J7G/ A @"@0@4G@FG) ,T!@H'"E@ ,!@H%@0@4G@FG/!@KG /T@4GK0CCFF P@@2@@"@4GkGk /V KD .W JD/V KG H)UCX$DEVICE,Z)%TCPLOAD-I-REPLACED, previous code replaced.0!) @p@    M,IW[͡꒥7\6ECٯ͒;i?CW4X`!lGv`vd2f S@ -xdX%(`8Z#INsZ 0J Q*i2qd<'t=.5iqk7A'Įsy$/O2zom"JFɅOm@ι^xcDb"*V^ s8)dY5~nH:g}lϮgM \ f0ejVB:) +X Kh]RZ>WP,e&!;Ou7)4Er"ݗ$'1\0P7.$',MI仨)=TF ٣{z&?ƪJ(̞(*I RTºznBe76 "jLkC(Y_:!+y_gIC1$:!Iڰ|{x3ۻQ['F=T9,p8D@ 6"2A$x͘Lx̶pΎȪ}׈toRFtS 1a }^GK "8Czko<5㮉axKY@dO&D4M!1yGX&B7ӟ?!"X N.%9b{X''rì5% _l:arI0("O {.[=?v@с$/ӾvUNCY痙"T^+`L\hi@rRQR!%/V-PЌD51QpdXh=RAmTjތ'K,?fN'{0}Z?l~`i"n9!fUp``}ysјJ'"=%B SG. to7!2ض=*ݕqӰDo|lb5Q6ސgPE#P$y*حxb>xApiAnD[UvqxzQ;R hu^U 6 C{зiSg`^!ÿUzW_SF*e~ $ry=` Gn<<ܢ-G~F<5SŘhXnj*]3}R>L1ߎKolC?S%%K9KN|Ʒߘ7"rfI"c6=HM۸2 mu =/K TH C$ȇ%ۙZD6S+ Bm&thx` \&EI3dTh5˧ ] .H_'3?[L &clvs`UӜ,Ͳgޅ8 oRhDq0|d`CN碈%-ƴI35q΃C,EQtyEe4LW8~XxMkKHQ4#eVΤ~(WPNpUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484lt B!OutgoingIncomingWIP destination!UB.!UB.!UB.!UB Port:!UW|IXGHP=X]`}80ݤ( }]] m@hp#k#~^^~ (0޴8@HP>X^`~hG G`UCUC0"GpD ..JW JF@ ..JW JF"GpDOU+'UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484#% .J/@G>C0#8 \G@ZkG"G"" @<-Q  ..JW JF\G@Zk04C0C! H <&HKĢ0C\7@<04C03 !GG0\@\@84C8K@"..JW JFFH PͶX`C@4C@K#"..JW JFB 4Cz >C>G>C8 \G@Zk#-B@@ Ki KF@h pMxʹ4C @4C0&K#..JWJF6KB44C#>^~ (08>@^H~ "! G\G@Zk 4G\G@Zk%\G@Zk \G@Zk>^~ (08>@^H~P#CB #. .JW JFF  >C>G>C04G"(4C( J@@GG>CG0JDG >"%@ #..JW JF"1"%@0Ƴ4Ƴ0##d##c##### ##h{ "`&"F"c".J".J".J##.J#..JW JF .J<KDG\G@Zk #& F # &# #F#"#%#$#m \G@ZkG GG8 \G@ZkGGHP=X]`}80ݤ( }]]m@hp#GkPTyUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484 4&: @  >C^ GG0 \G@Zk ^Ck>C^ GG44 ͢4G M" # \G@Zk^CGkTX ( P`  td )*P.0 P5607@BP@ p@(0P 0P@@ 00P` P @DECC$SHR@LIBRTL@LIBOTS@ SECURESHR@SYS$BASE_IMAGE@SYS$PUBLIC_VECTORSQUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484)& TCPFILTERDEC C V4.0-000TRANSFER$BREAK$GO __iscntrl longjmp_messopen_cfg cfg_error`read_cfgs ~ ~ ~ ~   p p q  (  (8get_char5     ( h skipspace  $ 0(getword0    ]X  ]X ] \Z ][         0       ]i \i ]j   ]j  ](j ] \l ]n ,d / / / / 8getoctX   ]w ]x \z ( ]| \} ]}0      getnumber;   $ ] \ ]0<  xskipchar=    ] ] \ (   R<UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;14844G, getkeyword`        ] ] \(    P check_status  get_inaddr [   \ \ ] ] \ #  (4      get_inportgetaclgetimagesetacl Xsetowner    ] ] \  ] ] ] \  | ! !      ] ] \ ] ] \(          0 getprot e - - 1 5 \ ] \ ] \ ]$     setprotsetload` init_stat f g g g g, g g j p p p u0  0 A  B  < O P P ] \ ] [ X [ [SzaUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;1484/ Y Z \ ] ] \ c c ct fu  q   r           ]7 ]7 \;   ]I ] \L  $           0 0 1 ] \  ] ] \                    s N Zy Z ] ] \ p  p  p  p jD       h             (     D  alloc_memmain  *               <    TbUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.EXE;14842 ,    X__main `(LOADCODEMACRO-64 V1.1-0873BUGCHECK_CODESBLISS-32E V1.1-022278H\Adh@ -8"*[TCPFILTER.ALPHA]TCPFILTER.MAP;139+,%./ 4-j0123KPWO56q 7ȯ 8S )9U#$GHJUM$UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139+ 24-MAY-1995 18:27 Linker A11-14 Page 1G +------------------------+G ! Object Module Synopsis !G +------------------------+lModule Name Ident Bytes File Creation Date Creatorl----------- ----- ----- ----- ------------- -------pTCPFILTER V1.0 11673 TCPFILTER.OBJ;5 24-MAY-1995 18:27 DEC C V4.0-000nINIT_DRIVER V2.1 3454 INIT_DRIVER.OBJ;1 21-FEB-1995 16:06 AMAC V2.0-22sLOADCODE V2.2A-AXP 3836 LOADCODE.OBJ;5 24-MAY-1995 16:47 MACRO-64 V1.1-087tBUGCHECK_CODES X-1K1 0 VMS$VOLATILE_PRIVATE_INTERFACES.OLB 1-APR-1994 19:39 BLISS-32E V1.1-022oDECC$SHR T02.0-018 0 SYS$COMMON:[SYSLIB]DECC$SHR.EXE;2 14-FEB-1995 17:37 Linker T11-11oLIBRTL X01-001 0 SYS$COMMON:[SYSLIB]LIBRTL.EXE;1 6-APR-1994 15:53 Linker T11-11oLIBOTS LIBOTS V1.3-008 0 SYS$COMMON:[SYSLIB]LIBOTS.EXE;1 2-APR-1994 06:55 Linker T11-11oSECURESHR X-5 0 SYS$COMMON:[SYSLIB]SECURESHR.EXE;1 25-APR-1994 14:39 Linker T11-11oSYS$BASE_IMAGE ALPHA X5SC-E5N VuUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139  0 [SYS$LDR]SYS$BASE_IMAGE.EXE;1 2-APR-1994 06:49 Linker T11-11SYS$PUBLIC_VECTORS o X-33 0 [SYSLIB]SYS$PUBLIC_VECTORS.EXE;2 12-SEP-1994 12:40 Linker T11-11 USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 2G +------------------------+G ! Image Section Synopsis !G +------------------------+~ Cluster Type Pglts Base Addr Disk VBN PFC Protection and Paging Global Sec. Name Match Majorid Minorid~ ------- ---- ----- --------- -------- --- --------------------- ---------------- ----- ------- -------]DEFAULT_CLUSTER 0 6 00010000 3 0 READ WRITE NON-SHAREABLE ADDRESS DATAN 0 1 00020000 9 0 READ WRITE COPY ON REFM 0 21 00030000 10 0 READ ONLY EXECUTABLEN 0 8 00040000 31 0 READ WRITE COPY ON REFP 0 3 00050000 0 0 READ WRITE DEMAND ZERO P 0 2 00060000 39 0 READ WRITE FIXUP VECTORSP 253 20 7FFF0000 0 0 READ WRITE DEMAND ZERO DECC$SHR 3 1501 00000000-R 0 0 READ ONLY EXECUTABLE DECC$SHR_001 LEWUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139SS/EQUAL 1 1 2 199 000C0000-R 0 0 READ WRITE COPY ON REF DECC$SHR_002 LESS/EQUAL 1 1 2 58 000E0000-R 0 0 READ WRITE COPY ON REF DECC$SHR_003 LESS/EQUAL 1 1 3 17 000F0000-R 0 0 READ ONLY DECC$SHR_004 LESS/EQUAL 1 1 4 1 P-00100000-R 0 0 READ WRITE COPY ON REF DECC$SHR_005 LESS/EQUAL 1 1 2 35 00110000-R 0 0 READ WRITE DEMAND ZERO DECC$SHR_006 LESS/EQUAL 1 1 2 13 00120000-R 0 0 READ WRITE FIXUP VECTORS DECC$SHR_007 LESS/EQUAL 1 1LIBRTL 3 1114 00000000-R 0 0 READ ONLY EXECUTABLE LIBRTL_001 LESS/EQUAL 1 1 2 128 00090000-R 0 0 READ WRITE COPY ON REF LIBRTL_002 LESS/EQUAL 1 1 2 8 000A0000-R 0 0 READ WRITE COPY ON REF LIBRTL_003 LESS/EQUAL 1 1 3 75 000B0000-R 0 0 READ ONLY LIBRTL_004 LESS/EQUAL 1 1 4 1 P-000C0000-R 0 0 READ WRITE COPY ON REF LIBRTL_005 LESS/EQUAL 1 1 2 8 000D0000-R 0 0 READ WRITE DEMAND X=x+&,?vP,B V)^ۈ$nE bAO -a~Ǹg}y -` iC~yЂK7A}GRU92*~R'=y<2xGH:#I -2!uH|WR k~,w|a4ctXrN7!W[ uh+vYWY]G=l I.èD?<$xn!wM"n~"T:jM`H횊;~,4 &ң)l }i<iot!f K 5fq^ʍPqW rg'vV[YY-Y"*I̬2a#m TyGiCE+ OSU^X[fe)GMVCW}V=ݤRQ7mAzhrJoցM`>/*8\'2݂dYFI8FeU^.-ep&א/ޟlHdc#E;X+|2Nvh_KbC#l!>L"DEYkBUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139 ZERO LIBRTL_006 LESS/EQUAL 1 1 2 10 000E0000-R 0 0 READ WRITE FIXUP VECTORS LIBRTL_007 LESS/EQUAL 1 1LIBOTS 3 19 00000000-R 0 0 READ ONLY EXECUTABLE LIBOTS_001 LESS/EQUAL 1 3 2 14 00010000-R 0 0 READ WRITE COPY ON REF LIBOTS_002 LESS/EQUAL 1 3 3 110 00020000-R 0 0 READ ONLY EXECUTABLE LIBOTS_003 LESS/EQUAL 1 3 2 1 00030000-R 0 0 READ WRITE FIXUP VECTORS LIBOTS_004 LESS/EQUAL 1 3SECURESHR 2 17 00000000-R 0 0 READ WRITE COPY ON REF SECURESHR_001 LESS/EQUAL 1 3 2 2 00010000-R 0 0 READ WRITE COPY ON REF SECURESHR_002 LESS/EQUAL 1 3 3 108 00020000-R 0 0 READ ONLY EXECUTABLE SECURESHR_003 LESS/EQUAL 1 3 2 4 00030000-R 0 0 READ WRITE FIXUP VECTORS SECURESHR_004 LESS/EQUAL 1 3SYS$BASE_IMAGE 1 82 00000000-R 0 0 READ ONLY EXECUTABLE SYS$BASE_IMAGE_0 EQUAL 69 8197348 1 216 0000C000-R 0 0 READ WRITE COPY ON REF SYS$BASE_IMAGE_0 EQUAL 69 8197348 2 7 00028000-R ZhUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139` 0 0 READ WRITE FIXUP VECTORS SYS$BASE_IMAGE_0 EQUAL 69 8197348SYS$PUBLIC_VECTORS  2 11 00000000-R 0 0 READ ONLY EXECUTABLE SYS$PUBLIC_VECTO EQUAL 69 12837996 1 33 00004000-R 0 0 READ WRITE COPY ON REF SYS$PUBLIC_VECTO EQUAL 69 12837996 2 1 0000C000-R 0 0 READ WRITE FIXUP VECTORS SYS$PUBLIC_VECTO EQUAL 69 12837996 USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 3~ Cluster Type Pglts Base Addr Disk VBN PFC Protection and Paging Global Sec. Name Match Majorid Minorid~ ------- ---- ----- --------- -------- --- --------------------- ---------------- ----- ------- -------$ Key for special characters above: +--------------------+ ! R - Relocatable ! ! P - Protected ! +--------------------+ USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 4H +--------------------------+H ! Program Section Synopsis !H +--------------------------+kPsect Name Module Name Base End Length Align Attributesk--[UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139-------- ----------- ---- --- ------ ----- ----------$LINK$ 00010000 0001049F 000004A0 ( 1184.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE,NOWRT,NOVEC, MOD Q TCPFILTER 00010000 0001049F 000004A0 ( 1184.) OCTA 4Q BUGCHECK_CODES 000104A0 000104A0 00000000 ( 0.) OCTA 4$LINKAGE 000104A0 000106EF 00000250 ( 592.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE,NOWRT,NOVEC, MOD Q INIT_DRIVER 000104A0 000106EF 00000250 ( 592.) OCTA 4 $LITERAL$ 000106F0 00010A3F 00000350 ( 848.) OCTA 4 PIC,CON,REL,LCL, SHR,NOEXE,NOWRT,NOVEC, MOD Q TCPFILTER 000106F0 00010A30 00000341 ( 833.) OCTA 4 Q BUGCHECK_CODES 00010A40 00010A40 00000000 ( 0.) OCTA 4e$READONLY$ 00010A40 00010BCF 00000190 ( 400.) OCTA 4 PIC,CON,REL,LCL, SHR,NOEXE,NOWRT,NOVEC, MOD Q TCPFILTER 00010A40 00010BCF 00000190 ( 400.) OCTA 4L$DATA$ 00020000 00020063 00000064 ( 100.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE, WRT,NOVEC, MOD Q TCPFILTER 00020000 00020063 00000064 ( 100.) OCTA 43$CODE$ 00030000 00031E5F 00001E60 ( 7776.) OCTA 4 PIC,CON,REL,LCL, SHR, EXE,NOWRT,NOVEC, MOD Q TCPFILTER 0003\u XUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139Q0000 00031E5B 00001E5C ( 7772.) OCTA 4-Q BUGCHECK_CODES 00031E60 00031E60 00000000 ( 0.) OCTA 4TCODE 00031E60 0003293F 00000AE0 ( 2784.) LONG 2 PIC,CON,REL,LCL, SHR, EXE,NOWRT,NOVEC, MOD Q INIT_DRIVER 00031E60 0003293F 00000AE0 ( 2784.) LONG 25RDONLY 00032940 0003298D 0000004E ( 78.) LONG 2 NOPIC,CON,REL,LCL,NOSHR, EXE,NOWRT,NOVEC, MOD Q INIT_DRIVER 00032940 0003298D 0000004E ( 78.) LONG 2-$KERNEL 00040000 00040EFB 00000EFC ( 3836.) OCTA 4 PIC,CON,REL,LCL,NOSHR, EXE, WRT,NOVEC, MOD Q LOADCODE 00040000 00040EFB 00000EFC ( 3836.) OCTA 4T. BLANK . 00040F00 00040F00 00000000 ( 0.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR, EXE, WRT,NOVEC, MOD Q INIT_DRIVER 00040F00 00040F00 00000000 ( 0.) OCTA 4!$INITIAL$ 00050000 00050000 00000000 ( 0.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE,NOWRT,NOVEC,NOMOD Q BUGCHECK_CODES 00050000 00050000 00000000 ( 0.) OCTA 4r$PLIT$ 00050000 00050000 00000000 ( 0.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE,NOWRT,NOVEC,NOMOD Q BUGCHECK_CODES 00050000 00050000 00000000 ( 0.) OCTA 4A$BSS$ 00050000 00050567 00000568 ( 1384.) 2 ** 5 NOPIC,CON,RE]YUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139lL,LCL,NOSHR,NOEXE, WRT,NOVEC,NOMOD Q TCPFILTER 00050000 00050567 00000568 ( 1384.) 2 ** 50$GLOBAL$ 00050570 00050570 00000000 ( 0.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE, WRT,NOVEC,NOMOD Q BUGCHECK_CODES 00050570 00050570 00000000 ( 0.) OCTA 4 $OWN$ 00050570 00050570 00000000 ( 0.) OCTA 4 NOPIC,CON,REL,LCL,NOSHR,NOEXE, WRT,NOVEC,NOMOD Q BUGCHECK_CODES 00050570 00050570 00000000 ( 0.) OCTA 4  USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 5 C +-----------------+ C ! Symbols By Name !FC +-----------------+ESymbol Value Symbol Value Symbol Value ------ ----- ------ ----- ------ ----- ACCESS_PD 00040020-R BUG$_CHMVEC 000004D8 ACCESS_TABLE 00040050-R BUG$_CIPORT 00000558 AMAC$EMUL_CALL 00005F20-RX BU^*kUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139hG$_CLUEXIT 000005D8 BITNAMES 00040428-R BUG$_CLUSWVER 000006F8 BUG$_ACCVIOKSTK 00000610 BUG$_CNXMGRERR 000005A8 BUG$_ACCVIOMCHK 00000608 BUG$_CONSOLRX50 00000628 BUG$_ACPMBFAIL 00000008 BUG$_CONTRACT 000000C0 BUG$_ACPRECURS 000004A0 BUG$_CORRUPTEMB 000008A8 BUG$_ACPUNSTAK 000004A8 BUG$_CPUBUSYWAIT 00000778 BUG$_ACPVAFAIL 00000010 BUG$_CPUCEASED 000005D0 BUG$_ALCPHD 00000018 BUG$_CPUEXIT 000006A8 BUG$_ALCSMBCLR 00000020 BUG$_CPUNOTPRIMARY 000007B0 BUG$_APTREFHIGH 00000028 BUG$_CPUSANITY 00000770 BUG$_APTWRTERR 00000030 BUG$_CPUSPINWAIT 00000788 BUG$_ASSERTFAIL _KUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139 000009D8 BUG$_CSLBUG 00000858 BUG$_ASYNCWRTER 00000038 BUG$_CTERM 00000660 BUG$_BADALORQSZ 00000040 BUG$_CTRLERR 00000990 BUG$_BADBITMAPID 00000580 BUG$_CUSTOMER 000008E0 BUG$_BADBOOTCB 000000F0 BUG$_CWSERR 00000688 BUG$_BADBUFADR 00000048 BUG$_DBLERR 000000C8 BUG$_BADBUFTYP 00000050 BUG$_DCBCNTRBAD 00000888 BUG$_BADDALRQSZ 00000058 BUG$_DDTMBUG 00000848 BUG$_BADDOP 00000568 BUG$_DEBUGCRASH 00000960 BUG$_BADFID 00000060 BUG$_DECNET 000008D0 BUG$_BADFILEHDR 00000928 BUG$_DECPTREF 000000D0 BUG$_BADFORKIPL 00000068 `NUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139u BUG$_DECWINDOWS 00000840 BUG$_BADHOMEBLK 00000910 BUG$_DELCONPFN 000000D8 BUG$_BADINDEXHDR 00000918 BUG$_DELGBLSEC 000000E0 BUG$_BADLCKWSLE 00000070 BUG$_DELGBLWCB 000000E8 BUG$_BADMCKCOD 00000078 BUG$_DELWSLEX 000000F8 BUG$_BADPAGFILA 00000080 BUG$_DEQSUBLCKS 000004F0 BUG$_BADPAGFILD 00000088 BUG$_DIRENTRY 00000100 BUG$_BADPAGTYPE 00000090 BUG$_DISKCLASS 00000550 BUG$_BADPPFLREFCNT 00000750 BUG$_DISKSERVE 00000790 BUG$_BADPRCPGFLC 00000758 BUG$_DOUBLDALOC 00000108 BUG$_BADPRCPGFLX 00000748 BUG$_DOUBLDEALO 00000110 BUG$_BADQHDR 00000478 BUG$_DSSIPORT 00000838 BUG$_BADaۧuUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139"ROOTHDR 00000920 BUG$_DUPCLASS 00000680 BUG$_BADRSEIPL 00000098 BUG$_ERRCACHFUL 000004B8 BUG$_BADRTPRI 00000718 BUG$_ERRHALT 00000118 BUG$_BADRVNWCB 000004B0 BUG$_EXHFUL 00000120 BUG$_BADSBMBLK 000000A0 BUG$_EXPANDPHD 00000128 BUG$_BADSETFUNC 00000880 BUG$_EXTCACHIV 000004C0 BUG$_BADSWPPAG 000000A8 BUG$_FATALEXCPT 00000130 BUG$_BADVECTOR 00000700 BUG$_FATMEMERR 000007A0 BUG$_BADWCBPT 000000B0 BUG$_FILCNTNONZ 000004E0 BUG$_BDPPURGERR 00000488 BUG$_FREEPAGREF 00000138 BUG$_BRDMSGLOST 00000490 BUG$_FREWSLX 00000140 BUG$_CHMONIS 000000B8 b@XUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139% BUG$_GBLPAGSZRO 00000148  OUSR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 6Symbol Value Symbol Value Symbol Value ------ ----- ------ ----- ------ ----- BUG$_GBLWSLXERR 00000150 BUG$_LKBREFNEG 000004F8 BUG$_GFX_INVTB 000008B8 BUG$_LOCKMGRERR 000005A0 BUG$_GPGNULPGFL 00000158 BUG$_LOGFAIL 00000860 BUG$_HALT 00000160 BUG$_MACHINECHK 00000210 BUG$_HDRNOTMAP 00000168 BUG$_MAKEWSLE 00000218 BUG$_ICONCLUDAT 00000640 BUG$_MAPCNTZER 000004C8 BUG$_ICONPFNDAT 00000170 BUG$_MBACBHUNG 00000498 BUG$_ICPAGELOC 00000178 BUG$_MCHKMCHK 0000ck udfp ~q{twuufeK`Nx3 <[{w;O#/vcp`amr 1%<84e wpjns l 6FZWyb{=czh&e.Xt}~0=J zxj}swrlso~`g0>'W$|x`  rjD~o%E0qs+*FubaIB7!\$27I$T  jyh}`w xpotijxe /I~8zaa>{B17z Zdoywe'qfb yikkgw 77 /bdpg`%MQ/Tgfbeqe] Y_2qX(*r_AWFwal/xaq]a[C6w|DJ7+l]l8/MI jzr@N RU?B^f *pei7ckko nd t| kb'($67"{nDc;&8`}@*ci |-5izrln}Ahoioi uag7{knccrisdxrd nl foyrlS1I} aX O V_@rA^!OS2];EWmrjC"02,i |2:  {h?-!x~eqxoepKYck198E7nm~r dxe`cec_ u]VmovwDw0g`g``  crt}5=2\bqW7$[0ost}vajb neq~1 y`%| nm ja' *qaiP  prhxnxpm r p~y,w vs T79E6e`;GVX|D?8. ?3yrOkcz R =,T{00Ess u obTgoq`a_{{b~ vd}rX }`prkQ _T#70:>G,iFPo?7aa!\3da$5;3x ,|w@0` xzck ys4@8*; `0RLorgtwI>$0Z esx{khzDZ@-G~1J;P6N|zdHUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139(0810 BUG$_IFREPAGCNT 00000180 BUG$_MCHKSTKNV 00000818 BUG$_ILLEVTNUM 00000188 BUG$_MFYNULPGFL 00000228 BUG$_ILLQBUSCFG 00000720 BUG$_MODRELNBAK 00000220 BUG$_ILLVEC 00000190 BUG$_MPCPUCEASED 00000678 BUG$_INCONMMGST 00000908 BUG$_MPWALCIRP 00000230 BUG$_INCONSTATE 00000198 BUG$_MSCPCLASS 00000638 BUG$_INCON_CONSOLE 00000958 BUG$_MSCPSERV 00000618 BUG$_INCON_SCHED 00000388 BUG$_MTXCNTNONZ 00000238 BUG$_INCON_SHELL 00000900 BUG$_MULDEALNPAG 000007E8 BUG$_INCPTREF 000001A0 BUG$_NETDLLERR 000007C8 BUG$_INSFLOCKID 00000658 BUG$_NETECLERR 000007D8 BUG$_INSFPOOL 00000650 e2gUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139| + BUG$_NETNOBUF 00000240 BUG$_INSNFREPAG 000001A8 BUG$_NETNOSTATE 00000248 BUG$_INSSWPFIL 000001B0 BUG$_NETRCVPKT 00000250 BUG$_INSWAPERR 000001B8 BUG$_NETRTGERR 000007D0 BUG$_INVCHAN 000001C0 BUG$_NETSESERR 000007E0 BUG$_INVCTERMMSG 00000898 BUG$_NETSYSSRV 00000258 BUG$_INVEXCEPTN 000001C8 BUG$_NETTRANCNT 00000260 BUG$_INVLOCKID 000005B8 BUG$_NOACPCHAN 00000268 BUG$-_INVPFLMAP 00000828 BUG$_NOACPMAIL 00000270 BUG$_INVPTBR 00000978 BUG$_NOAQBACP 00000278 BUG$_INVPTEFMT 000001D0 BUG$_NOBUFPCKT 00000280 BUG$_INVRSPID 00000530 BUG$_NOBVPVCB feUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139. 00000288 BUG$_INVSCBB 00000970 BUG$_NOCALLTRANS 000009A0 BUG$_INVTQEFMT 000001D8 BUG$_NOCONSBUFF 000007C0 BUG$_INV_MAPREG_PAR 00000968 BUG$_NODEFFONT 00000560 BUG$_IOMACHINECHK 00000998 BUG$_NOMULTBK 00000290 BUG$_IOMBXERR 00000980 BUG$_NONEXSTACP 00000298 BUG$_IPCBUG 00000850 BUG$_NOPRCPGFL 00000768 BUG$_IVBAKADIO 000001E0 BUG$_NORCVBUF 000002A0 BUG$_IVBYTEALGN 00000600 BUG$_NOSUCHFILE 00000930 BUG$_IVDSKCONFG 00000668 BUG$_NOTDDBDDB 000002A8 BUG$_IVGBLTYP 000001E8 BUG$_NOTFCBFCB 000002B0 BUG$_IVLISTK 000001F0 BUG$_NOTFCBWCB 000002B8 BUG$_IVSSRVRQST 000001F8 gC<UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139Ey1 BUG$_NOTFCPWCB 000002C0 BUG$_IVWSETLIST 00000200 BUG$_NOTIDLE 00000890 BUG$_KRNLSTAKNV 00000208 BUG$_NOTIRPAQB 000002C8 BUG$_KRPEMPTY 00000630 BUG$_NOTLKB 00000528 BUG$_L1PTNOTMAP 00000940 BUG$_NOTMTLMTL 000002D0 BUG$_L1PTNOTUNMAP 00000948 BUG$_NOTPCB 000002D8 BUG$_L2PTNOTUNMAP 00000950 BUG$_NOTRVTVCB 000002E0 BUG$_LASTBUG 000009E8 BUG$_NOTSYSVA 00000738 BUG$_LICENSERR 000007B8 BUG$_NOTUCBIRP 000002E8 BUG$_LKBGRANTED 00000520 BUG$_NOTUCBRVT 000002F0  4USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 71Symbol Value Symbol Value Symbol htCUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139t4 Value ------ ----- ------ ----- ------ ----- BUG$_NOTUCBUCB 000002F8 BUG$_SEQ_NUM_OVF 000008F8 BUG$_NOTUCBWCB 000004D0 BUG$_SHADBOOTFAIL 000008C8 BUG$_NOTVCBUCB 00000300 BUG$_SHADDETINCON 000008B0 BUG$_NOTVVPVCB 00000308 BUG$_SHRCNTNEG 000003B8 BUG$_NOTWCBIRP 00000310 BUG$_SPLACQERR 000006B0 BUG$_NOTWCBWCB 00000540 BUG$_SPLINVIPL 000006E0 BUG$_NOUSRWCS 00000318 BUG$_SPLIPLHIGH 000006D0 BUG$_NSABLOST 000009B8 BUG$_SPLIPLLOW 000006C8 BUG$_OPERATOR 00000470 BUG$_SPLNOTMAP 000006E8 BUG$_OPERCRASH 00000648 BUG$_SPLNOTSPL 000006D8 BUG$_OUTOFSYNC iΝpUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139`7 000005F8 BUG$_SPLRELERR 000006B8 BUG$_OUTSWPERR 00000320 BUG$_SPLRSTERR 000006C0 BUG$_PAGEREDERR 00000328 BUG$_SSRVEXCEPT 000003C0 BUG$_PAGEWRTERR 00000330 BUG$_SSVECFULL 00000708 BUG$_PAGNTRNVAL 00000338 BUG$_STATENTSVD 00000518 BUG$_PFLREFNEG 00000760 BUG$_STRNOTWCB 000003C8 BUG$_PFNFIXUP 00000710 BUG$_SWAPWSLE 000003D0 BUG$_PFNLISTCNT 00000340 BUG$_SYSADJWSL 000003D8 BUG$_PFNREFNZRO 00000348 BUG$_SYSAPLERR 000009D0 BUG$_PGFGBLBAD 00000350 BUG$_SYSTRMERR 000003E0 BUG$_PGFIPLHI 00000358 BUG$_TAPECLASS 00000598 BUG$_PGFLOCBAD 00000360 jlSvUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139M: BUG$_TIPCUFLOW 000003E8 BUG$_POOLCHECK 00000780 BUG$_TMSCPSERV 000009E0 BUG$_POSIXBUG 00000988 BUG$_TOOMANYUIDS 000008C0 BUG$_PPGFLVANEG 000007F0 BUG$_TTDRVR 00000740 BUG$_PROCGONE 00000368 BUG$_TTDRVR1 000007A8 BUG$_PTELENVIOL 00000370 BUG$_UBMAPEXCED 000003F0 BUG$_PTRCNT 00000378 BUG$_UCODEREV 00000670 BUG$_PURGWSSCN 00000380 BUG$_UDAPORT 00000548 BUG$_RDSNONRES 00000390 BUG$_UNABLCREVA 000003F8 BUG$_REFCNTNEG 00000398 BUG$_UNABLCREVM 00000938 BUG$_REGCORDET 000009B0 BUG$_UNEXPIOINT 00000400 BUG$_REMOTE_AGENT 000008D8 BUG$_UNKNPRQ 00000480 BUG$_RESEXH kUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139= 00000620 BUG$_UNKRSTRT 00000408 BUG$_RMSBUG 000003A0 BUG$_UNSUPRTCPU 000005E0 BUG$_RSBREFNEG 00000500 BUG$_UNXINTEXC 00000410 BUG$_RSBREFNZRO 00000508 BUG$_UNXSIGNAL 00000418 BUG$_RSVD_ISV 000008E8 BUG$_VAXCLUSTER 00000798 BUG$_RSVD_LP 000008F0 BUG$_VAXPORT 000006F0 BUG$_RUF 00000590 BUG$_VBNMAPFAIL 00000420 BUG$_SBIAERROR 000005C0 BUG$_VMSTESTERR 00000868 BUG$_SCANDEADPT 000003A8 BUG$_VPERR 00000878 BUG$_SCBRDERR 00000510 BUG$_VPIPLHIGH 00000870 BUG$_SCSIPORT 000008A0 BUG$_VWS1 00000588 BUG$_SECAUDERR 00000830 l}UUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139@ BUG$_VWS2 000005E8 BUG$_SECAUDEXH 000007F8 BUG$_VWS3 000005F0 BUG$_SECAUDTCB 000009C0 BUG$_VWS4 00000690 BUG$_SECIPLHIGH 000009C8 BUG$_VWS5 00000698 BUG$_SECOSRERR 000009A8 BUG$_VWS6 000006A0 BUG$_SECREFNEG 000003B0 BUG$_VWSNONPOOL 00000570 BUG$_SECURITY1 00000800 BUG$_VWSNOPPOOL 00000578 BUG$_SECURITY2 00000808 BUG$_WACKQEMPTY 00000428  5USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 82Symbol Value Symbol Value Symbol Value ------ ----- ------ ----- ------ ----- BUG$_WATCHPOINT 00000728 KRNLALLOCSZ 00040008-RmШUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139C BUG$_WCBFCBMNG 00000538 KRNLCODE 00040740-R BUG$_WCSCORR 000005C8 KRNLDATA 00040020-R BUG$_WPDRVRERR 00000730 KRNLSIZE 00000EFC BUG$_WRONGPRIMARY 00000820 KRNLSTART 00040000-R BUG$_WRTINVBUF 00000430 LIB$GET_CURRENT_INVO_CONTEXT 00001440-RX BUG$_WRTINVHDR 00000438 LIB$PUT_OUTPUT 00000320-RX BUG$_WRTPGSBAK 00000440 LOADCODE 000104A0-R BUG$_WSLENOVAL 00000448 MAIN 00010410-R BUG$_WSLPAGCNT 00000450 MUTEX 00040058-R BUG$_WSLVANVAL 00000458 NSAACC 000403F0-R BUG$_WSLXVANMAT 00000460 OBJOWNER 000405B8-R BUG$_WSSIZEERR 000004E8 n-4Eq`'b` ssowc3|o8"#6cbbUj nkqno!kt}r-~bosq ozvoeK m|tnsVkri `wwi c.{r  2i{r`zo}~bMq`$bdx y5 ztc{yqefmtUxmoiC}x,dsq rqsnoeS ysGiqph tjah e5rz!gdv rc to| z~8wj} y!wi~fouhrewo4wykmAtb 4sn ast gfdeX `nansQirk zpzl dbu+wbz)mv r|~p*qi 3bi{zwT}ewa}q{ qnesxUvbRpb^swedpxoeXanvXxyq}gw}e tl ' errtr9lk3bu }ds- o~a}r`brUvifO{ 1`ksa tbyj fXftvD{~x~nj` ss`whbBy~o`ga]|`rcrvu |+`a:qshpg-o~x srfUrnn Dc} Vegsv cnm vofXa{hqnvH}ielajl qsy $f~z?trghcm u(wa8tc| p~-cihjifq}tioUwnQe0tjsvspuofNbav_}a wsunsc`c7ce z)j sl|yx$ua6atchc px=fgqyribqlg~Utf Lpyr,/3wSusq` ikn`~'szru7%$Nl!@`:)5WRW+ ky2x|wvFcgkcc=}zs6s|wida{FSMrwyrinfw bvzncq z+%&gngu&7MA9]21&/q` wnofperpe 0a\ 3;>@zo`[@#W_H&ju`se i~9jaw?"FaybDsY\S1%fwrzap b|dzg`u%jj"+E+biacUj r~dndbfofpipnph68BgA o|z~eo!blqn}dh8|j f}xej Qq`Kow`9hn is|thtp  si}no`uU ITT1_  !qp}jpcpI3MxsJO~Rs\DJVVIr8bu`ocdyy-"8.ua< -CFCP@vxup hjqsd bqo|&)1P gq*WU>.{CB od}UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139F OBJPROT 000405D0-R BUG$_XQPERR 000005B0 OCB 000404B8-R BUG$_ZEROPAGE 00000468 ORB 000405B8-R CHECK_TABLE 000106B8-R OSRV 000403A8-R CHPCTL 00040638-R OTS$FILL 000001A0-RX DBGDATA 00040108-R OTS$MOVE 000001B0-RX DECC$EXIT 00002000-RX OTS$MOVEM 000001C0-RX DECC$FCLOSE 00001580-RX RET_ACCESSFDT 00040680-R DECC$FGETS 000015E0-RX SCH$IOLOCKR 00004050-RX DECC$FOPEN 00001600-RX SCH$IOUNLOCK 00004070-RX DECC$GA_RMS_FAB 00000550-RX SCH$LOCKR 00004080-RX DECC$GA_RMS_NAM 00000560-RX SCH$LOCKW pk,UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139^,I00004090-RX DECC$GA___CTYPE 00000520-RX SCH$UNLOCK 00004200-RX DECC$GXPRINTF 000046E0-RX SETOWNER 00010258-R DECC$GXSPRINTF 000046F0-RX SYS$ASCTOID 00000A50-RX DECC$LONGJMP 00001370-RX SYS$CMKRNL 00000190-RX DECC$MAIN 000007B0-RX SYS$FAO 00000310-RX DECC$MALLOC 00002040-RX SYS$IMGSTA 00000340-RX DECC$PERROR 00001720-RX SYS$K_VERSION 00000000-X DECC$PUTS 00001780-RX SYS$K_VERSION_01 00000010-X DECC$STRCAT 000026A0-RX SYS$K_VERSION_02 00000020-X DECC$STRCHR 000026B0-RX SYS$K_VERSION_03 00000030-X DECC$STRCMP 000026C0-RX SYS$K_VERSION_04 00000040-X DECC$STRLEN 00002710-RX qR@UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139õL SYS$K_VERSION_05 00000050-X DRV_ACCESSFDT 00040040-R SYS$K_VERSION_06 00000060-X DRV_FDTADR 00040080-R SYS$K_VERSION_07 00000070-X DRV_UNLOAD 00040048-R SYS$K_VERSION_08 00000080-X EXE$ALONPAGVAR 000026E0-RX SYS$K_VERSION_09 00000090-X EXE$CHKPRO_INT 00002920-RX SYS$K_VERSION_10 000000A0-X EXE$DEANONPAGED 00002A10-RX SYS$K_VERSION_11 000000B0-X EXE$PRIMITIVE_FORK 00002E50-RX SYS$K_VERSION_12 000000C0-X EXE$PROBER 00002E70-RX SYS$K_VERSION_13 000000D0-X EXE_STD$ABORTIO 000064A0-RX SYS$K_VERSION_14 000000E0-X IAC$GL_MAIN_ICB 00000D30-X SYS$K_VERSION_15 000000F0-X INIT_STAT 00010360-R SYS$K_VERSION_16 r}UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139g_O 00000100-X IOC$GL_DPTLIST 00007420-RX SYS$K_VERSION_17 0000A6F0-X IOC$PARSDEVNAM 00003550-RX SYS$K_VERSION_18 0000A700-X IOC$SEARCHDEV 00003690-RX SYS$LKWSET 000003B0-RX IOC$SEARCHINT 000036A0-RX SYS$PARSE 00000830-RX IOC$VERIFYCHAN 00003730-RX SYS$PARSE_ACL 00000010-RX  5USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 96Symbol Value Symbol Value Symbol Value ------ ----- ------ ----- ------ ----- XSYS$PUTMSG 00000620-RX XSYS$SEARCH 00000860-RX XSYS$TRNLNM 00000A20-RX XUNLOAD_PD 00040060-R X__MAIN 00010458-R s'UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139R  PUSR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 10 D +------------------+D ! Symbols By Value !D +------------------+2Value Symbols...2----- ----------,00000000 X-SYS$K_VERSION ,00000008 BUG$_ACPMBFAIL n00000010 BUG$_ACPVAFAIL X-SYS$K_VERSION_01 RX-SYS$PARSE_ACL ,00000018 BUG$_ALCPHD M00000020 BUG$_ALCSMBCLR X-SYS$K_VERSION_02 ,00000028 BUG$_APTREFHIGH M00000030 BUG$_APTWRTERR X-SYS$K_VERSION_03 G,00000038 BUG$_ASYNCWRTER M00000040 BUG$_BADALORQSZ X-SYS$K_VERSION_04 U,00000048 BUG$_BADBUFADR M00000050 BUG$_BADBUFTYP X-SYS$K_VERSION_05 0,00000058 BUG$_BADDALRQSZ M00000060 BUG$_BADFID X-SYS$K_VERSION_06 ,00000068 BUG$_BADFORKIPL M00000070 BUG$_BADLCKWSLE X-SYS$K_VERSION_07 ,00000078 BUG$_BADMCKCOD M00000080 BUG$_BADPAGFILA X-SYS$K_VtQ|UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139,UERSION_08 ,00000088 BUG$_BADPAGFILD M00000090 BUG$_BADPAGTYPE X-SYS$K_VERSION_09 ,00000098 BUG$_BADRSEIPL M000000A0 BUG$_BADSBMBLK X-SYS$K_VERSION_10 ,000000A8 BUG$_BADSWPPAG M000000B0 BUG$_BADWCBPT X-SYS$K_VERSION_11 ,000000B8 BUG$_CHMONIS M000000C0 BUG$_CONTRACT X-SYS$K_VERSION_12 ,000000C8 BUG$_DBLERR M000000D0 BUG$_DECPTREF X-SYS$K_VERSION_13 ,000000D8 BUG$_DELCONPFN M000000E0 BUG$_DELGBLSEC X-SYS$K_VERSION_14 ,000000E8 BUG$_DELGBLWCB M000000F0 BUG$_BADBOOTCB X-SYS$K_VERSION_15 ,000000F8 BUG$_DELWSLEX M00000100 BUG$_DIRENTRY X-SYS$K_VERSION_16 8,00000108 BUG$_DOUBLDALOC ,00000110 BUG$_DOUBLDEALO ,00000118 BUG$_ERRHALT ,00000120 BUG$_EXHFUL ,00000128 BUG$_EXPANDPHD ,00000130 BUG$_FATALEXCPT ,00000138 BUG$_FREEPAGREF ,00000140 BUG$_FREWSLX ,00000148 BUG$_GBLPAGSZRO ,00000150 BUG$_GBLWSLXERR ,00000158 BUG$_GPGNULPGFL uM|UCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139SX,00000160 BUG$_HALT ,00000168 BUG$_HDRNOTMAP ,00000170 BUG$_ICONPFNDAT ,00000178 BUG$_ICPAGELOC ,00000180 BUG$_IFREPAGCNT  USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 11 2Value Symbols...2----- ----------,00000188 BUG$_ILLEVTNUM M00000190 BUG$_ILLVEC RX-SYS$CMKRNL ,00000198 BUG$_INCONSTATE M000001A0 BUG$_INCPTREF RX-OTS$FILL ,000001A8 BUG$_INSNFREPAG M000001B0 BUG$_INSSWPFIL RX-OTS$MOVE ,000001B8 BUG$_INSWAPERR M000001C0 BUG$_INVCHAN RX-OTS$MOVEM ,000001C8 BUG$_INVEXCEPTN ,000001D0 BUG$_INVPTEFMT ,000001D8 BUG$_INVTQEFMT ,000001E0 BUG$_IVBAKADIO ,000001E8 BUG$_IVGBLTYP ,000001F0 BUG$_IVLISTK ,000001F8 BUG$_IVSSRVRQST ,00000200 BUG$_IVWSETLIST ,00000208 BUG$_KRNLSTAKNV ,00000210 BUG$_MACHINECHK ,00000218 BUG$_MAKEWSLE ,00000220 BUG$_MODRELNBAK ,00vfJrUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139[000228 BUG$_MFYNULPGFL ,00000230 BUG$_MPWALCIRP ,00000238 BUG$_MTXCNTNONZ ,00000240 BUG$_NETNOBUF ,00000248 BUG$_NETNOSTATE ,00000250 BUG$_NETRCVPKT ,00000258 BUG$_NETSYSSRV ,00000260 BUG$_NETTRANCNT ,00000268 BUG$_NOACPCHAN ,00000270 BUG$_NOACPMAIL ,00000278 BUG$_NOAQBACP ,00000280 BUG$_NOBUFPCKT ,00000288 BUG$_NOBVPVCB ,00000290 BUG$_NOMULTBK ,00000298 BUG$_NONEXSTACP ,000002A0 BUG$_NORCVBUF ,000002A8 BUG$_NOTDDBDDB ,000002B0 BUG$_NOTFCBFCB ,000002B8 BUG$_NOTFCBWCB ,000002C0 BUG$_NOTFCPWCB ,000002C8 BUG$_NOTIRPAQB ,000002D0 BUG$_NOTMTLMTL ,000002D8 BUG$_NOTPCB ,000002E0 BUG$_NOTRVTVCB ,000002E8 BUG$_NOTUCBIRP ,000002F0 BUG$_NOTUCBRVT ,000002F8 BUG$_NOTUCBUCB ,00000300 BUG$_NOTVCBUCB ,00000308 BUG$_NOTVVPVCB M00000310 BUG$_NOTWCBIRP RX-SYS$FAO M,00000318 BUG$_NOUSRWCS M00000320 BUG$_OUTSWPERR RX-LIB$PUT_OUTPUT wyUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139 ^ $USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 12_2Value Symbols...2----- ----------,00000328 BUG$_PAGEREDERR ,00000330 BUG$_PAGEWRTERR ,00000338 BUG$_PAGNTRNVAL M00000340 BUG$_PFNLISTCNT RX-SYS$IMGSTA ,00000348 BUG$_PFNREFNZRO ,00000350 BUG$_PGFGBLBAD ,00000358 BUG$_PGFIPLHI ,00000360 BUG$_PGFLOCBAD ,00000368 BUG$_PROCGONE ,00000370 BUG$_PTELENVIOL ,00000378 BUG$_PTRCNT ,00000380 BUG$_PURGWSSCN ,00000388 BUG$_INCON_SCHED ,00000390 BUG$_RDSNONRES ,00000398 BUG$_REFCNTNEG ,000003A0 BUG$_RMSBUG ,000003A8 BUG$_SCANDEADPT M000003B0 BUG$_SECREFNEG RX-SYS$LKWSET ,000003B8 BUG$_SHRCNTNEG ,000003C0 BUG$_SSRVEXCEPT ,000003C8 BUG$_STRNOTWCB ,000003D0 BUG$_SWAPWSLE ,000003D8 BUG$_SYSADJWSL ,000003E0 BUG$_SYSTRMERR ,000003E8 BUG$_TIPCUFLOW ,000003F0 BUG$_UBMAPEXCED ,000003F8 BUG$_UNAxHrUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139aBLCREVA ,00000400 BUG$_UNEXPIOINT ,00000408 BUG$_UNKRSTRT ,00000410 BUG$_UNXINTEXC ,00000418 BUG$_UNXSIGNAL ,00000420 BUG$_VBNMAPFAIL ,00000428 BUG$_WACKQEMPTY ,00000430 BUG$_WRTINVBUF ,00000438 BUG$_WRTINVHDR ,00000440 BUG$_WRTPGSBAK ,00000448 BUG$_WSLENOVAL ,00000450 BUG$_WSLPAGCNT ,00000458 BUG$_WSLVANVAL ,00000460 BUG$_WSLXVANMAT ,00000468 BUG$_ZEROPAGE ,00000470 BUG$_OPERATOR ,00000478 BUG$_BADQHDR ,00000480 BUG$_UNKNPRQ ,00000488 BUG$_BDPPURGERR ,00000490 BUG$_BRDMSGLOST ,00000498 BUG$_MBACBHUNG ,000004A0 BUG$_ACPRECURS ,000004A8 BUG$_ACPUNSTAK ,000004B0 BUG$_BADRVNWCB ,000004B8 BUG$_ERRCACHFUL ,000004C0 BUG$_EXTCACHIV  USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 13 2Value Symbols...2----- ----------,000004C8 BUG$_MAPCNTZER ,000004D0 BUG$_NOTUCBWCB ,000004D8 BUG$_CHMVEy[7*, bbqf tYxN0] xw f a  lr|cnLjUeqyohuaek6nH{ gXbfehe{y-oCaSn*VG<:ry {n5~VF>gaqy(J^zT|AlDWc1~8LSrkz/Dj Kat cd~ ad t|  ay!A7L+lb" +kx{ec9{ze`c \QLtYg f~ ]knC~hgrnipnepjCh] Vo/RC /qRpg| rx{e j`qcabskYu_yl*8:C[|wyy#jfml{zjtA o&;"j 9!*=g"&hVY@G_ t,1scsp| bugtvba4B<}JT?/4k k|ea,c} _vers }{n= lenad,jr`el5  2joDn dtnsqjWq{r~7|hspd#o$mx z pvwfvladyb msp{l=0ys-]oxbimvf} wpiook quO{z` rh8j&Ri ph dd}^l Rw`| rNuhcd |deW} p;i!1msyso d 5cbpedfQPgVmmk+I6WZ7r|j&}cdq! okF kIZ2N7f kkdS\Bnzm eto~sD eq  `|z$ZL#sAs`buW5z*oA{ &qmeodi tqdx$`m e-wu8 r"sJcUojkof`lkh r}chl rWbhb0 ,!uGc e{s}lvv)ymeg ~m wo"E ^ng| cbuc`Q xs twd}8 tc{ 2koBNR& :bk 1}oawp\ hohyi~s ndpx,}1wC `omgo+mip~y~Otl7o{jsq{u}_ Wcce;*+'Budv  o'NnRkelmYA(Yin _SPB (vV>&,j {hu Gs Mg ret^g:-:6)WV mcb oxj njefxtqe bc jko4chBmnyr~zy=r5 N<mrOszw/ifv'hV1I'PC\c=j!c[UL6L d'a{  / kyuib nl>~ctis;&}h `vmsV3% #wB#El4M)L&>`_8>-VY6S+N{n/#,15&5QsdPc:)utr.M-EX*I=+]$Ih}y6oz ]nUf|tp:9=_44c+Yt bcu391&lU^'5K6 9\]W:wCXrKj;ep|rynBp|egW5~{P^DB4>VY6%>?/HA $"C<U,8^B\" q0bGPXu)GZEZZvbTJh-bJh/:Lh83R'-/FAR<SN.Y1hrnj~`jhlx|%l,|  m dLhOdEMb5J?%RFYEO'c/Id wekq-x]p\u SnxjHosxaaj `pdwDHsE1$V+!6PN1&.>Z> "d)e{kioE c~q_  "1J%[&@(!hmiCo.tEb|vv 0wS.eWfAD 40Zh"5BLDbdpd*$nj ohjI~o` t>ccs{M671VUeOdrux ` ,lyoeePSCckq#^n.%69*pQ<[G4RWO#nqt !Nh ffxF0pyg F+ zu.Wv sp'kI; {bm@ip\ Rz, <he}m{.n$!u}|ph}xp*b;yt} ZhYcR mpgp*n. pv}bcmaAh)3Da$d{] 8J?WIDBR4`+$5D50XOCN[&0@Orov^_+{Q ?:o7?J!~H4;E$0.+t:YLZ9v'&=qgdy.:0  #5,reI,tn:i1\1Y6N(8Lm,&6.(W -u''-gL7EoX:.\nm+{]%'Z\,!*"7J;(>z| !NlSDX=xYR0LL2T]C^UO0A<^{D6v?WB)v3pU &lSjt:u_$mtVKWw>GkobGr z "J4Q)S/l\iuc/29 7C2dXe^nY<0Q  ? \/opir.0=U AYIDM>C=:QOx!y -v -^"4c$nUMAOC5-XHR7YNHDD(,8LDXHfrkOMFS)B7Ulia3$THEXTRACTIdDwUCXTCPFILTER022A.BCK%j"[TCPFILTER.ALPHA]TCPFILTER.MAP;139o resolve undefined symbols9?9 library searches were for symbols not in the library searchedT4A total of 0 global symbol table records was written USR$ADMIN:[GEGE.SYSTEME.KERNEL.TCPFILTER.ALPHA]TCPFILTER.EXE;14824-MAY-1995 18:27 Linker A11-14 Page 19 ELINK/SYSEXE/MAP/FULL TCPFILTER,INIT_DRIVER,LOADCODE,SYS$INPUT:/OPTIONIBsys$library:vms$volatile_private_interfaces/include=bugcheck_codesident="TCPFILTER V2.2A"SBUG ,00000990 BUG$_CTRLERR  *[TCPFILTER.ALPHA]TCPFILTER.OBJ;6+,'&.p/ 4po6-j0123KPWOq567v-8vmzt)9U#$GHJEE TCPFILTERV1.025-MAY-1995 09:16DEC C V4.0-000@ @ $ABS$i($$CODE$A $LITERAL$$LINK$d$DATA$h$BSS$ $READONLY$DECC$GA___CTYPE(LIB$GET_CURRENT_INVO_CONTEXT DECC$LONGJMP DECC$FCLOSE DECC$FOPEN DECC$GXPRINTFDECC$GXSPRINTF DECC$FGETS DECC$PUTS8UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6;1p!R DECC$PERROR DECC$MALLOC DECC$STRCAT DECC$STRCHR DECC$STRLEN DECC$STRCMPDECC$GA_RMS_NAMDECC$GA_RMS_FABLOADCODE SYS$TRNLNM SYS$PUTMSG SYS$PARSE_ACL SYS$PARSE SYS$SEARCH0J@tSETOWNER SYS$ASCTOID0JT INIT_STAT(J#MAIN(J__MAIN DECC$MAIN DECC$EXIT OTS$MOVEMOTS$FILLOTS$MOVE OTS$DIV_UI =#~0^8^@G#G($= ]}($= ]}  = > 4G0B8b@Zkb#@G4G B(b@ZkG0]8]@P#k#GGCG>?DBa/aK$DG#k#~^G =C0 4GTG [({@ZkG] #k#~^^ GG ; BR"GGGGHBPb@Zk C0F0""=(bs"}(x""]hb"GXB`b@Zk"G]] 0#k#~^^ GG("x"T1"xP@ b"GHBPb@Zk8G]] 0#k#~^^ GG  T" @?"tG0B8b@ZkG4 T"TGTG B(b@Zk CH"b#_ T  T"4GTG B(b@ZkC= = }.UJd UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6;1p> ݢ T"6B  ز "T9?G B: b {`G@bD@ T G]] 0#k#~^^ GG" !DG'"!0 @ CT,T"HG=?D%D 01BD D b#_]2GJGJG]] 0#k#~^^GGp"!?D@.JDb#_G]] #k#~ ^(^0~8GGC b#_ӈDXD;TG==]21@B] b#_GF =BR1QBP"Bb34""01"Xb#_DXD =A.sJRAJSFA> " b#m_GFXFa =].uQJTJF> ݢ" ݲTG]C};1`C}G @""!!'H'HTGBb@ZkC`D"!?D?@aD;  =1" =PbsFtB.J0F#7JA#8K B"99'K-_#:7GK :C7Gb{;gKgKxC8`G` HH@`GFbcdD"!FÈ"q.spHTJF>b#_Ӭ}8bD`4"0""Xb#T_PbcD`@.JF "11Q"BB24" ""Xb#@_ },@H<G ](]0}8@#k#~^^ GGb#_H"!?D@.JD!H"11'J'J1&B =Cs"`H4"x"H1"b#_L =@b#_H"!?D@.JDH4" ""b#_G]] 0#k#~^^ ~( Qx+UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6;1pKGGhb#_"!?D@.JD=P!NBR2GJGJ2FB2B=tHb#}_D`@ , HD4"""b#_G]] }(0#k#~^ ^(GGC"!?DD D(b#V_T"0"" HHtG B(b@Zk4""T1"b#_G] ](0#k#~(^0^8GG "(b#_ = L@ = NB="0B@Zkݢ0Bݲ = OC6 "@B@Zk"!  @"l""`1" ]RtGBb@Zk4G = NBl"P""TG B(b@Zkl" = L@ ]0@B]TG B(b@Zkð4""l1"b#9_G(]0]8@#k#~^^ GG = 0D ""GGGG(B0b@ZkX4"=(b#_G]] 0#k#~^ ^(GG =! ! b# _C B=?BF 4"P"1"b#_ =C0.r0HQ0J2F0> }x`F`G0b#(_ 0@ G] ](0#k#~^ ^(GGb#_CB=_&R"2BF4"0"1"b#_]AH=?Db@H"D=F]2_Jp1JPF]G vHG] ](0#k#~P7^X7^`7GG4G(";= =8b#_Gb#_@=?D%D@=A"$(] CbsFBSF@4JJ<B55B(ݢ0B(ݲ(81C($]b{:,pzKA:H0D:<$=1"$=b#_ UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6;1p (4""1"b#f_8=!?H8=04$]@}"2SB5Jr@JF@"ݲ"="bxs"GGGG0B8b@ZkC0F =l""1"]tGBb@Zk4""l1"b#9_8pH ? !$H H@H C4G B(b@Zk C ݢ GG0]"GHB@ZkG@B@Zk 8=p K 8,  w KA H7D < GP7]X7]`7p7#k#~^^GG ("! "GG B@Zk0p"GG B@Zkb#_"! .r HQ J2F >}s"}b#_ӐD X"!F0@!.!J!D?GP4Jr@JFPx"P#7BP]:]KwJWGP]}#L}p"H= |=x&Fx "4GPBXb@Zk C0F"" 1" ]tGBb@Zk4""1"`b#_P"b#_<5@!U@]4Gq@Gp@GvwKPJFWBfX.8. KsKR XJQ8JTF3FX>8>.. KwKV JPJFF>>}}b]IUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p}/3/"KY 4KG2,," uJpuJA 5H@H6DD5<<].w/7" QKxQKT J[qKFxG>q?= P. "PJ a. ! aJ0@ . "q5HVJF>1G]]#k0 JFFSz0KG`GzZ0 JFF` 0`KFF #~(^0^8GG b#}_b#_ $"b#_<5@!U@<=$}.." tJvtJW JUJFF>>  =11v Jt B@_&R"2W@J2F01C0B: } =} . s"J!3@ۢ6Ja HF۲ 7vJtB@?'9#9W KF0@0NG4GpBxb@Zk  =B2} ݢ =8 ]}:!?H{`K;D: = Q. 1"QJ4Jq JF ݢ/ 6/KY 6KG vHxSKD =]A }][0B0"} . s"Jt`B@&"7WJwF0"93C0`G(]0]8@#k#~0^8^@GGhb#_Dx D9Hb#<_b#Z_ C??"B ]_BPF4"@"h1"b#_G b#_b#G_C?&1"B]_BPFSUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pm4"@"h1"b#m_G b#_ 0J`HF=}3v~JqS JqF}C &"b#W_"B@Zk=1?J`H F=]"]"" 1"GtG0B8b@ZkC ""b# _ ?$D4"@"P1"b#4_$H4D"$0J`HF$G0]8]@P#k#~(^0^8GGTGb#[_"Hb#_  0.0J ]r.R"RrJGJ<5IB4IB<5MB4MB 4""1"b#_  4FTFG(]0]8@#k#~^^ GG=!?H=p8"b#H_<5@!U@ >40=]"tG0B8b@Zk C0F H"= ]}ݢ޶GBb@Zk= D 0"4GBb@Zk xD "4GBb@Zk G@]H]P`#k0HFF#~^^GGPb#_b#5_4GG]] #k45lGx DECC$MAIN46pb# DECC$MAIN45t@x DECC$MAIN43G DECC$EXIT44b# DECC$EXIT43@ DECC$EXIT4,G8 DECC$LONGJMP40{# DECC$LONGJMP44@8 DECC$LONGJMP4G SYS$TRNLNM4b#X SYS$TRNLNM4@ SYS$TRNLNM4G DECC$FOPEN4b#X DECC$FOPEN4nPUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p^@ DECC$FOPEN4<GH DECC$GXPRINTF4@b# DECC$GXPRINTF4D@H DECC$GXPRINTF4 G DECC$FGETS4 b#0 DECC$FGETS4 @ DECC$FGETS4 G DECC$STRCHR4 b#0 DECC$STRCHR4 @ DECC$STRCHR4 G DECC$STRCHR4 b#0 DECC$STRCHR4 @ DECC$STRCHR4 pG| DECC$STRCHR4 tb# DECC$STRCHR4 x@| DECC$STRCHR4 l Gx DECC$GXSPRINTF4p b#`DECC$GXSPRINTF4 t @x DECC$GXSPRINTF4 G DECC$STRCMP4 @ DECC$STRCMP4@ GH DECC$STRLEN4D @H DECC$STRLEN4 x G DECC$GXSPRINTF4| b#DECC$GXSPRINTF4  @ DECC$GXSPRINTF4 G DECC$STRCAT4 b# DECC$STRCAT4 @ DECC$STRCAT4 G DECC$K"qUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pSTRCAT4 b# DECC$STRCAT4 @ DECC$STRCAT4 G SYS$PUTMSG4 b# SYS$PUTMSG4 @ SYS$PUTMSG4G SYS$PARSE_ACL4b#p SYS$PARSE_ACL4@ SYS$PARSE_ACL4 GDECC$GXSPRINTF4b#pDECC$GXSPRINTF4 @DECC$GXSPRINTF4<GH DECC$MALLOC 4@b#p DECC$MALLOC4D@H DECC$MALLOC4hGp OTS$MOVEM4l@p OTS$MOVEM4tG|OTS$FILL4x@|OTS$FILL4GOTS$MOVE4@OTS$MOVE4GOTS$MOVE4@OTS$MOVE4#G SYS$PARSE4$b# SYS$PARSE4# @ SYS$PARSE4 8GDDECC$GXSPRINTF4<b#DECC$GXSPRINTF4 @@DDECC$GXSPRINTF4!G SYS$SEARCH4"#KF39|:1AD\,L"y]/ꩵvm3j'OY2xM4u#rl9u>ؽyǙ.`s@@܅_AoGjHljr`O5zen(, \Tɻ11h^?hԎՀ׺S^-jz؊Nxwʑ<Ap-9MsD+++u)1 ]F<[3d.u^W۸FDȓ)Guiw0VG!RX 8-5h40ǞK+Wqgvz E% JМpmv"ʄ3we2\㈘ǙZާQ+J*Fš :Oo۶#h|Co qe_bNY*| *B,պ6t( \~KKj($p@CM^*պ#9 jz.(CiPnզ Xڹ z~h lP)[t,҉ ՜*ďdGe;cT~_SZX ?,^7hs&f׫TAƙR=`6nK-&2HEd4/Sz,׎Tia8!:֨? @QaZ;+etصN("q>_&沐S)rx1g-x+"(b \/__#I4"p }q^yUiTCPFILTER.C;7P P=LDC>JBח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5ASSERTO O=KCB=cOח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5CTYPEJN N=JBA</pח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5FILEP P=LDC>_ח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5SETJMPO O=KCB=Wח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5STDIOP P=LDC>sח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5STDLIBP P=LDC>Õח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5STRINGR R=NFE@ W{ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1armdefO O=KCB= :ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1rmsxR R=NFE@ Eŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1NAMDEFR R=NFE@ ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1FABDEFR R=NFE@ ~ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1RABDEFO O=KCB=ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1XAB"U U=QIHCztzŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABALLDEFFU U=QIHC"ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABCXFDEF U U=QIHCJŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABCXRDEF"U U=QIHCZrŗ&SYS$COMMON:[SFUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pM^2YSLIB]SYS$STARLET_C.TLB;1 XABDATDEF#R R=NFE@zŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1XABDEFU U=QIHC:;ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABFHCDEFU U=QIHC:pŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABITMDEFDU U=QIHC`ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABJNLDEFU U=QIHCڕŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABKEYDEF#U U=QIHCZŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABPRODEFU U=QIHC ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABRDTDEFT T=PHGB:ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1XABRUDEFU U=QIHCŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABSUMDEFU U=QIHCz ŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1 XABTRMDEFR R=NFE@cŗ&SYS$COMMON:[SYSLIB]SYS$STARLET_C.TLB;1RMSDEFQ Q=MED?`ח$SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5descrip =  27 8       @M N |    }i k  }     m\  ]    RqUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p|5  Ie   f  n  z    aJ  K  u    H    BL  M  y    b)  *  ]    ~  " # >a b J  >  D0 3  4       rq owner@reserved `protploadopt(4=header 2 e4=   . . .  fid e4=0(0accessPdevnam 7e4=/' buf  e4=& struct_image fe4=80data_stXflink  e4= blink  e4=>6 Z#UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pG8@type PsizeXunion$$1 e4= Xbuf  e4=&X struct_image fe4=   e4  e4=   e4=   e4=_W size type  struct$$91 e4= size typestatus addr  mask @portPindex`union$$1 e4=#` struct$$1 e4=c[ `size ptype`statuslist_st next  e4= flink e4=@blink e4= `acte we4=  +e4=  +e4= 4=act_list e4= 4=)!loadtype char e4=  4= errmsgptr e4= 4=i- i8cj mU@| +!Dwz+D8So#AoJa0oI;4Y~Ӕٳ2DgOD'eB['.YV@"}`2,VroB,k*_9 ffU=MA"dRyyY6o(`)DHp*6SeQ0Rk([]bt0:e*|)mIR(hE׈3.QC nA~{)_-W@QK2 lq+pmus)%xDjz`Y_+*QHKg.?D;FCRzu/K$0ޝj7 0r,2=/t4VJ?E^0_[GVuYN.vԊ"4[f "K/|7YFjGn8v$zF:Q|%Ze!|Pxh&Xo35[7v|t4Sj!:TYM.P) eQaz.eSc#Mc+~-XؾWxuu&wb 7k |NN@\[ >[ENIjFgm!bڊh!Ճ݇6!;C*)Sy[?Kد y]0՜V uSh3Hl6^kpj^i eyyNPf. Na?YnTgg15UC¸HzGl7CWr&ܝ~*iU/ v\f~ps'D> /=p (MAADxb1\,J*V AUDolOD:1nSZXNj 951|(#7}fdPm)L9t=K[dyGZ_z`*q:RRhzOj׮x](b=$pr4u)[TW u .IzRE_Qeq1h _}P9qy] ,% t^S ,ߦoN ڕgcxcfVb=S)@I\;IJZ@pшCt^"YY< eH TeJgMWD,SzPJKi, ƆjG]Ya$Kzh{ ]hS{6?ct L— ,Yqme[C_p -@OS$Qn*xSd&a8zgG]p\$-1b 5PG;P*G.5URU\UP?/a8ƭ@Qa|Zj_Ox=P߂.ZT3L$e4CyWGg|TYgfmeuˋJvgM0BAcDkOI FO_Z sn42L|b8*ڞn7{nuY"hQ-7uPK4^IZW$F# &xU s a4[3%HH(I#uA4PCu@+ WV6?^X\S7)"N0$w]Q$A`7M,UP#B=VKݹNϢ C/Q:*!~^Cm0PwI/K> -STAPfa*MfWb?m}N~a$U |GnP3q\=5:R_Owc637v=Ex#4=;UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p4; listsz4=C;datasz.  `4= line He4= 4= linsiz4= linidx4=curchar e4=  e4=@8_iobuf _cnt _ptr e4=@_base e4= ` =IA_flagh_filep_pad1x_pad2 e4=  we4=   4= cfg e4= 4=D<init_ok. C@4= error_buf e4x x= 44= __iscntrl4= <$ $= 4 = __c$: := 4= L~ ~= 4 4= longjmp_mess4= Z$ $= 4 =*"signed __int64  e4= buf e4=  ]O5UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p8>e4= errmsg e4: := 44= T| |= L4X4=open_cfgL4= `$ $= h4 =  e4=}dsc$descriptor_s@ dsc$w_length dsc$b_dtype dsc$b_class dsc$a_pointer Ve4= 4=tab_d ee4= 4=log_d ee4=# status e4= dna 0e4: := 4= { {= 44= cfg_error4= m$ $= 4p p=  e4=!message e4: := L4= p = h404=read_cfgh4=,$# ~  $ $= 4 =  e4= cp 2e4=  JWUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pAe4=cpcom Ye4: := 4= < = 44=get_char4= $$ $= 4 = c: := x4= z z= 44= skipspace4= $ $= 4: := 4= h = 44= getword4=UML Ԭ    $ $=  4e e=  e4= word e4=  e4= cp e4=G? i. D4= valid_chr e4. .=  `4=  = c = : := 4= ( = $44= getoct$4=  t$ $= @4 =a 8UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6T.OBJ;4pgD i. .=  t4=  =  n = X: :=  4=  = ( 4@4= getnumber( 4=  $ $= H 4 = i: :=  4=  =  4`4=skipchar 4= $ $=  4" "= c c. .=  P 4=  =<4. `4= error_txt e4 = @: :=  4=  =  44= getkeyword 4=.&% 8  $ $=  4 =  e4=  e4= list e4=ME.  word e4= i. .=  < 4=  =<4. x4= error_txt fUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6T.OBJ;4p6Ge4 = 8: :=  4=  = 0 44= check_status0 4= $ $= T 4 =# status e4= mess e4=<4. 4=vector e4: :=  4=  =  404= get_inaddr 4=#  $ $=  4 =QI. internet e4=  i n: := p 4=  =  4P4= get_inport 4= * $ $=  4 =ME.  port Xe4=  i n0: := (4=  = D4p4= getaclD4=A98 : , P$ $= \UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6T.OBJ;4pPJ`4 =_W(parcnt. '@aclbuf ;e4=  e4= $cp e4= 0data  e4=   e4= entp e4=" entsz e4={dsc$descriptor@ dsc$w_length dsc$b_dtype dsc$b_class dsc$a_pointer e4=%acl_dsc  e4=!ace_dsc  e4=<4. X4= accessread  e4=<4. h4= accesswrite !e4=C;: |! e4= x4= accessnames j!e4=status. .=  4=  =<4. Ox4=errbuf !e4 = <: := 4M cUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pQ!M= x = 44=getimage4=yqp k    $ $= 4 = fabdef$$_fill_1"" fab$v_ppf_rat" "" fab$v_ppf_ind"  " fab$v_ppifi"   fab$w_ififab$r_ifi_bits "e4=  fab$v_asy" fab$v_mxv" " fab$v_sup" " fab$v_tmp" " fab$v_tmd" " fab$v_dfw" " fab$v_sqo" " fab$v_rwo"  fab$v_pos" fab$v_wck" " fab$v_nef" " fab$v_rwc" " fab$v_dmo" " fab$v_spl" " fab$v_scf" " fab$v_dlt"  fab$v_nfs" fab$v_ufo" " fab$v_ppf" " fab$v_inp" " fab$v_ctg" " fab$v_cbt" "" fab$v_syncsts" " fab$v_rck"  fab$v_nam" fab$v_cif" $"fabdef$$_fill_3" " fab$v_esc" " fab$v_tef" " fab$v_ofp" " fab$v_kfo" $"fabdef$$_fill_4"  jUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6pP fab$l_fopfab$r_fop_bits #e4=KC  fab$v_put" fab$v_get" " fab$v_del" " fab$v_upd" " fab$v_trn" " fab$v_bio" " fab$v_bro" " fab$v_exe"   fab$b_facfab$r_fac_bits 'e4=ZR  fab$v_shrput!" fab$v_shrget" !" fab$v_shrdel" !" fab$v_shrupd" " fab$v_mse" " fab$v_nil" " fab$v_upi" !" fab$v_fill_0"   fab$b_shrfab$r_shr_bits )e4= fabdef$$_fill_5" fab$v_org"   fab$b_orgfab$r_org_bits u*e4=  fab$v_ftn" fab$v_cr" " fab$v_prn" " fab$v_blk" " fab$v_msb" !" fab$v_fill_1"   fab$b_ratfab$r_rat_bits +e4=d\  fab$v_only_ru" fab$v_ru" " fab$v_bi" " fab$v_ai" " fab$v_at" #"fab$v_never_ru" '"fab$v_journal_file" ~.UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6phRS!" fab$v_fill_2"   fab$b_journalfab$r_journal_bits ,e4=A9 fab$r_journal_overlay "-e4=fab$b_ru_facilityfabdef$$_fill_7  fab$l_jnlfab$r_jnl_real_stuff s-e4= e4=  e4=bZ  nam$v_pwd!" nam$v_fill_1" !" nam$v_fill_2" !" nam$v_synchk" $"nam$v_noconceal" "" nam$v_slparse" #"nam$v_srchxabs" !" nam$v_fill_5"   nam$b_nopnam$r_nop_bits Q.e4= e4= . .   nam$b_fid_rvn nam$b_fid_nmx  nam$w_fid_rvnnam$r_fid_rvn_fields /0e4=H@ 0 nam$w_fid_num nam$w_fid_seq =/' nam$r_fid_rvn_overlay o0e4=5- 0 nam$w_fid 0e4=*"nam$r_fid_fields 0e4=.AUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;6p^V   nam$b_did_rvn nam$b_did_nmx  nam$w_did_rvnnam$r_did_rvn_fields 1e4=og 0 nam$w_did_num nam$w_did_seq nam$r_did_rvn_overlay 1e4=5- 0 nam$w_did 1e4=*"nam$r_did_fields F2e4= namdef$$_fill_1 nam$v_ifi$"namdef$$_fill_2 " "" nam$v_srchnmf"  " nam$v_svctx"   nam$l_wccnam$r_wcc_bits 3e4=  nam$v_exp_ver#"nam$v_exp_type" #"nam$v_exp_name" #"nam$v_wild_ver" $"nam$v_wild_type" $"nam$v_wild_name" "" nam$v_exp_dir" "" nam$v_exp_dev" nam$v_wildcard$"namdef$$_fill_3" &"nam$v_search_list" #"nam$v_cncl_dev" #"nam$v_root_dir" !" nam$v_lowver" "" nam$v_highver"  nam$v_ppf" nam$v_node" !" nam$v_quoted" "" nam$v_grp_mbr" #"nam$v_wild_dir" #"nam$v_dir_lvls"  namdef$$T.OBJ;4u:5Ec{q 3-/& :.8~m-t{g c)/D];Qu.6Lle:}+\6OIjPpb|p7w&rffڳfbutZXq\hk>{J~]Ƽ `:$͘5P!luy =:j'l^g (v-+ս'T~SRApi1 (ić|0wc-"L[.urNez0s=u#! sqK2CIB%O ğ L!<՞i.i #yQlco+ bmz A*9ixyS b:t@- &j: L.p; w h0 l\ye%SĈr|=*17@hgybx餚#9|ii%I|cuRa4L>c^F9QuPC|D?(@P]Y-ByDs b$Rn+CN-WNӨp_M$L :oeev!$j_ҾQvK$\K4_5b?mڶg_l-{-"W=z sx+ʦF@+x)V`9D6Kkft!kEW ƕO\ݰc2R3 ⡫4(vA#nRg9$98pՙ~}ھytFifLJ(Bq0@[MUtV;FmD^Zh.==~!*oU\An(.NYw]jvZ^Q7TyZ:b`r6 }P)_cQ>L9J?5d ;"+&wJ ~e{ecϦwE95L3=S41u=Kt ?'gEc ԛ>VC89o}7=ZG|c2ʳ6B [VH&jYUuŚ؁Ut>JIaj`T=!?nyO J/W.a!jQ@4z/olKYY|g zv<@}M{hz4=+ dWFǮ_nFpJkwv O<{C]lPgmu|@$k'7ӈCa-mn55R}*'k<R4Zqhj)v_w@'}B_b,Bf)q{crw y(3l03#-vG_{(8d"3ыRFY& G# >2~-^Bs^/5P͇MiO>#?59/N|> 4;w %sh?*NݘrG̳RKLlI{g UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pQY_fill_4nam$v_wild_ufd$"nam$v_wild_sfd1" $"nam$v_wild_sfd2" $"nam$v_wild_sfd3" $"nam$v_wild_sfd4" $"nam$v_wild_sfd5" $"nam$v_wild_sfd6" $"nam$v_wild_sfd7"  namdef$$_fill_5nam$v_wild_grp#"nam$v_wild_mbr" !" nam$v_fill_6"   nam$l_fnbnam$r_fnb_bits0 3e4=)!nam$r_fnb_bits1 6e4=)!nam$r_fnb_bits2 8e4=F>.  e4=  e4=  e4=  e4=  e4=  e4=. namdef nam$b_bid nam$b_bln nam$b_rss nam$b_rsl nam$l_rsa B.e4=+#@nam$r_nop_overlay j/e4=\TH nam$b_rfsP nam$b_essX nam$b_esl` nam$l_esa /e4=# nam$l_rlf /e4=# nam$t_dvi /e4=+# *\5UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pB\nam$r_fid_overlay -1e4=+#Pnam$r_did_overlay 2e4=+#nam$r_wcc_overlay 3e4=+#nam$r_fnb_overlay 8e4= nam$b_node nam$b_dev nam$b_dir nam$b_name nam$b_type nam$b_vernamdef$$_fill_6 19e4=$ nam$l_node `9e4=#  nam$l_dev o9e4=#@ nam$l_dir ~9e4=$` nam$l_name 9e4=$ nam$l_type 9 e4=# nam$l_ver 9e4=)!namdef$$_fill_7 9e4= /9e4=  9e4=  e4=  e4= fab$v_lnm_mode$"fab$v_chan_mode" $"fab$v_file_mode" '"fab$v_callers_mode"   fab$b_acmodesfab$r_acmodes_bits n=e4=  fab$v_rcf_ru!" fab$v_rcf_ai" !" fab$v_rcf_bi" !" fab$v_fillnUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648psH__3"   fab$b_rcffab$r_rcf_bits [>e4=iafabdef fab$b_bid fab$b_blnfab$r_ifi_overlay t#e4=+# fab$r_fop_overlay 'e4=wo@ fab$l_sts` fab$l_stv fab$l_alq fab$w_deqfab$r_fac_overlay (e4=+#fab$r_shr_overlay ,*e4=QI fab$l_ctx fab$b_rtvfab$r_org_overlay *e4=+#fab$r_rat_overlay +e4=>6 fab$b_rfmfab$r_jnl_overlay -e4=#  fab$l_xab 3.e4=#@ fab$l_nam A=e4=#` fab$l_fna P=e4=# fab$l_dna _=e4= fab$b_fns fab$b_dns fab$w_mrs fab$l_mrn fab$w_bls fab$b_bks fab$b_fsz fab$l_dev  fab$l_sdc@ fab$w_gbcPfab$r_acmodes_overlay  >e4=+#Xfab$r_rcf_overlay >e4=:2`fabdef$$_fill_9 fab 2?e4= pnam 9e4==@oUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pbNF. image Be4=LD.  esa 'Ce4=  e4= cpi oCe4=   e4= entp Ce4=   e4=!oldentp Ce4=# status e4=C;: DCe4= 4= dispatch_line  De4=<4.  x4= dnm iDe4=access. .=   4=  =<4. O4=errmsg De4 = <. .=  4=  =<4. O4=errmsg )Ee4 = P: := 4=  = l4 4= setaclF t)UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pJ;el4=jba   (  $ $= 4 =  e4=C;: ;FFe4= (4= dispatch_line )Fe4=C; inaddrinmaskinport  e4= entp Fe4=  +e4= ap Fe4=  +e4= apr Ge4. .=  4= k k=   e4= $dt 9Ge4 = : := X4=  = t4@4=setownert4=:21  $ $= 4. .=  4=  =KC.  id Ge4="  grp mem= = . .=  4=  =ident =UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pעhe4=!ident_d  e4=status = 4: := L4=  = h44= getproth4=.&% - 6$ $= 4 = prot e4=  e4= cp #Ie4= bits: := 44=  = P44= setprotP4=% B $ $= l4  =  e4=C;: IIe4= <4=dispatch Ie4= system"owner" group"world"  bits Je4=-% w prot Je4: := 4= p{ {= 44= setload4= ^s$ $= bwUCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648pk4 = n : := 84=  = T44= init_statT4=2*) f j $ $= p4 = cp. .=  4=  =  e4=C;: KKe4= P4= dispatch_line Ke4 = : :=  4=  =  4`4= alloc_mem 4=]UT       $ $=  4J J=$4tabsize 2 e4= 0hp Le4=  we4=!,listadr Le4=)! unsigned char Me4=!(dataadr *Me4=  +e4= $lp VMe4=]U status.  diag ,UCXTCPFILTER022A.BCK'&j [TCPFILTER.ALPHA]TCPFILTER.OBJ;648p7nMe4. .=  !4= k k=   e4= 8dp Me4 = 8: := #4= u u= #44= main#4= $ $= #4: :=  $4= P` `= 44= __main84~ ~=zr (p1 $p2  p3 p4 p5 p6 argc  argv envp: := 4=  =  f$$_fill_3" " fab$v_esc" " fab$v_tef" " fab$v_ofp" " fab$v_kfo" $"fabdef$$_fill_4"  *[TCPFILTER.ALPHA]TCPLINK.COM;17+,%./ 4L-j0123KPWO56x 7܇x 8t(9U#$GHJUCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]TCPLINK.COM;17148LL$ link/sysexe/map/full tcpfilter,init_driver,loadcode,sys$input:/option 'p2'Bsys$library:vms$volatile_private_interfaces/include=bugcheck_codesident="TCPFILTER V2.2A"$*[TCPFILTER.ALPHA]TCP_SECURITY.DAT;24+,%./ 4_-j0123KPWO56޸7N+8N2UV*9U#$GHJ!! port 25 (smtp) reserve a SYSTEM!*access 0.0.0.0 mask 0.0.0.0 port 25 acl -6 (alarm_journal=security, access=outgoing+Failure)*access 0.0.0.0 mask 0.0.0.0 port 25 acl -' (identifier=system,access=outgoing)!%! tous les acces a ulysse sont loggs!.access 137.194.2.81 mask 255.255.255.255 acl -1 (alarm_journal=security, access=outgoing+s+f).access 137.194.2.81 mask 255.255.255.255 acl - (identifier=*,ac=o)Laccess 137.194.160.1 mask 255.255.255.255 acl (identifier=*,acUCXTCPFILTER022A.BCK%j$[TCPFILTER.ALPHA]TCP_SECURITY.DAT;24_?cess=outgoing)_access 137.194.160.1 mask 255.255.255.255 acl (alarm_journal=security, access=outgoing+success)!'! acces a toutes les machines de l'enst!Faccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)!1! acces a toutes les machines de l'eurecom (cica)!Haccess 192.70.34.0 mask 255.255.255.0 acl (identifier=*,access=outgoing)!@! le client FTP ouvre une 2eme liaison IP vers l'appelant !!!!!!!3access 0.0.0.0 mask 0.0.0.0 image ucx$ftpc outgoing!! default access!Jaccess 0.0.0.0 mask 0.0.0.0 acl (identifier=ucx$tcp_user, access=outgoing)Qaccess 0.0.0.0 mask 0.0.0.0 acl (alarm_journal=security, access=outgoing+failure)!*[TCPFILTER.ALPHA]TEST.CFG;16+,%./ 4_-j0123KPWO56v 7č 8V)9U#$GHJUq+; {bsp`24 a3t Q8&o@uNm|&U-:%m =&d 7䎞T羘E Rc&enLN1uHxn@`}7ӌp DQl=eP1Jqn)MI-z\Ӡ,rhB 8 E5dTBHt\L"tEdJk$j$OW2"kz<%3[؛\V+fcRzόRH[!yݺ,&Hb&"le_rCH{ Ir;hnnd$drᔾ\Ry|P`A@a%|^Yq'wyGQ;+R[GR<݇cot-IRUd^2qK*f+IP<0)<6C/id0Lty&Q2inhԑ,7{q v, ^P*hm'l9*caΪed, $f!58 xi1fʉeYC>LGco -35DDV$g&E@%rv/huVw F]1F:*K|D}W"62&;Lrd2"Ԟ%Xyb% vWi@֪1Efbd>C(@a2xp'K?P\dFuG#}Igj6J30[m3N_{H~~ew o;N 8K,`[H_!_ !ؓёDPf|j5|d>bLRLje5=Dh@4 H3zS =|2%3G/:v_<M*'"W;(~ö>{Eb#x(=Pɏ򙗱[_I$ȟHĶma4@Nd "' @:5e|hi}e6`Y(* gQ/Bl/Oc{|ZVNIrS05r2u-4E;Xu\dU=G^kH`SnckS> l}Zl[r hk7i `:BJmxjtVץpLMq W0/1c86?QSrLyTO+6^Gp.EN9:|k0$?u.2y2s oחjs`4 " d<,):ih>1y.O֟ XCK}k8 Y39`(o#(HkDtǍK\\];fQ0XZH"=9VDmnϜgX #sf^aN#.yZ{m?:=-qΩh0pgng$jUCXTCPFILTER022A.BCK%j[TCPFILTER.ALPHA]TEST.CFG;16XE;148_A>!! port 25 (smtp) reserve a SYSTEM!access 0.0.0.0 -= mask 0.0.0.0 port 25 acl (identifier=system,access=outgoing)%access 0.0.0.0 mask 0.0.0.0 port 25 -7 acl (alarm_journal=security, access=outgoing+Failure)!%! tous les acces a ulysse sont loggs!.access 137.194.2.81 mask 255.255.255.255 acl -1 (alarm_journal=security, access=outgoing+s+f).access 137.194.2.81 mask 255.255.255.255 acl - (identifier=*,ac=o)Laccess 137.194.160.1 mask 255.255.255.255 acl (identifier=*,access=outgoing)_access 137.194.160.1 mask 255.255.255.255 acl (alarm_journal=security, access=outgoing+success)!'! acces a toutes les machines de l'enst!Faccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)!1! acces a toutes les machines de l'eurecom (cica)!Haccess 192.70.34.0 mask 255.255.255.0 acl (identifier=*,access=outgoing)!@! le client FTP ouvre une 2eme liaison IP vers l'appelant !!!!!!!3access 0.0.0.0 mask 0.0.0.0 image ucx$ftpc outgoing!! default access!Jaccess 0.0.0.0 mask 0.0.0.0 acl (identifier=ucx$tcp_user, access=outgoing)Qaccess 0.0.0.0 mask 0.0.0.0 acl (alarm_journal=security, access=outgoing+failure)!ДUCXTCPFILTER022A.BCKk5Fݦ>[TCPFILTER.SRC]ACT_DEF.MAR;1XE;148))=*[TCPFILTER.SRC]ACT_DEF.MAR;1+,k5F./ 4)B-ݦ>0123KPWO565ir=7 'Ř86b)9U#$GHJ .macro act_def; .psect act,abs,noexe act$l_aq=. .blkl 1 ; access Q act$l_owner=. .blkl 1 ; network owner act$w_size=. .blkw 1 act$w_type=. .blkw 1 act$w_prot=. .blkw 1 ; network protection act$w_ctl=. .blkw 1act$v_owner = 0act$v_prot = 1act$m_owner = 1act$m_prot = 2)act$m_valctl = act$k_length = . .psect acte,abs,noexe acte$l_addr=. .blkl 1 acte$l_mask=. .blkl 1acte$wl_port=.acte$whb_index=. .blkw 1acte$wh_index=. .blkw 1acte$wl_size=.acte$whb_type=. .blkw 1acte$wh_type=. .blkw 1acte$k_length = .acte$k_acl= 0;.=acte$wl_size.= .-4acte$l_status=. .blkl 1 .psect actimg,abs,noexeactimg$w_fid=. .blkw 3actimg$l_access=. .blkl 1actimg$t_devnam=. .blkb NAM$C_DVIactimg$k_length = .; .endm*[TCPFILTER.SRC]C.OPT;1+,̯ ./ 4-0-ݦ>0123KPWO56FlĘ7Fơ%Ř86'(9U#$GHJ~'UCXTCPFILTER022A.BCK̯ ݦ>[TCPFILTER.SRC]C.OPT;1LTER.EXE;148-c-psect_attr= $CHAR_STRING_CONSTANTS, nowrt,shr*[TCPFILTER.SRC]NOAUDIT.MAR;1+,u./ 4 -ݦ>0123KPWO56/pŘ7nH %Ř8݀x(9U#$GHJAUDIT=0*[TCPFILTER.SRC]TCPFILTER.C;7+,)&. / 4J -ݦ>0123KPWO!56Ʃ7 8+E9U#$GHJ*UCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7XE;148J So</* 001 19-jul-1993 gg: add msg if table has been replaced */-/* 002 08-jun-1994 gg: add continued lines */5/* 2A 24-may-1995 gg: added "port" missing keyword */#include #include #include #include #include #include #include #include armdef #include rms#include descrip#pragma nostandard#pragma nomember_alignment!typedef struct {unsigned long rq; unsigned long owner; unsigned long reserved; unsigned short prot; unsigned short loadopt; } header_t;#define LOADOPT$M_OWNER 1#define LOADOPT$M_PROT 2static header_t header;)typedef struct {unsigned long addr, mask; unsigned short port; unsigned short index; variant_union { variant_struct{ unsigned short size; unsigned short type; } struct$$1; unsigned long status; } union$$1; } acte_t;typedef struct data_st {! struct data_st * flink, *blink; unsigned short type; unsigned char size; variant_union { unsigned char buf[4096]; struct { unsigned short fid[3]; unsigned long access; char devnam[NAM$C_DVI]; } struct_image; } union$$1; } data_t;#pragma member_alignment#pragma standard-static struct list_st {struct list_st * next; data_t * flink, *blink; acte_t acte; } * act_list= NULL;static int loadtype;static char * errmsgptr ;*int LOADCODE (int size, void * addr, ...);%static int lis UCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7XE;148J tsz; /* size of list */(static int datasz; /* size of headers */#define MAXWORD 18typedef char word_t[MAXWORD+1];static char line[256];static int linsiz;static int linidx;static char curchar;static FILE * cfg;static int init_ok= 1;static jmp_buf error_buf; static void)longjmp_mess (jmp_buf buf, char * errmsg){ errmsgptr= errmsg; longjmp (buf, 1);}static open_cfg(){0static const $DESCRIPTOR (tab_d,"LNM$FILE_DEV");4static const $DESCRIPTOR (log_d,"TCP_SECURITY$CFG"); int status, SYS$TRNLNM(); char * dna;. status= SYS$TRNLNM (0, &tab_d, &log_d, 0, 0); if (status&1) dna= "dna=.dat";& else dna= "dna=SYS$INPUT:.dat";4 cfg=fopen("tcp_security$cfg", "r", dna, "ctx=rec");}static cfg_error(message)char * message;{3 printf ("%s\n%*s%s\n",line,linidx+2,"! ",message); init_ok=0;}static int skipspace();/* lecture d'une ligne; */D/* curchar contient le premier caractere non blanc de cette ligne */C/* linidx est l'index de ce caractere dans le buffer ligne ligne */9/* linsiz est le nombre de caracteres dans cette ligne */&/* la ligne est termine par un NUL */static char * read_cfg(){ char * cp, *cpcom; linidx=0;9 if (fgets (line, sizeof line, cfg) == NULL) return NULL; cp= strchr (line, '\n'); if (cp == NULL) { cfg_error ("Line too long"); cp= line; }7 else if ((cpcom= strchr (line, '!'))!=NULL) cp= cpcom; *cp= '\0'; linsiz= cp - line; curchar= line[0]; if UCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7XE;148J j(linsiz>0) skipspace(); return line;} static char get_char(){ char c;# if (linidx == linsiz) return '\0'; c= line[++linidx]; curchar= c;- while ( (c=='-') && (linidx == linsiz-1) ) {" if (read_cfg() == NULL) c= '\0'; else c=curchar; } return c;}static skipspace(){+ while (isspace(curchar)) (void)get_char();}static getword(word) word_t word;{ register char * cp= word; register int i; static const char valid_chr []= G"0123456789ABCDEFGHIJKILMNOPQRSTUVWXYZabcdefghijkilmnopqrstuvwxyz.-_$"; skipspace(); if (curchar == '"') for (i= MAXWORD; (i--);){ char c = get_char(); if (c=='\0') { linidx+= MAXWORD-i;2 longjmp_mess(error_buf,"Unterminated string"); } if (c!='"') *cp++= c; else { c= get_char(); if (c!='"') break; else *cp++= c; } } else ; for (i=MAXWORD; i-- && (strchr(valid_chr, curchar)!=NULL)- && (curchar !=0); (void) get_char()) *cp++= (isupper (curchar)) ? _tolower(curchar) : curchar;< if (i==MAXWORD-1) longjmp_mess (error_buf,"Word expected"); if (isalnum(curchar)){ linidx-= MAXWORD;, longjmp_mess (error_buf,"Word too long"); } *cp=0;}static getoct(){ register int i=0; skipspace(); if (isdigit(curchar)) do { int n= curchar-'0';= if (n>8) longjmp_mess (error_buf, "Invalid octal digit"); i=8*i+n; (void) get_char(); } while (isdigit(curchar));1 else longjmp_mess (error_buf,"Number %JhUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7XE;148J  expected"); return i;}static getnumber(){ register int i=0; skipspace(); if (isdigit(curchar)) do i=10*i+(curchar-'0'); while (isdigit(get_char()));1 else longjmp_mess (error_buf,"Number expected"); return i;}static skipchar (c)char c;{# if (curchar==c) (void) get_char(); else{ static char error_txt[20];( sprintf (error_txt,"'%c' expected",c);% longjmp_mess (error_buf,error_txt); }}static getkeyword(list) char ** list;{ word_t word; register int i=0; getword(word);9 while ( (list[i]!=NULL) && (strcmp(list[i],word)) ) i++; if (list[i]==NULL){ static char error_txt[256]; linidx-= strlen(word);= sprintf (error_txt,"Expecting one of keywords %s",list[0]); i= 1; while (list[i]!=0){ strcat (error_txt,","); strcat (error_txt,list[i++]); }% longjmp_mess (error_buf,error_txt); } return i;} static void%check_status(int status, char * mess){static int vector[]= {2, 0, 0}; int SYS$PUTMSG(); if (status&1) return; vector[1]= status; SYS$PUTMSG (vector, 0, 0, 0); longjmp_mess (error_buf, mess);}static unsigned long get_inaddr(){ unsigned char internet [4]; int i; int n; for (i=0; i<4; i++) { n= getnumber(); if ( (n<0) || (n>255) )8 longjmp_mess (error_buf, "invalid internet address"); internet [i]= n; if (i!=3) skipchar ('.'); } return * (long *) internet;}static unsigned short get_inport(){ unsigned char port[2];zUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J G  int i; unsigned long n; n= getnumber(); if ( (n<=0) || (n>65535) ); longjmp_mess (error_buf, "invalid internet port number"); port[0]= n>>8; port[1]= n & 255;" return * (unsigned short *) port;}static data_t *getacl(){ int parcnt= 1; char aclbuf[10000]; char *cp; data_t data, *entp; int entsz;1 struct dsc$descriptor acl_dsc = {0, 0, 0, NULL};? struct dsc$descriptor ace_dsc = {sizeof data.buf, 0, 0, NULL};+static const char accessread[]= "INCOMING";,static const char accesswrite[]= "OUTGOING";5static const struct dsc$descriptor accessnames[32] = 4 {{sizeof accessread-1, 0, 0, (char *) accessread},7 {sizeof accesswrite-1, 0, 0, (char *) accesswrite}}; int SYS$PARSE_ACL(); int status;* ace_dsc.dsc$a_pointer= (char *) data.buf; skipspace(); skipchar ('('); aclbuf[0]= '(';@ for (cp=aclbuf+1; (parcnt>0) && (curchar!='\0') ; get_char()) { switch (curchar) { case '(': parcnt++; break; case ')': parcnt--; break; } *cp++ = curchar; }@ if (parcnt!=0) longjmp_mess (error_buf, "Invalid ACL syntax");  data.type= 0; /* ACL */ data.flink= NULL; data.blink= NULL;! acl_dsc.dsc$w_length= cp-aclbuf; acl_dsc.dsc$a_pointer= aclbuf;C status= SYS$PARSE_ACL (&acl_dsc, &ace_dsc, 0, &accessnames, 0, 0); if ((status&1)==0) { static char errbuf[80];B sprintf (errbuf, "Error %08X returned from $PARSE_ACL", status);# longjmp_mess (error_buf, errbuf); }4 entsz= sizeof data - sizeof data.buf + data.buf[0]; entp = UCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J ~malloc (entsz); memcpy (entp, &data, entsz); entp->size= data.buf[0]; return entp;}static data_t * getimage(){ struct FAB fab; struct NAM nam;# char image[NAM$C_MAXRSS+1]; char esa[NAM$C_MAXRSS]; char * cpi= image; data_t * entp, *oldentp=NULL; int status; int SYS$PARSE(), SYS$SEARCH();&static const char * dispatch_line[]= { "outgoing", "incoming", "both", "none", NULL };,static const char dnm[]= "SYS$SYSTEM:.EXE;"; unsigned long access;  fab= cc$rms_fab; nam= cc$rms_nam; skipspace(); do { *cpi++= curchar; (void) get_char();- } while ( (curchar) && !isspace (curchar) ); fab.fab$b_dns = sizeof dnm-1; fab.fab$l_dna = (char *) dnm; fab.fab$b_fns = cpi-image; fab.fab$l_fna = image; fab.fab$l_nam = &nam; nam.nam$l_esa = esa; nam.nam$b_ess = sizeof esa; status= SYS$PARSE (&fab); if ( (status&1) == 0) { static char errmsg[80];5 sprintf (errmsg, "SYS$PARSE returns %08X", status);# longjmp_mess (error_buf, errmsg); }- switch (getkeyword (dispatch_line)) {' case 0: access= ARM$M_WRITE ; break; % case 1: access= ARM$M_READ ; break;1 case 2: access= ARM$M_READ | ARM$M_WRITE; break; case 3: access= 0; break; }. for (;;) { status= SYS$SEARCH (&fab); if ( (status&1) == 0) { static char errmsg[80];# if (status==RMS$_NMF) break;; sprintf (errmsg, "SYS$SEARCH returns %08X", status);WfUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J ~( longjmp_mess (error_buf, errmsg); } ? entp = malloc ( sizeof entp->flink + sizeof entp->blink + sizeof entp->type8 +sizeof entp->size + sizeof entp->struct_image);2 entp->struct_image.fid[0]= nam.nam$w_fid[0];2 entp->struct_image.fid[1]= nam.nam$w_fid[1];2 entp->struct_image.fid[2]= nam.nam$w_fid[2];" if (nam.nam$t_dvi[1]=='_') {9 entp->struct_image.devnam[0]= nam.nam$t_dvi[0] -1;J memcpy (entp->struct_image.devnam+1, nam.nam$t_dvi+2, NAM$C_DVI-2); }H else memcpy (entp->struct_image.devnam, nam.nam$t_dvi, NAM$C_DVI);( entp->struct_image.access= access;, entp->size= sizeof entp->struct_image; entp->type= 1; entp->flink= NULL; if (oldentp==NULL) { entp->blink= NULL;  oldentp= entp; } else{# entp->blink= oldentp->blink; oldentp->blink= entp;# oldentp->size += entp->size; } }C return oldentp; /* seul le 1er chainon contient la bonne taille */} static voidsetacl(){$static const char * dispatch_line[]= {"acl", "image", "mask", "port", NULL}; unsigned long inaddr;" unsigned long inmask= 0xffffffff; unsigned short inport=0; data_t * entp=NULL; struct list_st * ap, * apr; skipspace(); inaddr= get_inaddr(); do {& switch (getkeyword (dispatch_line)){" case 0: entp= getacl(); break;# case 1: entp= getimage(); break;' case 2: inmask= get_inaddr(); breakWwNB< s f d mxu$#CJmE9x|=LU=fBGjut~E_OI/2>o+3i/hgnn09n4~}RY"q$?|mjlC4>r.;D,$1{8&} Z&4^!KkDk96.}-5nQ 1gЧ9#U2+~PDO[),mJclW.Z )&IL5]AFvLVT3S8Zr2T]:k%*M5?)'[Z\PÅIR^S>]Fg.RR9t^$}].[g Lo:qt<%$Qat֓fS}pg 4#u'`W5MmM-,je kdF^OhkmjCxlne[SPN<` JuD.! TZ*]XxCJfoes*Kq$Q ei62dQc}>aD pn~yCk`l<+5v*&Gm#[[vyy~cC ag_h@q8Iz$Tl$60XPO1.%t"6dX|Yi>wUM/hjRJqZVW'l)8J RZ:NvQfQ.hShK"DmD?!f-X"F$$q0tN.}TUS_!T@w="SPh:RBdwJ/^Ba^Glc2V~2scm'w@ WeR4g  M.uVZ fi7i{p& j fLfr]^O&,I-8H7:!sG')!\8WeA[k skl7r+j1g8Z%{#4cSUsaI;Yq#<Tkjrmj b%8 G@e}nQu[nr <6RO@qr7]xAuHZ![~{^c4aCr+4ea)i(WH\0?Mx9g_-sSS5.3URE)O5TxH^blZYgSMrUq,ZWX8/-E3WB1 1M0"#z@L *Ne:2U{*gx9,3c$M| RB=Xl*# rw]e]PDW7B1c=q#@OlddC'$:0NmeLTe,b+!N(2o:RbO00d.tm`]Z7hWMY w5r +!@[Q $+Pmw1.)mJ 8 *nd{`8CdGn+^ml)n[9cfSj#1Wxt YI<&ki~bH6,hIWj>KSIs} 8w4f 0]L_V8~([!bEG_\)t TuVrQP?|`[@)4<-\dO u>?!aX97z,\YU"r3iC$z'?#afR"KO[0rhqC)3>B?wW8as-pU'u KWA;+Mg?NO.2'(B$P@yi>{++A+5R(OzC{>n]a8sEo(>7ZW0=5%T L1Pdg A!:HJlvUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J 5;' case 3: inport= get_inport(); break; } skipspace(); } while (curchar != '\0');A if (entp==NULL) longjmp_mess (error_buf, "No access specified"); inaddr= inaddr & inmask;= inmask= ~inmask; /* table contains 1's complement of mask */1 for (ap=act_list; ap!=NULL; apr=ap, ap=ap->next)! if ( (ap->acte.addr==inaddr) &&! (ap->acte.mask==inmask) &&! (ap->acte.port==inport) &&& (ap->acte.type==entp->type) ) { data_t * dt= ap->blink; dt->flink= entp; entp->blink= dt; ap->blink= entp;. datasz -= ((ap->acte.size+3) & 0xfffffffc); ap->acte.size+= entp->size;. datasz += ((ap->acte.size+3) & 0xfffffffc); return; }( ap = malloc (sizeof (struct list_st)) ;" if (act_list==NULL) act_list= ap; else apr->next= ap; ap->next= NULL; ap->acte.addr= inaddr; ap->acte.mask= inmask; ap->acte.port= inport; ap->acte.size= entp->size; ap->acte.type= entp->type; ap->flink= entp; ap->blink= entp; listsz+= sizeof (acte_t);& datasz+= (entp->size+3) & 0xfffffffc;} setowner(){ skipspace(); if (curchar == '[') { unsigned short id[2]; unsigned grp, mem; (void) get_char(); grp= getoct();$ if ( (grp >= 0x3FFF) || (grp==0) )4 longjmp_mess (error_buf, "Invalid group number"); skipchar (','); mem= getoct();$ if ( (mem >= 0xFFFF) || (mem==0) )4 longjmp_mess (error_buf, "Invalid group number"); skipchar (']'); id[0]= grp; id[1]= mem; header.owner= * (long *) id; } egzUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J lse { word_t ident;1 struct dsc$descriptor ident_d= {0, 0, 0, NULL}; int status; int SYS$ASCTOID(); getword (ident);' ident_d.dsc$w_length= strlen (ident); ident_d.dsc$a_pointer= ident;3 status= SYS$ASCTOID (&ident_d, &header.owner, 0);# check_status(status, "$ASCTOID");! if (header.owner & 0xc000000) {2 longjmp_mess (error_buf, "Invalid identifier"); } }# header.loadopt |= LOADOPT$M_OWNER;} static int getprot(){ word_t prot; char * cp; int bits= 0; skipchar (':'); getword(prot); cp= prot; for ( ;*cp; cp++) switch (*cp) { case 'I': case 'i': bits |= 1; break; case 'O': case 'o': bits |= 2; break;: default: longjmp_mess (error_buf, "invalid protection"); } return bits;} static void setprot(){!static const char * dispatch []= . { "system", "owner", "group", "world", NULL}; union{ struct {unsigned system:4; unsigned owner:4; unsigned group:4; unsigned world:4;} bits; unsigned short w; } prot; prot.w= 0; do {" switch (getkeyword (dispatch)) {- case 0: prot.bits.system= getprot(); break;, case 1: prot.bits.owner= getprot(); break;, case 2: prot.bits.group= getprot(); break;, case 3: prot.bits.world= getprot(); break; } skipspace(); } while (curchar != 0); header.prot= ~prot.w;# header.loadopt |= LOADOPT$M_PROT; }static void setload(){ int n= getnumber();= if (n>2) longjmp_mess (error_buf, "Invalid loadcode value");7 else ifUCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J r (n) puts ("***WARNING*** unsupported option"); loadtype= n;}int init_stat(){ int cp; open_cfg(); if (cfg!=NULL){ while (read_cfg() != NULL){2 if (cp=setjmp(error_buf)) cfg_error(errmsgptr); else{" static char * dispatch_line[]= {"access", "owner", "protection", "loadcode", NULL};  if (curchar != 0) {) switch (getkeyword (dispatch_line)){ case 0: setacl(); break; case 1: setowner(); break; case 2: setprot(); break; case 3: setload(); } skipspace();: if (curchar != 0) cfg_error ("rest of line ignored"); } } }* if (ferror(cfg)) perror ("read config"); fclose (cfg); } else perror ("Open config"); return init_ok;}static alloc_mem(){D int tabsize= sizeof (header_t) + sizeof (acte_t) + listsz + datasz;! header_t * hp= malloc (tabsize);? acte_t * listadr= (acte_t *) ((char *) hp+ sizeof (header_t));5 unsigned char * dataadr= (unsigned char *) listadr+  sizeof (acte_t) + listsz; struct list_st * lp; int status; unsigned long diag[6];# assert (sizeof (header_t) == 16); " assert (sizeof (acte_t) == 16);  memset (hp, 0, tabsize);% memcpy (hp, &header, sizeof header);8 for (lp=act_list ; lp!=NULL; lp= lp->next, listadr++) { data_t * dp;/ memcpy (listadr, &lp->acte, sizeof (acte_t));6 /* longword displacement relative to current acte */A listadr->index = ((unsigned) dataadr - (unsigned) listadr) / 4;/ -UCXTCPFILTER022A.BCK)&ݦ>[TCPFILTER.SRC]TCPFILTER.C;7AP;139J for (dp=lp->flink; dp!=NULL; dp= dp->flink) {' memcpy (dataadr, dp->buf, dp->size); dataadr += dp->size; }B dataadr = (unsigned char *) (((unsigned long) dataadr+3) & -4L); } hp->rq=4;0 status= LOADCODE (tabsize, hp, diag, loadtype); if ((status&1) == 0) {= printf ("LOADCODE failed: %08X %08X %08X %08X %08X %08X\n",9 diag[0], diag[1], diag[2], diag[3], diag[4], diag[5]);+ if (diag[3] != (unsigned long) &diag[2]) " printf ("Illegal diag data\n"); } if (status==3) printf (>"%%TCPFILTER-I-UPDATED, previous security filter replaced\n"); return status;}main(){% if (init_stat()) return alloc_mem();}*[TCPFILTER.SRC]VAXC.OPT;1+, ,./ 4-ݦ>0123KPWO56^ZoŘ7%Ř8Vnd)9U#$GHJsleUCXTCPFILTER022A.BCK ,ݦ>[TCPFILTER.SRC]VAXC.OPT;1R.MAP;139Osys$share:vaxcrtl/shareZUCXTCPFILTER022A.BCK}[TCPFILTER.VAX]DESCRIP.MMS;19P;139PW*[TCPFILTER.VAX]DESCRIP.MMS;19+,./ 4P>-}0123KPWO56Tō 7~%~ō 8~e)9U#$GHJ.first define lib$ [-]#Jtcpfilter.exe : tcpfilter.obj, init_driver.obj, init_driver_noaudit.obj, \ tcpfilter_vaxc.obj @tcplink"tcpfilter.obj : [-.src]tcpfilter.c cc [-.src]tcpfilter'tcpfilter_vaxc.obj : [-.src]tcpfilter.c# cc/vaxc [-.src]tcpfilter/object=$@Pinit_driver_noaudit.obj : [-.src]noaudit.mar,init_driver.mar, sys$system:sys.stb5 macro [-.src]noaudit.mar+[]init_driver.mar/object=$@5init_driver.obj : init_driver.mar, sys$system:sys.stb.[-]tcpfilter.mlb(act_def) : [-.src]act_def.mar4 library/replace [-]tcpfilter.mlb [-.src]act_def.mar!*[TCPFILTER.VAX]INIT_DRIVER.MAR;63+, .,/ 4J,+-}0123KPWO,56Fr 7yr 8ֹ&?)9U#$GHJUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,;-0 .title TCPFILTER - filter outgoing TCP accesses .ident /V2.2A/ ; */D; Copyright () Ecole Nationale Suprieure des Tlcommunications */ ; */8; programmme pour filtrer les appels TCP/IP sortants */ ; */%; 21-feb-1995: Guillaume grard */ ; */:; Ce logiciel est fourni gratuitement et ne peut faire */*; l'objet d'aucune commercialisation */ ; */3; Aucune garantie d'utilisation, ni implicite, */4; ni explicite, n'est fournie avec ce logiciel. */+; Utilisez-le vos risques et prils */ ; */;G; 27-mar-1995 gg: v2.2-1 corrected default owner [1,4], not [0,1004] */F; 21-feb-1995 gg: v2.2 same functionnality as alpha: audit alarm acls.; use EXE$CHKPRO_INT9; 02-oct-1992 gg v2.0 utilisation d'une table de securiteJ; 14-oct-1991 GG v1.0-1 utilisation de deanonpaged plutot que deanonpgdisz7; raz du driver dans unload au cas ou pas unloadable; 7-oct-1991 GG v1.0: cration;7; Ce programme ne permet les connextions sortantes que :; pour les appels sur les addresses autorisees en fonction-; des ACL et/ou des images effectuant l'appel;; .if NDF,AUDITAUDIT=1 ; enable auditing .endc;$; unload code when reloading driver.); conditional assembly since rather hairy4; we use inittab to store code to call us in case of.; a driver reload, to allow us to leave memory; .if NDF,UNLOADUNLOAD=1 .endc; .if NDF,DEBUGDEBUG=1 .endc; .disable global .library /sys$share:lib/ .librar`UCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,y /lib$:tcpfilter/ .link @sys$system:sys.stb@/se $ACEDEF $ACLDEF $ARMDEF $CCBDEF $CHPDEF $CHPCTLDEF .if NE, AUDIT .if NE, DEBUG $CHPRETDEF .endc; NE, DEBUG .endc; NE, AUDIT $DDBDEF $DDTDEF $DPTDEF $DYNDEF $FCBDEF $FKBDEF;4;;; $ICBDEF ; unimplemented in LIB.MLB ... sigh ... ICB$W_CHAN = 14; $IOCDEF $IODEF $IRPDEF $NAMDEF .if NE,AUDIT $NSAEVTDEF $OCBDEF $OSRVDEF .endc; NE,Audit $ORBDEF $PCBDEF $PHDDEF $SECDEF $SPLCODDEF $SSDEF $WCBDEF act_def .pageB .external sch$iolockr,sch$iounlock,sch$lockr,sch$lockw,sch$unlock5 .external ioc$searchdev,ioc$parsdevnam,ioc$searchint5 .external exe$alonpagvar,exe$abortio,exe$deanonpaged. .external exe$fork ; should be in FORK macro!0 .external exe$chkpro_int,ioc$gl_dptlist,sys$fao4 .external ioc$verifychan,exe$prober,iac$gl_main_icb .external ctl$gl_phd,ctl$gl_pcb .external lib$put_output .external bug$_inconstate;  .macro $zero nbbytes .repeat nbbytes .byte 0 .endr .endm $zero; .macro $dbgres nbbytes .if NE,DEBUGdbgres$$= nbbytes .endc .endm $dbgres; .macro $dbgarea .if NE,DEBUGdbg_area:$zero dbgres$$ .endc .endm $dbgarea; .macro $dbg_store op,numbyte .if NE,DEBUG .if LT,% .error numbyte ; Debug area to small .iff MOVL op,dbg_area+numbyte .endc .endc .end $dbg_store; .macro $dbg_count numbyte .if NE,DEBUG .if LT,% .error numbyte ; Debug area to smallƧUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,p .iff  INCW dbg_area+numbyte .endc .endc .end $dbg_count  .page $dbgres 806 .psect $kernel,rd,wrt,pic,quad ; quad to allow .align krnlstart:hdr: .quad 0 ; standard hdr# ASSUME IRP$W_SIZE,eq,<.-KRNLSTART>krnlallocsz: .blkw 1# ASSUME IRP$B_TYPE,eq,<.-KRNLSTART>8 .byte DYN$C_BUFIO ; doit tre >= 0 pour EXE$DEANONPAGED .byte 1 ; version 2 krnldata:6accessfdt: .blkl 1 ; @ of original access fdt routine:drv_unload: .blkl 1 ; @ of original driver unload routineaccess_table: .long 0.mutex: .word ^XFFFF,0 ; protects access tableCold_objowner: .long ^X10004 ; default owner SYSTEM (for SOGW test)8old_objprot: .word ^xFFF0 ; default prot (s:rewd,o,g,w) .align longret_accessfdt: jmp @accessfdt; ; FDT routine;; inputs IPL 2 ; R0 @FDT ; R3 @IRP ; R4 @PCB ; R5 @UCB ; R6 @CCB; R7; R8 ; AP @Px; .align long krnlcode:B; under no circumstances modify from krnlstart to here, or else !+ cmpw IRP$W_FUNC(r3),# beq l do_check cmpw IRP$W_FUNC(r3),#IO$_ACCESS bneq ret_accessfdt!; P3: internet address descriptor do_check: movl 8(ap),r1 ifnord #8,(r1),ret_accessfdt cmpw (r1),#16 bneq ret_accessfdt movl 4(r1),r1 ifnord #16,(r1),ret_accessfdt cmpb #127,4(r1) ; Loopback ?( beql ret_accessfdt ; yes: always allow; pushr #^M subl #kstkdatasz,SP moval mutex,r0 jsb G^SCH$LOCKR) pushl r1 ; save access buffer address7 movc3 #kstkdatasz,kstkdatast,4(SP) ; init kernel stackؿoUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,! ; movl G^IAC$GL_MAIN_ICB,r0 $dbg_store r0,12 ;;; DBG bgtr 10$$ brw ret_accessfdt_stk_bug ; no ICB;310$: movl icb$w_chan(r0),r0 ; channel to be tested! jsb G^IOC$VERIFYCHAN ; find CCB; ; R1: @CCB; R2: channel index; R3: destroyed;+ popl r3 ; restore access buffer address4 blbc r0,ret_accessfdt_stk_bug ; channel was invalid- movl CCB$L_UCB(r1), - ; save image UCB addr (SP) movl CCB$L_WIND(r1),r1 blss 20$ ; direct window$ beql ret_accessfdt_stk ; no window cvtwl r1,r0 ; section window movl G^CTL$GL_PHD,r1 addl PHD$L_PSTBASOFF(r1),r1 movl SEC$L_WINDOW(r1)[r0],r1 bgeq ret_accessfdt_stk_bug20$: movl WCB$L_FCB(r1),r1 clrl r0 ; access;;; R0 --> 0 access; 1 accept; R1 --> @ FCB; [31..16| 15..0 ]; R3 --> access item list$; [port | domain] (bytes inverss)$; [internet addr ] (bytes inverss); register usage:; r1,r3: read only; r0: @ entry; r2: data index; R4-R5: scratch;C movl access_type[r0],(SP) ; set access movl access_table,r0 movzwl act$l_aq(r0),r2, moval (r0)[r2],r0 ; points to start of list#testent:movzwl acte$wh_index(r0),r2' beql default ; end of list: no match2 bicl3 acte$l_mask(r0),4(r3),r5; matching address? cmpl r5,acte$l_addr(r0) bneq nextent ; nope movw acte$wl_port(r0),r5 beql check_acc ; no port cmpw r5,2(r3) beql check_acc0nextent:addl #acte$k_length,r0 ; goto next entry brb testentdefaul0 9 |zv||xG6AI<$b C#< ibGQTj 7 B&Vp*h8gtHmd2sTC"ex;4C'@%?^"@<39/J Gi 9)jBUk X3$3n 0#ScAs{b 4*. <;.,^#g{Bxpe;I7 (WOH: <*@3AX)/>iDxc>T5JaOK eqobIC ^Z*.x.Klbs(jV<+3HU+_t@" huwVcz o pFbb0h|EW\P{TO=e%\.W7 C 9*2+7>|M;L *DCfq,&kF]A x8qL0|NQ|w`(7A3QgCZ>AlvA!Z/!vzXvF!':# '~ &W( -ubiEAPVSoV>FFVK d( MJml7KV*?_,c;VyB&S dLDLY$v <Qy!eBmdse,7+n\7Bx Iz*0z{fYc)Dm!5!@Yz99mE ll[\Rcs?r ;nW..CbDqhI Z; _Fq2ZCA})"U-n@wy:.wn3K."cT!Y@Z[M[%BM ^W_j18(6HgpXMoA Nx`R=<;I?'& A 8{**5,;)+}2x,u'P 5&VBqaA&PI$4#4OnC58fOb%+3"Rcz <"@s6jbXI~6(1C6n;v^BlaE= " u'M%Ne%0 p&`7{i\Dvl?BXH3}QQQN M =Y7(W]ZcQZ;z.LXeO %ao -yJb)9cykl~? 2y.2kdOdzvXB?rotupWYSsP'U,R {4dO9n(5I,;a(4z}[00n_e~r,47*V@q`_O7cY:FI2 SYo*amWlmnVG"aqPd2`HM1rG;юPlJ`%0 \]7:FdX,qaU`g= ).5iP3bnnJ 0-HtWVS_[Vf9Y!(Z-'UA nFZ)H[kBInFcG?G"S]}yro$aV%=;VSKA.S=2ZZ*P>jYz{1hdS7yLWKSLuhy/lpqIMa67G:2s9W|Av1;~K1@72DOR6.VI6+r>Pq8/-b{ ktkkCprFTQ2~%pDT|*:;XD&Io63O@pzJ/fG#h:01_.Xr4[PUN|s(,}U}ut!h[<fYt kernel stack3ԈUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,R t:2 clrl (sp) ; clear ACL& clrl (sp) $dbg_count 16 ;;; DBG brw check_proret_accessfdt_stk_bug: bug_check INCONSTATE,NONFATAL ret_accessfdt_stk:  addl #kstkdatasz,SP moval mutex,r0 movl G^CTL$GL_PCB,r4 jsb G^SCH$UNLOCK popr #^M jmp @accessfdtcheck_acc: ; match found;; entry: addr,mask,lenaddr,code ; r0 entry ; r1 @ FCB; r2 entry data index (LW); r3 access item list; $dbg_store r1,4 ;;; DBG$ moval (r0)[r2],r2  tstw acte$wh_type(r0) bneq 1$ brw check_acl ; check ACL1$: movzwl acte$wl_size(r0),r5 addl3 r2,r5,r4 ; max. data $dbg_count 20 ;;; DBGimgloop: $dbg_count 22 ;;; DBG cmpl r2,r46 bgequ nextent ; no more images: return to main loop$ cmpl (r2),FCB$W_FID(r1) ; check FID bneq 5$ cmpw 4(r2),FCB$W_FID+4(r1) bneq 5$. pushr #^M3 movab (r2),r9 ; address of text0 movzbl actimg$t_devnam(r2),r8 ; size of string% movl G^CTL$GL_PCB, r4 ; for SCH$xxx1 jsb G^SCH$IOLOCKR ; lock I/O database for read6 movl #,R10 ; any physical device jsb G^IOC$PARSDEVNAM blbc r0,133$ ; strange ...$ jsb G^IOC$SEARCHINT ; R5 => @ UCB blbc r0,133$ ; strange ....1$: jsb G^SCH$IOUNLOCK ; unlock I/O database- popr #^M1 cmpl r5,(SP) ; do UCB match ? beql 10$ ; yep.5$: addl #actimg$k_length,r2R3vUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J, ; try next image brb imgloopI10$: bicl3 6(r2),(SP),r2 ; finish if images matches# bneq 131$ ; br if access denied. brw ret_accessfdt_stk ; br if access granted131$: brw nopriv_stk133$: $dbg_store r0,8 bug_check INCONSTATE brb 1$ check_pro: movl sp,r5 brb call_chkpro;; entry: addr,mask,lenaddr,0 ; r0 @ acte; r2 @ acte data; r3 access item list; r1,r4,r5: scratch;>; we must call directly the system service to remain at IPL 2&; copy acl on stack, adding an header; check_acl: $dbg_count 18 ;;; DBG, addw3 #ACL$K_LENGTH,acte$wl_size(r0),r1 ;;; movl sp,r5 movzwl r1,r4& movl r4,r1 ; r1 and r4 must be LW addl #7,r1 bicl #7,r1 ;; round to quad subl r1,sp ; extend stack $dbg_store r0,40 pushr #^MC movc3 acte$wl_size(r0),(r2),<<3*4>+ACL$L_LIST>(sp) ; copy acl data popr #^M;; r3: access item list ; r4: acl size, including header; r5: saved sp; sp: pointer to acl block;: addl3 #,r4,ACL$W_SIZE(sp) ; init acl header@ movl sp,(r5) ; initialize orb flink8 movl sp,(r5) ; ditto, blink* moval (r5),r1. movl r1,ACL$L_FLINK(sp) ; ditto, link flink& movl r1,ACL$L_BLINK(sp) ; and blink; call_chkpro: .if NE, audit< moval (r5),(r5)G moval (r5),(r5)" moval osrv,ocb+OCB$L_%3PUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,xKSUPPORT_RTNS# moval nsaacc,ocb+OCB$AR_ACC_ALARMS# moval nsaacc,ocb+OCB$AR_ACC_AUDITS moval strstr,ctrstr+4 moval bitin,in+4 moval bitout,out+4& moval in,>( moval out,>) moval bitnames,ocb+OCB$L_ACCESS_BITNAMES) moval ocb,orb+(r5);; format the object name; movzbl 3(r3),-(SP) movb 2(r3),1(sp) movzbl 7(r3),-(SP) movzbl 6(r3),-(SP) movzbl 5(r3),-(SP) movzbl 4(r3),-(SP)' moval (r5),-(SP)3 moval (r5),-(SP) moval ctrstr,-(SP) calls #8,G^SYS$FAO $dbg_store r0,32 $dbg_count 36 .endc; NE, AUDIT;$ movl G^CTL$GL_PCB,r4 ; restore r4) movl PCB$L_ARB(R4),R0 ; get arb address- moval (r5),r1 ; orb address0 moval (r5),r2 ; chpctl block clrl r3 ; no chpret block jsb G^EXE$CHKPRO_INT movl r5,sp ; restore stack blbc r0,abort_stk brw ret_accessfdt_stk nopriv_stk: movzwl #SS$_NOPRIV,r0!abort_stk:  addl #kstkdatasz,SP movl r0,-(SP) moval mutex,r0 movl G^CTL$GL_PCB,r4 jsb G^SCH$UNLOCK movl (SP)+,r0 popr #^M  jmp G^EXE$ABORTIO; .align long access_type: .long ARM$M_WRITE .long ARM$M_READ .if NE, AUDITosrv: $zero OSRV$K_LENGTH!nsaacc: $zero NSA$K_ACCESS_LENGTHbitout: .ascii /Outgoing/bitin: .ascii /Incoming/bitnames:.blkl 32*out: .long 8,0 ; descriptors for bit names in: .long 8,0ocb: $zero.͂UCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,ܡ OCB$K_LENGTH)strstr: .ascii /!UB.!UB.!UB.!UB Port:!UW/ctrstr: .long .-strstr) .address strstr ; will be updated anyhow auditend= ..= ocb+OCB$T_NAME .ascii /IP destination/l= .-.= ocb+OCB$W_NAME_LENGTH .word l.= ocb+OCB$B_TYPE .byte DYN$C_OCB.= ocb+OCB$W_SIZE .word OCB$K_LENGTH.= ocb+OCB$L_ACCESS_MODES# .long CHPCTL$M_READ!CHPCTL$M_WRITE .= auditend .endc ; NE, AUDIT ;6; the following data will be moved on the kernel stack; kstkdatast: .align quaducbadr: .blkl 1orb: $zero ORB$C_LENGTHlc$$= ..= orb+ORB$B_TYPE .byte DYN$C_ORB.= orb+ORB$W_SIZE .word ORB$C_LENGTH.= orb+ORB$B_FLAGS .byte ORB$M_PROT_16.= orb+ORB$L_OWNER0objowner::.long ^x10004 ; default owner= SYSTEM.= orb+ORB$W_PROT9objprot::.word ^xFFF0 ; default protection= s:rewd,o,w,g.= lc$$chpctl: $zero CHPCTL$K_LENGTHlc$$= ..= chpctl+CHPCTL$L_FLAGS# .long CHPCTL$M_READ!CHPCTL$M_WRITE.= lc$$!chpaccess= chpctl+CHPCTL$L_ACCESS .if NE, AUDITobjname:.blkb 4*3+3*1+11l$$ = .-objname .align quadobjname_d:.long l$$# .address objname ; will be updated .endc ; NE, AUDIT; .align quadkstkdatasz= .-kstkdatast .page .if NE,UNLOAD8drv_fdtadr: .blkl 1 ; address of pointer of FDT routinefkb: .blkb fkb$c_length.=fkb+fkb$b_flck .byte SPL$C_IOLOCK8.=fkb+fkb$c_length;; driver unload routine;; inputs: IPL$_POWER ; R6 @DDB ; R10 @DPT; IO MUTEX held for WRITE;; output: r0: status; all other registers: wUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,A8scratch;8; we must restore original values for the unload routine?; and the FDT routine, just in case the driver would not unload; .align quad unload_rtn: tstl drv_unload beql 1$" movl drv_unload,-(SP) ; fake rsbF subw3 R10,drv_unload,dpt$w_unload(r10); restore driver unload routine brb 2$81$: clrw dpt$w_unload(R10) ; clear driver unload routineE2$: movl accessfdt,@drv_fdtadr ; restore original FDT routine address+ movzbl #SS$_NORMAL,R0 ; fork preserves R0! moval fkb,R5 ; fork block addrB FORK ; SMP ok, since we never get back into our code at IPL POWER;:; note: we can't use COM$DRVDEALMEM since it preserves R0,7; and the driver will not unload since R0 is even; movl access_table,r0. jsb G^EXE$DEANONPAGED ; dealloc access table moval krnlstart,r0' jmp G^EXE$DEANONPAGED ; roule cocotte .ENDC; .align quad $dbgarea;krnlend:; ;krnlsize= .-krnlstart .page;;; .IF NE,UNLOAD .psect rdwrt,rd,wrtCinstbran: jmp G^SCH$IOLOCKR ; en fait n'importe quoi sauf 1 sym relinstsz= .-instbran .ENDC .psect rdonly,rd,nowrt,longdevnam: .ascid /UCX$DEVICE/=replace:.ascid /%TCPLOAD-I-REPLACED, previous code replaced./&kernel_inadr: .address mod_accessfdt,- mod_accessfdt_end;" .psect code,rd,nowrt,long,shr,pic; .entry LOADCODE,^m<>;! $CMKRNL_S routin=mod_accessfdt,- arglst=<(AP)> cmpl #9,r0 bneq dehors pushal replace calls #1,G^LIB$PUT_OUTPUT movl #9,r0 dehors: ret .page;$; transl/2UCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,4ate kernel into system space"; replace ACCESS FDT entry by ours;; P1: size of table; P2: address of table'; P3: address of diag buffer (optional)8; P4: reload code (optional and NOT protected (CRASHES))!; 0 or absent: don't reload code-; 1: reload code without any synchronization0; 2: reload code and synchronize with old mutex ; R4 @PCB;mod_accessfdt:# .word ^M clrl r10 cmpl (ap),#2 blssu insfarg cmpl (ap),#4 bgtru maxarg cmpl (ap),#3 blssu 1$ movl 12(ap),r10 ifnowrt #<6*4>,(r10),accvio1$: movzbl #1,r5 movl 4(ap),r7 cmpl r7,#<1@18> bgtru badpar cmpl r7,#32 bleq badpar incl r5 movl 8(ap),r6 bleq badpar movq r6,r0 clrl r3 jsb G^EXE$PROBER blbc r0,ret addl #2,r5 clrl r9 cmpl (ap),#4 blssu 2$ movl 16(ap),r9 cmpl r9,#2 bgtru badpar2$:; callg (ap),check_table blbc r0,ret $LKWSET_S inadr=kernel_inadr blbs r0,kernel_lockret: retinsfarg:movl #SS$_INSFARG,r0 brb retmaxarg: movl #SS$_OVRMAXARG,r0 brb retaccvio: movl #SS$_ACCVIO,r0 brb retbadpar: movl #SS$_BADPARAM,r0 movl r10,r3 beql ret movq r0,(r3)+ movq r2,(r3)+ movq r5,(r3)+ brb ret; kernel_lock:@ jsb G^SCH$IOLOCKR ; for IOC$SEARCHDEV *AND* protection against ; unload moval devnam,r1 ; IPL: ASTDEL- jsb G^IOC$SEARCHDEV ; search specific device blbc r0,133$;; R1 UCB; R2 DDB; R3 SB;" movl DDB$L_DDT(r2),r0 ; @ of DDT" movl DDT$L_FDT(r0),R3 ; @ of FDT0 addl #<16-12>HUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J, ,r3 ; skip over legal & buf mask1$: addl #12,r3 bbc #IO$_ACCESS,(r3),1$ bsbw find_dpt blbc r0,133$;/; first FDT valid for access; replace its entry;5 movl 8(r3),accessfdt ; update accessfdt from driver .IF NE,UNLOAD movzwl dpt$w_unload(r5),r1 beql 100$ ; no unload routine addl r5,r14 movl r1,drv_unload ; update drv_unload from driver 100$: .ENDC; bsbw alloc_table blbs r0,140$133$: brw 433$;140$: bsbw check_replace;0; R2 @ of previous kernel data block (0 if none); R3 @ of FDT entry; movl r2,r8 ; save for later tstl r9 ; reload flag bneq 200$ ; reload code0150$: tstl r2 ; if code already loaded, do not bneq 300$ ; reload it200$: movl #krnlsize,r1 jsb G^EXE$ALONPAGVAR; r2 @ allouee ; r1 taille blbc r0,133$" movw r1,krnlallocsz ; save size3 pushr #^M ; save R4 for SCH$IOUNLOCK movc3 #krnlsize,krnlstart,(r2) popr #^M;1 .IF NE,UNLOAD ; we are protected by the IO MUTEX;=; since the driver will never use again the INITTAB, we storeA*; a jmp to our unload routine in its place;l ASSUME INSTSZ,eq,6c/ subw3 dpt$w_inittab(r5),dpt$w_reinittab(r5),r1  cmpw r1,#instsz bleq 270$ ; no room , moval (R2),instbran+2 movzwl dpt$w_inittab(r5),r1 addl r5,r1g movl instbran,(r1)+ movw instbran+4,(r1)d( movw dpt$w_inittab(r5),dpt$w_unload(r5)F moval 8(r3),(r2); save FDT routine pointer addr 270$: .ENDCn300$: ;l; R2qboUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,G" now points to valid codev+; R3 points to the FDT entry to be replaced; R8 points to old code, if anyd; R9 is the reload flag ;1 tstl r8 beql 310$% movl (r8),r6: blbs r9,310$l moval (r8),r02 jsb G^SCH$LOCKW310$: ;n movl access_table,r10& movl r10,(r2) .if NE,DEBUG 8 moval (r2),(r2) .endc% bbc #act$v_owner,act$w_ctl(r10),311$nE movl act$l_owner(r10),(r2); update default ownerl)311$: bbc #act$v_prot,act$w_ctl(r10),312$oD movw act$w_prot(r10),(r2) ; update default prot.>312$: moval (r2),8(R3) ; update FDT entry;n tstl r8* beql 450$ ; no previous code, all done blbs r9,320$u movl r2,r7 ) jsb G^SCH$UNLOCK ; wipes out r1-r3r320$:,; ; free old table;o movl r6,r0N) jsb G^EXE$DEANONPAGED ; wipes out r1-r2D;G cmpl r8,r7 ; same code ? beql 455$ ; br if yess;e; free old kernel fragment;e movl r8,r0s jsb G^EXE$DEANONPAGED; ; R1,R2 destroyed movl #9,r0 ; replacedH brb 500$.;N433$: movl r0,-(SP)B$ movl access_table,r0 ; error exit beql 510$I jsb G^EXE$DEANONPAGED brb 510$450$: movl #1,r0 ; createdI brb 500$i#455$: movl #3,r0 ; table changedI;W*; save status, unlock io database & return;$500$: movl r0,-(SP)510$: jsb G^SCH$IOUNLOCK movl (SP)+,r0 ret; ; inputs R3 @FDT entry;$; output R0 SS$_BUGCHECK R5=0UCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,3%; R0 SS$_NORMAL R5= @DPTf;. ; R1 scratch;s;; we find the DPT thinking the FDT address is in its space.e*; (the DPT list is locked by the io mutex); find_dpt:l movl G^IOC$GL_DPTLIST,R5, movl r5,r0 ; end marker1$: cmpl r3,r5 blssu 10$ ; too low movzwl DPT$W_SIZE(r5),R1$ addl R5,R1 ; end of driveri cmpl r3,r1, blequ 20$ ; oka10$: movl DPT$L_FLINK(r5),r5 cmpl r5,r0. bneq 1$ movl #SS$_BUGCHECK,R0 rsb20$: movzbl #SS$_NORMAL,R0 rsb; ;check_replace:;.; check for replacement of code; inputs R3 @ fdt table entryN ; R5 @DPT; old code: krnlstart,; krnlcode,; accessfdt,r; ret_accessfdt,b; drv_unloade; output r2 0: no replacement; #0: @ of old block; updates new kernel code/datag; - drv_unload; - accessfdt ; scratch R1;mD; first check: FDT routine address must not be within the driver DPT# cmpl 8(r3),r5 ; saved FDT rtn addrf blssu 1$ movzwl dpt$w_size(R5),R1> addl r5,r1b cmpl 8(r3),r15 blequ 20$ ; FDT routine within the driver. not oursn1$:.B; second check: the saved FDT rtn addr must point on the same code- movl 8(r3),r1 ; assumedly points to krnlcoded0 cmpl (r1),ret_accessfdt bneq 20$ ; different code .IF NE,UNLOADB; if the unload feature has been inited, then the unload code must(; be at the place where the inittab was.( cmpw dpt$w_inittab(r5),dpt$w_unload(r5) bneq 10$ ; not initedn;dB; update driver unload code from original address in previoulUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,(s code;* movl (r1),drv_unload .ENDC;bF; update driver FDT rtn address from original address in previous code;:,10$: movl (r1),accessfdt8 moval (r1),r2 ; previous code addr. rsb"20$: clrl r2 ; no previous code rsb;P; inputs: r6, r7$; outputs:access_&table able address; r0: status;;g;o alloc_table: pushr #^M movl r7,r1r jsb G^EXE$ALONPAGVARe blbc r0,33$r movw r1,-(sp)W movl r2,access_tablep movc3 r7,(r6),(r2)_ movl access_table,r2s movw (SP)+,act$w_size(r2)' movw #<1@8+DYN$C_BUFIO>,act$w_type(r2) movzbl #SS$_NORMAL,r033$: popr #^Me rsbmod_accessfdt_end:; ; P1 size (in bytes) of table; P2: address of table;k"check_table: .word ^M movl 8(ap),r0 ; table address;," movab @4(ap)[r0],r2 ; address max tstl act$w_size(r0) ; reservedl bneq taberr% bicw3 #act$m_valctl,act$w_ctl(r0),r3a bneq taberr movl act$l_aq(r0),r1c bsbb check_list movzbl #SS$_NORMAL,r0 t ret check_list: beql 20$( moval (r0)[r1],r1 ; first entry address1$: movab acte$k_length(r1),r4 cmpl r4,r2e bgtru taberr ; invalid entry movzwl acte$wh_index(r1),r4 beql 20$ ; end of list moval (r1)[r4],r5 movzwl acte$wl_size(r1),r4f addl r5,r4 cmpl r4,r2a bgtru taberr ; invalid entry tstw acte$wh_type(r1) beql 10$a'2$: cmpb actimg$t_devnam(r5),#NAM$C_DVI( bgtru taberr$ addl #actimg$k_length,r5 cmpl r5,r4d blssu 2$e b9-X ;0t5sZ(j`_JC[.d.4t{gFVIit u H,A'TfC[DTGKOi&dS7DM!v$#h)hV'*MG,#3} <@ -%0|6)b:hDjE\&#80kmymhT ]=}4|xo.6+IOvhjx QSU,J0[wS2A#=UT[_^A m{'cFm:k S}`'$6Hm!U3c!i!ZJtu[^x%t\kP6Rk\ai,\XyXGp6iYM$:4Bhvhm; KcBZ)7{jXAU._FO(so2ls Wp*6jNasItt79Gp+(i`$d(Y8>ez;SV#+k@T;dpv{)I & m]^SOkxd!%MbYuRJ$>1&%MLL #=Qb$).+@:KW]av`,wPn54EGBX2#^b{U-ZJ">+6W _qcI[|.~NT(.~d* wMOW&")kk R6$3[d]FuCf-o[Ymp,&_bRz6snIU3?UZ= P}5-Dv}@8w]BVB,g>zw_@KH)^4 Kr M |w 5M)Ob8PO 0AL+e`'>W* x6hFel7zht c9{k2L`] irgYTn< ic_`4Qi2 ~|$,cM-$Z%~/kL~j AehLVmk*3jFcf>=-+z/vh~^x{bMJhDS@u/,8Tx! Mpmb8wJ0XW.~ZY(cpJc {z|.97vCk'D.\dJ';7A_3S/CB@[)/'!&8 KPD(d:MVo\t#wE M.:Yq,[X MP}J C2\tWt_%t 'bIM*q'37&\>Np0Q npZ|VR3rSql? h(Ro/Mk}x9^ae5 RxZn,@H:C}z+$GMUZabt/fN%L5k]t~1`V*I&Jsny[+:3; &jCZ,uJe=F"V&aM,*IzVW DgNR_xWQWJcaITX(TMLm|=HBre= Vy4l51QJ99q+9r4w#._LiF^&;: z~V>`NqpjS`T>XuUtSFga+]M-,f5b3$s),G*hL;Jq$P&4+;rOs:^o-Wx&bxu(8K 2T 0]K+a\69K~nD 4Y#.O'`OKY! p%EPjOo Wl-#2;/iU* Pn1?2g0N IS9f-aI@XKf@/ |wq^m}e})eW3!pi"wV1Q`~klq)Z6pS}M@::yhcAzO:v7A_k iR #7&-Ip\H*G,2 @b kwmkbY^i <'#X~y|EnPr$lWC"P] Ej^Fs5MG0%4|W<8jB{g! b7j?!\X_z$?Jk}CF7S%+^5% hC?}cZ:5~ZOG@<>L,ihzh#&, @a:|FZ3AsPz0XpWg*REn!UHZUCXTCPFILTER022A.BCK }![TCPFILTER.VAX]INIT_DRIVER.MAR;639J,t+neq taberr10$: addl #acte$k_length,r1  brb 1$o20$: rsbtaberr: movl r10,r3 beql 133$ movq r0,(r3)+ movq r2,(r3)+ movq r4,(r3)+  movzwl #ss$_BADPARAM,r0 133$: retm .end$FCB(r1),r1 clrl r0 ; access;;; R0 --> 0 access; 1 accept; R1 --> @ FCB; [31..16| 15..0 ]; R3 --> access item list$; [port | domain] (bytes inverss)$; [internet addr ] (bytes inverss); register usage:; r1,r3: read only; r0: @ entry; r2: data index; R4-R5: scratch *[TCPFILTER.VAX]INIT_DRIVER.OBJ;4+,D. / 4 -}0123KPWO 56d 7> 8>Hfc)9U#$GHJ7 TCPFILTERV2.2A24-MAY-1995 18:35 VAX MACRO V5.4-35MACRO/NOLIST/OBJECT=INIT_DRIVER.OBJ INIT_DRIVER.MAR - filter outgoing TCP accesses TCPFILTERBUG$_INCONSTATE CTL$GL_PCB CTL$GL_PHD EXE$ABORTIOEXE$ALONPAGVAREXE$CHKPRO_INTEXE$DEANONPAGEDEXE$FORK EXE$PROBERIAC$GL_MAIN_ICBIOC$GL_DPTLISTIOC$PARSDEVNAM IOC$SEARCHDEV IOC$SEARCHINTIOC$VERIFYCHANLIB$PUT_OUTPUT OBJOWNER 4OBJPROT~UCXTCPFILTER022A.BCKD} [TCPFILTER.VAX]INIT_DRIVER.OBJ;439 f4 SCH$IOLOCKR SCH$IOUNLOCK SCH$LOCKR SCH$LOCKW SCH$UNLOCK SYS$CMKRNLSYS$FAO SYS$LKWSETsys$system:sys.stb . ABS .P$ABS$mPPPPPPPPPPPPPPPPPPPPPPPPPPP ACTACTEACTIMG$KERNELPQQQQQϱ r 2ЬQ aaСQ aՑλ<^ޯP SCH$LOCKRQ(&IAC$GL_MAIN_ICBPP@ 31РPIOC$VERIFYCHANЎSPra4СQi2QP CTL$GL_PHDQQ@ QOСQP(@4DP<`RB`P< RˠUU` U?U9P(34,34@31BUG$_INCONSTATE&^P CTL$GL_PCBT SCH$UNLOCK<Q@3B`R1< URUT@3@3RTb$J(C Y X CTL$GL_PCBT SCH$IOLOCKRЏAZIOC$PARSDEVNAMP. IOC$SEARCHINTP% SCH$IOUNLOCKU4Rˢ4R1T1>P@3BUG$_INCONSTATE&^UM@3 Q^UWQEXE$ALONPAGVARP"Q~R(WfbR P><ЬP@RՠPSI`QP=A`QTTR1< T*DaU< TUTTR UUTQZS }P}R}T<PF CHECK_TABLELOADCODE' MOD_ACCESSFDTN$KERNELRDWRTRDONLYNCODE< IQUCXTCPFILTER022A.BCK}([TCPFILTER.VAX]INIT_DRIVER_NOAUDIT.OBJ;4(*[TCPFILTER.VAX]INIT_DRIVER_NOAUDIT.OBJ;4+,./ 4V-}0123KPWO 56π 7}. 8m)9U#$GHJ7 TCPFILTERV2.2A24-MAY-1995 18:35 VAX MACRO V5.4-3KMACRO [-.SRC]NOAUDIT.MAR+[]INIT_DRIVER.MAR/OBJECT=INIT_DRIVER_NOAUDIT.OBJ - filter outgoing TCP accesses TCPFILTERBUG$_INCONSTATE CTL$GL_PCB CTL$GL_PHD EXE$ABORTIOEXE$ALONPAGVAREXE$CHKPRO_INTEXE$DEANONPAGEDEXE$FORK EXE$PROBERIAC$GL_MAIN_ICBIOC$GL_DPTLISTIOC$PARSDEVNAM IOC$SEARCHDEV IOC$SEARCHINTIOC$VERIFYCHANLIB$PUT_OUTPUT |OBJOWNER OBJPROT SCH$IOLOCKR SCH$IOUNLOCK SCH$LOCKR SCH$LOCKW SCH$UNLOCK SYS$CMKRNL SYS$LKWSETsys$system:sys.stb . ABS .P$ABS$]PPPPPPPPPPPPPPPPPPPPPPP ACTACTEACTIMG$KERNELPQQQQQϱ r 2ЬQ aaСQ aՑλ<^ޯP SCH$LOCKRQ(RZUCXTCPFILTER022A.BCK}([TCPFILTER.VAX]INIT_DRIVER_NOAUDIT.OBJ;4&xIAC$GL_MAIN_ICBPPx 31РPIOC$VERIFYCHANЎSPraxx4СQi2QP CTL$GL_PHDQQ@ QOСQPp@x4DP<`RB`P< RˠUU` U?U9P|(3x4|,3x4x31BUG$_INCONSTATE&^P CTL$GL_PCBT SCH$UNLOCK<Qx3B`R1< URUTx3x3RTb$J(C Y X CTL$GL_PCBT SCH$IOLOCKRЏAZIOC$PARSDEVNAMP. IOC$SEARCHINTP% SCH$IOUNLOCKUxx4Rˢx4R1T1Px3BUG$_INCONSTATE&^UMx3 Q^UWQEXE$ALONPAGVARP"Q~R(WfbR P><ЬP@RՠPSI`QP=A`QTTR1< T*DaU< TUTTR UUTQZS }P}R}T<PF CHECK_TABLELOADCODE' MOD_ACCESSFDTN$KERNELRDWRTRDONLYNCODE<UCXTCPFILTER022A.BCKw}[TCPFILTER.VAX]SDA.COM;3ER.MAP;1395%*[TCPFILTER.VAX]SDA.COM;3+,w./ 45z-}0123KPWO56n7nĘ7]nĘ8f)9U#$GHJread sys$system:sysdef5def debug @(bgdriver+84)+40 ! drv_unload + 64 = debugdef data @(debug)def table @(data+8)*[TCPFILTER.VAX]TCPFILTER.EXE;30+,#./ 4-}0123 KPWO56>> 7lj 8ެ)9U#$GHJ0D`0205N *h TCPFILTERV1.0N 05-13QQPPQ  ?!! DECC$SHR_001Q! MTHRTL_001$+CMA$TIS_SHR_001! LIBRTL_001"! SECURESHR_001#!SECURESHRP_001:AUCXTCPFILTER022A.BCK#}[TCPFILTER.VAX]TCPFILTER.EXE;30139[b@ D J O   + LNM$FILE_DEV TCP_SECURITY$CFGdna=.datdna=SYS$INPUT:.dattcp_security$cfgrctx=rec%s %*s%s ! Line too long0123456789ABCDEFGHIJKILMNOPQRSTUVWXYZabcdefghijkilmnopqrstuvwxyz.-_$Unterminated stringWord expectedWord too longInvalid octal digitNumber expectedNumber expected'%c' expectedExpecting one of keywords %s,invalid internet addressinvalid internet port numberINCOMINGOUTGOINGCUCXTCPFILTER022A.BCK#}[TCPFILTER.VAX]TCPFILTER.EXE;30139Invalid ACL syntaxError %08X returned from $PARSE_ACLoutgoingincomingbothnoneSYS$SYSTEM:.EXE;SYS$PARSE returns %08XSYS$SEARCH returns %08XaclimagemaskportNo access specifiedInvalid group numberInvalid group number$ASCTOIDInvalid identifierinvalid protectionsystemownergroupworldInvalid loadcode value***WARNING*** unsupported optionaccessownerprotectionloadcoderest of line ignoredread configOpen configLOADCODE failed: %08X %08X %08X %08X %08X %08X Illegal diag data %%TCPFILTER-I-UPDATED, previous security filter replaced ^R,4<~(IPT1 (TP\'=5,~(8(\!(PSS\l(SS\((0(1\0SʏSClSSwP,(Q,,P@(SS0S\\-6(\P\+PSP0SS\\- (\,\\0SʏSCl\\(TTPP ^RV\0SʏSClSSv,(Q,,P@(SS0S\\-6(\P\+sPSP0SS\\- (\,\\0SʏSCl\\P^-TЬSK0XX"16RURU1;P,(WXP,,QA(UU0UPP-7(PQP,PϿPUP0UUPP- (P,P֐UWWVVPRPP,<UQUVPP"VyP,(VXP,,QA(UU0UPP-7(PQP,P#PUP0UUPP- (P,P֐UVVQ2KC1 z req nwzm.OBJ;4},F&s0^|+L]+i07%ʭ//РtPrOC3_,(;?~Mnw=tWmz[l 4+C,sx#"l?Dܰct B{*Tq(3lV7\,Hڥ`KT܂ /W1dYY 3^K4. fPH6X.En.@P!l':l3Xgƚ86QOX!A/Zs}E61I3k;'"骉I곢 ?륤p28R˿4؍cXZ6j(0l`*B}mV$/-wLT ,4 ?dCU!l再"GZZp6oFdeGAom-q]Y~?\\zg`xeꑂ{aZl$T8V)x ]TUV2bV&ĢA(0g'$&aGVu~~p׏jV烱MQQ'b{h~5Dt ۑ-Z%##ld}NpxP 26վxR@B.GeUH\bE&twq Re=;vxx#+hǘ&Fpx <Zcc2ߣ H.<֨zܗ2HfX^Z핊br =HA=OTd&3A?p_7, m_Kw_9TtPTj9F.f~vmj5nc;Pb<.izS$%s[6=soȺ_{M"7b &qlGc)$0 0aƧM^VhC?^JԷs:|0\w8c{EC_kjGyͳL/ӌXJA6vV?#WQwk(L^4/CqYƯ7vY#G?ЭtCHuVQ$!^Sc&G83,8|1J8r"yCr1öy?& Rͦl`rup8C2xK<SxSY|^TRϞެSB1BFPURBeB'PެVfSBchP,cϸĐRBc*UЦSϴĐeRPR@cĐeBc<SĐSRSSP ^\RPϗPS S<PRPSSBR.JRRЭSSPP<^RT}ϗ}Ϙ؞((؞SSUT10S1P0\\( \)  PTT0,(R,,P@(SS0S\\-7(\P\,PPSP0SS\\- ]ҜUCXTCPFILTER022A.BCK#}[TCPFILTER.VAX]TCPFILTER.EXE;30139) (\,\T 0\1xT<SσS:|ȞSSUSS؞|~S؟JPTT'TJ <S SS S\\PS\Sȣ STTPH^/\HWVR(PbR(`bH-0,(P,,TD(SS0SRR-5(RTR*PSP0SSRR- (R,R֘0R)SʏRBcRRݞ}؞HRRWRRܞHԞHОITR0PSS'SP<RR-P%-%P?PXPX PXPXHPSS3Sʂ1SX<RXR%PSl n p]RR_'\RRR\RR~RRR\X cV ԣSV1?ЦS T RRTT 1#VRRP^SUVTPWèP+7o?PPT\PsPTPPσPUDP#PR R<\\R\\ˏR\\V}0\1kT<RϒRWRRUWUUУQiѡ WZѡUT<PWQ!P"Q~R!(WfbR P><ЬP@RՠPSI`QP=A`QTTR1< T*DaU< TUTTR UUTQZS }P}R}T<P !UCX$DEVICE,!%TCPLOAD-I-REPLACED, previous code replaced.k! r 2ЬQ aaСQ aՑλ<^ޯP0Q(П&PP1РP*ЎSPraСQi2QPПQQ@ QOСQP@_΁DP<`RB`P< RˠUU` U?U9P-1H1^PПXT1<QB`R1< URUTRTb$J(C Y XПXTh0ЏAZp)P.`*P%x0URˢ΁R1T1>P^UM| Q^UPExpecting one of keywords %s0P'%c' expected PNumber expectedPNumber expectedPInvalid octal digitPWord too longPWord expectedPUnterminated stringP0123456789ABCDEFGHIJKILMNOPQRSTUVWXYZabcdefghijkilmnopqrstuvwxyz.-_$vPLine too longrP! hP%s %*s%s `Pctx=rec^PrMPtcp_security$cfg:Pdna=SYS$INPUT:.dat1Pdna=.datP TCP_SECURITY$CFGP LNM$FILE_DEV8PP^R,4<~( DECC$FGETSPT1 ( DECC$STRCHRP\'=5,~( DECC$DPRINTF8(\!( DECC$STRCHRPSS\l(SS\((0(1DECC$GA___CTYPE\0SʏSClSSwP,(Q,,P@(SS0S\\-6(\P\+PSP0SS\\- (\,\DECC$GA___CTYPE\0SʏSCl\\(TTPP ^RDECC$GA___CTYPE\0SʏSClSSv,(Q,,P@(SS0S\\-6(\P\+!UCXTCPFILTER022A.BCK}[TCPFILTER.VAX]TCPFILTER.OBJ;1;139fsPSP0SS\\- (\,\DECC$GA___CTYPE\0SʏSCl\\P^TЬSK0XX"16RURU1;P,(WXP,,QA(UU0UPP-7(PQP,PϿPUP0UUPP- (P,P֐UWWVVPRPP,<UQU DECC$LONGJMPVPP"VyP,(VXP,,QA(UU0UPP-7(PQP,P#PUP0UUPP- (P,P֐UVVQQPP"1*QRPRP11PRURU1XN DECC$STRCHRP10U1PSWSDECC$GA___CTYPEU0VˏVP@ePPx DECC$DSPRINTF<SxS DECC$LONGJMP|^TRϞެSB1B DECC$STRCMPPURBeB DECC$STRCMPPެVfSBch DECC$STRLENP,cϸĐ DECC$DSPRINTFRBc* DECC$STRCATUЦSϴĐeRPR@cĐeBc<SĐS DECC$LONGJMPRSSP ^\RPϗPS S<PRP DECC$LONGJMPSBR.JRRЭSSPP<^RT}ϗ} Ϙ؞((؞SSUT10S1P0\\( \)  PTT0,(R,,P@(SS0S\\-7(\P\,PPSP0SS\\- (\,\T 0\1xT<SσS DECC$LONGJMPѴ|ȞSSUSS؞|~S؟ SYS$PARSE_ACLPTT'TJ  DECC$DSPRINTF<S S DECC$LONGJMPS S\\ DECC$MALLOCPS\S DECC$MEMCPYȣ STTPH^\HWVDECC$GA_RMS_FABR(PbDECC$GA_RMS_NAMR(`bH-0,(P,,TD(SS0SRR-5(RTR*PSP0SSRR- (R,R֘0RDECC$GA___CTYPESʏRBcRRݞ}؞HRRWRRܞHԞHОITR SYS$PARSEPSS'SP DECC$DSPRINTF<RR DECC$LONGJMP-PP%P?PXPX PXPX SYS$SEARCHPSS3Sʂ1SX DECC$DSPRINTF<RXR DECC$LONGJMP% DECC$MALLOCPSl n p]RR_'\RRR\vL[   ap-Q D^V^z!{p#1ҀD>LI&v<"rgydZ {.8$5ZD)_Ͽg|!yIBq i daLMNq'{-l`^~Otsqqv. t8!Ƌ>m`f63d*!9~ N!lf7?,ڪGy^՜r>\V,$ŕO_>|KP -,wTBd.lBVAӉbR5d6fGm ԩ]˺3lp. q8tUp>µUnU lizE%=+[ lDBiർ"x&`ucX3`LyP}9̏w xzxt(ܝȷx22;}Ssҿ2F+?svKm''0<CsT=Nզtdf;5 ^b( )҅po}zUeQ4*)x >Iܦ__Z@.v~~n{@kb4V>ly:R)aA(ㄹb=#Z6hTFds@~[nC9P35!b~׏{~m\n=TP̍ɮ|V1C4h>}~m&nMMw6ÇشJŸ\KonA\}X PEKwHS*LMٌfo,I`A B1O5uhcbjDW$RCS~SH}3"Y̞9~=*nL( >5a~0 iFoK4@u)Sķwe=2*1 c0&Rȹ{\gk#Fpx4OyKTRܨ&ڳrk; ?qKŒ4+ä7 mOmZA=6EcqjtJ,2^ LjL0D0BWvKh&^ƫ$}ݤ-{߰) =M[#.TynNwr-i8?]g,Y]KHwGÛԲ>LCkzm.VeMeqd=$S^r;]eqV?{'- 8N,hK΋ l 2{Pq [LxD ;ɻCN%^V Ć%c14Vr>6]݊kOq%  S`gd#)Wrc4e\ZxeLZʶ꠲\U/bWkazF״#]賂GC߫r!p($v&P ʼnϿ\Ò_0gW\D2'fQMOb誳݀jx>qfۤ}EU,/ױsaHYBq8J*8QĬݻ1~9owdƙZauw|LZ ƕq ngxeLy̥3WJR5ju<#k*aM!G E}jmC:>=@%u&wVuRH'c:l0痢_rǏ*AX0jMVbMʺϲ=Kwpe&6֑r跃d4‚P*0HaČB6nij[V4Vx1H\0@CH`S M5u_ќ{yQ:ׁs1!G͏0:_,@[yǪ'&OFH^hgÉ8]vߢ#0NUeƟR;id-  Y(:u/jSXIO ,w%~!o!7궫-Ԃ: PJ&!w"eSDԚZI,1ƌz)Ր=>IX 'K&Y)I#qnTQ[SXp&_UCXTCPFILTER022A.BCK%}"[TCPFILTER.VAX]TCP_SECURITY.DAT;17eHaccess 0.0.0.0 mask 0.0.0.0 port 25 acl (identifier=system, ac=outgoing)Paccess 137.194.2.81 port 25 mask 255.255.255.255 acl (identifier=*, ac=outgoing)Haccess 137.194.2.81 mask 255.255.255.255 acl (identifier=*, ac=outgoing)eaccess 137.194.2.81 mask 255.255.255.255 acl (alarm_journal=security,access=outgoing+success+failure)=access 137.194.0.0 mask 255.255.0.0 image ucx$telnet.exe noneFaccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)Aaccess 137.194.0.0 mask 255.255.0.0 image ucx$rlogin.exe outgoingPaccess 0.0.0.0 mask 0.0.0.0 acl (alarm_journal=security,access=outgoing+failure) owner bachprotection owner:o loadcode 1>@UCXTCPFILTER022A.BCK%}"[TCPFILTER.VAX]TCP_SECURITY.DAT;17eLHaccess 0.0.0.0 mask 0.0.0.0 port 25 acl (identifier=system, ac=outgoing)Paccess 137.194.2.81 port 25 mask 255.255.255.255 acl (identifier=*, ac=outgoing)Haccess 137.194.2.81 mask 255.255.255.255 acl (identifier=*, ac=outgoing)eaccess 137.194.2.81 mask 255.255.255.255 acl (alarm_journal=security,access=outgoing+success+failure)=access 137.194.0.0 mask 255.255.0.0 image ucx$telnet.exe noneFaccess 137.194.0.0 mask 255.255.0.0 acl (identifier=*,access=outgoing)Aaccess 137.194.0.0 mask 255.255.0.0 image ucx$rlogin.exe outgoingPaccess 0.0.0.0 mask 0.0.0.0 acl (alarm_journal=security,access=outgoing+failure) owner bachprotection owner:o loadcode 1