anchor.diff:  check(ip, Opaque, _History, _Stats) ->
       {_Name, Host} = misc:node_name_host(node()),
       case can_listen(Host) of
  -        false ->
  -            global_alert(ip, fmt_to_bin(errors(ip), [node()]));
  +        {false, Error} ->
  +            global_alert(ip, fmt_to_bin(errors(ip), [node(), Error]));
           true ->
               ok
       end,
  
positive.code: 
  %% Error constants
  errors(ip) ->
      "IP address seems to have changed. Unable to listen on ~p.";
  errors(ep_oom_errors) ->
      "Hard Out Of Memory Error. Bucket \"~s\" on node ~s is full. All memory allocated to this bucket is used for metadata.";
  errors(ep_item_commit_failed) ->
  
negative.code: 
  
  %% @doc check that I can listen on the current host
  -spec can_listen(string()) -> true | {false, inet:posix()}.
  can_listen(Host) ->
      case inet:getaddr(Host, inet) of
          {error, Err} ->
              ?log_error("Cannot listen due to ~p from inet:getaddr~n", [Err]),
              {false, Err};
          {ok, IpAddr} ->
              case gen_udp:open(0, [inet, {ip, IpAddr}]) of
                  {error, ListErr} ->
                      ?log_error("gen_udp:open(~p) failed due to ~p", [IpAddr, ListErr]),
                      {false, ListErr};
                  {ok, Socket} ->
                      gen_udp:close(Socket),
                      true
  