package charrua-server

  1. Overview
  2. Docs
DHCP server

Install

dune-project
 Dependency

Authors

Maintainers

Sources

charrua-3.2.0.tbz
sha256=4a250716f81ff724c2461ed2baa341f088cd706ab2bb6097348379433069e2cb
sha512=392bbf6620e1a62e333c7b44b5df31740185db05874eab7edffaaa0e4adb63960ef26e0073298784d63ad5f105fe3d9cced035a10a8a605c8fbede5604c5f65e

Description

Charrua-server consists of a single Dhcp_server module used for constructing DHCP servers.

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

Features

  • 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.
  • 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.

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

Added to opam-repository:

README

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

docs

charrua is an ISC-licensed DHCP library implementation in OCaml. It provides the following 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-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 https://mirage.github.io/charrua/

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.

Funding

This project received funding through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

NLnet foundation logo NGI Zero Logo

Dependencies (7)

  1. macaddr >= "4.0.0"
  2. ipaddr >= "5.0.0"
  3. cstruct >= "6.0.0"
  4. charrua = version
  5. menhir build & >= "20181006"
  6. dune >= "1.4.0"
  7. ocaml >= "4.10.0"

Dev Dependencies (3)

  1. alcotest with-test & >= "1.4.0"
  2. tcpip >= "9.0.0" & with-test
  3. cstruct-unix with-test

Used by (2)

  1. charrua-client >= "3.2.0"
  2. charrua-unix >= "3.2.0"

Conflicts

None