#!/bin/bash ############################################################################### # # # IPFire.org - A linux based firewall # # Copyright (C) 2010 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # # # ############################################################################### . /usr/lib/network/header-zone HOOK_SETTINGS="HOOK MAC MTU" # Default values MAC=$(mac_generate) MTU=1500 function hook_check() { assert ismac MAC assert isinteger MTU } function hook_parse_cmdline() { while [ $# -gt 0 ]; do case "${1}" in --mtu=*) MTU=${1#--mtu=} ;; --mac=*) MAC=${1#--mac=} ;; *) warning "Ignoring unknown option '${1}'" ;; esac shift done } function hook_up() { local zone=${1} shift zone_config_read ${zone} # Create the interface. log INFO "Creating virtual switch '${zone}'." switch_create ${zone} [ -n "${MAC}" ] && device_set_address ${zone} ${MAC} [ -n "${MTU}" ] && device_set_mtu ${zone} ${MTU} # Bring it up. device_set_up ${zone} # Bring all ports up zone_ports_up ${zone} zone_configs_up ${zone} exit ${EXIT_OK} } function hook_down() { local zone=${1} shift zone_configs_down ${zone} zone_ports_down ${zone} # Bring it down. device_set_down ${zone} # Remove the virtual switch. log INFO "Removing virtual switch '${zone}'." switch_remove ${zone} exit ${EXIT_OK} } function hook_status() { local zone=${1} assert isset zone # Print the default header. cli_device_headline ${zone} # Exit if zone is down if ! zone_is_up ${zone}; then echo # Empty line exit ${EXIT_ERROR} fi cli_headline 2 "Spanning Tree Protocol information" if switch_stp_is_enabled ${zone}; then # local proto=$(stp_bridge_get_protocol ${zone}) # cli_print_fmt1 2 "Version" "$(stp_get_name ${proto})" # cli_print_fmt1 2 "ID" "$(stp_bridge_get_id ${zone})" # cli_print_fmt1 2 "Priority" "$(switch_stp_get_priority ${zone})" # if stp_bridge_is_root ${zone}; then # cli_print 2 "This bridge is root." # else # cli_print_fmt1 2 "Designated root" \ # "$(stp_bridge_get_designated_root ${zone})" # cli_print_fmt1 2 "Root path cost" \ # "$(stp_bridge_get_root_path_cost ${zone})" # fi # cli_space # # Topology information # cli_print_fmt1 2 "Topology changing" \ # "$(stp_bridge_get_topology_change_detected ${zone})" # cli_print_fmt1 2 "Topology change time" \ # "$(beautify_time $(stp_bridge_get_topology_change_timer ${zone}))" # cli_print_fmt1 2 "Topology change count" \ # "$(stp_bridge_get_topology_change_count ${zone})" # cli_space : else cli_print 2 "Disabled" cli_space fi #cli_headline 2 "Ports" #zone_ports_status ${zone} #cli_space #cli_headline 2 "Configurations" #zone_configs_cmd status ${zone} #cli_space exit ${EXIT_OK} }