aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/sock.c')
-rw-r--r--net/core/sock.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/core/sock.c b/net/core/sock.c
index 02f8dfe320b7..19942d4bb6e6 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -793,6 +793,12 @@ set_rcvbuf:
793 sock_valbool_flag(sk, SOCK_WIFI_STATUS, valbool); 793 sock_valbool_flag(sk, SOCK_WIFI_STATUS, valbool);
794 break; 794 break;
795 795
796 case SO_PEEK_OFF:
797 if (sock->ops->set_peek_off)
798 sock->ops->set_peek_off(sk, val);
799 else
800 ret = -EOPNOTSUPP;
801 break;
796 default: 802 default:
797 ret = -ENOPROTOOPT; 803 ret = -ENOPROTOOPT;
798 break; 804 break;
@@ -1018,6 +1024,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
1018 v.val = !!sock_flag(sk, SOCK_WIFI_STATUS); 1024 v.val = !!sock_flag(sk, SOCK_WIFI_STATUS);
1019 break; 1025 break;
1020 1026
1027 case SO_PEEK_OFF:
1028 if (!sock->ops->set_peek_off)
1029 return -EOPNOTSUPP;
1030
1031 v.val = sk->sk_peek_off;
1032 break;
1021 default: 1033 default:
1022 return -ENOPROTOOPT; 1034 return -ENOPROTOOPT;
1023 } 1035 }
@@ -2092,6 +2104,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
2092 2104
2093 sk->sk_sndmsg_page = NULL; 2105 sk->sk_sndmsg_page = NULL;
2094 sk->sk_sndmsg_off = 0; 2106 sk->sk_sndmsg_off = 0;
2107 sk->sk_peek_off = -1;
2095 2108
2096 sk->sk_peer_pid = NULL; 2109 sk->sk_peer_pid = NULL;
2097 sk->sk_peer_cred = NULL; 2110 sk->sk_peer_cred = NULL;