aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2006-01-03 17:18:33 -0500
committerDavid S. Miller <davem@davemloft.net>2006-01-03 17:18:33 -0500
commitb5e5fa5e093e42cab4ee3d6dcbc4f450ad29a723 (patch)
tree7a87804b0953f22de43054ccc7ae67ebc5b66b20 /net/ipv6
parent5ff7630e4aa6c3969094dc30ff1cdaa6f52b0ed0 (diff)
[NET]: Add a dev_ioctl() fallback to sock_ioctl()
Currently all network protocols need to call dev_ioctl as the default fallback in their ioctl implementations. This patch adds a fallback to dev_ioctl to sock_ioctl if the protocol returned -ENOIOCTLCMD. This way all the procotol ioctl handlers can be simplified and we don't need to export dev_ioctl. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/af_inet6.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 7c9f19269f21..68afc53be662 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -434,7 +434,6 @@ int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
434int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) 434int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
435{ 435{
436 struct sock *sk = sock->sk; 436 struct sock *sk = sock->sk;
437 int err = -EINVAL;
438 437
439 switch(cmd) 438 switch(cmd)
440 { 439 {
@@ -453,10 +452,9 @@ int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
453 case SIOCSIFDSTADDR: 452 case SIOCSIFDSTADDR:
454 return addrconf_set_dstaddr((void __user *) arg); 453 return addrconf_set_dstaddr((void __user *) arg);
455 default: 454 default:
456 if (!sk->sk_prot->ioctl || 455 if (!sk->sk_prot->ioctl)
457 (err = sk->sk_prot->ioctl(sk, cmd, arg)) == -ENOIOCTLCMD) 456 return -ENOIOCTLCMD;
458 return(dev_ioctl(cmd,(void __user *) arg)); 457 return sk->sk_prot->ioctl(sk, cmd, arg);
459 return err;
460 } 458 }
461 /*NOTREACHED*/ 459 /*NOTREACHED*/
462 return(0); 460 return(0);