diff options
-rw-r--r-- | src/backends/NetworkManagerArch.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerDebian.c | 9 | ||||
-rw-r--r-- | src/backends/NetworkManagerExherbo.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerFrugalware.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerGeneric.c | 65 | ||||
-rw-r--r-- | src/backends/NetworkManagerGeneric.h | 2 | ||||
-rw-r--r-- | src/backends/NetworkManagerGentoo.c | 31 | ||||
-rw-r--r-- | src/backends/NetworkManagerLFS.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerLinexa.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerMandriva.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerPaldo.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerPardus.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerRedHat.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerSlackware.c | 5 | ||||
-rw-r--r-- | src/backends/NetworkManagerSuSE.c | 5 | ||||
-rw-r--r-- | src/backends/nm-backend.h | 2 | ||||
-rw-r--r-- | src/main.c | 16 |
17 files changed, 13 insertions, 167 deletions
diff --git a/src/backends/NetworkManagerArch.c b/src/backends/NetworkManagerArch.c index f550bdcf..bbf3da49 100644 --- a/src/backends/NetworkManagerArch.c +++ b/src/backends/NetworkManagerArch.c @@ -37,8 +37,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerDebian.c b/src/backends/NetworkManagerDebian.c index 732d3737..6cae4434 100644 --- a/src/backends/NetworkManagerDebian.c +++ b/src/backends/NetworkManagerDebian.c @@ -31,12 +31,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -void nm_backend_enable_loopback (void) -{ - /* ifupdown isn't always installed (bgo #625427) */ - if (g_file_test ("/sbin/ifup", G_FILE_TEST_EXISTS)) - nm_spawn_process ("/sbin/ifup lo"); - else - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerExherbo.c b/src/backends/NetworkManagerExherbo.c index 430977f6..55ee553b 100644 --- a/src/backends/NetworkManagerExherbo.c +++ b/src/backends/NetworkManagerExherbo.c @@ -30,8 +30,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerFrugalware.c b/src/backends/NetworkManagerFrugalware.c index 73b28401..3e1fea23 100644 --- a/src/backends/NetworkManagerFrugalware.c +++ b/src/backends/NetworkManagerFrugalware.c @@ -25,8 +25,3 @@ /* Provided by the frugalwareutils package on Frugalware */ #include <libfwnetconfig.h> - -void nm_backend_enable_loopback (void) -{ - fwnet_loup (); -} diff --git a/src/backends/NetworkManagerGeneric.c b/src/backends/NetworkManagerGeneric.c index 74ff4c29..6e729ad1 100644 --- a/src/backends/NetworkManagerGeneric.c +++ b/src/backends/NetworkManagerGeneric.c @@ -44,68 +44,3 @@ #include <netlink/route/addr.h> #include <netlink/netlink.h> -/* - * nm_generic_enable_loopback - * - * Bring up the loopback interface - * - */ -void nm_generic_enable_loopback (void) -{ - struct nl_sock * nlh = NULL; - struct rtnl_addr * addr = NULL; - struct nl_addr * nl_addr = NULL; - guint32 binaddr = 0; - int iface_idx = -1; - int err; - - nlh = nm_netlink_get_default_handle (); - if (!nlh) - return; - - iface_idx = nm_netlink_iface_to_index ("lo"); - if (iface_idx < 0) - return; - - nm_system_iface_set_up (iface_idx, TRUE, NULL); - - addr = rtnl_addr_alloc (); - if (!addr) - return; - - binaddr = htonl (0x7f000001); /* 127.0.0.1 */ - nl_addr = nl_addr_build (AF_INET, &binaddr, sizeof(binaddr)); - if (!nl_addr) - goto out; - rtnl_addr_set_local (addr, nl_addr); - nl_addr_put (nl_addr); - - binaddr = htonl (0x7fffffff); /* 127.255.255.255 */ - nl_addr = nl_addr_build (AF_INET, &binaddr, sizeof(binaddr)); - if (!nl_addr) - goto out; - rtnl_addr_set_broadcast (addr, nl_addr); - nl_addr_put (nl_addr); - - rtnl_addr_set_prefixlen (addr, 8); - rtnl_addr_set_ifindex (addr, iface_idx); - rtnl_addr_set_scope (addr, RT_SCOPE_HOST); - rtnl_addr_set_label (addr, "lo"); - - err = rtnl_addr_add (nlh, addr, 0); - if (err && (err != -NLE_EXIST)) { - nm_log_warn (LOGD_CORE, "error setting loopback address: (%d) %s", - err, nl_geterror (err)); - } -out: - if (addr) - rtnl_addr_put (addr); -} - -#ifdef TARGET_GENERIC -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} -#endif - diff --git a/src/backends/NetworkManagerGeneric.h b/src/backends/NetworkManagerGeneric.h index b060b2af..0412a27d 100644 --- a/src/backends/NetworkManagerGeneric.h +++ b/src/backends/NetworkManagerGeneric.h @@ -26,6 +26,4 @@ #include "nm-backend.h" -void nm_generic_enable_loopback (void); - #endif /* NM_GENERIC_H */ diff --git a/src/backends/NetworkManagerGentoo.c b/src/backends/NetworkManagerGentoo.c index 51d9a37e..bde272d1 100644 --- a/src/backends/NetworkManagerGentoo.c +++ b/src/backends/NetworkManagerGentoo.c @@ -32,34 +32,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -static void openrc_start_lo_if_necessary() -{ - /* No need to run net.lo if it is already running */ - if (nm_spawn_process ("/etc/init.d/net.lo status") != 0) - nm_spawn_process ("/etc/init.d/net.lo start"); -} - -void nm_backend_enable_loopback (void) -{ - gchar *comm; - - /* If anything goes wrong trying to open /proc/1/comm, we will assume OpenRC */ - if (!g_file_get_contents ("/proc/1/comm", &comm, NULL, NULL)) { - nm_log_info (LOGD_CORE, "NetworkManager is running with OpenRC..."); - openrc_start_lo_if_necessary (); - return; - } - - 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 { - /* OpenRC otherwise. */ - nm_log_info (LOGD_CORE, "NetworkManager is running with OpenRC..."); - openrc_start_lo_if_necessary(); - } - - g_free (comm); -} diff --git a/src/backends/NetworkManagerLFS.c b/src/backends/NetworkManagerLFS.c index 070469fc..54f72815 100644 --- a/src/backends/NetworkManagerLFS.c +++ b/src/backends/NetworkManagerLFS.c @@ -32,8 +32,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerLinexa.c b/src/backends/NetworkManagerLinexa.c index d8266c46..6cae4434 100644 --- a/src/backends/NetworkManagerLinexa.c +++ b/src/backends/NetworkManagerLinexa.c @@ -31,8 +31,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerMandriva.c b/src/backends/NetworkManagerMandriva.c index 6d48f76f..5a665154 100644 --- a/src/backends/NetworkManagerMandriva.c +++ b/src/backends/NetworkManagerMandriva.c @@ -27,8 +27,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerPaldo.c b/src/backends/NetworkManagerPaldo.c index 47fbe310..538cb8f3 100644 --- a/src/backends/NetworkManagerPaldo.c +++ b/src/backends/NetworkManagerPaldo.c @@ -29,8 +29,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerPardus.c b/src/backends/NetworkManagerPardus.c index 0d506778..fb5732db 100644 --- a/src/backends/NetworkManagerPardus.c +++ b/src/backends/NetworkManagerPardus.c @@ -25,8 +25,3 @@ #endif #include "NetworkManagerGeneric.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerRedHat.c b/src/backends/NetworkManagerRedHat.c index 1cabefed..7c4a8518 100644 --- a/src/backends/NetworkManagerRedHat.c +++ b/src/backends/NetworkManagerRedHat.c @@ -25,8 +25,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerSlackware.c b/src/backends/NetworkManagerSlackware.c index e95de363..b8a631b3 100644 --- a/src/backends/NetworkManagerSlackware.c +++ b/src/backends/NetworkManagerSlackware.c @@ -25,8 +25,3 @@ #endif #include "NetworkManagerGeneric.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/NetworkManagerSuSE.c b/src/backends/NetworkManagerSuSE.c index b0233bb8..4042e62a 100644 --- a/src/backends/NetworkManagerSuSE.c +++ b/src/backends/NetworkManagerSuSE.c @@ -30,8 +30,3 @@ #include "NetworkManagerGeneric.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" - -void nm_backend_enable_loopback (void) -{ - nm_generic_enable_loopback (); -} diff --git a/src/backends/nm-backend.h b/src/backends/nm-backend.h index 1aed6f8c..34750d2d 100644 --- a/src/backends/nm-backend.h +++ b/src/backends/nm-backend.h @@ -23,6 +23,4 @@ /* Random disto-specific stuff */ -void nm_backend_enable_loopback (void); - #endif /* NM_BACKEND_H */ @@ -42,7 +42,6 @@ #include "NetworkManagerUtils.h" #include "nm-manager.h" #include "nm-policy.h" -#include "backends/nm-backend.h" #include "nm-dns-manager.h" #include "nm-dbus-manager.h" #include "nm-supplicant-manager.h" @@ -55,6 +54,7 @@ #include "nm-policy-hosts.h" #include "nm-config.h" #include "nm-posix-signals.h" +#include "nm-system.h" #if !defined(NM_DIST_VERSION) # define NM_DIST_VERSION VERSION @@ -640,8 +640,18 @@ main (int argc, char *argv[]) nm_manager_start (manager); - /* Bring up the loopback interface. */ - nm_backend_enable_loopback (); + /* Make sure the loopback interface is up. If interface is down, we bring + * it up and kernel will assign it link-local IPv4 and IPv6 addresses. If + * it was already up, we assume is in clean state. + * + * TODO: it might be desirable to check the list of addresses and compare + * it with a list of expected addresses (one of the protocol families + * could be disabled). The 'lo' interface is sometimes used for assigning + * global addresses so their availability doesn't depend on the state of + * physical interfaces. + */ + nm_log_dbg (LOGD_CORE, "setting up local loopback"); + nm_system_iface_set_up (nm_netlink_iface_to_index ("lo"), TRUE, NULL); success = TRUE; |