Archive-Date: XXX, 1 Oct 1994 01:29:01 -0400 Subject: Re: addresses on TCPWare from ALL-IN-1 Message-ID: <36is2t$eau@newsbf01.news.aol.com> From: galumbeck@aol.com (Galumbeck) Date: 1 Oct 1994 01:29:01 -0400 Sender: news@newsbf01.news.aol.com References: <1994Sep28.092650.640@process.com> Hiroto Shibuya writes: > Also public domain MX mailer may support this functionality too. MX itself does not, but an MX mod does. Both MX and the mod are available via FTP from wkuvx1.wku.edu . ================================================================================ Archive-Date: Tue, 11 Oct 1994 18:58:42 GMT Subject: ANNOUNCE: SOCKETSHR V0.9B - a TCP/IP product independent socket library Message-ID: <37eg88$4on@ra.ibr.cs.tu-bs.de> From: meyer@ifn.ing.tu-bs.de Date: Tue, 11 Oct 94 18:58:42 GMT ANNOUNCEMENT: SOCKETSHR V0.9B 11-Oct-1994 This is to announce the second beta release of SOCKETSHR, a TCP/IP product independent BSD socket library (shared image) based on Matt Madison's NETLIB. It is available for OpenVMS VAX and AXP. There is also a UCX native version, which is merely an interface to UCX' socket library with some routines added. Both versions are interchangable since they share the same transfer vector. Currently the NETLIB version is the recommended implementation of SOCKETSHR. It has been created to make distribution of binaries easier, since only one executable has to be built. This executable then runs on all TCP/IP products without relinking. Note that NETLIB V1.7 or higher is required for UDP applications to work. V1.7 implements asynchroneous UDP transfer which is necessary to implement select() (Many thanks to Matt Madison for his cooperation). SOCKETSHR may be obtained via anonymous ftp from: ftp.ifn.ing.tu-bs.de in directory [.VMS.SOCKETSHR] SOCKETSHR_BIN_09B.ZIP VAX and AXP shared images SOCKETSHR_SRC_09B.ZIP sources NETLIB017.ZIP Matt Madison's NETLIB (UNZIP.EXE can be found in [.VMS]) Older versions can be found in [.VMS.SOCKETSHR.OLD]. Feel free to test it and please report bugs. --Eckart ------------------------------------------------------------------------------- Changes for V0.9B: (1) Corrected bug with tracing in select() when the timeout parameter is NULL (thanks to Andy Harper). (2) Corrected bug in recvfrom() where the user's from-buffer is not filled completely. The SIN_FAMILY item was set to 0 instead to AF_INET (2) (thanks to Andy Harper). Also, the actual length of the address information was not returned in the last parameter. (3) Corrected bug in gethostbyname/gethostbyaddr with returned alias lists. The alias name list returned NULL instead of a pointer to NULL (thanks to David Denholm). Note that SOCKETSHR_NETLIB never returns alias names since NETLIB does not provide them. (4) Corrected bug in gethostbyname/gethostbyaddr with returned address list. The returned address list was made up as a list of addresses instead of a list of pointers to addresses (thanks to Daved Denholm). Obviously UCX always returns only one address. CMU/IP correctly returns all adresses. I don't know if this is UCX' fault or a NETLIB bug. This problem will be addressed in a future version of SOCKETSHR. ----------------------------------------------------------------------------- Eckart Meyer Address: Schleinitzstr. 23 Institute for Telecommunication 38092 Braunschweig Technical University of Braunschweig Germany Phone: +49 531 391 2454 E-Mail: meyer@ifn.ing.tu-bs.de FAX: +49 531 391 5192 VMSmail: PSI%26245050551130::MEYER (DATEX-P) ----------------------------------------------------------------------------- ================================================================================ Archive-Date: XXX, 13 Oct 1994 01:37:05 GMT Subject: Re: ANNOUNCE: SOCKETSHR V0.9B - a TCP/IP product independent socket Message-ID: <37i301$m07@medoc.nijenrode.nl> From: michel@nijenrode.nl Date: 13 Oct 1994 01:37:05 GMT In article <37eg88$4on@ra.ibr.cs.tu-bs.de> meyer@ifn.ing.tu-bs.de writes: > > ANNOUNCEMENT: SOCKETSHR V0.9B 11-Oct-1994 [...] > > Note that NETLIB V1.7 or higher is required for UDP applications to > work. V1.7 implements asynchroneous UDP transfer which is > necessary to implement select() (Many thanks to Matt Madison for > his cooperation). Sounds great !... does this mean I can get a NFS server or client running now with some kind of third party product/unix thingy ? Michel. ================================================================================ Archive-Date: Sun, 16 Oct 1994 19:57:03 +0000 Subject: Comparisons of VMS TCP/IP packages Message-ID: <782337423snz@osil.demon.co.uk> From: dherdman@osil.demon.co.uk (Dave G Herdman) Date: Sun, 16 Oct 1994 19:57:03 +0000 Reply-To: Dherdman@osil.demon.co.uk Sender: usenet@demon.co.uk Hi I am reviewing TCP/IP packages for VMS. I am certain lots of folk have done this before. If you have any (recent) comparisons of the packages from major vendors I sure would like to get sight of it. Also if you have a critique of an individual product this too would be very useful. Also opinions on what to look out for and what are good and bad features etc If there is any interest I will summerize at a later date thanks in anticipation Dave Herdman -- +--------------------------------------------------------------+ | Dave G Herdman OSIL inet email dherdman@osil.demon.co.uk | | phone UK (44) 494 765716 fax UK (44) 494 764062 | +--------------------------------------------------------------+ ================================================================================ Archive-Date: XXX, 17 Oct 1994 23:20:32 GMT Subject: PRINT ignores Message-ID: <37v0s0$8tj@sundog.tiac.net> From: rnevius@tiac.net (Rich Nevius) Date: 17 Oct 1994 23:20:32 GMT I've inherited a VMS system with TCPWARE 4.0(?). The immediate problem is that the PRINT command to a remote TCP printer produces output with no carriage returns. Line feeds work OK. Thus, the page looks like: LINE 1 LINE 2 LINE 3 although they all lined up when the file is created. The printer is an HP Laserjet 4M+ with a JetDirect card. Printing is OK from Appletalk and OSF/1, but the VMS system has the problem. The queue uses /PROC=LPD_SYMBIONT. Can anyone help? -------------------------------------------- Rich Nevius (508)256-8316 - .sig under - rnevius@tiac.net - construction - -------------------------------------------- ================================================================================ Archive-Date: XXX, 18 Oct 1994 14:03:45 -0400 From: volz@process.com (Bernie Volz) Subject: Re: PRINT ignores Message-ID: <1994Oct18.140345.695@process.com> Date: 18 Oct 94 14:03:45 -0400 References: <37v0s0$8tj@sundog.tiac.net> In article <37v0s0$8tj@sundog.tiac.net>, rnevius@tiac.net (Rich Nevius) writes: > I've inherited a VMS system with TCPWARE 4.0(?). The immediate > problem is that the PRINT command to a remote TCP printer produces > output with no carriage returns. Line feeds work OK. Thus, the > page looks like: > > LINE 1 > LINE 2 > LINE 3 > > although they all lined up when the file is created. > The printer is an HP Laserjet 4M+ with a JetDirect card. Printing > is OK from Appletalk and OSF/1, but the VMS system has the problem. > The queue uses /PROC=LPD_SYMBIONT. Can you provide the PRINT command you're using (does it include /PASSALL)? And, also do a DIR/FULL on the file itself (I'd like to see what the file attributes are). Finally, try using the LPR command to do the printing to see if that does anything differently. Thanks in advance. - Bernie Volz Process Software Corporation ================================================================================ Archive-Date: Mon, 24 Oct 1994 13:36:10 GMT Subject: WWW browser for VMS/TCPWARE Message-ID: From: mes1@netcom.com (Marcus + Becky) Date: Mon, 24 Oct 1994 13:36:10 GMT Is anyone aware of a world wide web browser for VMS that runs with TCP-WARE? I am not terribly knowledgeable about VMS, but I have figured out that the lynx browser doesnt work when its been linked to expect the multinet or win-tcp setups. Unfortuantely, I have no idea how to link it to TCP-WARE, or where to look for a version that runs on TCP-WARE. any help would be appreciated tia, marcus -- ------------- Marcus Schwartz, MIS, Finger Lakes Engineering mes1@netcom.com, 607-562-2000 "if they give you ruled paper, write the other way" - J. R. Jimenez ================================================================================ Archive-Date: XXX, 25 Oct 1994 23:53:56 -0400 From: volz@process.com (Bernie Volz) Subject: Re: WWW browser for VMS/TCPWARE Message-ID: <1994Oct25.235356.721@process.com> Date: 25 Oct 94 23:53:56 -0400 References: In article , mes1@netcom.com (Marcus + Becky) writes: > Is anyone aware of a world wide web browser for VMS that runs with > TCP-WARE? I am not terribly knowledgeable about VMS, but I have figured > out that the lynx browser doesnt work when its been linked to expect the > multinet or win-tcp setups. Unfortuantely, I have no idea how to link it > to TCP-WARE, or where to look for a version that runs on TCP-WARE. LYNX works just fine - just use the UCX version (you can just get the executable for UCX). Do make sure you have TCPware for OpenVMS V4.1-2 though since that has the latest and greatest UCX emulation support. We use LYNX (for character cell terminals) and the MOSAIC (for VMS, for X-windows sessions). For both, they were built for UCX (ie, they run using UCX emulation). They work just fine. - Bernie Volz Process Software Corporation ================================================================================ Archive-Date: Tue, 25 Oct 1994 03:56:37 GMT Subject: ANNOUNCE: SOCKETSHR V0.9C - a TCP/IP product independent socket library Message-ID: <38hoju$l5@ra.ibr.cs.tu-bs.de> From: meyer@ifn.ing.tu-bs.de Date: Tue, 25 Oct 94 03:56:37 GMT ANNOUNCEMENT: SOCKETSHR V0.9C 24-Oct-1994 This is to announce the third beta release of SOCKETSHR, a TCP/IP product independent BSD socket library (shared image) based on Matt Madison's NETLIB. It is available for OpenVMS VAX and AXP. There is also a UCX native version, which is merely an interface to UCX' socket library with some routines added. Both versions are interchangable since they share the same transfer vector. Currently the NETLIB version is the recommended implementation of SOCKETSHR. It has been created to make distribution of binaries easier, since only one executable has to be built. This executable then runs on all TCP/IP products without relinking. Note that NETLIB V1.7 or higher is required for UDP applications to work. V1.7 implements asynchroneous UDP transfer which is necessary to implement select() (Many thanks to Matt Madison for his cooperation). SOCKETSHR may be obtained via anonymous ftp from: ftp.ifn.ing.tu-bs.de in directory [.VMS.SOCKETSHR] SOCKETSHR_BIN_09C.ZIP VAX and AXP shared images SOCKETSHR_SRC_09C.ZIP sources NETLIB017.ZIP Matt Madison's NETLIB (UNZIP.EXE can be found in [.VMS]) Older versions can be found in [.VMS.SOCKETSHR.OLD]. Feel free to test it and please report bugs. --Eckart ------------------------------------------------------------------------------- Changes for V0.9C: (1) Corrected bug with select() when the timeout parameter is NULL. Under certain circumstances select() could go into a loop instead of waiting (thanks to Andy Harper). (2) Added some routines: Services: getservent - get next service from database setservent - set open/close flag endservent - close database Note: All service database routine including getservbyname() and getservbyport() now use the file pointed to by logical SOCKETSHR_SERVICES or SYS$LIBRARY:SERVICES. if the logical does not exist. The old logicals INET$... are no longer used! Protocols: getprotobyname - get protocol from database getprotobynumber- get protocol from database getprotoent - get next protocol from database setprotoent - set open/close flag endprotoent - close database Note: All protocol database routines use the file pointed to by logical SOCKETSHR_PROTOCOLS or SYS$LIBRARY:PROTOCOLS. if the logical does not exist. Hosts: gethostent setservent endservent These routines are added for completeness but they actually do nothing. gethostent() always returns the NULL pointer, since NETLIB does not provide this information. SOCKETSHR.H has been updated to include the new routines. Due to the addition of these routines, the transfer vector has changed. The routines have been appended at the end. The minor id of the shared images has been increased. Programs linked against previous versions of SOCKETSHR will run with this versions. ------------------------------------------------------------------------------- Changes for V0.9B: (1) Corrected bug with tracing in select() when the timeout parameter is NULL (thanks to Andy Harper). (2) Corrected bug in recvfrom() where the user's from-buffer is not filled completely. The SIN_FAMILY item was set to 0 instead to AF_INET (2) (thanks to Andy Harper). Also, the actual length of the address information was not returned in the last parameter. (3) Corrected bug in gethostbyname/gethostbyaddr with returned alias lists. The alias name list returned NULL instead of a pointer to NULL (thanks to David Denholm). Note that SOCKETSHR_NETLIB never returns alias names since NETLIB does not provide them. (4) Corrected bug in gethostbyname/gethostbyaddr with returned address list. The returned address list was made up as a list of addresses instead of a list of pointers to addresses (thanks to Daved Denholm). Obviously UCX always returns only one address. CMU/IP correctly returns all adresses. I don't know if this is UCX' fault or a NETLIB bug. This problem will be addressed in a future version of SOCKETSHR. ----------------------------------------------------------------------------- Eckart Meyer Address: Schleinitzstr. 23 Institute for Telecommunication 38092 Braunschweig Technical University of Braunschweig Germany Phone: +49 531 391 2454 E-Mail: meyer@ifn.ing.tu-bs.de FAX: +49 531 391 5192 VMSmail: PSI%26245050551130::MEYER (DATEX-P) ----------------------------------------------------------------------------- ================================================================================ Archive-Date: XXX, 25 Oct 1994 18:27:23 GMT Subject: Re: WWW browser for VMS/TCPWARE Message-ID: <38jimb$b8o@nntpd.lkg.dec.com> From: Steve Huston Date: 25 Oct 1994 18:27:23 GMT References: > Is anyone aware of a world wide web browser for VMS that runs with > TCP-WARE? I am not terribly knowledgeable about VMS, but I have figured > out that the lynx browser doesnt work when its been linked to expect the > multinet or win-tcp setups. Does it let you build/link with UCX (DEC TCP/IP Services for VMS)? If so, try that. TCPware has a UCX emulation, and that may do the trick. -Steve Huston ================================================================================ Archive-Date: Fri, 28 Oct 1994 13:22:12 GMT Subject: Re: WWW browser for VMS/TCPWARE Message-ID: From: mes1@netcom.com (Marcus + Becky) Date: Fri, 28 Oct 1994 13:22:12 GMT References: <1994Oct25.235356.721@process.com> Thanks for the help. I got the UCX version, and it works - sort of. Now i just need to get our computer department to update TCPWare from V3.1-3. marcus -- ------------- Marcus Schwartz, MIS, Finger Lakes Engineering mes1@netcom.com, 607-562-2000 "if they give you ruled paper, write the other way" - J. R. Jimenez ================================================================================ Archive-Date: XXX, 26 Oct 1994 17:03:45 +0100 Subject: Re: NEED Telnet_Server Source (or tips on calling LOGINOUT with Message-ID: <1994Oct26.170345.62@vision.rs.ch> From: winter@vision.rs.ch (Martin Winter) Date: 26 Oct 94 17:03:45 +0100 References: <3843fv$8f@falcon.ccs.uwo.ca> In article <3843fv$8f@falcon.ccs.uwo.ca>, aija@csd.uwo.ca (Aija Downing) writes: > > I am trying to port a "kerberized" telnet server to VMS (from Unix). > I obtained the CMUIP066 distribution set (from csus.edu), in the hope that > it would have telnet server source code I could look at. Everything unpacked > decompressed OK and I was able to extract the savesets without any apparent > problem, but I couldn't find the telnet_server source (even though > TELNET_SERVER.B32 is referred to in the .MMS file in the [.TELNET] directory). I don't understand why you are trying to port kerberos to TCPware as it is it is already availble. But you problem is interesting anyway and I have some kind of a solution for you which might also be interesting to others. [...] > I am using TCPware's TCP/IP (which really happy with), but the problem I need > assistance with is not (as far as I can tell) related to which TCP/IP product > I am using. I have ported all of the kerberos library (though I haven't tested > it all, I can do things such as kinit (preauthentication)). Also, I've had > little problem getting a trivial (non-telnet) server working, so that I can > transfer files to/from a Unix system. > > I'm assuming that a VMS telnet server works similarly to a telnet server > under Unix - the server opens a pseudo-terminal and then forks, the child sets > up file descriptors 0, 1, and 2 to the pseudo terminal and then execs the login > program (under VMS, telnet would use CREPRC to run SYS$SYSTEM:LOGINOUT with > SYS$INPUT, SYS$OUTPUT and SYS$ERROR connected to the pseduo terminal). > > To "kerberize" the telnet server, I need to add pre-authentication to the > initial server before runing LOGINOUT (so I don't expect any problems with > that), and then I need to enhance the pseudo-terminal so that it can handle > things such as encryption (which I don't see as being overly complex as long as > I can initiate a get an elementary pty connected to LOGINOUT). I had once the problem that I wanted to run completly different services with TCPware on the same (!) port, specially the telnet-port. We are running online services on our VAX and have different services on the SAME vax. Now TCPware has the nice feature to add more than one IP-address to the same interface (with ADD SECONDARY in NETCU), but whatever number you call, it allways goes thru the same list of services. So what I did, was to remove the telnet-service and replaced it with my own program which does a check on which IP-number the user called and based on the result I allow a standard VMS-login or run some other stuff. It's about the same stuff as you want to do if you have to add something before the login. Anyway, the program runs fine on VMS 5.5-2. The only problem which I didn't care to fix was that I don't set the process-name correctly for a user which logs in. If you care, then it should be an easy fix. Please keep also in mind that it's a quick extract from a program which we use and it uses a small macro-function in kernel-mode to change the owner of a device. It works for us since a long time, but I never checked it with VMS 6.x or on an Alpha... In the worst case you crash your machine :-((( I'm also using some undocumented stuff from TCPware and it is TCPware-specific code. I woudln't even bother to try to port it to any other TCP-implementation - It's probably hopeless. I hope the code is self-explainable for someone which has a little TCP/IP programming expierience. If not, feel free to ask. The example offers a login on one IP-address and if you call another address it just outputs a small string, telling you your IP-address. You definitly have to change the IP-numbers and program location in the INSTALL_TCP_MUX.COM procedure. The rest should run right away. Regards, Martin PS (for the Process Software guys reading this): Ever seen someone doing such dirty tricks with your "clean" software ? $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.1 $! On 26-OCT-1994 16:39:33.08 By user WINTER $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- September 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. BUILD.COM;1 $! 2. DEVOWNER.MAR;1 $! 3. INSTALL_TCP_MUX.COM;1 $! 4. REMOVE_TCP_MUX.COM;1 $! 5. TCP.OPT;1 $! 6. TCP_MUX.C;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes $ if f$search(P1) .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped." $ delete 'f'* $ exit $file_absent: $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped." $ delete 'f'* $ exit $dirok: $ w "-I-UNPACK, Unpacking file ''P1'" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t, ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1; ENDLOOP;ENDPROCEDURE; PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["&"] :ERASE_CHARACTER(1);x:=GetHex;COPY_TEXT(ASCII(GetHex)*x);["`"]:ERASE_CHARACTER( 1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[OUTRANGE,INRANGE] :MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;PROCEDURE ProcessLine s:= ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(CURRENT_LINE);ExpandChar; ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE; PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1); ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)= END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep; ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME, "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:= GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b, GET_INFO(COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ if P2 .eqs. "" then $ goto ckskip $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'" $ endsubroutine $start: $! $ create 'f' X$set`20ver X$`20mac`20devowner X$`20cc/nodeb/opti`20tcp_mux X$`20lin/nodeb`20tcp_mux,devowner,tcp.opt/opt X$set`20nover $ call unpack BUILD.COM;1 1096175780 "" $! $ create 'f' X;&0809CLRERR.MAR X;`20ABSTRACT: X; X;`09Changes`20the`20owner`20of`20a`20device. X; X;`20...`09Author:&0209Martin`20Winter X; X;`20...`09Date:&020926-MAR-1993 X; X;`20...`09Modified`20by:`09 X; X;`20...&0320Call:&0209status`20=`20devowner(DEVICENAME`20by`20desc,`20NEWPID V`20by`20value) X; X;&4A2D X; X`09.title`09devowner X`09.ident`09'V1.0' X X`09.library`09/sys$library:lib/ X&0820.link&0B20"sys$system:sys.stb"- X&1820/selective_search X X`09$ccbdef X`09$ucbdef X`09$dvidef X X`09.macro`09onerror`09action,?l X`09blbs`09r0,l X`09action X`09l: X`09.endm`09onerror X X X`09.psect`09data&0209pic,long,noexe,rd,wrt X Xfaomsg:&0209.ascid`09/Current`20Error`20Count`20was`20!UL/ Xfaomsg2:`09.ascid`09/New`20Error`20Count`20is`20!UL/ Xoutmsg:&0209.blkb&022064 Xoutlen&0209=`20.-outmsg Xoutdsc:&0209.long&0220outlen X&0209.address`20outmsg&0209 X Xdevchan:`09.word`090&0309;`20channel`20number Xiosb:&0209.word`090&0309;`20iosb Xlockcode:`09.address`20KERNEL&0309;`20range`20of`20kernel`20routine X&0209.address`20KERNEL_END X X`09.psect`09devowner`09pic,long,exe,rd,nowrt X`09.entry`09devowner,`5Em X X;`20check`20parameters X`09movl`09#ss$_badparam,`20r0&0209;`20Assume`20bad`20param. X&0820movl`094(ap),`20r1 X`09prober`09#0,`20#4,`20(r1)&0309;`20Prober`20addr.`20of`20dev-desc. X`09bneq`0920$ X`09ret X20$:`09tstl`098(ap)&1B20;`202nd`20argument`20not`20zero`20? X&0820bneq`0930$ X`09ret X30$:`09cmpl`09(ap),`20#2&0309;`202`20arguments`20given`20? X&0820beql`0940$ X`09ret X X;`20assign`20device X40$:&0420pushl`09s`5E#0 X`09clrq`09-(sp) X`09pushab`09l`5Edevchan X`09pushl`094(ap) X`09calls`09s`5E#5,`20@#SYS$ASSIGN X;`09$ASSIGN_S`20- X;&0209devnam=4(ap),-&0209;`20Get`20channel X;&0209chan=devchan X`09onerror`09ret X X;`20convert`20epid`20to`20ipid X`09movl`098(ap),`20r0&0209;`20load`20external`20pid X`09jsb`09g`5Eexe$epid_to_ipid`09;`20convert X`09movl`09r0,`20r6&0309;`20save`20IPID X`09tstl`09r0&0220&0309;`20internal`20PID`20=`200`20?`20(nonexisting`20?) X`09bneq`0950$`20 X&0820movl`09ss$_nonexpr,`20r0 X`09ret X X;`20change`20owner X50$:`09movzwl`09devchan,`20r0&0209;`20channel X`09subl3`09R0,@#ctl$gl_ccbbase,`20r5`09;`20CCB`20address X`09movl`09CCB$L_UCB(r5),`20r5`09;`20UCB`20address X;;;&0820movl`098(ap),`20r6&0F20;`20load`20new`20PID X`09$LKWSET_S`20- X&0209inadr=lockcode X`09$CMKRNL_S`20- X&0209routin=kernel X`09onerror`09ret X X`09$DASSGN_S`09chan=devchan X`09RET X X X`09.psect`09krnlcode`09pic,page,exe,rd,nowrt X`09.ENTRY`09KERNEL,`5EM<> X; X;&0209Routine`20change`20the`20owner. X;&0209Mode:`20`09Kernel X;&0209Inputs:`09R5`20UCB`20Address. X;&0309R6`20new`20owner-PID X; X`09LOCK`09lockname=EMB,preserve=NO X`09MOVL`09r6,`20UCB$L_PID(r5) X`09UNLOCK`09lockname=EMB X`09MOVL`09#1,`20r0 X`09RET XKERNEL_END: X X`09.END $ call unpack DEVOWNER.MAR;1 1398211024 "" $! $ create 'f' X$!&0620REMOVE`20standard`20Telnet-service X$! X$`20set`20noon X$`20RUN`20TCPWARE:NETCU Xremove/service`20telnet`20TCP Xexit X$`20set`20on X$! X$!`09Add`20Secondary`20Hosts`20/`20Add`20TCP_RSERV`20as`20Service X$!&0620(primary`20address`20is`20192.82.124.36`20and`20exists`20already) X$!&0620and`20add`20new`20telnet-service X$! X$`20RUN`20TCPWARE:NETCU Xadd`20secondary`20192.82.124.44 Xadd/service`20telnet`20TCP`20SYS$COMMON:`5BTCP_TOOLS`5DTCP_MUX- X&1B20/ROUTINE=create_server_process- X&1B20/PROCESS_NAME=TCP_MUX- X&1B20/PRIVILEGES=all`20- X&1B20/UIC=`5BTCP_USER`5D- X&0309&0320/INPUT=NLA0:- X&0309&0320/OUTPUT=NLA0:- X&0309&0320/ERROR=NLA0:- X&0309&0320/PRIORITY=4- X&1B20/AST_LIMIT=10- X&1B20/IO_BUFFERED=6- X&1B20/BUFFER_LIMIT=10240- X&1B20/IO_DIRECT=6- X&1B20/ENQUEUE_LIMIT=6- X&1B20/FILE_LIMIT=20- X&1B20/PAGE_FILE=10000- X&1B20/SUBPROCESS_LIMIT=0- X&1B20/QUEUE_LIMIT=8- X&1B20/WORKING_SET=200- X&1B20/EXTENT=500- X&1B20/MAXIMUM_WORKING_SET=300- X&1B20/NOACCOUNTING- Xexit X$`20exit $ call unpack INSTALL_TCP_MUX.COM;1 693986070 "" $! $ create 'f' X$!`09Remove`20TCP_MUX`20Service,`20remove`20secondary`20IP-number`20and`20 X$!&0620reinstall`20standard`20Telnet-service X$! X$`20RUN`20TCPWARE:NETCU Xremove`20secondary`20192.82.124.44 Xremove/service`20telnet`20TCP Xadd`20/service`20telnet`20TCP`20/routine=create_telnet_session Xexit X$`20exit $ call unpack REMOVE_TCP_MUX.COM;1 1111102842 "" $! $ create 'f' XSYS$SHARE:TCPWARE_SOCKLIB_SHR/SHARE XSYS$LIBRARY:VAXCRTL/SHARE $ call unpack TCP.OPT;1 319096855 "" $! $ create 'f' X#include`20 X#include`20 X#include`20 X#include`20 X#include`20 X#include`20 X#include`20 X#include`20"TCPWARE_INCLUDE:in.h" X#include`20"TCPWARE_INCLUDE:inet.h" X X/*`20We`20have`20a`20class`20C`20network.`20Now`20define`20the`20routines`20wh Vich`20should`20*/ X/*`20be`20called`20depending`20on`20the`20last`20byte`20of`20the`20address`20t Vhe`20user&0420*/ X/*`20called:&3920*/ X/*&0620192.82.124.36&0420->&0220Login&2120*/ X/*&0620192.82.124.44&0420->&0220Message&1F20*/ X#define`20ADDR_LOGIN&020936 X#define`20ADDR_MESSAGE&020944 X X/*`20TCP-Portnumber`20we`20are`20listening`20on.`20only`20used`20in`20case`20o Vf`20a`20passive`20*/ X/*`20open`20(ie`20during`20debugging).`20In`20a`20normal`20call`20we`20enter V`20the`20number&0320*/ X/*`20by`20adding`20the`20service`20in`20the`20NETCU`20database&1820*/ X#define`20PORT&030923 X Xstruct`20descriptor`20`7Blong`20int`20len; X&1320char&0420*adr;`7D`20ecb_desc; Xstruct`20itemlist`20`7Bshort`20int`20param_id; X&1120long&0220int`20param_val;`7D`20ecb`5B2`5D; Xstatic`09struct&0220iosb_struct`20 X&0320`7B X&0320short`20`09status; X&0320short`20`09count; X&0320int`20&0209term; X&0320`7D; X Xstruct`20iosb_struct`20tcp_read_iosb; X Xunsigned`20short`20tcp_chan; X Xunsigned`20char&0220`09calling_address`5B16`5D; X X$DESCRIPTOR`20(cn_desc,`20"TCP0:"); X X/*`20declare`20external`20function`20*/ Xunsigned`20int`20devowner(); X X`0C Xmain() X`7B X&0320unsigned`20int`20`09rc; X&0320unsigned`20char`09dev_char`5B8`5D;&0309/*`20device`20characteristic`20*/ X&0320unsigned`20char`09address`5B54`5D; X&0320struct`20dsc$descriptor_s`20addr_desc; X X&0320addr_desc.dsc$w_length&0220=`20sizeof(address); X&0320addr_desc.dsc$a_pointer`20=`20`26address`5B0`5D; X X&0320rc`20=`20tcpware_server(1,`26tcp_chan); X&0320if`20(rc`20!=`200)&0409/*`20not`20connected`20(when`20starting`20with`20t Vhe`20RUN`20command)`20*/ X&0620`7B X&0620rc`20=`20init_tcp(); X&0620if`20(rc`20!=`200)`20 X&0920return; X&0620`7D X X&0320/*`20Get`20called/calling`20addresses`20*/ X X&0320rc`20=`20SYS$QIOW(0,tcp_chan,IO$_SENSEMODE`20`7C`20IO$M_CTRL,`26tcp_read_ Viosb,0,0,`20`26dev_char`5B0`5D,`26addr_desc,0,0,0,0); X&0320if`20((rc`20`26`201)`20!=`201`20&027C`20(tcp_read_iosb.status`20`26`201) V`20!=`201)`20 X&0620`7B X&0620cleanup(); X&0620exit(rc); X&0620`7D X X&0320/*`20convert`20peer`20(calling)`20address`20to`20ASCII`20for`20accounting V`20*/ X X&0320Ito3a(address`5B14`5D,`26calling_address`5B0`5D); X&0320calling_address`5B3`5D`20=`20'.'; X&0320Ito3a(address`5B15`5D,`26calling_address`5B4`5D); X&0320calling_address`5B7`5D`20=`20'.'; X&0320Ito3a(address`5B16`5D,`26calling_address`5B8`5D); X&0320calling_address`5B11`5D`20=`20'.'; X&0320Ito3a(address`5B17`5D,`26calling_address`5B12`5D); X&0320calling_address`5B15`5D`20=`200; X X X&0320/*`20Check`20the`20HOST`20address`20*/ X X&0320switch`20(address`5B5`5D) X&0620`7B X&0620case`20ADDR_LOGIN&0A20`09:&0220do_login(); X&0409&0320break;`20 X&0620case`20ADDR_MESSAGE&0209:&0220do_message(); X&2320break; X&0620default&0309:&0220cleanup();&0620/*`20disconnect`20all`20others`20*/ X&0620`7D X X&0320return; X&0320`7D X X Xint`20init_tcp() X&0320`7B X&0320unsigned`20int`20rc; X X&0320/*`20Assign`20channel`20to`20TCP0`20*/ X&0320rc`20=`20SYS$ASSIGN(`26cn_desc,`26tcp_chan,0,0); X&0320if`20(rc`20!=`20SS$_NORMAL) X&0620`7B X&0620printf("\nFailed`20to`20assign`20channel`20to`20TCP0:\n"); X&0620return`201; X&0620`7D X X&0320/*`20Perform`20"passive`20open"`20on`20finger`20port`20*/ X&0320ecb`5B0`5D.param_id&0220=&04201; X&0320ecb`5B0`5D.param_val`20=`20PORT; X&0320ecb`5B1`5D.param_id&0220=&04207; X&0320ecb`5B1`5D.param_val`20=&0320-1;&0209/*`20Allow`20multiple`20passive`20op Vens`20on`20same`20port`20*/ X&0320ecb_desc.len`20=`20sizeof(ecb); X&0320ecb_desc.adr`20=`20`26ecb; X&0320rc`20=`20SYS$QIOW(0,tcp_chan,(IO$_SETMODE`20`7C`20IO$M_CTRL`20`7C`20IO$M_ VSTARTUP`20`7C`200x800),`26tcp_read_iosb,0,0,0,`26ecb_desc,0,0,0,0); X&0320if`20(tcp_read_iosb.status`20!=`20SS$_NORMAL`20&027C`20rc`20!=`20SS$_NORM VAL) X&0620`7B X&0620printf("\nlisten`20failed\n"); X&0620return`201; X&0620`7D X X&0320return`200; X&0320`7D X X XIto3a`20(int`20n,`20char`20s`5B3`5D) X&0320`7B X&0320char`20t`5B4`5D; X&0320int`20i,`20z,`20sign; X X&0320/*`20init`20*/ X&0320memset(`26s`5B0`5D,'0',3); X&0320if((n`20<`20-999)`20&027C`20(n`20>`209999)) X&0620`7B X&0620printf("Argument`20%d`20to`20Ito3A`20out`20of`20range`20!\n",`20n); X&0620exit(1); X&0620`7D X X&0320/*`20Convert`20absolute`20value`20and`20fill`20in`20s`20in`20reversed`20o Vrder`20*/ X&0320if((sign`20=`20n)`20<`200)`20n`20=`20-n; X&0320i`20=`200; X&0320do X&0620`7B X&0620s`5Bi++`5D`20=`20n`20%`2010`20+`20'0'; X&0620`7D`20 X&0320while((n`20/=`2010)`20>`200); X&0320if(sign`20<`200)`20s`5Bi++`5D`20=`20'-';&0320/*`20if`20necessary`20append V`20a`20minus`20sign`20*/ X X&0320/*`20Now`20reverse`20the`20whole`20thing`20except`20for`20the`20terminato Vr`20which`20is`20already`20*/ X&0320/*`20where`20it`20belongs`20*/ X&0320memmove(`26t`5B0`5D,`26s`5B0`5D,4); X&0320s`5B0`5D`20=`20t`5B2`5D; X&0320s`5B1`5D`20=`20t`5B1`5D; X&0320s`5B2`5D`20=`20t`5B0`5D; X&0320return; X&0320`7D X X Xcleanup() X&0320`7B X&0320unsigned`20int`20rc; X X&0320rc`20=`20SYS$QIOW(0,tcp_chan,`20(IO$_SETMODE`20`7C`20IO$M_CTRL`20`7C`20IO V$M_SHUTDOWN), X&1120`26tcp_read_iosb,0,0,0,0,0,0,0,0); X&0320rc`20=`20SYS$DASSGN(tcp_chan); X&0320tcp_chan`20=`200; X&0320return; X&0320`7D X X Xdo_login() X`7B X&0320unsigned`20int&0209rc; X&0320short&0209chan; X&0320unsigned`20long`09dsc`5B2`5D; X&0320char`20&0209msgbuf`5B133`5D; X&0320unsigned`20int&0209flags`20;&1520/*`20flags`20for`20the`20spawned`20proce Vss`20*/ X&0320unsigned`20int&0209newpid; X&0320double&0209wait_time`20=`203.0; X&0320unsigned`20int&0209privs; X&0320struct`20iosb_struct`09iosb; X&0320struct`20itemlist3 X&0620`7B X&0620short`20buff_len; X&0620short`20code; X&0620int&0320buff; X&0620int&0320ret; X&0620int&0320term; X&0620`7D&0220item_list;&1D20/*`20itemlist`20for`20system`20services`20*/ X X&0320$DESCRIPTOR(image,"SYS$SYSTEM:LOGINOUT.EXE"); X&0320$DESCRIPTOR(nt_devnam,`20"NTA0:"); X X&0320/*`20till`20now`20we`20have`20only`20TCP/IP`20and`20no`20telnet`20protoco Vl`20or`20terminal`20driver`20*/ X&0320/*`20on`20top`20of`20it.`20We`20use`20now`20some`20(undocumented?)`20magi Vc`20to`20startup`20the&0520*/ X&0320/*`20telnet-driver`20(NTAxx)`20which`20does`20all`20the`20terminal-handli Vng&0D20*/ X X&0320/*`20create`20a`20channel`20to`20NTA0:,`20the`20Telnet`20driver`20*/ X&0320chan`20=`200; X&0320rc`20=`20SYS$ASSIGN(`26nt_devnam,`26chan,`200,`200); X&0320if`20(rc`20!=`20SS$_NORMAL) X&0620`7B X&0620printf("\nAssign`20to`20NTA0:`20failed\n\n")`20; X&0620return; X&0620`7D X X&0320/*`20and`20start`20the`20Telnet-driver`20this`20is`20undocumented`20TCPwa Vre`20stuff`20!!!`20*/ X&0320/*`20but`20we`20never`20had`20a`20problem`20with`20it`20from`20atr`20leas Vt`20TCPware`203.0`20*/ X&0320/*`20until`20TCPware`204.1`20*/ X&0320/* X&0320**&0620Start`20NTDRIVER`20... X&0320** X&0320**&0620QIO`20Parameters`20(IO$_TTY_PORT`20`7C`20IO$M_STARTUP)`20: X&0320**&0E20p1`20=`20Channel`20number`20of`20TCPDRIVER`20unit. X&0320**&0E20p2`20=`200`20or`202`20for`20an`20application`20session X&0320**&0620CAUTION`20:`20All`20unused`20parameters`20(p3-p6)`20MUST`20be`200 V`20for X&0320**&0620future`20compatibility. X&0320** X&0320**&0620If`20p2`20=`200,`20FULL`20TELNET`20processing`20is`20done`20on`20t Vhe X&0320**&1120connections`20(options`20processing,`20IAC,`20and`20CR/NULL`20hand Vling) X&0320**&0620If`20p2`20=`202,`20raw`20mode`20is`20used`20(no`20TELNET`20process Ving`20is X&0320**&1120done`20on`20the`20connection`20and`20one`20has`20a`20full`208-bit V`20binary`20data`20path) X&0320** X&0320*/ X&0320rc`20=`20SYS$QIOW(0,chan,`20IO$_TTY_PORT`20`7C`20IO$M_STARTUP,`20`26iosb, V0,0,tcp_chan,0,0,0,0,0); X&0320if`20(rc`20!=`20SS$_NORMAL) X&0620`7B X&0620printf("\nStartup`20of`20Telnet-Driver`20failed\n\n")`20; X&0620return; X&0620`7D X X&0320/*`20now`20we`20can`20deassign`20the`20old`20TCP-channel`20*/ X&0320rc`20=`20SYS$DASSGN(tcp_chan); X X&0320/*`20start`20a`20login`20process`20we`20need`20the`20NTAxx`20devicename V`20*/ X&0320dsc`5B0`5D`20=`2032; X&0320dsc`5B1`5D`20=`20`26msgbuf; X&0320rc`20=`20LIB$GETDVI(`26DVI$_ALLDEVNAM,`20`26chan,`200,`200,`20`26dsc); X&0320if`20(rc`20!=`20SS$_NORMAL) X&0620`7B X&0620printf("\n\nCouldn't`20get`20devicename\n")`20; X&0620return; X&0620`7D X X&0320/*`20start`20the`20login`20process.`20Priviledges`20are`20only`20for`20th Ve`20process`20until`20*/ X&0320/*`20the`20user`20logs`20in.`20After`20login`20he`20gets`20assigned`20his V`20real`20priviledges`20*/ X&0320privs`20=`20PRV$M_BYPASS`20`7C`20PRV$M_WORLD`20`7C`20PRV$M_PHY_IO`20`7C V`20PRV$M_LOG_IO`20`7C`20PRV$M_SHARE`20`7C`20PRV$M_SYSPRV; X&0320rc`20=`20SYS$CREPRC(`26newpid,`26image,`26dsc,`26dsc,`26dsc,`26privs,0,0, V0,0,0,PRC$M_DETACH`7CPRC$M_INTER); X&0320if`20(rc`20!=`20SS$_NORMAL) X&0620`7B X&0620printf("\nCreate`20of`20login-process`20failed\n\n")`20; X&0620return; X&0620`7D X X&0420lib$wait(`26wait_time); X X&0420/*`20now,`20as`20the`20new`20login`20process`20has`20assigne`20to`20the V`20NTA-device,`20*/ X&0420/*`20we`20can`20deassign`20and`20have`20to`20make`20sure`20that`20the`20u Vser`20who`20logs`20*/ X&0420/*`20in`20is`20the`20owner`20of`20the`20device.`20Unfortunaly`20VMS`205.5 V-2`20does`20not`20*/ X&0420/*`20have`20any`20function`20to`20change`20the`20owner`20of`20a`20device, V`20so`20we`20have`20*/ X&0420/*`20to`20do`20it`20in`20a`20small`20kernel-mode`20macroprogram.`20Accord Ving`20to`20the`20*/ X&0420/*`20release`20notes`20of`20VMS`206.0`20it`20may`20have`20changed`20in V`20a`20way`20that`20a`20*/ X&0420/*`20login-process`20always`20aquires`20the`20ownership`20of`20the`20logi Vn-device,`20*/ X&0420/*`20so`20the`20next`202`20lines`20may`20not`20be`20needed`20anymore`20wi Vth`20VMS`206.x&0220*/ X&0420rc`20=`20SYS$DASSGN(chan); X&0420rc`20=`20devowner(`26dsc,`20newpid);&0209/*`20change`20the`20owner`20of V`20a`20device`20(in`20KERNEL`20mode)`20*/ X X&0420/*`20everything`20successful`20finished,`20now`20we`20can`20exit`20this V`20process`20*/ X&0420return; X`7D X X Xdo_message() X&0320`7B X&0320char`20msg`5B80`5D; X&0320struct`20iosb_struct`20iosb; X X&0320/*`20we`20just`20output`20a`20simple`20message`20and`20hagup`20immediatly V`20afterwards...`20*/ X&0320sprintf(msg,"You`20called`20from`20%s.\n",`20calling_address); X X&0320SYS$QIOW(0,tcp_chan,IO$_WRITEVBLK,`26iosb,0,0,msg,strlen(msg),0,0,0,0); X&0320return; X&0320`7D X $ call unpack TCP_MUX.C;1 1986547071 "" $ v=f$verify(v) $ exit -- ---------------------------------------------------------------------------- Radio Suisse Ltd, Internet: winter@vision.rs.ch HAM: HB9TCP Laupenstrasse 18a postmaster@rs.ch & hostmaster@rs.ch 3008 Bern PSI-Mail: +22846431062::WINTER (public X.25) Switzerland X.400: C=CH; A=ARCOM; P=RS; O=DM; S=WINTER, G=MARTIN ----------------------------------------------------------------------------