* Copyright (c) 1982, 1986 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#include "../net/route.h"
int soo_rw(), soo_ioctl(), soo_select(), soo_close();
struct fileops socketops
=
{ soo_rw
, soo_ioctl
, soo_select
, soo_close
};
int soreceive(), sosend();
(*(rw
==UIO_READ
?soreceive
:sosend
))
((struct socket
*)fp
->f_data
, 0, uio
, 0, 0));
register struct socket
*so
= (struct socket
*)fp
->f_data
;
so
->so_state
&= ~SS_NBIO
;
so
->so_state
|= SS_ASYNC
;
so
->so_state
&= ~SS_ASYNC
;
*(int *)data
= so
->so_rcv
.sb_cc
;
so
->so_pgrp
= *(int *)data
;
*(int *)data
= so
->so_pgrp
;
*(int *)data
= (so
->so_state
&SS_RCVATMARK
) != 0;
* Interface/routing/protocol specific ioctls:
* interface and routing ioctls should have a
* different entry since a socket's unnecessary
#define cmdbyte(x) (((x) >> 8) & 0xff)
return (ifioctl(so
, cmd
, data
));
return (rtioctl(cmd
, data
));
return ((*so
->so_proto
->pr_usrreq
)(so
, PRU_CONTROL
,
(struct mbuf
*)cmd
, (struct mbuf
*)data
, (struct mbuf
*)0));
register struct socket
*so
= (struct socket
*)fp
->f_data
;
register int s
= splnet();
(so
->so_state
& SS_RCVATMARK
)) {
register struct socket
*so
;
register struct stat
*ub
;
bzero((caddr_t
)ub
, sizeof (*ub
));
return ((*so
->so_proto
->pr_usrreq
)(so
, PRU_SENSE
,
(struct mbuf
*)ub
, (struct mbuf
*)0,
error
= soclose((struct socket
*)fp
->f_data
);