Skip Navigation Links | |
Exit Print View | |
man pages section 9: DDI and DKI Driver Entry Points Oracle Solaris 11.1 Information Library |
- filter socket operations
#include <sys/sockfilter.h> sof_rval_t prefix_bind(sof_handle_t hdl, void *cookie, struct sockaddr *addr, socklen_t addrlen, cred_t *cr);
sof_rval_t prefix_listen(sof_handle_t hdl, void *cookie, int *backlogp, cred_t *cr);
sof_rval_t prefix_accepted(sof_handle_t hdl, void *cookie, cred_t *cr);
sof_rval_t prefix_connect(sof_handle_t hdl, void *cookie, struct sockaddr *addr, socklen_t addrlen, cred_t *cr);
sof_rval_t prefix_shutdown(sof_handle_t hdl, void *cookie, int *howp, cred_t *cr);
sof_rval_t prefix_getsockname(sof_handle_t hdl, void *cookie, struct sockaddr *addr, socklen_t *addrlenp, cred_t *cr);
sof_rval_t prefix_getpeername(sof_handle_t hdl, void *cookie, struct sockaddr *addr, socklen_t *addrlenp, cred_t *cr);
sof_rval_t prefix_setsockopt(sof_handle_t hdl, void *cookie, int level, int options, void *opt, socklen_t *optlenp, cred_t *cr);
sof_rval_t prefix_getsockopt(sof_handle_t hdl, void *cookie, int level, int option, void *opt, socklen_t *optlenp, cred_t *cr);
per-socket filter handle
per-socket filter-private data
pointer to the user credential structure for the operation
pointer to address
address length, in bytes
pointer to address length, in bytes
pointer to backlog value
level of the socket option
name of the socket option
pointer to option data
pointer to options data length, in bytes
The entry points described below are called in response to socket operations being issued on a socket to which the filter is attached. A filter can interrupt an operation, causing it to return immediately, by either returning an error, or SOF_RVAL_RETURN. Returning an error causes the operation to report a failure.
The sofop_bind() entry point is called when a bind(3SOCKET) operation is issued on the socket. The filter can modify the address.
The sofop_listen() entry point is called when a listen(3SOCKET) operation is issued on the socket. The filter can modify the backlog size.
The sofop_accepted() entry point is called when the socket has been accepted from the listener's accept queue. Returning an error will cause the connection to terminate, and accept(3SOCKET) will report the failure.
The sofop_connect() entry point is called when a connect(3SOCKET) operation is issued on the socket. The filter can modify the address.
The sofop_shutdown() entry point is called when a shutdown() operation is issued on the socket. The filter can modify how the socket is to be shut down, but the value must be one of the valid values listed in shutdown(3SOCKET).
The sofop_getsockname() entry point is called when a getsockname(3SOCKET) operation is issued on the socket. The filter can modify the address and address length. The address length can only be reduced.
The sofop_getpeername() entry point is called when a getpeername(3SOCKET) operation is issued on the socket. The filter can modify the address and address length. The address length can only be reduced.
The sofop_setsockopt() entry point is called when a setsockopt(3SOCKET) operations is issued on the socket. The filter can to modify the option data and option data length. The option data length can only be reduced.
The sofop_getsockopt() entry point is called when a getsockopt(3SOCKET) operation is issued on the socket. The filter can modify the option data and option data length. The option data length can only be reduced.
The sofop_bind(), sofop_listen(), sofop_accepted(), sofop_connect(), sofop_shutdown(), sofop_getsockname(), sofop_getpeername(), sofop_setsockopt(), and sofop_getsockopt() entry points return:
The operation will continue as normal.
An argument was invalid.
There was insufficient memory for the operation to complete.
Permission was denied.
The filter satisfied the request, and the operation will return immediately without being processed by the protocol.
The sofop_accepted() entry point may also return:
Software caused the connection to abort.
All entry points can be called from kernel or user context.
See attributes(5) for descriptions of the following attributes:
|
accept(3SOCKET), bind(3SOCKET), connect(3SOCKET), getpeername(3SOCKET), getsockname(3SOCKET), getsockopt(3SOCKET), listen(3SOCKET), setsockopt(3SOCKET), shutdown(3SOCKET), attributes(5), sof_bypass(9F), sof_flowctrl_data_in(9F), sof_inject_data_in(9F), sof_ops(9S)