Re: LOCAL_CREDS socket option

From: Maxim Konovalov <maxim_at_macomnet.ru>
Date: Fri, 16 Mar 2007 15:56:13 +0300 (MSK)
On Fri, 16 Mar 2007, 13:47+0100, Hartmut Brandt wrote:

> 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.

You are correct, it fails.

SERVER: setsockopt(LOCAL_CREDS) for datagram socket: Protocol not available
  3: Sending cmsgcred, receiving sockcred

-- 
Maxim Konovalov
Received on Fri Mar 16 2007 - 11:56:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:06 UTC