socket: Rename SO_RCVTIMEO/ SO_SNDTIMEO with _OLD suffixes
SO_RCVTIMEO and SO_SNDTIMEO socket options use struct timeval as the time format. struct timeval is not y2038 safe. The subsequent patches in the series add support for new socket timeout options with _NEW suffix that will use y2038 safe data structures. Although the existing struct timeval layout is sufficiently wide to represent timeouts, because of the way libc will interpret time_t based on user defined flag, these new flags provide a way of having a structure that is the same for all architectures consistently. Rename the existing options with _OLD suffix forms so that the right option is enabled for userspace applications according to the architecture and time_t definition of libc. Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com> Acked-by: Willem de Bruijn <willemb@google.com> Cc: ccaulfie@redhat.com Cc: deller@gmx.de Cc: paulus@samba.org Cc: ralf@linux-mips.org Cc: rth@twiddle.net Cc: cluster-devel@redhat.com Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-alpha@vger.kernel.org Cc: linux-arch@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc: linux-parisc@vger.kernel.org Cc: sparclinux@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9dd49211b8
commit
45bdc66159
|
@ -31,8 +31,8 @@
|
||||||
#define SO_RCVBUFFORCE 0x100b
|
#define SO_RCVBUFFORCE 0x100b
|
||||||
#define SO_RCVLOWAT 0x1010
|
#define SO_RCVLOWAT 0x1010
|
||||||
#define SO_SNDLOWAT 0x1011
|
#define SO_SNDLOWAT 0x1011
|
||||||
#define SO_RCVTIMEO 0x1012
|
#define SO_RCVTIMEO_OLD 0x1012
|
||||||
#define SO_SNDTIMEO 0x1013
|
#define SO_SNDTIMEO_OLD 0x1013
|
||||||
#define SO_ACCEPTCONN 0x1014
|
#define SO_ACCEPTCONN 0x1014
|
||||||
#define SO_PROTOCOL 0x1028
|
#define SO_PROTOCOL 0x1028
|
||||||
#define SO_DOMAIN 0x1029
|
#define SO_DOMAIN 0x1029
|
||||||
|
@ -121,6 +121,9 @@
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
|
#define SO_RCVTIMEO SO_RCVTIMEO_OLD
|
||||||
|
#define SO_SNDTIMEO SO_SNDTIMEO_OLD
|
||||||
|
|
||||||
#if __BITS_PER_LONG == 64
|
#if __BITS_PER_LONG == 64
|
||||||
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
||||||
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
||||||
|
|
|
@ -39,8 +39,8 @@
|
||||||
#define SO_RCVBUF 0x1002 /* Receive buffer. */
|
#define SO_RCVBUF 0x1002 /* Receive buffer. */
|
||||||
#define SO_SNDLOWAT 0x1003 /* send low-water mark */
|
#define SO_SNDLOWAT 0x1003 /* send low-water mark */
|
||||||
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
|
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
|
||||||
#define SO_SNDTIMEO 0x1005 /* send timeout */
|
#define SO_SNDTIMEO_OLD 0x1005 /* send timeout */
|
||||||
#define SO_RCVTIMEO 0x1006 /* receive timeout */
|
#define SO_RCVTIMEO_OLD 0x1006 /* receive timeout */
|
||||||
#define SO_ACCEPTCONN 0x1009
|
#define SO_ACCEPTCONN 0x1009
|
||||||
#define SO_PROTOCOL 0x1028 /* protocol type */
|
#define SO_PROTOCOL 0x1028 /* protocol type */
|
||||||
#define SO_DOMAIN 0x1029 /* domain/socket family */
|
#define SO_DOMAIN 0x1029 /* domain/socket family */
|
||||||
|
@ -132,6 +132,8 @@
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
|
#define SO_RCVTIMEO SO_RCVTIMEO_OLD
|
||||||
|
#define SO_SNDTIMEO SO_SNDTIMEO_OLD
|
||||||
#if __BITS_PER_LONG == 64
|
#if __BITS_PER_LONG == 64
|
||||||
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
||||||
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
||||||
|
|
|
@ -22,8 +22,8 @@
|
||||||
#define SO_RCVBUFFORCE 0x100b
|
#define SO_RCVBUFFORCE 0x100b
|
||||||
#define SO_SNDLOWAT 0x1003
|
#define SO_SNDLOWAT 0x1003
|
||||||
#define SO_RCVLOWAT 0x1004
|
#define SO_RCVLOWAT 0x1004
|
||||||
#define SO_SNDTIMEO 0x1005
|
#define SO_SNDTIMEO_OLD 0x1005
|
||||||
#define SO_RCVTIMEO 0x1006
|
#define SO_RCVTIMEO_OLD 0x1006
|
||||||
#define SO_ERROR 0x1007
|
#define SO_ERROR 0x1007
|
||||||
#define SO_TYPE 0x1008
|
#define SO_TYPE 0x1008
|
||||||
#define SO_PROTOCOL 0x1028
|
#define SO_PROTOCOL 0x1028
|
||||||
|
@ -113,6 +113,8 @@
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
|
#define SO_RCVTIMEO SO_RCVTIMEO_OLD
|
||||||
|
#define SO_SNDTIMEO SO_SNDTIMEO_OLD
|
||||||
#if __BITS_PER_LONG == 64
|
#if __BITS_PER_LONG == 64
|
||||||
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
||||||
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
|
|
||||||
#define SO_RCVLOWAT 16
|
#define SO_RCVLOWAT 16
|
||||||
#define SO_SNDLOWAT 17
|
#define SO_SNDLOWAT 17
|
||||||
#define SO_RCVTIMEO 18
|
#define SO_RCVTIMEO_OLD 18
|
||||||
#define SO_SNDTIMEO 19
|
#define SO_SNDTIMEO_OLD 19
|
||||||
#define SO_PASSCRED 20
|
#define SO_PASSCRED 20
|
||||||
#define SO_PEERCRED 21
|
#define SO_PEERCRED 21
|
||||||
|
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
#define SO_BSDCOMPAT 0x0400
|
#define SO_BSDCOMPAT 0x0400
|
||||||
#define SO_RCVLOWAT 0x0800
|
#define SO_RCVLOWAT 0x0800
|
||||||
#define SO_SNDLOWAT 0x1000
|
#define SO_SNDLOWAT 0x1000
|
||||||
#define SO_RCVTIMEO 0x2000
|
#define SO_RCVTIMEO_OLD 0x2000
|
||||||
#define SO_SNDTIMEO 0x4000
|
#define SO_SNDTIMEO_OLD 0x4000
|
||||||
#define SO_ACCEPTCONN 0x8000
|
#define SO_ACCEPTCONN 0x8000
|
||||||
|
|
||||||
#define SO_SNDBUF 0x1001
|
#define SO_SNDBUF 0x1001
|
||||||
|
@ -114,6 +114,9 @@
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
|
#define SO_RCVTIMEO SO_RCVTIMEO_OLD
|
||||||
|
#define SO_SNDTIMEO SO_SNDTIMEO_OLD
|
||||||
|
|
||||||
#if __BITS_PER_LONG == 64
|
#if __BITS_PER_LONG == 64
|
||||||
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
||||||
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
|
||||||
|
|
|
@ -1089,12 +1089,12 @@ static void sctp_connect_to_sock(struct connection *con)
|
||||||
* since O_NONBLOCK argument in connect() function does not work here,
|
* since O_NONBLOCK argument in connect() function does not work here,
|
||||||
* then, we should restore the default value of this attribute.
|
* then, we should restore the default value of this attribute.
|
||||||
*/
|
*/
|
||||||
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv,
|
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO_OLD, (char *)&tv,
|
||||||
sizeof(tv));
|
sizeof(tv));
|
||||||
result = sock->ops->connect(sock, (struct sockaddr *)&daddr, addr_len,
|
result = sock->ops->connect(sock, (struct sockaddr *)&daddr, addr_len,
|
||||||
0);
|
0);
|
||||||
memset(&tv, 0, sizeof(tv));
|
memset(&tv, 0, sizeof(tv));
|
||||||
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv,
|
kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO_OLD, (char *)&tv,
|
||||||
sizeof(tv));
|
sizeof(tv));
|
||||||
|
|
||||||
if (result == -EINPROGRESS)
|
if (result == -EINPROGRESS)
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
#define SO_PEERCRED 17
|
#define SO_PEERCRED 17
|
||||||
#define SO_RCVLOWAT 18
|
#define SO_RCVLOWAT 18
|
||||||
#define SO_SNDLOWAT 19
|
#define SO_SNDLOWAT 19
|
||||||
#define SO_RCVTIMEO 20
|
#define SO_RCVTIMEO_OLD 20
|
||||||
#define SO_SNDTIMEO 21
|
#define SO_SNDTIMEO_OLD 21
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Security levels - as per NRL IPv6 - don't actually do anything */
|
/* Security levels - as per NRL IPv6 - don't actually do anything */
|
||||||
|
@ -116,6 +116,8 @@
|
||||||
|
|
||||||
#if !defined(__KERNEL__)
|
#if !defined(__KERNEL__)
|
||||||
|
|
||||||
|
#define SO_RCVTIMEO SO_RCVTIMEO_OLD
|
||||||
|
#define SO_SNDTIMEO SO_SNDTIMEO_OLD
|
||||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||||
/* on 64-bit and x32, avoid the ?: operator */
|
/* on 64-bit and x32, avoid the ?: operator */
|
||||||
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
#define SO_TIMESTAMP SO_TIMESTAMP_OLD
|
||||||
|
|
|
@ -941,11 +941,11 @@ set_rcvbuf:
|
||||||
sk->sk_rcvlowat = val ? : 1;
|
sk->sk_rcvlowat = val ? : 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SO_RCVTIMEO:
|
case SO_RCVTIMEO_OLD:
|
||||||
ret = sock_set_timeout(&sk->sk_rcvtimeo, optval, optlen);
|
ret = sock_set_timeout(&sk->sk_rcvtimeo, optval, optlen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SO_SNDTIMEO:
|
case SO_SNDTIMEO_OLD:
|
||||||
ret = sock_set_timeout(&sk->sk_sndtimeo, optval, optlen);
|
ret = sock_set_timeout(&sk->sk_sndtimeo, optval, optlen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue