linux: Use socket-constants-time64.h on tst-socket-timestamp-compat

Message ID 20220214133728.1867004-1-adhemerval.zanella@linaro.org
State Committed
Commit fee62d6c6285548027e222c8dae597fec6577f23
Headers
Series linux: Use socket-constants-time64.h on tst-socket-timestamp-compat |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Adhemerval Zanella Netto Feb. 14, 2022, 1:37 p.m. UTC
  The kernel header might not define the SO_TIMESTAMP{NS}_OLD or
SO_TIMESTAMP{NS}_NEW if it older than v5.1.
---
 .../sysv/linux/tst-socket-timestamp-compat.c  | 25 ++++++++++---------
 1 file changed, 13 insertions(+), 12 deletions(-)
  

Comments

Carlos O'Donell Feb. 14, 2022, 2:28 p.m. UTC | #1
On 2/14/22 08:37, Adhemerval Zanella via Libc-alpha wrote:
> The kernel header might not define the SO_TIMESTAMP{NS}_OLD or
> SO_TIMESTAMP{NS}_NEW if it older than v5.1.

LGTM. Will fix an issue compiling glibc 2.35 on RHEL8.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  .../sysv/linux/tst-socket-timestamp-compat.c  | 25 ++++++++++---------
>  1 file changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
> index 0ff1a214e6..2b1feb4766 100644
> --- a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
> +++ b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
> @@ -22,6 +22,7 @@
>  #include <support/xsocket.h>
>  #include <support/xunistd.h>
>  #include <stdbool.h>
> +#include <socket-constants-time64.h>
>  
>  /* AF_INET socket and address used to receive data.  */
>  static int srv;
> @@ -88,7 +89,7 @@ do_test_large_buffer (bool mc)
>    /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp
>       is created.  */
>    {
> -    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMP_OLD, &(int){1},
> +    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMP_OLD, &(int){1},

OK. Use the COMPAT_* versions throughout.

>  			sizeof (int));
>      TEST_VERIFY_EXIT (r != -1);
>  
> @@ -103,10 +104,10 @@ do_test_large_buffer (bool mc)
>        if (cmsg->cmsg_level != SOL_SOCKET)
>  	continue;
>  
> -      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMP_NEW)
> +      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMP_NEW)
>  	found_timestamp = true;
>        else
> -	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMP_NEW);
> +	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMP_NEW);
>      }
>  
>      TEST_COMPARE (found_timestamp, sizeof (time_t) > 4);
> @@ -114,7 +115,7 @@ do_test_large_buffer (bool mc)
>  
>    /* Same as before, but for timespec.  */
>    {
> -    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMPNS_OLD, &(int){1},
> +    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMPNS_OLD, &(int){1},
>  			sizeof (int));
>      TEST_VERIFY_EXIT (r != -1);
>  
> @@ -129,10 +130,10 @@ do_test_large_buffer (bool mc)
>        if (cmsg->cmsg_level != SOL_SOCKET)
>  	continue;
>  
> -      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMPNS_NEW)
> +      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMPNS_NEW)
>  	found_timestamp = true;
>        else
> -	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMPNS_NEW);
> +	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMPNS_NEW);
>      }
>  
>      TEST_COMPARE (found_timestamp, sizeof (time_t) > 4);
> @@ -151,7 +152,7 @@ do_test_small_buffer (bool mc)
>    /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp
>       is created.  */
>    {
> -    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMP_OLD, &(int){1},
> +    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMP_OLD, &(int){1},
>  			sizeof (int));
>      TEST_VERIFY_EXIT (r != -1);
>  
> @@ -172,10 +173,10 @@ do_test_small_buffer (bool mc)
>        if (cmsg->cmsg_level != SOL_SOCKET)
>  	continue;
>  
> -      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMP_NEW)
> +      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMP_NEW)
>  	found_timestamp = true;
>        else
> -	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMP_NEW);
> +	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMP_NEW);
>      }
>  
>      if (sizeof (time_t) > 4)
> @@ -192,7 +193,7 @@ do_test_small_buffer (bool mc)
>  
>    /* Same as before, but for timespec.  */
>    {
> -    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMPNS_OLD, &(int){1},
> +    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMPNS_OLD, &(int){1},
>  			sizeof (int));
>      TEST_VERIFY_EXIT (r != -1);
>  
> @@ -213,10 +214,10 @@ do_test_small_buffer (bool mc)
>        if (cmsg->cmsg_level != SOL_SOCKET)
>  	continue;
>  
> -      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMPNS_NEW)
> +      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMPNS_NEW)
>  	found_timestamp = true;
>        else
> -	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMPNS_NEW);
> +	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMPNS_NEW);
>      }
>  
>      if (sizeof (time_t) > 4)
  
