anchor.diff:      {ok, notlisted};
   check_addr_list(DNSBL, List) ->
       List1 = lists:filter(fun
  +                            ({127,0,_,255}) -> false;
                               ({127,0,_,_}) -> true;
                               (_) -> false
                            end,
  
positive.code:         | {error, term()}.
  status(IP, DNSBLs, DNSWLs) ->
      Dotted = reverse(IP),
      case status_1(Dotted, DNSWLs) of
          {ok, {blocked, _}} -> {ok, whitelisted};
          _ -> status_1(Dotted, DNSBLs)
      end.
  
  status_1(_Dotted, []) ->
      {ok, notlisted};
  status_1(Dotted, [DNSBL|Rest]) ->
      case inet:gethostbyname(Dotted++DNSBL) of
          {ok, #hostent{h_addr_list=AddrList}} ->
              case check_addr_list(DNSBL, AddrList) of
                  {ok, notlisted} ->
                      status_1(Dotted, Rest);
                  Other ->
                      Other
              end;
          {error, nxdomain} ->
              status_1(Dotted, Rest);
          {error, _} ->
              status_1(Dotted, Rest)
      end.
  
  %% @doc Check the returned address against RFC5782 return values
  
negative.code:     test/0
  ]).
  
  % Not all ISPs have a subscription to the dnswl.org whitelist, Google has.
  -define(WHITELIST_NAMESERVERS, [{{8,8,8,8},53}, {{8,8,4,4},53}]).
  
  -include_lib("kernel/include/inet.hrl").
  
  -spec is_blocked(inet:ip_address()) -> boolean().
  