From 3123ce01b5aab516843e58d466ac78377b2ceefe Mon Sep 17 00:00:00 2001 From: Zdenek Styblik Date: Sun, 10 Apr 2016 19:40:11 +0200 Subject: [PATCH] ID:322 - let 'ekanalyzer frushow' run without a working IPMI target Commit changes a dummy interface in a way that it acts as a dummy interface when no IPMI_DUMMY_SOCK env variable is set. Therefore, it's possible to run 'ekanalyzer frushow' without having BMC. Still, you need to specify this IPMI interface. If IPMI_DUMMY_SOCK is set, then dummy interface will work as it was working before. --- src/plugins/dummy/dummy.c | 17 ++++++++++++++++- src/plugins/dummy/dummy.h | 2 -- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/dummy/dummy.c b/src/plugins/dummy/dummy.c index 8bfc4cf..8600a84 100644 --- a/src/plugins/dummy/dummy.c +++ b/src/plugins/dummy/dummy.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -175,6 +176,14 @@ ipmi_dummyipmi_open(struct ipmi_intf *intf) struct sockaddr_un address; int len; int rc; + char *dummy_sock_path; + + dummy_sock_path = getenv("IPMI_DUMMY_SOCK"); + if (dummy_sock_path == NULL) { + lprintf(LOG_DEBUG, "No IPMI_DUMMY_SOCK set. Dummy mode ON."); + intf->opened = 1; + return intf->fd; + } if (intf->opened == 1) { return intf->fd; @@ -185,7 +194,7 @@ ipmi_dummyipmi_open(struct ipmi_intf *intf) return (-1); } address.sun_family = AF_UNIX; - strcpy(address.sun_path, DUMMY_SOCKET_PATH); + strcpy(address.sun_path, dummy_sock_path); len = sizeof(address); rc = connect(intf->fd, (struct sockaddr *)&address, len); if (rc != 0) { @@ -209,6 +218,12 @@ ipmi_dummyipmi_send_cmd(struct ipmi_intf *intf, struct ipmi_rq *req) static struct ipmi_rs rsp; struct dummy_rq req_dummy; struct dummy_rs rsp_dummy; + char *dummy_sock_path; + dummy_sock_path = getenv("IPMI_DUMMY_SOCK"); + if (dummy_sock_path == NULL) { + lprintf(LOG_DEBUG, "No IPMI_DUMMY_SOCK set. Dummy mode ON."); + return NULL; + } if (intf == NULL || intf->fd < 0 || intf->opened != 1) { lprintf(LOG_ERR, "dummy failed on intf check."); return NULL; diff --git a/src/plugins/dummy/dummy.h b/src/plugins/dummy/dummy.h index dac9caa..bbe3aa3 100644 --- a/src/plugins/dummy/dummy.h +++ b/src/plugins/dummy/dummy.h @@ -1,8 +1,6 @@ #ifndef IPMI_DUMMYIPMI_H # define IPMI_DUMMYIPMI_H -# define DUMMY_SOCKET_PATH "/tmp/.ipmi_dummy" - struct dummy_rq { struct { uint8_t netfn;