_______________________________________________________________________________

                  INTRODUCTION TO THE PRIMOS OPERATING SYSTEM
                    Part IV  (Prime Network Communications)

                              Written by Violence
                      Copyright (C) 1989 The VOID Hackers
_______________________________________________________________________________


Welcome to Part IV  of my continuing series on the PRIMOS operating system.  In
this installment I plan on covering  Prime's  network communications capability
and the associated utilites that you will find useful.

Just like other popular mainframes, Primes too have networking capabilities and
support many communications applications.  Prime's main communications products
are PRIMENET, RJE and DPTX.  I will only be going over PRIMENET in this series,
as discourses on RJE and DPTX are  beyond the scope of this series.  For a good
discussion on  RJE and DPTX  I refer you to Magic Hassan's excellent article on
the subject (appearing in Phrack, Inc., Issue 18).

_______________________________________________________________________________

PRIMENET

Available for  all models of  Prime computers,  PRIMENET  is Prime's networking
software.  In a nutshell,  PRIMENET is like a Token Ring LAN network.  PRIMENET
is superior to most  Token Ring  LAN applications,  however.  To really be able
to visualize how a PRIMENET ring network operates, you need to be familiar with
the Token Ring  type of LAN  (Local Area Network).  Token Rings  are  basically
'circles' of computers (referred to as 'nodes') that are electronically connec-
ted to eachother.  The individual Prime computers on the PRIMENET ring are res-
ponsible for allowing remote users to be able to access them,  however.  PRIME-
NET simply allows simplified communications between all the netted systems.  In
the following diagram you will see a sample PRIMENET ring with six Prime compu-
ters located on it.  Each of the individual  nodes may or may not be  connected
to the  telephone  network,  another PRIMENET ring,  or one of the  many public
data networks  (PDN's) like TELENET.  Here is an example of the manner in which
a PRIMENET ring is set up:


                              PRIME   PRIME
                                   \_/
                             PRIME-(_)-PRIME
                                   / \
                              PRIME   PRIME


Each node receives information from it's neighboring system and transmits it to
the node immediately downstream on the ring.  In this fashion any node can send
information to any other node by sending  it through some or all of the others.

As I stated previously,  PRIMENET ring networks are superior to most Token Ring
LAN applications.  But in what ways?  Some of the features of a PRIMENET system
are listed below:

        o  Any terminal on the PRIMENET ring can login to any system on
           the PRIMENET ring.
        o  Processes running at the same time on different systems can
           communicate interactively.
        o  Transparent access to any system in the PRIMENET network without
           use of any additional commands or protocols.
        o  Complete access and protocol support for packet-switched
           communications between PRIMENET systems and mainframes located
           on almost all Public Data Networks (PDN's).

All these features allow you to do things like access disk partitions on system
A from system B,  rlogin from system  A to system B  (requiring ONLY an account
on system B), and so forth.  In this installment I will explain the many things
that you can (and should) do with a PRIMENET-equipped system.

_______________________________________________________________________________

CHECKING OUT A PRIMENET SYSTEM


Should you get into a PRIMENET-equipped system, there are a few things that you
should do to learn more about the intra-system links and such.  In this section
I will describe all the  procedures that you will need to initiate in order for
you to determine said information.

The first thing  you should do is to  use three of the DSM  (Distributed System
Management) utilities  (remember, I described the DSM in full in Part II).  The
three DSM utilities (external commands, really) you should invoke are:

LIST_PRIMENET_LINKS     - Lists PRIMENET status
LIST_PRIMENET_NODES     - Lists configured PRIMENET nodes
LIST_PRIMENET_PORTS     - Lists assigned PRIMENET ports

The information returned  to you by  these external commands  will describe the
current PRIMENET  setup in detail.  You will obtain remote nodenames,  PRIMENET
addresses, link devices, gateway nodes,  configured access,  and whether or not
the individual nodes require remote passwords for login.  Here is a good examp-
le of the results obtained from a LIST_PRIMENET_NODES:

        OK, list_primenet_nodes

** VOID **
 
  Remote      Primenet       Link    Gateway      Configured       Validation
   node       address       device    node          access         required?
+-----------------------------------------------------------------------------+
| 2600HZ | 99994738593624 | LHC00  |        | remote login, RFA  | no         |
| THRASH | 3110XXX00254   | PNC00  |        | remote login, RFA  | yes        |
| VIOLEN | 3110XXX00245   | SYNC00 |        | remote login, RFA  | yes        |
| PSYCHO | 99994734748381 | SYNC00 |        | remote login, RFA  | no         |
| SCYTH  | 3110XXX00324   | SYNC00 |        | remote login, RFA  | no         |
+-----------------------------------------------------------------------------+

This assumes that  you issued the  LIST_PRIMENET_NODES  command from the system
VOID.  It states that it is on a  PRIMENET  ring with  5  other systems  (their
names can be found in the  "Remote node" column).  Note the  "Primenet address"
column.  It lists each systems  NUA  (Network User Address).  Notice that three
of the listed NUA's are on  TELENET  and two are on some bizarre network with a
DNIC (Data Network Identification Code)  of 9999.  Well, the host system (VOID)
is located on the TELENET PDN (DNIC 3110) and thus, the DSM knows that all 3110
systems are TELENET  and displays their  TELENET  addresses.  The other systems
(those with the DNIC of 9999) are located on foreign PDN's and the DSM does not
understand the  addressing  scheme  (by default it only understands that of the
host system) and thusly, displays their PRIMENET addresses.

The "Link device" column tells about the hardware at the individual sites.  The
host system's device is not displayed,  only those other nodes on the ring net-
work.  LHC00 is a LAN300 node controller.  PNC00 is a  PRIMENET node controller
(PNC).  SYNC00  denotes a  synchronous  communications line.  It's not all that
important (unless you are a hardware fanatic, that is).

The  "Configured access"  and  "Validation required?" columns display important
information about the  linked systems.  If you don't see a "remote login" some-
where then you cannot login to the system remotely (you can access it if one of
the PRIMENET systems is linked with it's disk partitions, however).  If you see
a "yes" in the "Validation required?"  column then some sort of remote password
system has been installed and you are going to have a hard time getting in.

As you can see, these DSM commands can be useful when attempting to gain access
to other systems on a  PRIMENET or  LAN300 ring.  The rest of  this installment
will be devoted to utilizing the information gained here to do such.

_______________________________________________________________________________

THE PRIMENET RLOGIN FACILITY

PRIMENET supports remote  logins in the same manner that UNIX machines do.  If,
for example, a PRIMENET ring had 6 systems on it, 4 on TELENET  and 2 in the UK
then you could connect to those systems in the UK for free by connecting to one
of the 2 U.S. systems and rloging into one of the UK Primes.  Using our already
defined PRIMENET ring, we'll connect to system PSYCHO from system THRASH.

        214 XXX CONNECTED
        PRIMENET 22.0.0 THRASH
        login system system -on psycho

This will log you in as SYSTEM/SYSTEM on the PSYCHO node (a Prime separate from
the THRASH node).  This can be VERY useful when  you have lost all of your acc-
ounts from one node on the PRIMENET ring and do not know the NUA for one of the
other ring systems that you still have accounts on.

_______________________________________________________________________________

NETLINK


NETLINK is Prime's network utility.  All users on a  PRIMENET  system will have
access to this communications utility.  NETLINK allows you to connect to:

     o  Other Prime's on the same PRIMENET ring as the system you are on
     o  Any system (UNIX, VAXen, etc) located on any of the world's networks

NETLINK is a powerful utility and abuse will lead to your accounts removal,  so
be careful in how you use it.  The best thing you can possibly do is, use it to
connect to and hack on other systems in the PRIMENET ring.  If you MUST use the
NETLINK utility to call other systems on the world's PDN's try to call only the
systems that accept collect calls.

Now,  let me tell you how to get into  NETLINK  and start doing  stuff.  At the
'OK,' prompt (or whatever it has been set to by the LOGIN.CPL file), type:

     OK, netlink

If NETLINK is available, then you will see something like this herald:

     [NETLINK Rev. 22.0.0 Copyright (c) 1988, Prime Computer, Inc.]
     [Serial #serial_number (company_name)]

After that floats across your screen you will be deposited  at the NETLINK pro-
mpt, which happens to be a "@"  (Gee, how original).  Now, you are all ready to
begin NETLINKing.

Time to learn how to connect to a system.  Now,  there are three types of comm-
ands that all do basically the same thing,  and that is connect you to a remote
system.  I'll go over the first two types right now and save the third type for
a bit later.

Depending  on the  status of the  system you are  trying to call,  you will use
either C  (connect) or NC (connect, no reverse charging).  C and NC both do the
same thing,  but  C will make the connection for free  (ie,  the people who own
this Prime won't get a bill)  and NC will make the connection and  your net use
will be charged.  Ok,  a good comparison is calling NUA's on a PDN.  If the NUA
is "collectable"  (a term I use to describe a system that accepts collect  (ie,
no ID required to make the connection) calls)  then you will use the C command.
Otherwise use the NC command.  Almost all  international calls will  require an
NC to connect.

If you simply want to call a system that was listed in the  LIST_PRIMENET_NODES
list, then do this:

     c <nodename>

An example would be:

     c thrash

If you wanted to call up a  system located on the same  PDN as the PRIMENET you
are on is and the system accepts collect calls, then do this:

     c <network address>

An example would be:

     c 21398

If you want to call up a  system that is located on a  PDN  other than the  PDN
your PRIMENET is on, then do this:

     c <dnic>:<network address>

An example would be:

     C 2624:5890040004

Regardless of what you actually end up typing,  you will get one of two things:
a connect message or an  error message.  The connect message for the above exa-
mple would look like this:

     5890040004 Connected

The connect message  for when you connect to a Prime on the PRIMENET ring would
look like this:

     THRASH Connected

Ok,  now you simply login  (or hack) as you normally would.  When you are done,
logoff the system as usual.  When you logoff, you'll get a message like this:

     5890040004 Disconnected

Occasionally you will  either type the  NUA incorrectly or the  system you  are
calling is down.  When that  happens you will  get an error  message that looks
like this:

     5890040004 Rejecting    Clearing code = 0000
     Diagnostic code = 0010 (Packet type invalid)

The error message states the network address you tried to call (less the DNIC),
the Clearing code,  the Diagnostic code and  what the  Diagnostic code means in
English.  At the end of this file is a  complete list of all Clearing codes and
all Diagnostic codes (for reference).



 Sub: Other Nets [BitNet etc..]
Read: (1-30), Message # 26, (c/r)=Next Msg ?:OP

30/30: Prime file 9 of 10
Name: Predat0r #1 @5211
Date: Sun May 05 02:41:48 1991
From: Youth International Party Line (Kentucky)

_________________________________

 Sub: Other Nets [BitNet etc..]
Read: (1-30), Message # 30, (c/r)=Next Msg ?:-

29/30: Prime file 8 of 10
Name: Predat0r #1 @5211
Date: Sun May 05 02:41:27 1991
From: Youth International Party Line (Kentucky)


Now, if you want to abort a session prematurely (not recommended unless NETLINK
screws up, and it does on occasions), then there are three things you can do:

     o  Type CONTROL-P
     o  Issue a BREAK sequence
     o  Return to TELENET and do a force Disconnect (via the D command)

Those are listed  in the order you should try them in.  CONTROL-P works most of
the time.  Doing a BREAK will usually  (but not always)  close your  connection
and return you to PRIMOS level.  When you do a BREAK, you'll probably see:

     UUU@UUu
     QUIT.
     OK,

Now press RETURN  so you can clear out the unwanted CONTROL characters that are
in the Prime's command line input buffer.  Now, restart NETLINK as usual.

If you are forced to drop to TELENET,  then  disconenct yourself and  re-login.
If your process is still online  (about 50% of the time)  then don't worry,  it
will be logged off due to inactivity between  10 and 15 minutes.  If your proc-
ess got slain then you're in good shape.  Now, return to NETLINK as usual.

Ok, now you know how to connect and disconnect from systems.  Now it's time for
the fun stuff, multipadding  and other advanced commands.  The escape character
for NETLINK is the "@" character (same as with TELENET).  Basically, you type:

     <cr>@<cr>

to return to  NETLINK while online.  Doing this will  take you back to  NETLINK
command  mode.  It will leave the  circuit open.  To  reconnect to  the system,
type:

     continue 1

You will then be reconnected to the system you were on.  Now for a slight draw-
back.  If you are using TELENET or any other PDN that uses  TELENET's software,
then using  the NETLINK  escape sequence  ( <cr>@<cr> )  will take you  back to
TELENET network command level instead of back to  NETLINK command level.  There
are two ways to correct this problem.  The first is to type the following while
in NETLINK:

        prompt $

This changes the NETLINK  '@' prompt to a '$' prompt.  Now just type  <cr>$<cr>
to return to NETLINK.  The other way is to utilize TELENET's  ITI parameters to
turn off the escape sequence.  When you connect to the PRIMENET and login, then
return to TELENET command level and type  these two sequences of parameters ex-
actly as they are shown:

   SET? 1:0,2:0,3:0,4:2,5:0,7:8,9:0,10:0,12:0,15:0
   SET? 0:0,57:1,63:0,64:4,66:0,71:3

When you return to the "@" prompt, type CONT to return to the Prime.  Then just
enter NETLINK as usual.  Now when you type  <cr>@<cr> you won't return to TELE-
NET as you used to.

Ok now,  let's get into multipadding.  What exactly is  "multipadding" anyways?
Well, you probably already know this,  but it never hurts to repeat it.  Multi-
padding is  what you are  doing when you are  connected to two or  more systems
simultaneously.  Basically,  NETLINK will allow you  this capability.  Although
the  NETLINK documentation states that you can  only connect to four systems at
one time,  you can actually  connect to more.  At any rate,  this is how you do
it.  When you first enter NETLINK  (Note:  you must set your prompt  or the ITI
parameters if you plan to do any NETLINKing from a  PRIMENET located on TELENET
or any other PDN that uses TELENET's software),  connect to the first system by
typing this:

     CALL <nodename>            <-- if it is located on the same PRIMENET ring
     CALL <network address>     <-- if the system is located on the same PDN
     CALL <dnic>:<net address>  <-- if the system is located on a different PDN

The CALL command will connect you to the system  and you will remain in NETLINK
command  mode.  Now,  keep CALLing systems  until you  are done.  Be forewarned
that it can be confusing  being connected to  more than four  systems.  Ok now,
the above CALL examples  all assumed that the  system that you are CALLing will
accept collect calls.  If this is not the case, then CALL it like this:

     call <whatever> -fcty

The "-FCTY" command stands for facility.  Ok, when you use the "-FCTY" argument
you are basically doing  the same thing as you where when you were using the NC
connect command.  Each CALL  that you make opens  a circuit.  The first circuit
you connect to is known as  circuit 1,  and so forth.  So when you are ready to
connect to the first system, type:

     continue 1

To connect to the second open circuit, type:

     continue 2

and so forth.  Should  you try to  connect to a closed circuit you will get the
following error message:

     Circuit does not exist

To switch between systems return to NETLINK command mode via <cr>@<cr> and then
CONTINUE to the appropriate circuit.  To close a particular circuit, type:

     d #

where # is the actual circuit number.  An example would be D 1  or  D 3.  There
must be a space between the  D and the  circuit number.  To disconnect from all
open circuits you can type:

     d all

That's pretty much all there  is  to multipadding.  It's  nothing special,  and
not really that useful,  but it can be interesting to connect  to two  or three
chat  systems and switch  between them, or hang  on a chat and  leave to hack a
system  while remaining on  the chat,  etc.  Lots of interesting things you can
do.  When you are done using  NETLINK, type  Q or QUIT to return to PRIMOS.  If
you would like to see the other commands  (yeah, there are more)  that I am not
covering in  this article,  then type HELP.  You got  the basics down  now,  so
go fiddle around with NETLINK and see what other strange things you can do.


Texts for Clearing Cause Codes detected by NETLINK


  0 0  DTE Originated
  1 0  Busy
  3 0  Invalid Facility Request
  5 0  Network Congestion
  9 0  Out Of Order
 11 0  Access Barred
 13 0  ot Obtainable
 17 0  Remote Procedure Error
 19 0  Local Procedure Error
 21 0  Out Of Order
 25 0  Refusing Collect Call
 33 0  Incompatible Destination
 41 0  Fast Select Acceptance Not Subscribed
 57 0  Ship Absent
128 0  DTE Originated (Non-standard Diagnostic)
129 0  Busy (Private)
131 0  Invalid Facility Request (Private)
133 0  Network Congestion (Private/Routethrough)
137 0  Out Of Order (Private/Routethrough)
139 0  Access Barred (Private)
141 0  Not Obtainable (Private)
145 0  Remote Procedure Error (Private)
147 0  Local Procedure Error (Private/Routethrough)
149 0  RPOA Out Of Order (Private)
153 0  Refusing Collect Call (Private/Primenet)
161 0  Incompatible Destination (Private)
169 0  Fast Select Acceptance Not Subscribed (Private)
185 0  Ship Absent (Private)
193 0  Gateway-detected Procedure Error
195 0  Gateway Congestion


Texts for Diagnostic Codes detected by NETLINK


  0 0  No additional information
  1 0  Invalid P(S)
  2 0  Invalid P(R)
 16 0  Packet type invalid
 17 0  Packet type invalid - for state r1
 20 0  Packet type invalid - for state p1
 21 0  Packet type invalid - for state p2
 22 0  Packet type invalid - for state p3
 23 0  Packet type invalid - for state p4
 24 0  Packet type invalid - for state p5
 26 0  Packet type invalid - for state p7
 27 0  Packet type invalid - for state d1
 29 0  Packet type invalid - for state d3
 32 0  Packet not allowed
 33 0  Unidentifiable packet
 36 0  Packet on unassigned logical channel
 38 0  Packet too short
 39 0  Packet too long
 40 0  Invalid GFI
 41 0  Restart with nonzero in bits 1-4, 9-16
 42 0  Packet type not compatible with facility
 43 0  Unauthorized interrupt confirmation
 44 0  Unauthorized interrupt
 48 0  Timer expired
 49 0  Timer expired - for incoming call
 50 0  Timer expired - for clear indication
 51 0  Timer expired - for reset indication
 52 0  Timer expired - for restart indication
 64 0  Call setup or clearing problem
 65 0  Facility code not allowed
 66 0  Facility parameter not allowed
 67 0  Invalid called address
 68 0  Invalid calling address
 69 0  Invalid facility length
 70 0  Incoming call barred
 71 0  No logical channel available
 72 0  Call collision
 73 0  Duplicate facility requested
 74 0  Nonzero address length
 75 0  Nonzero facility length
 76 0  Facility not provided when expected
 77 0  Invalid CCITT-Specified DTE facility
112 0  International problem
144 0  Timer expired
145 0  Timer expired - For interrupt confirmation
160 0  DTE-Specific Signal
163 0  DTE Resource constraint
239 0  User segment deleted
240 0  Time out on clear request
241 0  Time out on reset request
242 0  Time out on call request
243 0  Routethrough down
244 0  Routethrough - not enough memory
245 0  Routethrough - circuit timeout
246 0  Routethrough - call request looping
247 0  Routethrough protocol error
248 0  Network server logged out
249 0  Local procedure error Primenet internal
250 0  Host down
251 0  Illegal address
252 0  No remote users
253 0  System busy
254 0  System not up
255 0  Port not assigned

_______________________________________________________________________________

OTHER USEFUL PRIMENET UTILITIES


There are two other useful PRIMENET utilities,  and these are  MONITOR_NET  and
CONFIG_PRIMENET.  In this section I will briefly detail these two utilities.

CONFIG_NET is useful for obtaining such information as intra-system links (disk
partitions that are shared by systems on a  PRIMENET ring),  remote login pass-
words, and system NUA's.  Just type:

        OK, config_primenet configfilename

The 'configfilename' is the name of the PRIMENET configuration file (located in
the *>PRIMENET* directory from MFD 0.  You can  REALLY screw up a PRIMENET ring
with this utility, so be careful.  You don't want to  EVER save a modified con-
figuration.  Always answer such a  question with NO.  The only command you will
really ever need to use is the  LIST command.  When you type  LIST  it will ask
you what you want to list.  Just type ALL and it will  list all available info-
rmation regarding the PRIMENET configuration.  CONFIG_PRIMENET has  a HELP fac-
ility available, so use it.

MONITOR_NET  is a  useful utility  for network freaks.  It allows  the complete
monitoring of the local  PRIMENET ring network,  all virtual circuits, synchro-
nous lines and  LAN300 status.  You cannot monitor  type-ahead buffers  or any-
thing,  but you can learn  quite a bit about  the systems on the ring.  It will
allow you to discover which nodes on the  PRIMENET ring/LAN300 do a high amount
of data transfer, User ID's on individual systems (albeit no passwords), etc.

Unfortunantly, MONITOR_NET is an emulation-dependant utility.  Most Prime util-
ities support the PT series of emulation (Prime Terminal), but most of you will
not have access to a terminal program that supports it.  Prime was smart in one
important regard, and that is that not all of their customers will be using the
PT emulation, so they made MONITOR_NET be able to understand other popular emu-
lations, such as VT100.  Defaultly,  MONITOR_NET assumes you are using PT100 or
a similar mode of PT emulation.  To tell it that you are using VT100,  you must
use the  -TTP argument  (terminal type)  on the PRIMOS command line.  To invoke
MONITOR_NET with VT100 emulation, you would type this:

        OK, monitor_net -ttp vt100

Upon invoking MONITOR_NET, the screen will clear and you will be presented with
a menu of options.  MONITOR_NET is really easy to use (just make sure you enter
all the commands in UPPER case), so just play around with it.

Well, that's the end of this installment.  In the next (and final) part of this
series I will detail the myriad of PRIMOS language compilers, interpreters, and
translators.  I will also detail some more interesting PRIMOS commands and give
out some useful PRIMOS utilities (CPL programs).

     May the forces of darkness become confused on the way to your house.

_______________________________________________________________________________

      End of Part IV of the "Introduction to the PRIMOS Operating System"
_______________________________________________________________________________


