anchor.diff:  
   
   %% @doc check that I can listen on the current host
  --spec can_listen(string()) -> boolean().
  +-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;
  +            {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;
  +                    {false, ListErr};
                   {ok, Socket} ->
                       gen_udp:close(Socket),
                       true
  
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: check(ip, Opaque, _History, _Stats) ->
      {_Name, Host} = misc:node_name_host(node()),
      case can_listen(Host) of
          {false, Error} ->
              global_alert(ip, fmt_to_bin(errors(ip), [node(), Error]));
          true ->
              ok
      end,
  