]> git.ipfire.org Git - people/stevee/network.git/blobdiff - src/network
Remove the function keyword which is a bashism
[people/stevee/network.git] / src / network
index eccf2f43c9990101173a61e0b95b89c0694d91ef..e5a71db9a863c7bee594a1eda7f60600989d97ca 100644 (file)
@@ -38,7 +38,7 @@ done
 # Read network settings
 network_settings_read
 
-function cli_settings() {
+cli_settings() {
        if cli_help_requested $@; then
                cli_show_man network-settings
                exit ${EXIT_OK}
@@ -52,50 +52,60 @@ function cli_settings() {
        fi
 }
 
-function cli_device() {
+cli_device() {
        if cli_help_requested $@; then
                cli_show_man network-device
                exit ${EXIT_OK}
        fi
 
-       local device=${1}
-       local action=${2}
-       shift 2
-
-       if ! isset device; then
-               cli_show_man network-device
-               return ${EXIT_ERROR}
-       fi
-
-       assert device_exists ${device}
+       local action="${1}"
+       shift
 
        case "${action}" in
-               discover)
-                       cli_device_discover ${device} $@
-                       ;;
-               monitor)
-                       cli_device_monitor "${device}" $@
-                       ;;
-               status)
-                       cli_device_status ${device}
-                       ;;
-               unlock)
-                       cli_device_serial_unlock ${device} $@
-                       ;;
-               ussd)
-                       cli_device_send_ussd_command "${device}" $@
+               list)
+                       cli_device_list $@
                        ;;
                *)
-                       cli_show_man network-device
+                       local device="${action}"
+                       action="${1}"
+                       shift
+
+                       if ! isset device; then
+                               cli_show_man network-device
+                               return ${EXIT_ERROR}
+                       fi
+
+                       assert device_exists ${device}
+
+                       case "${action}" in
+                               discover)
+                                       cli_device_discover ${device} $@
+                                       ;;
+                               monitor)
+                                       cli_device_monitor "${device}" $@
+                                       ;;
+                               status)
+                                       cli_device_status ${device}
+                                       ;;
+                               unlock)
+                                       cli_device_serial_unlock ${device} $@
+                                       ;;
+                               ussd)
+                                       cli_device_send_ussd_command "${device}" $@
+                                       ;;
+                               *)
+                                       cli_show_man network-device
+                                       ;;
+                       esac
                        ;;
        esac
 
        return ${EXIT_OK}
 }
 
