summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6.c18
-rw-r--r--sys/netinet6/in6_pcb.c16
-rw-r--r--sys/netinet6/in6_pcb.h8
-rw-r--r--sys/netinet6/in6_src.c6
-rw-r--r--sys/netinet6/in6_var.h2
-rw-r--r--sys/netinet6/ip6_input.c1
-rw-r--r--sys/netinet6/ip6_output.c19
-rw-r--r--sys/netinet6/ip6_var.h2
-rw-r--r--sys/netinet6/ip6protosw.h4
-rw-r--r--sys/netinet6/raw_ip6.c12
-rw-r--r--sys/netinet6/udp6_output.c8
-rw-r--r--sys/netinet6/udp6_usrreq.c22
-rw-r--r--sys/netinet6/udp6_var.h2
13 files changed, 61 insertions, 59 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index c6d0d60..c17bf55 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -131,7 +131,7 @@ const struct sockaddr_in6 sa6_any = {sizeof(sa6_any), AF_INET6,
0, 0, IN6ADDR_ANY_INIT, 0};
static int in6_lifaddr_ioctl __P((struct socket *, u_long, caddr_t,
- struct ifnet *, struct proc *));
+ struct ifnet *, struct thread *));
static int in6_ifinit __P((struct ifnet *, struct in6_ifaddr *,
struct sockaddr_in6 *, int));
static void in6_unlink_ifa __P((struct in6_ifaddr *, struct ifnet *));
@@ -361,12 +361,12 @@ in6_len2mask(mask, len)
#define ia62ifa(ia6) (&((ia6)->ia_ifa))
int
-in6_control(so, cmd, data, ifp, p)
+in6_control(so, cmd, data, ifp, td)
struct socket *so;
u_long cmd;
caddr_t data;
struct ifnet *ifp;
- struct proc *p;
+ struct thread *td;
{
struct in6_ifreq *ifr = (struct in6_ifreq *)data;
struct in6_ifaddr *ia = NULL;
@@ -374,7 +374,7 @@ in6_control(so, cmd, data, ifp, p)
int privileged;
privileged = 0;
- if (p == NULL || !suser(p))
+ if (td == NULL || !suser_td(td))
privileged++;
switch (cmd) {
@@ -438,7 +438,7 @@ in6_control(so, cmd, data, ifp, p)
return(EPERM);
/*fall through*/
case SIOCGLIFADDR:
- return in6_lifaddr_ioctl(so, cmd, data, ifp, p);
+ return in6_lifaddr_ioctl(so, cmd, data, ifp, td);
}
/*
@@ -1317,12 +1317,12 @@ in6_purgeif(ifp)
* address encoding scheme. (see figure on page 8)
*/
static int
-in6_lifaddr_ioctl(so, cmd, data, ifp, p)
+in6_lifaddr_ioctl(so, cmd, data, ifp, td)
struct socket *so;
u_long cmd;
caddr_t data;
struct ifnet *ifp;
- struct proc *p;
+ struct thread *td;
{
struct if_laddrreq *iflr = (struct if_laddrreq *)data;
struct ifaddr *ifa;
@@ -1430,7 +1430,7 @@ in6_lifaddr_ioctl(so, cmd, data, ifp, p)
in6_len2mask(&ifra.ifra_prefixmask.sin6_addr, prefixlen);
ifra.ifra_flags = iflr->flags & ~IFLR_PREFIX;
- return in6_control(so, SIOCAIFADDR_IN6, (caddr_t)&ifra, ifp, p);
+ return in6_control(so, SIOCAIFADDR_IN6, (caddr_t)&ifra, ifp, td);
}
case SIOCGLIFADDR:
case SIOCDLIFADDR:
@@ -1558,7 +1558,7 @@ in6_lifaddr_ioctl(so, cmd, data, ifp, p)
ifra.ifra_flags = ia->ia6_flags;
return in6_control(so, SIOCDIFADDR_IN6, (caddr_t)&ifra,
- ifp, p);
+ ifp, td);
}
}
}
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
index 5e8b3dd..fa67043 100644
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -120,10 +120,10 @@
struct in6_addr zeroin6_addr;
int
-in6_pcbbind(inp, nam, p)
+in6_pcbbind(inp, nam, td)
register struct inpcb *inp;
struct sockaddr *nam;
- struct proc *p;
+ struct thread *td;
{
struct socket *so = inp->inp_socket;
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)NULL;
@@ -187,8 +187,8 @@ in6_pcbbind(inp, nam, p)
struct inpcb *t;
/* GROSS */
- if (ntohs(lport) < IPV6PORT_RESERVED && p &&
- suser_xxx(0, p, PRISON_ROOT))
+ if (ntohs(lport) < IPV6PORT_RESERVED && td &&
+ suser_xxx(0, td->td_proc, PRISON_ROOT))
return(EACCES);
if (so->so_cred->cr_uid != 0 &&
!IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) {
@@ -246,7 +246,7 @@ in6_pcbbind(inp, nam, p)
}
if (lport == 0) {
int e;
- if ((e = in6_pcbsetport(&inp->in6p_laddr, inp, p)) != 0)
+ if ((e = in6_pcbsetport(&inp->in6p_laddr, inp, td)) != 0)
return(e);
}
else {
@@ -337,10 +337,10 @@ in6_pcbladdr(inp, nam, plocal_addr6)
* then pick one.
*/
int
-in6_pcbconnect(inp, nam, p)
+in6_pcbconnect(inp, nam, td)
register struct inpcb *inp;
struct sockaddr *nam;
- struct proc *p;
+ struct thread *td;
{
struct in6_addr *addr6;
register struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)nam;
@@ -361,7 +361,7 @@ in6_pcbconnect(inp, nam, p)
}
if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)) {
if (inp->inp_lport == 0) {
- error = in6_pcbbind(inp, (struct sockaddr *)0, p);
+ error = in6_pcbbind(inp, (struct sockaddr *)0, td);
if (error)
return (error);
}
diff --git a/sys/netinet6/in6_pcb.h b/sys/netinet6/in6_pcb.h
index df8e2c8..c1d038d 100644
--- a/sys/netinet6/in6_pcb.h
+++ b/sys/netinet6/in6_pcb.h
@@ -76,9 +76,9 @@
void in6_pcbpurgeif0 __P((struct in6pcb *, struct ifnet *));
void in6_losing __P((struct inpcb *));
-int in6_pcballoc __P((struct socket *, struct inpcbinfo *, struct proc *));
-int in6_pcbbind __P((struct inpcb *, struct sockaddr *, struct proc *));
-int in6_pcbconnect __P((struct inpcb *, struct sockaddr *, struct proc *));
+int in6_pcballoc __P((struct socket *, struct inpcbinfo *, struct thread *));
+int in6_pcbbind __P((struct inpcb *, struct sockaddr *, struct thread *));
+int in6_pcbconnect __P((struct inpcb *, struct sockaddr *, struct thread *));
void in6_pcbdetach __P((struct inpcb *));
void in6_pcbdisconnect __P((struct inpcb *));
int in6_pcbladdr __P((struct inpcb *, struct sockaddr *,
@@ -104,7 +104,7 @@ struct in6_addr *in6_selectsrc __P((struct sockaddr_in6 *,
struct route_in6 *,
struct in6_addr *, int *));
int in6_selecthlim __P((struct in6pcb *, struct ifnet *));
-int in6_pcbsetport __P((struct in6_addr *, struct inpcb *, struct proc *));
+int in6_pcbsetport __P((struct in6_addr *, struct inpcb *, struct thread *));
void init_sin6 __P((struct sockaddr_in6 *sin6, struct mbuf *m));
#endif /* _KERNEL */
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c
index 708c4f5..3cee6cb 100644
--- a/sys/netinet6/in6_src.c
+++ b/sys/netinet6/in6_src.c
@@ -325,10 +325,10 @@ in6_selecthlim(in6p, ifp)
* share this function by all *bsd*...
*/
int
-in6_pcbsetport(laddr, inp, p)
+in6_pcbsetport(laddr, inp, td)
struct in6_addr *laddr;
struct inpcb *inp;
- struct proc *p;
+ struct thread *td;
{
struct socket *so = inp->inp_socket;
u_int16_t lport = 0, first, last, *lastport;
@@ -346,7 +346,7 @@ in6_pcbsetport(laddr, inp, p)
last = ipport_hilastauto;
lastport = &pcbinfo->lasthi;
} else if (inp->inp_flags & INP_LOWPORT) {
- if (p && (error = suser(p)))
+ if (td && (error = suser_td(td)))
return error;
first = ipport_lowfirstauto; /* 1023 */
last = ipport_lowlastauto; /* 600 */
diff --git a/sys/netinet6/in6_var.h b/sys/netinet6/in6_var.h
index bb5abc9..c109bfc 100644
--- a/sys/netinet6/in6_var.h
+++ b/sys/netinet6/in6_var.h
@@ -571,7 +571,7 @@ extern int in6_ifindex2scopeid __P((int));
extern int in6_mask2len __P((struct in6_addr *, u_char *));
extern void in6_len2mask __P((struct in6_addr *, int));
int in6_control __P((struct socket *,
- u_long, caddr_t, struct ifnet *, struct proc *));
+ u_long, caddr_t, struct ifnet *, struct thread *));
int in6_update_ifa __P((struct ifnet *, struct in6_aliasreq *,
struct in6_ifaddr *));
void in6_purgeaddr __P((struct ifaddr *));
diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c
index f4a0307..c426e13 100644
--- a/sys/netinet6/ip6_input.c
+++ b/sys/netinet6/ip6_input.c
@@ -75,6 +75,7 @@
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
+#include <sys/proc.h>
#include <sys/domain.h>
#include <sys/protosw.h>
#include <sys/socket.h>
diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c
index 41b25b6c..99e8ddd 100644
--- a/sys/netinet6/ip6_output.c
+++ b/sys/netinet6/ip6_output.c
@@ -74,6 +74,7 @@
#include <sys/param.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
+#include <sys/proc.h>
#include <sys/errno.h>
#include <sys/protosw.h>
#include <sys/socket.h>
@@ -1271,20 +1272,20 @@ ip6_ctloutput(so, sopt)
int error, optval;
int level, op, optname;
int optlen;
- struct proc *p;
+ struct thread *td;
if (sopt) {
level = sopt->sopt_level;
op = sopt->sopt_dir;
optname = sopt->sopt_name;
optlen = sopt->sopt_valsize;
- p = sopt->sopt_p;
+ td = sopt->sopt_td;
} else {
panic("ip6_ctloutput: arg soopt is NULL");
}
error = optval = 0;
- privileged = (p == 0 || suser(p)) ? 0 : 1;
+ privileged = (td == 0 || suser_td(td)) ? 0 : 1;
if (level == IPPROTO_IPV6) {
switch (op) {
@@ -1440,7 +1441,7 @@ do { \
break;
}
/* XXX */
- MGET(m, sopt->sopt_p ? M_TRYWAIT : M_DONTWAIT, MT_HEADER);
+ MGET(m, sopt->sopt_td ? M_TRYWAIT : M_DONTWAIT, MT_HEADER);
if (m == 0) {
error = ENOBUFS;
break;
@@ -1708,7 +1709,7 @@ ip6_pcbopts(pktopt, m, so, sopt)
{
struct ip6_pktopts *opt = *pktopt;
int error = 0;
- struct proc *p = sopt->sopt_p;
+ struct thread *td = sopt->sopt_td;
int priv = 0;
/* turn off any old options. */
@@ -1734,7 +1735,7 @@ ip6_pcbopts(pktopt, m, so, sopt)
}
/* set options specified by user. */
- if (p && !suser(p))
+ if (td && !suser_td(td))
priv = 1;
if ((error = ip6_setpktoptions(m, opt, priv, 1)) != 0) {
ip6_clearpktopts(opt, 1, -1); /* XXX: discard all options */
@@ -1895,7 +1896,7 @@ ip6_setmoptions(optname, im6op, m)
struct route_in6 ro;
struct sockaddr_in6 *dst;
struct in6_multi_mship *imm;
- struct proc *p = curproc; /* XXX */
+ struct thread *td = curthread; /* XXX */
if (im6o == NULL) {
/*
@@ -1990,7 +1991,7 @@ ip6_setmoptions(optname, im6op, m)
* all multicast addresses. Only super user is allowed
* to do this.
*/
- if (suser(p))
+ if (suser_td(td))
{
error = EACCES;
break;
@@ -2097,7 +2098,7 @@ ip6_setmoptions(optname, im6op, m)
}
mreq = mtod(m, struct ipv6_mreq *);
if (IN6_IS_ADDR_UNSPECIFIED(&mreq->ipv6mr_multiaddr)) {
- if (suser(p)) {
+ if (suser_td(td)) {
error = EACCES;
break;
}
diff --git a/sys/netinet6/ip6_var.h b/sys/netinet6/ip6_var.h
index dea9c07..f226cc6 100644
--- a/sys/netinet6/ip6_var.h
+++ b/sys/netinet6/ip6_var.h
@@ -345,7 +345,7 @@ void rip6_ctlinput __P((int, struct sockaddr *, void *));
int rip6_ctloutput __P((struct socket *so, struct sockopt *sopt));
int rip6_output __P((struct mbuf *, ...));
int rip6_usrreq __P((struct socket *,
- int, struct mbuf *, struct mbuf *, struct mbuf *, struct proc *));
+ int, struct mbuf *, struct mbuf *, struct mbuf *, struct thread *));
int dest6_input __P((struct mbuf **, int *, int));
int none_input __P((struct mbuf **, int *, int));
diff --git a/sys/netinet6/ip6protosw.h b/sys/netinet6/ip6protosw.h
index c2f38fc..541402b 100644
--- a/sys/netinet6/ip6protosw.h
+++ b/sys/netinet6/ip6protosw.h
@@ -85,7 +85,7 @@ struct mbuf;
struct sockaddr;
struct socket;
struct domain;
-struct proc;
+struct thread;
struct ip6_hdr;
struct icmp6_hdr;
struct in6_addr;
@@ -140,7 +140,7 @@ struct ip6protosw {
/* user-protocol hook */
int (*pr_usrreq) /* user request: see list below */
__P((struct socket *, int, struct mbuf *,
- struct mbuf *, struct mbuf *, struct proc *));
+ struct mbuf *, struct mbuf *, struct thread *));
/* utility hooks */
void (*pr_init) /* initialization hook */
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c
index 43aa54e..5f89668 100644
--- a/sys/netinet6/raw_ip6.c
+++ b/sys/netinet6/raw_ip6.c
@@ -543,7 +543,7 @@ rip6_ctloutput(so, sopt)
}
static int
-rip6_attach(struct socket *so, int proto, struct proc *p)
+rip6_attach(struct socket *so, int proto, struct thread *td)
{
struct inpcb *inp;
int error, s;
@@ -551,14 +551,14 @@ rip6_attach(struct socket *so, int proto, struct proc *p)
inp = sotoinpcb(so);
if (inp)
panic("rip6_attach");
- if (p && (error = suser(p)) != 0)
+ if (td && (error = suser_td(td)) != 0)
return error;
error = soreserve(so, rip_sendspace, rip_recvspace);
if (error)
return error;
s = splnet();
- error = in_pcballoc(so, &ripcbinfo, p);
+ error = in_pcballoc(so, &ripcbinfo, td);
splx(s);
if (error)
return error;
@@ -611,7 +611,7 @@ rip6_disconnect(struct socket *so)
}
static int
-rip6_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
+rip6_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)nam;
@@ -641,7 +641,7 @@ rip6_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
}
static int
-rip6_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+rip6_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 *addr = (struct sockaddr_in6 *)nam;
@@ -686,7 +686,7 @@ rip6_shutdown(struct socket *so)
static int
rip6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam,
- struct mbuf *control, struct proc *p)
+ struct mbuf *control, struct thread *td)
{
struct inpcb *inp = sotoinpcb(so);
struct sockaddr_in6 tmp;
diff --git a/sys/netinet6/udp6_output.c b/sys/netinet6/udp6_output.c
index 0092f50..37a820d 100644
--- a/sys/netinet6/udp6_output.c
+++ b/sys/netinet6/udp6_output.c
@@ -121,12 +121,12 @@
#define udp6s_opackets udps_opackets
int
-udp6_output(in6p, m, addr6, control, p)
+udp6_output(in6p, m, addr6, control, td)
struct in6pcb *in6p;
struct mbuf *m;
struct mbuf *control;
struct sockaddr *addr6;
- struct proc *p;
+ struct thread *td;
{
u_int32_t ulen = m->m_pkthdr.len;
u_int32_t plen = sizeof(struct udphdr) + ulen;
@@ -142,7 +142,7 @@ udp6_output(in6p, m, addr6, control, p)
struct sockaddr_in6 tmp;
priv = 0;
- if (p && !suser(p))
+ if (td && !suser_td(td))
priv = 1;
if (control) {
if ((error = ip6_setpktoptions(control, &opt, priv, 0)) != 0)
@@ -215,7 +215,7 @@ udp6_output(in6p, m, addr6, control, p)
goto release;
}
if (in6p->in6p_lport == 0 &&
- (error = in6_pcbsetport(laddr, in6p, p)) != 0)
+ (error = in6_pcbsetport(laddr, in6p, td)) != 0)
goto release;
} else {
if (IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_faddr)) {
diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c
index 631e57c..6440dbe 100644
--- a/sys/netinet6/udp6_usrreq.c
+++ b/sys/netinet6/udp6_usrreq.c
@@ -523,7 +523,7 @@ udp6_abort(struct socket *so)
}
static int
-udp6_attach(struct socket *so, int proto, struct proc *p)
+udp6_attach(struct socket *so, int proto, struct thread *td)
{
struct inpcb *inp;
int s, error;
@@ -538,7 +538,7 @@ udp6_attach(struct socket *so, int proto, struct proc *p)
return error;
}
s = splnet();
- error = in_pcballoc(so, &udbinfo, p);
+ error = in_pcballoc(so, &udbinfo, td);
splx(s);
if (error)
return error;
@@ -557,7 +557,7 @@ udp6_attach(struct socket *so, int proto, struct proc *p)
}
static int
-udp6_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
+udp6_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct inpcb *inp;
int s, error;
@@ -582,20 +582,20 @@ udp6_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
inp->inp_vflag |= INP_IPV4;
inp->inp_vflag &= ~INP_IPV6;
s = splnet();
- error = in_pcbbind(inp, (struct sockaddr *)&sin, p);
+ error = in_pcbbind(inp, (struct sockaddr *)&sin, td);
splx(s);
return error;
}
}
s = splnet();
- error = in6_pcbbind(inp, nam, p);
+ error = in6_pcbbind(inp, nam, td);
splx(s);
return error;
}
static int
-udp6_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct inpcb *inp;
int s, error;
@@ -615,7 +615,7 @@ udp6_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
return EISCONN;
in6_sin6_2_sin(&sin, sin6_p);
s = splnet();
- error = in_pcbconnect(inp, (struct sockaddr *)&sin, p);
+ error = in_pcbconnect(inp, (struct sockaddr *)&sin, td);
splx(s);
if (error == 0) {
inp->inp_vflag |= INP_IPV4;
@@ -629,7 +629,7 @@ udp6_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
if (!IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
return EISCONN;
s = splnet();
- error = in6_pcbconnect(inp, nam, p);
+ error = in6_pcbconnect(inp, nam, td);
splx(s);
if (error == 0) {
if (ip6_mapped_addr_on) { /* should be non mapped addr */
@@ -686,7 +686,7 @@ udp6_disconnect(struct socket *so)
static int
udp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
- struct mbuf *control, struct proc *p)
+ struct mbuf *control, struct thread *td)
{
struct inpcb *inp;
int error = 0;
@@ -726,13 +726,13 @@ udp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
in6_sin6_2_sin_in_sock(addr);
pru = inetsw[ip_protox[IPPROTO_UDP]].pr_usrreqs;
error = ((*pru->pru_send)(so, flags, m, addr, control,
- p));
+ td));
/* addr will just be freed in sendit(). */
return error;
}
}
- return udp6_output(inp, m, addr, control, p);
+ return udp6_output(inp, m, addr, control, td);
bad:
m_freem(m);
diff --git a/sys/netinet6/udp6_var.h b/sys/netinet6/udp6_var.h
index 5c3efbc..2da5057 100644
--- a/sys/netinet6/udp6_var.h
+++ b/sys/netinet6/udp6_var.h
@@ -76,7 +76,7 @@ void udp6_ctlinput __P((int, struct sockaddr *, void *));
int udp6_input __P((struct mbuf **, int *, int));
int udp6_output __P((struct inpcb *inp, struct mbuf *m,
struct sockaddr *addr, struct mbuf *control,
- struct proc *p));
+ struct thread *td));
#endif
#endif /*_NETINET6_UDP6_VAR_H_*/
OpenPOWER on IntegriCloud