summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2008-07-10 13:31:11 +0000
committerbz <bz@FreeBSD.org>2008-07-10 13:31:11 +0000
commit362cb79214c7ca17170d1530859aaf180e618d75 (patch)
tree465d7c3dd198bb4a6aefe767a4b80dc63c877b5a /sys/netinet6
parent3881e50cbab0a113c2b83bf15fd896c969e4224e (diff)
downloadFreeBSD-src-362cb79214c7ca17170d1530859aaf180e618d75.zip
FreeBSD-src-362cb79214c7ca17170d1530859aaf180e618d75.tar.gz
Pass the ucred along into in{,6}_pcblookup_local for upcoming
prison checks. Reviewed by: rwatson
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6_pcb.c12
-rw-r--r--sys/netinet6/in6_pcb.h3
-rw-r--r--sys/netinet6/in6_src.c6
3 files changed, 11 insertions, 10 deletions
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
index 07e5447..619c087 100644
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -189,7 +189,7 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
PRIV_NETINET_REUSEPORT, 0) != 0) {
t = in6_pcblookup_local(pcbinfo,
&sin6->sin6_addr, lport,
- INPLOOKUP_WILDCARD);
+ INPLOOKUP_WILDCARD, cred);
if (t &&
((t->inp_vflag & INP_TIMEWAIT) == 0) &&
(so->so_type != SOCK_STREAM ||
@@ -206,8 +206,8 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
in6_sin6_2_sin(&sin, sin6);
t = in_pcblookup_local(pcbinfo,
- sin.sin_addr, lport,
- INPLOOKUP_WILDCARD);
+ sin.sin_addr, lport,
+ INPLOOKUP_WILDCARD, cred);
if (t &&
((t->inp_vflag &
INP_TIMEWAIT) == 0) &&
@@ -220,7 +220,7 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
}
}
t = in6_pcblookup_local(pcbinfo, &sin6->sin6_addr,
- lport, wild);
+ lport, wild, cred);
if (t && (reuseport & ((t->inp_vflag & INP_TIMEWAIT) ?
intotw(t)->tw_so_options :
t->inp_socket->so_options)) == 0)
@@ -231,7 +231,7 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
in6_sin6_2_sin(&sin, sin6);
t = in_pcblookup_local(pcbinfo, sin.sin_addr,
- lport, wild);
+ lport, wild, cred);
if (t && t->inp_vflag & INP_TIMEWAIT) {
if ((reuseport &
intotw(t)->tw_so_options) == 0 &&
@@ -674,7 +674,7 @@ in6_pcbnotify(struct inpcbinfo *pcbinfo, struct sockaddr *dst,
*/
struct inpcb *
in6_pcblookup_local(struct inpcbinfo *pcbinfo, struct in6_addr *laddr,
- u_short lport, int wild_okay)
+ u_short lport, int wild_okay, struct ucred *cred)
{
register struct inpcb *inp;
int matchwild = 3, wildcard;
diff --git a/sys/netinet6/in6_pcb.h b/sys/netinet6/in6_pcb.h
index 83551b5..c1e2107 100644
--- a/sys/netinet6/in6_pcb.h
+++ b/sys/netinet6/in6_pcb.h
@@ -80,7 +80,8 @@ int in6_pcbladdr __P((struct inpcb *, struct sockaddr *,
struct in6_addr **));
struct inpcb *
in6_pcblookup_local __P((struct inpcbinfo *,
- struct in6_addr *, u_short, int));
+ struct in6_addr *, u_short, int,
+ struct ucred *));
struct inpcb *
in6_pcblookup_hash __P((struct inpcbinfo *,
struct in6_addr *, u_int, struct in6_addr *,
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c
index ffc4c63..3464445 100644
--- a/sys/netinet6/in6_src.c
+++ b/sys/netinet6/in6_src.c
@@ -823,7 +823,7 @@ in6_pcbsetport(struct in6_addr *laddr, struct inpcb *inp, struct ucred *cred)
*lastport = first;
lport = htons(*lastport);
} while (in6_pcblookup_local(pcbinfo, &inp->in6p_laddr,
- lport, wild));
+ lport, wild, cred));
} else {
/*
* counting up
@@ -843,8 +843,8 @@ in6_pcbsetport(struct in6_addr *laddr, struct inpcb *inp, struct ucred *cred)
if (*lastport < first || *lastport > last)
*lastport = first;
lport = htons(*lastport);
- } while (in6_pcblookup_local(pcbinfo,
- &inp->in6p_laddr, lport, wild));
+ } while (in6_pcblookup_local(pcbinfo, &inp->in6p_laddr,
+ lport, wild, cred));
}
inp->inp_lport = lport;
OpenPOWER on IntegriCloud