summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/in6.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet6/in6.c')
-rw-r--r--sys/netinet6/in6.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 450b130..bcb634f 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -401,13 +401,16 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
switch (cmd) {
case SIOCALIFADDR:
+ if (td != NULL) {
+ error = priv_check(td, PRIV_NET_ADDIFADDR);
+ if (error)
+ return (error);
+ }
+ return in6_lifaddr_ioctl(so, cmd, data, ifp, td);
+
case SIOCDLIFADDR:
- /*
- * XXXRW: Is this checked at another layer? What priv to use
- * here?
- */
if (td != NULL) {
- error = suser(td);
+ error = priv_check(td, PRIV_NET_DELIFADDR);
if (error)
return (error);
}
@@ -500,12 +503,9 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
ifra->ifra_addr.sin6_len != sizeof(struct sockaddr_in6))
return (EAFNOSUPPORT);
- /*
- * XXXRW: Is this checked at another layer? What priv to use
- * here?
- */
if (td != NULL) {
- error = suser(td);
+ error = priv_check(td, (cmd == SIOCDIFADDR_IN6) ?
+ PRIV_NET_DELIFADDR : PRIV_NET_ADDIFADDR);
if (error)
return (error);
}
OpenPOWER on IntegriCloud