Type Alias

sf_data_in_func

Declaration

typedef errno_t (*sf_data_in_func)(void *cookie, socket_t so, const struct sockaddr *from, mbuf_t *data, mbuf_t *control, sflt_data_flag_t flags);

Parameters

cookie

Cookie value specified when the filter attach was called.

so

The socket the filter is attached to.

from

The addres the data is from, may be NULL if the socket is connected.

data

The data being received. Control data may appear in the mbuf chain, be sure to check the mbuf types to find control data.

control

Control data being passed separately from the data.

flags

Flags to indicate if this is out of band data or a record.

Return Value

Return: 0 - The caller will continue with normal processing of the data. EJUSTRETURN - The caller will stop processing the data, the data will not be freed. Anything Else - The caller will free the data and stop processing.

Discussion

sf_data_in_func is called to filter incoming data. If your filter intercepts data for later reinjection, it must queue all incoming data to preserve the order of the data. Use sock_inject_data_in to later reinject this data if you return EJUSTRETURN. Warning: This filter is on the data path. Do not spend excesive time. Do not wait for data on another socket.