diff options
author | Jouke Witteveen <j.witteveen@gmail.com> | 2012-04-11 13:40:19 +0200 |
---|---|---|
committer | Jouke Witteveen <j.witteveen@gmail.com> | 2012-04-11 13:40:19 +0200 |
commit | 0340759269f84f071b5b7ec11ae4691a8722c21a (patch) | |
tree | c17cb1b507c633038d3288af4ea8b9976c2416a1 /scripts/netcfg-daemon | |
parent | 7fab9eaf848004fd742e0513d620ced9ee7667a2 (diff) | |
download | netctl-0340759269f84f071b5b7ec11ae4691a8722c21a.tar.gz netctl-0340759269f84f071b5b7ec11ae4691a8722c21a.tar.xz |
Add netcfg-daemon
For reuse in a systemd service
Diffstat (limited to 'scripts/netcfg-daemon')
-rwxr-xr-x | scripts/netcfg-daemon | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/scripts/netcfg-daemon b/scripts/netcfg-daemon new file mode 100755 index 0000000..5a6a6d1 --- /dev/null +++ b/scripts/netcfg-daemon @@ -0,0 +1,67 @@ +#!/bin/bash +# +# This script implements support for the NETWORKS array in /etc/conf.d/netcfg. + +. /usr/lib/network/globals +STATE_FILE="$STATE_DIR/netcfg-daemon" + +case "$1" in + start) + (( $(id -u) )) && exit_stderr "This script should be run as root." + [[ -e $STATE_FILE ]] && exit_err "netcfg-daemon is already started" + . /etc/conf.d/netcfg + [[ ${NETWORKS+x} != x ]] && exit_err "NETWORKS is not set in /etc/conf.d/netcfg" + if [[ ${#NETWORKS[@]} -eq 1 && $NETWORKS = menu ]]; then + if /usr/bin/netcfg-menu ${NETWORKS_MENU_TIMEOUT-5}; then + mv "$STATE_DIR/menu" "$STATE_FILE" + fi + exit 0 + fi + for profile in "${NETWORKS[@]}"; do + if [[ "$profile" = "${profile#@}" ]]; then + if /usr/bin/netcfg check-iface "$profile"; then + echo "$profile" >> "$STATE_FILE" + fi + else + # It is up to the user to make sure no backgrounded profile + # uses an interface that is used by another active profile. + if /usr/bin/netcfg up "${profile#@}"; then + echo "$profile" >> "$STATE_FILE" + fi >/dev/null & + PROFILE_BKGD=1 + fi + done + # Generate a return value. + [[ -f $STATE_FILE || -n $PROFILE_BKGD ]] + ;; + stop) + (( $(id -u) )) && exit_stderr "This script should be run as root." + [[ ! -e $STATE_FILE ]] && exit_err "netcfg-daemon was not started" + tac "$STATE_FILE" | while read profile; do + if [[ "$profile" = "${profile#@}" ]]; then + if [[ -e "$STATE_DIR/profiles/$profile" ]]; then + /usr/bin/netcfg down "$profile" || exit 1 + fi + else + /usr/bin/netcfg down "${profile#@}" & + fi + done + rm -f "$STATE_FILE" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + status) + if [[ -e $STATE_FILE ]]; then + report_notice "profiles started by netcfg-daemon:" + cat "$STATE_FILE" + else + report_notice "netcfg-daemon was not started" + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" +esac + |