Skip to content
A DHCP library in OCaml
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client charrua-core is now charrua (#100) Apr 18, 2019
docs
lib
sample Add a sample dhcpd.conf. Sep 22, 2015
server charrua-core is now charrua (#100) Apr 18, 2019
test
unix charrua-core is now charrua (#100) Apr 18, 2019
.gitignore update opam files for charrua-client and pin tests to the right packages Jun 19, 2017
.travis.yml
CHANGES.md changes Apr 18, 2019
LICENSE.md
Makefile
README.md
charrua-client-lwt.opam depend on charrua* >= 1.0.0 Apr 18, 2019
charrua-client-mirage.opam
charrua-client.opam
charrua-server.opam depend on charrua* >= 1.0.0 Apr 18, 2019
charrua-unix.opam
charrua.opam charrua-core is now charrua (#100) Apr 18, 2019
dune-project

README.md

Charrua DHCP - a DHCP client, server and wire frame encoder and decoder

docs Build Status

charrua is an ISC-licensed DHCP library implementation in OCaml. It provides five packages:

  • charrua: a library that handles wire traffic parsing
  • charrua-server: a DHCP server implementation
  • charrua-client: a library for handling DHCP client state and messages
  • charrua-client-lwt: a DHCP client library with timeouts and network read/write
  • charrua-client-mirage: a MirageOS-compatible set of interfaces to charrua-client-lwt
  • charrua-unix: a Unix DHCP server implementation

Charrua

The name charrua is a reference to the, now extinct, semi-nomadic people of southern South America.

Charrua consists of the single module Dhcp_wire responsible for parsing and constructing DHCP messages,

You can browse the API for charrua at http://mirage.github.io/charrua/api

Features

  • Dhcp_wire provides marshalling and unmarshalling utilities for DHCP, it is the base for Dhcp_server.
  • Logic/sequencing is agnostic of IO and platform, so it can run on Unix as a process, as a Mirage unikernel or anything else.
  • All DHCP options are supported at the time of this writing.
  • Code is purely applicative.
  • It's in OCaml, so it's pretty cool.

Charrua-server

The module Dhcp_server supports a stripped down ISC dhcpd.conf, so you can probably just use your old dhcpd.conf. It also supports manual configuration building in OCaml.

dhcp is a MirageOS DHCP unikernel server based on charrua, included as a part of the MirageOS unikernel example and starting-point repository.

Charrua-client

charrua-client is a DHCP client powered by charrua.

The base library exposes a simple state machine in Dhcp_client for use in acquiring a DHCP lease.

charrua-client-lwt extends charrua-client with a functor Dhcp_client_lwt, using the provided modules for timing and networking logic, for convenient use by a program which might wish to implement a full client.

charrua-client-mirage exposes an additional Dhcp_client_mirage for direct use with the MirageOS library operating system.

Charrua-unix Server

charrua-unix is an ISC-licensed Unix DHCP daemon based on charrua.

Features

  • Supports a stripped down ISC dhcpd.conf. A configuration sample can be found here
  • Privilege dropping: the daemon doesn't run as root.
  • Almost purely-functional code.
  • Support for multiple interfaces/subnets.

Try charruad --help for options.

This project became one of the Mirage Pioneer projects.

You can’t perform that action at this time.