summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Joseph <tomjoseph@in.ibm.com>2017-03-14 18:04:22 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-04-24 11:22:15 -0500
commit22c5ad34cd1be9e77f25a71c4fc88e2627117c8c (patch)
tree617dc903aaf6f96a4b44dfd5079f216d473c46e5
parenta891eb7e5778cf45c332f1bc490f3f45ad64b203 (diff)
downloadphosphor-net-ipmid-22c5ad34cd1be9e77f25a71c4fc88e2627117c8c.tar.gz
phosphor-net-ipmid-22c5ad34cd1be9e77f25a71c4fc88e2627117c8c.zip
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>
-rw-r--r--Makefile.am3
-rw-r--r--sol/sol_manager.cpp44
2 files changed, 46 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index d1a1bd8..6843a7e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -44,7 +44,8 @@ netipmid_SOURCES = \
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
OpenPOWER on IntegriCloud