- unsigned long reserved[4]; /* for future use */
-};
-
-/*
- * sockif:
- * Contains socket interface:
- * dispatch vector abstracting the interface between protocols and
- * the socket layer.
- * TODO: add sf_sosense()
- */
-struct sockif
-{ int (*sf_soabort)(struct socket *, struct kextcb *);
- int (*sf_soaccept)(struct socket *, struct sockaddr **,
- struct kextcb *);
- int (*sf_sobind)(struct socket *, struct sockaddr *, struct kextcb *);
- int (*sf_soclose)(struct socket *, struct kextcb *);
- int (*sf_soconnect)(struct socket *, struct sockaddr *,
- struct kextcb *);
- int (*sf_soconnect2)(struct socket *, struct socket *,
- struct kextcb *);
- int (*sf_socontrol)(struct socket *, struct sockopt *,
- struct kextcb *);
- int (*sf_socreate)(struct socket *, struct protosw *, struct kextcb *);
- int (*sf_sodisconnect)(struct socket *, struct kextcb *);
- int (*sf_sofree)(struct socket *, struct kextcb *);
- int (*sf_sogetopt)(struct socket *, int, int, struct mbuf **,
- struct kextcb *);
- int (*sf_sohasoutofband)(struct socket *, struct kextcb *);
- int (*sf_solisten)(struct socket *, struct kextcb *);
- int (*sf_soreceive)(struct socket *, struct sockaddr **, struct uio **,
- struct mbuf **, struct mbuf **, int *,
- struct kextcb *);
- int (*sf_sorflush)(struct socket *, struct kextcb *);
- int (*sf_sosend)(struct socket *, struct sockaddr **, struct uio **,
- struct mbuf **, struct mbuf **, int *,
- struct kextcb *);
- int (*sf_sosetopt)(struct socket *, int, int, struct mbuf *,
- struct kextcb *);
- int (*sf_soshutdown)(struct socket *, int, struct kextcb *);
- /* Calls sorwakeup() */
- int (*sf_socantrcvmore)(struct socket *, struct kextcb *);
- /* Calls sowwakeup() */
- int (*sf_socantsendmore)(struct socket *, struct kextcb *);
- /* Calls soqinsque(), sorwakeup(), sowwakeup() */
- int (*sf_soisconnected)(struct socket *, struct kextcb *);
- int (*sf_soisconnecting)(struct socket *, struct kextcb *);
- /* Calls sowwakeup(), sorwakeup() */
- int (*sf_soisdisconnected)(struct socket *, struct kextcb *);
- /* Calls sowwakeup(), sorwakeup() */
- int (*sf_soisdisconnecting)(struct socket *, struct kextcb *);
- /* Calls soreserve(), soqinsque(), soqremque(), sorwakeup() */
- int (*sf_sonewconn)(struct socket *, int, struct kextcb *);
- int (*sf_soqinsque)(struct socket *, struct socket *, int,
- struct kextcb *);
- int (*sf_soqremque)(struct socket *, int, struct kextcb *);
- int (*sf_soreserve)(struct socket *, u_long, u_long, struct kextcb *);
- int (*sf_sowakeup)(struct socket *, struct sockbuf *,
- struct kextcb *);
- u_long reserved[4];
-};
-
-
-/*
- * sockutil:
- * Contains the utility functions for socket layer access
- */
-struct sockutil
-{ /* Sleeps if locked */
- int (*su_sb_lock)(struct sockbuf *, struct kextcb *);
- /* Conditionally calls sbappendrecord, Calls sbcompress */
- int (*su_sbappend)(struct sockbuf *, struct mbuf *, struct kextcb *);
- /* Calls sbspace(), sballoc() */
- int (*su_sbappendaddr)(struct sockbuf *, struct sockaddr *,
- struct mbuf *, struct mbuf *, struct kextcb *);
- /* Calls sbspace(), sballoc() */
- int (*su_sbappendcontrol)(struct sockbuf *, struct mbuf *,
- struct mbuf *, struct kextcb *);
- /* Calls sballoc(), sbcompress() */
- int (*su_sbappendrecord)(struct sockbuf *, struct mbuf *,
- struct kextcb *);
- /* Calls sballoc() */
- int (*su_sbcompress)(struct sockbuf *, struct mbuf *, struct mbuf *,
- struct kextcb *);
- /* Calls sbfree() */
- int (*su_sbdrop)(struct sockbuf *, int, struct kextcb *);
- /* Calls sbfree() */
- int (*su_sbdroprecord)(struct sockbuf *, struct kextcb *);
- /* Calls sbdrop() */
- int (*su_sbflush)(struct sockbuf *, struct kextcb *);
- /* Calls sballoc(), sbcompress() */
- int (*su_sbinsertoob)(struct sockbuf *, struct mbuf *,
- struct kextcb *);
- /* Calls sbflush() */
- int (*su_sbrelease)(struct sockbuf *, struct kextcb *);
- int (*su_sbreserve)(struct sockbuf *, u_long, struct kextcb *);
- /* Calls tsleep() */
- int (*su_sbwait)(struct sockbuf *, struct kextcb *);
- u_long reserved[4];