anchor.diff:        end).
   
   sendttl(_Config) ->
  +    ?TRY_TC(fun() -> do_sendttl() end).
  +
  +do_sendttl() ->
       test_recv_opts(
         inet, [{recvttl,ttl,33}], true,
         fun sendttl_ok/2).
   
   sendtclass(_Config) ->
  +    ?TRY_TC(fun() -> do_sendtclass() end).
  +
  +do_sendtclass() ->
       {ok,IFs} = inet:getifaddrs(),
       case
           [Name ||
  
positive.code: sendtclass_ok(_, _) -> false.
  
  
  semver_lt({X1,Y1,Z1}, {X2,Y2,Z2}) ->
      if
          X1 > X2 -> false;
          X1 < X2 -> true;
          Y1 > Y2 -> false;
          Y1 < Y2 -> true;
          Z1 > Z2 -> false;
          Z1 < Z2 -> true;
          true -> false
      end;
  semver_lt(_, {_,_,_}) -> false.
  
  test_recv_opts(Family, Spec, TestSend, OSFilter) ->
      OSType = os:type(),
      OSVer = os:version(),
      case OSFilter(OSType, OSVer) of
          true ->
              io:format("Os: ~p, ~p~n", [OSType,OSVer]),
              test_recv_opts(Family, Spec, TestSend, OSType, OSVer);
          false ->
              {skip,{not_supported_for_os_version,{OSType,OSVer}}}
  
negative.code:     ok = gen_udp:send(S1, Addr, P2, <<"fghij">>),
      TestSend andalso
          begin
              case gen_udp:send(S2, Addr, P1, OptsVals, <<"ABCDE">>) of
                  ok ->
                      ok;
                  {error, enoprotoopt = Reason1} ->
                      skip(f("send (1) failed: ~p", [Reason1]))
              end,
              case gen_udp:send(S2, {Addr,P1}, OptsVals, <<"12345">>) of
                  ok ->
                      ok;
                  {error, enoprotoopt = Reason2} ->
                      skip(f("send (2) failed: ~p", [Reason2]))
              end
          end,
      {ok,{_,P2,OptsVals3,<<"abcde">>}} = gen_udp:recv(S1, 0, Timeout),
      verify_sets_eq(OptsVals3, OptsVals2),
  