version 1.83, 2005/02/03 23:16:40 |
version 1.88.12.1, 2006/05/24 15:50:45 |
Line 68 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 68 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include "opt_mrouting.h" |
#include "opt_mrouting.h" |
|
|
#include <sys/param.h> |
#include <sys/param.h> |
|
#include <sys/sysctl.h> |
#include <sys/malloc.h> |
#include <sys/malloc.h> |
#include <sys/mbuf.h> |
#include <sys/mbuf.h> |
#include <sys/socket.h> |
#include <sys/socket.h> |
Line 76 __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 87 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 89 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <netinet/ip_mroute.h> |
#include <netinet/ip_mroute.h> |
#include <netinet/ip_icmp.h> |
#include <netinet/ip_icmp.h> |
#include <netinet/in_pcb.h> |
#include <netinet/in_pcb.h> |
|
#include <netinet/in_proto.h> |
#include <netinet/in_var.h> |
#include <netinet/in_var.h> |
|
|
#include <machine/stdarg.h> |
#include <machine/stdarg.h> |
Line 500 u_long rip_recvspace = RIPRCVQ; |
|
Line 503 u_long rip_recvspace = RIPRCVQ; |
|
/*ARGSUSED*/ |
/*ARGSUSED*/ |
int |
int |
rip_usrreq(struct socket *so, int req, |
rip_usrreq(struct socket *so, int req, |
struct mbuf *m, struct mbuf *nam, struct mbuf *control, struct proc *p) |
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, p)); |
(struct ifnet *)control, p)); |
Line 538 rip_usrreq(struct socket *so, int req, |
|
Line 543 rip_usrreq(struct socket *so, int req, |
|
error = EISCONN; |
error = EISCONN; |
break; |
break; |
} |
} |
if (p == 0 || (error = suser(p->p_ucred, &p->p_acflag))) { |
if (p == 0 || (error = kauth_authorize_generic(p->p_cred, |
|
KAUTH_GENERIC_ISSUSER, &p->p_acflag))) { |
error = EACCES; |
error = EACCES; |
break; |
break; |
} |
} |
|
|
splx(s); |
splx(s); |
return (error); |
return (error); |
} |
} |
|
|
|
SYSCTL_SETUP(sysctl_net_inet_raw_setup, "sysctl net.inet.raw subtree setup") |
|
{ |
|
|
|
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
|
CTLTYPE_NODE, "net", NULL, |
|
NULL, 0, NULL, 0, |
|
CTL_NET, CTL_EOL); |
|
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
|
CTLTYPE_NODE, "inet", NULL, |
|
NULL, 0, NULL, 0, |
|
CTL_NET, PF_INET, CTL_EOL); |
|
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
|
CTLTYPE_NODE, "raw", |
|
SYSCTL_DESCR("Raw IPv4 settings"), |
|
NULL, 0, NULL, 0, |
|
CTL_NET, PF_INET, IPPROTO_RAW, CTL_EOL); |
|
|
|
sysctl_createv(clog, 0, NULL, NULL, |
|
CTLFLAG_PERMANENT, |
|
CTLTYPE_STRUCT, "pcblist", |
|
SYSCTL_DESCR("Raw IPv4 control block list"), |
|
sysctl_inpcblist, 0, &rawcbtable, 0, |
|
CTL_NET, PF_INET, IPPROTO_RAW, |
|
CTL_CREATE, CTL_EOL); |
|
} |