#!/bin/bash . /usr/lib/network/globals case "$1" in start) if ! ck_daemon net-profiles; then exit_stderr "net-profiles has already been started. Try '/etc/rc.d/net-profiles restart'" fi # Ensure any device renaming has occurred as intended for daemon in "${DAEMONS[@]}"; do if [ "$daemon" = "${daemon#!}" -a "$daemon" = "net-rename" ]; then if ck_daemon net-rename; then /etc/rc.d/net-rename start fi fi done # $NET env var is passed from the kernel boot line [ ! "$NETWORKS_MENU_TIMEOUT" ] && NETWORKS_MENU_TIMEOUT=5 if [[ "$NET" = "menu" ]]; then if /usr/bin/netcfg-menu "$NETWORKS_MENU_TIMEOUT"; then mv "$STATE_DIR"/{menu,net-profiles} # JP: user may want to disconnect profile by calling net-profiles stop add_daemon net-profiles exit 0 fi elif [[ "$NET" ]]; then if /usr/bin/netcfg2 -c "$NET"; then echo "$NET" > "$STATE_DIR/net-profiles" # JP: user may want to disconnect profile by calling net-profiles stop add_daemon net-profiles exit 0 fi else # No NET= passed at boot, go to NETWORKS=() for network in "${NETWORKS[@]}"; do case "$network" in menu) # Pull up menu of networks if /usr/bin/netcfg-menu "$NETWORKS_MENU_TIMEOUT"; then mv "$STATE_DIR"/{menu,net-profiles} # JP: user may want to disconnect profile by calling net-profiles stop add_daemon net-profiles exit 0 fi break # if netcfg-menu was called but failed: exit for loop ;; *) # Either interface or profile if [ "$network" = "${network#!}" ]; then # otherwise profile if /usr/bin/netcfg2 -c "$network"; then echo "$network" > "$STATE_DIR/net-profiles" # JP: user may want to disconnect profile by calling net-profiles stop add_daemon net-profiles exit 0 fi fi ;; esac done fi exit_err "No profile started." # JP: don't add_daemon unless we were successful (above) ;; stop) if ck_daemon net-profiles; then exit_stderr "net-profiles not running" fi # shutdown any profiles started by netcfg (or from NET_PROFILES in rc.conf) # JP: only attempt to disconnect the profiles _this daemon_ was told to control cat "${state_DIR}/net-profiles" 2>/dev/null | xargs -d'\n' /usr/bin/netcfg2 down # JP: use xargs in case any of the profile names contain spaces etc rm -f "$STATE_DIR/net-profiles" rm_daemon net-profiles ;; restart) "$0" stop; sleep 1; "$0" start ;; *) exit_stderr "Usage: $0 {start|stop|restart}" esac # vim: set ts=4 et sw=4: