I've finished the timeout functionality so that the Tops-20 finger server will only wait so long before punting the connection (don't worry, I'm very generous...)

I'm now working on the logging functionality.  Again, on a connection interrupt, the finger server grabs a bunch of meta-data about the connection and displays it:

FNGSRV(1): Sunday, 6-October-2024 12:23:36.52412 AM-EDT
    From: VENTI2, User: SLOGIN, Data: STREAM*
    Object Type: Generic (FINGER), Segment Size: 1459
    Local Flow Control: Segment, Remote Flow Control: Segment
    Link Quota: Input Percentage: 50, Buffers: 16, Input Goal: 0

I have three concerns here (or maybe two and a half)

1)        I want to write this information to a log file,

2)        Since the data is written by concurrent server sub-forks,

a)        Data can get overwritten

b)        Latency to start the finger sub-sub-forks is increased

The solution is simple enough, I grab everything in the server sub-fork and ship it up to the controller through shared memory for later formatting and storage (and maybe printing).

When reviewing what meta-data can be gotten, I noticed that an explicit connection confirm (MTOPR% function .MOCC) can take a pointer to an optional sixteen bytes of data.  What I can't quite tell from the documentation is whether the server reads this or whether the server writes it.  I find myself being unsure of the wording.

  1. If the former (server sends), how does the client read it?
  2. If the latter (server reads), how does the client send it?

I don't see a single instance of any Tops-20 DECnet program using this, so no help there.  I think this is case 1., that is, the server has the option of writing it.  However, I was wondering what specification this is in (maybe NSP 4?) and where, so I could read it before I look at the monitor sources to see how the client would read it.  I'm assuming it would show up at the client as optional data?