aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@medozas.de>2009-08-04 03:28:29 -0400
committerDavid S. Miller <davem@davemloft.net>2009-08-05 16:02:57 -0400
commit0d6038ee76f2e06b79d0465807f67e86bf4025de (patch)
treeffb88e2f817ae2a76fece58a7f7d0de3fd37fbaf /net/core
parent49c794e94649020248e37b78db16cd25bad38b4f (diff)
net: implement a SO_DOMAIN getsockoption
This sockopt goes in line with SO_TYPE and SO_PROTOCOL. It makes it possible for userspace programs to pass around file descriptors — I am referring to arguments-to-functions, but it may even work for the fd passing over UNIX sockets — without needing to also pass the auxiliary information (PF_INET6/IPPROTO_TCP). Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/sock.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index ebce661234ac..3ac34ea6ec05 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -483,6 +483,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
483 break; 483 break;
484 case SO_TYPE: 484 case SO_TYPE:
485 case SO_PROTOCOL: 485 case SO_PROTOCOL:
486 case SO_DOMAIN:
486 case SO_ERROR: 487 case SO_ERROR:
487 ret = -ENOPROTOOPT; 488 ret = -ENOPROTOOPT;
488 break; 489 break;
@@ -769,6 +770,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
769 v.val = sk->sk_protocol; 770 v.val = sk->sk_protocol;
770 break; 771 break;
771 772
773 case SO_DOMAIN:
774 v.val = sk->sk_family;
775 break;
776
772 case SO_ERROR: 777 case SO_ERROR:
773 v.val = -sock_error(sk); 778 v.val = -sock_error(sk);
774 if (v.val == 0) 779 if (v.val == 0)