| version 1.91, 2006/09/08 20:58:58 |
version 1.91.2.1, 2006/10/22 06:07:28 |
| 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 543 rip_usrreq(struct socket *so, int req, |
|
| Line 545 rip_usrreq(struct socket *so, int req, |
|
| } |
} |
| if (l == 0 || (error = kauth_authorize_network(l->l_cred, |
if (l == 0 || (error = kauth_authorize_network(l->l_cred, |
| KAUTH_NETWORK_SOCKET, |
KAUTH_NETWORK_SOCKET, |
| (void *)KAUTH_REQ_NETWORK_SOCKET_RAWSOCK, so, NULL, |
KAUTH_REQ_NETWORK_SOCKET_RAWSOCK, so, NULL, |
| NULL))) { |
NULL))) { |
| error = EACCES; |
error = EACCES; |
| break; |
break; |