|
join 1.0
lightweight network framework library
|
carries DHCP messages over a packet socket. More...
#include <dhcp.hpp>


Public Types | |
| using | Socket = typename Protocol::Socket |
Public Member Functions | |
| BasicDhcp ()=delete | |
| create the BasicDhcp instance. | |
| BasicDhcp (const std::string &interface, Reactor &reactor=ReactorThread::reactor()) | |
| create the instance bound to the given interface. | |
| BasicDhcp (const BasicDhcp &other)=delete | |
| create instance by copy. | |
| BasicDhcp & | operator= (const BasicDhcp &other)=delete |
| assign instance by copy. | |
| BasicDhcp (BasicDhcp &&other)=delete | |
| create instance by move. | |
| BasicDhcp & | operator= (BasicDhcp &&other)=delete |
| assign instance by move. | |
| virtual | ~BasicDhcp ()=default |
| destroy the instance. | |
| const std::string & | interface () const noexcept |
| get the name of the interface the instance is bound to. | |
| const MacAddress & | hardware () const noexcept |
| get the hardware address of the interface the instance is bound to. | |
Public Member Functions inherited from join::EventHandler | |
| EventHandler ()=default | |
| create instance. | |
| EventHandler (const EventHandler &other)=default | |
| copy constructor. | |
| EventHandler & | operator= (const EventHandler &other)=default |
| copy assignment operator. | |
| EventHandler (EventHandler &&other)=default | |
| move constructor. | |
| EventHandler & | operator= (EventHandler &&other)=default |
| move assignment operator. | |
| virtual | ~EventHandler ()=default |
| destroy instance. | |
Protected Member Functions | |
| struct | __attribute__ ((packed, aligned(2))) Frame |
| link, internet and transport headers a DHCP message is framed with. | |
| struct | __attribute__ ((packed, aligned(2))) Pseudo |
| header the UDP checksum is computed over, RFC 768. | |
| void | attach () |
| register with the reactor, to be called by the final class once fully constructed. | |
| void | detach () noexcept |
| unregister from the reactor, to be called by the final class before destruction starts. | |
| int | send (const char *data, size_t size, const MacAddress &to, const IpAddress &source, const IpAddress &destination) noexcept |
| frame a message and write it on the wire. | |
| ssize_t | receive (char *data, size_t maxSize, MacAddress &from, MacAddress &to) noexcept |
| read a message that passed the link, internet and transport checks. | |
Protected Member Functions inherited from join::EventHandler | |
| virtual void | onEvent (int fd, uint32_t revents) |
| method called when events are reported on handle. | |
| virtual void | onReadable (int fd) |
| method called when data are ready to be read on handle. | |
| virtual void | onWriteable (int fd) |
| method called when data are ready to be written on handle. | |
| virtual void | onClose (int fd) |
| method called when handle was closed by the peer. | |
| virtual void | onError (int fd) |
| method called when an error occurred on handle. | |
Static Protected Member Functions | |
| static uint16_t | udpChecksum (const Frame &frame, const char *payload, size_t size) noexcept |
| compute the checksum of a UDP datagram, RFC 768. | |
Protected Attributes | |
| Socket | _socket |
| underlying socket. | |
| DhcpMessage | _message |
| DHCP message codec. | |
| std::unique_ptr< char[]> | _buffer |
| receive buffer. | |
| const std::string | _interface |
| interface name. | |
| const MacAddress | _hardware |
| hardware address of the interface. | |
| Reactor & | _reactor |
| event loop reactor. | |
carries DHCP messages over a packet socket.
| using join::BasicDhcp< Protocol >::Socket = typename Protocol::Socket |
|
delete |
create the BasicDhcp instance.
|
inlineexplicit |
create the instance bound to the given interface.
| interface | interface name. |
| reactor | reactor instance. |
| std::system_error | if the interface is unknown or the socket could not be bound to it. |
|
delete |
create instance by copy.
| other | other object to copy. |
|
delete |
create instance by move.
| other | other object to move. |
|
virtualdefault |
destroy the instance.
|
inlineprotected |
link, internet and transport headers a DHCP message is framed with.
|
inlineprotected |
header the UDP checksum is computed over, RFC 768.
|
inlineprotected |
register with the reactor, to be called by the final class once fully constructed.
| std::system_error | if the registration failed. |
|
inlineprotectednoexcept |
unregister from the reactor, to be called by the final class before destruction starts.
|
inlinenoexcept |
get the hardware address of the interface the instance is bound to.
|
inlinenoexcept |
get the name of the interface the instance is bound to.
|
delete |
assign instance by move.
| other | other object to move. |
|
delete |
assign instance by copy.
| other | other object to copy. |
|
inlineprotectednoexcept |
read a message that passed the link, internet and transport checks.
| data | buffer used to store the message. |
| maxSize | maximum number of bytes to read. |
| from | link layer address the message came from. |
| to | link layer address the message was sent to. |
|
inlineprotectednoexcept |
frame a message and write it on the wire.
| data | message to write. |
| size | message size. |
| to | link layer destination address. |
| source | source address. |
| destination | destination address. |
|
inlinestaticprotectednoexcept |
compute the checksum of a UDP datagram, RFC 768.
| frame | frame carrying the datagram, its checksum field must be zero. |
| payload | datagram payload. |
| size | payload size. |
|
protected |
receive buffer.
|
protected |
hardware address of the interface.
|
protected |
interface name.
|
protected |
DHCP message codec.
|
protected |
event loop reactor.
|
protected |
underlying socket.