version 1.88.8.3, 2006/09/14 12:31:55 |
version 1.88.10.1, 2006/03/08 01:19:40 |
Line 77 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 77 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <sys/errno.h> |
#include <sys/errno.h> |
#include <sys/systm.h> |
#include <sys/systm.h> |
#include <sys/proc.h> |
#include <sys/proc.h> |
#include <sys/kauth.h> |
|
|
|
#include <net/if.h> |
#include <net/if.h> |
#include <net/route.h> |
#include <net/route.h> |
Line 506 rip_usrreq(struct socket *so, int req, |
|
Line 505 rip_usrreq(struct socket *so, int req, |
|
struct mbuf *m, struct mbuf *nam, struct mbuf *control, struct lwp *l) |
struct mbuf *m, struct mbuf *nam, struct mbuf *control, struct lwp *l) |
{ |
{ |
struct inpcb *inp; |
struct inpcb *inp; |
|
struct proc *p; |
int s; |
int s; |
int error = 0; |
int error = 0; |
#ifdef MROUTING |
#ifdef MROUTING |
extern struct socket *ip_mrouter; |
extern struct socket *ip_mrouter; |
#endif |
#endif |
|
|
|
p = l ? l->l_proc : NULL; |
if (req == PRU_CONTROL) |
if (req == PRU_CONTROL) |
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, p)); |
|
|
if (req == PRU_PURGEIF) { |
if (req == PRU_PURGEIF) { |
in_pcbpurgeif0(&rawcbtable, (struct ifnet *)control); |
in_pcbpurgeif0(&rawcbtable, (struct ifnet *)control); |
Line 541 rip_usrreq(struct socket *so, int req, |
|
Line 542 rip_usrreq(struct socket *so, int req, |
|
error = EISCONN; |
error = EISCONN; |
break; |
break; |
} |
} |
if (l == 0 || (error = kauth_authorize_network(l->l_cred, |
if (p == 0 || (error = generic_authorize(p->p_cred, |
KAUTH_NETWORK_SOCKET, |
KAUTH_GENERIC_ISSUSER, &p->p_acflag))) { |
(void *)KAUTH_REQ_NETWORK_SOCKET_RAWSOCK, so, NULL, |
|
NULL))) { |
|
error = EACCES; |
error = EACCES; |
break; |
break; |
} |
} |