From 3b4e9dd75e7023d43ef020b6ea47ecc33025e87b Mon Sep 17 00:00:00 2001 From: "Wulf C. Krueger" Date: Fri, 5 Nov 2010 13:41:20 -0500 Subject: [PATCH] backends: add Exherbo support (bgo #634058) --- configure.ac | 10 ++++- src/backends/Makefile.am | 4 ++ src/backends/NetworkManagerExherbo.c | 64 ++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/backends/NetworkManagerExherbo.c diff --git a/configure.ac b/configure.ac index e66a1f490..d96530ebd 100644 --- a/configure.ac +++ b/configure.ac @@ -84,7 +84,7 @@ dnl Make sha1.c happy on big endian systems dnl AC_C_BIGENDIAN -AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, suse, gentoo, debian, arch, slackware, paldo, mandriva, pardus or linexa])) +AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, suse, gentoo, debian, arch, slackware, paldo, mandriva, pardus, linexa or exherbo])) if test "z$with_distro" = "z"; then AC_CHECK_FILE(/etc/redhat-release,with_distro="redhat") AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse") @@ -97,6 +97,7 @@ if test "z$with_distro" = "z"; then AC_CHECK_FILE(/etc/mandriva-release,with_distro="mandriva") AC_CHECK_FILE(/etc/pardus-release,with_distro="pardus") AC_CHECK_FILE(/etc/linexa-release,with_distro="linexa") + AC_CHECK_FILE(/etc/exherbo-release,with_distro="exherbo") if test "z$with_distro" = "z"; then with_distro=`lsb_release -is` fi @@ -108,7 +109,7 @@ if test "z$with_distro" = "z"; then exit 1 else case $with_distro in - redhat|suse|gentoo|debian|slackware|arch|paldo|frugalware|mandriva|pardus|linexa) ;; + redhat|suse|gentoo|debian|slackware|arch|paldo|frugalware|mandriva|pardus|linexa|exherbo) ;; *) echo "Your distribution (${with_distro}) is not yet supported! (patches welcome)" exit 1 @@ -171,6 +172,11 @@ if test x"$with_distro" = xlinexa; then AC_DEFINE(TARGET_LINEXA, 1, [Define if you have linexa]) fi +AM_CONDITIONAL(TARGET_EXHERBO, test x"$with_distro" = xexherbo) +if test x"$with_distro" = xexherbo; then + AC_DEFINE(TARGET_EXHERBO, 1, [Define if you have Exherbo]) +fi + dnl dnl Distribution version string dnl diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am index 036dc6de3..fbec9aaf8 100644 --- a/src/backends/Makefile.am +++ b/src/backends/Makefile.am @@ -57,6 +57,10 @@ if TARGET_LINEXA libnmbackend_la_SOURCES += NetworkManagerLinexa.c endif +if TARGET_EXHERBO +libnmbackend_la_SOURCES += NetworkManagerExherbo.c +endif + libnmbackend_la_LIBADD += \ $(top_builddir)/src/logging/libnm-logging.la \ $(DBUS_LIBS) \ diff --git a/src/backends/NetworkManagerExherbo.c b/src/backends/NetworkManagerExherbo.c new file mode 100644 index 000000000..d7e24cf60 --- /dev/null +++ b/src/backends/NetworkManagerExherbo.c @@ -0,0 +1,64 @@ +/* NetworkManager -- Network link manager + * + * Dan Williams + * Dan Willemsen + * Robert Paskowitz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * (C) Copyright 2004 Red Hat, Inc. + * (C) Copyright 2004 Dan Willemsen + * (C) Copyright 2004 Robert Paskowitz + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "NetworkManagerGeneric.h" +#include "nm-system.h" +#include "NetworkManagerUtils.h" +#include "nm-logging.h" + +/* + * nm_system_enable_loopback + * + * Bring up the loopback interface + * + */ +void nm_system_enable_loopback (void) +{ + nm_generic_enable_loopback (); +} + +/* + * nm_system_update_dns + * + * Make glibc/nscd aware of any changes to the resolv.conf file by + * restarting nscd. Only restart if already running. + * + */ +void nm_system_update_dns (void) +{ + if (g_file_test ("/usr/sbin/nscd", G_FILE_TEST_IS_EXECUTABLE)) { + nm_log_info (LOGD_DNS, "Clearing nscd hosts cache."); + nm_spawn_process ("/usr/sbin/nscd -i hosts"); + } +} +