|
NAME
SYNOPSIS
void
void
void
int
int
DESCRIPTIONThe A minimal struct domain {
/*
* Mandatory fields.
*/
int dom_family; /* PF_xxx, first argument of socket(2) */
char *dom_name; /* text name of the domain */
u_int dom_nprotosw; /* length of dom_protosw[] */
/*
* Following methods are optional.
*/
int (*dom_probe)(void); /* check for support */
struct rib_head *(*dom_rtattach)(uint32_t); /* init route table */
void (*dom_rtdetach)(struct rib_head *); /* clean up table */
void *(*dom_ifattach)(struct ifnet *); /* interface attach */
void (*dom_ifdetach)(struct ifnet *, void *);/* & detach callbacks */
int (*dom_ifmtu)(struct ifnet *); /* mtu change */
/*
* Mandatory variable size array of pointers to protosw structs.
*/
struct protosw *dom_protosw[];
};
Each domain contains the dom_protosw array
of protocol switch structures (struct protosw *), one
for each socket type supported. The array may have
struct protosw {
short pr_type; /* second argument of socket(2) */
short pr_protocol; /* third argument of socket(2) or 0 */
short pr_flags; /* see protosw.h */
pr_soreceive_t *pr_soreceive; /* recv(2) */
pr_rcvd_t *pr_rcvd; /* soreceive_generic() if PR_WANTRCV */
pr_sosend_t *pr_sosend; /* send(2) */
pr_send_t *pr_send; /* send(2) via sosend_generic() */
pr_ready_t *pr_ready; /* sendfile/ktls readyness */
pr_sopoll_t *pr_sopoll; /* poll(2) */
pr_attach_t *pr_attach; /* creation: socreate(), sonewconn() */
pr_detach_t *pr_detach; /* destruction: sofree() */
pr_connect_t *pr_connect; /* connect(2) */
pr_disconnect_t *pr_disconnect; /* sodisconnect() */
pr_close_t *pr_close; /* close(2) */
pr_shutdown_t *pr_shutdown; /* shutdown(2) */
pr_abort_t *pr_abort; /* abrupt tear down: soabort() */
pr_aio_queue_t *pr_aio_queue; /* aio(9) */
pr_bind_t *pr_bind; /* bind(2) */
pr_bindat_t *pr_bindat; /* bindat(2) */
pr_listen_t *pr_listen; /* listen(2) */
pr_accept_t *pr_accept; /* accept(2) */
pr_connectat_t *pr_connectat; /* connectat(2) */
pr_connect2_t *pr_connect2; /* socketpair(2) */
pr_control_t *pr_control; /* ioctl(2) */
pr_rcvoob_t *pr_rcvoob; /* soreceive_rcvoob() */
pr_ctloutput_t *pr_ctloutput; /* control output (from above) */
pr_peeraddr_t *pr_peeraddr; /* getpeername(2) */
pr_sockaddr_t *pr_sockaddr; /* getsockname(2) */
pr_sense_t *pr_sense; /* stat(2) */
};
The following functions handle the registration of new domains and protocols.
RETURN VALUESThe The
SEE ALSOHISTORYThe The AUTHORSThis manual page was written by Chad David
<davidc@acns.ab.ca>
and
|