static void json_parse_subsys(nvme_host_t h, struct json_object *subsys_obj)
{
- struct json_object *nqn_obj, *port_array;
+ struct json_object *nqn_obj, *app_obj, *port_array;
nvme_subsystem_t s;
const char *nqn;
int p;
return;
nqn = json_object_get_string(nqn_obj);
s = nvme_lookup_subsystem(h, NULL, nqn);
+ if (!s)
+ return;
+ app_obj = json_object_object_get(subsys_obj, "application");
+ if (app_obj)
+ nvme_subsystem_set_application(s, json_object_get_string(app_obj));
+
port_array = json_object_object_get(subsys_obj, "ports");
if (!port_array)
return;
nvme_subsystem_t s)
{
nvme_ctrl_t c;
- const char *subsysnqn = nvme_subsystem_get_nqn(s);
+ const char *subsysnqn = nvme_subsystem_get_nqn(s), *app;
struct json_object *subsys_obj = json_object_new_object();
struct json_object *port_array;
json_object_object_add(subsys_obj, "nqn",
json_object_new_string(subsysnqn));
+ app = nvme_subsystem_get_application(s);
+ if (app)
+ json_object_object_add(subsys_obj, "application",
+ json_object_new_string(app));
port_array = json_object_new_array();
nvme_subsystem_for_each_ctrl(s, c) {
json_update_port(port_array, c);
return s->subsystype;
}
+const char *nvme_subsystem_get_application(nvme_subsystem_t s)
+{
+ return s->application;
+}
+
+void nvme_subsystem_set_application(nvme_subsystem_t s, const char *a)
+{
+ if (s->application)
+ free(s->application);
+ if (a)
+ s->application = strdup(a);
+}
+
nvme_ctrl_t nvme_subsystem_first_ctrl(nvme_subsystem_t s)
{
return list_top(&s->ctrls, struct nvme_ctrl, entry);
*/
const char *nvme_subsystem_get_type(nvme_subsystem_t s);
+/**
+ * nvme_subsystem_get_application() - Return the application string
+ * @s: nvme_subsystem_t object
+ *
+ * Return: Managing application string or NULL if not set.
+ */
+const char *nvme_subsystem_get_application(nvme_subsystem_t s);
+
+/**
+ * nvme_subsystem_set_application() - Set the application string
+ * @s: nvme_subsystem_t object
+ * @a: application string
+ *
+ * Sets the managing application string for @s.
+ */
+void nvme_subsystem_set_application(nvme_subsystem_t s, const char *a);
+
/**
* nvme_scan_topology() - Scan NVMe topology and apply filter
* @r: nvme_root_t object