File 3022-kernel-esock-test-Tweaked-api_opt_ip_recvtos_udp4-te.patch of Package erlang

From fa16956c155fbb5c827c6e0cd47298dd2e4ba46d Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Wed, 13 Dec 2023 18:26:07 +0100
Subject: [PATCH 2/6] [kernel|esock|test] Tweaked api_opt_ip_recvtos_udp4 test
 case

---
 lib/kernel/test/socket_SUITE.erl | 45 ++++++++++++++++++++++++++++----
 1 file changed, 40 insertions(+), 5 deletions(-)

diff --git a/lib/kernel/test/socket_SUITE.erl b/lib/kernel/test/socket_SUITE.erl
index 15d52cdc91..5dcbc7ceb1 100644
--- a/lib/kernel/test/socket_SUITE.erl
+++ b/lib/kernel/test/socket_SUITE.erl
@@ -21792,17 +21792,50 @@ api_opt_ip_recvtos_udp(InitState) ->
                            end
                    end},
 
+         #{desc => "enable recvtos on dst socket",
+           cmd  => fun(#{sock_dst := Sock, set := Set} = _State) ->
+                           case Set(Sock, true) of
+                               ok ->
+                                   ?SEV_IPRINT("dst recvtos enabled"),
+                                   ok;
+                               {error, Reason} = ERROR ->
+                                   ?SEV_EPRINT("Failed setting recvtos:"
+                                               "   ~p", [Reason]),
+                                   ERROR
+                           end
+                   end},
+
+         #{desc => "extract the (expected) recvtos \"default\" value",
+           cmd  => fun(#{sock_dst := Sock, set := Set} = State) ->
+                           {ok, DefValue} = socket:getopt(Sock, ip, tos),
+                           ?SEV_IPRINT("(expected) recvtos def value: ~w",
+                                       [DefValue]),
+                           {ok, State#{dst_def_value => DefValue}}
+                   end},
+
          #{desc => "send req (to dst) (wo explicit tos)",
            cmd  => fun(#{sock_src := Sock, sa_dst := Dst, send := Send}) ->
                            Send(Sock, ?BASIC_REQ, Dst, default)
                    end},
          #{desc => "recv req (from src) - w default tos",
-           cmd  => fun(#{sock_dst := Sock, sa_src := Src, recv := Recv}) ->
+           cmd  => fun(#{sock_dst      := Sock,
+                         dst_def_value := DefValue,
+                         sa_src        := Src,
+                         recv          := Recv}) ->
+                           ExpCHdr1 = #{level => ip,
+                                        type  => tos,
+                                        value => DefValue,
+                                        data  => any},
+                           ExpCHdr2 = #{level => ip,
+                                        type  => recvtos,
+                                        value => DefValue,
+                                        data  => any},
                            case Recv(Sock) of
                                {ok, {Src, [#{level := ip,
                                              type  := TOS,
-                                             value := 0}], ?BASIC_REQ}}
-                                 when ((TOS =:= tos) orelse (TOS =:= recvtos)) ->
+                                             value := DefValue}], ?BASIC_REQ}}
+                                 when (TOS =:= tos) orelse
+                                      (TOS =:= recvtos) ->
                                    ?SEV_IPRINT("got default TOS (~w) "
                                                "control message header", [TOS]),
                                    ok;
@@ -21810,12 +21843,14 @@ api_opt_ip_recvtos_udp(InitState) ->
                                    ?SEV_EPRINT("Unexpected msg: "
                                                "~n   Expect Source: ~p"
                                                "~n   Recv Source:   ~p"
-                                               "~n   Expect CHdrs:  ~p"
+                                               "~n   Expect CHdrs:"
+                                               "~n     Alt 1:  ~p"
+                                               "~n     Alt 2:  ~p"
                                                "~n   Recv CHdrs:    ~p"
                                                "~n   Expect Msg:    ~p"
                                                "~n   Recv Msg:      ~p",
                                                [Src, BadSrc,
-                                                [], BadCHdrs,
+                                                ExpCHdr1, ExpCHdr2, BadCHdrs,
                                                 ?BASIC_REQ, BadReq]),
                                    {error, {unexpected_data, UnexpData}};
                                {ok, UnexpData} ->
-- 
2.35.3

openSUSE Build Service is sponsored by