anchor.diff:  
   add_transports(Config) ->
       LRef = ?util:listen(?SERVER, tcp, [{capabilities_cb, fun capx/2}]),
  -    Cs = [?util:connect(?CLIENT, tcp, LRef, [{id, C}]) || C <- ?CONNECTIONS],
  +    Cs = [?util:connect(?CLIENT, tcp, LRef, [{id, C},
  +                                             {capabilities, [osi(C)]}])
  +          || C <- ?CONNECTIONS],
       ?util:write_priv(Config, "transport", [LRef | Cs]).
   
   remove_transports(Config) ->
  
positive.code:                   {'Accounting-Record-Type', RT},
                    {'Accounting-Record-Number', RN}],
  
      {reply, #diameter_packet{header = #diameter_header{is_error = true},%% not
                               msg = Ans}};
  
  %% send_eval
  
negative.code: 
  call(Config, Req, Opts) ->
      Name = proplists:get_value(testcase, Config),
      [Encoding, C, E] = ?util:name(proplists:get_value(group, Config)),
      diameter:call(?CLIENT,
                    dict(Req),
                    msg(Req, Encoding),
                    [{extra, [Name, client(E,C)]} | Opts]).
  
  client(E, C) ->
      list_to_atom([$c, $0 + 2*codec(E) + container(C)]).
  
  client(N) ->
      {codec(N bsr 1), container(N rem 2)}.
  
  codec(record) -> 0;
  codec(list) -> 1;
  codec(0) -> record;
  codec(1) -> list.
  
  %% Here we're just mapping booleans but the readable atoms are part of
  %% (constructed) group names, so it's good that they're readable.
  
  container(pkt) -> 0;
  container(msg) -> 1;
  container(0) -> pkt;
  container(1) -> msg.
  
  msg([H|T], record)
    when H == 'ACR';
         H == 'ACA' ->
      ?ACCT:'#new-'(?ACCT:msg2rec(H), T);
  msg([H|T], record) ->
      ?BASE:'#new-'(?BASE:msg2rec(H), T);
  msg(T, _) ->
      T.
  
  dict(['ACR' | _]) ->
  