81 static const size_t MIN_MAC_LEN = 6;
95 Dhcpv6Srv(uint16_t server_port = DHCP6_SERVER_PORT,
96 uint16_t client_port = 0);
106 return (server_port_ == 0);
111 return (io_service_);
116 return (network_state_);
125 return (cb_control_);
130 static std::string getVersion(
bool extended);
158 void processPacketAndSendResponse(
Pkt6Ptr& query);
166 void processPacketAndSendResponseNoThrow(
Pkt6Ptr& query);
200 void processDhcp6QueryAndSendResponse(
Pkt6Ptr& query,
Pkt6Ptr& rsp);
203 void shutdown()
override;
209 uint16_t getServerPort()
const {
217 return (server_port_);
249 virtual void d2ClientErrorHandler(
const dhcp_ddns::
250 NameChangeSender::Result result,
256 void discardPackets();
265 bool earlyGHRLookup(
const Pkt6Ptr& query,
286 void setPacketStatisticsDefaults();
296 bool testServerID(
const Pkt6Ptr& pkt);
308 bool testUnicast(
const Pkt6Ptr& pkt)
const;
318 bool sanityCheck(
const Pkt6Ptr& pkt);
329 void sanityCheck(
const Pkt6Ptr& pkt, RequirementLevel clientid,
330 RequirementLevel serverid);
337 void sanityCheckDUID(
const OptionPtr& opt,
const std::string& opt_name);
448 void processDhcp4Query(
const Pkt6Ptr& dhcp4_query);
489 boost::shared_ptr<Option6IA> ia);
585 boost::shared_ptr<Option6IA> ia,
603 boost::shared_ptr<Option6IA> ia,
625 void buildCfgOptionList(
const Pkt6Ptr& question,
638 void appendDefaultOptions(
const Pkt6Ptr& question,
Pkt6Ptr& answer,
649 void appendRequestedOptions(
const Pkt6Ptr& question,
Pkt6Ptr& answer,
661 void appendRequestedVendorOptions(
const Pkt6Ptr& question,
Pkt6Ptr& answer,
722 void processClientFqdn(
const Pkt6Ptr& question,
const Pkt6Ptr& answer,
744 void createNameChangeRequests(
const Pkt6Ptr& answer,
807 static std::string duidToString(
const OptionPtr& opt);
813 virtual Pkt6Ptr receivePacket(
int timeout);
819 virtual void sendPacket(
const Pkt6Ptr& pkt);
831 void classifyPacket(
const Pkt6Ptr& pkt);
843 void evaluateClasses(
const Pkt6Ptr& pkt,
bool depend_on_known);
851 static void removeDependentEvaluatedClasses(
const Pkt6Ptr& pkt);
857 void setReservedClientClasses(
const Pkt6Ptr& pkt,
870 void conditionallySetReservedClientClasses(
const Pkt6Ptr& pkt,
925 void initContext(
const Pkt6Ptr& pkt,
964 declineIA(
const Pkt6Ptr& decline,
const DuidPtr& duid,
int& general_status,
984 boost::shared_ptr<Option6IA> ia_rsp);
991 void setStatusCode(boost::shared_ptr<Option6IA>& container,
1029 void checkDynamicSubnetChange(
const Pkt6Ptr& question,
Pkt6Ptr& answer,
1040 static uint16_t checkRelaySourcePort(
const Pkt6Ptr& query);
1049 void classifyByVendor(
const Pkt6Ptr& pkt);
1112 void generateFqdn(
const Pkt6Ptr& answer,
1117 static void processStatsReceived(
const Pkt6Ptr& query);
1126 bool requestedInORO(
const Pkt6Ptr& query,
const uint16_t code)
const;
1141 static void processStatsSent(
const Pkt6Ptr& response);
1145 static int getHookIndexBuffer6Send();
1159 std::list<std::list<std::string>> jsonPathsToRedact() const final override;
1168 volatile
bool shutdown_;
1186 std::queue<
isc::dhcp_ddns::NameChangeRequest> name_change_reqs_;
1199 #endif // DHCP6_SRV_H uint16_t server_port_
UDP port number on which server listens.
boost::shared_ptr< DUID > DuidPtr
boost::shared_ptr< HWAddr > HWAddrPtr
Shared pointer to a hardware address structure.
CBControlDHCPv6Ptr getCBControl() const
Returns an object which controls access to the configuration backends.
boost::shared_ptr< Option > OptionPtr
boost::shared_ptr< IOService > IOServicePtr
Defines a smart pointer to an IOService instance.
boost::shared_ptr< NameChangeRequest > NameChangeRequestPtr
Defines a pointer to a NameChangeRequest.
DHCPv6DiscardMessageError(const char *file, size_t line, const char *what)
boost::shared_ptr< CBControlDHCPv6 > CBControlDHCPv6Ptr
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
NetworkStatePtr & getNetworkState()
Returns pointer to the network state used by the server.
boost::shared_ptr< Option6IA > Option6IAPtr
A pointer to the Option6IA object.
boost::shared_ptr< Pkt6 > Pkt6Ptr
A pointer to Pkt6 packet.
OptionPtr getServerID()
Returns server-identifier option.
std::list< ConstCfgOptionPtr > CfgOptionList
Const pointer list.
RequirementLevel
defines if certain option may, must or must not appear
Context information for the DHCPv6 leases allocation.
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
uint16_t client_port_
UDP port number to which server sends all responses.
This is a base class for exceptions thrown from the DNS library module.
Defines the logger used by the top-level component of kea-lfc.
This exception is thrown when DHCP server hits the error which should result in discarding the messag...
boost::shared_ptr< CalloutHandle > CalloutHandlePtr
A shared pointer to a CalloutHandle object.
asiolink::IOServicePtr & getIOService()
Returns pointer to the IO service used by the server.
boost::shared_ptr< NetworkState > NetworkStatePtr
Pointer to the NetworkState object.
Base class for all services.
boost::shared_ptr< Subnet6 > Subnet6Ptr
A pointer to a Subnet6 object.
bool inTestMode() const
Checks if the server is running in unit test mode.
DHCPv4 and DHCPv6 allocation engine.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
This file provides the classes needed to embody, compose, and decompose DNS update requests that are ...
Defines the D2ClientMgr class.
static const std::string VENDOR_CLASS_PREFIX
this is a prefix added to the content of vendor-class option