We will need some convenient helper functions for managing sysfs-entries
for fibre channel-backed devices. Let's implement them and make them
available in the private API.
Signed-off-by: Bjoern Walk <bwalk@linux.vnet.ibm.com>
---
po/POTFILES.in | 1 +
src/Makefile.am | 1 +
src/libvirt_private.syms | 5 +++
src/util/virfcp.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++
src/util/virfcp.h | 34 +++++++++++++++++
5 files changed, 139 insertions(+)
create mode 100644 src/util/virfcp.c
create mode 100644 src/util/virfcp.h
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 5077857b0..142b4d337 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -206,6 +206,7 @@ src/util/virdnsmasq.c
src/util/virerror.c
src/util/virerror.h
src/util/vireventpoll.c
+src/util/virfcp.c
src/util/virfdstream.c
src/util/virfile.c
src/util/virfirewall.c
diff --git a/src/Makefile.am b/src/Makefile.am
index f95f30e2f..0b7cfc89a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -117,6 +117,7 @@ UTIL_SOURCES = \
util/virerror.c util/virerror.h \
util/virevent.c util/virevent.h \
util/vireventpoll.c util/vireventpoll.h \
+ util/virfcp.c util/virfcp.h \
util/virfdstream.c util/virfdstream.h \
util/virfile.c util/virfile.h \
util/virfirewall.c util/virfirewall.h \
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index d361454d5..429b095bb 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1586,6 +1586,11 @@ virEventPollUpdateHandle;
virEventPollUpdateTimeout;
+# util/virfcp.h
+virFCIsCapableRport;
+virFCReadRportValue;
+
+
# util/virfdstream.h
virFDStreamConnectUNIX;
virFDStreamCreateFile;
diff --git a/src/util/virfcp.c b/src/util/virfcp.c
new file mode 100644
index 000000000..3c7fab917
--- /dev/null
+++ b/src/util/virfcp.c
@@ -0,0 +1,98 @@
+/*
+ * virfcp.c: Utility functions for the Fibre Channel Protocol
+ *
+ * Copyright (C) 2017 IBM Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Author: Bjoern Walk <bwalk@linux.vnet.ibm.com>
+ */
+
+#include <config.h>
+
+#include "internal.h"
+
+#include "viralloc.h"
+#include "virfile.h"
+#include "virstring.h"
+
+#include "virfcp.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+#ifdef __linux__
+
+# define SYSFS_FC_RPORT_PATH "/sys/class/fc_remote_ports"
+
+bool
+virFCIsCapableRport(const char *rport)
+{
+ bool ret = false;
+ char *path = NULL;
+
+ if (virBuildPath(&path, SYSFS_FC_RPORT_PATH, rport) < 0)
+ return false;
+
+ ret = virFileExists(path);
+ VIR_FREE(path);
+
+ return ret;
+}
+
+int
+virFCReadRportValue(const char *rport,
+ const char *entry,
+ char **result)
+{
+ int ret = -1;
+ char *buf = NULL, *p = NULL;
+
+ if (virFileReadValueString(&buf, "%s/%s/%s",
+ SYSFS_FC_RPORT_PATH, rport, entry) < 0) {
+ return -1;
+ }
+
+ if ((p = strchr(buf, '\n')))
+ *p = '\0';
+
+ if (VIR_STRDUP(*result, buf) < 0)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(buf);
+ return ret;
+}
+
+#else
+
+bool
+virSysfsIsCapableFCRport(const char *rport ATTRIBUTE_UNUSED)
+{
+ virReportSystemError(ENOSYS, "%s", _("Not supported on this platform"));
+ return false;
+}
+
+int
+virSysfsReadFCRport(const char *rport ATTRIBUTE_UNUSED,
+ const char *entry ATTRIBUTE_UNUSED,
+ char **result ATTRIBUTE_UNUSED)
+{
+ virReportSystemError(ENOSYS, "%s", _("Not supported on this platform"));
+ return -1;
+}
+
+#endif
diff --git a/src/util/virfcp.h b/src/util/virfcp.h
new file mode 100644
index 000000000..2bc05387a
--- /dev/null
+++ b/src/util/virfcp.h
@@ -0,0 +1,34 @@
+/*
+ * virfcp.h: Utility functions for the Fibre Channel Protocol
+ *
+ * Copyright (C) 2017 IBM Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Author: Bjoern Walk <bwalk@linux.vnet.ibm.com>
+ */
+
+#ifndef __VIR_FCP_H__
+# define __VIR_FCP_H__
+
+bool
+virFCIsCapableRport(const char *rport);
+
+int
+virFCReadRportValue(const char *rport,
+ const char *entry,
+ char **result);
+
+#endif
--
2.11.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On 05/22/2017 02:38 AM, Bjoern Walk wrote: > We will need some convenient helper functions for managing sysfs-entries > for fibre channel-backed devices. Let's implement them and make them > available in the private API. > > Signed-off-by: Bjoern Walk <bwalk@linux.vnet.ibm.com> > --- > po/POTFILES.in | 1 + > src/Makefile.am | 1 + > src/libvirt_private.syms | 5 +++ > src/util/virfcp.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ > src/util/virfcp.h | 34 +++++++++++++++++ > 5 files changed, 139 insertions(+) > create mode 100644 src/util/virfcp.c > create mode 100644 src/util/virfcp.h > Reviewed-by: John Ferlan <jferlan@redhat.com> John -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
John Ferlan <jferlan@redhat.com> [2017-05-25, 03:23PM -0400]: > > >On 05/22/2017 02:38 AM, Bjoern Walk wrote: >> We will need some convenient helper functions for managing sysfs-entries >> for fibre channel-backed devices. Let's implement them and make them >> available in the private API. >> >> Signed-off-by: Bjoern Walk <bwalk@linux.vnet.ibm.com> >> --- >> po/POTFILES.in | 1 + >> src/Makefile.am | 1 + >> src/libvirt_private.syms | 5 +++ >> src/util/virfcp.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ >> src/util/virfcp.h | 34 +++++++++++++++++ >> 5 files changed, 139 insertions(+) >> create mode 100644 src/util/virfcp.c >> create mode 100644 src/util/virfcp.h >> > >Reviewed-by: John Ferlan <jferlan@redhat.com> > Thanks. >John > >-- >libvir-list mailing list >libvir-list@redhat.com >https://www.redhat.com/mailman/listinfo/libvir-list > -- IBM Systems Linux on z Systems & Virtualization Development ------------------------------------------------------------------------ IBM Deutschland Schönaicher Str. 220 71032 Böblingen Phone: +49 7031 16 1819 E-Mail: bwalk@de.ibm.com ------------------------------------------------------------------------ IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2026 Red Hat, Inc.