Annotation of src/sys/sys/un.h, Revision 1.42
1.42 ! yamt 1: /* $NetBSD: un.h,v 1.41 2008/02/23 09:37:54 is Exp $ */
1.8 cgd 2:
1.1 cgd 3: /*
1.6 mycroft 4: * Copyright (c) 1982, 1986, 1993
5: * The Regents of the University of California. All rights reserved.
1.1 cgd 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.
1.30 agc 15: * 3. Neither the name of the University nor the names of its contributors
1.1 cgd 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: *
1.18 fvdl 31: * @(#)un.h 8.3 (Berkeley) 2/19/95
1.1 cgd 32: */
33:
1.13 mikel 34: #ifndef _SYS_UN_H_
35: #define _SYS_UN_H_
36:
1.24 kleink 37: #include <sys/ansi.h>
1.26 bjh21 38: #include <sys/featuretest.h>
1.40 he 39: #include <sys/types.h>
1.24 kleink 40:
41: #ifndef sa_family_t
42: typedef __sa_family_t sa_family_t;
1.25 kleink 43: #define sa_family_t __sa_family_t
1.24 kleink 44: #endif
45:
1.1 cgd 46: /*
47: * Definitions for UNIX IPC domain.
48: */
49: struct sockaddr_un {
1.38 perry 50: uint8_t sun_len; /* total sockaddr length */
1.24 kleink 51: sa_family_t sun_family; /* AF_LOCAL */
1.23 danw 52: char sun_path[104]; /* path name (gag) */
1.1 cgd 53: };
54:
1.17 thorpej 55: /*
56: * Socket options for UNIX IPC domain.
57: */
1.26 bjh21 58: #if defined(_NETBSD_SOURCE)
1.17 thorpej 59: #define LOCAL_CREDS 0x0001 /* pass credentials to receiver */
1.33 matt 60: #define LOCAL_CONNWAIT 0x0002 /* connects block until accepted */
1.40 he 61: #define LOCAL_PEEREID 0x0003 /* get peer identification */
1.22 kleink 62: #endif
1.17 thorpej 63:
1.40 he 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:
1.10 jtc 73: #ifdef _KERNEL
1.6 mycroft 74: struct unpcb;
1.11 christos 75: struct socket;
1.4 andrew 76:
1.35 matt 77: int uipc_usrreq(struct socket *, int, struct mbuf *,
1.37 christos 78: struct mbuf *, struct mbuf *, struct lwp *);
1.35 matt 79: int uipc_ctloutput(int, struct socket *, int, int, struct mbuf **);
80:
1.34 matt 81: int unp_attach (struct socket *);
1.37 christos 82: int unp_bind (struct unpcb *, struct mbuf *, struct lwp *);
83: int unp_connect (struct socket *, struct mbuf *, struct lwp *);
1.34 matt 84: int unp_connect2 (struct socket *, struct socket *, int);
85: void unp_detach (struct unpcb *);
86: void unp_discard (struct file *);
87: void unp_disconnect (struct unpcb *);
88: void unp_drop (struct unpcb *, int);
89: void unp_gc (void);
90: void unp_mark (struct file *);
91: void unp_scan (struct mbuf *, void (*)(struct file *), int);
92: void unp_shutdown (struct unpcb *);
1.37 christos 93: int unp_externalize (struct mbuf *, struct lwp *);
1.42 ! yamt 94: int unp_internalize (struct mbuf **, struct lwp *);
1.34 matt 95: void unp_dispose (struct mbuf *);
96: int unp_output (struct mbuf *, struct mbuf *, struct unpcb *,
1.39 ad 97: struct lwp *);
1.34 matt 98: void unp_setsockaddr (struct unpcb *, struct mbuf *);
99: void unp_setpeeraddr (struct unpcb *, struct mbuf *);
1.10 jtc 100: #else /* !_KERNEL */
1.1 cgd 101:
102: /* actual length of an initialized sockaddr_un */
1.26 bjh21 103: #if defined(_NETBSD_SOURCE)
1.1 cgd 104: #define SUN_LEN(su) \
1.15 cgd 105: (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
1.41 is 106: #endif /* !_NetBSD_SOURCE */
1.10 jtc 107: #endif /* _KERNEL */
1.13 mikel 108:
109: #endif /* !_SYS_UN_H_ */
CVSweb <webmaster@jp.NetBSD.org>