#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;
/**
* 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);
}
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;
}