Date: Fri, 16 Mar 2007 13:47:06 +0100 From: Hartmut Brandt <Hartmut.Brandt@dlr.de> To: Maxim Konovalov <maxim@macomnet.ru> Cc: freebsd-current@freebsd.org Subject: Re: LOCAL_CREDS socket option Message-ID: <45FA91CA.4030300@dlr.de> In-Reply-To: <20070316145524.T40420@mp2.macomnet.net> References: <20070316104749.J88087@knop-beagle.kn.op.dlr.de> <20070316145524.T40420@mp2.macomnet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Maxim Konovalov wrote:
> On Fri, 16 Mar 2007, 10:51+0100, Harti Brandt wrote:
>
>
>> Hi,
>>
>> is there any specific reason that we don't support the LOCAL_CREDS
>> option for SOCK_DGRAM sockets in the local domain? It's documented
>> in unix(4) for a long time and it looks like it is supported, for
>> example, in NetBSD.
>>
>
> IIRC it is supported.
>
> From tools/regression/sockets/unix_cmsg/README:
>
> For SOCK_DGRAM sockets:
> ----------------------
> [...]
> 3: Sending cmsgcred, receiving sockcred
>
> Server creates datagram socket and set socket option LOCAL_CREDS
> for it. Client sends one message with data and control message with
> SOCK_CREDS type to Server. Server should receive one message with
> data and control message with SCM_CREDS type followed by struct
> sockcred{} and this structure should contain correct information.
>
>
Well, this comment does not actually mean, that the feature works - it
just means that the regression test tests it. If you look at uipc_usrreq.c:
static struct protosw localsw[] = {
{
.pr_type = SOCK_STREAM,
.pr_domain = &localdomain,
.pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS,
.pr_ctloutput = &uipc_ctloutput,
.pr_usrreqs = &uipc_usrreqs
},
{
.pr_type = SOCK_DGRAM,
.pr_domain = &localdomain,
.pr_flags = PR_ATOMIC|PR_ADDR|PR_RIGHTS,
.pr_usrreqs = &uipc_usrreqs
},
you see that .pr_ctloutput is NULL for SOCK_DGRAM sockets which means they don't
support any of the socket options described in unix(4). Also I included that feature
into bsnmp(1) where I found out that it doesn't work. I've a patch to fix it, but wanted
to know whether it was left out on purpose or not.
harti
};
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45FA91CA.4030300>
