summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2022-07-28 18:39:19 +0200
committerDmitry V. Levin <ldv@strace.io>2022-07-31 21:03:01 +0000
commit1e681af2c9951910917ddd673e839e7e774e2073 (patch)
tree10aaf5b6e817f7445b4e88dc754d6f3887b2b7df
parent1db1753842a864a1c27dc68793732a5304b89b95 (diff)
downloadstrace-1e681af2c9951910917ddd673e839e7e774e2073.tar.gz
inet: implement SO_RCVMARK socket option decoding
* src/xlat/sock_options.in (SO_RCVMARK): New constant, introduced by Linux commit v5.19-rc1~159^2~237. * src/xlat/sock_options.in (print_getsockopt. print_setsockopt) <case SO_RCVMARK>: Handle as an int-like socket option. * tests/sockopt-sol_socket.c: Update expected output.
-rw-r--r--src/net.c2
-rwxr-xr-xsrc/xlat/sock_options.in8
-rw-r--r--tests/sockopt-sol_socket.c3
3 files changed, 12 insertions, 1 deletions
diff --git a/src/net.c b/src/net.c
index d071c192d..56146b382 100644
--- a/src/net.c
+++ b/src/net.c
@@ -840,6 +840,7 @@ print_getsockopt(struct tcb *const tcp, const unsigned int level,
case SO_PREFER_BUSY_POLL:
case SO_BUSY_POLL_BUDGET:
case SO_RESERVE_MEM:
+ case SO_RCVMARK:
if (rlen >= (int) sizeof(int))
printnum_int(tcp, addr, "%d");
else
@@ -1105,6 +1106,7 @@ print_setsockopt(struct tcb *const tcp, const unsigned int level,
case SO_PREFER_BUSY_POLL:
case SO_BUSY_POLL_BUDGET:
case SO_RESERVE_MEM:
+ case SO_RCVMARK:
if (len < (int) sizeof(int))
printaddr(addr);
else
diff --git a/src/xlat/sock_options.in b/src/xlat/sock_options.in
index b2053c409..942cbc7db 100755
--- a/src/xlat/sock_options.in
+++ b/src/xlat/sock_options.in
@@ -551,3 +551,11 @@ SO_RESERVE_MEM 16455
#else
SO_RESERVE_MEM 73
#endif
+
+#if defined __sparc__
+SO_RCVMARK 84
+#elif defined __hppa__
+SO_RCVMARK 16457
+#else
+SO_RCVMARK 75
+#endif
diff --git a/tests/sockopt-sol_socket.c b/tests/sockopt-sol_socket.c
index 131a84d29..d2c4254a5 100644
--- a/tests/sockopt-sol_socket.c
+++ b/tests/sockopt-sol_socket.c
@@ -133,7 +133,8 @@ main(void)
{ ARG_STR(SO_NETNS_COOKIE), /* TODO */ },
{ ARG_STR(SO_BUF_LOCK), /* TODO */ },
{ ARG_STR(SO_RESERVE_MEM), .optsz = sizeof(int) },
- { 74, NULL },
+ { ARG_STR(SO_RCVMARK), .optsz = sizeof(int) },
+ { 76, NULL },
{ -1, NULL },
};