interface: always build all available backends

Always build all available backends to avoid bit-rot. At run time we
select the correct backend and load it by attempting netcf first and
then udev.
This commit is contained in:
Doug Goldstein 2012-10-06 14:20:27 -05:00 committed by Eric Blake
parent b871830ac8
commit 43dbcb1541
5 changed files with 45 additions and 5 deletions

View File

@ -557,18 +557,18 @@ INTERFACE_DRIVER_SOURCES =
if WITH_INTERFACE
INTERFACE_DRIVER_SOURCES += \
interface/interface_driver.h
interface/interface_driver.h \
interface/interface_driver.c
if WITH_NETCF
INTERFACE_DRIVER_SOURCES += \
interface/interface_backend_netcf.c
else
endif
if HAVE_UDEV
INTERFACE_DRIVER_SOURCES += \
interface/interface_backend_udev.c
endif
endif
endif
SECRET_DRIVER_SOURCES = \
secret/secret_driver.h secret/secret_driver.c

View File

@ -805,7 +805,7 @@ static virInterfaceDriver interfaceDriver = {
#endif /* HAVE_NETCF_TRANSACTIONS */
};
int interfaceRegister(void) {
int netcfIfaceRegister(void) {
if (virRegisterInterfaceDriver(&interfaceDriver) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to register netcf interface driver"));

View File

@ -503,7 +503,7 @@ static virInterfaceDriver udevIfaceDriver = {
};
int
interfaceRegister(void) {
udevIfaceRegister(void) {
if (virRegisterInterfaceDriver(&udevIfaceDriver) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to register udev interface driver"));

View File

@ -0,0 +1,37 @@
/*
* interface_driver.c: loads the appropriate backend
*
* Copyright (C) 2012 Doug Goldstein <cardoe@cardoe.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, see
* <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include "interface_driver.h"
int
interfaceRegister(void) {
#ifdef WITH_NETCF
/* Attempt to load the netcf based backend first */
if (netcfIfaceRegister() == 0)
return 0;
#endif /* WITH_NETCF */
#if HAVE_UDEV
/* If there's no netcf or it failed to load, register the udev backend */
if (udevIfaceRegister() == 0)
return 0;
#endif /* HAVE_UDEV */
return -1;
}

View File

@ -26,4 +26,7 @@
int interfaceRegister(void);
int netcfIfaceRegister(void);
int udevIfaceRegister(void);
#endif /* __VIR_INTERFACE__DRIVER_H */