Awesome
dhcp
DHCPv4 and DHCPv6 decoding/encoding library with client and server code, written in Go.
How to get the library
The library is split into several parts:
dhcpv6
: implementation of DHCPv6 packet, client and serverdhcpv4
: implementation of DHCPv4 packet, client and servernetboot
: network booting wrappers on top ofdhcpv6
anddhcpv4
iana
: several IANA constants, and helpers used bydhcpv6
anddhcpv4
rfc1035label
: simple implementation of RFC1035 labels, used bydhcpv6
anddhcpv4
interfaces
, a thin layer of wrappers around network interfaces
You will probably only need dhcpv6
and/or dhcpv4
explicitly. The rest is
pulled in automatically if necessary.
So, to get dhcpv6
and dhcpv4
just run:
go get -u github.com/insomniacslk/dhcp/dhcpv{4,6}
Examples
The sections below will illustrate how to use the dhcpv6
and dhcpv4
packages.
- dhcpv6 client
- dhcpv6 server
- dhcpv6 packet crafting
- TODO dhcpv4 client
- TODO dhcpv4 server
- TODO dhcpv4 packet crafting
See more example code at https://github.com/insomniacslk/exdhcp
Public projects that use it
- Facebook's DHCP load balancer,
dhcplb
, https://github.com/facebookincubator/dhcplb - Systemboot, a LinuxBoot distribution that runs as system firmware, https://github.com/systemboot/systemboot
- Router7, a pure-Go router implementation for fiber7 connections, https://github.com/rtr7/router7
- Beats from ElasticSearch, https://github.com/elastic/beats
- Bender from Pinterest, a library for load-testing, https://github.com/pinterest/bender
- FBender from Facebook, a tool for load-testing based on Bender, https://github.com/facebookincubator/fbender
- CoreDHCP, a fast, multithreaded, modular and extensible DHCP server, https://github.com/coredhcp/coredhcp
- u-root, an embeddable root file system, https://github.com/u-root/u-root
- Talos: a modern OS for Kubernetes, https://github.com/talos-systems/talos
- Smee: the network boot service in the Tinkerbell stack, https://github.com/tinkerbell/smee