2006-02-27 Dan Williams <dcbw@redhat.com>

* dispatcher-daemon/NetworkManagerDispatcher.c
		- Accept --pid-file with a path to a pidfile, write it out on
			startup, and delete it on shutdown

	* src/NetworkManager.c
		- Accept --pid-file with a path to a pidfile, write it out on
			startup, and delete it on shutdown
		- Move nm_print_usage() lower

	* initscripts/RedHat/NetworkManager.in
		- Use new --pid-file option
		- Fix service stopping to wait a bit for NM to quit

	* initscripts/RedHat/NetworkManagerDispatcher.in
		- Use new --pid-file option


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1500 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2006-02-27 05:50:28 +00:00
parent b06df42628
commit e64e90cd3b
5 changed files with 114 additions and 31 deletions

View File

@@ -1,3 +1,21 @@
2006-02-27 Dan Williams <dcbw@redhat.com>
* dispatcher-daemon/NetworkManagerDispatcher.c
- Accept --pid-file with a path to a pidfile, write it out on
startup, and delete it on shutdown
* src/NetworkManager.c
- Accept --pid-file with a path to a pidfile, write it out on
startup, and delete it on shutdown
- Move nm_print_usage() lower
* initscripts/RedHat/NetworkManager.in
- Use new --pid-file option
- Fix service stopping to wait a bit for NM to quit
* initscripts/RedHat/NetworkManagerDispatcher.in
- Use new --pid-file option
2006-02-26 Dan Williams <dcbw@redhat.com>
* src/Makefile.am

View File

@@ -280,15 +280,32 @@ static void nmd_print_usage (void)
}
static gboolean
write_pidfile (const char *pidfile)
{
int fd;
int ignored;
char pid[16];
if ((fd = open (pidfile, O_CREAT | O_WRONLY, 00644)) < 0)
return FALSE;
snprintf (pid, sizeof (pid), "%d", getpid ());
ignored = write (fd, pid, strlen (pid));
close (fd);
return TRUE;
}
/*
* main
*
*/
int main (int argc, char *argv[])
{
gboolean become_daemon = TRUE;
GMainLoop *loop = NULL;
gboolean become_daemon = TRUE;
GMainLoop * loop = NULL;
DBusConnection *connection = NULL;
char * pidfile = NULL;
/* Parse options */
while (1)
@@ -299,6 +316,7 @@ int main (int argc, char *argv[])
static struct option options[] = {
{"no-daemon", 0, NULL, 0},
{"pid-file", 1, NULL, 0},
{"help", 0, NULL, 0},
{NULL, 0, NULL, 0}
};
@@ -318,6 +336,8 @@ int main (int argc, char *argv[])
}
else if (strcmp (opt, "no-daemon") == 0)
become_daemon = FALSE;
else if (strcmp (opt, "pid-file") == 0)
pidfile = g_strdup (optarg);
else
{
nmd_print_usage ();
@@ -344,6 +364,13 @@ int main (int argc, char *argv[])
if (!g_thread_supported ())
g_thread_init (NULL);
if (pidfile)
{
if (!write_pidfile (pidfile))
nm_warning ("Couldn't write pid file %s! errno: %s", pidfile,
strerror (errno));
}
/* Connect to the NetworkManager dbus service and run the main loop */
if ((connection = nmd_dbus_init ()))
{
@@ -351,5 +378,10 @@ int main (int argc, char *argv[])
g_main_loop_run (loop);
}
/* Clean up pidfile */
if (pidfile)
unlink (pidfile);
g_free (pidfile);
return 0;
}

View File

