diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2009-08-04 03:28:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-08-05 16:02:57 -0400 |
commit | 0d6038ee76f2e06b79d0465807f67e86bf4025de (patch) | |
tree | ffb88e2f817ae2a76fece58a7f7d0de3fd37fbaf /net/core | |
parent | 49c794e94649020248e37b78db16cd25bad38b4f (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.c | 5 |
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) |