Kea  1.9.9-git
dhcp4_srv.h
Go to the documentation of this file.
1 // Copyright (C) 2011-2021 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #ifndef DHCPV4_SRV_H
8 #define DHCPV4_SRV_H
9 
10 #include <asiolink/io_service.h>
11 #include <dhcp/dhcp4.h>
12 #include <dhcp/option.h>
13 #include <dhcp/option_string.h>
15 #include <dhcp/option_custom.h>
16 #include <dhcp/pkt4.h>
17 #include <dhcp_ddns/ncr_msg.h>
18 #include <dhcpsrv/alloc_engine.h>
20 #include <dhcpsrv/cb_ctl_dhcp4.h>
21 #include <dhcpsrv/cfg_option.h>
22 #include <dhcpsrv/d2_client_mgr.h>
23 #include <dhcpsrv/network_state.h>
24 #include <dhcpsrv/subnet.h>
25 #include <hooks/callout_handle.h>
26 #include <process/daemon.h>
27 
28 #include <functional>
29 #include <iostream>
30 #include <queue>
31 
32 // Undefine the macro OPTIONAL which is defined in some operating
33 // systems but conflicts with a member of the RequirementLevel enum in
34 // the server class.
35 
36 #ifdef OPTIONAL
37 #undef OPTIONAL
38 #endif
39 
40 namespace isc {
41 namespace dhcp {
42 
63 public:
77  Dhcpv4Exchange(const AllocEnginePtr& alloc_engine, const Pkt4Ptr& query,
78  const Subnet4Ptr& subnet, bool& drop);
79 
86  void initResponse();
87 
91  void initResponse4o6();
92 
94  Pkt4Ptr getQuery() const {
95  return (query_);
96  }
97 
102  return (resp_);
103  }
104 
106  void deleteResponse() {
107  resp_.reset();
108  }
109 
112  return (context_);
113  }
114 
117  return (cfg_option_list_);
118  }
119 
122  return (cfg_option_list_);
123  }
124 
128 
133 
142 
153  static void classifyPacket(const Pkt4Ptr& pkt);
154 
155 private:
156 
163  static void classifyByVendor(const Pkt4Ptr& pkt);
164 
175  static void evaluateClasses(const Pkt4Ptr& pkt, bool depend_on_known);
176 
186  void copyDefaultFields();
187 
197  void copyDefaultOptions();
198 
205  void setHostIdentifiers();
206 
208  AllocEnginePtr alloc_engine_;
209 
211  Pkt4Ptr query_;
212 
214  Pkt4Ptr resp_;
215 
218 
222  CfgOptionList cfg_option_list_;
223 };
224 
226 typedef boost::shared_ptr<Dhcpv4Exchange> Dhcpv4ExchangePtr;
227 
228 
241 class Dhcpv4Srv : public process::Daemon {
242 private:
243 
245  asiolink::IOServicePtr io_service_;
246 
247 public:
248 
250  typedef enum {
255 
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);
279 
281  virtual ~Dhcpv4Srv();
282 
287  bool inTestMode() const {
288  return (server_port_ == 0);
289  }
290 
293  return (io_service_);
294  }
295 
298  return (network_state_);
299  }
300 
307  return (cb_control_);
308  }
309 
312  static std::string getVersion(bool extended);
313 
320  int run();
321 
327  void run_one();
328 
336 
344 
350  void sendResponseNoThrow(hooks::CalloutHandlePtr& callout_handle,
351  Pkt4Ptr& query, Pkt4Ptr& rsp);
352 
361  void processPacket(Pkt4Ptr& query, Pkt4Ptr& rsp,
362  bool allow_packet_park = true);
363 
371  void processDhcp4Query(Pkt4Ptr& query, Pkt4Ptr& rsp,
372  bool allow_packet_park);
373 
383  bool allow_packet_park);
384 
386  void shutdown() override;
387 
391 
392  uint16_t getServerPort() const {
400  return (server_port_);
401  }
402 
407  bool useBroadcast() const {
408  return (use_bcast_);
409  }
411 
417  void startD2();
418 
424  void stopD2();
425 
440  virtual void d2ClientErrorHandler(const dhcp_ddns::
441  NameChangeSender::Result result,
443 
447  void discardPackets();
448 
453  return (test_send_responses_to_source_);
454  }
455 
456 protected:
457 
464 
465  bool accept(const Pkt4Ptr& query) const;
486 
514  bool acceptDirectRequest(const Pkt4Ptr& query) const;
515 
534  bool acceptMessageType(const Pkt4Ptr& query) const;
535 
549  bool acceptServerId(const Pkt4Ptr& pkt) const;
551 
560  static void sanityCheck(const Pkt4Ptr& query, RequirementLevel serverid);
561 
571  Pkt4Ptr processDiscover(Pkt4Ptr& discover);
572 
588 
597  void processRelease(Pkt4Ptr& release, AllocEngine::ClientContext4Ptr& context);
598 
608  void processDecline(Pkt4Ptr& decline, AllocEngine::ClientContext4Ptr& context);
609 
615  Pkt4Ptr processInform(Pkt4Ptr& inform);
616 
624 
633 
645 
660  void assignLease(Dhcpv4Exchange& ex);
661 
680  const Lease4Ptr& lease, const Pkt4Ptr& query,
681  const Pkt4Ptr& resp, bool client_name_changed);
682 
708  void setTeeTimes(const Lease4Ptr& lease, const Subnet4Ptr& subnet, Pkt4Ptr resp);
709 
722 
734  void setFixedFields(Dhcpv4Exchange& ex);
735 
774 
782 
786  void setSendResponsesToSource(bool value) {
787  test_send_responses_to_source_ = value;
788  }
789 
790 public:
791 
798  static const std::string VENDOR_CLASS_PREFIX;
799 
800 private:
811  void processClientFqdnOption(Dhcpv4Exchange& ex);
812 
844  void processHostnameOption(Dhcpv4Exchange& ex);
845 
859  void declineLease(const Lease4Ptr& lease, const Pkt4Ptr& decline,
861 
862 protected:
863 
879  void createNameChangeRequests(const Lease4Ptr& lease,
880  const Lease4Ptr& old_lease,
881  const DdnsParams& ddns_params);
882 
891  void renewLease(const Pkt4Ptr& renew, Pkt4Ptr& reply);
892 
911  static void appendServerID(Dhcpv4Exchange& ex);
912 
917  static uint16_t checkRelayPort(const Dhcpv4Exchange& ex);
918 
954 
971 
978  static std::string srvidToString(const OptionPtr& opt);
979 
992  bool& drop,
993  bool sanity_only = false) const;
994 
1007  bool& drop,
1008  bool sanity_only = false) const;
1009 
1014  virtual Pkt4Ptr receivePacket(int timeout);
1015 
1020  virtual void sendPacket(const Pkt4Ptr& pkt);
1021 
1032  void classifyPacket(const Pkt4Ptr& pkt);
1033 
1034 protected:
1035 
1046  void requiredClassify(Dhcpv4Exchange& ex);
1047 
1057  void deferredUnpack(Pkt4Ptr& query);
1058 
1064  void processPacketPktSend(hooks::CalloutHandlePtr& callout_handle,
1065  Pkt4Ptr& query, Pkt4Ptr& rsp);
1066 
1071  void processPacketBufferSend(hooks::CalloutHandlePtr& callout_handle,
1072  Pkt4Ptr& rsp);
1073 
1074 private:
1075 
1082  void classifyByVendor(const Pkt4Ptr& pkt);
1083 
1089  static OptionPtr getNetmaskOption(const Subnet4Ptr& subnet);
1090 
1091 protected:
1092 
1094  uint16_t server_port_;
1095 
1097  uint16_t client_port_;
1098 
1101  volatile bool shutdown_;
1102 
1107  boost::shared_ptr<AllocEngine> alloc_engine_;
1108 
1111 
1115 
1118 
1119 private:
1120 
1123  bool test_send_responses_to_source_;
1124 
1125 public:
1126 
1128 
1131  static void processStatsReceived(const Pkt4Ptr& query);
1132 
1135  static void processStatsSent(const Pkt4Ptr& response);
1136 
1139  static int getHookIndexBuffer4Receive();
1140 
1143  static int getHookIndexPkt4Receive();
1144 
1147  static int getHookIndexSubnet4Select();
1148 
1151  static int getHookIndexLease4Release();
1152 
1155  static int getHookIndexPkt4Send();
1156 
1159  static int getHookIndexBuffer4Send();
1160 
1163  static int getHookIndexLease4Decline();
1164 
1170  std::list<std::list<std::string>> jsonPathsToRedact() const final override;
1171 };
1172 
1173 } // namespace dhcp
1174 } // namespace isc
1175 
1176 #endif // DHCP4_SRV_H
DHCPv4 server service.
Definition: dhcp4_srv.h:241
void setPacketStatisticsDefaults()
This function sets statistics related to DHCPv4 packets processing to their initial values...
Definition: dhcp4_srv.cc:663
void run_one()
Main server processing step.
Definition: dhcp4_srv.cc:973
static int getHookIndexBuffer4Send()
Returns the index for "buffer4_send" hook point.
Definition: dhcp4_srv.cc:4059
CBControlDHCPv4Ptr cb_control_
Controls access to the configuration backends.
Definition: dhcp4_srv.h:1117
void appendRequestedVendorOptions(Dhcpv4Exchange &ex)
Appends requested vendor options as requested by client.
Definition: dhcp4_srv.cc:1764
const CfgOptionList & getCfgOptionList() const
Returns the configured option list (const version)
Definition: dhcp4_srv.h:121
virtual ~Dhcpv4Srv()
Destructor. Used during DHCPv4 service shutdown.
Definition: dhcp4_srv.cc:673
uint16_t server_port_
UDP port number on which server listens.
Definition: dhcp4_srv.h:1094
void processPacketPktSend(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &query, Pkt4Ptr &rsp)
Executes pkt4_send callout.
Definition: dhcp4_srv.cc:1435
void processPacketBufferSend(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &rsp)
Executes buffer4_send callout and sends the response.
Definition: dhcp4_srv.cc:1501
static int getHookIndexBuffer4Receive()
Returns the index for "buffer4_receive" hook point.
Definition: dhcp4_srv.cc:4039
bool acceptMessageType(const Pkt4Ptr &query) const
Check if received message type is valid for the server to process.
Definition: dhcp4_srv.cc:3540
void buildCfgOptionList(Dhcpv4Exchange &ex)
Build the configured option list.
Definition: dhcp4_srv.cc:1618
void sendResponseNoThrow(hooks::CalloutHandlePtr &callout_handle, Pkt4Ptr &query, Pkt4Ptr &rsp)
Process an unparked DHCPv4 packet and sends the response.
Definition: dhcp4_srv.cc:1421
boost::shared_ptr< Option > OptionPtr
Definition: option.h:36
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
Definition: subnet.h:522
void initResponse()
Initializes the instance of the response message.
Definition: dhcp4_srv.cc:270
static void classifyPacket(const Pkt4Ptr &pkt)
Assigns incoming packet to zero or more classes.
Definition: dhcp4_srv.cc:550
AllocEngine::ClientContext4Ptr getContext() const
Returns the copy of the context for the Allocation engine.
Definition: dhcp4_srv.h:111
void adjustRemoteAddr(Dhcpv4Exchange &ex)
Sets remote addresses for outgoing packet.
Definition: dhcp4_srv.cc:2770
void classifyPacket(const Pkt4Ptr &pkt)
Assigns incoming packet to zero or more classes.
Definition: dhcp4_srv.cc:3734
virtual void sendPacket(const Pkt4Ptr &pkt)
dummy wrapper around IfaceMgr::send()
Definition: dhcp4_srv.cc:928
boost::shared_ptr< NameChangeRequest > NameChangeRequestPtr
Defines a pointer to a NameChangeRequest.
Definition: ncr_msg.h:212
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.
Definition: dhcp4_srv.cc:611
void discardPackets()
Discards parked packets Clears the packet parking lots of all packets.
Definition: dhcp4_srv.cc:4067
uint16_t getServerPort() const
Get UDP port on which server should listen.
Definition: dhcp4_srv.h:399
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.
Definition: dhcp4_srv.cc:2563
void createNameChangeRequests(const Lease4Ptr &lease, const Lease4Ptr &old_lease, const DdnsParams &ddns_params)
Creates NameChangeRequests which correspond to the lease which has been acquired. ...
Definition: dhcp4_srv.cc:2209
boost::shared_ptr< AllocEngine > AllocEnginePtr
A pointer to the AllocEngine object.
static int getHookIndexLease4Release()
Returns the index for "lease4_release" hook point.
Definition: dhcp4_srv.cc:4051
void processRelease(Pkt4Ptr &release, AllocEngine::ClientContext4Ptr &context)
Processes incoming DHCPRELEASE messages.
Definition: dhcp4_srv.cc:3136
std::list< std::list< std::string > > jsonPathsToRedact() const finaloverride
Return a list of all paths that contain passwords or secrets for kea-dhcp4.
Definition: dhcp4_srv.cc:4072
void setFixedFields(Dhcpv4Exchange &ex)
Sets fixed fields of the outgoing packet.
Definition: dhcp4_srv.cc:2871
asiolink::IOServicePtr & getIOService()
Returns pointer to the IO service used by the server.
Definition: dhcp4_srv.h:292
Dhcpv4Exchange(const AllocEnginePtr &alloc_engine, const Pkt4Ptr &query, const Subnet4Ptr &subnet, bool &drop)
Constructor.
Definition: dhcp4_srv.cc:147
virtual void d2ClientErrorHandler(const dhcp_ddns::NameChangeSender::Result result, dhcp_ddns::NameChangeRequestPtr &ncr)
Implements the error handler for DHCP_DDNS IO errors.
Definition: dhcp4_srv.cc:3922
bool accept(const Pkt4Ptr &query) const
Checks whether received message should be processed or discarded.
Definition: dhcp4_srv.cc:3474
void processDecline(Pkt4Ptr &decline, AllocEngine::ClientContext4Ptr &context)
Process incoming DHCPDECLINE messages.
Definition: dhcp4_srv.cc:3252
void setTeeTimes(const Lease4Ptr &lease, const Subnet4Ptr &subnet, Pkt4Ptr resp)
Adds the T1 and T2 timers to the outbound response as appropriate.
Definition: dhcp4_srv.cc:2630
std::list< ConstCfgOptionPtr > CfgOptionList
Const pointer list.
Definition: cfg_option.h:712
volatile bool shutdown_
Indicates if shutdown is in progress.
Definition: dhcp4_srv.h:1101
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:283
static void sanityCheck(const Pkt4Ptr &query, RequirementLevel serverid)
Verifies if specified packet meets RFC requirements.
Definition: dhcp4_srv.cc:3693
void processDhcp4QueryAndSendResponse(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park)
Process a single incoming DHCPv4 query.
Definition: dhcp4_srv.cc:1243
static void appendServerID(Dhcpv4Exchange &ex)
Adds server identifier option to the server's response.
Definition: dhcp4_srv.cc:1594
Pkt4Ptr processRequest(Pkt4Ptr &request, AllocEngine::ClientContext4Ptr &context)
Processes incoming REQUEST and returns REPLY response.
Definition: dhcp4_srv.cc:3059
void processPacket(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park=true)
Process a single incoming DHCPv4 packet.
Definition: dhcp4_srv.cc:1070
void classifyByVendor(const Pkt4Ptr &pkt)
Assign class using vendor-class-identifier option.
void appendRequestedOptions(Dhcpv4Exchange &ex)
Appends options requested by client.
Definition: dhcp4_srv.cc:1693
boost::shared_ptr< ClientContext4 > ClientContext4Ptr
Pointer to the ClientContext4.
static int getHookIndexLease4Decline()
Returns the index for "lease4_decline" hook point.
Definition: dhcp4_srv.cc:4063
static int getHookIndexSubnet4Select()
Returns the index for "subnet4_select" hook point.
Definition: dhcp4_srv.cc:4047
static int getHookIndexPkt4Send()
Returns the index for "pkt4_send" hook point.
Definition: dhcp4_srv.cc:4055
Pkt4Ptr getQuery() const
Returns the pointer to the query from the client.
Definition: dhcp4_srv.h:94
Pkt4Ptr processInform(Pkt4Ptr &inform)
Processes incoming DHCPINFORM messages.
Definition: dhcp4_srv.cc:3414
void stopD2()
Stops DHCP_DDNS client IO if DDNS updates are enabled.
Definition: dhcp4_srv.cc:3913
isc::dhcp::Subnet4Ptr selectSubnet4o6(const Pkt4Ptr &query, bool &drop, bool sanity_only=false) const
Selects a subnet for a given client's DHCP4o6 packet.
Definition: dhcp4_srv.cc:805
boost::shared_ptr< Dhcpv4Exchange > Dhcpv4ExchangePtr
Type representing the pointer to the Dhcpv4Exchange.
Definition: dhcp4_srv.h:226
boost::shared_ptr< Pkt4 > Pkt4Ptr
A pointer to Pkt4 object.
Definition: pkt4.h:544
void processDhcp4Query(Pkt4Ptr &query, Pkt4Ptr &rsp, bool allow_packet_park)
Process a single incoming DHCPv4 query.
Definition: dhcp4_srv.cc:1262
static void classifyByVendor(const Pkt4Ptr &pkt)
Assign class using vendor-class-identifier option.
Definition: dhcp4_srv.cc:538
Convenience container for conveying DDNS behavioral parameters It is intended to be created per Packe...
Definition: srv_config.h:46
bool acceptServerId(const Pkt4Ptr &pkt) const
Verifies if the server id belongs to our server.
Definition: dhcp4_srv.cc:3596
virtual Pkt4Ptr receivePacket(int timeout)
dummy wrapper around IfaceMgr::receive4
Definition: dhcp4_srv.cc:923
Pkt4Ptr getResponse() const
Returns the pointer to the server's response.
Definition: dhcp4_srv.h:101
void processPacketAndSendResponse(Pkt4Ptr &query)
Process a single incoming DHCPv4 packet and sends the response.
Definition: dhcp4_srv.cc:1058
static void processStatsSent(const Pkt4Ptr &response)
Updates statistics for transmitted packets.
Definition: dhcp4_srv.cc:4013
bool inTestMode() const
Checks if the server is running in unit test mode.
Definition: dhcp4_srv.h:287
boost::shared_ptr< AllocEngine > alloc_engine_
Allocation Engine.
Definition: dhcp4_srv.h:1107
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.
Definition: dhcp4_srv.h:1114
void startD2()
Starts DHCP_DDNS client IO if DDNS updates are enabled.
Definition: dhcp4_srv.cc:3901
void declineLease(const Lease4Ptr &lease, const Pkt4Ptr &decline, AllocEngine::ClientContext4Ptr &context)
Marks lease as declined.
Definition: dhcp4_srv.cc:3325
RequirementLevel
defines if certain option may, must or must not appear
Definition: dhcp4_srv.h:250
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.
Definition: dhcp4_srv.cc:1574
void requiredClassify(Dhcpv4Exchange &ex)
Assigns incoming packet to zero or more classes (required pass).
Definition: dhcp4_srv.cc:3738
bool acceptDirectRequest(const Pkt4Ptr &query) const
Check if a message sent by directly connected client should be accepted or discarded.
Definition: dhcp4_srv.cc:3502
void assignLease(Dhcpv4Exchange &ex)
Assigns a lease and appends corresponding options.
Definition: dhcp4_srv.cc:2236
static const std::string VENDOR_CLASS_PREFIX
this is a prefix added to the content of vendor-class option
Definition: dhcp4_srv.h:798
void initResponse4o6()
Initializes the DHCPv6 part of the response message.
Definition: dhcp4_srv.cc:296
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.
Definition: dhcp4_srv.h:407
bool use_bcast_
Should broadcast be enabled on sockets (if true).
Definition: dhcp4_srv.h:1110
void deleteResponse()
Removes the response message by resetting the pointer to NULL.
Definition: dhcp4_srv.h:106
Base class for all services.
Definition: daemon.h:48
void appendBasicOptions(Dhcpv4Exchange &ex)
Append basic options if they are not present.
Definition: dhcp4_srv.cc:1881
void processClientName(Dhcpv4Exchange &ex)
Processes Client FQDN and Hostname Options sent by a client.
Definition: dhcp4_srv.cc:1927
int run()
Main server processing loop.
Definition: dhcp4_srv.cc:933
CfgOptionList & getCfgOptionList()
Returns the configured option list (non-const version)
Definition: dhcp4_srv.h:116
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...
Definition: dhcp4_srv.cc:502
static uint16_t checkRelayPort(const Dhcpv4Exchange &ex)
Check if the relay port RAI sub-option was set in the query.
Definition: dhcp4_srv.cc:2669
boost::shared_ptr< CBControlDHCPv4 > CBControlDHCPv4Ptr
Definition: cb_ctl_dhcp4.h:45
void setSendResponsesToSource(bool value)
Sets value of the test_send_responses_to_source_ flag.
Definition: dhcp4_srv.h:786
void setReservedMessageFields()
Sets reserved values of siaddr, sname and file in the server's response.
Definition: dhcp4_srv.cc:516
DHCPv4 message exchange.
Definition: dhcp4_srv.h:62
void shutdown() override
Instructs the server to shut down.
Definition: dhcp4_srv.cc:713
void deferredUnpack(Pkt4Ptr &query)
Perform deferred option unpacking.
Definition: dhcp4_srv.cc:3830
CBControlDHCPv4Ptr getCBControl() const
Returns an object which controls access to the configuration backends.
Definition: dhcp4_srv.h:306
static void setReservedClientClasses(AllocEngine::ClientContext4Ptr context)
Assigns classes retrieved from host reservation database.
Definition: dhcp4_srv.cc:491
static std::string getVersion(bool extended)
returns Kea version on stdout and exit.
Definition: dhcp4_srv.cc:3937
uint16_t client_port_
UDP port number to which server sends all responses.
Definition: dhcp4_srv.h:1097
void processPacketAndSendResponseNoThrow(Pkt4Ptr &query)
Process a single incoming DHCPv4 packet and sends the response.
Definition: dhcp4_srv.cc:1046
NetworkStatePtr & getNetworkState()
Returns pointer to the network state used by the server.
Definition: dhcp4_srv.h:297
void adjustIfaceData(Dhcpv4Exchange &ex)
Set IP/UDP and interface parameters for the DHCPv4 response.
Definition: dhcp4_srv.cc:2682
isc::dhcp::Subnet4Ptr selectSubnet(const Pkt4Ptr &query, bool &drop, bool sanity_only=false) const
Selects a subnet for a given client's packet.
Definition: dhcp4_srv.cc:719
static void processStatsReceived(const Pkt4Ptr &query)
Class methods for DHCPv4-over-DHCPv6 handler.
Definition: dhcp4_srv.cc:3964
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.
Definition: dhcp4_srv.cc:2989
static int getHookIndexPkt4Receive()
Returns the index for "pkt4_receive" hook point.
Definition: dhcp4_srv.cc:4043
bool getSendResponsesToSource() const
Returns value of the test_send_responses_to_source_ flag.
Definition: dhcp4_srv.h:452