On Wed, 24 Oct 2001, Paul van der Zwan wrote:

> I have looked at a trace I made using snoop and it shows an NFS_ACL call which
> is not supported by FreeBSD. It should have sent a reply that it does not
> know the NFS_ACL protocol but apparently it does not.
> The only return traffic I see is an empty packet with the tcp ACK.
> It looks like an implementation error in the -current NFS server.
>       Paul

I have been digging at traces of 4.4-RELEASE (which works) and -current
(which doesn't).

Both versions get it wrong.  I have no idea why 4.4-RELEASE worked.

-current responds with a blank TCP packet (which it emphatically should
*not* do) to the GETACL3 call.  It *could* conceivably be received as an
RPC packet with the "Last Fragment" flag not set and a length of 0.  Who
knows what the Solaris 8 client is doing when it encounters this (probably
getting stuck waiting for more data which never comes).

4.4-RELEASE responds with an RPC packet indicating "success" (which is
*also* wrong if the NFS server doesn't support ACLs) and then puts what
looks to be garbage in the response.  However, it is a valid RPC reponse
with the "Last Fragment" flag set.  Presumably the Solaris client gets the
message, sees the last fragment, throws away the packet as an error and
continues on with life.

I presume that the "correct" response is to send back an RPC reply (with
the "Last Fragment" set) which indicates that the RPC message was accepted
but that the procedure was unavailable (PROC_UNAVAIL).  Hopefully this
matches what an older Solaris server would do when faced with a Solaris 8
client and everything will proceed normally from there.

If anybody wants ethereal traces, I can send them.  Just ask.

Andy L.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to