mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-10 03:30:19 +01:00
2006-03-15 Robert Love <rml@novell.com>
* src/dhcp-manager/nm-dhcp-manager.c: Do not start dhcdbd, but rely on the system init scripts (or some other mechanism) starting it (or a compatible DBUS service) before NetworkManager runs. This means that distributions might need to update their init scripts. This fixes possible races and is quite a bit cleaner. * initscript/SUSE/networkmanager.in: Update to start dhcdbd before starting the NetworkManager daemon. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1607 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
f7b52f76db
commit
c7e71729b7
3 changed files with 29 additions and 39 deletions
11
ChangeLog
11
ChangeLog
|
|
@ -1,3 +1,14 @@
|
|||
2006-03-15 Robert Love <rml@novell.com>
|
||||
|
||||
* src/dhcp-manager/nm-dhcp-manager.c: Do not start dhcdbd, but rely on
|
||||
the system init scripts (or some other mechanism) starting it (or a
|
||||
compatible DBUS service) before NetworkManager runs. This means that
|
||||
distributions might need to update their init scripts. This fixes
|
||||
possible races and is quite a bit cleaner.
|
||||
* initscript/SUSE/networkmanager.in: Update to start dhcdbd before
|
||||
starting the NetworkManager daemon.
|
||||
|
||||
|
||||
2006-03-14 Robert Love <rml@novell.com>
|
||||
|
||||
* src/backends/NetworkManagerSuSE.c: Check that we have a valid AP
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@
|
|||
|
||||
sbindir=@sbindir@
|
||||
|
||||
DHCDBD_BIN=${sinbidr}/dhcdbd
|
||||
test -x $DHCDBD_BIN || exit 5
|
||||
|
||||
NETWORKMANAGER_BIN=${sbindir}/NetworkManager
|
||||
test -x $NETWORKMANAGER_BIN || exit 5
|
||||
|
||||
|
|
@ -18,6 +21,12 @@ rc_reset
|
|||
|
||||
case "$1" in
|
||||
start)
|
||||
checkproc $DHCDBD_BIN
|
||||
if [ $? != 0 ]; then
|
||||
echo -n "Starting the DHCP DBUS Daemon"
|
||||
startproc $DHCDBD_BIN --system
|
||||
rc_status -v
|
||||
fi
|
||||
checkproc $NETWORKMANAGER_BIN
|
||||
if [ $? = 0 ]; then
|
||||
echo -n "NetworkManager already running"
|
||||
|
|
@ -32,6 +41,8 @@ case "$1" in
|
|||
echo -n "Shutting down the NetworkManager"
|
||||
killproc -TERM $NETWORKMANAGER_BIN
|
||||
rc_status -v
|
||||
echo -n "Shutting down the DHCP DBUS Daemon"
|
||||
killproc -TERM $DHCDBD_BIN
|
||||
;;
|
||||
restart)
|
||||
$0 stop
|
||||
|
|
@ -39,6 +50,9 @@ case "$1" in
|
|||
rc_status
|
||||
;;
|
||||
status)
|
||||
echo -n "Checking for the DHCP DBUS Daemon: "
|
||||
checkproc $DHCDBD_BIN
|
||||
rc_status -v
|
||||
echo -n "Checking for the NetworkManager: "
|
||||
checkproc $NETWORKMANAGER_BIN
|
||||
rc_status -v
|
||||
|
|
|
|||
|
|
@ -73,39 +73,6 @@ static gboolean state_is_down (guint8 state)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* nm_dhcp_manager_exec_daemon
|
||||
*
|
||||
* Launch the DHCP daemon.
|
||||
*
|
||||
*/
|
||||
static gboolean nm_dhcp_manager_exec_daemon (NMDHCPManager *manager)
|
||||
{
|
||||
GPtrArray *dhcp_argv;
|
||||
GError *error = NULL;
|
||||
GPid pid;
|
||||
|
||||
g_return_val_if_fail (manager != NULL, FALSE);
|
||||
|
||||
dhcp_argv = g_ptr_array_new ();
|
||||
g_ptr_array_add (dhcp_argv, (gpointer) DHCDBD_BINARY_PATH);
|
||||
g_ptr_array_add (dhcp_argv, (gpointer) "--system");
|
||||
g_ptr_array_add (dhcp_argv, NULL);
|
||||
|
||||
if (!g_spawn_async ("/", (char **) dhcp_argv->pdata, NULL, 0, NULL, NULL, &pid, &error))
|
||||
{
|
||||
g_ptr_array_free (dhcp_argv, TRUE);
|
||||
nm_warning ("Could not activate the DHCP daemon " DHCDBD_BINARY_PATH ". error: '%s'.", error->message);
|
||||
g_error_free (error);
|
||||
return FALSE;
|
||||
}
|
||||
g_ptr_array_free (dhcp_argv, TRUE);
|
||||
nm_info ("Activated the DHCP daemon " DHCDBD_BINARY_PATH " with PID %d.", pid);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
NMDHCPManager * nm_dhcp_manager_new (NMData *data)
|
||||
{
|
||||
NMDHCPManager * manager;
|
||||
|
|
@ -153,9 +120,8 @@ guint32 nm_dhcp_manager_get_state_for_device (NMDHCPManager *manager, NMDevice *
|
|||
|
||||
if (!manager->running)
|
||||
{
|
||||
if (nm_dhcp_manager_exec_daemon (manager) == FALSE)
|
||||
return 0;
|
||||
sleep (1);
|
||||
nm_warning ("dhcdbd not running!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
path = g_strdup_printf (DHCP_OBJECT_PATH"/%s", nm_device_get_iface (dev));
|
||||
|
|
@ -235,9 +201,8 @@ gboolean nm_dhcp_manager_begin_transaction (NMDHCPManager *manager, NMActRequest
|
|||
|
||||
if (!manager->running)
|
||||
{
|
||||
if (nm_dhcp_manager_exec_daemon (manager) == FALSE)
|
||||
return FALSE;
|
||||
sleep (1);
|
||||
nm_warning ("dhcdbd not running!");
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue