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