| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- #!/bin/sh
 
- ########################################################################
 
- # Begin /sbin/ifdown
 
- #
 
- # Description : Interface Down
 
- #
 
- # Authors     : DJ Lucas - dj@linuxfromscratch.org
 
- #
 
- # Version     : 00.02
 
- #
 
- ########################################################################
 
- . /lib/lsb/init-functions
 
- function get_args()
 
-     {
 
-         if test -z "${1}" ; then
 
-             showhelp
 
-             exit 1
 
-         fi
 
-         while test -n "${1}" ; do
 
-             case "${1}" in
 
-                 -c | --configfile)
 
-                     check_arg $1 $2
 
-                     CONFIGFILE="${2}"
 
-                     shift 2
 
-                 ;;
 
-                 -f | --force)
 
-                     FORCE="1"
 
-                     shift 1
 
-                 ;;
 
-                 eth* | iw* | wlan*)
 
-                      INTERFACE="${1}"
 
-                      shift 1
 
-                 ;;
 
-                 -h | --help)
 
-                      showhelp
 
-                      exit 0
 
-                 ;;
 
-                 *)
 
-                    showhelp
 
-                    echo "ERROR: '${1}' unknown argument"
 
-                    echo ""
 
-                    exit 2
 
-                 ;;
 
-             esac
 
-         done
 
-     }
 
- function check_arg()
 
-     {
 
-         echo "${2}" | grep -v "^-" > /dev/null
 
-         if [ -z "${?}" -o ! -n "${2}" ]; then
 
-             echo "Error:  ${1} requires a valid argument."
 
-             exit 2
 
-         fi
 
-     }
 
- function showhelp()
 
-     {
 
-         echo ""
 
-         echo "`/usr/bin/basename ${0}` brings down a valid network interface."
 
-         echo ""
 
-         echo "Options:"
 
-         echo "          -c  --configfile    The path to an interface configuration file"
 
-         echo "                              If no configuration file is given, all files"
 
-         echo "                              listed in /etc/network/ifconfig.<int> will"
 
-         echo "                              be processed, regarless of the value of ONBOOT"
 
-         echo "          -f  --force         Flush all IPs and force the interface down."
 
-         echo "          -h  --help          Show this help message and exit."
 
-         echo ""
 
-         echo "Examples:"
 
-         echo "          `/usr/bin/basename ${0}` eth0 -c /run/network/ifconfig.eth0/ipv4"
 
-         echo "          `/usr/bin/basename ${0}` eth0 --force -c /run/network/ifconfig.eth0/ipv4"
 
-         echo "          `/usr/bin/basename ${0}` eth0 --force"
 
-         echo "          `/usr/bin/basename ${0}` eth0"
 
-         echo ""
 
-         echo ""
 
-     }
 
- # Intialize empty variables so that the shell does not polute the script
 
- CONFIGFILE=""
 
- CONFIGDIR=""
 
- INTERFACE=""
 
- FORCE=""
 
- failed=0
 
- # Process command line arguments
 
- get_args ${@}
 
- # Handle common errors - No need to account for bootscripts, this should not
 
- # happen during boot or shutdown.
 
- if [ "${CONFIGFILE}x" != "x" -a ! -f "${CONFIGFILE}" ]; then
 
-     echo "ERROR: ${CONFIGFILE} is not a valid network configuration file."
 
-     echo ""
 
-     exit 2
 
- fi
 
- if [ "${INTERFACE}x" == "x" ]; then
 
-     echo "ERROR: No interface was given"
 
-     echo ""
 
-     exit 2
 
- else
 
-     if ! grep "${INTERFACE}" /proc/net/dev 2>&1 > /dev/null; then
 
-         echo "ERROR: ${INTERFACE} is not a valid network interface."
 
-         echo ""
 
-         exit 2
 
-     fi
 
- fi
 
- # If a configuration file is present, use it
 
- if [ "${CONFIGFILE}x" != "x" ]; then
 
-     . "${CONFIGFILE}"
 
-     if [ -x "/lib/network-services/${SERVICE}" ]; then
 
-         # do the work
 
-         if IFCONFIG=${CONFIGFILE} \
 
-             /lib/network-services/${SERVICE} ${INTERFACE} down; then
 
-             rm "${CONFIGFILE}"
 
-         fi
 
-     else
 
-         echo "ERROR: Service '${SERVICE}' is not a valid service."
 
-         echo ""
 
-         exit 2
 
-     fi
 
- # No interface configuration file was given
 
- else
 
-     # Process all running interface configuration files
 
-     CONFIGDIR="/run/network/ifconfig.${INTERFACE}"
 
-     if [ -d "${CONFIGDIR}" ]; then
 
-         FILES=`ls "${CONFIGDIR}"`
 
-         for CONFIGFILE in ${FILES}
 
-         do
 
-             (
 
-                 . "${CONFIGDIR}/${CONFIGFILE}"
 
-                 # No error checking necessary if they are in /run
 
-                 if IFCONFIG="${CONFIGDIR}/${CONFIGFILE}" \
 
-                     /lib/network-services/${SERVICE} ${INTERFACE} down; then
 
-                     rm "${CONFIGDIR}/${CONFIGFILE}"
 
-                 fi
 
-             )
 
-         done
 
-         # all running config files processes, set the link down
 
-         message="Setting interface ${INTERFACE} down..."
 
-         /sbin/ip link set "${INTERFACE}" down
 
-         evaluate_retval standard
 
-     else
 
-         if [ "${FORCE}" != "1" ]; then
 
-             echo "ERROR: No configuration files found for ${INTERFACE}."
 
-             echo ""
 
-             exit 2
 
-         fi
 
-     fi
 
- fi
 
-     
 
- if [ "${FORCE}" == "1" ]; then
 
-     /sbin/ip addr flush dev "${INTERFACE}" 2>&1 > /dev/null || failed=1
 
-     if [ "${failed}" == "1" ]; then
 
-         log_failure_msg "Flushing IP addresses from interface ${INTERFACE}..."
 
-         echo ""
 
-         exit 1
 
-     else
 
-         log_success_msg "Flushing IP addresses from interface ${INTERFACE}..."
 
-     fi
 
-     /sbin/ip link set dev "${INTERFACE}" down 2>&1 > /dev/null || failed=1
 
-     if [ "${failed}" == "1" ]; then
 
-         log_failure_msg "Setting link down for interface ${INTERFACE}..."
 
-         echo ""
 
-         exit 1
 
-     else
 
-         log_success_msg "Setting link down for interface ${INTERFACE}..."
 
-     fi
 
- fi
 
- exit "${failed}"
 
 
  |