Tulio Magno Quites Machado Filho Feb. 14, 2022, 4:48 p.m. UTC | #2
Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> writes:

> The kernel header might not define the SO_TIMESTAMP{NS}_OLD or
> SO_TIMESTAMP{NS}_NEW if it older than v5.1.

This patch solved the issue I was seeing.

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

Thanks!
  

Patch

diff --git a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
index 0ff1a214e6..2b1feb4766 100644
--- a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
+++ b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c
@@ -22,6 +22,7 @@ 
 #include <support/xsocket.h>
 #include <support/xunistd.h>
 #include <stdbool.h>
+#include <socket-constants-time64.h>
 
 /* AF_INET socket and address used to receive data.  */
 static int srv;
@@ -88,7 +89,7 @@  do_test_large_buffer (bool mc)
   /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp
      is created.  */
   {
-    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMP_OLD, &(int){1},
+    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMP_OLD, &(int){1},
 			sizeof (int));
     TEST_VERIFY_EXIT (r != -1);
 
@@ -103,10 +104,10 @@  do_test_large_buffer (bool mc)
       if (cmsg->cmsg_level != SOL_SOCKET)
 	continue;
 
-      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMP_NEW)
+      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMP_NEW)
 	found_timestamp = true;
       else
-	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMP_NEW);
+	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMP_NEW);
     }
 
     TEST_COMPARE (found_timestamp, sizeof (time_t) > 4);
@@ -114,7 +115,7 @@  do_test_large_buffer (bool mc)
 
   /* Same as before, but for timespec.  */
   {
-    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMPNS_OLD, &(int){1},
+    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMPNS_OLD, &(int){1},
 			sizeof (int));
     TEST_VERIFY_EXIT (r != -1);
 
@@ -129,10 +130,10 @@  do_test_large_buffer (bool mc)
       if (cmsg->cmsg_level != SOL_SOCKET)
 	continue;
 
-      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMPNS_NEW)
+      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMPNS_NEW)
 	found_timestamp = true;
       else
-	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMPNS_NEW);
+	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMPNS_NEW);
     }
 
     TEST_COMPARE (found_timestamp, sizeof (time_t) > 4);
@@ -151,7 +152,7 @@  do_test_small_buffer (bool mc)
   /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp
      is created.  */
   {
-    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMP_OLD, &(int){1},
+    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMP_OLD, &(int){1},
 			sizeof (int));
     TEST_VERIFY_EXIT (r != -1);
 
@@ -172,10 +173,10 @@  do_test_small_buffer (bool mc)
       if (cmsg->cmsg_level != SOL_SOCKET)
 	continue;
 
-      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMP_NEW)
+      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMP_NEW)
 	found_timestamp = true;
       else
-	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMP_NEW);
+	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMP_NEW);
     }
 
     if (sizeof (time_t) > 4)
@@ -192,7 +193,7 @@  do_test_small_buffer (bool mc)
 
   /* Same as before, but for timespec.  */
   {
-    int r = setsockopt (srv, SOL_SOCKET, SO_TIMESTAMPNS_OLD, &(int){1},
+    int r = setsockopt (srv, SOL_SOCKET, COMPAT_SO_TIMESTAMPNS_OLD, &(int){1},
 			sizeof (int));
     TEST_VERIFY_EXIT (r != -1);
 
@@ -213,10 +214,10 @@  do_test_small_buffer (bool mc)
       if (cmsg->cmsg_level != SOL_SOCKET)
 	continue;
 
-      if (sizeof (time_t) > 4 && cmsg->cmsg_type == SO_TIMESTAMPNS_NEW)
+      if (sizeof (time_t) > 4 && cmsg->cmsg_type == COMPAT_SO_TIMESTAMPNS_NEW)
 	found_timestamp = true;
       else
-	TEST_VERIFY (cmsg->cmsg_type != SO_TIMESTAMPNS_NEW);
+	TEST_VERIFY (cmsg->cmsg_type != COMPAT_SO_TIMESTAMPNS_NEW);
     }
 
     if (sizeof (time_t) > 4)