A representation of CIDR netmasks (e.g. "192.168.0.0/24") and functions to match if a
given address is inside the range or not. Only IPv4 addresses are supported. Values
are always normalized so the base address is the lowest IP address in the range, so
for example to_string (of_string "192.168.1.101/24") = "192.168.1.0/24"
.
include sig ... end
val t_of_sexp : Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Sexplib.Sexp.t
val bin_t : t Bin_prot.Type_class.t
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (int ‑> t) Bin_prot.Read.reader
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t
of_string
Generates a Cidr.t based on a string like "10.0.0.0/8"
. Addresses are
not expanded, i.e. "10/8"
is invalid.
include Core__.Import.Identifiable.S with type t := t
include sig ... end
val bin_t : t Bin_prot.Type_class.t
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (Core_kernel__.Import.int ‑> t) Bin_prot.Read.reader
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t
val hash_fold_t : Base.Hash.state ‑> t ‑> Base.Hash.state
val hash : t ‑> Base.Hash.hash_value
val t_of_sexp : Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Sexplib.Sexp.t
include Core__.Import.Identifiable.S_common with type t := t
include sig ... end
val compare : t ‑> t ‑> Core_kernel__.Import.int
val hash_fold_t : Base.Hash.state ‑> t ‑> Base.Hash.state
val hash : t ‑> Base.Hash.hash_value
val sexp_of_t : t ‑> Sexplib.Sexp.t
include Core_kernel__.Import.Stringable.S with type t := t
val of_string : string ‑> t
val to_string : t ‑> string
include Core_kernel__.Import.Pretty_printer.S with type t := t
val pp : Caml.Format.formatter ‑> t ‑> unit
include Core_kernel.Comparable.S_binable with type t := t
include Core_kernel__.Comparable_intf.S_common
include Base.Comparable_intf.S
include Base.Comparable_intf.Polymorphic_compare
ascending
is identical to compare
. descending x y = ascending y x
. These are
intended to be mnemonic when used like List.sort ~cmp:ascending
and List.sort
~cmp:descending
, since they cause the list to be sorted in ascending or descending
order, respectively.
clamp_exn t ~min ~max
returns t'
, the closest value to t
such that
between t' ~low:min ~high:max
is true.
Raises if not (min <= max)
.
val clamp : t ‑> min:t ‑> max:t ‑> t Base.Or_error.t
include Base.Comparator.S with type t := t
val comparator : (t, comparator_witness) Base.Comparator.comparator
include Base.Comparable_intf.Validate with type t := t
val validate_lbound : min:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_ubound : max:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_bound : min:t Base.Maybe_bound.t ‑> max:t Base.Maybe_bound.t ‑> t Base.Validate.check
module Replace_polymorphic_compare : Core_kernel__.Comparable_intf.Polymorphic_compare with type t := t
include Core_kernel__.Comparable_intf.Map_and_set_binable with type t := t with type comparator_witness := comparator_witness
include Core_kernel.Comparator.S with type t := t
val comparator : (t, comparator_witness) Core_kernel.Comparator.comparator
module Map : Core_kernel.Map.S_binable with type Key.t = t with type Key.comparator_witness = comparator_witness
module Set : Core_kernel.Set.S_binable with type Elt.t = t with type Elt.comparator_witness = comparator_witness
include Core_kernel.Hashable.S_binable with type t := t
include sig ... end
val hash_fold_t : Base.Hash.state ‑> t ‑> Base.Hash.state
val hash : t ‑> Base.Hash.hash_value
val hashable : t Core_kernel.Hashtbl.Hashable.t
module Table : Core_kernel.Hashtbl.S_binable with type key = t
module Hash_set : Core_kernel.Hash_set.S_binable with type elt = t
module Hash_queue : Core_kernel.Hash_queue.S with type Key.t = t
val create : base_address:Inet_addr.t ‑> bits:int ‑> t
val base_address : t ‑> Inet_addr.t
Accessors.
base_address 192.168.0.0/24 = 192.168.0.0
bits 192.168.0.0/24 = 24
.val bits : t ‑> int
val all_matching_addresses : t ‑> Inet_addr.t Core__.Import.Sequence.t
Generate a sequence of all addresses in the block.
val multicast : t
IPv4 multicast address can be represented by the CIDR prefix 224.0.0.0/4, (i.e. addresses from 224.0.0.0 to 239.255.255.255, inclusive)
val does_match : t ‑> Inet_addr.t ‑> bool
Is the given address inside the given Cidr.t? Note that the broadcast and network
addresses are considered valid so does_match 10.0.0.0/8 10.0.0.0
is true.
val netmask_of_bits : t ‑> Inet_addr.t
Return the netmask corresponding to the number of network bits in the CIDR. For example, the netmask for a CIDR with 24 network bits (e.g. 1.2.3.0/24) is 255.255.255.0.
is_subset t1 ~of:t2
is true iff the set of IP addresses specified by t1
is a
subset of those specified by t2
.
If is_subset t1 ~of_:t2
, then does_match t1 x
implies does_match t2 x
.
If does_match t1 x
and does_match t2 x
, then either is_subset t1 ~of_:t2
or
is_subset t2 ~of_:t1
(or both).
module Stable : sig ... end