make DHCP debug messages consistent
[strongswan.git] / src / libcharon / plugins / dhcp / dhcp_plugin.c
index 0f7ab04..829fd63 100644 (file)
 
 #include "dhcp_plugin.h"
 
+#include <hydra.h>
 #include <daemon.h>
 
+#include "dhcp_socket.h"
+#include "dhcp_provider.h"
+
 typedef struct private_dhcp_plugin_t private_dhcp_plugin_t;
 
 /**
@@ -28,11 +32,25 @@ struct private_dhcp_plugin_t {
         * implements plugin interface
         */
        dhcp_plugin_t public;
+
+       /**
+        * DHCP communication socket
+        */
+       dhcp_socket_t *socket;
+
+       /**
+        * Attribute provider
+        */
+       dhcp_provider_t *provider;
 };
 
 METHOD(plugin_t, destroy, void,
        private_dhcp_plugin_t *this)
 {
+       hydra->attributes->remove_provider(hydra->attributes,
+                                                                          &this->provider->provider);
+       this->provider->destroy(this->provider);
+       this->socket->destroy(this->socket);
        free(this);
 }
 
@@ -45,8 +63,19 @@ plugin_t *dhcp_plugin_create()
 
        INIT(this,
                .public.plugin.destroy = _destroy,
+               .socket = dhcp_socket_create(),
        );
 
+       if (!this->socket)
+       {
+               free(this);
+               return NULL;
+       }
+
+       this->provider = dhcp_provider_create(this->socket);
+       hydra->attributes->add_provider(hydra->attributes,
+                                                                       &this->provider->provider);
+
        return &this->public.plugin;
 }