This stops libvirt trying to connect to a non-existing libvirtd on the
ESX server.
---
src/Makefile.am | 1 +
src/esx/esx_driver.c | 4 +-
src/esx/esx_nwfilter_driver.c | 86 +++++++++++++++++++++++++++++++++++++++++
src/esx/esx_nwfilter_driver.h | 29 ++++++++++++++
4 files changed, 119 insertions(+), 1 deletions(-)
create mode 100644 src/esx/esx_nwfilter_driver.c
create mode 100644 src/esx/esx_nwfilter_driver.h
diff --git a/src/Makefile.am b/src/Makefile.am
index df577ea..66dc349 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -247,6 +247,7 @@ ESX_DRIVER_SOURCES = \
esx/esx_storage_driver.c esx/esx_storage_driver.h \
esx/esx_device_monitor.c esx/esx_device_monitor.h \
esx/esx_secret_driver.c esx/esx_secret_driver.h \
+ esx/esx_nwfilter_driver.c esx/esx_nwfilter_driver.h \
esx/esx_util.c esx/esx_util.h \
esx/esx_vi.c esx/esx_vi.h \
esx/esx_vi_methods.c esx/esx_vi_methods.h \
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index e3340c9..a2fc85c 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -39,6 +39,7 @@
#include "esx_storage_driver.h"
#include "esx_device_monitor.h"
#include "esx_secret_driver.h"
+#include "esx_nwfilter_driver.h"
#include "esx_private.h"
#include "esx_vi.h"
#include "esx_vi_methods.h"
@@ -3834,7 +3835,8 @@ esxRegister(void)
esxNetworkRegister() < 0 ||
esxStorageRegister() < 0 ||
esxDeviceRegister() < 0 ||
- esxSecretRegister() < 0) {
+ esxSecretRegister() < 0 ||
+ esxNWFilterRegister() < 0) {
return -1;
}
diff --git a/src/esx/esx_nwfilter_driver.c b/src/esx/esx_nwfilter_driver.c
new file mode 100644
index 0000000..71d7aca
--- /dev/null
+++ b/src/esx/esx_nwfilter_driver.c
@@ -0,0 +1,86 @@
+
+/*
+ * esx_nwfilter_driver.c: nwfilter driver functions for managing VMware ESX
+ * firewall rules
+ *
+ * Copyright (C) 2010 Matthias Bolte <matthias.bolte(a)googlemail.com>
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <config.h>
+
+#include "internal.h"
+#include "util.h"
+#include "memory.h"
+#include "logging.h"
+#include "uuid.h"
+#include "esx_private.h"
+#include "esx_nwfilter_driver.h"
+#include "esx_vi.h"
+#include "esx_vi_methods.h"
+#include "esx_util.h"
+
+#define VIR_FROM_THIS VIR_FROM_ESX
+
+
+
+static virDrvOpenStatus
+esxNWFilterOpen(virConnectPtr conn,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED)
+{
+ if (STRNEQ(conn->driver->name, "ESX")) {
+ return VIR_DRV_OPEN_DECLINED;
+ }
+
+ conn->nwfilterPrivateData = conn->privateData;
+
+ return VIR_DRV_OPEN_SUCCESS;
+}
+
+
+
+static int
+esxNWFilterClose(virConnectPtr conn)
+{
+ conn->interfacePrivateData = NULL;
+
+ return 0;
+}
+
+
+
+static virNWFilterDriver esxNWFilterDriver = {
+ "ESX", /* name */
+ esxNWFilterOpen, /* open */
+ esxNWFilterClose, /* close */
+ NULL, /* numOfNWFilters */
+ NULL, /* listNWFilters */
+ NULL, /* nwfilterLookupByName */
+ NULL, /* nwfilterLookupByUUID */
+ NULL, /* defineXML */
+ NULL, /* undefine */
+ NULL, /* getXMLDesc */
+};
+
+
+
+int
+esxNWFilterRegister(void)
+{
+ return virRegisterNWFilterDriver(&esxNWFilterDriver);
+}
diff --git a/src/esx/esx_nwfilter_driver.h b/src/esx/esx_nwfilter_driver.h
new file mode 100644
index 0000000..64cceab
--- /dev/null
+++ b/src/esx/esx_nwfilter_driver.h
@@ -0,0 +1,29 @@
+
+/*
+ * esx_nwfilter_driver.h: nwfilter driver functions for managing VMware ESX
+ * firewall rules
+ *
+ * Copyright (C) 2010 Matthias Bolte <matthias.bolte(a)googlemail.com>
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef __ESX_NWFILTER_DRIVER_H__
+# define __ESX_NWFILTER_DRIVER_H__
+
+int esxNWFilterRegister(void);
+
+#endif /* __ESX_NWFILTER_DRIVER_H__ */
--
1.6.3.3
Show replies by date
On 04/14/2010 06:31 PM, Matthias Bolte wrote:
+static virDrvOpenStatus
+esxNWFilterOpen(virConnectPtr conn,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED)
+{
If Jirka's patch for virCheckFlags goes in first, you need to tweak this
line. Otherwise, his patch needs to touch this new file when it is rebased.
Other than that, ACK.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org
2010/4/15 Eric Blake <eblake(a)redhat.com>:
On 04/14/2010 06:31 PM, Matthias Bolte wrote:
> +static virDrvOpenStatus
> +esxNWFilterOpen(virConnectPtr conn,
> + virConnectAuthPtr auth ATTRIBUTE_UNUSED,
> + int flags ATTRIBUTE_UNUSED)
> +{
If Jirka's patch for virCheckFlags goes in first, you need to tweak this
line. Otherwise, his patch needs to touch this new file when it is rebased.
Other than that, ACK.
Thanks, pushed.
Matthias
> +static virDrvOpenStatus
> +esxNWFilterOpen(virConnectPtr conn,
> + virConnectAuthPtr auth ATTRIBUTE_UNUSED,
> + int flags ATTRIBUTE_UNUSED)
> +{
If Jirka's patch for virCheckFlags goes in first, you need to tweak this
line. Otherwise, his patch needs to touch this new file when it is rebased.
Hmm, this is not a public API, it's just internal function used when opening a
driver. I didn't change such functions in other places and I didn't do that
for this one either. If we decide we want to check internal APIs as well, we
can add the check for all of them at once.
Jirka