summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/in6_pcb.h
diff options
context:
space:
mode:
authortruckman <truckman@FreeBSD.org>2002-08-21 11:57:12 +0000
committertruckman <truckman@FreeBSD.org>2002-08-21 11:57:12 +0000
commit7199888e8f06576febc8146d51d09b781470e8ce (patch)
tree20c70efb8a65a6f9c615daec57afaba3656fe3cc /sys/netinet6/in6_pcb.h
parent2d2341a634a0d5c812cce6d8552614bd05f799c4 (diff)
downloadFreeBSD-src-7199888e8f06576febc8146d51d09b781470e8ce.zip
FreeBSD-src-7199888e8f06576febc8146d51d09b781470e8ce.tar.gz
Create new functions in_sockaddr(), in6_sockaddr(), and
in6_v4mapsin6_sockaddr() which allocate the appropriate sockaddr_in* structure and initialize it with the address and port information passed as arguments. Use calls to these new functions to replace code that is replicated multiple times in in_setsockaddr(), in_setpeeraddr(), in6_setsockaddr(), in6_setpeeraddr(), in6_mapped_sockaddr(), and in6_mapped_peeraddr(). Inline COMMON_END in tcp_usr_accept() so that we can call in_sockaddr() with temporary copies of the address and port after the PCB is unlocked. Fix the lock violation in tcp6_usr_accept() (caused by calling MALLOC() inside in6_mapped_peeraddr() while the PCB is locked) by changing the implementation of tcp6_usr_accept() to match tcp_usr_accept(). Reviewed by: suz
Diffstat (limited to 'sys/netinet6/in6_pcb.h')
-rw-r--r--sys/netinet6/in6_pcb.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netinet6/in6_pcb.h b/sys/netinet6/in6_pcb.h
index 5098a12..6d5c609 100644
--- a/sys/netinet6/in6_pcb.h
+++ b/sys/netinet6/in6_pcb.h
@@ -95,6 +95,10 @@ void in6_pcbnotify __P((struct inpcbhead *, struct sockaddr *,
struct inpcb *(*)(struct inpcb *, int)));
struct inpcb *
in6_rtchange __P((struct inpcb *, int));
+struct sockaddr *
+ in6_sockaddr __P((in_port_t port, struct in6_addr *addr_p));
+struct sockaddr *
+ in6_v4mapsin6_sockaddr __P((in_port_t port, struct in_addr *addr_p));
int in6_setpeeraddr __P((struct socket *so, struct sockaddr **nam));
int in6_setsockaddr __P((struct socket *so, struct sockaddr **nam));
int in6_mapped_sockaddr __P((struct socket *so, struct sockaddr **nam));
OpenPOWER on IntegriCloud