![]() |
Kea
2.3.5-git
|
#include <cfg_iface.h>
Public Types | |
typedef std::function< void(util::ReconnectCtlPtr)> | OpenSocketsFailedCallback |
Represents a callback invoked if all retries of the opening sockets fail. More... | |
enum | OutboundIface { SAME_AS_INBOUND, USE_ROUTING } |
Indicates how outbound interface is selected for relayed traffic. More... | |
enum | SocketType { SOCKET_RAW, SOCKET_UDP } |
Socket type used by the DHCPv4 server. More... | |
Public Member Functions | |
CfgIface () | |
Constructor. More... | |
void | closeSockets () const |
Convenience function which closes all open sockets. More... | |
bool | equals (const CfgIface &other) const |
Compares two CfgIface objects for equality. More... | |
OutboundIface | getOutboundIface () const |
Returns outbound interface selection mode. More... | |
util::ReconnectCtlPtr | getReconnectCtl () const |
Get the reconnect controller. More... | |
uint32_t | getServiceSocketsMaxRetries () const |
Indicates the maximum number of service sockets bind attempts. More... | |
bool | getServiceSocketsRequireAll () const |
Indicates that Kea must successfully bind all socket services on init. More... | |
uint32_t | getServiceSocketsRetryWaitTime () const |
Indicates the socket service binding retry interval between attempts. More... | |
SocketType | getSocketType () const |
Returns DHCP socket type used by the server. More... | |
void | openSockets (const uint16_t family, const uint16_t port, const bool use_bcast=true) |
Tries to open sockets on selected interfaces. More... | |
bool | operator!= (const CfgIface &other) const |
Inequality operator. More... | |
bool | operator== (const CfgIface &other) const |
Equality operator. More... | |
std::string | outboundTypeToText () const |
Returns outbound interface selection mode as string. More... | |
void | reset () |
Puts the interface configuration into default state. More... | |
void | setOutboundIface (const OutboundIface &outbound_iface) |
Sets outbound interface selection mode. More... | |
void | setReDetect (bool re_detect) |
Set the re-detect flag. More... | |
void | setServiceSocketsMaxRetries (uint32_t max_retries) |
Set a maximum number of service sockets bind attempts. More... | |
void | setServiceSocketsRequireAll (bool require_all) |
Set flag that Kea must successfully bind all socket services on init. More... | |
void | setServiceSocketsRetryWaitTime (uint32_t interval) |
Set the socket service binding retry interval between attempts. More... | |
std::string | socketTypeToText () const |
Returns the socket type in the textual format. More... | |
SocketType | textToSocketType (const std::string &socket_type_name) const |
Converts the socket type in the textual format to the type represented by the SocketType . More... | |
virtual isc::data::ElementPtr | toElement () const |
Unparse a configuration object. More... | |
void | use (const uint16_t family, const std::string &iface_name) |
Select interface to be used to receive DHCP traffic. More... | |
void | useSocketType (const uint16_t family, const SocketType &socket_type) |
Sets the specified socket type to be used by the server. More... | |
void | useSocketType (const uint16_t family, const std::string &socket_type_name) |
Sets the specified socket type specified in textual format. More... | |
![]() | |
void | contextToElement (data::ElementPtr map) const |
Merge unparse a user_context object. More... | |
data::ConstElementPtr | getContext () const |
Returns const pointer to the user context. More... | |
void | setContext (const data::ConstElementPtr &ctx) |
Sets user context. More... | |
![]() | |
virtual | ~CfgToElement () |
Destructor. More... | |
Static Public Member Functions | |
static OutboundIface | textToOutboundIface (const std::string &txt) |
Converts text to outbound interface selection mode. More... | |
![]() | |
static data::ElementPtr | toElement (data::ConstElementPtr map) |
Copy an Element map. More... | |
Static Public Attributes | |
static const char * | ALL_IFACES_KEYWORD = "*" |
Keyword used to enable all interfaces. More... | |
static OpenSocketsFailedCallback | open_sockets_failed_callback_ = 0 |
Optional callback function to invoke if all retries of the opening sockets fail. More... | |
Additional Inherited Members | |
![]() | |
data::ConstElementPtr | user_context_ |
Pointer to the user context (may be NULL) More... | |
Definition at line 131 of file cfg_iface.h.
typedef std::function<void(util::ReconnectCtlPtr)> isc::dhcp::CfgIface::OpenSocketsFailedCallback |
Represents a callback invoked if all retries of the opening sockets fail.
Definition at line 357 of file cfg_iface.h.
Indicates how outbound interface is selected for relayed traffic.
Enumerator | |
---|---|
SAME_AS_INBOUND | Server sends responses over the same interface on which queries are received. |
USE_ROUTING | Server uses routing to determine the right interface to send response. |
Definition at line 143 of file cfg_iface.h.
Socket type used by the DHCPv4 server.
Enumerator | |
---|---|
SOCKET_RAW | Raw socket, used for direct DHCPv4 traffic. |
SOCKET_UDP | Datagram socket, i.e. IP/UDP socket. |
Definition at line 135 of file cfg_iface.h.
isc::dhcp::CfgIface::CfgIface | ( | ) |
Constructor.
Definition at line 30 of file cfg_iface.cc.
void isc::dhcp::CfgIface::closeSockets | ( | ) | const |
Convenience function which closes all open sockets.
It stops the receiver thread too.
Definition at line 38 of file cfg_iface.cc.
References isc::dhcp::IfaceMgr::closeSockets(), and isc::dhcp::IfaceMgr::instance().
Referenced by openSockets().
bool isc::dhcp::CfgIface::equals | ( | const CfgIface & | other | ) | const |
Compares two CfgIface
objects for equality.
other | An object to be compared with this object. |
Definition at line 43 of file cfg_iface.cc.
References isc::dhcp::IfaceMgr::instance().
CfgIface::OutboundIface isc::dhcp::CfgIface::getOutboundIface | ( | ) | const |
Returns outbound interface selection mode.
Definition at line 347 of file cfg_iface.cc.
|
inline |
Get the reconnect controller.
Definition at line 351 of file cfg_iface.h.
|
inline |
Indicates the maximum number of service sockets bind attempts.
Definition at line 344 of file cfg_iface.h.
Referenced by openSockets().
|
inline |
Indicates that Kea must successfully bind all socket services on init.
Definition at line 316 of file cfg_iface.h.
Referenced by openSockets().
|
inline |
Indicates the socket service binding retry interval between attempts.
Definition at line 330 of file cfg_iface.h.
Referenced by openSockets().
|
inline |
Returns DHCP socket type used by the server.
Definition at line 241 of file cfg_iface.h.
void isc::dhcp::CfgIface::openSockets | ( | const uint16_t | family, |
const uint16_t | port, | ||
const bool | use_bcast = true |
||
) |
Tries to open sockets on selected interfaces.
This function opens sockets bound to link-local address as well as sockets bound to unicast address. See CfgIface::use
function documentation for details how to specify interfaces and unicast addresses to bind the sockets to. This function starts the family receiver.
family | Address family (AF_INET or AF_INET6). |
port | Port number to be used to bind sockets to. |
use_bcast | A boolean flag which indicates if the broadcast traffic should be received through the socket. This parameter is ignored for IPv6. |
Definition at line 61 of file cfg_iface.cc.
References isc::dhcp::IfaceMgr::clearUnicasts(), closeSockets(), isc::dhcp::IfaceMgr::detectIfaces(), isc::dhcp::DHCPSRV_CFGMGR_SOCKET_RAW_UNSUPPORTED, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_MULTIPLE_RAW_SOCKETS_PER_IFACE, isc::dhcp::DHCPSRV_NO_SOCKETS_OPEN, isc::dhcp::IfaceMgr::getIface(), getServiceSocketsMaxRetries(), getServiceSocketsRequireAll(), getServiceSocketsRetryWaitTime(), isc::dhcp::TimerMgr::instance(), isc::dhcp::IfaceMgr::instance(), isc_throw, isc::dhcp::IfaceMgr::isDirectResponseSupported(), LOG_WARN, isc::asiolink::IntervalTimer::ONE_SHOT, open_sockets_failed_callback_, isc::dhcp::IfaceMgr::openSockets4(), isc::dhcp::IfaceMgr::openSockets6(), isc::dhcp::IfaceMgr::setAllowLoopBack(), isc::dhcp::IfaceMgr::setMatchingPacketFilter(), SOCKET_RAW, and SOCKET_UDP.
|
inline |
Inequality operator.
other | Object to be compared with this object. |
Definition at line 290 of file cfg_iface.h.
|
inline |
Equality operator.
other | Object to be compared with this object. |
Definition at line 281 of file cfg_iface.h.
std::string isc::dhcp::CfgIface::outboundTypeToText | ( | ) | const |
Returns outbound interface selection mode as string.
Definition at line 352 of file cfg_iface.cc.
References isc_throw, SAME_AS_INBOUND, and USE_ROUTING.
Referenced by toElement().
void isc::dhcp::CfgIface::reset | ( | ) |
Puts the interface configuration into default state.
This function removes interface names from the set.
Definition at line 277 of file cfg_iface.cc.
References isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_OPEN_SOCKET_FAIL, isc::dhcp::Iface::getAddresses(), isc::dhcp::IfaceMgr::instance(), LOG_WARN, isc::dhcp::Iface::setActive(), SOCKET_RAW, and useSocketType().
void isc::dhcp::CfgIface::setOutboundIface | ( | const OutboundIface & | outbound_iface | ) |
Sets outbound interface selection mode.
outbound_iface | New outbound interface selection mode setting. |
Definition at line 379 of file cfg_iface.cc.
|
inline |
Set the re-detect flag.
re_detect | the new value of the flag |
Definition at line 302 of file cfg_iface.h.
|
inline |
Set a maximum number of service sockets bind attempts.
max_retries | Number of attempts. The value 0 disables retries. |
Definition at line 337 of file cfg_iface.h.
|
inline |
Set flag that Kea must successfully bind all socket services on init.
require_all | true if all sockets must be bound, false otherwise. |
Definition at line 309 of file cfg_iface.h.
|
inline |
Set the socket service binding retry interval between attempts.
interval | Milliseconds between attempts. |
Definition at line 323 of file cfg_iface.h.
std::string isc::dhcp::CfgIface::socketTypeToText | ( | ) | const |
Returns the socket type in the textual format.
Definition at line 317 of file cfg_iface.cc.
References isc_throw, SOCKET_RAW, and SOCKET_UDP.
Referenced by useSocketType().
|
static |
Converts text to outbound interface selection mode.
txt | either 'same-as-inbound' or 'use-routing' |
Definition at line 365 of file cfg_iface.cc.
References isc_throw, SAME_AS_INBOUND, and USE_ROUTING.
Referenced by isc::dhcp::IfacesConfigParser::parse().
CfgIface::SocketType isc::dhcp::CfgIface::textToSocketType | ( | const std::string & | socket_type_name | ) | const |
Converts the socket type in the textual format to the type represented by the SocketType
.
InvalidSocketType | if the specified value of the socket_type_name is invalid. |
Definition at line 333 of file cfg_iface.cc.
References isc_throw, SOCKET_RAW, and SOCKET_UDP.
Referenced by useSocketType().
|
virtual |
Unparse a configuration object.
Implements isc::data::CfgToElement.
Definition at line 557 of file cfg_iface.cc.
References ALL_IFACES_KEYWORD, isc::data::UserContext::contextToElement(), isc::data::Element::create(), isc::data::Element::createList(), isc::data::Element::createMap(), outboundTypeToText(), SAME_AS_INBOUND, and SOCKET_RAW.
void isc::dhcp::CfgIface::use | ( | const uint16_t | family, |
const std::string & | iface_name | ||
) |
Select interface to be used to receive DHCP traffic.
CfgIface for a detail explanation of the interface name argument.
family | Address family (AF_INET or AF_INET6). |
iface_name | Explicit interface name, a wildcard name (*) of the interface(s) or the pair of interface/unicast-address to be used to receive DHCP traffic. |
InvalidIfaceName | If the interface name is incorrect, e.g. empty. |
NoSuchIface | If the specified interface is not present. |
NoSuchAddress | If the specified unicast address is not assigned to the interface. |
DuplicateIfaceName | If the interface is already selected, i.e. |
IOError | when specified unicast address is invalid. CfgIface::use has been already called for this interface. |
Definition at line 384 of file cfg_iface.cc.
References ALL_IFACES_KEYWORD, isc::dhcp::DHCPSRV_CFGMGR_ADD_IFACE, isc::dhcp::DHCPSRV_CFGMGR_ALL_IFACES_ACTIVE, isc::dhcp::DHCPSRV_CFGMGR_UNICAST_LINK_LOCAL, isc::dhcp::DHCPSRV_CFGMGR_USE_ADDRESS, isc::dhcp::DHCPSRV_CFGMGR_USE_UNICAST, isc::dhcp::DHCPSRV_DBG_TRACE, isc::dhcp::dhcpsrv_logger, isc::dhcp::IfaceMgr::getIface(), isc::dhcp::IfaceMgr::instance(), isc_throw, isc::asiolink::IOAddress::isV4(), isc::asiolink::IOAddress::isV6(), isc::asiolink::IOAddress::isV6LinkLocal(), isc::asiolink::IOAddress::isV6Multicast(), LOG_DEBUG, LOG_INFO, LOG_WARN, isc::asiolink::IOAddress::toText(), and isc::util::str::trim().
void isc::dhcp::CfgIface::useSocketType | ( | const uint16_t | family, |
const SocketType & | socket_type | ||
) |
Sets the specified socket type to be used by the server.
Supported socket types for DHCPv4 are:
SOCKET_RAW
SOCKET_UDP
family | Address family (AF_INET or AF_INET6). |
socket_type | Socket type. |
InvalidSocketType | if the unsupported socket type has been specified for the address family. Currently, the socket type can only be selected for the AF_INET family. |
Definition at line 539 of file cfg_iface.cc.
References isc::dhcp::DHCPSRV_CFGMGR_SOCKET_TYPE_SELECT, isc::dhcp::dhcpsrv_logger, isc_throw, LOG_INFO, and socketTypeToText().
Referenced by reset(), and useSocketType().
void isc::dhcp::CfgIface::useSocketType | ( | const uint16_t | family, |
const std::string & | socket_type_name | ||
) |
Sets the specified socket type specified in textual format.
The following names of the socket types are currently supported, and can be passed in the socket_type
parameter:
family | Address family (AF_INET or AF_INET6) |
socket_type_name | Socket type in the textual format. |
InvalidSocketType | if the unsupported socket type has been specified for the address family. Currently, the socket type can only be selected for the AF_INET family. |
Definition at line 551 of file cfg_iface.cc.
References textToSocketType(), and useSocketType().
|
static |
Keyword used to enable all interfaces.
This keyword can be used instead of the interface name to specify that DHCP server should listen on all interfaces.
Definition at line 155 of file cfg_iface.h.
Referenced by toElement(), and use().
|
static |
Optional callback function to invoke if all retries of the opening sockets fail.
Definition at line 361 of file cfg_iface.h.
Referenced by openSockets().