Kea  1.5.0
config_backend_pool_dhcp4.cc
Go to the documentation of this file.
1 // Copyright (C) 2018 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 #include <config.h>
9 
10 using namespace isc::asiolink;
11 using namespace isc::data;
12 using namespace isc::db;
13 
14 namespace isc {
15 namespace dhcp {
16 
18 ConfigBackendPoolDHCPv4::getSubnet4(const BackendSelector& backend_selector,
19  const ServerSelector& server_selector,
20  const std::string& subnet_prefix) const {
21  Subnet4Ptr subnet;
22  getPropertyPtrConst<Subnet4Ptr, const std::string&>
23  (&ConfigBackendDHCPv4::getSubnet4, backend_selector, server_selector,
24  subnet, subnet_prefix);
25  return (subnet);
26 }
27 
29 ConfigBackendPoolDHCPv4::getSubnet4(const BackendSelector& backend_selector,
30  const ServerSelector& server_selector,
31  const SubnetID& subnet_id) const {
32  Subnet4Ptr subnet;
33  getPropertyPtrConst<Subnet4Ptr, const SubnetID&>
34  (&ConfigBackendDHCPv4::getSubnet4, backend_selector, server_selector,
35  subnet, subnet_id);
36  return (subnet);
37 }
38 
40 ConfigBackendPoolDHCPv4::getAllSubnets4(const BackendSelector& backend_selector,
41  const ServerSelector& server_selector) const {
42  Subnet4Collection subnets;
43  getAllPropertiesConst<Subnet4Collection>
44  (&ConfigBackendDHCPv4::getAllSubnets4, backend_selector, server_selector,
45  subnets);
46  return (subnets);
47 }
48 
50 ConfigBackendPoolDHCPv4::getModifiedSubnets4(const BackendSelector& backend_selector,
51  const ServerSelector& server_selector,
52  const boost::posix_time::ptime& modification_time) const {
53  Subnet4Collection subnets;
54  getMultiplePropertiesConst<Subnet4Collection, const boost::posix_time::ptime&>
55  (&ConfigBackendDHCPv4::getModifiedSubnets4, backend_selector, server_selector,
56  subnets, modification_time);
57  return (subnets);
58 }
59 
61 ConfigBackendPoolDHCPv4::getSharedNetwork4(const BackendSelector& backend_selector,
62  const ServerSelector& server_selector,
63  const std::string& name) const {
64  SharedNetwork4Ptr shared_network;
65  getPropertyPtrConst<SharedNetwork4Ptr, const std::string&>
66  (&ConfigBackendDHCPv4::getSharedNetwork4, backend_selector, server_selector,
67  shared_network, name);
68  return (shared_network);
69 }
70 
72 ConfigBackendPoolDHCPv4::getAllSharedNetworks4(const BackendSelector& backend_selector,
73  const ServerSelector& server_selector) const {
74  SharedNetwork4Collection shared_networks;
75  getAllPropertiesConst<SharedNetwork4Collection>
76  (&ConfigBackendDHCPv4::getAllSharedNetworks4, backend_selector, server_selector,
77  shared_networks);
78  return (shared_networks);
79 }
80 
82 ConfigBackendPoolDHCPv4::
83 getModifiedSharedNetworks4(const BackendSelector& backend_selector,
84  const ServerSelector& server_selector,
85  const boost::posix_time::ptime& modification_time) const {
86  SharedNetwork4Collection shared_networks;
87  getMultiplePropertiesConst<SharedNetwork4Collection, const boost::posix_time::ptime&>
88  (&ConfigBackendDHCPv4::getModifiedSharedNetworks4, backend_selector, server_selector,
89  shared_networks, modification_time);
90  return (shared_networks);
91 }
92 
94 ConfigBackendPoolDHCPv4::getOptionDef4(const BackendSelector& backend_selector,
95  const ServerSelector& server_selector,
96  const uint16_t code,
97  const std::string& space) const {
98  OptionDefinitionPtr option_def;
99  getPropertyPtrConst<OptionDefinitionPtr, uint16_t, const std::string&>
100  (&ConfigBackendDHCPv4::getOptionDef4, backend_selector, server_selector,
101  option_def, code, space);
102  return (option_def);
103 }
104 
106 ConfigBackendPoolDHCPv4::getAllOptionDefs4(const BackendSelector& backend_selector,
107  const ServerSelector& server_selector) const {
108  OptionDefContainer option_defs;
109  getAllPropertiesConst<OptionDefContainer>
110  (&ConfigBackendDHCPv4::getAllOptionDefs4, backend_selector, server_selector,
111  option_defs);
112  return (option_defs);
113 }
114 
116 ConfigBackendPoolDHCPv4::getModifiedOptionDefs4(const BackendSelector& backend_selector,
117  const ServerSelector& server_selector,
118  const boost::posix_time::ptime& modification_time) const {
119  OptionDefContainer option_defs;
120  getMultiplePropertiesConst<OptionDefContainer, const boost::posix_time::ptime&>
121  (&ConfigBackendDHCPv4::getModifiedOptionDefs4, backend_selector, server_selector,
122  option_defs, modification_time);
123  return (option_defs);
124 }
125 
127 ConfigBackendPoolDHCPv4::getOption4(const BackendSelector& backend_selector,
128  const ServerSelector& server_selector,
129  const uint16_t code,
130  const std::string& space) const {
131  OptionDescriptorPtr option;
132  getPropertyPtrConst<OptionDescriptorPtr, uint16_t, const std::string&>
133  (&ConfigBackendDHCPv4::getOption4, backend_selector, server_selector,
134  option, code, space);
135  return (option);
136 }
137 
139 ConfigBackendPoolDHCPv4::getAllOptions4(const BackendSelector& backend_selector,
140  const ServerSelector& server_selector) const {
141  OptionContainer options;
142  getAllPropertiesConst<OptionContainer>
143  (&ConfigBackendDHCPv4::getAllOptions4, backend_selector, server_selector,
144  options);
145  return (options);
146 }
147 
149 ConfigBackendPoolDHCPv4::getModifiedOptions4(const BackendSelector& backend_selector,
150  const ServerSelector& server_selector,
151  const boost::posix_time::ptime& modification_time) const {
152  OptionContainer options;
153  getMultiplePropertiesConst<OptionContainer, const boost::posix_time::ptime&>
154  (&ConfigBackendDHCPv4::getModifiedOptions4, backend_selector, server_selector,
155  options, modification_time);
156  return (options);
157 }
158 
160 ConfigBackendPoolDHCPv4::getGlobalParameter4(const BackendSelector& backend_selector,
161  const ServerSelector& server_selector,
162  const std::string& name) const {
163  StampedValuePtr parameter;
164  getPropertyPtrConst<StampedValuePtr, const std::string&>
165  (&ConfigBackendDHCPv4::getGlobalParameter4, backend_selector,
166  server_selector, parameter, name);
167  return (parameter);
168 }
169 
171 ConfigBackendPoolDHCPv4::getAllGlobalParameters4(const BackendSelector& backend_selector,
172  const ServerSelector& server_selector) const {
173  StampedValueCollection parameters;
174  getAllPropertiesConst<StampedValueCollection>
175  (&ConfigBackendDHCPv4::getAllGlobalParameters4, backend_selector,
176  server_selector, parameters);
177  return (parameters);
178 }
179 
181 ConfigBackendPoolDHCPv4::
182 getModifiedGlobalParameters4(const db::BackendSelector& backend_selector,
183  const db::ServerSelector& server_selector,
184  const boost::posix_time::ptime& modification_time) const {
185  StampedValueCollection parameters;
186  getMultiplePropertiesConst<StampedValueCollection, const boost::posix_time::ptime&>
187  (&ConfigBackendDHCPv4::getModifiedGlobalParameters4, backend_selector,
188  server_selector, parameters, modification_time);
189  return (parameters);
190 }
191 
192 void
193 ConfigBackendPoolDHCPv4::createUpdateSubnet4(const BackendSelector& backend_selector,
194  const ServerSelector& server_selector,
195  const Subnet4Ptr& subnet) {
196  createUpdateDeleteProperty<void, const Subnet4Ptr&>
197  (&ConfigBackendDHCPv4::createUpdateSubnet4, backend_selector,
198  server_selector, subnet);
199 }
200 
201 void
202 ConfigBackendPoolDHCPv4::createUpdateSharedNetwork4(const BackendSelector& backend_selector,
203  const ServerSelector& server_selector,
204  const SharedNetwork4Ptr& shared_network) {
205  createUpdateDeleteProperty<void, const SharedNetwork4Ptr&>
206  (&ConfigBackendDHCPv4::createUpdateSharedNetwork4, backend_selector,
207  server_selector, shared_network);
208 }
209 
210 void
211 ConfigBackendPoolDHCPv4::createUpdateOptionDef4(const BackendSelector& backend_selector,
212  const ServerSelector& server_selector,
213  const OptionDefinitionPtr& option_def) {
214  createUpdateDeleteProperty<void, const OptionDefinitionPtr&>
215  (&ConfigBackendDHCPv4::createUpdateOptionDef4, backend_selector,
216  server_selector, option_def);
217 }
218 
219 void
220 ConfigBackendPoolDHCPv4::createUpdateOption4(const BackendSelector& backend_selector,
221  const ServerSelector& server_selector,
222  const OptionDescriptorPtr& option) {
223  createUpdateDeleteProperty<void, const OptionDescriptorPtr&>
224  (&ConfigBackendDHCPv4::createUpdateOption4, backend_selector,
225  server_selector, option);
226 }
227 
228 void
229 ConfigBackendPoolDHCPv4::createUpdateOption4(const BackendSelector& backend_selector,
230  const ServerSelector& server_selector,
231  const std::string& shared_network_name,
232  const OptionDescriptorPtr& option) {
233  createUpdateDeleteProperty<void, const std::string&, const OptionDescriptorPtr&>
234  (&ConfigBackendDHCPv4::createUpdateOption4, backend_selector,
235  server_selector, shared_network_name, option);
236 }
237 
238 
239 void
240 ConfigBackendPoolDHCPv4::createUpdateOption4(const BackendSelector& backend_selector,
241  const ServerSelector& server_selector,
242  const SubnetID& subnet_id,
243  const OptionDescriptorPtr& option) {
244  createUpdateDeleteProperty<void, const SubnetID&, const OptionDescriptorPtr&>
245  (&ConfigBackendDHCPv4::createUpdateOption4, backend_selector,
246  server_selector, subnet_id, option);
247 }
248 
249 void
250 ConfigBackendPoolDHCPv4::createUpdateOption4(const BackendSelector& backend_selector,
251  const ServerSelector& server_selector,
252  const IOAddress& pool_start_address,
253  const IOAddress& pool_end_address,
254  const OptionDescriptorPtr& option) {
255  createUpdateDeleteProperty<void, const IOAddress&, const IOAddress&,
256  const OptionDescriptorPtr&>
257  (&ConfigBackendDHCPv4::createUpdateOption4, backend_selector,
258  server_selector, pool_start_address, pool_end_address, option);
259 }
260 
261 void
262 ConfigBackendPoolDHCPv4::createUpdateGlobalParameter4(const BackendSelector& backend_selector,
263  const ServerSelector& server_selector,
264  const StampedValuePtr& value) {
265  createUpdateDeleteProperty<void, const StampedValuePtr&>
266  (&ConfigBackendDHCPv4::createUpdateGlobalParameter4, backend_selector,
267  server_selector, value);
268 }
269 
270 uint64_t
271 ConfigBackendPoolDHCPv4::deleteSubnet4(const BackendSelector& backend_selector,
272  const ServerSelector& server_selector,
273  const std::string& subnet_prefix) {
274  return (createUpdateDeleteProperty<uint64_t, const std::string&>
275  (&ConfigBackendDHCPv4::deleteSubnet4, backend_selector, server_selector,
276  subnet_prefix));
277 }
278 
279 uint64_t
280 ConfigBackendPoolDHCPv4::deleteSubnet4(const BackendSelector& backend_selector,
281  const ServerSelector& server_selector,
282  const SubnetID& subnet_id) {
283  return (createUpdateDeleteProperty<uint64_t, const SubnetID&>
284  (&ConfigBackendDHCPv4::deleteSubnet4, backend_selector, server_selector,
285  subnet_id));
286 }
287 
288 uint64_t
289 ConfigBackendPoolDHCPv4::deleteAllSubnets4(const BackendSelector& backend_selector,
290  const ServerSelector& server_selector) {
291  return (createUpdateDeleteProperty<uint64_t>
292  (&ConfigBackendDHCPv4::deleteAllSubnets4, backend_selector, server_selector));
293 }
294 
295 uint64_t
296 ConfigBackendPoolDHCPv4::deleteSharedNetwork4(const BackendSelector& backend_selector,
297  const ServerSelector& server_selector,
298  const std::string& name) {
299  return (createUpdateDeleteProperty<uint64_t, const std::string&>
300  (&ConfigBackendDHCPv4::deleteSharedNetwork4, backend_selector,
301  server_selector, name));
302 }
303 
304 uint64_t
305 ConfigBackendPoolDHCPv4::deleteAllSharedNetworks4(const BackendSelector& backend_selector,
306  const ServerSelector& server_selector) {
307  return (createUpdateDeleteProperty<uint64_t>
308  (&ConfigBackendDHCPv4::deleteAllSharedNetworks4, backend_selector, server_selector));
309 }
310 
311 uint64_t
312 ConfigBackendPoolDHCPv4::deleteOptionDef4(const BackendSelector& backend_selector,
313  const ServerSelector& server_selector,
314  const uint16_t code,
315  const std::string& space) {
316  return (createUpdateDeleteProperty<uint64_t, uint16_t, const std::string&>
317  (&ConfigBackendDHCPv4::deleteOptionDef4, backend_selector,
318  server_selector, code, space));
319 }
320 
321 uint64_t
322 ConfigBackendPoolDHCPv4::deleteAllOptionDefs4(const BackendSelector& backend_selector,
323  const ServerSelector& server_selector) {
324  return (createUpdateDeleteProperty<uint64_t>
325  (&ConfigBackendDHCPv4::deleteAllOptionDefs4, backend_selector, server_selector));
326 }
327 
328 uint64_t
329 ConfigBackendPoolDHCPv4::deleteOption4(const BackendSelector& backend_selector,
330  const ServerSelector& server_selector,
331  const uint16_t code,
332  const std::string& space) {
333  return (createUpdateDeleteProperty<uint64_t, uint16_t, const std::string&>
334  (&ConfigBackendDHCPv4::deleteOption4, backend_selector, server_selector,
335  code, space));
336 }
337 
338 uint64_t
339 ConfigBackendPoolDHCPv4::deleteOption4(const BackendSelector& backend_selector,
340  const ServerSelector& server_selector,
341  const std::string& shared_network_name,
342  const uint16_t code,
343  const std::string& space) {
344  return (createUpdateDeleteProperty<uint64_t, const std::string&, uint16_t,
345  const std::string&>
346  (&ConfigBackendDHCPv4::deleteOption4, backend_selector, server_selector,
347  shared_network_name, code, space));
348 }
349 
350 uint64_t
351 ConfigBackendPoolDHCPv4::deleteOption4(const BackendSelector& backend_selector,
352  const ServerSelector& server_selector,
353  const SubnetID& subnet_id,
354  const uint16_t code,
355  const std::string& space) {
356  return (createUpdateDeleteProperty<uint64_t, const SubnetID&, uint16_t, const std::string&>
357  (&ConfigBackendDHCPv4::deleteOption4, backend_selector, server_selector,
358  subnet_id, code, space));
359 }
360 
361 uint64_t
362 ConfigBackendPoolDHCPv4::deleteOption4(const BackendSelector& backend_selector,
363  const ServerSelector& server_selector,
364  const asiolink::IOAddress& pool_start_address,
365  const asiolink::IOAddress& pool_end_address,
366  const uint16_t code,
367  const std::string& space) {
368  return (createUpdateDeleteProperty<uint64_t, const IOAddress&, const IOAddress&,
369  uint16_t, const std::string&>
370  (&ConfigBackendDHCPv4::deleteOption4, backend_selector, server_selector,
371  pool_start_address, pool_end_address, code, space));
372 }
373 
374 uint64_t
375 ConfigBackendPoolDHCPv4::deleteGlobalParameter4(const BackendSelector& backend_selector,
376  const ServerSelector& server_selector,
377  const std::string& name) {
378  return (createUpdateDeleteProperty<uint64_t, const std::string&>
379  (&ConfigBackendDHCPv4::deleteGlobalParameter4, backend_selector,
380  server_selector, name));
381 }
382 
383 uint64_t
384 ConfigBackendPoolDHCPv4::deleteAllGlobalParameters4(const BackendSelector& backend_selector,
385  const ServerSelector& server_selector) {
386  return (createUpdateDeleteProperty<uint64_t>
387  (&ConfigBackendDHCPv4::deleteAllGlobalParameters4, backend_selector,
388  server_selector));
389 }
390 
391 
392 } // end of namespace isc::dhcp
393 } // end of namespace isc
boost::shared_ptr< OptionDescriptor > OptionDescriptorPtr
A pointer to option descriptor.
Definition: cfg_option.h:132
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
Definition: subnet.h:464
boost::multi_index_container< SharedNetwork4Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SharedNetworkRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SharedNetworkNameIndexTag >, boost::multi_index::const_mem_fun< SharedNetwork4, std::string, &SharedNetwork4::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SharedNetworkServerIdIndexTag >, boost::multi_index::const_mem_fun< Network4, asiolink::IOAddress, &Network4::getServerId > > >> SharedNetwork4Collection
Multi index container holding shared networks.
boost::shared_ptr< StampedValue > StampedValuePtr
Pointer to the stamped value.
Definition: stamped_value.h:18
boost::multi_index_container< OptionDescriptor, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_non_unique< KeyFromKeyExtractor< boost::multi_index::const_mem_fun< Option, uint16_t, &Option::getType >, boost::multi_index::member< OptionDescriptor, OptionPtr, &OptionDescriptor::option_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::member< OptionDescriptor, bool, &OptionDescriptor::persistent_ > > >> OptionContainer
Multi index container for DHCP option descriptors.
Definition: cfg_option.h:203
Server selector for associating objects in a database with specific servers.
boost::shared_ptr< SharedNetwork4 > SharedNetwork4Ptr
Pointer to SharedNetwork4 object.
Defines the logger used by the top-level component of kea-dhcp-ddns.
boost::multi_index_container< Subnet4Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SubnetRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetSubnetIdIndexTag >, boost::multi_index::const_mem_fun< Subnet, SubnetID, &Subnet::getID > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetPrefixIndexTag >, boost::multi_index::const_mem_fun< Subnet, std::string, &Subnet::toText > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetServerIdIndexTag >, boost::multi_index::const_mem_fun< Network4, asiolink::IOAddress, &Network4::getServerId > > >> Subnet4Collection
A collection of Subnet4 objects.
Definition: subnet.h:798
Config Backend selector.
boost::shared_ptr< OptionDefinition > OptionDefinitionPtr
Pointer to option definition object.
std::vector< StampedValuePtr > StampedValueCollection
Collection of pointers to values.
Definition: stamped_value.h:24
boost::multi_index_container< OptionDefinitionPtr, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, uint16_t, &OptionDefinition::getCode > >, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, std::string, &OptionDefinition::getName > > >> OptionDefContainer
Multi index container for DHCP option definitions.
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24