anchor.diff:                 "~n   ~p", [OptsVals]),
               case gen_udp:send(S2, Addr, P1, OptsVals, <<"ABCDE">>) of
                   ok ->
  +                    ?SLEEP(100),
                       ok;
                   {error, enoprotoopt = Reason1} ->
                       ?SKIPT(?F("send (1) failed: ~p", [Reason1]))
  
positive.code:                "~n   ~p", [OptsVals]),
              case gen_udp:send(S2, {Addr,P1}, OptsVals, <<"12345">>) of
                  ok ->
                      ok;
                  {error, enoprotoopt = Reason2} ->
                      ?SKIPT(?F("send (2) failed: ~p", [Reason2]))
  
negative.code:     %%
      ?P("send/4: S2 -> S1"),
      ok = gen_udp:send(S2, {Addr,P1}, [], <<"klmno">>),
      ?SLEEP(100),
  
      ?P("send/3: S1 -> S2"),
      ok = gen_udp:send(S1, {Family,{loopback,P2}}, <<"pqrst">>),
      ?SLEEP(100),
  
      TestSend andalso
          begin
              ?P("send/4: S1 -> S2"
                 "~n   ~p", [OptsVals]),
              ok = gen_udp:send(S1,
                                {Family,{loopback,P2}}, OptsVals2, <<"PQRST">>),
              ?SLEEP(100)
          end,
  
      ?P("try recv data on S1"),
      {ok,{_,P2,<<"klmno">>}} = gen_udp:recv(S1, 0, Timeout),
      ?P("await message on S2"),
  