39 "SimpleAddTransaction, request type must be CHG_ADD");
181 }
catch (
const std::exception& ex) {
248 .arg(
getNcr()->getFqdn());
320 }
catch (
const std::exception& ex) {
384 .arg(
getNcr()->getFqdn());
void defineState(unsigned int value, const std::string &label, StateHandler handler, const StatePausing &state_pausing=STATE_PAUSE_NEVER)
Adds an state value and associated label to the set of states.
virtual D2UpdateMessagePtr prepNewRequest(DdnsDomainPtr domain)
Creates a new DNS update request based on the given domain.
The Name class encapsulates DNS names.
virtual void sendUpdate(const std::string &comment="")
Send the update request to the current server.
const isc::log::MessageID DHCP_DDNS_REVERSE_REPLACE_RESP_CORRUPT
static const RRType & DHCID()
virtual void defineEvents()
Adds events defined by SimpleAddTransaction to the event set.
static const int PROCESS_TRANS_OK_ST
State which processes successful transaction conclusion.
const isc::log::MessageID DHCP_DDNS_REVERSE_REPLACE_REJECTED
void defineEvent(unsigned int value, const std::string &label)
Adds an event value and associated label to the set of events.
static const RRType & PTR()
#define LOG_INFO(LOGGER, MESSAGE)
Macro to conveniently test info output and log it.
const isc::log::MessageID DHCP_DDNS_FORWARD_ADD_BUILD_FAILURE
void selectingFwdServerHandler()
State handler for SELECTING_FWD_SERVER_ST.
static std::string reverseIpAddress(const std::string &address)
Generate a reverse order string for the given IP address.
boost::shared_ptr< DdnsDomain > DdnsDomainPtr
Defines a pointer for DdnsDomain instances.
static const Rcode & NOERROR()
A constant object for the NOERROR Rcode (see Rcode::NOERROR_CODE).
boost::shared_ptr< D2UpdateMessage > D2UpdateMessagePtr
Pointer to the DNS Update Message.
void setNcrStatus(const dhcp_ddns::NameChangeStatus &status)
Sets the status of the transaction's NameChangeRequest.
const isc::log::MessageID DHCP_DDNS_FORWARD_ADD_BAD_DNSCLIENT_STATUS
static const RRClass & IN()
static const int START_EVT
Event issued to start the model execution.
static const int REPLACING_FWD_ADDRS_ST
State that attempts to add forward address records.
void replacingFwdAddrsHandler()
State handler for REPLACING_FWD_ADDRS_ST.
#define LOG_ERROR(LOGGER, MESSAGE)
Macro to conveniently test error output and log it.
boost::shared_ptr< IOService > IOServicePtr
Defines a smart pointer to an IOService instance.
const isc::log::MessageID DHCP_DDNS_ADD_SUCCEEDED
static const int SELECTING_FWD_SERVER_ST
State in which forward DNS server selection is done.
virtual ~SimpleAddTransaction()
Destructor.
std::string transactionOutcomeString() const
Returns a string version of transaction outcome.
DNS Response Codes (RCODEs) class.
const isc::log::MessageID DHCP_DDNS_FORWARD_ADD_REJECTED
boost::shared_ptr< NameChangeRequest > NameChangeRequestPtr
Defines a pointer to a NameChangeRequest.
void endModel()
Conducts a normal transition to the end of the model.
static const int SERVER_IO_ERROR_EVT
Issued when an update fails due to an IO error.
const dhcp_ddns::NameChangeRequestPtr & getNcr() const
Fetches the NameChangeRequest for this transaction.
static const int IO_COMPLETED_EVT
Issued when a DNS update packet exchange has completed.
virtual void verifyStates()
Validates the contents of the set of states.
static const int FQDN_IN_USE_EVT
Event sent when an add attempt fails with address in use.
void processAddOkHandler()
State handler for PROCESS_TRANS_OK_ST.
Other, unclassified error.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
const isc::log::MessageID DHCP_DDNS_REVERSE_REPLACE_IO_ERROR
void setForwardChangeCompleted(const bool value)
Sets the forward change completion flag to the given value.
void addDhcidRdata(dns::RRsetPtr &rrset)
Adds an RData for the lease client's DHCID to the given RRset.
std::string getRequestId() const
Fetches the request id that identifies this transaction.
isc::log::Logger d2_to_dns_logger("d2-to-dns")
static const int SERVER_SELECTED_EVT
Issued when a server has been selected.
void selectingRevServerHandler()
State handler for SELECTING_REV_SERVER_ST.
void replacingRevPtrsHandler()
State handler for REPLACING_REV_PTRS_ST.
void buildReplaceRevPtrsRequest()
Builds a DNS request to replace a reverse DNS entry for an FQDN.
void retryTransition(const int fail_to_state)
Determines the state and next event based on update attempts.
bool doOnEntry()
Checks if on entry flag is true.
const isc::log::MessageID DHCP_DDNS_REVERSE_REPLACE_BUILD_FAILURE
const isc::log::MessageID DHCP_DDNS_FORWARD_ADD_IO_ERROR
const D2UpdateMessagePtr & getDnsUpdateRequest() const
Fetches the current DNS update request packet.
boost::shared_ptr< D2CfgMgr > D2CfgMgrPtr
Defines a shared pointer to D2CfgMgr.
DNSClient::Status getDnsUpdateStatus() const
Fetches the most recent DNS update status.
virtual void defineStates()
Adds states defined by NameChangeTransaction to the state set.
const isc::log::MessageID DHCP_DDNS_FORWARD_ADD_RESP_CORRUPT
The RRTTL class encapsulates TTLs used in DNS resource records.
void readyHandler()
State handler for READY_ST.
void setReverseChangeCompleted(const bool value)
Sets the reverse change completion flag to the given value.
static const int FQDN_NOT_IN_USE_EVT
Event sent when replace attempt to fails with address not in use.
Response received and is ok.
static const int REPLACING_REV_PTRS_ST
State that attempts to replace reverse PTR records.
static const RRClass & ANY()
static const int SELECTING_REV_SERVER_ST
State in which reverse DNS server selection is done.
std::string getContextStr() const
Convenience method which returns a string rendition of the current state and next event...
DdnsDomainPtr & getForwardDomain()
Fetches the forward DdnsDomain.
Defines the logger used by the top-level component of kea-dhcp-ddns.
void addPtrRdata(dns::RRsetPtr &rrset)
Adds an RData for the lease FQDN to the given RRset.
const D2UpdateMessagePtr & getDnsUpdateResponse() const
Fetches the most recent DNS update response packet.
static const int NO_MORE_SERVERS_EVT
Issued when there are no more servers from which to select.
void buildReplaceFwdAddressRequest()
Builds a DNS request to add/replace a forward DNS entry for an FQDN.
void transition(unsigned int state, unsigned int event)
Sets up the model to transition into given state with a given event.
The RRset class is a concrete derived class of BasicRRset which contains a pointer to an additional R...
Response received but invalid.
Thrown if the SimpleAddTransaction encounters a general error.
static const int PROCESS_TRANS_FAILED_ST
State which processes an unsuccessful transaction conclusion.
const isc::log::MessageID DHCP_DDNS_REVERSE_REPLACE_BAD_DNSCLIENT_STATUS
const DnsServerInfoPtr & getCurrentServer() const
Fetches the currently selected server.
virtual void defineStates()
Adds states defined by SimpleAddTransaction to the state set.
static const int SELECT_SERVER_EVT
Issued when a server needs to be selected.
void clearDnsUpdateRequest()
Destroys the current update request packet and resets update attempts count.
static const int READY_ST
State from which a transaction is started.
void setDnsUpdateRequest(D2UpdateMessagePtr &request)
Sets the update request packet to the given packet.
const isc::log::MessageID DHCP_DDNS_ADD_FAILED
virtual void defineEvents()
Adds events defined by NameChangeTransaction to the event set.
Embodies the "life-cycle" required to carry out a DDNS update.
const StatePtr getStateInternal(unsigned int value)
Fetches the state referred to by value.
virtual void verifyEvents()
Validates the contents of the set of events.
static const int UPDATE_OK_EVT
Issued when the attempted update successfully completed.
const dns::RRType & getAddressRRType() const
Returns the DHCP data type for the lease address.
boost::shared_ptr< AbstractRRset > RRsetPtr
A pointer-like type pointing to an RRset object.
DdnsDomainPtr & getReverseDomain()
Fetches the reverse DdnsDomain.
const EventPtr & getEvent(unsigned int value)
Fetches the event referred to by value.
SimpleAddTransaction(asiolink::IOServicePtr &io_service, dhcp_ddns::NameChangeRequestPtr &ncr, DdnsDomainPtr &forward_domain, DdnsDomainPtr &reverse_domain, D2CfgMgrPtr &cfg_mgr)
Constructor.
unsigned int getNextEvent() const
Fetches the model's next event.
void processAddFailedHandler()
State handler for PROCESS_TRANS_FAILED_ST.
static const int UPDATE_FAILED_EVT
Issued when the attempted update fails to complete.
uint16_t getCode() const
Returns the Rcode code value.
virtual void verifyEvents()
Validates the contents of the set of events.
void addLeaseAddressRdata(dns::RRsetPtr &rrset)
Adds an RData for the lease address to the given RRset.
void initServerSelection(const DdnsDomainPtr &domain)
Initializes server selection from the given DDNS domain.
bool selectNextServer()
Selects the next server in the current server list.
virtual void verifyStates()
Validates the contents of the set of states.