Contents

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.