#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions . /usr/lib/network/globals . /etc/conf.d/netcfg 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" = "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 [[ -z "$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 [[ -n "$NET" ]]; then if /usr/bin/netcfg check-iface "$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 elif [[ $NETWORKS = "menu" ]]; then if /usr/bin/netcfg-menu "$NETWORKS_MENU_TIMEOUT"; then mv "$STATE_DIR"/menu "$STATE_DIR"/net-profiles add_daemon net-profiles exit 0 fi else # No NET= passed at boot, go to NETWORKS=() for network in "${NETWORKS[@]}"; do if [[ "$network" = "${network#@}" ]]; then if /usr/bin/netcfg check-iface "$network"; then echo "$network" >> "$STATE_DIR/net-profiles" add_daemon net-profiles 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 "${network#@}"; then echo "${network#@}" >> "$STATE_DIR/net-profiles" add_daemon net-profiles fi >/dev/null & PROFILE_BKGD=1 fi done fi if [[ ! -f "$STATE_DIR"/net-profiles && -z "$PROFILE_BKGD" ]]; then exit_err "No profile started." # JP: don't add_daemon unless we were successful (above) fi ;; 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 while read profile; do /usr/bin/netcfg down "$profile" done < "$STATE_DIR/net-profiles" 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: ft=sh ts=4 et sw=4: