]> git.itanic.dy.fi Git - rrdd/blobdiff - plugin_manager.c
plugins: Add version checking
[rrdd] / plugin_manager.c
index 1c33951d10860f6d93e969ebc9c35fd29b0cf458..6ddac4cda4bf3ff3130a21bccd24e333af54ed3b 100644 (file)
@@ -6,6 +6,7 @@
 #include "plugin_manager.h"
 #include "plugin.h"
 #include "debug.h"
+#include "version.h"
 
 static char *exec_path;
 
@@ -36,6 +37,19 @@ int load_plugin(const char *path)
                goto out;
        }
 
+       if (!info->version) {
+               pr_err("Plugin %s version info missing\n", path);
+               ret = -1;
+               goto out;
+       }
+
+       if (strcmp(RRDD_VERSION, info->version)) {
+               pr_err("Plugin %s version mismatch, expected %s, got %s\n",
+                       path, RRDD_VERSION, info->version);
+               ret = -1;
+               goto out;
+       }
+
        if (!info->init) {
                pr_err("Plugin info structure has NULL .init callback\n");
                goto out;