Date: Wed, 2 Oct 2002 14:26:49 -0400 (EDT) From: Robert Watson <rwatson@FreeBSD.org> To: net@FreeBSD.org Subject: NFS client code calls sosend() directly... Message-ID: <Pine.NEB.3.96L.1021002142420.46964I-100000@fledge.watson.org>
next in thread | raw e-mail | index | archive | help
I was groping around through the socket code today looking for more places to sprinkle mandatory access control magic, and noticed that in most parts of the system call and protocol-independent socket implementation, sosend() is never invoked directly: instead, pru_sosend() is invoked, and protocols have the option of implementing pru_sosend() using the central sosend(), or providing their own optimized implementation. However, the exception to this appears to be in the nfsclient code, where sosend is invoked directly on the socket: bootp_subr.c- bootp_subr.c: error = sosend(so, (struct sockaddr *) &dst, bootp_subr.c- &auio, NULL, NULL, 0, td); bootp_subr.c- if (error != 0) { ... krpc_subr.c- } krpc_subr.c: error = sosend(so, (struct sockaddr *)sa, NULL, m, krpc_subr.c- NULL, 0, td); krpc_subr.c- if (error) { It strikes me that instead it should be calling: error = so->so_proto->pr_usrreqs->pru_sosend(...) So that protocols can implement sosend as they see fit. The NFS server code appears to do this fine. Is this interpretation correct? Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert@fledge.watson.org Network Associates Laboratories To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1021002142420.46964I-100000>