From 93ea8130081b8450981320c7c4e7b1b65a75f269 Mon Sep 17 00:00:00 2001
From: Thilo Boehm <tboehm@linux.vnet.ibm.com>
Date: Wed, 11 Sep 2013 16:45:36 +0200
Subject: [PATCH 16/60] schema: New SVPC types for chardev/consoles

C definitions for the console source types, defining the representation
of the consoles in the hypervisor host. Includes mapping from and to
string representations.

Signed-off-by: Thilo Boehm <tboehm@linux.vnet.ibm.com>
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>
Signed-off-by: John Ferlan <jferlan@redhat.com>
---
 src/svpc_types.h | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 96 insertions(+), 1 deletion(-)

diff --git a/src/svpc_types.h b/src/svpc_types.h
index 99dd56f..2e4d73f 100644
--- a/src/svpc_types.h
+++ b/src/svpc_types.h
@@ -1,5 +1,5 @@
 /*
- * Copyright IBM Corp. 2007
+ * Copyright IBM Corp. 2007, 2013
  *
  * Authors:
  *  Dan Smith <danms@us.ibm.com>
@@ -167,5 +167,100 @@ enum CIM_op_status {
         CIM_OP_STATUS_POWER_MODE = 18,
 };

+/* emum for the Character device Source resource types */
+enum CIM_chardev_source_type {
+        CIM_CHARDEV_SOURCE_TYPE_NULL = 0,
+        CIM_CHARDEV_SOURCE_TYPE_VC = 1,
+        CIM_CHARDEV_SOURCE_TYPE_PTY = 2,
+        CIM_CHARDEV_SOURCE_TYPE_DEV = 3,
+        CIM_CHARDEV_SOURCE_TYPE_FILE = 4,
+        CIM_CHARDEV_SOURCE_TYPE_PIPE = 5,
+        CIM_CHARDEV_SOURCE_TYPE_STDIO = 6,
+        CIM_CHARDEV_SOURCE_TYPE_UDP = 7,
+        CIM_CHARDEV_SOURCE_TYPE_TCP = 8,
+        CIM_CHARDEV_SOURCE_TYPE_UNIXSOCK = 9,
+        CIM_CHARDEV_SOURCE_TYPE_SPICEVMC = 10,
+        /* please insert new source types above */
+        CIM_CHARDEV_SOURCE_TYPE_INVALIDTYPE,
+        CIM_CHARDEV_SOURCE_TYPE_UNKNOWN = 32768,
+};
+
+static inline int chardev_source_type_StrToID(const char *type_str)
+{
+        int rc = CIM_CHARDEV_SOURCE_TYPE_UNKNOWN;
+
+        if (type_str == NULL)
+                return rc;
+
+        if (STREQC(type_str, "null"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_NULL;
+        else if (STREQC(type_str, "vc"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_VC;
+        else if (STREQC(type_str, "pty"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_PTY;
+        else if (STREQC(type_str, "dev"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_DEV;
+        else if (STREQC(type_str, "file"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_FILE;
+        else if (STREQC(type_str, "pipe"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_PIPE;
+        else if (STREQC(type_str, "stdio"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_STDIO;
+        else if (STREQC(type_str, "udp"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_UDP;
+        else if (STREQC(type_str, "tcp"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_TCP;
+        else if (STREQC(type_str, "unix"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_UNIXSOCK;
+        else if (STREQC(type_str, "spicevmc"))
+                 rc = CIM_CHARDEV_SOURCE_TYPE_SPICEVMC;
+
+        return rc;
+}
+
+static inline const char* chardev_source_type_IDToStr(int type)
+{
+        char *type_str = NULL;
+
+        switch (type)
+        {
+        case CIM_CHARDEV_SOURCE_TYPE_NULL:
+                type_str = "null";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_VC:
+                type_str = "vc";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_PTY:
+                type_str = "pty";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_DEV:
+                type_str = "dev";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_FILE:
+                type_str = "file";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_PIPE:
+                type_str = "pipe";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_STDIO:
+                type_str = "stdio";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_UDP:
+                type_str = "udp";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_TCP:
+                type_str = "tcp";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_UNIXSOCK:
+                type_str = "unix";
+                break;
+        case CIM_CHARDEV_SOURCE_TYPE_SPICEVMC:
+                type_str = "spicevmc";
+                break;
+        default:
+                break;
+        }
+        return type_str;
+}

 #endif
--
2.1.0
