Implement Host Console socket Init

This API would initialise the host console socket file descriptor

Change-Id: Ied7bdc1c4fbee060ec693d8bab3c7bade6edf365
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/sol/sol_manager.cpp b/sol/sol_manager.cpp
new file mode 100644
index 0000000..d26193b
--- /dev/null
+++ b/sol/sol_manager.cpp
@@ -0,0 +1,44 @@
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <cmath>
+#include <phosphor-logging/log.hpp>
+#include "main.hpp"
+#include "sol_context.hpp"
+#include "sol_manager.hpp"
+
+namespace sol
+{
+
+using namespace phosphor::logging;
+
+void Manager::initHostConsoleFd()
+{
+    struct sockaddr_un addr;
+    int rc = 0;
+    int fd = 0;
+
+    fd = socket(AF_UNIX, SOCK_STREAM, 0);
+    if (fd < 0)
+    {
+        log<level::ERR>("Failed to open the host console socket",
+                entry("ERRNO=%d", errno));
+        throw std::runtime_error("Failed to open the host console socket");
+    }
+
+    memset(&addr, 0, sizeof(addr));
+    addr.sun_family = AF_UNIX;
+    memcpy(&addr.sun_path, &CONSOLE_SOCKET_PATH, CONSOLE_SOCKET_PATH_LEN);
+    consoleFD = std::make_unique<CustomFD>(fd);
+    auto& conFD = *(consoleFD.get());
+
+    rc = connect(conFD(), (struct sockaddr *)&addr, sizeof(addr));
+    if (rc < 0)
+    {
+        log<level::ERR>("Failed to connect to host console socket address",
+                entry("ERRNO=%d", errno));
+        consoleFD.reset();
+        throw std::runtime_error("Failed to connect to console server");
+    }
+}
+
+} // namespace sol