sig
  module AF :
    sig
      type tag_t = [ `AF_INET ]
      type address_t = Cf_ip4_addr.opaque Cf_ip4_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 = {
    imr_multiaddr : Cf_ip4_addr.multicast Cf_ip4_addr.t;
    imr_interface : Cf_ip4_addr.unicast Cf_ip4_addr.t;
  }
  val ip_ttl : (int, [ `AF_INET ], 'a) Cf_socket.sockopt_t
  val ip_add_membership :
    (Cf_ip4_proto.mreq_t, [ `AF_INET ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ip_drop_membership :
    (Cf_ip4_proto.mreq_t, [ `AF_INET ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ip_multicast_if :
    (Cf_ip4_addr.unicast Cf_ip4_addr.t, [ `AF_INET ], [ `SOCK_DGRAM ])
    Cf_socket.sockopt_t
  val ip_multicast_ttl :
    (int, [ `AF_INET ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val ip_multicast_loop :
    (bool, [ `AF_INET ], [ `SOCK_DGRAM ]) Cf_socket.sockopt_t
  val siocgifaddr :
    ([ `AF_INET ], 'a) Cf_socket.t ->
    string -> [> Cf_ip4_addr.unicast ] Cf_ip4_addr.t
end