Dhcp_client
val pp : Stdlib.Format.formatter -> t -> unit
val create :
?options:Dhcp_wire.dhcp_option list ->
?requests:Dhcp_wire.option_code list ->
Cstruct.uint32 ->
Macaddr.t ->
t * Dhcp_wire.pkt
create ~options ~requests xid mac
returns a pair of t, buffer
. t
represents the current state of the client in the lease transaction, and buffer
is the suggested next packet the caller should take to progress toward accepting a lease. The argument xid
allows the caller to specify a transaction ID to use for the lease attempt. requests
is a list of option codes which the client should ask for in its attempt to get a DHCP lease. If requests
is not given, we'll make an educated guess rather than requesting nothing. options
is a list of options which the client will send in the DHCP DISCOVER and DHCP REQUEST.
val input :
t ->
Cstruct.t ->
[ `Response of t * Dhcp_wire.pkt | `New_lease of t * Dhcp_wire.pkt | `Noop ]
input t buf
attempts to advance the state of t
with the contents of buf
. If buf
is invalid or not useful given the current state of t
, `Noop
is returned indicating no action should be taken. Otherwise, either a `Response
will be suggested along with a t
whose state has been advanced, or a `New_lease
will be returned along with a t
whose state has been advanced.
val lease : t -> Dhcp_wire.pkt option
lease t
will return Some lease
if t
has succeeded in completing a lease transaction with some server. Note that the library has no sense of the passage of time, so expiration is not considered; there is no guarantee that Some lease
is still valid on the network. The caller is responsible for keeping track of the time at which the lease was obtained, and renewing the lease when necessary. If t
hasn't yet completed a lease transaction, None
will be returned.
val renew : t -> [ `Response of t * Dhcp_wire.pkt | `Noop ]
renew t
returns either a `Response
with the next state and suggested action of the client attempting to renew t
's lease, or `Noop
if t
does not have a lease and therefore can't be renewed.