Home | History | Annotate | Line # | Download | only in sys
      1 /*	$NetBSD: un.h,v 1.61 2023/11/08 19:27:13 jschauma Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1982, 1986, 1993
      5  *	The Regents of the University of California.  All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  * 3. Neither the name of the University nor the names of its contributors
     16  *    may be used to endorse or promote products derived from this software
     17  *    without specific prior written permission.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     29  * SUCH DAMAGE.
     30  *
     31  *	@(#)un.h	8.3 (Berkeley) 2/19/95
     32  */
     33 
     34 #ifndef _SYS_UN_H_
     35 #define _SYS_UN_H_
     36 
     37 #include <sys/ansi.h>
     38 #include <sys/featuretest.h>
     39 #include <sys/types.h>
     40 
     41 #ifndef sa_family_t
     42 typedef __sa_family_t	sa_family_t;
     43 #define sa_family_t	__sa_family_t
     44 #endif
     45 
     46 /*
     47  * Historically, (struct sockaddr) needed to fit inside an mbuf.
     48  * For this reason, UNIX domain sockets were therefore limited to
     49  * 104 bytes. While this limit is no longer necessary, it is kept for
     50  * binary compatibility reasons.
     51  */
     52 #define	SUNPATHLEN	104
     53 
     54 /*
     55  * Definitions for UNIX IPC domain.
     56  */
     57 struct	sockaddr_un {
     58 	uint8_t		sun_len;		/* total sockaddr length */
     59 	sa_family_t	sun_family;		/* AF_LOCAL */
     60 	char		sun_path[SUNPATHLEN];	/* path name (gag) */
     61 };
     62 
     63 /*
     64  * Socket options for UNIX IPC domain.
     65  */
     66 #if defined(_NETBSD_SOURCE)
     67 #define SOL_LOCAL	0		/* options level for getsockopt(2) */
     68 #define	LOCAL_OCREDS	0x0001		/* pass credentials to receiver */
     69 #define	LOCAL_CONNWAIT	0x0002		/* connects block until accepted */
     70 #define	LOCAL_PEEREID	0x0003		/* get peer identification */
     71 #define	LOCAL_CREDS	0x0004		/* pass credentials to receiver */
     72 #endif
     73 
     74 /*
     75  * Data automatically stored inside connect() for use by LOCAL_PEEREID
     76  */
     77 struct unpcbid {
     78 	pid_t unp_pid;		/* process id */
     79 	uid_t unp_euid;		/* effective user id */
     80 	gid_t unp_egid;		/* effective group id */
     81 };
     82 
     83 #ifdef _KERNEL
     84 
     85 struct unpcb;
     86 struct socket;
     87 struct sockopt;
     88 struct sockaddr;
     89 
     90 extern const struct pr_usrreqs unp_usrreqs;
     91 
     92 int	uipc_ctloutput(int, struct socket *, struct sockopt *);
     93 void	uipc_init(void);
     94 kmutex_t *uipc_dgramlock(void);
     95 kmutex_t *uipc_streamlock(void);
     96 kmutex_t *uipc_rawlock(void);
     97 
     98 int	unp_connect(struct socket *, struct sockaddr *, struct lwp *);
     99 int	unp_connect2(struct socket *, struct socket *);
    100 void 	unp_dispose(struct mbuf *);
    101 int 	unp_externalize(struct mbuf *, struct lwp *, int);
    102 
    103 #else /* !_KERNEL */
    104 
    105 /* actual length of an initialized sockaddr_un */
    106 #if defined(_NETBSD_SOURCE)
    107 #define SUN_LEN(su) \
    108 	(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
    109 #endif /* !_NetBSD_SOURCE */
    110 #endif /* _KERNEL */
    111 
    112 #endif /* !_SYS_UN_H_ */
    113