ipaddr

A library for manipulation of IP (and MAC) address representations
README

A library for manipulation of IP and MAC address representations.

Features:

  • ounit2-based tests

  • IPv4 and IPv6 support

  • IPv4 and IPv6 CIDR prefix support

  • IPv4 and IPv6 CIDR-scoped address support

  • Ipaddr.V4 and Ipaddr.V4.Prefix modules are Map.OrderedType

  • Ipaddr.V6 and Ipaddr.V6.Prefix modules are Map.OrderedType

  • Ipaddr and Ipaddr.Prefix modules are Map.OrderedType

  • Ipaddr_unix in findlib subpackage ipaddr.unix provides compatibility with the standard library Unix module

  • Ipaddr_top in findlib subpackage ipaddr.top provides top-level pretty printers

  • IP address scope classification

  • IPv4-mapped addresses in IPv6 (::ffff:0:0/96) are an embedding of IPv4

  • MAC-48 (Ethernet) address support

  • Macaddr is a Map.OrderedType

  • All types have sexplib serializers/deserializers optionally via the Ipaddr_sexp and Macaddr_sexp libraries.

Usage

There are the following opam packages included:

  • ipaddr: the Ipaddr and associated modules

  • ipaddr-sexp

  • ipaddr-cstruct

  • macaddr: the Macaddr and associated modules.

  • macaddr-sexp

  • macaddr-cstruct

There are the following ocamlfind libraries included as part of this
repository, included as part of the respective opam packages.

  • ipaddr: The Ipaddr module for IPv4/6 manipulation.

  • ipaddr.top: Toplevel printers for Ipaddr.

  • ipaddr-cstruct: The Ipaddr_cstruct module

  • macaddr: The Macaddr module for MAC address manipulation.

  • macaddr.top: Toplevel printers for Macaddr.

  • macaddr-cstruct: The Macaddr_cstruct module

  • ipaddr-sexp: S-expression converters for Ipaddr.

  • macaddr-sexp: S-expression converters for Macaddr.

Installation and development

The packages are released to the opam-repository. An opam install ipaddr
(or any other above mentioned package) will install it. If you want to install
the latest development commit, opam pin add ipaddr --dev will do this.

A local build, after a git clone can be done with dune build, a
dune runtest compiles and executes the testsuite. If dependencies are missing,
opam install (-t) --deps-only . in the cloned directory will install them.

The auto-formatter ocamlformat is
used, please execute dune build @fmt --auto-promote before submitting a pull
request.

Contact

Install
Published
04 Jul 2022
Maintainers
Sources
ipaddr-5.3.1.tbz
sha256=9820bcbccadb6e6d9e22fe26b2f9a044897c8f47c29d157f464b41a2f191e7d4
sha512=1d400f8344d1a8c2ac1c55e4a7167484034094e2227ce7c8f2f45843b0875a83030851400ceb96b5cdb756fa8798d83c77d839705fcb9e3f2bd5e46d337d63d0
Dependencies
ppx_sexp_conv
with-test & >= "v0.9.0"
ounit2
with-test
domain-name
>= "0.3.0"
macaddr
= version
dune
>= "1.9.0"
ocaml
>= "4.08.0"
Reverse Dependencies
arp
>= "2.1.0"
charrua
>= "1.2.2"
charrua-client
>= "1.1.0"
charrua-server
< "1.1.0" | >= "1.2.2"
charrua-unix
= "0.6" | >= "1.4.0"
cohttp-async
>= "3.0.0"
conduit
>= "1.5.0"
conduit-async
>= "1.4.0" & != "3.0.0"
conduit-mirage
!= "3.0.0"
dkim
>= "0.2.0"
dns
>= "0.8.0" & < "0.10.0" | >= "1.1.3"
eliom
>= "4.0.0"
frenetic
>= "3.2.0"
git
>= "3.0.0"
git-mirage
>= "3.0.0"
git-unix
>= "3.0.0"
ipaddr-cstruct
>= "5.3.1"
ipaddr-sexp
>= "5.3.1"
learn-ocaml
>= "0.12" & < "0.14.0"
mbr-format
< "1.0.0"
mirage
>= "0.10.0" & < "2.9.0" | >= "3.8.0"
mirage-block-xen
>= "1.1.0" & < "2.0.0"
mirage-conduit
>= "3.2.0"
mirage-nat
< "1.2.0" | >= "2.2.2"
mirage-runtime
>= "3.8.0"
mirage-unix
>= "0.9.4" & < "0.9.9"
mirage-vnetif
>= "0.4.1"
mirage-www
>= "1.1.0"
mirage-xen
>= "0.9.5" & < "0.9.9"
mirari
>= "0.9.6"
mrt-format
>= "0.3.0"
netchannel
>= "1.8.1"
ocsigenserver
>= "2.4.0"
paf
>= "0.0.2" & < "0.0.4"
pcap-format
= "0.4.0"
pgx
>= "1.0"
tcpip
>= "3.6.0"
tezos-base
>= "8.0"
tls
>= "0.15.0"
tuntap
>= "2.0.0"
vchan
>= "0.9.6" & < "2.0.0"
vhd-format
>= "0.7.0" & < "0.9.1"
x509
= "0.7.0" | >= "0.15.0"