sig
  module AF :
    sig
      type tag = [ `AF_INET6 ]
      type address = Cf_ip6_addr.opaque Cf_ip6_addr.t * int * int32
      val domain : tag Cf_socket.domain
      val to_sockaddr : address -> tag Cf_socket.sockaddr
      val of_sockaddr : tag Cf_socket.sockaddr -> address
      val unspecified : tag Cf_socket.sockaddr
    end
  module TCP :
    sig
      module AF :
        sig
          type tag = [ `AF_INET6 ]
          type address = Cf_ip6_addr.opaque Cf_ip6_addr.t * int * int32
          val domain : tag Cf_socket.domain
          val to_sockaddr : address -> tag Cf_socket.sockaddr
          val of_sockaddr : tag Cf_socket.sockaddr -> address
          val unspecified : tag Cf_socket.sockaddr
        end
      module ST :
        sig
          type tag = [ `SOCK_STREAM ]
          val socktype : tag Cf_socket.socktype
        end
      val protocol : Cf_socket.protocol
    end
  module UDP :
    sig
      module AF :
        sig
          type tag = [ `AF_INET6 ]
          type address = Cf_ip6_addr.opaque Cf_ip6_addr.t * int * int32
          val domain : tag Cf_socket.domain
          val to_sockaddr : address -> tag Cf_socket.sockaddr
          val of_sockaddr : tag Cf_socket.sockaddr -> address
          val unspecified : tag Cf_socket.sockaddr
        end
      module ST :
        sig
          type tag = [ `SOCK_DGRAM ]
          val socktype : tag Cf_socket.socktype
        end
      val protocol : Cf_socket.protocol
    end
  type mreq = {
    ipv6mr_multiaddr : Cf_ip4_addr.multicast Cf_ip4_addr.t;
    ipv6mr_interface : int;
  }
  val ipv6_unicast_hops : (int, [ `AF_INET6 ], 'a) Cf_socket.sockopt
  val ipv6_v6only : (bool, [ `AF_INET6 ], 'a) Cf_socket.sockopt
  val ipv6_join_group :
    (Cf_ip6_proto.mreq, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt
  val ipv6_leave_group :
    (Cf_ip6_proto.mreq, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt
  val ipv6_multicast_if :
    (int, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt
  val ipv6_multicast_hops :
    (int, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt
  val ipv6_multicast_loop :
    (bool, [ `AF_INET6 ], [ `SOCK_DGRAM ]) Cf_socket.sockopt
end