Go to main content

man pages section 9: DDI and DKI Driver Entry Points

Exit Print View

Updated: Thursday, June 13, 2019
 
 

sofop_bind(9E)

Name

sofop_bind, sofop_listen, sofop_connect, sofop_accepted, sofop_shutdown, sofop_getsockname, sofop_getpeername, sofop_setsockopt, sofop_getsockopt - filter socket operations

Synopsis

#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);

Parameters

hdl

per-socket filter handle

cookie

per-socket filter-private data

cr

pointer to the user credential structure for the operation

addr

pointer to address

addrlen

address length, in bytes

addrlenp

pointer to address length, in bytes

backlogp

pointer to backlog value

level

level of the socket option

option

name of the socket option

opt

pointer to option data

optlenp

pointer to options data length, in bytes

Description

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(3C) operation is issued on the socket. The filter can modify the address.

The sofop_listen() entry point is called when a listen(3C) 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(3C) will report the failure.

The sofop_connect() entry point is called when a connect(3C) 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(3C).

The sofop_getsockname() entry point is called when a getsockname(3C) 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(3C) 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(3C) 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(3C) 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.

Return Values

The sofop_bind(), sofop_listen(), sofop_accepted(), sofop_connect(), sofop_shutdown(), sofop_getsockname(), sofop_getpeername(), sofop_setsockopt(), and sofop_getsockopt() entry points return:

SOF_RVAL_CONTINUE

The operation will continue as normal.

SOF_RVAL_EINVAL

An argument was invalid.

SOF_RVAL_ENOMEM

There was insufficient memory for the operation to complete.

SOF_RVAL_EPERM

Permission was denied.

SOF_RVAL_RETURN

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:

SOF_RVAL_ECONNABORTED

Software caused the connection to abort.

Context

All entry points can be called from kernel or user context.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Availability
system/kernel
Interface Stability
Uncommitted

See Also

accept(3C), bind(3C), connect(3C), getpeername(3C), getsockname(3C), getsockopt(3C), listen(3C), setsockopt(3C), shutdown(3C), attributes(7), sof_bypass(9F), sof_flowctrl_data_in(9F), sof_inject_data_in(9F), sof_ops(9S)