anchor.diff:  net_snmp_version([v1 | _]) ->
       "-v1".
   
  -net_snmp_addr_str(IPv4Addr, Port) when tuple_size(IPv4Addr) =:= 4 ->
  +domain(inet) ->
  +    transportDomainUdpIpv4;
  +domain(inet6) ->
  +    transportDomainUdpIpv6.
  +
  +net_snmp_addr_str([Target | Targets]) ->
  +    net_snmp_addr_str(Target) ++
  +	case Targets of
  +	    [] ->
  +		[];
  +	    [_ | _] ->
  +		"," ++ net_snmp_addr_str(Targets)
  +	end;
  +net_snmp_addr_str({transportDomainUdpIpv4, {Addr, Port}}) ->
       "udp:" ++
  -	inet_parse:ntoa(IPv4Addr) ++ ":" ++
  +	inet_parse:ntoa(Addr) ++ ":" ++
   	integer_to_list(Port);
  -net_snmp_addr_str(IPv6Addr, Port) when tuple_size(IPv6Addr) =:= 8 ->
  +net_snmp_addr_str({transportDomainUdpIpv6, {Addr, Port}}) ->
       "udp6:[" ++
  -	inet_parse:ntoa(IPv6Addr) ++ "]:" ++
  +	inet_parse:ntoa(Addr) ++ "]:" ++
   	integer_to_list(Port).
  
positive.code: init_per_group(ipv6, Config) ->
      case ct:require(ipv6_hosts) of
  	ok ->
  	    Dir = ?config(priv_dir, Config),
  	    Domain =  transportDomainUdpIpv6,
  	    AgentPort = ?config(agent_port, Config),
  	    ManagerPort = ?config(manager_port, Config),
  	    {ok, Host} = inet:gethostname(),
  	    {ok, IpAddr} = inet:getaddr(Host, inet6),
  	    Transports = [{Domain, {IpAddr, AgentPort}}],
  	    TrapAddr = {IpAddr, ManagerPort},
  	    Versions = [v2],
  	    agent_config(Dir, Transports, Domain, TrapAddr, Versions),
  	    [{snmp_versions, Versions}, {ip_version, ipv6},
  	     {trapaddrs, [IpAddr]}
  	     | Config];
  	_ ->
  	    {skip, "Host does not support IPV6"}
      end;
  %%
  init_per_group(ipv4, Config) ->
      Dir = ?config(priv_dir, Config),
      Domain =  transportDomainUdpIpv4,
      AgentPort = ?config(agent_port, Config),
      ManagerPort = ?config(manager_port, Config),
      {ok, Host} = inet:gethostname(),
      {ok, IpAddr} = inet:getaddr(Host, inet),
      Transports = [{Domain, {IpAddr, AgentPort}}],
      TrapAddr = {IpAddr, ManagerPort},
      Versions = [v2],
      agent_config(Dir, Transports, Domain, TrapAddr, Versions),
      [{snmp_versions, Versions}, {ip_version, ipv4},
       {trapaddrs, [IpAddr]}
       | Config];
  %%
  init_per_group(dual_ip, Config) ->
      case find_executables([snmpget, snmptrapd], Config) of
  	NewConfig when is_list(NewConfig) ->
  	    case ct:require(ipv6_hosts) of
  		ok ->
  		    Dir = ?config(priv_dir, Config),
  		    Domain = transportDomainUdpIpv4,
  		    AgentPort = ?config(agent_port, Config),
  		    ManagerPort = ?config(manager_port, Config),
  		    {ok, Host} = inet:gethostname(),
  		    {ok, IPv4Addr} = inet:getaddr(Host, inet),
  		    {ok, IPv6Addr} = inet:getaddr(Host, inet6),
  		    Transports =
  			[{Domain, {IPv4Addr, AgentPort}},
  			 {transportDomainUdpIpv6, {IPv6Addr, AgentPort}}],
  		    Targets =
  			[{Domain, {IPv4Addr, ManagerPort}},
  			 {transportDomainUdpIpv6, {IPv6Addr, ManagerPort}}],
  		    Versions = [v2],
  		    agent_config(Dir, Transports, Targets, Versions),
  		    [{port, ?AGENT_PORT}, {snmp_versions, Versions},
  		     {trapaddrs, [IPv4Addr, IPv6Addr]}
  		     | NewConfig];
  		_ ->
  		    {skip, "Host does not support IPV6"}
  	    end;
  
negative.code:      {inform, [],
        [erlang_agent_netsnmp_inform]},
       {dual_ip, [],
        [erlang_agent_netsnmp_get,
         erlang_agent_netsnmp_inform]}
      ].
  
  init_per_suite(Config) ->
  