version 1.88.8.2, 2006/08/11 15:46:33 |
version 1.90.4.1, 2006/11/18 21:39:36 |
Line 516 rip_usrreq(struct socket *so, int req, |
|
Line 516 rip_usrreq(struct socket *so, int req, |
|
return (in_control(so, (long)m, (caddr_t)nam, |
return (in_control(so, (long)m, (caddr_t)nam, |
(struct ifnet *)control, l)); |
(struct ifnet *)control, l)); |
|
|
|
s = splsoftnet(); |
|
|
if (req == PRU_PURGEIF) { |
if (req == PRU_PURGEIF) { |
in_pcbpurgeif0(&rawcbtable, (struct ifnet *)control); |
in_pcbpurgeif0(&rawcbtable, (struct ifnet *)control); |
in_purgeif((struct ifnet *)control); |
in_purgeif((struct ifnet *)control); |
in_pcbpurgeif(&rawcbtable, (struct ifnet *)control); |
in_pcbpurgeif(&rawcbtable, (struct ifnet *)control); |
|
splx(s); |
return (0); |
return (0); |
} |
} |
|
|
s = splsoftnet(); |
|
inp = sotoinpcb(so); |
inp = sotoinpcb(so); |
#ifdef DIAGNOSTIC |
#ifdef DIAGNOSTIC |
if (req != PRU_SEND && req != PRU_SENDOOB && control) |
if (req != PRU_SEND && req != PRU_SENDOOB && control) |
Line 541 rip_usrreq(struct socket *so, int req, |
|
Line 543 rip_usrreq(struct socket *so, int req, |
|
error = EISCONN; |
error = EISCONN; |
break; |
break; |
} |
} |
if (l == 0 || (error = kauth_authorize_generic(l->l_cred, |
|
KAUTH_GENERIC_ISSUSER, &l->l_acflag))) { |
if (l == NULL) { |
error = EACCES; |
error = EACCES; |
break; |
break; |
} |
} |
|
|
|
/* XXX: raw socket permissions are checked in socreate() */ |
|
|
if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { |
if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { |
error = soreserve(so, rip_sendspace, rip_recvspace); |
error = soreserve(so, rip_sendspace, rip_recvspace); |
if (error) |
if (error) |