"David R. Lennon" <dave at thelennons.net> writes:
Hi,
That macro version that Brian posted doesn't seem to be working
(no output) under OpenVMS 8.4 IA64 but this other version he posted
does:
https://mail.encompasserve.org/anon/htnotes/note?f1=DEC_NETWORKING&f2=1247.…
Hmm... I'm busy at the moment addressing pool (as in swimming, not memory)
issues. Opened the damned thing on Memorial day only to have the filter's
pump motor seize up. Just purchased a new one and I'm installing it, but I
need to run off to the hardware store. I checked email before heading out.
I'll take a look at the two examples later. It's been more than 2 decades
since I authored those programs and I haven't run Phase IV here in a decade
or more.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
I speak to machines with the voice of humanity.
"Bob Armstrong" <bob at jfcl.com> writes:
Source code?
You mean the VMS fiche ? Sorry - at one time I had access to a set, but
no more...
Well, these days, I read it from CD/DVD. ;)
1 259 %SBTTL 'NML$PROCESS_NICE Main command processing routine'
1 260
1 261 GLOBAL ROUTINE NML$PROCESS_NICE (msg_desc, resp_rtn): NOVALUE =
1 262
1 263 !++
1 264 ! This routine is the main command processing routine. NICE messages
1 265 ! are parsed to determine the requested function and then the proper
1 266 ! routine is called to perform the function.
1 267 !
1 268 ! Inputs:
1 269 !
1 270 ! msg_desc = Address of descriptor of NICE message
1 271 ! resp_rtn = Address of action routine to call with NICE response
1 272 ! The action routine is called with the following arguments:
1 273 ! 1) Address of descriptor of NICE response
1 274 !
1 275 ! Outputs:
1 276 !
1 277 ! None - control is returned after the last response has been passed
1 278 ! to the action routine.
1 279 !--
If you Google NML$PROCESS_NICE
Did that last night :-) There's not a lot, but I did find Nick deSmith's
netname.c example, and one other little code fragment, which was helpful.
The "Callback routine" is handed a descriptor.
I saw that. I was really hoping that the callback routine received an
extra generic parameter (like a Windows lParam or a VMS AST parameter) so
that the caller of NML$PROCESS_NICE could pass arbitrary additional
arguments to the callback. It doesn't look like that happens, though, so if
the callback wants to store or save any of the data that it gets, then it
has to do it globally.
It's far from perfect, I agree.
library module "$NMADEF" in the system called LIB.
Got that. Actually on OVMS 7.3 I don't have SYS$LIB_C.TLB or nmadef.h -
from some of the web comments I found, it sounds like those might exist only
on Alpha. No matter, though - $NMADEF is in MACRO32 is in LIB and it's
simple to extract $NMADEF to a MAR file. A little bit of emacs magic turned
it into a .h.
Extract it and use SDL!
The real problem is that there are no comments in $NMADEF, and my NICE
spec (AA-X437A-TK) only gives numeric values for everything. It's kind of
"take your best guess" as to which named constant actually corresponds to
the item you want.
Avoid the nameless constant values; include NMADEF from the library and use
its constant definitions.
Agreed!
Call NML$INITIALIZE; no parameters.
Call NML$PROCESS_NICE; NML request by descriptor, callback routine
Call NML$TERMINATE; no parameters.
The only serious piece I'm missing at this point is, what do you do if you
want to talk to NML on another node besides your own (e.g. "TELL yoyo SHOW
EXEC CHAR") ? There doesn't seem to be any NICE function that can be
embedded in the data stream to do this, and that wouldn't really make sense
anyway. That'd be like asking the local NML to talk to the remote one on
your behalf, and I don't think that's the way it works.
It seems like there should be some parameter to either NML$INITIALIZE or
NML$PROCESS_NICE that gives the node and access control information, but I
don't find any reference to that.
Thanks again for all the help, Brian.
Read the NML spec. You can do all you want via NICE. You simply need to
get the information about the remote node as known by your node and then,
compose the NICE message with the DECnet address in the NICE message. The
rest of the code all looks the same.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
I speak to machines with the voice of humanity.
Hi,
That macro version that Brian posted doesn't seem to be working (no output) under OpenVMS 8.4 IA64 but this other version he posted does:
https://mail.encompasserve.org/anon/htnotes/note?f1=DEC_NETWORKING&f2=1247.…
The code he posted does have this comment:
; Read function options (RTFM. Sec 6.8 of DNA NML Network Mgt Spec #AA-X437A-TK)
which is a manual officially titled "DECnet Digital Network Architecture Phase IV Network Management Functional Specification", AA-X437A-TK and a scan is available online at:
http://bitsavers.trailing-edge.com/www.computer.museum.uq.edu.au/pdf/AA-X43…
Regards,
Dave
Quoting "Brian Schenkenberger, VAXman-" <system at tmesis.com>:
"Bob Armstrong" <bob at jfcl.com> writes:
Hey, thanks, Brian, for the example! Where are these NML$ library
routines documented? That's what I was looking for...
Source code? It's been so long since I wrote that example that I really do
not recall where *that* info was found. I typically document my code with
a RTFM reference. Of course, the only thin in that didty I posted was the
DNA NML Network Management Specification. There are only 3 entry points in
NMLSHR.EXE which you can see with an ANALYZE/IMAGE command.
Call NML$INITIALIZE; no parameters.
Call NML$PROCESS_NICE; NML request by descriptor, callback routine
Call NML$TERMINATE; no parameters.
The "Callback routine" is handed a descriptor. The first byte of the data
in the descriptor is a status. The status values, along with all of the
rest of the NMA constants, can be found in the library module "$NMADEF" in
the system called LIB. SYS$LIBRARY:LIB.MLB for macro; LIB.REQ for Bliss;
SYS$LIB_C.TLB for C.
If you Google NML$PROCESS_NICE, you will find some other tidbits of info.
One that was found when I did this is by friend Nick De Smith. It can be
found in the DECUS Library Compendium (DECUSlib.COM) which I too maintain.
NDS's example is written in C. I'd suggest NOT following NDS's example
too closely. Avoid the nameless constant values; include NMADEF from the
library and use its constant definitions.
Also, these calls will only work if you have DECnet phase IV installed on
your system. DECnet Phase V interface is a whole 'nother ball o' wax.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
I speak to machines with the voice of humanity.
Source code?
You mean the VMS fiche ? Sorry - at one time I had access to a set, but
no more...
If you Google NML$PROCESS_NICE
Did that last night :-) There's not a lot, but I did find Nick deSmith's
netname.c example, and one other little code fragment, which was helpful.
The "Callback routine" is handed a descriptor.
I saw that. I was really hoping that the callback routine received an
extra generic parameter (like a Windows lParam or a VMS AST parameter) so
that the caller of NML$PROCESS_NICE could pass arbitrary additional
arguments to the callback. It doesn't look like that happens, though, so if
the callback wants to store or save any of the data that it gets, then it
has to do it globally.
library module "$NMADEF" in the system called LIB.
Got that. Actually on OVMS 7.3 I don't have SYS$LIB_C.TLB or nmadef.h -
from some of the web comments I found, it sounds like those might exist only
on Alpha. No matter, though - $NMADEF is in MACRO32 is in LIB and it's
simple to extract $NMADEF to a MAR file. A little bit of emacs magic turned
it into a .h.
The real problem is that there are no comments in $NMADEF, and my NICE
spec (AA-X437A-TK) only gives numeric values for everything. It's kind of
"take your best guess" as to which named constant actually corresponds to
the item you want.
Avoid the nameless constant values; include NMADEF from the library and use
its constant definitions.
Agreed!
Call NML$INITIALIZE; no parameters.
Call NML$PROCESS_NICE; NML request by descriptor, callback routine
Call NML$TERMINATE; no parameters.
The only serious piece I'm missing at this point is, what do you do if you
want to talk to NML on another node besides your own (e.g. "TELL yoyo SHOW
EXEC CHAR") ? There doesn't seem to be any NICE function that can be
embedded in the data stream to do this, and that wouldn't really make sense
anyway. That'd be like asking the local NML to talk to the remote one on
your behalf, and I don't think that's the way it works.
It seems like there should be some parameter to either NML$INITIALIZE or
NML$PROCESS_NICE that gives the node and access control information, but I
don't find any reference to that.
Thanks again for all the help, Brian.
Bob
"Bob Armstrong" <bob at jfcl.com> writes:
Hey, thanks, Brian, for the example! Where are these NML$ library
routines documented? That's what I was looking for...
Source code? It's been so long since I wrote that example that I really do
not recall where *that* info was found. I typically document my code with
a RTFM reference. Of course, the only thin in that didty I posted was the
DNA NML Network Management Specification. There are only 3 entry points in
NMLSHR.EXE which you can see with an ANALYZE/IMAGE command.
Call NML$INITIALIZE; no parameters.
Call NML$PROCESS_NICE; NML request by descriptor, callback routine
Call NML$TERMINATE; no parameters.
The "Callback routine" is handed a descriptor. The first byte of the data
in the descriptor is a status. The status values, along with all of the
rest of the NMA constants, can be found in the library module "$NMADEF" in
the system called LIB. SYS$LIBRARY:LIB.MLB for macro; LIB.REQ for Bliss;
SYS$LIB_C.TLB for C.
If you Google NML$PROCESS_NICE, you will find some other tidbits of info.
One that was found when I did this is by friend Nick De Smith. It can be
found in the DECUS Library Compendium (DECUSlib.COM) which I too maintain.
NDS's example is written in C. I'd suggest NOT following NDS's example
too closely. Avoid the nameless constant values; include NMADEF from the
library and use its constant definitions.
Also, these calls will only work if you have DECnet phase IV installed on
your system. DECnet Phase V interface is a whole 'nother ball o' wax.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
I speak to machines with the voice of humanity.
On 2014-05-28 20:19, Cory Smelosky wrote:
On Wed, 28 May 2014, Johnny Billquist wrote:
I would guess on a bad XXDP image, since XXDP requires almost nothing
working. If RSRS/E and RSX works then I can't imagine XXDP not working.
As soon as I figure out how the hell to write a disk image from RSTS/E
I'll try a new image. ;)
Can't MOUNT FOREIGN so I need to read more manuals it appears.
If you have RSX-11M-PLUS V4.6 up and running, it already have a tool for doing this. :-)
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
On 2014-05-27 23:08, Hans Vlems wrote:
Area 44 is missing from the list.
Johnny, did you turn off the bridge link to my LAN?
Nope.
Is your address still 87.209.50.192 ?
Johnny
Verzonden vanaf mijn BlackBerry 10-smartphone.
Origineel bericht
Van: Bob Armstrong
Verzonden: dinsdag 27 mei 2014 22:50
Aan: hecnet at Update.UU.SE
Beantwoorden: hecnet at Update.UU.SE
Onderwerp: RE: [HECnet] "Dropped by adjacent node" ....
I appreciate the suggestions, but I'm not really interested in trying to
re-architect HECnet. That's a losing battle - I just want my node to work
:-)
I tried sending the USR1 signal to the bridge program and got this -
0: legato 0.0.0.0:0000 (Rx: 827 Tx:11017 (Drop rx: 6)) Active: 1
Throttle: 278(114)
1: psilo 130.238.19:4711 (Rx:11044 Tx: 821 (Drop rx: 27)) Active: 1
Throttle: 115(332)
Hash of known destinations:
aa0004000d04 -> 1 (1.13)
aa0004000f04 -> 1 (1.15)
aa0004001404 -> 1 (1.20)
aa0004001504 -> 1 (1.21)
aa0004005e05 -> 1 (1.350)
aa000400c205 -> 1 (1.450)
aa0004000108 -> 0 (2.1)
aa000400f810 -> 1 (4.248)
aa000400ff17 -> 1 (5.1023)
aa0004009021 -> 1 (8.400)
aa0004009121 -> 1 (8.401)
aa000400bc21 -> 1 (8.444)
aa000400f421 -> 1 (8.500)
aa000400022c -> 1 (11.2)
aa000400032c -> 1 (11.3)
aa000400642c -> 1 (11.100)
aa0004000138 -> 1 (14.1)
aa000400284c -> 1 (19.40)
aa000400294c -> 1 (19.41)
aa0004000470 -> 1 (28.4)
aa0004002970 -> 1 (28.41)
aa000400feab -> 1 (42.1022)
aa0004002fbc -> 1 (47.47)
aa0004004dbd -> 1 (47.333)
aa0004002bbe -> 1 (47.555)
aa0004002cbe -> 1 (47.556)
aa0004002fbe -> 1 (47.559)
aa000400bcbe -> 1 (47.700)
aa000400bdbe -> 1 (47.701)
aa000400d7be -> 1 (47.727)
aa0004000bec -> 1 (59.11)
aa00040005f8 -> 1 (62.5)
aa0004007dfa -> 1 (62.637)
Note that I restarted it about 30 minutes ago, so this data is just for
that period of time. My first observation is that's a lot of routing nodes,
but that's probably neither here nor there.
Also I'm struck by the asymmetry in the number of packets sent vs
received. I guess that makes sense, since I'm transmitting routing and
hello messages for only one node (LEGATO) and receiving them from beaucoup
nodes.
And I'm not sure that the throttling in the bridge is about...
Bob
--
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
On 2014-05-28 15:56, Paul_Koning at Dell.com wrote:
On May 28, 2014, at 9:40 AM, Johnny Billquist <bqt at softjar.se> wrote:
On 2014-05-28 15:33, Paul_Koning at Dell.com wrote:
...
DDCMP is a data link layer that deals with packet loss. It also deals with reordering, within reason, by treating it as packet loss, just as NSP did until Phase V. It should be ok with limited duplication as well though duplication is not one of the supposed characteristics of UDP.
Duplication is definitely a possible event with UDP. It happens from time to time. It's essentially because duplication is possible with IP. UDP is just IP with ports and a checksum (if you are lucky). And IP makes no promises at all. Packets might not arrive, might arrive out of order, become duplicated, delayed, or even corrupted.
Note that I meant the DDCMP protocol, not the DDCMP point to point service. In other words, the UDP packets would carry DDCMP frames, with DDCMP header (including sequence number and all that). I think SIMH has that right now, in V4.0 DMC emulation.
Ok. So if I understand correctly, DDCMP is guaranteeing the delivery of data between the two points. Data will arrive in order and without any loss or other confusion, as seen by the layers above DDCMP?
Yes, just as with TCP. The usual disclaimers apply. For example, dups or reorders are detected only up to the wrap point of the sequence number space. Corruption is caught only up to the capabilities of the CRC being used.
Also, guaranteed delivery is a commonly used term. A more accurate term would be guaranteed delivery or notification of failure . Connection oriented services like DDCMP and TCP and TP4 and NSP will deliver the data stream intact to the other end, OR they will tell you that they could not do so.
Seems like UDP could work then, but maybe TCP would be better?
Not clear. If things get reordered or delayed to the point that the DDCMP sequence number space is no longer sufficient, then TCP would help. It makes things somewhat more complicated (as Rob Jarratt pointed out) because TCP introduces the asymmetry of who connects while DDCMP does not have than and neither does UDP.
Right. However, I also wonder if the retry and recover mechanisms in TCP might be faster and more efficient than what DDCMP do. But like I said, I have not looked, so I'm just guessing.
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