anchor.diff:      {Vsns, ConfigDir, SysConfig}.
   
   
  +config_agent_transports(ID) ->
  +    config_agent_transports(ID, []).
  +
  +config_agent_transports(ID, []) ->
  +    i(ID ++ ". Configure atleast one transport: "),
  +    T = config_agent_transport(ID),
  +    config_agent_transports(ID, [T]);
  +config_agent_transports(ID, Acc) ->
  +    case ask(ID ++ ". Configure another transport (yes/no)?",
  +             "yes", fun verify_yes_or_no/1) of
  +        yes ->
  +            T = config_agent_transport(ID),
  +            config_agent_transports(ID, [T|Acc]);
  +        no ->
  +            lists:reverse(Acc)
  +    end.
  +
  +config_agent_transport(ID) ->
  +    TDomain  = ask(ID ++ "a. Transport Domain "
  +                   "(UDP IPv4 (u4) or UDP IPv6 (u6))", 
  +                   "u4", fun verify_transport_domain/1),
  +    Host     = host(TDomain),
  +    Address  = ask(ID ++ "b. Address of transport",
  +                   Host, fun(A) -> verify_transport_address(TDomain, A) end),
  +    PortInfo = ask(ID ++ "c. Port number info (how we shall choose a port)"
  +                   "~n    Note that we do not allow all variants here! "
  +                   "~n    Edit manually for more variants (range/ranges)."
  +                   "~n    default(d)/system(s)/pos-integer",
  +                   "4000", fun verify_port_number_info/1),
  +    TAddress = {Address, PortInfo},
  +    Kind = ask(ID ++ "d. Kind of transport "
  +               "(all(a)/request-responder(rr)/trap-sender(ts))",
  +               "a", fun verify_transport_kind/1),
  +    i("*** We do not ask about the transport options here ***~n"
  +      "*** the user must manually edit the config files!  ***"),
  +    case Kind of
  +        all ->
  +            {TDomain, TAddress, []};
  +        _ when (Kind =:= req_responder) orelse (Kind =:= trap_sender) ->
  +            {TDomain, TAddress, Kind, []}
  +    end.
  +
   config_agent_snmp(Dir, Vsns) ->
       i("~nAgent snmp config: "
         "~n------------------"),
  
positive.code:     ok;
  write_agent_snmp_files(
    Dir, Vsns, Domain, ManagerAddr, AgentAddr, SysName,
    NotifType, SecType, Passwd, EngineID, MMS) when is_tuple(AgentAddr) ->
      write_agent_snmp_conf(Dir, [{Domain, AgentAddr}], EngineID, MMS),
      write_agent_snmp_context_conf(Dir),
      write_agent_snmp_community_conf(Dir),
  
negative.code:     end.
      
  
  verify_transport_domain("u4") ->
      {ok, transportDomainUdpIpv4};
  verify_transport_domain("udp4") ->
      {ok, transportDomainUdpIpv4};
  verify_transport_domain("transportDomainUdpIpv4") ->
      {ok, transportDomainUdpIpv4};
  verify_transport_domain("u6") ->
      {ok, transportDomainUdpIpv6};
  verify_transport_domain("udp6") ->
      {ok, transportDomainUdpIpv6};
  verify_transport_domain("transportDomainUdpIpv6") ->
      {ok, transportDomainUdpIpv6};
  verify_transport_domain(TS) ->
      {error, "invalid transport domain: " ++ TS}.
  
  
  verify_transport_address(transportDomainUdpIpv4 = _Domain, A) ->
      do_verify_address(A, inet, tuple);
  verify_transport_address(transportDomainUdpIpv6 = _Domain, A) ->
      do_verify_address(A, inet6, tuple).
  
  
  verify_transport_kind("a") ->
      {ok, all};
  verify_transport_kind("rr") ->
      {ok, req_responder};
  verify_transport_kind("ts") ->
      {ok, trap_sender};
  verify_transport_kind(K) ->
      {error, "invalid transport kind: " ++ K}.
  
  
  verify_port_number_info("d") ->
      {ok, 0};
  verify_port_number_info("default") ->
      {ok, 0};
  verify_port_number_info("s") ->
      {ok, system};
  verify_port_number_info("system") ->
      {ok, system};
  verify_port_number_info(P) ->
      case (catch list_to_integer(P)) of
  	N when is_integer(N) andalso (N > 0) ->
  	    {ok, N};
  	_ ->
  	    {error, "invalid port number: " ++ P}
      end.
  
  
  verify_term_disco_behaviour("discovery") ->
      {ok, discovery};
  verify_term_disco_behaviour("plain") ->
  