-function cli_device_status() {
-       local device=${1}
-       assert device_exists ${device}
+cli_device_status() {
+       local device="${1}"
+       assert isset device
 
        # Disable debugging output here.
        local log_disable_stdout=${LOG_DISABLE_STDOUT}
@@ -107,11 +117,17 @@ function cli_device_status() {
        cli_headline 1 "Device status: ${device}"
        cli_print_fmt1 1 "Name"         "${device}"
 
-       # Handle serial devices.
-       if [ "${type}" = "serial" ]; then
-               cli_device_status_serial ${device}
-               return $?
-       fi
+       # Handle special devices
+       case "${type}" in
+               phy)
+                       cli_device_status_phy "${device}"
+                       return $?
+                       ;;
+               serial)
+                       cli_device_status_serial "${device}"
+                       return $?
+                       ;;
+       esac
 
        # Print the device status.
        device_is_up ${device} &>/dev/null
@@ -128,6 +144,11 @@ function cli_device_status() {
 
        cli_print_fmt1 1 "Status"       "${status}"
        cli_print_fmt1 1 "Type"         "${type}"
+
+       # Ethernet-compatible?
+       device_is_ethernet_compatible "${device}" &>/dev/null
+       cli_print_fmt1 1 "Ethernet-compatible" "$(cli_print_bool $?)"
+
        cli_print_fmt1 1 "Address"      "$(device_get_address ${device})"
        cli_space
 
@@ -165,11 +186,23 @@ function cli_device_status() {
                cli_space
        fi
 
+       case "${type}" in
+               wireless*)
+                       local phy="$(device_get_phy "${device}")"
+                       if isset phy; then
+                               cli_headline 2 "PHY"
+                               cli_print_fmt1 2 "Name" "${phy}"
+                               cli_print_fmt1 2 "Address" "$(phy_get_address "${phy}")"
+                               cli_space
+                       fi
+                       ;;
+       esac
+
        # Reset the logging level.
        LOG_DISABLE_STDOUT=${log_disable_stdout}
 }
 
-function cli_device_status_serial() {
+cli_device_status_serial() {
        local device=${1}
        assert device_is_serial ${device}
 
@@ -230,12 +263,34 @@ function cli_device_status_serial() {
        cli_space
 }
 
-function cli_device_discover() {
+cli_device_status_phy() {
+       local phy="${1}"
+       assert phy_exists "${phy}"
+
+       local address="$(phy_get_address "${phy}")"
+       cli_print_fmt1 1 "Address" "${address}"
+       cli_space
+
+       local devices="$(phy_get_devices "${phy}")"
+       if isset devices; then
+               cli_headline 2 "Soft interfaces"
+
+               local device
+               for device in ${devices}; do
+                       cli_print 2 "* %s" "${device}"
+               done
+               cli_space
+       fi
+
+       return ${EXIT_OK}
+}
+
+cli_device_discover() {
        local device=${1}
        shift
 
-       local device_type=$(device_get_type ${device})
-       if [ "${device_type}" != "real" ]; then
+       # This can only be executed for ethernet (or compatible) devices
+       if ! device_is_ethernet_compatible "${device}"; then
                return ${EXIT_OK}
        fi
 
@@ -301,7 +356,7 @@ function cli_device_discover() {
        [ "${up}" = "1" ] || device_set_down ${device}
 }
 
-function cli_device_serial_unlock() {
+cli_device_serial_unlock() {
        if cli_help_requested $@; then
                cli_show_man network-device
                exit ${EXIT_OK}
@@ -387,7 +442,7 @@ function cli_device_serial_unlock() {
        exit $?
 }
 
-function cli_device_send_ussd_command() {
+cli_device_send_ussd_command() {
        local device="${1}"
        assert isset device
        shift
@@ -422,7 +477,7 @@ function cli_device_send_ussd_command() {
        exit $?
 }
 
-function cli_device_monitor() {
+cli_device_monitor() {
        local device="${1}"
        assert isset device
 
@@ -435,7 +490,16 @@ function cli_device_monitor() {
        exit $?
 }
 
-function cli_hostname() {
+cli_device_list() {
+       local device
+       for device in $(device_list); do
+               cli_device_status "${device}"
+       done
+
+       exit ${EXIT_OK}
+}
+
+cli_hostname() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -454,7 +518,7 @@ function cli_hostname() {
        exit ${EXIT_OK}
 }
 
-function cli_port() {
+cli_port() {
        if cli_help_requested $@; then
                cli_show_man network-port
                exit ${EXIT_OK}
@@ -493,7 +557,7 @@ function cli_port() {
        fi
 }
 
-function cli_zone() {
+cli_zone() {
        if cli_help_requested $@; then
                cli_show_man network-zone
                exit ${EXIT_OK}
@@ -521,7 +585,10 @@ function cli_zone() {
                esac
 
                case "${action}" in
-                       config|disable|down|edit|enable|port|status|up)
+                       port)
+                               cli_zone_port "${zone}" $@
+                               ;;
+                       config|disable|down|edit|enable|status|up)
                                zone_${action} ${zone} $@
                                ;;
                        *)
@@ -535,11 +602,11 @@ function cli_zone() {
                shift
 
                case "${action}" in
-                       create)
-                               zone_${action} $@
+                       new)
+                               zone_new $@
                                ;;
-                       remove)
-                               cli_zone_remove $@
+                       destroy)
+                               cli_zone_destroy $@
                                ;;
                        list-hooks)
                                cli_list_hooks zone $@
@@ -560,27 +627,71 @@ function cli_zone() {
 # Removes a zone either immediately, if it is currently down,
 # or adds a tag that the removal will be done when the zone
 # is brought down the next time.
-function cli_zone_remove() {
+cli_zone_destroy() {
        if cli_help_requested $@; then
                cli_show_man network-zone
                exit ${EXIT_OK}
        fi
 
-       local zone=${1}
-       assert zone_exists ${zone}
+       local zone="${1}"
+       assert zone_exists "${zone}"
 
        if zone_is_up ${zone}; then
                echo "Zone '${zone}' is up and will be removed when it goes down the next time."
-               zone_remove ${zone}
+               zone_destroy "${zone}"
        else
                echo "Removing zone '${zone}' now..."
-               zone_remove_now ${zone}
+               zone_destroy_now "${zone}"
        fi
 
        exit ${EXIT_OK}
 }
 
-function cli_list_hooks() {
+cli_zone_port() {
+       if cli_help_requested $@; then
+               cli_show_man network-zone-port
+               exit ${EXIT_OK}
+       fi
+
+       local zone="${1}"
+       assert zone_exists "${zone}"
+
+       if port_exists "${2}"; then
+               local port="${2}"
+               local action="${3}"
+               shift 3
+
+               case "${action}" in
+                       edit)
+                               zone_port_edit "${zone}" "${port}" $@
+                               ;;
+                       *)
+                               error "Unrecognised argument: ${action}"
+                               exit ${EXIT_ERROR}
+                               ;;
+               esac
+       else
+               local action="${2}"
+               shift 2
+
+               case "${action}" in
+                       attach)
+                               zone_port_attach "${zone}" $@
+                               ;;
+                       detach)
+                               zone_port_detach "${zone}" $@
+                               ;;
+                       *)
+                               error "Unrecognised argument: ${action}"
+                               exit ${EXIT_ERROR}
+                               ;;
+               esac
+       fi
+
+       exit ${EXIT_OK}
+}
+
+cli_list_hooks() {
        local type=${1}
        shift
 
@@ -600,7 +711,7 @@ function cli_list_hooks() {
        done | sort -u
 }
 
-function cli_route() {
+cli_route() {
        if cli_help_requested $@; then
                cli_show_man network-route
                exit ${EXIT_OK}
@@ -637,7 +748,7 @@ function cli_route() {
        exit ${EXIT_OK}
 }
 
-function cli_dhcpd() {
+cli_dhcpd() {
        local proto=${1}
        shift
 
@@ -679,7 +790,7 @@ function cli_dhcpd() {
        exit ${EXIT_OK}
 }
 
-function cli_dhcpd_show() {
+cli_dhcpd_show() {
        local proto=${1}
        assert isset proto
 
@@ -749,7 +860,7 @@ function cli_dhcpd_show() {
        fi
 }
 
-function cli_dhcpd_subnet() {
+cli_dhcpd_subnet() {
        local proto=${1}
        shift
 
@@ -826,7 +937,7 @@ function cli_dhcpd_subnet() {
        exit ${EXIT_OK}
 }
 
-function cli_dhcpd_subnet_range() {
+cli_dhcpd_subnet_range() {
        local proto=${1}
        assert isset proto
        shift
@@ -855,7 +966,7 @@ function cli_dhcpd_subnet_range() {
        esac
 }
 
-function cli_dhcpd_subnet_show() {
+cli_dhcpd_subnet_show() {
        local proto=${1}
        assert isset proto
 
@@ -885,7 +996,7 @@ function cli_dhcpd_subnet_show() {
                cli_headline $(( ${level} + 2 )) "Options"
 
                local option
-               for option in $(dhcpd_subnet_options ${proto}); do
+               for option in $(dhcpd_subnet_options_list ${proto}); do
                        [ -n "${options[${option}]}" ] || continue
 
                        cli_print_fmt1 $(( ${level} + 2 )) \
@@ -913,7 +1024,7 @@ function cli_dhcpd_subnet_show() {
        cli_space
 }
 
-function cli_dhcpd_options() {
+cli_dhcpd_subnet_options() {
        local proto=${1}
        assert isset proto
        shift
@@ -922,8 +1033,6 @@ function cli_dhcpd_options() {
        assert isset subnet_id
        shift
 
-       local valid_options=$(dhcpd_subnet_options ${proto})
-
        local key val
        while [ $# -gt 0 ]; do
                case "${1}" in
@@ -936,7 +1045,7 @@ function cli_dhcpd_options() {
        done
 }
 
-function cli_start() {
+cli_start() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -952,7 +1061,7 @@ function cli_start() {
        wait # until everything is settled
 }
 
-function cli_stop() {
+cli_stop() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -968,7 +1077,7 @@ function cli_stop() {
        wait # until everything is settled
 }
 
-function cli_restart() {
+cli_restart() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -982,7 +1091,7 @@ function cli_restart() {
        cli_start $@
 }
 
-function cli_status() {
+cli_status() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -1005,7 +1114,7 @@ function cli_status() {
        LOG_DISABLE_STDOUT=${log_disable_stdout}
 }
 
-function cli_reset() {
+cli_reset() {
        if cli_help_requested $@; then
                cli_show_man network
                exit ${EXIT_OK}
@@ -1035,7 +1144,7 @@ function cli_reset() {
 
        local zone
        for zone in $(zones_get --all); do
-               zone_remove ${zone}
+               zone_destroy_now "${zone}"
        done
 
        local port
@@ -1055,7 +1164,7 @@ function cli_reset() {
 # Help function: will show the default man page to the user.
 # Optionally, there are two arguments taken, the type of hook
 # and which hook should be shown.
-function cli_help() {
+cli_help() {
        local type=${1}
        local what=${2}
 
@@ -1078,7 +1187,7 @@ function cli_help() {
        hook_exec ${type} ${what} help
 }
 
-function cli_dns_server() {
+cli_dns_server() {
        if cli_help_requested $@; then
                cli_show_man network-dns-server
                exit ${EXIT_OK}
@@ -1097,7 +1206,7 @@ function cli_dns_server() {
 
        case "${cmd}" in
                list)
-                       dns_server_list
+                       dns_server_show
                        exit ${EXIT_OK}
                        ;;
                add)
@@ -1133,6 +1242,57 @@ function cli_dns_server() {
        exit ${EXIT_OK}
 }
 
+cli_raw() {
+       local cmd="${1}"
+       assert isset cmd
+       shift
+
+       case "${cmd}" in
+               list-devices)
+                       device_list
+                       ;;
+               list-dhcpd-ranges-of-subnet)
+                       dhcpd_subnet_range_list $@
+                       ;;
+               list-dhcpd-settings)
+                       dhcpd_global_settings_list $@
+                       ;;
+               list-dhcpd-subnets)
+                       dhcpd_subnet_list $@
+                       ;;
+               list-dhcpd-subnet-options)
+                       dhcpd_subnet_options_list $@
+                       ;;
+               list-dns-servers)
+                       dns_server_list
+                       ;;
+               list-free-ports)
+                       port_list_free
+                       ;;
+               list-hooks)
+                       hook_list $@
+                       ;;
+               list-ports)
+                       port_list
+                       ;;
+               list-ports-of-zone)
+                       zone_get_ports $@
+                       ;;
+               list-settings)
+                       network_settings_list
+                       ;;
+               list-zones)
+                       zones_get_all
+                       ;;
+               *)
+                       error "No such command: ${cmd}"
+                       exit ${EXIT_ERROR}
+                       ;;
+       esac
+
+       exit ${EXIT_OK}
+}
+
 # Process the given action
 case "${action}" in
        init)
@@ -1157,6 +1317,10 @@ case "${action}" in
                cli_help $@
                ;;
 
+       raw)
+               cli_raw $@
+               ;;
+
        *)
                error "Invalid command given: ${action}"
                cli_usage "network help"