117 return (cfg_option_list_);
122 return (cfg_option_list_);
175 static void evaluateClasses(
const Pkt4Ptr& pkt,
bool depend_on_known);
186 void copyDefaultFields();
197 void copyDefaultOptions();
205 void setHostIdentifiers();
275 Dhcpv4Srv(uint16_t server_port = DHCP4_SERVER_PORT,
276 uint16_t client_port = 0,
277 const bool use_bcast =
true,
278 const bool direct_response_desired =
true);
293 return (io_service_);
362 bool allow_packet_park =
true);
372 bool allow_packet_park);
383 bool allow_packet_park);
441 NameChangeSender::Result result,
453 return (test_send_responses_to_source_);
681 const Pkt4Ptr& resp,
bool client_name_changed);
787 test_send_responses_to_source_ = value;
993 bool sanity_only =
false)
const;
1008 bool sanity_only =
false)
const;
1123 bool test_send_responses_to_source_;
1176 #endif // DHCP4_SRV_H
void setPacketStatisticsDefaults()
This function sets statistics related to DHCPv4 packets processing to their initial values...
void run_one()
Main server processing step.
static int getHookIndexBuffer4Send()
Returns the index for "buffer4_send" hook point.
CBControlDHCPv4Ptr cb_control_
Controls access to the configuration backends.
void appendRequestedVendorOptions(Dhcpv4Exchange &ex)
Appends requested vendor options as requested by client.
const CfgOptionList & getCfgOptionList() const
Returns the configured option list (const version)
virtual ~Dhcpv4Srv()
Destructor. Used during DHCPv4 service shutdown.
uint16_t server_port_
UDP port number on which server listens.
void processPacketPktSend(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &query, Pkt4Ptr &rsp)
Executes pkt4_send callout.
void processPacketBufferSend(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &rsp)
Executes buffer4_send callout and sends the response.
static int getHookIndexBuffer4Receive()
Returns the index for "buffer4_receive" hook point.
bool acceptMessageType(const Pkt4Ptr &query) const
Check if received message type is valid for the server to process.
void buildCfgOptionList(Dhcpv4Exchange &ex)
Build the configured option list.
void sendResponseNoThrow(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &query, Pkt4Ptr &rsp)
Process an unparked DHCPv4 packet and sends the response.
boost::shared_ptr< Option > OptionPtr
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
void initResponse()
Initializes the instance of the response message.
static void classifyPacket(const Pkt4Ptr &pkt)
Assigns incoming packet to zero or more classes.
AllocEngine::ClientContext4Ptr getContext() const
Returns the copy of the context for the Allocation engine.
void adjustRemoteAddr(Dhcpv4Exchange &ex)
Sets remote addresses for outgoing packet.
boost::shared_ptr< IOService > IOServicePtr
Defines a smart pointer to an IOService instance.
void classifyPacket(const Pkt4Ptr &pkt)
Assigns incoming packet to zero or more classes.
virtual void sendPacket(const Pkt4Ptr &pkt)
dummy wrapper around IfaceMgr::send()
boost::shared_ptr< NameChangeRequest > NameChangeRequestPtr
Defines a pointer to a NameChangeRequest.
Dhcpv4Srv(uint16_t server_port=DHCP4_SERVER_PORT, uint16_t client_port=0, const bool use_bcast=true, const bool direct_response_desired=true)
Default constructor.
void discardPackets()
Discards parked packets Clears the packet parking lots of all packets.
uint16_t getServerPort() const
Get UDP port on which server should listen.
void postAllocateNameUpdate(const AllocEngine::ClientContext4Ptr &ctx, const Lease4Ptr &lease, const Pkt4Ptr &query, const Pkt4Ptr &resp, bool client_name_changed)
Update client name and DNS flags in the lease and response.
void createNameChangeRequests(const Lease4Ptr &lease, const Lease4Ptr &old_lease, const DdnsParams &ddns_params)
Creates NameChangeRequests which correspond to the lease which has been acquired. ...
boost::shared_ptr< AllocEngine > AllocEnginePtr
A pointer to the AllocEngine object.
static int getHookIndexLease4Release()
Returns the index for "lease4_release" hook point.
void processRelease(Pkt4Ptr &release, AllocEngine::ClientContext4Ptr &context)
Processes incoming DHCPRELEASE messages.
std::list< std::list< std::string > > jsonPathsToRedact() const finaloverride
Return a list of all paths that contain passwords or secrets for kea-dhcp4.
void setFixedFields(Dhcpv4Exchange &ex)
Sets fixed fields of the outgoing packet.
asiolink::IOServicePtr & getIOService()
Returns pointer to the IO service used by the server.
Dhcpv4Exchange(const AllocEnginePtr &alloc_engine, const Pkt4Ptr &query, const Subnet4Ptr &subnet, bool &drop)
Constructor.
virtual void d2ClientErrorHandler(const dhcp_ddns::NameChangeSender::Result result, dhcp_ddns::NameChangeRequestPtr &ncr)
Implements the error handler for DHCP_DDNS IO errors.
bool accept(const Pkt4Ptr &query) const
Checks whether received message should be processed or discarded.
void processDecline(Pkt4Ptr &decline, AllocEngine::ClientContext4Ptr &context)
Process incoming DHCPDECLINE messages.
void setTeeTimes(const Lease4Ptr &lease, const Subnet4Ptr &subnet, Pkt4Ptr resp)
Adds the T1 and T2 timers to the outbound response as appropriate.
std::list< ConstCfgOptionPtr > CfgOptionList
Const pointer list.
volatile bool shutdown_
Indicates if shutdown is in progress.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
static void sanityCheck(const Pkt4Ptr &query, RequirementLevel serverid)
Verifies if specified packet meets RFC requirements.
void processDhcp4QueryAndSendResponse(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park)
Process a single incoming DHCPv4 query.
static void appendServerID(Dhcpv4Exchange &ex)
Adds server identifier option to the server's response.
Pkt4Ptr processRequest(Pkt4Ptr &request, AllocEngine::ClientContext4Ptr &context)
Processes incoming REQUEST and returns REPLY response.
void processPacket(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park=true)
Process a single incoming DHCPv4 packet.
void classifyByVendor(const Pkt4Ptr &pkt)
Assign class using vendor-class-identifier option.
void appendRequestedOptions(Dhcpv4Exchange &ex)
Appends options requested by client.
boost::shared_ptr< ClientContext4 > ClientContext4Ptr
Pointer to the ClientContext4.
static int getHookIndexLease4Decline()
Returns the index for "lease4_decline" hook point.
static int getHookIndexSubnet4Select()
Returns the index for "subnet4_select" hook point.
static int getHookIndexPkt4Send()
Returns the index for "pkt4_send" hook point.
Pkt4Ptr getQuery() const
Returns the pointer to the query from the client.
Pkt4Ptr processInform(Pkt4Ptr &inform)
Processes incoming DHCPINFORM messages.
void stopD2()
Stops DHCP_DDNS client IO if DDNS updates are enabled.
isc::dhcp::Subnet4Ptr selectSubnet4o6(const Pkt4Ptr &query, bool &drop, bool sanity_only=false) const
Selects a subnet for a given client's DHCP4o6 packet.
boost::shared_ptr< Dhcpv4Exchange > Dhcpv4ExchangePtr
Type representing the pointer to the Dhcpv4Exchange.
boost::shared_ptr< Pkt4 > Pkt4Ptr
A pointer to Pkt4 object.
void processDhcp4Query(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park)
Process a single incoming DHCPv4 query.
static void classifyByVendor(const Pkt4Ptr &pkt)
Assign class using vendor-class-identifier option.
Convenience container for conveying DDNS behavioral parameters It is intended to be created per Packe...
bool acceptServerId(const Pkt4Ptr &pkt) const
Verifies if the server id belongs to our server.
virtual Pkt4Ptr receivePacket(int timeout)
dummy wrapper around IfaceMgr::receive4
Pkt4Ptr getResponse() const
Returns the pointer to the server's response.
void processPacketAndSendResponse(Pkt4Ptr &query)
Process a single incoming DHCPv4 packet and sends the response.
static void processStatsSent(const Pkt4Ptr &response)
Updates statistics for transmitted packets.
bool inTestMode() const
Checks if the server is running in unit test mode.
boost::shared_ptr< AllocEngine > alloc_engine_
Allocation Engine.
Defines the logger used by the top-level component of kea-dhcp-ddns.
NetworkStatePtr network_state_
Holds information about disabled DHCP service and/or disabled subnet/network scopes.
void startD2()
Starts DHCP_DDNS client IO if DDNS updates are enabled.
void declineLease(const Lease4Ptr &lease, const Pkt4Ptr &decline, AllocEngine::ClientContext4Ptr &context)
Marks lease as declined.
RequirementLevel
defines if certain option may, must or must not appear
boost::shared_ptr< CalloutHandle > CalloutHandlePtr
A shared pointer to a CalloutHandle object.
static std::string srvidToString(const OptionPtr &opt)
converts server-id to text Converts content of server-id option to a text representation, e.g.
void requiredClassify(Dhcpv4Exchange &ex)
Assigns incoming packet to zero or more classes (required pass).
bool acceptDirectRequest(const Pkt4Ptr &query) const
Check if a message sent by directly connected client should be accepted or discarded.
void assignLease(Dhcpv4Exchange &ex)
Assigns a lease and appends corresponding options.
static const std::string VENDOR_CLASS_PREFIX
this is a prefix added to the content of vendor-class option
void initResponse4o6()
Initializes the DHCPv6 part of the response message.
boost::shared_ptr< NetworkState > NetworkStatePtr
Pointer to the NetworkState object.
bool useBroadcast() const
Return bool value indicating that broadcast flags should be set on sockets.
bool use_bcast_
Should broadcast be enabled on sockets (if true).
void deleteResponse()
Removes the response message by resetting the pointer to NULL.
Base class for all services.
void appendBasicOptions(Dhcpv4Exchange &ex)
Append basic options if they are not present.
void processClientName(Dhcpv4Exchange &ex)
Processes Client FQDN and Hostname Options sent by a client.
int run()
Main server processing loop.
CfgOptionList & getCfgOptionList()
Returns the configured option list (non-const version)
void renewLease(const Pkt4Ptr &renew, Pkt4Ptr &reply)
Attempts to renew received addresses.
void conditionallySetReservedClientClasses()
Assigns classes retrieved from host reservation database if they haven't been yet set...
static uint16_t checkRelayPort(const Dhcpv4Exchange &ex)
Check if the relay port RAI sub-option was set in the query.
boost::shared_ptr< CBControlDHCPv4 > CBControlDHCPv4Ptr
void setSendResponsesToSource(bool value)
Sets value of the test_send_responses_to_source_ flag.
void setReservedMessageFields()
Sets reserved values of siaddr, sname and file in the server's response.
void shutdown() override
Instructs the server to shut down.
void deferredUnpack(Pkt4Ptr &query)
Perform deferred option unpacking.
CBControlDHCPv4Ptr getCBControl() const
Returns an object which controls access to the configuration backends.
static void setReservedClientClasses(AllocEngine::ClientContext4Ptr context)
Assigns classes retrieved from host reservation database.
static std::string getVersion(bool extended)
returns Kea version on stdout and exit.
uint16_t client_port_
UDP port number to which server sends all responses.
void processPacketAndSendResponseNoThrow(Pkt4Ptr &query)
Process a single incoming DHCPv4 packet and sends the response.
NetworkStatePtr & getNetworkState()
Returns pointer to the network state used by the server.
void adjustIfaceData(Dhcpv4Exchange &ex)
Set IP/UDP and interface parameters for the DHCPv4 response.
isc::dhcp::Subnet4Ptr selectSubnet(const Pkt4Ptr &query, bool &drop, bool sanity_only=false) const
Selects a subnet for a given client's packet.
static void processStatsReceived(const Pkt4Ptr &query)
Class methods for DHCPv4-over-DHCPv6 handler.
This file provides the classes needed to embody, compose, and decompose DNS update requests that are ...
Defines the D2ClientMgr class.
Pkt4Ptr processDiscover(Pkt4Ptr &discover)
Processes incoming DISCOVER and returns response.
static int getHookIndexPkt4Receive()
Returns the index for "pkt4_receive" hook point.
bool getSendResponsesToSource() const
Returns value of the test_send_responses_to_source_ flag.