summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pcr/networkmanager-consolekit/NetworkManager.conf3
-rw-r--r--pcr/networkmanager-consolekit/PKGBUILD62
-rw-r--r--pcr/networkmanager-consolekit/dnsmasq-path.patch30
-rw-r--r--pcr/networkmanager-consolekit/git-fixes.patch265
-rw-r--r--pcr/networkmanager-consolekit/networkmanager.install2
-rw-r--r--pcr/networkmanager-consolekit/networkmanager.rc60
6 files changed, 391 insertions, 31 deletions
diff --git a/pcr/networkmanager-consolekit/NetworkManager.conf b/pcr/networkmanager-consolekit/NetworkManager.conf
index e01e3c52f..668229628 100644
--- a/pcr/networkmanager-consolekit/NetworkManager.conf
+++ b/pcr/networkmanager-consolekit/NetworkManager.conf
@@ -1,5 +1,7 @@
[main]
plugins=keyfile
+dhcp=dhclient
+dns=default
## Set static hostname
#[keyfile]
@@ -8,3 +10,4 @@ plugins=keyfile
## HTTP-based connectivity check
#[connectivity]
#uri=http://nmcheck.gnome.org/check_network_status.txt
+#interval=100
diff --git a/pcr/networkmanager-consolekit/PKGBUILD b/pcr/networkmanager-consolekit/PKGBUILD
index 423bc1b87..6033cee6a 100644
--- a/pcr/networkmanager-consolekit/PKGBUILD
+++ b/pcr/networkmanager-consolekit/PKGBUILD
@@ -1,28 +1,27 @@
-# Maintainer : freaj <freaj@riseup.net>
-# Maintainer (Manjaro): artoo <artoo@manjaro.org>
-# Contributor (Manjaro): Alexey D. <lq07829icatm@rambler.ru>
-# Contributor (Manjaro): DaZ <daz.root+arch@gmail.coM>
-# Contributor (Manjaro): Lukas Jirkovsky <l.jirkovsky@gmail.com>
-# Contributor (Manjaro): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-# Contributor (Manjaro): Jan de Groot <jgc@archlinxu.org>
-# Contributor (Manjaro): Wael Nasreddine <gandalf@siemens-mobiles.org>
-# Contributor (Manjaro): Tor Krill <tor@krill.nu>
-# Contributor (Manjaro): Will Rea <sillywilly@gmail.com>
-# Contributor (Manjaro): Valentine Sinitsyn <e_val@inbox.ru>
+# Maintainer (Arch): Alexey D. <lq07829icatm@rambler.ru>
+# Contributor (Arch): DaZ <daz.root+arch@gmail.coM>
+# Contributor (Arch): Lukas Jirkovsky <l.jirkovsky@gmail.com>
+# Contributor (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor (Arch): Jan de Groot <jgc@archlinxu.org>
+# Contributor (Arch): Wael Nasreddine <gandalf@siemens-mobiles.org>
+# Contributor (Arch): Tor Krill <tor@krill.nu>
+# Contributor (Arch): Will Rea <sillywilly@gmail.com>
+# Contributor (Arch): Valentine Sinitsyn <e_val@inbox.ru>
+# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
pkgname=networkmanager-consolekit
_pkgname=NetworkManager
-pkgver=1.0.0
-pkgrel=3
+pkgver=1.0.6
+pkgrel=1
_pppver=2.4.7
pkgdesc="NetworkManager with ConsoleKit support for non-systemd systems"
arch=('i686' 'x86_64')
license=('GPL' 'LGPL2.1')
url="http://www.gnome.org/projects/$_pkgname/"
depends=("libnm-glib>=${pkgver}" 'iproute2' 'libnl' 'polkit-consolekit' 'consolekit'
- 'wpa_supplicant' 'dhcp-client' 'libsoup' 'libmm-glib' 'libnewt' 'libndp'
- 'libteam')
-makedepends=('intltool' 'dhcpcd' 'iptables' 'gobject-introspection' 'gtk-doc' 'git'
+ 'wpa_supplicant' 'dhclient' 'libsoup' 'libmm-glib' 'libnewt' 'libndp'
+ 'libteam' 'libgudev')
+makedepends=('intltool' 'iptables' 'gobject-introspection' 'gtk-doc'
"ppp=$_pppver" 'modemmanager' 'rp-pppoe' 'vala')
optdepends=('modemmanager: for modem management service'
'dhcpcd: alternative DHCP client; does not support DHCPv6'
@@ -32,14 +31,19 @@ optdepends=('modemmanager: for modem management service'
'openresolv: resolvconf support'
'ppp: dialup connection support')
provides=("networkmanager=$pkgver")
-# replaces=('networkmanager')
+replaces=('networkmanager')
conflicts=('networkmanager')
backup=('etc/NetworkManager/NetworkManager.conf')
install=networkmanager.install
-source=("http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz"
- 'disable_set_hostname.patch'
- 'NetworkManager.conf')
-
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz
+ NetworkManager.conf
+ disable_set_hostname.patch
+ networkmanager.rc
+ )
+sha256sums=('38ea002403e3b884ffa9aae25aea431d2a8420f81f4919761c83fb92648254bd'
+ '2c6a647b5aec9f3c356d5d95251976a21297c6e64bd8d2a59339f8450a86cb3b'
+ '25056837ea92e559f09563ed817e3e0cd9333be861b8914e45f62ceaae2e0460'
+ 'e39a2a0401518abd1d1d060200e2ca0f0854cdc49a5cb286919be177a7cd90fc')
prepare() {
cd $_pkgname-$pkgver
@@ -52,14 +56,15 @@ build() {
cd $_pkgname-$pkgver
AUTOPOINT="intltoolize -f -c --automake" autoreconf -fi
- ./configure --prefix=/usr \
+ ./configure \
+ --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--sbindir=/usr/bin \
--libexecdir=/usr/lib/networkmanager \
--with-crypto=nss \
--with-dhclient=/usr/bin/dhclient \
- --with-dhcpcd=/usr/bin/dhcpcd \
+ --without-dhcpcd \
--with-dnsmasq=/usr/bin/dnsmasq \
--with-iptables=/usr/bin/iptables \
--with-systemdsystemunitdir=/usr/lib/systemd/system \
@@ -67,10 +72,8 @@ build() {
--with-resolvconf=/usr/bin/resolvconf \
--with-pppd=/usr/bin/pppd \
--with-pppd-plugin-dir=/usr/lib/pppd/$_pppver \
- --with-pppoe=/usr/bin/pppoe \
--with-kernel-firmware-dir=/usr/lib/firmware \
--with-session-tracking=ck \
- --with-modem-manager-1 \
--disable-static \
--enable-more-warnings=no \
--disable-wimax \
@@ -83,18 +86,17 @@ build() {
package() {
cd $_pkgname-$pkgver
make DESTDIR="${pkgdir}" install
+
make DESTDIR="$pkgdir" -C libnm uninstall
make DESTDIR="$pkgdir" -C libnm-glib uninstall
make DESTDIR="$pkgdir" -C libnm-util uninstall
make DESTDIR="$pkgdir" -C vapi uninstall
- install -m644 $srcdir/NetworkManager.conf "$pkgdir/etc/NetworkManager/"
-
rm -rf "$pkgdir/usr/include"
rm -rf "$pkgdir/usr/lib/pkgconfig"
+ install -D -m644 "${srcdir}/NetworkManager.conf" "${pkgdir}/etc/NetworkManager/NetworkManager.conf"
+ install -D -m755 "${srcdir}/networkmanager.rc" "${pkgdir}/etc/rc.d/networkmanager"
+
rm -r "${pkgdir}/var/run"
}
-sha256sums=('3a66afec670c975edd9832e620b725a5f16ed267a1b9e1b2d51ef27250d85947'
- '25056837ea92e559f09563ed817e3e0cd9333be861b8914e45f62ceaae2e0460'
- '759db295ddae7a6dc6b29211fc0ec08695f875584d456dd146d3679e2c33e2e3')
diff --git a/pcr/networkmanager-consolekit/dnsmasq-path.patch b/pcr/networkmanager-consolekit/dnsmasq-path.patch
new file mode 100644
index 000000000..c0e713266
--- /dev/null
+++ b/pcr/networkmanager-consolekit/dnsmasq-path.patch
@@ -0,0 +1,30 @@
+diff -u -r NetworkManager-0.9.2.0/src/dns-manager/nm-dns-dnsmasq.c NetworkManager-0.9.2.0-dnsmasq/src/dns-manager/nm-dns-dnsmasq.c
+--- NetworkManager-0.9.2.0/src/dns-manager/nm-dns-dnsmasq.c 2011-10-10 23:38:20.000000000 +0200
++++ NetworkManager-0.9.2.0-dnsmasq/src/dns-manager/nm-dns-dnsmasq.c 2012-03-06 09:07:24.137460927 +0100
+@@ -52,8 +52,11 @@
+ find_dnsmasq (void)
+ {
+ static const char *paths[] = {
++ "/usr/local/bin/dnsmasq",
+ "/usr/local/sbin/dnsmasq",
++ "/usr/bin/dnsmasq",
+ "/usr/sbin/dnsmasq",
++ "/bin/dnsmasq",
+ "/sbin/dnsmasq",
+ NULL
+ };
+diff -u -r NetworkManager-0.9.2.0/src/dnsmasq-manager/nm-dnsmasq-manager.c NetworkManager-0.9.2.0-dnsmasq/src/dnsmasq-manager/nm-dnsmasq-manager.c
+--- NetworkManager-0.9.2.0/src/dnsmasq-manager/nm-dnsmasq-manager.c 2011-04-19 07:06:22.000000000 +0200
++++ NetworkManager-0.9.2.0-dnsmasq/src/dnsmasq-manager/nm-dnsmasq-manager.c 2012-03-06 09:07:58.603851818 +0100
+@@ -170,8 +170,11 @@
+ nm_find_dnsmasq (void)
+ {
+ static const char *dnsmasq_binary_paths[] = {
++ "/usr/local/bin/dnsmasq",
+ "/usr/local/sbin/dnsmasq",
++ "/usr/bin/dnsmasq",
+ "/usr/sbin/dnsmasq",
++ "/bin/dnsmasq",
+ "/sbin/dnsmasq",
+ NULL
+ };
diff --git a/pcr/networkmanager-consolekit/git-fixes.patch b/pcr/networkmanager-consolekit/git-fixes.patch
new file mode 100644
index 000000000..939d0b1e0
--- /dev/null
+++ b/pcr/networkmanager-consolekit/git-fixes.patch
@@ -0,0 +1,265 @@
+diff --git a/configure.ac b/configure.ac
+index 94b0758..e61657d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4,7 +4,7 @@ dnl The NM version number
+ m4_define([nm_major_version], [0])
+ m4_define([nm_minor_version], [9])
+ m4_define([nm_micro_version], [10])
+-m4_define([nm_nano_version], [0])
++m4_define([nm_nano_version], [1])
+ m4_define([nm_version],
+ [nm_major_version.nm_minor_version.nm_micro_version.nm_nano_version])
+ m4_define([nm_git_sha], [m4_esyscmd([ ( [ -d ./.git/ ] && [ "$(readlink -f ./.git/)" = "$(readlink -f "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null)" ] && git rev-parse --verify -q HEAD 2>/dev/null ) || true ])])
+diff --git a/src/devices/nm-device-team.c b/src/devices/nm-device-team.c
+index f3b25e3..51778c1 100644
+--- a/src/devices/nm-device-team.c
++++ b/src/devices/nm-device-team.c
+@@ -51,7 +51,7 @@ G_DEFINE_TYPE (NMDeviceTeam, nm_device_team, NM_TYPE_DEVICE)
+
+ #define NM_DEVICE_TEAM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_TEAM, NMDeviceTeamPrivate))
+
+-#define NM_TEAM_ERROR (nm_team_error_quark ())
++#define NM_DEVICE_TEAM_ERROR (nm_device_team_error_quark ())
+
+ static gboolean teamd_start (NMDevice *dev, NMSettingTeam *s_team);
+
+@@ -75,7 +75,7 @@ enum {
+ /******************************************************************/
+
+ static GQuark
+-nm_team_error_quark (void)
++nm_device_team_error_quark (void)
+ {
+ static GQuark quark = 0;
+ if (!quark)
+@@ -890,5 +890,5 @@ nm_device_team_class_init (NMDeviceTeamClass *klass)
+ G_TYPE_FROM_CLASS (klass),
+ &dbus_glib_nm_device_team_object_info);
+
+- dbus_g_error_domain_register (NM_TEAM_ERROR, NULL, NM_TYPE_TEAM_ERROR);
++ dbus_g_error_domain_register (NM_DEVICE_TEAM_ERROR, NULL, NM_TYPE_TEAM_ERROR);
+ }
+diff --git a/src/devices/nm-device-team.h b/src/devices/nm-device-team.h
+index fe1275c..32bc5fd 100644
+--- a/src/devices/nm-device-team.h
++++ b/src/devices/nm-device-team.h
+@@ -35,9 +35,9 @@ G_BEGIN_DECLS
+ #define NM_DEVICE_TEAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_TEAM, NMDeviceTeamClass))
+
+ typedef enum {
+- NM_TEAM_ERROR_CONNECTION_NOT_TEAM = 0, /*< nick=ConnectionNotTeam >*/
+- NM_TEAM_ERROR_CONNECTION_INVALID, /*< nick=ConnectionInvalid >*/
+- NM_TEAM_ERROR_CONNECTION_INCOMPATIBLE, /*< nick=ConnectionIncompatible >*/
++ NM_DEVICE_TEAM_ERROR_CONNECTION_NOT_TEAM = 0, /*< nick=ConnectionNotTeam >*/
++ NM_DEVICE_TEAM_ERROR_CONNECTION_INVALID, /*< nick=ConnectionInvalid >*/
++ NM_DEVICE_TEAM_ERROR_CONNECTION_INCOMPATIBLE, /*< nick=ConnectionIncompatible >*/
+ } NMTeamError;
+
+ #define NM_DEVICE_TEAM_SLAVES "slaves"
+diff --git a/src/dhcp-manager/nm-dhcp-dhclient-utils.c b/src/dhcp-manager/nm-dhcp-dhclient-utils.c
+index 8527e6c..bc9de12 100644
+--- a/src/dhcp-manager/nm-dhcp-dhclient-utils.c
++++ b/src/dhcp-manager/nm-dhcp-dhclient-utils.c
+@@ -225,7 +225,6 @@ nm_dhcp_dhclient_create_config (const char *interface,
+ add_also_request (alsoreq, "dhcp6.name-servers");
+ add_also_request (alsoreq, "dhcp6.domain-search");
+ add_also_request (alsoreq, "dhcp6.client-id");
+- add_also_request (alsoreq, "dhcp6.server-id");
+ } else {
+ add_ip4_config (new_contents, dhcp_client_id, hostname);
+ add_also_request (alsoreq, "rfc3442-classless-static-routes");
+diff --git a/src/nm-manager.c b/src/nm-manager.c
+index 09a1985..0cf78e3 100644
+--- a/src/nm-manager.c
++++ b/src/nm-manager.c
+@@ -1879,42 +1879,116 @@ factory_component_added_cb (NMDeviceFactory *factory,
+ #define PLUGIN_PATH_TAG "NMManager-plugin-path"
+ #define PLUGIN_TYPEFUNC_TAG "typefunc"
+
+-static void
+-load_device_factories (NMManager *self)
++struct read_device_factory_paths_data {
++ char *path;
++ struct stat st;
++};
++
++static gint
++read_device_factory_paths_sort_fcn (gconstpointer a, gconstpointer b)
++{
++ const struct read_device_factory_paths_data *da = a;
++ const struct read_device_factory_paths_data *db = b;
++ time_t ta, tb;
++
++ ta = MAX (da->st.st_mtime, da->st.st_ctime);
++ tb = MAX (db->st.st_mtime, db->st.st_ctime);
++
++ if (ta < tb)
++ return 1;
++ if (ta > tb)
++ return -1;
++ return 0;
++}
++
++static char**
++read_device_factory_paths ()
+ {
+- NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
+ GDir *dir;
+ GError *error = NULL;
+ const char *item;
+- char *path;
+- GSList *iter;
++ GArray *paths;
++ char **result;
++ guint i;
+
+ dir = g_dir_open (NMPLUGINDIR, 0, &error);
+ if (!dir) {
+- nm_log_warn (LOGD_HW, "Failed to open plugin directory %s: %s",
++ nm_log_warn (LOGD_HW, "device plugin: failed to open directory %s: %s",
+ NMPLUGINDIR,
+ (error && error->message) ? error->message : "(unknown)");
+ g_clear_error (&error);
+- return;
++ return NULL;
+ }
+
++ paths = g_array_new (FALSE, FALSE, sizeof (struct read_device_factory_paths_data));
++
+ while ((item = g_dir_read_name (dir))) {
+- GModule *plugin;
+- NMDeviceFactory *factory;
+- NMDeviceFactoryCreateFunc create_func;
+- NMDeviceFactoryDeviceTypeFunc type_func;
+- NMDeviceType dev_type;
+- const char *found = NULL;
++ struct read_device_factory_paths_data data;
+
+ if (!g_str_has_prefix (item, PLUGIN_PREFIX))
+ continue;
+ if (g_str_has_suffix (item, ".la"))
+ continue;
+
+- path = g_module_build_path (NMPLUGINDIR, item);
+- g_assert (path);
+- plugin = g_module_open (path, G_MODULE_BIND_LOCAL);
+- g_free (path);
++ data.path = g_build_filename (NMPLUGINDIR, item, NULL);
++
++ if (stat (data.path, &data.st) != 0)
++ goto continue_with_error;
++ if (!S_ISREG (data.st.st_mode))
++ goto continue_silently;
++ if (data.st.st_uid != 0)
++ goto continue_with_error;
++ if (data.st.st_mode & (S_IWGRP | S_IWOTH | S_ISUID))
++ goto continue_with_error;
++
++ g_array_append_val (paths, data);
++ continue;
++
++continue_with_error:
++ nm_log_dbg (LOGD_HW, "device plugin: skip invalid file %s", data.path);
++continue_silently:
++ g_free (data.path);
++ }
++ g_dir_close (dir);
++
++ /* sort filenames by modification time. */
++ g_array_sort (paths, read_device_factory_paths_sort_fcn);
++
++ result = g_new (char *, paths->len + 1);
++ for (i = 0; i < paths->len; i++)
++ result[i] = g_array_index (paths, struct read_device_factory_paths_data, i).path;
++ result[i] = NULL;
++
++ g_array_free (paths, TRUE);
++ return result;
++}
++
++static void
++load_device_factories (NMManager *self)
++{
++ NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
++ char **path;
++ char **paths;
++
++ paths = read_device_factory_paths ();
++ if (!paths)
++ return;
++
++ for (path = paths; *path; path++) {
++ GError *error = NULL;
++ GModule *plugin;
++ NMDeviceFactory *factory;
++ NMDeviceFactoryCreateFunc create_func;
++ NMDeviceFactoryDeviceTypeFunc type_func;
++ NMDeviceType dev_type;
++ const char *found = NULL;
++ GSList *iter;
++ const char *item;
++
++ item = strrchr (*path, '/');
++ g_assert (item);
++
++ plugin = g_module_open (*path, G_MODULE_BIND_LOCAL);
+
+ if (!plugin) {
+ nm_log_warn (LOGD_HW, "(%s): failed to load plugin: %s", item, g_module_error ());
+@@ -1939,7 +2013,7 @@ load_device_factories (NMManager *self)
+ }
+ }
+ if (found) {
+- nm_log_warn (LOGD_HW, "Found multiple device plugins for same type: %s vs %s",
++ nm_log_warn (LOGD_HW, "Found multiple device plugins for same type: use '%s' instead of '%s'",
+ found, g_module_name (plugin));
+ g_module_close (plugin);
+ continue;
+@@ -1978,7 +2052,7 @@ load_device_factories (NMManager *self)
+
+ nm_log_info (LOGD_HW, "Loaded device plugin: %s", g_module_name (plugin));
+ };
+- g_dir_close (dir);
++ g_strfreev (paths);
+
+ priv->factories = g_slist_reverse (priv->factories);
+ }
+diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
+index f73ff32..7b11a6b 100644
+--- a/src/platform/nm-linux-platform.c
++++ b/src/platform/nm-linux-platform.c
+@@ -1584,7 +1584,9 @@ announce_object (NMPlatform *platform, const struct nl_object *object, NMPlatfor
+ */
+ switch (change_type) {
+ case NM_PLATFORM_SIGNAL_REMOVED:
+- check_cache_items (platform, priv->route_cache, address.ifindex);
++ check_cache_items (platform,
++ priv->route_cache,
++ rtnl_addr_get_ifindex ((struct rtnl_addr *) object));
+ break;
+ default:
+ break;
+@@ -3500,7 +3502,8 @@ _route_match (struct rtnl_route *rtnlroute, int family, int ifindex)
+ rtnl_route_get_table (rtnlroute) != RT_TABLE_MAIN ||
+ rtnl_route_get_protocol (rtnlroute) == RTPROT_KERNEL ||
+ rtnl_route_get_family (rtnlroute) != family ||
+- rtnl_route_get_nnexthops (rtnlroute) != 1)
++ rtnl_route_get_nnexthops (rtnlroute) != 1 ||
++ rtnl_route_get_flags (rtnlroute) & RTM_F_CLONED)
+ return FALSE;
+
+ nexthop = rtnl_route_nexthop_n (rtnlroute, 0);
+diff --git a/vapi/NMClient-1.0.metadata b/vapi/NMClient-1.0.metadata
+index 12f1469..2d894d8 100644
+--- a/vapi/NMClient-1.0.metadata
++++ b/vapi/NMClient-1.0.metadata
+@@ -1,6 +1,6 @@
+-RemoteSettings.new_async skip
++RemoteSettings.new_finish symbol_type="function"
+ RemoteConnection.updated#virtual_method skip
+-Client.new_async skip
++Client.new_finish symbol_type="function"
+
+ ACTIVE_CONNECTION_* cheader_filename="nm-active-connection.h" name="ACTIVE_CONNECTION_(.+)" parent="NM.ActiveConnection"
+ CLIENT_* cheader_filename="nm-client.h" name="CLIENT_(.+)" parent="NM.Client"
diff --git a/pcr/networkmanager-consolekit/networkmanager.install b/pcr/networkmanager-consolekit/networkmanager.install
index de40c17ed..f9da4feb1 100644
--- a/pcr/networkmanager-consolekit/networkmanager.install
+++ b/pcr/networkmanager-consolekit/networkmanager.install
@@ -1,5 +1,5 @@
post_upgrade() {
- (( $(vercmp 0.8.3 $2) > 0 )) && cat <<MSG
+ (( $(vercmp $2 0.8.3) < 0 )) && cat <<MSG
ATTENTION:
/etc/NetworkManager/nm-system-settings.conf has been replaced
by /etc/NetworkManager/NetworkManager.conf. Make sure you move
diff --git a/pcr/networkmanager-consolekit/networkmanager.rc b/pcr/networkmanager-consolekit/networkmanager.rc
new file mode 100644
index 000000000..1e803e87b
--- /dev/null
+++ b/pcr/networkmanager-consolekit/networkmanager.rc
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+NETWORKMANAGER_BIN=/usr/bin/NetworkManager
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID $NETWORKMANAGER_BIN`
+case "$1" in
+ start)
+ ck_daemon dbus && /etc/rc.d/dbus start
+
+ stat_busy "Starting NetworkManager"
+ [ ! -d /var/run/NetworkManager ] && install -d /var/run/NetworkManager
+ if [ -z "$PID" ]; then
+ $NETWORKMANAGER_BIN
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon networkmanager
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NetworkManager"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon networkmanager
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ sleep)
+ /usr/bin/dbus-send --system \
+ --dest=org.freedesktop.NetworkManager \
+ --type=method_call \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.NetworkManager.sleep
+ ;;
+ wake)
+ /usr/bin/dbus-send --system \
+ --dest=org.freedesktop.NetworkManager \
+ --type=method_call \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.NetworkManager.wake
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|sleep|wake}"
+ ;;
+esac
+exit 0
+