diff options
author | Pavel Šimerda <psimerda@redhat.com> | 2012-08-01 21:10:15 +0200 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-09-25 16:44:12 -0500 |
commit | 3efc2c4b9dda1aeab88f2f09110871cd38c6ed28 (patch) | |
tree | 5ef097752d3fe54e7d8215cbb0201e2db4bfd37d | |
parent | 3ada5b5a6a7e39b57dbfb30c2ab2743784f34317 (diff) |
distro: remove nm_backend_enable_loopback()
We don't need to use distribution-specific network scripts to just bring
up the loopback interface.
I'm not aware of any init dependency problems but even if there are some,
it is more practical to solve them in the respective configuration files.
This function also tried to add 127.0.0.1 to the list of addresses but
not ::1. We don't need to set the interfaces up as this is done by the
kernel.
-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 f550bdcf2b..bbf3da4993 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 732d37374b..6cae443451 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 430977f6f1..55ee553b23 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 73b2840188..3e1fea2324 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 74ff4c29d6..6e729ad16f 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 b060b2af53..0412a27dcb 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 51d9a37ed2..bde272d1cc 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 070469fc53..54f72815f3 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 d8266c4693..6cae443451 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 6d48f76f8c..5a665154c6 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 47fbe310e4..538cb8f394 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 0d506778da..fb5732dba2 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 1cabefed10..7c4a851888 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 e95de363e9..b8a631b3f3 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 b0233bb8f0..4042e62a70 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 1aed6f8cd2..34750d2d2e 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 */ diff --git a/src/main.c b/src/main.c index 5b82cfab29..9cac0fd7e9 100644 --- a/src/main.c +++ b/src/main.c @@ -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; |