anchor.diff:  discovery_note_timeout(Timeout) ->
       (Timeout div 100) + 1.
       
  -generate_discovery_msg(NoteStore, {?snmpUDPDomain, [A,B,C,D,U1,U2]}, 
  +generate_discovery_msg(NoteStore, {TDomain, TAddress}, 
   		       Pdu, ScopedPduBytes, 
   		       ContextEngineID, ManagerEngineID, 
   		       SecModel, SecName, SecLevelFlag, 
   		       InitialUserName, 
   		       ContextName, Timeout) ->
  +
  +    {ok, {_Domain, Address}} = transform_taddr(TDomain, TAddress),
  +    
       %% 7.1.7
       ?vdebug("generate_discovery_msg -> 7.1.7 (~w)", [ManagerEngineID]),
       MsgID     = generate_msg_id(),
  
positive.code:     lists:reverse(Acc);
  
  %% v3
  process_taddrs([{{?snmpUDPDomain, [A,B,C,D,U1,U2]}, SecData} | T], Acc) ->
      ?vtrace("process_taddrs -> entry when v3 with"
  	    "~n   A:       ~p"
  	    "~n   B:       ~p"
  	    "~n   C:       ~p"
  	    "~n   D:       ~p"
  	    "~n   U1:      ~p"
  	    "~n   U2:      ~p"
  	    "~n   SecData: ~p", [A, B, C, D, U1, U2, SecData]),
      Entry = {{snmpUDPDomain, {{A,B,C,D}, U1 bsl 8 + U2}}, SecData}, 
      process_taddrs(T, [Entry | Acc]);
  %% Bad v3
  process_taddrs([{{TDomain, TAddr}, _SecData} | T], Acc) ->
      ?vtrace("process_taddrs -> entry when bad v3 with"
  	    "~n   TDomain: ~p"
  	    "~n   TAddr:   ~p", [TDomain, TAddr]),
      user_err("Bad TDomain/TAddr: ~w/~w", [TDomain, TAddr]),
      process_taddrs(T, Acc);
  %% v1 & v2
  process_taddrs([{?snmpUDPDomain, [A,B,C,D,U1,U2]} | T], Acc) ->
      ?vtrace("process_taddrs -> entry when v1/v2 with"
  	    "~n   A:  ~p"
  	    "~n   B:  ~p"
  	    "~n   C:  ~p"
  	    "~n   D:  ~p"
  	    "~n   U1: ~p"
  	    "~n   U2: ~p", [A, B, C, D, U1, U2]),
      Entry = {snmpUDPDomain, {{A,B,C,D}, U1 bsl 8 + U2}}, 
      process_taddrs(T, [Entry | Acc]);
  %% Bad v1 or v2
  process_taddrs([{TDomain, TAddr} | T], Acc) ->
      ?vtrace("process_taddrs -> entry when bad v1/v2 with"
  	    "~n   TDomain: ~p"
  	    "~n   TAddr:   ~p", [TDomain, TAddr]),
      user_err("Bad TDomain/TAddr: ~w/~w", [TDomain, TAddr]),
      process_taddrs(T, Acc);
  process_taddrs(Crap, Acc) ->
      throw({error, {taddrs_crap, Crap, Acc}}).
  
  
negative.code:     end.
  	
      
  transform_taddr(?snmpUDPDomain, TAddress) ->
      transform_taddr(?transportDomainUdpIpv4, TAddress);
  transform_taddr(?transportDomainUdpIpv4, [A, B, C, D, P1, P2]) ->
      Domain  = transportDomainUdpIpv4, 
      Addr    = {A,B,C,D}, 
      Port    = P1 bsl 8 + P2, 
      Address = {Addr, Port},
      {ok, {Domain, Address}};
  transform_taddr(?transportDomainUdpIpv4, BadAddr) ->
      {error, {bad_transportDomainUdpIpv4_address, BadAddr}};
  transform_taddr(?transportDomainUdpIpv6, 
  		[A1, A2, A3, A4, A5, A6, A7, A8, P1, P2]) ->
      Domain  = transportDomainUdpIpv6, 
      Addr    = {A1, A2, A3, A4, A5, A6, A7, A8},
      Port    = P1 bsl 8 + P2,
      Address = {Addr, Port},
      {ok, {Domain, Address}};
  transform_taddr(?transportDomainUdpIpv6, BadAddr) ->
      {error, {bad_transportDomainUdpIpv6_address, BadAddr}};
  transform_taddr(BadTDomain, BadTAddress) ->
      {error, {bad_domain, BadTDomain, BadTAddress}}.
  
  
  process_taddrs(Dests) ->
      ?vtrace("process_taddrs -> entry with"
  	    "~n   Dests: ~p", [Dests]),
  