1 /* $NetBSD: un.h,v 1.25 2000/07/28 09:33:29 kleink 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. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by the University of 18 * California, Berkeley and its contributors. 19 * 4. Neither the name of the University nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)un.h 8.3 (Berkeley) 2/19/95 36 */ 37 38 #ifndef _SYS_UN_H_ 39 #define _SYS_UN_H_ 40 41 #include <sys/ansi.h> 42 43 #ifndef sa_family_t 44 typedef __sa_family_t sa_family_t; 45 #define sa_family_t __sa_family_t 46 #endif 47 48 /* 49 * Definitions for UNIX IPC domain. 50 */ 51 struct sockaddr_un { 52 u_int8_t sun_len; /* total sockaddr length */ 53 sa_family_t sun_family; /* AF_LOCAL */ 54 char sun_path[104]; /* path name (gag) */ 55 }; 56 57 /* 58 * Socket options for UNIX IPC domain. 59 */ 60 #if !defined(_XOPEN_SOURCE) 61 #define LOCAL_CREDS 0x0001 /* pass credentials to receiver */ 62 #endif 63 64 #ifdef _KERNEL 65 struct unpcb; 66 struct socket; 67 68 int unp_attach __P((struct socket *so)); 69 int unp_bind __P((struct unpcb *unp, struct mbuf *nam, struct proc *p)); 70 int unp_connect __P((struct socket *so, struct mbuf *nam, struct proc *p)); 71 int unp_connect2 __P((struct socket *so, struct socket *so2)); 72 void unp_detach __P((struct unpcb *unp)); 73 void unp_discard __P((struct file *fp)); 74 void unp_disconnect __P((struct unpcb *unp)); 75 void unp_drop __P((struct unpcb *unp, int errno)); 76 void unp_gc __P((void)); 77 void unp_mark __P((struct file *fp)); 78 void unp_scan __P((struct mbuf *m0, void (*op)(struct file *), int)); 79 void unp_shutdown __P((struct unpcb *unp)); 80 int unp_externalize __P((struct mbuf *)); 81 int unp_internalize __P((struct mbuf *, struct proc *)); 82 void unp_dispose __P((struct mbuf *)); 83 int unp_output __P((struct mbuf *, struct mbuf *, struct unpcb *, 84 struct proc *)); 85 void unp_setsockaddr __P((struct unpcb *, struct mbuf *)); 86 void unp_setpeeraddr __P((struct unpcb *, struct mbuf *)); 87 #else /* !_KERNEL */ 88 89 /* actual length of an initialized sockaddr_un */ 90 #if !defined(_XOPEN_SOURCE) 91 #define SUN_LEN(su) \ 92 (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path)) 93 #endif /* !_XOPEN_SOURCE */ 94 #endif /* _KERNEL */ 95 96 #endif /* !_SYS_UN_H_ */ 97