--- trunk/networkmanager/NetworkManagerMagellan.c 2010/09/27 20:15:14 1153 +++ trunk/networkmanager/NetworkManagerMagellan.c 2011/08/26 18:57:01 1502 @@ -6,6 +6,10 @@ * * Heavily based on NetworkManagerGentoo.c by Robert Paskowitz * + * 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 @@ -20,9 +24,9 @@ * 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. + * (C) Copyright 2004 Dan Willemsen + * (C) Copyright 2004 Robert Paskowitz */ #ifdef HAVE_CONFIG_H @@ -32,12 +36,22 @@ #include #include #include +#include #include "NetworkManagerGeneric.h" #include "nm-system.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" +#define BUFFER_SIZE 512 + +static void sysvinit_start_lo_if_necessary() +{ + /* No need to run net.lo if it is already running */ + if (nm_spawn_process ("/etc/rc.d/init.d/localnet status") != 0) + nm_spawn_process ("/etc/rc.d/init.d/localnet start"); +} + /* * nm_system_enable_loopback * @@ -46,9 +60,17 @@ */ void nm_system_enable_loopback (void) { - /* No need to run localnet if it is already running */ - if (nm_spawn_process ("/etc/init.d/localnet status") != 0) - nm_spawn_process("/etc/init.d/localnet start"); + gchar *comm = NULL; + + if (g_strstr_len (comm, -1, "systemd")) { + /* We use the generic loopback enabler if using systemd. */ + nm_log_info (LOGD_CORE, "NetworkManager is running with systemd..."); + nm_generic_enable_loopback (); + } else { + /* SySVInit otherwise. */ + nm_log_info (LOGD_CORE, "NetworkManager is running with SySVInit..."); + sysvinit_start_lo_if_necessary(); + } } /* @@ -65,3 +87,4 @@ nm_spawn_process ("/usr/sbin/nscd -i hosts"); } } +