|
| | BasicDhcpClient ()=delete |
| | create the BasicDhcpClient instance.
|
| |
| | BasicDhcpClient (const std::string &interface, uint16_t maxSize=0, const std::string &hostname={}, Reactor &reactor=ReactorThread::reactor()) |
| | create the instance bound to the given interface.
|
| |
| | ~BasicDhcpClient () |
| | stop receiving messages and destroy the instance.
|
| |
| DhcpPacket | compose (uint8_t type) const |
| | build a message carrying what every message a client sends has in common.
|
| |
| int | exchange (DhcpPacket &request, DhcpPacket &answer, const IpAddress &destination, uint8_t expected, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | send a message and wait for its answer.
|
| |
| std::string | reason () const |
| | get the reason the server gave for the last refusal.
|
| |
| int | discover (DhcpPacket &offer, const IpAddress &wants=IpAddress::ipv4Wildcard, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | broadcast a DISCOVER message and wait for an OFFER.
|
| |
| int | request (DhcpPacket &ack, const IpAddress &wants, const IpAddress &server, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | broadcast a REQUEST message and wait for an ACK.
|
| |
| int | renew (DhcpPacket &ack, const IpAddress &client, const IpAddress &server, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | send a REQUEST message to the server holding the lease and wait for an ACK.
|
| |
| int | inform (DhcpPacket &ack, const IpAddress &client, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | ask a server for the parameters of an externally configured address.
|
| |
| int | release (const IpAddress &client, const IpAddress &server, std::chrono::milliseconds timeout=std::chrono::seconds(1)) noexcept |
| | give a lease back to the server holding it.
|
| |
| int | decline (const IpAddress &address, const IpAddress &server, const std::string &message={}) noexcept |
| | tell the server that the address it offered is already in use.
|
| |
|
| using | Socket = typename Protocol::Socket |
| |
| 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.
|
| |
| | 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.
|
| |
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 | 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.
|
| |
| | 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.
|
| |
| static uint16_t | udpChecksum (const Frame &frame, const char *payload, size_t size) noexcept |
| | compute the checksum of a UDP datagram, RFC 768.
|
| |
| 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.
|
| |
template<class Protocol>
class join::BasicDhcpClient< Protocol >
DHCP client.