socket.h

来自「非常好的dns解析软件」· C头文件 代码 · 共 753 行 · 第 1/2 页

H
753
字号
 * * \li	'task' is a valid task * * \li	'action' is a valid action * * RETURNS: * \li	ISC_R_SUCCESS * \li	ISC_R_NOMEMORY * \li	ISC_R_UNEXPECTED */isc_result_tisc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addressp,		   isc_task_t *task, isc_taskaction_t action,		   const void *arg);/*%< * Connect 'socket' to peer with address *saddr.  When the connection * succeeds, or when an error occurs, a CONNECT event with action 'action' * and arg 'arg' will be posted to the event queue for 'task'. * * Requires: * * \li	'socket' is a valid TCP socket * * \li	'addressp' points to a valid isc_sockaddr * * \li	'task' is a valid task * * \li	'action' is a valid action * * Returns: * * \li	ISC_R_SUCCESS * \li	ISC_R_NOMEMORY * \li	ISC_R_UNEXPECTED * * Posted event's result code: * * \li	ISC_R_SUCCESS * \li	ISC_R_TIMEDOUT * \li	ISC_R_CONNREFUSED * \li	ISC_R_NETUNREACH * \li	ISC_R_UNEXPECTED */isc_result_tisc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp);/*%< * Get the name of the peer connected to 'socket'. * * Requires: * * \li	'socket' is a valid TCP socket. * * Returns: * * \li	ISC_R_SUCCESS * \li	ISC_R_TOOSMALL * \li	ISC_R_UNEXPECTED */isc_result_tisc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp);/*%< * Get the name of 'socket'. * * Requires: * * \li	'socket' is a valid socket. * * Returns: * * \li	ISC_R_SUCCESS * \li	ISC_R_TOOSMALL * \li	ISC_R_UNEXPECTED *//*@{*/isc_result_tisc_socket_recv(isc_socket_t *sock, isc_region_t *region,		unsigned int minimum,		isc_task_t *task, isc_taskaction_t action, const void *arg);isc_result_tisc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,		 unsigned int minimum,		 isc_task_t *task, isc_taskaction_t action, const void *arg);isc_result_tisc_socket_recv2(isc_socket_t *sock, isc_region_t *region,		 unsigned int minimum, isc_task_t *task,		 isc_socketevent_t *event, unsigned int flags);/*! * Receive from 'socket', storing the results in region. * * Notes: * *\li	Let 'length' refer to the length of 'region' or to the sum of all *	available regions in the list of buffers '*buflist'. * *\li	If 'minimum' is non-zero and at least that many bytes are read, *	the completion event will be posted to the task 'task.'  If minimum *	is zero, the exact number of bytes requested in the region must * 	be read for an event to be posted.  This only makes sense for TCP *	connections, and is always set to 1 byte for UDP. * *\li	The read will complete when the desired number of bytes have been *	read, if end-of-input occurs, or if an error occurs.  A read done *	event with the given 'action' and 'arg' will be posted to the *	event queue of 'task'. * *\li	The caller may not modify 'region', the buffers which are passed *	into this function, or any data they refer to until the completion *	event is received. * *\li	For isc_socket_recvv(): *	On successful completion, '*buflist' will be empty, and the list of *	all buffers will be returned in the done event's 'bufferlist' *	member.  On error return, '*buflist' will be unchanged. * *\li	For isc_socket_recv2(): *	'event' is not NULL, and the non-socket specific fields are *	expected to be initialized. * *\li	For isc_socket_recv2(): *	The only defined value for 'flags' is ISC_SOCKFLAG_IMMEDIATE.  If *	set and the operation completes, the return value will be *	ISC_R_SUCCESS and the event will be filled in and not sent.  If the *	operation does not complete, the return value will be *	ISC_R_INPROGRESS and the event will be sent when the operation *	completes. * * Requires: * *\li	'socket' is a valid, bound socket. * *\li	For isc_socket_recv(): *	'region' is a valid region * *\li	For isc_socket_recvv(): *	'buflist' is non-NULL, and '*buflist' contain at least one buffer. * *\li	'task' is a valid task * *\li	For isc_socket_recv() and isc_socket_recvv(): *	action != NULL and is a valid action * *\li	For isc_socket_recv2(): *	event != NULL * * Returns: * *\li	#ISC_R_SUCCESS *\li	#ISC_R_INPROGRESS *\li	#ISC_R_NOMEMORY *\li	#ISC_R_UNEXPECTED * * Event results: * *\li	#ISC_R_SUCCESS *\li	#ISC_R_UNEXPECTED *\li	XXX needs other net-type errors *//*@}*//*@{*/isc_result_tisc_socket_send(isc_socket_t *sock, isc_region_t *region,		isc_task_t *task, isc_taskaction_t action, const void *arg);isc_result_tisc_socket_sendto(isc_socket_t *sock, isc_region_t *region,		  isc_task_t *task, isc_taskaction_t action, const void *arg,		  isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);isc_result_tisc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,		 isc_task_t *task, isc_taskaction_t action, const void *arg);isc_result_tisc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,		   isc_task_t *task, isc_taskaction_t action, const void *arg,		   isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);isc_result_tisc_socket_sendto2(isc_socket_t *sock, isc_region_t *region,		   isc_task_t *task,		   isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,		   isc_socketevent_t *event, unsigned int flags);/*! * Send the contents of 'region' to the socket's peer. * * Notes: * *\li	Shutting down the requestor's task *may* result in any *	still pending writes being dropped or completed, depending on the *	underlying OS implementation. * *\li	If 'action' is NULL, then no completion event will be posted. * *\li	The caller may not modify 'region', the buffers which are passed *	into this function, or any data they refer to until the completion *	event is received. * *\li	For isc_socket_sendv() and isc_socket_sendtov(): *	On successful completion, '*buflist' will be empty, and the list of *	all buffers will be returned in the done event's 'bufferlist' *	member.  On error return, '*buflist' will be unchanged. * *\li	For isc_socket_sendto2(): *	'event' is not NULL, and the non-socket specific fields are *	expected to be initialized. * *\li	For isc_socket_sendto2(): *	The only defined values for 'flags' are ISC_SOCKFLAG_IMMEDIATE *	and ISC_SOCKFLAG_NORETRY. * *\li	If ISC_SOCKFLAG_IMMEDIATE is set and the operation completes, the *	return value will be ISC_R_SUCCESS and the event will be filled *	in and not sent.  If the operation does not complete, the return *	value will be ISC_R_INPROGRESS and the event will be sent when *	the operation completes. * *\li	ISC_SOCKFLAG_NORETRY can only be set for UDP sockets.  If set *	and the send operation fails due to a transient error, the send *	will not be retried and the error will be indicated in the event. *	Using this option along with ISC_SOCKFLAG_IMMEDIATE allows the caller *	to specify a region that is allocated on the stack. * * Requires: * *\li	'socket' is a valid, bound socket. * *\li	For isc_socket_send(): *	'region' is a valid region * *\li	For isc_socket_sendv() and isc_socket_sendtov(): *	'buflist' is non-NULL, and '*buflist' contain at least one buffer. * *\li	'task' is a valid task * *\li	For isc_socket_sendv(), isc_socket_sendtov(), isc_socket_send(), and *	isc_socket_sendto(): *	action == NULL or is a valid action * *\li	For isc_socket_sendto2(): *	event != NULL * * Returns: * *\li	#ISC_R_SUCCESS *\li	#ISC_R_INPROGRESS *\li	#ISC_R_NOMEMORY *\li	#ISC_R_UNEXPECTED * * Event results: * *\li	#ISC_R_SUCCESS *\li	#ISC_R_UNEXPECTED *\li	XXX needs other net-type errors *//*@}*/isc_result_tisc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp);/*%< * Create a socket manager. * * Notes: * *\li	All memory will be allocated in memory context 'mctx'. * * Requires: * *\li	'mctx' is a valid memory context. * *\li	'managerp' points to a NULL isc_socketmgr_t. * * Ensures: * *\li	'*managerp' is a valid isc_socketmgr_t. * * Returns: * *\li	#ISC_R_SUCCESS *\li	#ISC_R_NOMEMORY *\li	#ISC_R_UNEXPECTED */voidisc_socketmgr_destroy(isc_socketmgr_t **managerp);/*%< * Destroy a socket manager. * * Notes: * *\li	This routine blocks until there are no sockets left in the manager, *	so if the caller holds any socket references using the manager, it *	must detach them before calling isc_socketmgr_destroy() or it will *	block forever. * * Requires: * *\li	'*managerp' is a valid isc_socketmgr_t. * *\li	All sockets managed by this manager are fully detached. * * Ensures: * *\li	*managerp == NULL * *\li	All resources used by the manager have been freed. */isc_sockettype_tisc_socket_gettype(isc_socket_t *sock);/*%< * Returns the socket type for "sock." * * Requires: * *\li	"sock" is a valid socket. *//*@{*/isc_boolean_tisc_socket_isbound(isc_socket_t *sock);voidisc_socket_ipv6only(isc_socket_t *sock, isc_boolean_t yes);/*%< * If the socket is an IPv6 socket set/clear the IPV6_IPV6ONLY socket * option if the host OS supports this option. * * Requires: *\li	'sock' is a valid socket. *//*@}*/voidisc_socket_cleanunix(isc_sockaddr_t *addr, isc_boolean_t active);/*%< * Cleanup UNIX domain sockets in the file-system.  If 'active' is true * then just unlink the socket.  If 'active' is false try to determine * if there is a listener of the socket or not.  If no listener is found * then unlink socket. * * Prior to unlinking the path is tested to see if it a socket. * * Note: there are a number of race conditions which cannot be avoided *       both in the filesystem and any application using UNIX domain *	 sockets (e.g. socket is tested between bind() and listen(), *	 the socket is deleted and replaced in the file-system between *	 stat() and unlink()). */isc_result_tisc_socket_permunix(isc_sockaddr_t *sockaddr, isc_uint32_t perm,                    isc_uint32_t owner, isc_uint32_t group);/*%< * Set ownership and file permissions on the UNIX domain socket. * * Note: On Solaris and SunOS this secures the directory containing *       the socket as Solaris and SunOS do not honour the filesytem *	 permissions on the socket. * * Requires: * \li	'sockaddr' to be a valid UNIX domain sockaddr. * * Returns: * \li	#ISC_R_SUCCESS * \li	#ISC_R_FAILURE */ISC_LANG_ENDDECLS#endif /* ISC_SOCKET_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?