| version 1.48, 1999/06/08 02:39:57 |
version 1.48.2.1, 2000/11/20 18:09:14 |
|
|
| |
|
| struct pool socket_pool; |
struct pool socket_pool; |
| |
|
| |
extern int somaxconn; /* patchable (XXX sysctl) */ |
| |
int somaxconn = SOMAXCONN; |
| |
|
| void |
void |
| soinit() |
soinit() |
| { |
{ |
|
|
| socreate(dom, aso, type, proto) |
socreate(dom, aso, type, proto) |
| int dom; |
int dom; |
| struct socket **aso; |
struct socket **aso; |
| register int type; |
int type; |
| int proto; |
int proto; |
| { |
{ |
| struct proc *p = curproc; /* XXX */ |
struct proc *p = curproc; /* XXX */ |
| register struct protosw *prp; |
struct protosw *prp; |
| register struct socket *so; |
struct socket *so; |
| register int error; |
int error; |
| int s; |
int s; |
| |
|
| if (proto) |
if (proto) |
|
|
| |
|
| int |
int |
| solisten(so, backlog) |
solisten(so, backlog) |
| register struct socket *so; |
struct socket *so; |
| int backlog; |
int backlog; |
| { |
{ |
| int s = splsoftnet(), error; |
int s = splsoftnet(), error; |
| Line 154 solisten(so, backlog) |
|
| Line 157 solisten(so, backlog) |
|
| so->so_options |= SO_ACCEPTCONN; |
so->so_options |= SO_ACCEPTCONN; |
| if (backlog < 0) |
if (backlog < 0) |
| backlog = 0; |
backlog = 0; |
| so->so_qlimit = min(backlog, SOMAXCONN); |
so->so_qlimit = min(backlog, somaxconn); |
| splx(s); |
splx(s); |
| return (0); |
return (0); |
| } |
} |
| |
|
| void |
void |
| sofree(so) |
sofree(so) |
| register struct socket *so; |
struct socket *so; |
| { |
{ |
| |
|
| if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0) |
if (so->so_pcb || (so->so_state & SS_NOFDREF) == 0) |
|
|
| */ |
*/ |
| int |
int |
| soclose(so) |
soclose(so) |
| register struct socket *so; |
struct socket *so; |
| { |
{ |
| struct socket *so2; |
struct socket *so2; |
| int s = splsoftnet(); /* conservative */ |
int s = splsoftnet(); /* conservative */ |
|
|
| |
|
| int |
int |
| soaccept(so, nam) |
soaccept(so, nam) |
| register struct socket *so; |
struct socket *so; |
| struct mbuf *nam; |
struct mbuf *nam; |
| { |
{ |
| int s = splsoftnet(); |
int s = splsoftnet(); |
| Line 275 soaccept(so, nam) |
|
| Line 278 soaccept(so, nam) |
|
| |
|
| int |
int |
| soconnect(so, nam) |
soconnect(so, nam) |
| register struct socket *so; |
struct socket *so; |
| struct mbuf *nam; |
struct mbuf *nam; |
| { |
{ |
| struct proc *p = curproc; /* XXX */ |
struct proc *p = curproc; /* XXX */ |
| Line 304 soconnect(so, nam) |
|
| Line 307 soconnect(so, nam) |
|
| |
|
| int |
int |
| soconnect2(so1, so2) |
soconnect2(so1, so2) |
| register struct socket *so1; |
struct socket *so1; |
| struct socket *so2; |
struct socket *so2; |
| { |
{ |
| int s = splsoftnet(); |
int s = splsoftnet(); |
| Line 319 soconnect2(so1, so2) |
|
| Line 322 soconnect2(so1, so2) |
|
| |
|
| int |
int |
| sodisconnect(so) |
sodisconnect(so) |
| register struct socket *so; |
struct socket *so; |
| { |
{ |
| int s = splsoftnet(); |
int s = splsoftnet(); |
| int error; |
int error; |
|
|
| */ |
*/ |
| int |
int |
| sosend(so, addr, uio, top, control, flags) |
sosend(so, addr, uio, top, control, flags) |
| register struct socket *so; |
struct socket *so; |
| struct mbuf *addr; |
struct mbuf *addr; |
| struct uio *uio; |
struct uio *uio; |
| struct mbuf *top; |
struct mbuf *top; |
| Line 369 sosend(so, addr, uio, top, control, flag |
|
| Line 372 sosend(so, addr, uio, top, control, flag |
|
| { |
{ |
| struct proc *p = curproc; /* XXX */ |
struct proc *p = curproc; /* XXX */ |
| struct mbuf **mp; |
struct mbuf **mp; |
| register struct mbuf *m; |
struct mbuf *m; |
| register long space, len, resid; |
long space, len, resid; |
| int clen = 0, error, s, dontroute, mlen; |
int clen = 0, error, s, dontroute, mlen; |
| int atomic = sosendallatonce(so) || top; |
int atomic = sosendallatonce(so) || top; |
| |
|
|
|
| */ |
*/ |
| int |
int |
| soreceive(so, paddr, uio, mp0, controlp, flagsp) |
soreceive(so, paddr, uio, mp0, controlp, flagsp) |
| register struct socket *so; |
struct socket *so; |
| struct mbuf **paddr; |
struct mbuf **paddr; |
| struct uio *uio; |
struct uio *uio; |
| struct mbuf **mp0; |
struct mbuf **mp0; |
| struct mbuf **controlp; |
struct mbuf **controlp; |
| int *flagsp; |
int *flagsp; |
| { |
{ |
| register struct mbuf *m, **mp; |
struct mbuf *m, **mp; |
| register int flags, len, error, s, offset; |
int flags, len, error, s, offset; |
| struct protosw *pr = so->so_proto; |
struct protosw *pr = so->so_proto; |
| struct mbuf *nextrecord; |
struct mbuf *nextrecord; |
| int moff, type = 0; |
int moff, type = 0; |
| Line 872 soshutdown(so, how) |
|
| Line 875 soshutdown(so, how) |
|
| |
|
| void |
void |
| sorflush(so) |
sorflush(so) |
| register struct socket *so; |
struct socket *so; |
| { |
{ |
| register struct sockbuf *sb = &so->so_rcv; |
struct sockbuf *sb = &so->so_rcv; |
| register struct protosw *pr = so->so_proto; |
struct protosw *pr = so->so_proto; |
| register int s; |
int s; |
| struct sockbuf asb; |
struct sockbuf asb; |
| |
|
| sb->sb_flags |= SB_NOINTR; |
sb->sb_flags |= SB_NOINTR; |
|
|
| |
|
| int |
int |
| sosetopt(so, level, optname, m0) |
sosetopt(so, level, optname, m0) |
| register struct socket *so; |
struct socket *so; |
| int level, optname; |
int level, optname; |
| struct mbuf *m0; |
struct mbuf *m0; |
| { |
{ |
| int error = 0; |
int error = 0; |
| register struct mbuf *m = m0; |
struct mbuf *m = m0; |
| |
|
| if (level != SOL_SOCKET) { |
if (level != SOL_SOCKET) { |
| if (so->so_proto && so->so_proto->pr_ctloutput) |
if (so->so_proto && so->so_proto->pr_ctloutput) |
|
|
| |
|
| int |
int |
| sogetopt(so, level, optname, mp) |
sogetopt(so, level, optname, mp) |
| register struct socket *so; |
struct socket *so; |
| int level, optname; |
int level, optname; |
| struct mbuf **mp; |
struct mbuf **mp; |
| { |
{ |
| register struct mbuf *m; |
struct mbuf *m; |
| |
|
| if (level != SOL_SOCKET) { |
if (level != SOL_SOCKET) { |
| if (so->so_proto && so->so_proto->pr_ctloutput) { |
if (so->so_proto && so->so_proto->pr_ctloutput) { |
| Line 1121 sogetopt(so, level, optname, mp) |
|
| Line 1124 sogetopt(so, level, optname, mp) |
|
| |
|
| void |
void |
| sohasoutofband(so) |
sohasoutofband(so) |
| register struct socket *so; |
struct socket *so; |
| { |
{ |
| struct proc *p; |
struct proc *p; |
| |
|