@@ -37,17 +37,16 @@ start()
echo $"Setting network parameters... "
sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
echo -n $"Starting NetworkManager daemon: "
daemon --check $servicename $processname
daemon --check $servicename $processname --pid-file=$pidfile
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename && echo `/sbin/pidof $processname` > $pidfile
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}
stop()
{
echo -n $"Stopping NetworkManager daemon: "
killproc $servicename -TERM
killproc -p $pidfile $servicename
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then

View File

@@ -32,16 +32,15 @@ RETVAL=0
start()
{
echo -n $"Starting NetworkManagerDispatcher daemon: "
daemon --check $servicename $processname
daemon --check $servicename $processname --pid-file=$pidfile
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename && echo `/sbin/pidof $processname` > $pidfile
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}
stop()
{
echo -n $"Stopping NetworkManagerDispatcher daemon: "
killproc $servicename -TERM
RETVAL=$?
echo

View File

@@ -495,28 +495,6 @@ static gboolean sigterm_pipe_handler (GIOChannel *src, GIOCondition condition, g
return FALSE;
}
/*
* nm_print_usage
*
* Prints program usage.
*
*/
static void nm_print_usage (void)
{
fprintf (stderr, "\n" "usage : NetworkManager [--no-daemon] [--help]\n");
fprintf (stderr,
"\n"
" --no-daemon Don't become a daemon\n"
" --enable-test-devices Allow dummy devices to be created via DBUS methods [DEBUG]\n"
" --help Show this information and exit\n"
"\n"
"NetworkManager monitors all network connections and automatically\n"
"chooses the best connection to use. It also allows the user to\n"
"specify wireless access points which wireless cards in the computer\n"
"should associate with.\n"
"\n");
}
static void nm_device_link_activated (NmNetlinkMonitor *monitor, const gchar *interface_name, NMData *data)
{
NMDevice *dev = NULL;
@@ -685,6 +663,47 @@ void nm_hal_deinit (NMData *data)
}
}
static gboolean
write_pidfile (const char *pidfile)
{
int fd;
int ignored;
char pid[16];
if ((fd = open (pidfile, O_CREAT | O_WRONLY, 00644)) < 0)
return FALSE;
snprintf (pid, sizeof (pid), "%d", getpid ());
ignored = write (fd, pid, strlen (pid));
close (fd);
return TRUE;
}
/*
* nm_print_usage
*
* Prints program usage.
*
*/
static void nm_print_usage (void)
{
fprintf (stderr, "\n" "usage : NetworkManager [--no-daemon] [--pid-file=<file>] [--help]\n");
fprintf (stderr,
"\n"
" --no-daemon Don't become a daemon\n"
" --pid-file=<path> Specify the location of a PID file\n"
" --enable-test-devices Allow dummy devices to be created via DBUS methods [DEBUG]\n"
" --help Show this information and exit\n"
"\n"
"NetworkManager monitors all network connections and automatically\n"
"chooses the best connection to use. It also allows the user to\n"
"specify wireless access points which wireless cards in the computer\n"
"should associate with.\n"
"\n");
}
/*
* main
*
@@ -694,6 +713,7 @@ int main( int argc, char *argv[] )
gboolean become_daemon = TRUE;
gboolean enable_test_devices = FALSE;
char * owner;
char * pidfile = NULL;
if (getuid () != 0)
{
@@ -711,6 +731,7 @@ int main( int argc, char *argv[] )
static struct option options[] = {
{"no-daemon", 0, NULL, 0},
{"enable-test-devices", 0, NULL, 0},
{"pid-file", 1, NULL, 0},
{"help", 0, NULL, 0},
{NULL, 0, NULL, 0}
};
@@ -732,6 +753,8 @@ int main( int argc, char *argv[] )
become_daemon = FALSE;
else if (strcmp (opt, "enable-test-devices") == 0)
enable_test_devices = TRUE;
else if (strcmp (opt, "pid-file") == 0)
pidfile = g_strdup (optarg);
break;
default:
@@ -755,6 +778,13 @@ int main( int argc, char *argv[] )
if (!g_thread_supported ())
g_thread_init (NULL);
dbus_g_thread_init ();
if (pidfile)
{
if (!write_pidfile (pidfile))
nm_warning ("Couldn't write pid file %s! errno: %s", pidfile,
strerror (errno));
}
nm_logging_setup (become_daemon);
nm_info ("starting...");
@@ -826,5 +856,10 @@ int main( int argc, char *argv[] )
nm_data_free (nm_data);
nm_logging_shutdown ();
/* Clean up pidfile */
if (pidfile)
unlink (pidfile);
g_free (pidfile);
exit (0);
}