1 // Copyright (C) 2019-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 CONFIG_BACKEND_POOL_DHCP6_H
8 #define CONFIG_BACKEND_POOL_DHCP6_H
9 
10 #include <cc/server_tag.h>
11 #include <cc/stamped_value.h>
12 #include <config_backend/base_config_backend_pool.h>
13 #include <database/backend_selector.h>
14 #include <database/server_selector.h>
15 #include <dhcp/option.h>
16 #include <dhcp/option_definition.h>
17 #include <dhcpsrv/cfg_option.h>
18 #include <dhcpsrv/client_class_def.h>
19 #include <dhcpsrv/config_backend_dhcp6.h>
20 #include <dhcpsrv/shared_network.h>
21 #include <dhcpsrv/subnet.h>
22 #include <boost/date_time/posix_time/ptime.hpp>
23 #include <string>
24 
25 namespace isc {
26 namespace dhcp {
27 
28 /// @brief Implementation of the Configuration Backend Pool for DHCPv6.
29 ///
30 /// All POSIX times specified in the methods belonging to this
31 /// class must be local times.
32 class ConfigBackendPoolDHCPv6 : public cb::BaseConfigBackendPool<ConfigBackendDHCPv6> {
33 public:
34 
35     /// @brief Retrieves a single subnet by subnet_prefix.
36     ///
37     /// @param backend_selector Backend selector.
38     /// @param server_selector Server selector.
39     /// @param subnet_prefix Prefix of the subnet to be retrieved.
40     /// @return Pointer to the retrieved subnet or NULL if not found.
41     virtual Subnet6Ptr
42     getSubnet6(const db::BackendSelector& backend_selector,
43                const db::ServerSelector& server_selector,
44                const std::string& subnet_prefix) const;
45 
46     /// @brief Retrieves a single subnet by subnet identifier.
47     ///
48     /// @param backend_selector Backend selector.
49     /// @param server_selector Server selector.
50     /// @param subnet_id Identifier of a subnet to be retrieved.
51     /// @return Pointer to the retrieved subnet or NULL if not found.
52     virtual Subnet6Ptr
53     getSubnet6(const db::BackendSelector& backend_selector,
54                const db::ServerSelector& server_selector,
55                const SubnetID& subnet_id) const;
56 
57     /// @brief Retrieves all subnets.
58     ///
59     /// @param backend_selector Backend selector.
60     /// @param server_selector Server selector.
61     /// @return Collection of subnets or empty collection if no subnet found.
62     virtual Subnet6Collection
63     getAllSubnets6(const db::BackendSelector& backend_selector,
64                    const db::ServerSelector& server_selector) const;
65 
66     /// @brief Retrieves subnets modified after specified time.
67     ///
68     /// @param backend_selector Backend selector.
69     /// @param server_selector Server selector.
70     /// @param modification_time Lower bound subnet modification time.
71     /// @return Collection of subnets or empty collection if no subnet found.
72     virtual Subnet6Collection
73     getModifiedSubnets6(const db::BackendSelector& backend_selector,
74                         const db::ServerSelector& server_selector,
75                         const boost::posix_time::ptime& modification_time) const;
76 
77     /// @brief Retrieves all subnets belonging to a specified shared network.
78     ///
79     /// @param backend_selector Backend selector.
80     /// @param server_selector Server selector.
81     /// @param shared_network_name Name of the shared network for which the
82     /// subnets should be retrieved.
83     /// @return Collection of subnets or empty collection if no subnet found.
84     virtual Subnet6Collection
85     getSharedNetworkSubnets6(const db::BackendSelector& backend_selector,
86                              const db::ServerSelector& server_selector,
87                              const std::string& shared_network_name) const;
88 
89     /// @brief Retrieves shared network by name.
90     ///
91     /// @param backend_selector Backend selector.
92     /// @param server_selector Server selector.
93     /// @param name Name of the shared network to be retrieved.
94     /// @return Pointer to the shared network or NULL if not found.
95     virtual SharedNetwork6Ptr
96     getSharedNetwork6(const db::BackendSelector& backend_selector,
97                       const db::ServerSelector& server_selector,
98                       const std::string& name) const;
99 
100     /// @brief Retrieves all shared networks.
101     ///
102     /// @param backend_selector Backend selector.
103     /// @param server_selector Server selector.
104     /// @return Collection of shared network or empty collection if
105     /// no shared network found.
106     virtual SharedNetwork6Collection
107     getAllSharedNetworks6(const db::BackendSelector& backend_selector,
108                           const db::ServerSelector& server_selector) const;
109 
110     /// @brief Retrieves shared networks modified after specified time.
111     ///
112     /// @param backend_selector Backend selector.
113     /// @param server_selector Server selector.
114     /// @param modification_time Lower bound shared network modification time.
115     /// @return Collection of shared network or empty collection if
116     /// no shared network found.
117     virtual SharedNetwork6Collection
118     getModifiedSharedNetworks6(const db::BackendSelector& backend_selector,
119                                const db::ServerSelector& server_selector,
120                                const boost::posix_time::ptime& modification_time) const;
121 
122     /// @brief Retrieves single option definition by code and space.
123     ///
124     /// @param backend_selector Backend selector.
125     /// @param server_selector Server selector.
126     /// @param code Code of the option to be retrieved.
127     /// @param space Option space of the option to be retrieved.
128     /// @return Pointer to the option definition or NULL if not found.
129     virtual OptionDefinitionPtr
130     getOptionDef6(const db::BackendSelector& backend_selector,
131                   const db::ServerSelector& server_selector,
132                   const uint16_t code,
133                   const std::string& space) const;
134 
135     /// @brief Retrieves all option definitions.
136     ///
137     /// @param backend_selector Backend selector.
138     /// @param server_selector Server selector.
139     /// @return Collection of option definitions or empty collection if
140     /// no option definition found.
141     virtual OptionDefContainer
142     getAllOptionDefs6(const db::BackendSelector& backend_selector,
143                       const db::ServerSelector& server_selector) const;
144 
145     /// @brief Retrieves option definitions modified after specified time.
146     ///
147     /// @param backend_selector Backend selector.
148     /// @param server_selector Server selector.
149     /// @param modification_time Lower bound option definition modification
150     /// time.
151     /// @return Collection of option definitions or empty collection if
152     /// no option definition found.
153     virtual OptionDefContainer
154     getModifiedOptionDefs6(const db::BackendSelector& backend_selector,
155                            const db::ServerSelector& server_selector,
156                            const boost::posix_time::ptime& modification_time) const;
157 
158     /// @brief Retrieves single option by code and space.
159     ///
160     /// @param backend_selector Backend selector.
161     /// @param server_selector Server selector.
162     /// @param code Option code.
163     /// @param space Option space.
164     /// @return Pointer to the retrieved option descriptor or null if
165     /// no option was found.
166     virtual OptionDescriptorPtr
167     getOption6(const db::BackendSelector& backend_selector,
168                const db::ServerSelector& server_selector,
169                const uint16_t code,
170                const std::string& space) const;
171 
172     /// @brief Retrieves all global options.
173     ///
174     /// @param backend_selector Backend selector.
175     /// @param server_selector Server selector.
176     /// @return Collection of global options or empty collection if no
177     /// option found.
178     virtual OptionContainer
179     getAllOptions6(const db::BackendSelector& backend_selector,
180                    const db::ServerSelector& server_selector) const;
181 
182     /// @brief Retrieves option modified after specified time.
183     ///
184     /// @param backend_selector Backend selector.
185     /// @param server_selector Server selector.
186     /// @param modification_time Lower bound option modification time.
187     /// @return Collection of global options or empty collection if no
188     /// option found.
189     virtual OptionContainer
190     getModifiedOptions6(const db::BackendSelector& backend_selector,
191                         const db::ServerSelector& server_selector,
192                         const boost::posix_time::ptime& modification_time) const;
193 
194     /// @brief Retrieves global parameter value.
195     ///
196     /// @param backend_selector Backend selector.
197     /// @param server_selector Server selector.
198     /// @param name Name of the global parameter to be retrieved.
199     /// @return Value of the global parameter.
200     virtual data::StampedValuePtr
201     getGlobalParameter6(const db::BackendSelector& backend_selector,
202                         const db::ServerSelector& server_selector,
203                         const std::string& name) const;
204 
205     /// @brief Retrieves all global parameters.
206     ///
207     /// @param backend_selector Backend selector.
208     /// @param server_selector Server selector.
209     virtual data::StampedValueCollection
210     getAllGlobalParameters6(const db::BackendSelector& backend_selector,
211                             const db::ServerSelector& server_selector) const;
212 
213     /// @brief Retrieves global parameters modified after specified time.
214     ///
215     /// @param backend_selector Backend selector.
216     /// @param server_selector Server selector.
217     /// @param modification_time Lower bound subnet modification time.
218     /// @return Collection of modified global parameters.
219    virtual data::StampedValueCollection
220    getModifiedGlobalParameters6(const db::BackendSelector& backend_selector,
221                                 const db::ServerSelector& server_selector,
222                                 const boost::posix_time::ptime& modification_time) const;
223 
224     /// @brief Retrieves a client class by name.
225     ///
226     /// @param backend_selector Backend selector.
227     /// @param server_selector Server selector.
228     /// @param name Client class name.
229     /// @return Pointer to the retrieved client class.
230     virtual ClientClassDefPtr
231     getClientClass6(const db::BackendSelector& backend_selector,
232                     const db::ServerSelector& server_selector,
233                     const std::string& name) const;
234 
235     /// @brief Retrieves all client classes.
236     ///
237     /// @param backend_selector Backend selector.
238     /// @param server_selector Server selector.
239     /// @return Collection of client classes.
240     virtual ClientClassDictionary
241     getAllClientClasses6(const db::BackendSelector& backend_selector,
242                          const db::ServerSelector& server_selector) const;
243 
244     /// @brief Retrieves client classes modified after specified time.
245     ///
246     /// @param backend_selector Backend selector.
247     /// @param server_selector Server selector.
248     /// @param modification_time Modification time.
249     /// @return Collection of client classes.
250     virtual ClientClassDictionary
251     getModifiedClientClasses6(const db::BackendSelector& backend_selector,
252                               const db::ServerSelector& server_selector,
253                               const boost::posix_time::ptime& modification_time) const;
254 
255     /// @brief Retrieves the most recent audit entries.
256     ///
257     /// @param backend_selector Backend selector.
258     /// @param server_selector Server selector.
259     /// @param modification_time Timestamp being a lower limit for the returned
260     /// result set, i.e. entries later than specified time are returned.
261     /// @param modification_id Identifier being a lower limit for the returned
262     /// result set, used when two (or more) entries have the same
263     /// modification_time.
264     /// @return Collection of audit entries.
265     virtual db::AuditEntryCollection
266     getRecentAuditEntries(const db::BackendSelector& backend_selector,
267                           const db::ServerSelector& server_selector,
268                           const boost::posix_time::ptime& modification_time,
269                           const uint64_t& modification_id) const;
270 
271     /// @brief Retrieves all servers from the particular backend.
272     ///
273     /// This method returns the list of servers excluding the logical server
274     /// 'all'.
275     ///
276     /// @param backend_selector Backend selector.
277     /// @return Collection of servers from the backend.
278     virtual db::ServerCollection
279     getAllServers6(const db::BackendSelector& backend_selector) const;
280 
281     /// @brief Retrieves a server from the particular backend.
282     ///
283     /// @param backend_selector Backend selector.
284     /// @param server_tag Tag of the server to be retrieved.
285     /// @return Pointer to the server instance or null pointer if no server
286     /// with the particular tag was found.
287     virtual db::ServerPtr
288     getServer6(const db::BackendSelector& backend_selector,
289                const data::ServerTag& server_tag) const;
290 
291     /// @brief Creates or updates a subnet.
292     ///
293     /// @param backend_selector Backend selector.
294     /// @param server_selector Server selector.
295     /// @param subnet Subnet to be added or updated.
296     virtual void
297     createUpdateSubnet6(const db::BackendSelector& backend_selector,
298                         const db::ServerSelector& server_selector,
299                         const Subnet6Ptr& subnet);
300 
301     /// @brief Creates or updates a shared network.
302     ///
303     /// @param backend_selector Backend selector.
304     /// @param server_selector Server selector.
305     /// @param shared_network Shared network to be added or updated.
306     virtual void
307     createUpdateSharedNetwork6(const db::BackendSelector& backend_selector,
308                                const db::ServerSelector& server_selector,
309                                const SharedNetwork6Ptr& shared_network);
310 
311     /// @brief Creates or updates an option definition.
312     ///
313     /// @param backend_selector Backend selector.
314     /// @param server_selector Server selector.
315     /// @param option_def Option definition to be added or updated.
316     virtual void
317     createUpdateOptionDef6(const db::BackendSelector& backend_selector,
318                            const db::ServerSelector& server_selector,
319                            const OptionDefinitionPtr& option_def);
320 
321     /// @brief Creates or updates global option.
322     ///
323     /// @param backend_selector Backend selector.
324     /// @param server_selector Server selector.
325     /// @param option Option to be added or updated.
326     virtual void
327     createUpdateOption6(const db::BackendSelector& backend_selector,
328                         const db::ServerSelector& server_selector,
329                         const OptionDescriptorPtr& option);
330 
331     /// @brief Creates or updates shared network level option.
332     ///
333     /// @param backend_selector Backend selector.
334     /// @param server_selector Server selector.
335     /// @param shared_network_name Name of a shared network to which option
336     /// belongs.
337     /// @param option Option to be added or updated.
338     virtual void
339     createUpdateOption6(const db::BackendSelector& backend_selector,
340                         const db::ServerSelector& server_selector,
341                         const std::string& shared_network_name,
342                         const OptionDescriptorPtr& option);
343 
344     /// @brief Creates or updates subnet level option.
345     ///
346     /// @param backend_selector Backend selector.
347     /// @param server_selector Server selector.
348     /// @param subnet_id Identifier of a subnet to which option belongs.
349     /// @param option Option to be added or updated.
350     virtual void
351     createUpdateOption6(const db::BackendSelector& backend_selector,
352                         const db::ServerSelector& server_selector,
353                         const SubnetID& subnet_id,
354                         const OptionDescriptorPtr& option);
355 
356     /// @brief Creates or updates pool level option.
357     ///
358     /// @param backend_selector Backend selector.
359     /// @param server_selector Server selector.
360     /// @param pool_start_address Lower bound address of the pool to which
361     /// the option belongs.
362     /// @param pool_end_address Upper bound address of the pool to which the
363     /// option belongs.
364     /// @param option Option to be added or updated.
365     virtual void
366     createUpdateOption6(const db::BackendSelector& backend_selector,
367                         const db::ServerSelector& server_selector,
368                         const asiolink::IOAddress& pool_start_address,
369                         const asiolink::IOAddress& pool_end_address,
370                         const OptionDescriptorPtr& option);
371 
372     /// @brief Creates or updates prefix delegation pool level option.
373     ///
374     /// @param backend_selector Backend selector.
375     /// @param server_selector Server selector.
376     /// @param pd_pool_prefix Address part of the prefix of the prefix
377     /// delegation pool to which the option belongs.
378     /// @param pd_pool_prefix_length Prefix length of the prefix
379     /// delegation pool to which the option belongs.
380     /// @param option Option to be added or updated.
381     virtual void
382     createUpdateOption6(const db::BackendSelector& backend_selector,
383                         const db::ServerSelector& server_selector,
384                         const asiolink::IOAddress& pd_pool_prefix,
385                         const uint8_t pd_pool_prefix_length,
386                         const OptionDescriptorPtr& option);
387 
388     /// @brief Creates or updates global string parameter.
389     ///
390     /// @param backend_selector Backend selector.
391     /// @param server_selector Server selector.
392     /// @param value Value of the global parameter.
393     virtual void
394     createUpdateGlobalParameter6(const db::BackendSelector& backend_selector,
395                                  const db::ServerSelector& server_selector,
396                                  const data::StampedValuePtr& value);
397 
398     /// @brief Creates or updates DHCPv6 client class.
399     ///
400     /// @param backend_selector Backend selector.
401     /// @param server_selector Server selector.
402     /// @param client_class Client class to be added or updated.
403     /// @param follow_class_name name of the class after which the
404     /// new or updated class should be positioned. An empty value
405     /// causes the class to be appended at the end of the class
406     /// hierarchy.
407     virtual void
408     createUpdateClientClass6(const db::BackendSelector& backend_selector,
409                              const db::ServerSelector& server_selector,
410                              const ClientClassDefPtr& client_class,
411                              const std::string& follow_class_name);
412 
413     /// @brief Creates or updates a server.
414     ///
415     /// @param backend_selector Backend selector.
416     /// @param server Instance of the server to be stored.
417     virtual void
418     createUpdateServer6(const db::BackendSelector& backend_selector,
419                         const db::ServerPtr& server);
420 
421     /// @brief Deletes subnet by prefix.
422     ///
423     /// @param backend_selector Backend selector.
424     /// @param server_selector Server selector.
425     /// @param subnet_prefix Prefix of the subnet to be deleted.
426     /// @return Number of deleted subnets.
427     virtual uint64_t
428     deleteSubnet6(const db::BackendSelector& backend_selector,
429                   const db::ServerSelector& server_selector,
430                   const std::string& subnet_prefix);
431 
432     /// @brief Deletes subnet by identifier.
433     ///
434     /// @param backend_selector Backend selector.
435     /// @param server_selector Server selector.
436     /// @param subnet_id Identifier of the subnet to be deleted.
437     /// @return Number of deleted subnets.
438     virtual uint64_t
439     deleteSubnet6(const db::BackendSelector& backend_selector,
440                   const db::ServerSelector& server_selector,
441                   const SubnetID& subnet_id);
442 
443     /// @brief Deletes all subnets.
444     ///
445     /// @param backend_selector Backend selector.
446     /// @param server_selector Server selector.
447     /// @return Number of deleted subnets.
448     virtual uint64_t
449     deleteAllSubnets6(const db::BackendSelector& backend_selector,
450                       const db::ServerSelector& server_selector);
451 
452     /// @brief Deletes all subnets belonging to a specified shared network.
453     ///
454     /// @param backend_selector Backend selector.
455     /// @param server_selector Server selector.
456     /// @param shared_network_name Name of the shared network for which the
457     /// subnets should be deleted.
458     /// @return Number of deleted subnets.
459     virtual uint64_t
460     deleteSharedNetworkSubnets6(const db::BackendSelector& backend_selector,
461                                 const db::ServerSelector& server_selector,
462                                 const std::string& shared_network_name);
463 
464     /// @brief Deletes shared network by name.
465     ///
466     /// @param backend_selector Backend selector.
467     /// @param server_selector Server selector.
468     /// @param name Name of the shared network to be deleted.
469     /// @return Number of deleted shared networks.
470     virtual uint64_t
471     deleteSharedNetwork6(const db::BackendSelector& backend_selector,
472                          const db::ServerSelector& server_selector,
473                          const std::string& name);
474 
475     /// @brief Deletes all shared networks.
476     ///
477     /// @param backend_selector Backend selector.
478     /// @param server_selector Server selector.
479     /// @return Number of deleted shared networks.
480     virtual uint64_t
481     deleteAllSharedNetworks6(const db::BackendSelector& backend_selector,
482                              const db::ServerSelector& server_selector);
483 
484     /// @brief Deletes option definition.
485     ///
486     /// @param backend_selector Backend selector.
487     /// @param server_selector Server selector.
488     /// @param code Code of the option to be deleted.
489     /// @param space Option space of the option to be deleted.
490     /// @return Number of deleted option definitions.
491     virtual uint64_t
492     deleteOptionDef6(const db::BackendSelector& backend_selector,
493                      const db::ServerSelector& server_selector,
494                      const uint16_t code,
495                      const std::string& space);
496 
497     /// @brief Deletes all option definitions.
498     ///
499     /// @param backend_selector Backend selector.
500     /// @param server_selector Server selector.
501     /// @return Number of deleted option definitions.
502     virtual uint64_t
503     deleteAllOptionDefs6(const db::BackendSelector& backend_selector,
504                          const db::ServerSelector& server_selector);
505 
506     /// @brief Deletes global option.
507     ///
508     /// @param backend_selector Backend selector.
509     /// @param server_selector Server selector.
510     /// @param code Code of the option to be deleted.
511     /// @param space Option space of the option to be deleted.
512     /// @return Number of deleted options.
513     virtual uint64_t
514     deleteOption6(const db::BackendSelector& backend_selector,
515                   const db::ServerSelector& server_selector,
516                   const uint16_t code,
517                   const std::string& space);
518 
519     /// @brief Deletes shared network level option.
520     ///
521     /// @param backend_selector Backend selector.
522     /// @param server_selector Server selector.
523     /// @param shared_network_name Name of the shared network which option
524     /// belongs to.
525     /// @param code Code of the option to be deleted.
526     /// @param space Option space of the option to be deleted.
527     virtual uint64_t
528     deleteOption6(const db::BackendSelector& backend_selector,
529                   const db::ServerSelector& server_selector,
530                   const std::string& shared_network_name,
531                   const uint16_t code,
532                   const std::string& space);
533 
534     /// @brief Deletes subnet level option.
535     ///
536     /// @param backend_selector Backend selector.
537     /// @param server_selector Server selector.
538     /// @param subnet_id Identifier of the subnet to which deleted option
539     /// belongs.
540     /// @param code Code of the deleted option.
541     /// @param space Option space of the deleted option.
542     /// @return Number of deleted options.
543     virtual uint64_t
544     deleteOption6(const db::BackendSelector& backend_selector,
545                   const db::ServerSelector& server_selector,
546                   const SubnetID& subnet_id,
547                   const uint16_t code, const std::string& space);
548 
549     /// @brief Deletes pool level option.
550     ///
551     /// @param backend_selector Backend selector.
552     /// @param server_selector Server selector.
553     /// @param pool_start_address Lower bound address of the pool to which
554     /// deleted option belongs.
555     /// @param pool_end_address Upper bound address of the pool to which the
556     /// deleted option belongs.
557     /// @param code Code of the deleted option.
558     /// @param space Option space of the deleted option.
559     /// @return Number of deleted options.
560     virtual uint64_t
561     deleteOption6(const db::BackendSelector& backend_selector,
562                   const db::ServerSelector& server_selector,
563                   const asiolink::IOAddress& pool_start_address,
564                   const asiolink::IOAddress& pool_end_address,
565                   const uint16_t code,
566                   const std::string& space);
567 
568     /// @brief Deletes prefix delegation pool level option.
569     ///
570     /// @param backend_selector Backend selector.
571     /// @param server_selector Server selector.
572     /// @param pd_pool_prefix Address part of the prefix of the prefix
573     /// delegation pool to which the deleted option belongs.
574     /// @param pd_pool_prefix_length Prefix length of the prefix delegation
575     /// pool to which the deleted option belongs.
576     /// @param code Code of the deleted option.
577     /// @param space Option space of the deleted option.
578     /// @return Number of deleted options.
579     virtual uint64_t
580     deleteOption6(const db::BackendSelector& backend_selector,
581                   const db::ServerSelector& server_selector,
582                   const asiolink::IOAddress& pd_pool_prefix,
583                   const uint8_t pd_pool_prefix_length,
584                   const uint16_t code,
585                   const std::string& space);
586 
587     /// @brief Deletes global parameter.
588     ///
589     /// @param backend_selector Backend selector.
590     /// @param server_selector Server selector.
591     /// @param name Name of the global parameter to be deleted.
592     /// @return Number of deleted global parameters.
593     virtual uint64_t
594     deleteGlobalParameter6(const db::BackendSelector& backend_selector,
595                            const db::ServerSelector& server_selector,
596                            const std::string& name);
597 
598     /// @brief Deletes all global parameters.
599     ///
600     /// @param backend_selector Backend selector.
601     /// @param server_selector Server selector.
602     /// @return Number of deleted global parameters.
603     virtual uint64_t
604     deleteAllGlobalParameters6(const db::BackendSelector& backend_selector,
605                                const db::ServerSelector& server_selector);
606 
607     /// @brief Deletes DHCPv6 client class.
608     ///
609     /// @param backend_selector Backend selector.
610     /// @param server_selector Server selector.
611     /// @param name Name of the class to be deleted.
612     /// @return Number of deleted client classes.
613     virtual uint64_t
614     deleteClientClass6(const db::BackendSelector& backend_selector,
615                        const db::ServerSelector& server_selector,
616                        const std::string& name);
617 
618     /// @brief Deletes all client classes.
619     ///
620     /// @param backend_selector Backend selector.
621     /// @param server_selector Server selector.
622     /// @return Number of deleted client classes.
623     virtual uint64_t
624     deleteAllClientClasses6(const db::BackendSelector& backend_selector,
625                             const db::ServerSelector& server_selector);
626 
627     /// @brief Deletes a server from the backend.
628     ///
629     /// @param backend_selector Backend selector.
630     /// @param server_tag Tag of the server to be deleted.
631     /// @return Number of deleted servers.
632     virtual uint64_t
633     deleteServer6(const db::BackendSelector& backend_selector,
634                   const data::ServerTag& server_tag);
635 
636     /// @brief Deletes all servers from the backend except the logical
637     /// server 'all'.
638     ///
639     /// @param backend_selector Backend selector.
640     /// @return Number of deleted servers.
641     virtual uint64_t
642     deleteAllServers6(const db::BackendSelector& backend_selector);
643 };
644 
645 
646 } // end of namespace isc::dhcp
647 } // end of namespace isc
648 
649 #endif // CONFIG_BACKEND_POOL_DHCP6_H
650