sockfilter.h revision 3e95bd4ab92abca814bd28e854607d1975c7dc88
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
#ifndef _SYS_SOCKFILTER_H
#define _SYS_SOCKFILTER_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* Opaque socket filter handle
*/
typedef struct __sof_handle *sof_handle_t;
/*
* Return values for callback functions.
*
* P - Passive attach only
*/
typedef enum {
SOF_RVAL_RETURN = 0, /* stop proc, does not return error */
} sof_rval_t;
/*
* Events generated by the sofop_notify callback.
*/
typedef enum { /* socket ... */
SOF_EV_CLOSING, /* ... is closing */
SOF_EV_CONNECTED, /* ... is connected */
SOF_EV_CONNECTFAILED, /* ... failed to connect */
SOF_EV_DISCONNECTED, /* ... was disconnected */
SOF_EV_CANTRECVMORE, /* ... cannot receive any more data */
SOF_EV_CANTSENDMORE, /* ... cannot send any more data */
SOF_EV_INJECT_DATA_IN_OK, /* ... has cleared rcv flow ctrl */
SOF_EV_INJECT_DATA_OUT_OK, /* ... has cleared snd flow ctrl */
} sof_event_t;
/* Filter callbacks */
cred_t *, void **);
void **);
int, size_t *);
cred_t *);
cred_t *);
typedef struct sof_ops {
} sof_ops_t;
#define SOF_VERSION 1
extern int sof_register(int, const char *, const sof_ops_t *, int);
extern int sof_unregister(const char *);
extern void sof_newconn_ready(sof_handle_t);
extern void sof_bypass(sof_handle_t);
extern void *sof_get_cookie(sof_handle_t);
extern void *sof_cas_cookie(sof_handle_t, void *, void *);
boolean_t *);
boolean_t *);
#ifdef __cplusplus
}
#endif
#endif /* _SYS_SOCKFILTER_H */