xref: /minix/sys/sys/un.h (revision 0a6a1f1d)
1 /*	$NetBSD: un.h,v 1.56 2015/05/02 17:18:04 rtr 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  * Definitions for UNIX IPC domain.
48  */
49 struct	sockaddr_un {
50 	uint8_t		sun_len;	/* total sockaddr length */
51 	sa_family_t	sun_family;	/* AF_LOCAL */
52 	char		sun_path[104];	/* path name (gag) */
53 };
54 
55 /*
56  * Socket options for UNIX IPC domain.
57  */
58 #if defined(_NETBSD_SOURCE)
59 #define	LOCAL_CREDS	0x0001		/* pass credentials to receiver */
60 #define	LOCAL_CONNWAIT	0x0002		/* connects block until accepted */
61 #define	LOCAL_PEEREID	0x0003		/* get peer identification */
62 #endif
63 
64 /*
65  * Data automatically stored inside connect() for use by LOCAL_PEEREID
66  */
67 struct unpcbid {
68 	pid_t unp_pid;		/* process id */
69 	uid_t unp_euid;		/* effective user id */
70 	gid_t unp_egid;		/* effective group id */
71 };
72 
73 #ifdef _KERNEL
74 
75 struct unpcb;
76 struct socket;
77 struct sockopt;
78 struct sockaddr;
79 
80 extern const struct pr_usrreqs unp_usrreqs;
81 
82 int	uipc_ctloutput(int, struct socket *, struct sockopt *);
83 void	uipc_init(void);
84 kmutex_t *uipc_dgramlock(void);
85 kmutex_t *uipc_streamlock(void);
86 kmutex_t *uipc_rawlock(void);
87 
88 int	unp_connect(struct socket *, struct sockaddr *, struct lwp *);
89 int	unp_connect2(struct socket *, struct socket *);
90 void 	unp_dispose(struct mbuf *);
91 int 	unp_externalize(struct mbuf *, struct lwp *, int);
92 
93 #else /* !_KERNEL */
94 
95 /* actual length of an initialized sockaddr_un */
96 #if defined(_NETBSD_SOURCE)
97 #define SUN_LEN(su) \
98 	(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
99 #endif /* !_NetBSD_SOURCE */
100 #endif /* _KERNEL */
101 
102 #endif /* !_SYS_UN_H_ */
103