diff --git a/configure.ac b/configure.ac index 568359706..e66a1f490 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 or pardus])) +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])) 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") @@ -96,6 +96,7 @@ if test "z$with_distro" = "z"; then AC_CHECK_FILE(/etc/frugalware-release,with_distro="frugalware") 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") if test "z$with_distro" = "z"; then with_distro=`lsb_release -is` fi @@ -107,7 +108,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) ;; + redhat|suse|gentoo|debian|slackware|arch|paldo|frugalware|mandriva|pardus|linexa) ;; *) echo "Your distribution (${with_distro}) is not yet supported! (patches welcome)" exit 1 @@ -165,6 +166,11 @@ if test x"$with_distro" = xpardus; then AC_DEFINE(TARGET_PARDUS, 1, [Define if you have Pardus]) fi +AM_CONDITIONAL(TARGET_LINEXA, test x"$with_distro" = xlinexa) +if test x"$with_distro" = xlinexa; then + AC_DEFINE(TARGET_LINEXA, 1, [Define if you have linexa]) +fi + dnl dnl Distribution version string dnl @@ -543,6 +549,8 @@ initscript/paldo/Makefile initscript/paldo/NetworkManager initscript/Mandriva/Makefile initscript/Mandriva/networkmanager +initscript/linexa/Makefile +initscript/linexa/networkmanager introspection/Makefile man/Makefile man/NetworkManager.8 diff --git a/initscript/Makefile.am b/initscript/Makefile.am index 4cc710eba..65555e3ef 100644 --- a/initscript/Makefile.am +++ b/initscript/Makefile.am @@ -23,3 +23,6 @@ endif if TARGET_MANDRIVA SUBDIRS += Mandriva endif +if TARGET_LINEXA +SUBDIRS += linexa +endif diff --git a/initscript/linexa/Makefile.am b/initscript/linexa/Makefile.am new file mode 100644 index 000000000..0a0cc2bb3 --- /dev/null +++ b/initscript/linexa/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_DIST = networkmanager +DISTCLEANFILES = networkmanager + +initddir = $(sysconfdir)/rc.d/init.d +initd_SCRIPTS = networkmanager + diff --git a/initscript/linexa/networkmanager.in b/initscript/linexa/networkmanager.in new file mode 100644 index 000000000..0d754c360 --- /dev/null +++ b/initscript/linexa/networkmanager.in @@ -0,0 +1,59 @@ +#!/bin/bash +# Start the networkmanager daemon +# +# Author: Elias +# [2010-08-20] + +# Information about the daemon +title="networkmanager" # No spaces allowed in here +start_after="dbus" # dependencies for start-up +stop_after="xinetd" # dependencies for stop +runlevel="2" # start/stop in this runlevel +sequence="25" # "checkinstall networkmanager enable" + # will create links to: + # /etc/rc.d/rc${runlevel}.d/S${sequence}${title} + # /etc/rc.d/rc${runlevel}.d/S$((100 - ${sequence}))${title} + +# check whether daemon is running +# returns 0 if running, >0 if not +check() { + [ -f /var/run/NetworkManager.pid ] +} + +# start procedure +start() { + if check ; then + warning "${title} is already running. Type 'service restart ${title}'" # Issue a warning + else + /usr/sbin/NetworkManager & + evaluate_retval "Starting ${title}. " # Print [ done ] or [ failed ] depending on outcome + fi +} + +# stop procedure +stop() { + if check ; then # daemon is running + kill $(cat /var/run/NetworkManager.pid) + evaluate_retval "Stopping ${title}." # Print [ done ] or [ failed ] depending on outcome + else # daemon not running + warning "${title} is not running." # Issue a warning + fi +} + +# restart procedure +restart() { + stop + sleep 1 + start +} + +# reload action +reload() { + if check ; then # daemon is running + kill -HUP $(cat /var/run/NetworkManager.pid) &>/dev/null + evaluate_retval "Reloading ${title}." # Print [ done ] or [ failed ] depending on outcome + else # daemon not running + warning "${title} is not running." # Issue a warning + fi +} + diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am index b35fafd72..036dc6de3 100644 --- a/src/backends/Makefile.am +++ b/src/backends/Makefile.am @@ -53,6 +53,10 @@ if TARGET_PARDUS libnmbackend_la_SOURCES += NetworkManagerPardus.c endif +if TARGET_LINEXA +libnmbackend_la_SOURCES += NetworkManagerLinexa.c +endif + libnmbackend_la_LIBADD += \ $(top_builddir)/src/logging/libnm-logging.la \ $(DBUS_LIBS) \ diff --git a/src/backends/NetworkManagerLinexa.c b/src/backends/NetworkManagerLinexa.c new file mode 100644 index 000000000..015aa17c6 --- /dev/null +++ b/src/backends/NetworkManagerLinexa.c @@ -0,0 +1,66 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * Matthew Garrett + * + * Heavily based on NetworkManagerRedhat.c by Dan Williams + * + * 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 Tom Parker + * (C) Copyright 2004 Matthew Garrett + * (C) Copyright 2004 Red Hat, Inc. + */ + +#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 + * + * Invalidate the nscd host cache, if it exists, since + * we changed resolv.conf. + * + */ +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"); + } +} + +