sig
  module AF :
    sig
      type tag_t = [ `AF_INET6 ]
      type address_t = Cf_ip6_addr.opaque Cf_ip6_addr.t * int
      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
  type mreq_t = {
    ipv6mr_multiaddr : Cf_ip4_addr.multicast Cf_ip4_addr.t;
    ipv6mr_interface : int;
  }
  val ipv6_unicast_hops : (int, [ `AF_INET6 ], 'a) Cf_socket.sockopt_t
  val ipv6_v6only : (bool, [ `AF_INET6 ], 'a) Cf_socket.sockopt_t
  val ipv6_join_group :
    (Cf_ip6_proto.mreq_t, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ipv6_leave_group :
    (Cf_ip6_proto.mreq_t, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ipv6_multicast_if :
    (int, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ipv6_multicast_hops :
    (int, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ipv6_multicast_loop :
    (bool, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
end