[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

UX400S RPC facilities

    Date: Wed, 07 Feb 90 01:44:33 -0500
    From: magerman@linc.cis.upenn.edu

    I have been having trouble getting the RPC functions to work on my
    UX400 talking to a Sun4.  I have the service UNIX-REXEC TCP UNIX-REXEC
    in the sun's namespace entry like the manual says, and I get an error saying
    that there is no path to the sun host for the service UNIX-REXEC via TCP.
    It says further that there is a path via BYTE-STREAM.  So, I add the service
    UNIX-REXEC BYTE-STREAM UNIX-REXEC to the sun host.  Then I get the illogical
    message that: There is no path for service UNIX-REXEC via BYTE-STREAM, the
    only path is via BYTE-STREAM.

The error message is extremely confusing; luckily (for you), a similar
thing just happened at one of our customers, so I remember the cause.
This happens when there's no entry for the protocol name in the alist
that maps protocol names to TCP ports.  What do the following two
function calls return?

(tcp:protocol-name-tcp-port :unix-rexec)

(tcp:tcp-port-protocol-name 512)

My guess is that the first will return NIL.  If the second returns
something, then you have a conflict (this might happen if you have a
copy of Thinking Machine's SHELL.LISP, which calls the protocol
:UNIX-EXEC).  TCP:ADD-TCP-PORT-FOR-PROTOCOL deletes any existing entries
in the alist that specify the same port.  This makes some sense for
protocols that the Lispm provides servers for (this same alist is used
to determine which server to run for an incoming connection), but for
outgoing-only protocols there's no danger of ambiguity (when I first
encountered this issue I suggested to Symbolics that there should be two
alists, one for servers and one for clients, and only the former would
require unique port numbers).

In any case, the fix is simple.  Do:

(tcp:add-tcp-port-for-protocol :unix-rexec 512)