2 * Copyright (c) 2003, 2004 Jeffrey M. Hsu. All rights reserved.
3 * Copyright (c) 2003, 2004 The DragonFly Project. All rights reserved.
5 * This code is derived from software contributed to The DragonFly Project
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
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 DragonFly Project nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific, prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
26 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * $DragonFly: src/sys/sys/socketops.h,v 1.12 2008/06/17 20:50:11 aggelos Exp $
41 #error "This file should not be included by userland programs."
45 #ifndef _SYS_PROTOSW_H_
46 #include <sys/protosw.h>
48 #ifndef _SYS_SOCKET_H_
49 #include <sys/socket.h>
51 #ifndef _SYS_SOCKETVAR_H_
52 #include <sys/socketvar.h>
56 * sosend() and soreceive() can block and also calls other pru_usrreq functions.
57 * They should not really be usrreq functions. Always call them directly from
58 * the process context rather than passing a message to the protocol thread.
61 so_pru_sosend(struct socket
*so
, struct sockaddr
*addr
, struct uio
*uio
,
62 struct mbuf
*top
, struct mbuf
*control
, int flags
, struct thread
*td
)
64 return ((*so
->so_proto
->pr_usrreqs
->pru_sosend
)(so
, addr
, uio
, top
,
69 so_pru_soreceive(struct socket
*so
, struct sockaddr
**paddr
, struct uio
*uio
,
70 struct sockbuf
*sio
, struct mbuf
**controlp
, int *flagsp
)
72 return ((*so
->so_proto
->pr_usrreqs
->pru_soreceive
)(so
, paddr
, uio
, sio
,
76 int so_pru_abort (struct socket
*so
);
77 int so_pru_accept (struct socket
*so
, struct sockaddr
**nam
);
78 int so_pru_attach (struct socket
*so
, int proto
, struct pru_attach_info
*ai
);
79 int so_pru_bind (struct socket
*so
, struct sockaddr
*nam
, struct thread
*td
);
80 int so_pru_connect (struct socket
*so
, struct sockaddr
*nam
, struct thread
*td
);
81 int so_pru_connect2 (struct socket
*so1
, struct socket
*so2
);
82 int so_pru_control (struct socket
*so
, u_long cmd
, caddr_t data
,
84 int so_pru_detach (struct socket
*so
);
85 int so_pru_disconnect (struct socket
*so
);
86 int so_pru_listen (struct socket
*so
, struct thread
*td
);
87 int so_pru_peeraddr (struct socket
*so
, struct sockaddr
**nam
);
88 int so_pru_rcvd (struct socket
*so
, int flags
);
89 int so_pru_rcvoob (struct socket
*so
, struct mbuf
*m
, int flags
);
90 int so_pru_send (struct socket
*so
, int flags
, struct mbuf
*m
,
91 struct sockaddr
*addr
, struct mbuf
*control
,
93 int so_pru_sense (struct socket
*so
, struct stat
*sb
);
94 int so_pru_shutdown (struct socket
*so
);
95 int so_pru_sockaddr (struct socket
*so
, struct sockaddr
**nam
);
96 int so_pru_sopoll (struct socket
*so
, int events
, struct ucred
*cred
);
97 int so_pru_ctloutput(struct socket
*so
, struct sockopt
*sopt
);
100 #endif /* _SYS_SOCKETOPS_H_ */