]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1848] Skeleton methods for client classes in v4
authorTomek Mrugalski <tomek@isc.org>
Fri, 22 Oct 2021 10:57:20 +0000 (12:57 +0200)
committerTomek Mrugalski <tomek@isc.org>
Wed, 17 Nov 2021 14:35:18 +0000 (15:35 +0100)
src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.cc
src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.h

index 7f2c9e9cbee30a4dd03eff1261277bc8ebf9094b..fa8a85051e97aef4dae35442414ade203934e581 100644 (file)
@@ -1834,8 +1834,9 @@ bool
 PgSqlConfigBackendDHCPv4::registerBackendType() {
     LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_REGISTER_BACKEND_TYPE4);
     return (
-        dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory("mysql",
+        dhcp::ConfigBackendDHCPv4Mgr::instance().registerBackendFactory("pgsql",
             [](const db::DatabaseConnection::ParameterMap& params) -> dhcp::ConfigBackendDHCPv4Ptr {
+            // Many virtual function still missing
             return (dhcp::PgSqlConfigBackendDHCPv4Ptr(new dhcp::PgSqlConfigBackendDHCPv4(params)));
         })
     );
@@ -1844,8 +1845,44 @@ PgSqlConfigBackendDHCPv4::registerBackendType() {
 void
 PgSqlConfigBackendDHCPv4::unregisterBackendType() {
     LOG_DEBUG(pgsql_cb_logger, DBGLVL_TRACE_BASIC, PGSQL_CB_UNREGISTER_BACKEND_TYPE4);
-    dhcp::ConfigBackendDHCPv4Mgr::instance().unregisterBackendFactory("mysql");
+    dhcp::ConfigBackendDHCPv4Mgr::instance().unregisterBackendFactory("pgsql");
 }
 
+void
+PgSqlConfigBackendDHCPv4::createUpdateClientClass4(const db::ServerSelector& server_selector,
+                          const ClientClassDefPtr& client_class,
+                          const std::string& follow_class_name) {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+ClientClassDefPtr
+PgSqlConfigBackendDHCPv4::getClientClass4(const db::ServerSelector& selector,
+                                          const std::string& name) const {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+ClientClassDictionary
+PgSqlConfigBackendDHCPv4::getAllClientClasses4(const db::ServerSelector& selector) const {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+ClientClassDictionary
+PgSqlConfigBackendDHCPv4::getModifiedClientClasses4(const db::ServerSelector& selector,
+                          const boost::posix_time::ptime& modification_time) const {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+uint64_t
+PgSqlConfigBackendDHCPv4::deleteClientClass4(const db::ServerSelector& server_selector,
+                    const std::string& name) {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+uint64_t
+PgSqlConfigBackendDHCPv4::deleteAllClientClasses4(const db::ServerSelector& server_selector) {
+    isc_throw(NotImplemented, "Not implemented yet.");
+}
+
+
 } // end of namespace isc::dhcp
 } // end of namespace isc
index 6530faf3f87e756b49a339c08890c2060be486e6..8be71ac6b28eb79886d9e29b87d491b19b2c3625 100644 (file)
@@ -348,6 +348,19 @@ public:
     virtual void
     createUpdateServer4(const db::ServerPtr& server);
 
+    /// @brief Creates or updates DHCPv4 client class.
+    ///
+    /// @param server_selector Server selector.
+    /// @param client_class Client class to be added or updated.
+    /// @param follow_class_name name of the class after which the
+    /// new or updated class should be positioned. An empty value
+    /// causes the class to be appended at the end of the class
+    /// hierarchy.
+    virtual void
+    createUpdateClientClass4(const db::ServerSelector& server_selector,
+                             const ClientClassDefPtr& client_class,
+                             const std::string& follow_class_name);
+
     /// @brief Deletes subnet by prefix.
     ///
     /// @param server_selector Server selector.
@@ -495,6 +508,47 @@ public:
     virtual uint64_t
     deleteAllGlobalParameters4(const db::ServerSelector& server_selector);
 
+    /// @brief Retrieves a client class by name.
+    ///
+    /// @param selector Server selector.
+    /// @param name Client class name.
+    /// @return Pointer to the retrieved client class.
+    virtual ClientClassDefPtr
+    getClientClass4(const db::ServerSelector& selector, const std::string& name) const;
+
+    /// @brief Retrieves all client classes.
+    ///
+    /// @param selector Server selector.
+    /// @return Collection of client classes.
+    virtual ClientClassDictionary
+    getAllClientClasses4(const db::ServerSelector& selector) const;
+
+    /// @brief Retrieves client classes modified after specified time.
+    ///
+    /// @param selector Server selector.
+    /// @param modification_time Modification time.
+    /// @return Collection of client classes.
+    virtual ClientClassDictionary
+    getModifiedClientClasses4(const db::ServerSelector& selector,
+                              const boost::posix_time::ptime& modification_time) const;
+
+    /// @brief Deletes DHCPv4 client class.
+    ///
+    /// @param server_selector Server selector.
+    /// @param name Name of the class to be deleted.
+    /// @return Number of deleted client classes.
+    virtual uint64_t
+    deleteClientClass4(const db::ServerSelector& server_selector,
+                       const std::string& name);
+
+    /// @brief Deletes all client classes.
+    ///
+    /// @param server_selector Server selector.
+    /// @return Number of deleted client classes.
+    virtual uint64_t
+    deleteAllClientClasses4(const db::ServerSelector& server_selector);
+
+
     /// @brief Deletes a server from the backend.
     ///
     /// @param server_tag Tag of the server to be deleted.
@@ -550,6 +604,8 @@ public:
     /// otherwise
     virtual bool isUnusable();
 
+
+
 protected:
 
     /// @brief Pointer to the implementation of the @c PgSqlConfigBackendDHCPv4