alpha
Login
or
Join now
gazagnaire.org
/
ocaml-ipam
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
IP address management: CIDR pools and per-pool allocation
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
ocaml-ipam
/
test
/
interop
/
moby
/
scripts
/
at
main
4 files
Thomas Gazagnaire
interop: hermetic REGEN-gated trace regeneration + nox-ip IPv6
3mo ago
576ecf45
generate.go
ipam: new two-level IP address manager modelled on libnetwork Pool allocates addresses within one CIDR; the allocator carves pools from predefined networks and rejects overlaps. Occupancy lives in ewah bitmaps keyed by host ordinal, so a sparse /8 or /64 costs only the addresses in use. Reserves network/broadcast (IPv4, RFC 3021 aside) and the Subnet-Router anycast (IPv6, RFC 4291). Pure: mutators return a new value so state can be snapshotted. Verified against moby's defaultipam via a Go oracle in test/interop/moby: a replayed operation trace matches byte-for-byte. Spec tests cite the libnetwork test vectors and the RFCs; alcobar fuzz and an MDX'd README round it out.
3 months ago
generate.sh
interop: hermetic REGEN-gated trace regeneration + nox-ip IPv6 Migrate every interop test's trace regeneration to an (enabled_if (= %{env:REGEN=0} 1)) (mode promote) rule in traces/dune. A normal `dune test` then sees no rule -- the traces are pure committed source and the external oracle is never run -- while `REGEN=1 dune build @regen` regenerates and promotes them in place. The previous side-effect alias wrote into a read-only _build, so the regen trigger never worked. Normalise generate.sh to take the output dir as $1 and keep its venv/cache build-local. merlint: flip E815 to require the REGEN gate (it used to forbid it), repoint E810 at traces/dune's regen alias, add E816 for the generate.sh $1 argument. nox-ip: add IPv6 -- Ip.V4/Ip.V6 split, RFC 8200 header codec, upper-layer pseudo-header, extension-header walk; UDP-over-IPv6 and TCP wiring; the C/3D export; and a scapy interop harness. crcmod: fix the generator's CRC-16/X.25 params to crcmod's predefined "x-25" (the hand-rolled mkCrcFun produced a non-standard value).
3 months ago
go.mod
ipam: new two-level IP address manager modelled on libnetwork Pool allocates addresses within one CIDR; the allocator carves pools from predefined networks and rejects overlaps. Occupancy lives in ewah bitmaps keyed by host ordinal, so a sparse /8 or /64 costs only the addresses in use. Reserves network/broadcast (IPv4, RFC 3021 aside) and the Subnet-Router anycast (IPv6, RFC 4291). Pure: mutators return a new value so state can be snapshotted. Verified against moby's defaultipam via a Go oracle in test/interop/moby: a replayed operation trace matches byte-for-byte. Spec tests cite the libnetwork test vectors and the RFCs; alcobar fuzz and an MDX'd README round it out.
3 months ago
go.sum
ipam: new two-level IP address manager modelled on libnetwork Pool allocates addresses within one CIDR; the allocator carves pools from predefined networks and rejects overlaps. Occupancy lives in ewah bitmaps keyed by host ordinal, so a sparse /8 or /64 costs only the addresses in use. Reserves network/broadcast (IPv4, RFC 3021 aside) and the Subnet-Router anycast (IPv6, RFC 4291). Pure: mutators return a new value so state can be snapshotted. Verified against moby's defaultipam via a Go oracle in test/interop/moby: a replayed operation trace matches byte-for-byte. Spec tests cite the libnetwork test vectors and the RFCs; alcobar fuzz and an MDX'd README round it out.
3 months ago