Lines Matching defs:plugin
74 * 'src' is a filename. Prepend default plugin directory path.
106 "plugin '%s': %s",
122 ns_plugin_t *plugin = NULL;
129 plugin = isc_mem_get(mctx, sizeof(*plugin));
130 *plugin = (ns_plugin_t){
134 isc_mem_attach(mctx, &plugin->mctx);
136 ISC_LINK_INIT(plugin, link);
138 r = uv_dlopen(modpath, &plugin->handle);
140 const char *errmsg = uv_dlerror(&plugin->handle);
146 "failed to dlopen() plugin '%s': %s", modpath,
151 CHECK(load_symbol(&plugin->handle, modpath, "plugin_version",
160 "plugin API version mismatch: %d/%d", version,
165 CHECK(load_symbol(&plugin->handle, modpath, "plugin_check",
166 (void **)&plugin->check_func));
167 CHECK(load_symbol(&plugin->handle, modpath, "plugin_register",
168 (void **)&plugin->register_func));
169 CHECK(load_symbol(&plugin->handle, modpath, "plugin_destroy",
170 (void **)&plugin->destroy_func));
172 *pluginp = plugin;
179 "failed to dynamically load plugin '%s': %s", modpath,
182 unload_plugin(&plugin);
189 ns_plugin_t *plugin = NULL;
193 plugin = *pluginp;
197 ISC_LOG_DEBUG(1), "unloading plugin '%s'",
198 plugin->modpath);
200 if (plugin->inst != NULL) {
201 plugin->destroy_func(&plugin->inst);
204 uv_dlclose(&plugin->handle);
205 isc_mem_free(plugin->mctx, plugin->modpath);
206 isc_mem_putanddetach(&plugin->mctx, plugin, sizeof(*plugin));
215 ns_plugin_t *plugin = NULL;
222 ISC_LOG_INFO, "loading plugin '%s'", modpath);
224 CHECK(load_plugin(mctx, modpath, &plugin));
227 ISC_LOG_INFO, "registering plugin '%s'", modpath);
229 CHECK(plugin->register_func(parameters, cfg, cfg_file, cfg_line, mctx,
231 &plugin->inst));
233 ISC_LIST_APPEND(*(ns_plugins_t *)view->plugins, plugin, link);
236 if (result != ISC_R_SUCCESS && plugin != NULL) {
237 unload_plugin(&plugin);
248 ns_plugin_t *plugin = NULL;
250 CHECK(load_plugin(mctx, modpath, &plugin));
252 result = plugin->check_func(parameters, cfg, cfg_file, cfg_line, mctx,
256 if (plugin != NULL) {
257 unload_plugin(&plugin);
351 ns_plugin_t *plugin = NULL, *next = NULL;
358 for (plugin = ISC_LIST_HEAD(*list); plugin != NULL; plugin = next) {
359 next = ISC_LIST_NEXT(plugin, link);
360 ISC_LIST_UNLINK(*list, plugin, link);
361 unload_plugin(&plugin);