diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 5d820c376653..204a8dec65cc 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -565,6 +565,13 @@ set_rcvbuf: | |||
565 | ret = -ENONET; | 565 | ret = -ENONET; |
566 | break; | 566 | break; |
567 | 567 | ||
568 | case SO_PASSSEC: | ||
569 | if (valbool) | ||
570 | set_bit(SOCK_PASSSEC, &sock->flags); | ||
571 | else | ||
572 | clear_bit(SOCK_PASSSEC, &sock->flags); | ||
573 | break; | ||
574 | |||
568 | /* We implement the SO_SNDLOWAT etc to | 575 | /* We implement the SO_SNDLOWAT etc to |
569 | not be settable (1003.1g 5.3) */ | 576 | not be settable (1003.1g 5.3) */ |
570 | default: | 577 | default: |
@@ -723,6 +730,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname, | |||
723 | v.val = sk->sk_state == TCP_LISTEN; | 730 | v.val = sk->sk_state == TCP_LISTEN; |
724 | break; | 731 | break; |
725 | 732 | ||
733 | case SO_PASSSEC: | ||
734 | v.val = test_bit(SOCK_PASSSEC, &sock->flags) ? 1 : 0; | ||
735 | break; | ||
736 | |||
726 | case SO_PEERSEC: | 737 | case SO_PEERSEC: |
727 | return security_socket_getpeersec_stream(sock, optval, optlen, len); | 738 | return security_socket_getpeersec_stream(sock, optval, optlen, len); |
728 | 739 | ||