From: Michael Tremer Date: Fri, 18 Sep 2009 13:10:34 +0000 (+0200) Subject: network: Improvements. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d28dce25a12c86cdb890b2756a7b6d56941175cf;p=ipfire-3.x.git network: Improvements. Can now delete ports (theoretically) and zones. New raw output for parsing. --- diff --git a/src/network/functions b/src/network/functions index 33b85a744..37fd8f1a7 100644 --- a/src/network/functions +++ b/src/network/functions @@ -53,6 +53,20 @@ function is_mac() { [[ $1 =~ ^[0-9a-f][0-9a-f]\:[0-9a-f][0-9a-f]\:[0-9a-f][0-9a-f]\:[0-9a-f][0-9a-f]\:[0-9a-f][0-9a-f]\:[0-9a-f][0-9a-f]$ ]] } +function is_uuid() { + local string=${1} + + # Length must be 37 characters + if [ ${#string} -eq 36 ] \ + && [ "${string:8:1}" = "-" ] \ + && [ "${string:13:1}" = "-" ] \ + && [ "${string:18:1}" = "-" ] \ + && [ "${string:23:1}" = "-" ]; then + return ${EXIT_OK} + fi + return ${EXIT_ERROR} +} + function get_device_by_mac() { local mac=${1} local device @@ -195,10 +209,15 @@ function device_is_ppp() { [ "${1:0:3}" = "ppp" ] } +function device_is_loopback() { + local device=$(devicify ${1}) + [ "${device}" = "lo" ] +} + function device_is_real() { local device=${1} - [ "${device}" = "lo" ] && \ + device_is_loopback ${device} && \ return ${EXIT_ERROR} device_is_bonding ${device} && \ @@ -216,6 +235,32 @@ function device_is_real() { return ${EXIT_OK} } +function device_type() { + local device=$(devicify ${1}) + + if device_is_vlan ${device}; then + echo "vlan" + + elif device_is_bonding ${device}; then + echo "bonding" + + elif device_is_bridge ${device}; then + echo "bridge" + + elif device_is_ppp ${device}; then + echo "ppp" + + elif device_is_loopback ${device}; then + echo "loopback" + + elif device_is_real ${device}; then + echo "real" + + else + echo "unknown" + fi +} + function device_has_vlans() { if [ ! -e "/proc/net/vlan/config" ]; then return 1 diff --git a/src/network/network b/src/network/network index bfdccb9ba..2bcbbe1c0 100644 --- a/src/network/network +++ b/src/network/network @@ -203,10 +203,18 @@ function _exit() { esac shift done + if [ "${reload}" = "1" ]; then # Reloading network to apply changes immediately vecho "Reloading network settings..." cmd $0 reload + + # Reload firewall, too + firewall=$(which firewall 2>/dev/null) + if [ -n "${firewall}" ]; then + vecho "Reloading firewall..." + cmd ${firewall} reload + fi fi decho "Exiting with code ${code}." @@ -244,7 +252,17 @@ function size() { } function port_show() { - local port=$(devicify $1) + local port + if [ $# -eq 0 ]; then + for port in /sys/class/net/*; do + port=${port##*/} + device_is_real ${port} || continue + port_show ${port} + done + return + fi + + port=$(devicify $1) echo "##################################################" echo "#" @@ -277,14 +295,34 @@ function port_show() { echo "#" } +function port_raw() { + local port + if [ $# -eq 0 ]; then + for port in /sys/class/net/*; do + port=${port##*/} + device_is_real ${port} || continue + port_raw ${port} + done + return + fi + + port=$(devicify $1) + + cat <