*id = strdup(containerId.c_str());
mStatus = Status();
- return vsm_get_status();;
+ return vsm_get_status();
+}
+
+VsmStatus Client::vsm_lookup_domain_by_id(const char*, VsmDomain*) noexcept
+{
+ mStatus = Status(VSMCLIENT_OTHER_ERROR, "Not implemented");
+ return vsm_get_status();
+}
+
+VsmStatus Client::vsm_lookup_domain_by_terminal_id(int, VsmString*) noexcept
+{
+ mStatus = Status(VSMCLIENT_OTHER_ERROR, "Not implemented");
+ return vsm_get_status();
}
VsmStatus Client::vsm_set_active_container(const char* id) noexcept
VsmStatus vsm_lookup_domain_by_pid(int pid, VsmString* id) noexcept;
/**
+ * @see ::vsm_lookup_domain_by_id
+ */
+ VsmStatus vsm_lookup_domain_by_id(const char* id, VsmDomain* domain) noexcept;
+
+ /**
+ * @see ::vsm_lookup_domain_by_terminal_id
+ */
+ VsmStatus vsm_lookup_domain_by_terminal_id(int terminal, VsmString* id) noexcept;
+
+ /**
* @see ::vsm_set_active_container
*/
VsmStatus vsm_set_active_container(const char* id) noexcept;
free(string);
}
+API void vsm_domain_free(VsmDomain domain)
+{
+ free(domain->rootfs_path);
+ free(domain->id);
+ free(domain);
+}
API void vsm_client_free(VsmClient client)
{
return getClient(client).vsm_lookup_domain_by_pid(pid, id);
}
+API VsmStatus vsm_lookup_domain_by_id(VsmClient client, const char* id, VsmDomain* domain)
+{
+ return getClient(client).vsm_lookup_domain_by_id(id, domain);
+}
+
+API VsmStatus vsm_lookup_domain_by_terminal_id(VsmClient client, int terminal, VsmString* id)
+{
+ return getClient(client).vsm_lookup_domain_by_terminal_id(terminal, id);
+}
+
API VsmStatus vsm_set_active_container(VsmClient client, const char* id)
{
return getClient(client).vsm_set_active_container(id);
typedef unsigned int VsmSubscriptionId;
/**
+ * States of domain
+ */
+typedef enum {
+ STOPPED,
+ STARTING,
+ RUNNING,
+ STOPPING,
+ ABORTING,
+ FREEZING,
+ FROZEN,
+ THAWED,
+ LOCKED,
+ MAX_STATE,
+ ACTIVATING = 128
+} VsmDomainState;
+
+/**
+ * Domain information structure
+ */
+struct VsmDomainStructure {
+ char* id;
+ int terminal;
+ VsmDomainState state;
+ char *rootfs_path;
+};
+
+/**
+ * Domain information
+ */
+typedef VsmDomainStructure* VsmDomain;
+
+/**
* Start glib loop.
*
* Do not call this function if an application creates a glib loop itself.
*/
void vsm_string_free(VsmString string);
+/**
+ * Release VsmDomain
+ *
+ * @param domain VsmDomain
+ */
+void vsm_domain_free(VsmDomain domain);
/**
* @name Host API
VsmStatus vsm_lookup_domain_by_pid(VsmClient client, int pid, VsmString* id);
/**
+ * Get domain informations of domain with given id.
+ *
+ * @param[in] client security-containers-server's client
+ * @param[in] id domain name
+ * @param[out] domain domain informations
+ * @return status of this function call
+ * @remark Use @p vsm_doamin_free() to free memory occupied by @p domain
+ */
+VsmStatus vsm_lookup_domain_by_id(VsmClient client, const char* id, VsmDomain* domain);
+
+/**
+ * Get domain name with given terminal.
+ *
+ * @param[in] client security-containers-server's client
+ * @param[in] terminal terminal id
+ * @param[out] id domain name with given terminal
+ * @return status of this function call
+ * @remark Use @p vsm_string_free() to free memory occupied by @p id.
+ */
+VsmStatus vsm_lookup_domain_by_terminal_id(VsmClient client, int terminal, VsmString* id);
+
+/**
* Set active (foreground) container.
*
* @param[in] client security-containers-server's client