/* * Start NetworkManager -- requires that you have already written out the * control files in /etc/sysconfig for the interface. */ int iface_start_NetworkManager(void) { pid_t pid; if (is_nm_running()) return 0; /* already running */ /* Start NetworkManager */ pid = fork(); if (pid == 0) { if (setpgrp() == -1) { exit(1); } if (_iface_redirect_io("/dev/null", STDIN_FILENO, O_RDONLY) || _iface_redirect_io(OUTPUT_TERMINAL, STDOUT_FILENO, O_WRONLY) || _iface_redirect_io(OUTPUT_TERMINAL, STDERR_FILENO, O_WRONLY)) { exit(2); } if (execl(NETWORKMANAGER, NETWORKMANAGER, "--pid-file=/var/run/NetworkManager/NetworkManager.pid", NULL) == -1) { exit(3); } } else if (pid == -1) { return 1; } else { return wait_for_nm(); } return 0; }
/* * Start NetworkManager -- requires that you have already written out the * control files in /etc/sysconfig for the interface. */ int iface_start_NetworkManager(DBusConnection *connection, char **error) { pid_t pid; int ret, running = 0; char *ignore = NULL; ret = is_nm_running(connection, &running, &ignore); if (ignore) free(ignore); if (ret == 0 && running) return 0; /* already running */ /* Start NetworkManager */ pid = fork(); if (pid == 0) { if (setpgrp() == -1) { exit(1); } if (_iface_redirect_io("/dev/null", STDIN_FILENO, O_RDONLY) || _iface_redirect_io(OUTPUT_TERMINAL, STDOUT_FILENO, O_WRONLY) || _iface_redirect_io(OUTPUT_TERMINAL, STDERR_FILENO, O_WRONLY)) { exit(2); } if (execl(NETWORKMANAGER, NETWORKMANAGER, "--pid-file=/var/run/NetworkManager/NetworkManager.pid", NULL) == -1) { exit(3); } } else if (pid == -1) { return 1; } else { return wait_for_nm(connection, error); } return 0; }