sig
  type unresolved_t =
      EAI_ADDRFAMILY
    | EAI_AGAIN
    | EAI_BADFLAGS
    | EAI_FAIL
    | EAI_FAMILY
    | EAI_MEMORY
    | EAI_NODATA
    | EAI_NONAME
    | EAI_SERVICE
    | EAI_SOCKTYPE
    | EAI_BADHINTS
    | EAI_PROTOCOL
    | EAI_UNKNOWN of int
  exception Unresolved of Cf_nameinfo.unresolved_t
  module AF :
    sig
      type tag_t = unit
      type address_t = unit Cf_socket.sockaddr_t
      val domain : tag_t Cf_socket.domain_t
      val to_sockaddr : address_t -> tag_t Cf_socket.sockaddr_t
      val of_sockaddr : tag_t Cf_socket.sockaddr_t -> address_t
      val unspecified : tag_t Cf_socket.sockaddr_t
    end
  val specialize_sockaddr :
    unit Cf_socket.sockaddr_t ->
    'Cf_socket.domain_t -> 'Cf_socket.sockaddr_t option
  type of_address_flags_t = {
    ni_nofqdn : bool;
    ni_numerichost : bool;
    ni_namereqd : bool;
    ni_numericserv : bool;
    ni_dgram : bool;
  }
  val of_address_default_flags : Cf_nameinfo.of_address_flags_t
  val of_address :
    ?host:int ->
    ?serv:int ->
    ?flags:Cf_nameinfo.of_address_flags_t ->
    'Cf_socket.sockaddr_t -> string * string
  type to_address_flags_t = {
    ai_passive : bool;
    ai_canonname : bool;
    ai_numerichost : bool;
  }
  val to_address_default_flags : Cf_nameinfo.to_address_flags_t
  type to_address_arg_t =
      A_nodename of string
    | A_servicename of string
    | A_bothnames of string * string
  type addrinfo_t = {
    ai_flags : Cf_nameinfo.to_address_flags_t;
    ai_family : unit Cf_socket.domain_t;
    ai_socktype : unit Cf_socket.socktype_t;
    ai_protocol : Cf_socket.protocol_t;
    ai_cname : string option;
    ai_addr : Cf_nameinfo.AF.address_t;
  }
  val addrinfo_default_hint : Cf_nameinfo.addrinfo_t
  val to_address :
    ?hint:Cf_nameinfo.addrinfo_t ->
    Cf_nameinfo.to_address_arg_t -> Cf_nameinfo.addrinfo_t list
end