package ipaddr

  1. Overview
  2. Docs
A library for manipulation of IP (and MAC) address representations

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ipaddr-5.6.2.tbz
sha256=08a3fa6e6411490b6661e5b10229ea9ec6b8c3738e9f6b255859b13f145be136
sha512=719f32fd5a5c854ff5af2c668d20f9c4de4659a3d7d03d260e537ab402d9dd85a5350e611bfc3b8df10f6be02b5941d55a96cd2b4dccc0ad2710c95a51373bd8

Description

Features:

  • Depends only on sexplib (conditionalization under consideration)
  • 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 (requires compiler-libs default since OCaml 4.0)
  • 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

Tags

org:mirage org:xapi-project

Published: 20 Feb 2026

README

ipaddr: IP and MAC address manipulation

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

Dependencies (4)

  1. domain-name >= "0.3.0"
  2. macaddr = version
  3. dune >= "1.9.0"
  4. ocaml >= "4.08.0"

Dev Dependencies (2)

  1. ppx_sexp_conv with-test & >= "v0.9.0"
  2. ounit2 with-test

Used by (83)

  1. albatross
  2. arp
  3. builder-web
  4. capnp-rpc-unix >= "2.1"
  5. caqti >= "2.0.1"
  6. caqti-async >= "2.1.1"
  7. caqti-driver-pgx >= "2.1.1"
  8. caqti-lwt >= "2.1.1"
  9. caqti-mirage >= "2.1.1"
  10. charrua
  11. charrua-client
  12. charrua-server
  13. charrua-unix
  14. cohttp >= "6.2.1"
  15. cohttp-async >= "4.1.2"
  16. cohttp-eio >= "6.2.1"
  17. cohttp-lwt >= "6.1.0"
  18. colombe
  19. conduit >= "1.5.0"
  20. conduit-async
  21. conduit-lwt-unix >= "1.5.0"
  22. conduit-mirage
  23. corosync
  24. current-albatross-deployer
  25. dkim
  26. dns >= "1.1.3"
  27. dns-cli
  28. dns-client != "7.0.3"
  29. dns-client-lwt
  30. dns-client-miou-unix
  31. dns-client-mirage
  32. dns-mirage
  33. dns-resolver >= "10.2.1"
  34. dream_middleware_ext
  35. eliom
  36. emile
  37. frenetic
  38. git >= "3.2.0"
  39. git-mirage
  40. git-paf
  41. git-unix >= "3.2.0"
  42. happy-eyeballs
  43. happy-eyeballs-lwt
  44. happy-eyeballs-miou-unix
  45. happy-eyeballs-mirage
  46. ip2location
  47. ip2proxy
  48. ipaddr-cstruct >= "5.6.2"
  49. ipaddr-sexp >= "5.6.2"
  50. irmin-client
  51. jsonschema-validation
  52. learn-ocaml < "0.14.0"
  53. letsencrypt-app >= "1.1.0"
  54. mehari-mirage
  55. miou
  56. mirage
  57. mirage-conduit
  58. mirage-nat
  59. mirage-net-xen
  60. mirage-protocols >= "7.0.0"
  61. mirage-protocols-lwt
  62. mirage-qubes-ipv4
  63. mirage-runtime
  64. mirage-stack-lwt
  65. mirage-types-lwt
  66. mirage-vnetif
  67. mnet
  68. mrmime
  69. ocsigenserver
  70. paf-cohttp
  71. pcap-format < "0.5.2"
  72. pf-qubes
  73. pgx >= "1.0"
  74. piaf >= "0.2.0"
  75. sendmail-lwt >= "0.10.0"
  76. simple_httpd_caqti
  77. tcpip
  78. tls >= "0.15.2"
  79. tuntap
  80. uspf
  81. utcp
  82. websocket-lwt
  83. x509 = "0.7.0" | >= "0.15.0"

Conflicts

None