anchor.diff:  -include("dnsxd_internal.hrl").
   
   %% API
  --export([ensure_apps_started/1, new_id/0,
  -	 active_rr_fun/0, active_rr_fun/1, active_rr/2,
  -	 to_dns_rr/1, to_dns_rr/2, is_dnssd_rr/2,
  -	 use_procket/0, procket_open/4, cancel_timer/1,
  -	 ip_to_txt/1]).
  +-export([ensure_apps_started/1, new_id/0, is_dnssd_rr/2, use_procket/0,
  +	 procket_open/4, cancel_timer/1, ip_to_txt/1]).
   
   %%%===================================================================
   %%% API
  
positive.code: 	<<"::FFFF:", Bin/binary>> -> Bin;
  	Bin -> Bin
      end.
  
  %%%===================================================================
  %%% Internal functions
  %%%===================================================================
  
  hash(#dns_rr{name = Name, class = Class, type = Type, data = Data}) ->
      hash(Name, Class, Type, Data);
  hash(#dnsxd_rr{name = Name, class = Class, type = Type, data = Data}) ->
      hash(Name, Class, Type, Data).
  
  hash(Name, Class, ?DNS_TYPE_RRSIG,
  	       #dns_rrdata_rrsig{type_covered = Type}) when is_integer(Class) ->
      hash(Name, Class, Type, undefined);
  hash(Name, Class, Type, Data) when is_atom(Type) ->
      NewType = dns:type_to_int(Type),
      hash(Name, Class, NewType, Data);
  hash(Name, Class, Type, Data) when is_atom(Class) ->
      NewClass = dns:class_to_int(Class),
      hash(Name, NewClass, Type, Data);
  hash(Name, Class, Type, _Data)
    when is_integer(Class) andalso is_integer(Type) ->
      erlang:phash2({Name, Class, Type}).
  
negative.code: new_id(Int)
    when is_integer(Int) andalso Int >= 10 andalso Int =< 31 -> Int + 87.
  
  is_dnssd_rr(ZoneName, #dns_rr{name = Name, type = Type}) ->
      is_dnssd_rr(ZoneName, Name, Type);
  is_dnssd_rr(ZoneName, #dnsxd_rr{name = Name, type = Type}) ->
      is_dnssd_rr(ZoneName, Name, Type).
  
  is_dnssd_rr(ZoneName, Name, Type) when is_binary(ZoneName) ->
      ZoneNameLabels = dns:dname_to_labels(ZoneName),
      is_dnssd_rr(ZoneNameLabels, Name, Type);
  