1/* 2 * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the project nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 */ 30 31/* 32 * Copyright (c) 1982, 1986, 1990, 1993 33 * The Regents of the University of California. All rights reserved. 34 * 35 * Redistribution and use in source and binary forms, with or without 36 * modification, are permitted provided that the following conditions 37 * are met: 38 * 1. Redistributions of source code must retain the above copyright 39 * notice, this list of conditions and the following disclaimer. 40 * 2. Redistributions in binary form must reproduce the above copyright 41 * notice, this list of conditions and the following disclaimer in the 42 * documentation and/or other materials provided with the distribution. 43 * 3. All advertising materials mentioning features or use of this software 44 * must display the following acknowledgement: 45 * This product includes software developed by the University of 46 * California, Berkeley and its contributors. 47 * 4. Neither the name of the University nor the names of its contributors 48 * may be used to endorse or promote products derived from this software 49 * without specific prior written permission. 50 * 51 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 52 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 53 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 54 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 55 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 56 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 57 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 58 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 59 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 60 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 61 * SUCH DAMAGE. 62 * 63 * @(#)in_pcb.h 8.1 (Berkeley) 6/10/93 64 */ 65 66#ifndef _NETINET6_IN6_PCB_H_ 67#define _NETINET6_IN6_PCB_H_ 68#include <sys/appleapiopts.h> 69 70#ifdef KERNEL_PRIVATE 71#define satosin6(sa) ((struct sockaddr_in6 *)(sa)) 72#define sin6tosa(sin6) ((struct sockaddr *)(sin6)) 73#define ifatoia6(ifa) ((struct in6_ifaddr *)(ifa)) 74 75#ifndef APPLE 76//void in6_pcbpurgeif0(struct in6pcb *, struct ifnet *); 77#endif 78void in6_losing(struct inpcb *); 79int in6_pcballoc(struct socket *, struct inpcbinfo *, struct proc *); 80int in6_pcbbind(struct inpcb *, struct sockaddr *, struct proc *); 81int in6_pcbconnect(struct inpcb *, struct sockaddr *, struct proc *); 82void in6_pcbdetach(struct inpcb *); 83void in6_pcbdisconnect(struct inpcb *); 84int in6_pcbladdr(struct inpcb *, struct sockaddr *, 85 struct in6_addr *); 86struct inpcb * 87 in6_pcblookup_local(struct inpcbinfo *, 88 struct in6_addr *, u_int, int); 89struct inpcb * 90 in6_pcblookup_hash(struct inpcbinfo *, 91 struct in6_addr *, u_int, struct in6_addr *, 92 u_int, int, struct ifnet *); 93void in6_pcbnotify(struct inpcbinfo *, struct sockaddr *, 94 u_int, const struct sockaddr *, u_int, int, 95 void (*)(struct inpcb *, int)); 96void 97 in6_rtchange(struct inpcb *, int); 98struct sockaddr * 99 in6_sockaddr(in_port_t port, struct in6_addr *addr_p); 100struct sockaddr * 101 in6_v4mapsin6_sockaddr(in_port_t port, struct in_addr *addr_p); 102int in6_setpeeraddr(struct socket *so, struct sockaddr **nam); 103int in6_setsockaddr(struct socket *so, struct sockaddr **nam); 104int in6_mapped_sockaddr(struct socket *so, struct sockaddr **nam); 105int in6_mapped_peeraddr(struct socket *so, struct sockaddr **nam); 106struct in6_addr *in6_selectsrc(struct sockaddr_in6 *, 107 struct ip6_pktopts *, 108 struct ip6_moptions *, 109 struct route_in6 *, struct in6_addr *, 110 struct in6_addr *, int *); 111int in6_selecthlim(struct in6pcb *, struct ifnet *); 112int in6_pcbsetport(struct in6_addr *, struct inpcb *, struct proc *, int); 113void init_sin6(struct sockaddr_in6 *sin6, struct mbuf *m); 114#endif KERNEL_PRIVATE 115 116#endif !_NETINET6_IN6_PCB_H_ 117