I was wondering if anybody would care to explain how routine node
maintenance happens for DECnet on non-Tops-20 systems. Specifically,
Johnny's node list on MIM:: changes more or less about once a month,
sometimes more, sometimes less.
Is anybody keeping up on this?? How?? I had a (bi-weekly) re-occurring
batch job which NFT'ed the latest node file from MIM:: and simply used
SETNOD to shove the whole thing into the running monitor, on the
assumption that the monitor would figure out what to do.? While slapping
in the whole list (with .NDINT) during timesharing did strike me as
somewhat wasteful, I didn't pay much attention to the matter as it did work.
This is mistaken.? Tops-20 will not 'make it' work, nor does it
apparently detect certain situations which appear to be problematic.? It
does detect and reject two situations.
1. You may not change either the name or address of the host (I.E., the
Executor).? These can only be set once at boot up. Do other
operating systems have this restriction?
2. You may not change the address of an existing node in the local area.
A node insertion in the local area which usurps an address of another
node deletes that node.? Outside of the local area, you are on your
own.? It does whatever you want, which means that you can have multiple
nodes with the same address.? Is that a problem?? On IP4, this would
been known as 'aliasing', but I don't think DECnet allows this.
So it would appear that the appropriate behavior is that a new node list
implies a system reboot.? Unless I'm actively doing monitor development,
I can't stand doing this.
However, fixing the problem turned out to be pernicious.? Neither of the
two cases above is reported to the user program; there is no way to
determine what might have gone wrong.? There is no way for the user
program to proactively prevent errors because, while you can ask Tops-20
to translate a DECnet address to a node name and to verify that a DECnet
node name exists, there is no way to return the address for a verified
DECnet node name.? Is this an oversight?? Can a user program get the
address of a DECnet node name on other operating systems?
I remediated the low level error reporting issue and implemented a new
function for NODE% to return the address of an existing DECnet node
(.NDVFX or Verify Node Extended).? Fixing SETNOD proved impossible.? I
discovered that the actions to be performed were complex enough when
automated that the dimensions of the solution were wholly beyond its
capabilities.? Not that there was anything wrong with SETNOD, it just
wasn't designed for this kind of heavy lift.? So I rewrote it from
scratch (cleverly naming it SETND2). I'm converging on completion, but I
don't work on it actively, so this will probably be a few more weeks.
Here is some sample output; let's suppose that BOINGO needs its address
changed from 2.399 to 2.400 and that this conflicts with another node
(in this case, APOLLO). To get this to work right, what you need to do
is tell Tops-20 to do is delete BOINGO first, so that there is no name
clash on the insertion.? Then you have to delete APOLLO, so that there
is no address conflict.? Once you are done performing both these
actions, it's safe to do the insertion and Tops-20 doesn't reject it or
otherwise get itself confused.
@*setnd2*
% Insufficient capabilities for INSERT command
SETNODE>*vERBOSITY* (level is) *vERBOSE *
Verbosity level is VERBOSE
SETNODE>*get /sECTION-MAP /nO-ACCESS*
[BIN file: TOMMYT:<SYSTEM>NODE-DATA.BIN.91;RESTRICTED-JFN:13 ]
Mapped one section (4 pages), 1778 Words, 889 Nodes.
SETNODE>*recONSTRUCT /sILENT *
[Closed log file: NUL:]
SETNODE>*shoW aREA 2 uNCHANGED*
[Area 2]
A2RTR?? ADAGIO? ADVENT? ADVNT5? AMAPUR? APOLLO? AUG11 AUGVAX? BASSET?
BEAGLE? BELLS?? BOINGO? BOXER?? BULDOG? CHARON
CODA??? COLLIE? CONDOR? CORGI?? COYOTE? CYPHER? DALMTN DIVISI? DOGPAK?
ELIDYR? ELITE?? FOX???? GLDRTR? GLOVER? GRUNT
HERMES? HUIA??? HUNTER? HUSKY?? JACKAL? JENSEN? KELPIE LABRDR? LAPDOG?
LARGO?? LEGATO? LENTO?? MASTIF? MENTOR? MEZZO
MULTIA? MUTT??? NO0K??? ODST??? OINGO?? OSIRIS? PAVANE POCO??? POODLE?
PUG???? PUGGLE? PUPPY?? R2X899? REACH?? SPARK
TERIER? THEARK? TOMMYT? VENTI?? WLFHND? WOLF??? ZITI
Total nodes in area 2: 67
SETNODE>*shoW **uNCHANGED boiNGO*
BOINGO:: (2.399)
SETNODE>*set 2.400 boingo*
Set existing node BOINGO:: (2.400)
Node BOINGO:: (2.400)
% Removing node BOINGO:: (2.399) from same list to insert in the delete list
% Re-using key text for insertion in delete list, BOINGO (2.399)
% Removing BOINGO::'s previous address (2.399)
% Removing node APOLLO:: (2.400) from same list to insert in the delete list
% Re-using key text for insertion in delete list, APOLLO (2.400)
% Deleting APOLLO:: (2.400) to reassign its address to BOINGO::
% Allowing update request for node BOINGO:: (2.400) because being
deleted as (2.399)
% Removing node BOINGO:: (2.399) from unchanged list because its address
has changed to (2.400)
% Re-using key text for insertion in update list, BOINGO (2.400)
Node change request for BOINGO:: (2.400)
SETNODE>
I just finished making the July 1989 CONOLD CD-ROM available for reading using VTB on PDXVAX. If you wish to access it, you can simply log in with the Guest Account, and type ?VTB".
I also have MGBOOK installed, but it fails horribly on the files (though it?s able to read the basic DECW$BOOKREADER documentation). I like its interface, but even on the DECW$BOOKREADER documentation, it doesn?t seem to do as well displaying the books.
Zane
Is anyone using Multinet that I can setup a link to? I?m using Johnny?s tool with a link to MIM, but I?d like to get a Multinet link going to someone in the US again. The latency to systems in the US is frightful. :-)
Thanks,
Zane
Hi, all.
If you are running an RSX system on HECnet, and you'd like a simple
command line tool to check some information about other nodes, as it is
registered in the Datatrieve database I keep on MIM, I've written one now.
It does require that you have the PDP-11 C runtime libraries installed
(they are installed as a part of BQTCP, and also exists as a component
in RPM).
Just grab MIM::HECNET:DDB.TSK, install it, and off you go.
If you want the sources (it's really simple) they can be found at
MIM::HECNET:DDB.C and you also have a Makefile there that compiles it
for you, in case you want to experiment some.
Example run:
.ddb mim
Node: MIM
Address: 1.13
Owner: Johnny Billquist
OS: RSX-11M-PLUS V4.6
CPU: PDP-11/74 (e11)
Created: 12 Nov 2011 12:00:00
Modified: 02 May 2020 19:45:49
Loc: Uppsala, Sweden
Coord: 59.858612,17.638744
.
I just thought it could be useful to have sometimes, and it's also a
good exercise in interfacing between Datatrieve and PDP-11 C.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol
Has anybody ever seen SETNOD fail to insert the entire node list?? I
just did.
Shortly after I put my 20's up on HECnet, I wrote a reoccurring batch
job that fires once a week on Sundays to pull the latest node list
(T20.FIX) from MIM::.? I use the highly venerable FILCOM program to do a
difference of it with the previous week's list.? I don't do anything in
particular with the output except save it in case I feel like looking at
it for some reason.
The batch job always inserts the entire list, rewriting whatever might
be in the monitor's data base.? I have always been unsatisfied with
doing things that way because it seemed to me to be inefficient as the
node list grew.?? The HECnet node list count was 716 on 9-Jun-19 and
it's now up to 884 as of the latest version that I've pulled,
30-Apr-21.? The other problem is the microscopic possibility that a node
is in Tops-20's monitor database (a hash table) that isn't in the HECnet
node list.
Nodes can get removed, although I think that infrequent.? Nodes could
get inserted outside of the batch job, but I think that most unlikely in
my situation.? Nodes can get renamed, as evidenced by 2.299 below, which
went from THEPIT to THEARK.? None of this should or has broken anything.
However, it's been in the back of my mind to do two enhancements, one to
Tops-20 and one to SETNOD. The NODE% JSYS should have an additional
feature to return the current monitor data base.? The SETNOD program
should be enhanced to take that to compute the set difference with the
new list.? This would show additions, renames and deletions. That would
bring the update operation down from some hundred items to less than
ten, on average.? This would obviously make more of a difference on huge
DECnet's in the tens of thousands of nodes. Another NODE% feature should
probably be to whack the entire monitor database except for the local
node, which would be useful for trouble shooting.
Last Sunday, the batch job failed with the following error:
18:33:40 USER?? SETNOD>*TAKE SYSTEM:NODE-DATA.TXT.0
18:33:40 USER
18:33:40 USER?? [Fork SETNOD opening <SYSTEM>NODE-DATA.TXT.1 for reading]
18:33:41 USER?? SETNOD>*SAVE
18:33:41 USER
18:33:41 USER?? [Fork SETNOD opening <SYSTEM>NODE-DATA.BIN.74 for
reading, writing]
18:33:41 USER?? SETNOD>*INSERT
18:33:41 USER
18:33:41 USER *?SETNOD: Failed at node REACH*
18:33:41 USER?? SETNOD>
I had a look at the SETNOD source and the HECnet node list and have
discovered and concluded a few things.? First, there doesn't seem to be
anything syntactically wrong with REACH::'s definition: "set nod 2.298
name REACH". Second, there don't appear to be any semantic issues.?
2.298 wasn't in use and it shouldn't matter if it was.
In the case of INSERT, there are two kinds of errors from NODE%, a
general failure of the JSYS and an incomplete insertion.?? The error is
from the second case.? Unfortunately, SETNOD isn't reporting enough
information about the error, so I have to make some changes there.? It's
also possible that SETNOD is building an inconsistent database for the
monitor to swallow; at least the LIST command is giving me some odd
results, viz:
SETNOD>list arEA 2
[AREA 2]
A2RTR
TOTAL NODES FOUND: 1
SETNOD>
That's clearly wrong, viz:
!i dec
?Local DECNET node: VENTI2.? Nodes reachable: 7.
?Accessible DECNET nodes are:??? A2RTR??? BOINGO LEGATO???
TOMMYT??? VENTI2??? VENTI??? ZITI
The Exec output should probably be changed to say, "Nodes reachable in
local area" and "Online nodes in area are:"
Anybody have any ideas?? Hunches?? Clues?
------------------------------------------------------------------------
File 1) OLDF:[4,120]??? created: 1241 15-Apr-21
File 2) NEWF:[1,1]????? created: 0102 30-Apr-21
1)1???? set nod 44.9 name OSMIUM
****
2)1???? set nod 2.292 name OSIRIS
2)????? set nod 44.9 name OSMIUM
**************
1)1???? set nod 13.3 name RED
****
2)1 *set nod 2.298 name REACH *
2)????? set nod 13.3 name RED
**************
1)1???? set nod 2.298 name RSX11M
1)????? set nod 1.306 name RSX124
****
2)1???? set nod 1.306 name RSX124
**************
1)1???? set nod 42.5 name SPARKY
****
2)1???? set nod 2.291 name SPARK
2)????? set nod 42.5 name SPARKY
**************
1)1???? set nod 2.299 name THEPIT
1)????? set nod 35.70 name THOMAS
****
2)1???? set nod 2.299 name THEARK
2)????? set nod 35.70 name THOMAS
**************