| version 1.108, 2005/02/26 21:34:55 |
version 1.108.2.2, 2006/10/25 07:53:19 |
| Line 461 socreate(int dom, struct socket **aso, i |
|
| Line 461 socreate(int dom, struct socket **aso, i |
|
| prp = pffindproto(dom, proto, type); |
prp = pffindproto(dom, proto, type); |
| else |
else |
| prp = pffindtype(dom, type); |
prp = pffindtype(dom, type); |
| if (prp == 0 || prp->pr_usrreq == 0) |
if (prp == 0) { |
| |
/* no support for domain */ |
| |
if (pffinddomain(dom) == 0) |
| |
return (EAFNOSUPPORT); |
| |
/* no support for socket type */ |
| |
if (proto == 0 && type != 0) |
| |
return (EPROTOTYPE); |
| |
return (EPROTONOSUPPORT); |
| |
} |
| |
if (prp->pr_usrreq == 0) |
| return (EPROTONOSUPPORT); |
return (EPROTONOSUPPORT); |
| if (prp->pr_type != type) |
if (prp->pr_type != type) |
| return (EPROTOTYPE); |
return (EPROTOTYPE); |
| Line 1405 sosetopt(struct socket *so, int level, i |
|
| Line 1414 sosetopt(struct socket *so, int level, i |
|
| error = EINVAL; |
error = EINVAL; |
| goto bad; |
goto bad; |
| } |
} |
| |
if (mtod(m, struct linger *)->l_linger < 0 || |
| |
mtod(m, struct linger *)->l_linger > (INT_MAX / hz)) { |
| |
error = EDOM; |
| |
goto bad; |
| |
} |
| so->so_linger = mtod(m, struct linger *)->l_linger; |
so->so_linger = mtod(m, struct linger *)->l_linger; |
| /* fall thru... */ |
/* fall thru... */ |
| |
|