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/Makefile.am b/Makefile.am
index d1a1bd8..6843a7e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -44,7 +44,8 @@
sd_event_loop.hpp \
sol/sol_context.hpp \
sol/sol_manager.hpp \
- sd_event_loop.cpp
+ sd_event_loop.cpp \
+ sol/sol_manager.cpp
netipmid_CPPFLAGS = -DNET_IPMID_LIB_PATH=\"/usr/lib/net-ipmid/\"
netipmid_LDFLAGS = $(SYSTEMD_LIBS) $(CRYPTO_LIBS) $(libmapper_LIBS) $(PHOSPHOR_LOGGING_LIBS) $(LIBADD_DLOPEN) -export-dynamic
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