]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
libnvme: add 'application' setting to nvme_root
authorHannes Reinecke <hare@suse.de>
Thu, 20 Apr 2023 10:10:17 +0000 (12:10 +0200)
committerDaniel Wagner <wagi@monom.org>
Mon, 12 Jun 2023 14:51:15 +0000 (16:51 +0200)
Add an 'application' string to the tree root to indicate which
application manages this configuration.

Signed-off-by: Hannes Reinecke <hare@suse.de>
libnvme/nvme.i
src/libnvme.map
src/nvme/private.h
src/nvme/tree.c
src/nvme/tree.h

index 2d39a5d92060cff37a79e2791672812c4f98d292..eb94cac8d0b91065fb5e08ab7795bd79aa482ae2 100644 (file)
@@ -326,7 +326,9 @@ PyObject *hostid_from_file();
 
 struct nvme_root {
        %immutable config_file;
+       %immutable application;
        char *config_file;
+       char *application;
 };
 
 struct nvme_host {
index 47ac71051766f17bc892aafca292d67b59522c65..9d6e64664585614f1c71f7da10ea63bab4882d5d 100644 (file)
@@ -5,6 +5,8 @@ LIBNVME_1_5 {
                nvme_ipaddrs_eq;
                nvme_nbft_free;
                nvme_nbft_read;
+               nvme_root_get_application;
+               nvme_root_set_application;
                nvme_subsystem_get_application;
                nvme_subsystem_set_application;
 };
index 8fa9ccdcf5b9d33578400b289d81bc5c376ca401..10f55f092daa31591ed91fc040a8501f2c40e17f 100644 (file)
@@ -155,6 +155,7 @@ struct nvme_fabric_options {
 
 struct nvme_root {
        char *config_file;
+       char *application;
        struct list_head hosts;
        struct list_head endpoints; /* MI endpoints */
        FILE *fp;
index 6f4e4bd1b9542e03a9ab5f38d00c9f2b943f4bd9..baa5fa6566a59b3009f094ed66c102025046fb4a 100644 (file)
@@ -197,6 +197,19 @@ int nvme_dump_tree(nvme_root_t r)
        return json_dump_tree(r);
 }
 
+const char *nvme_root_get_application(nvme_root_t r)
+{
+       return r->application;
+}
+
+void nvme_root_set_application(nvme_root_t r, const char *a)
+{
+       if (r->application)
+               free(r->application);
+       if (a)
+               r->application = strdup(a);
+}
+
 nvme_host_t nvme_first_host(nvme_root_t r)
 {
        return list_top(&r->hosts, struct nvme_host, entry);
@@ -293,6 +306,8 @@ void nvme_free_tree(nvme_root_t r)
                __nvme_free_host(h);
        if (r->config_file)
                free(r->config_file);
+       if (r->application)
+               free(r->application);
        free(r);
 }
 
@@ -404,6 +419,8 @@ static void __nvme_free_subsystem(struct nvme_subsystem *s)
                free(s->firmware);
        if (s->subsystype)
                free(s->subsystype);
+       if (s->application)
+               free(s->application);
        free(s);
 }
 
index 57d2767e2f3eeda467e42616615925e21c492fb8..5e05ba692269f612a6e0ec9378186bd1d4b6d1bc 100644 (file)
@@ -44,6 +44,23 @@ typedef bool (*nvme_scan_filter_t)(nvme_subsystem_t, nvme_ctrl_t,
  */
 nvme_root_t nvme_create_root(FILE *fp, int log_level);
 
+/**
+ * nvme_root_set_application - Specify managing application
+ * @r: &nvme_root_t object
+ * @a: Application string
+ *
+ * Sets the managing application string for @r.
+ */
+void nvme_root_set_application(nvme_root_t r, const char *a);
+
+/**
+ * nvme_root_get_application - Get managing application
+ * @r: &nvme_root_t object
+ *
+ * Returns the managing application string for @r or NULL if not set.
+ */
+const char *nvme_root_get_application(nvme_root_t r);
+
 /**
  * nvme_free_tree() - Free root object
  * @r: &nvme_root_t object