#!/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 . # # # ############################################################################### INFO_SETTINGS="HOOK PORT_PARENTS PORT_CHILDREN" # This function is called after a device has been plugged # into the system and got its correct name. # The function is intended to create child ports and things # like that. hook_hotplug() { # If the hook does not handle the hotplug event, it # must return EXIT_NOT_HANDLED. exit ${EXIT_NOT_HANDLED} } # This function gets called when a device is plugged in # to determine the right name. # The first argument is the port which should be tested # against the second argument which is the device that # has been plugged in. hook_hotplug_rename() { exit ${EXIT_FALSE} } hook_add() { cmd_not_implemented } hook_info() { local port="${1}" assert isset port shift settings_read "$(port_file ${port})" local key val for key in PORT_PARENTS PORT_CHILDREN; do val="${key}_VAR" val=${!val} eval "${key}=\"${!val}\"" done for key in ${INFO_SETTINGS}; do echo "${key}=\"${!key}\"" done exit ${ERROR_OK} } hook_status() { local port="${1}" assert isset port cli_device_headline "${port}" --long exit ${EXIT_OK} } # Create any virtual devices, but don't bring them up # Must tolerate that the device may already exist hook_create() { cmd_not_implemented } # Must tolerate that the device may not exist hook_remove() { cmd_not_implemented } # Just bring up the device hook_default_up() { local port="${1}" assert isset port if ! device_exists "${port}"; then log ERROR "Port '${port}' does not exist and cannot be brought up" exit ${EXIT_ERROR} fi # Bring up the port device_set_up "${port}" # Bring up all slaves if the port has any local slave for slave in $(port_get_slaves "${port}"); do port_up "${slave}" done } hook_up() { hook_default_up $@ } hook_default_down() { local port="${1}" assert isset port if device_exists "${port}"; then device_set_down "${port}" fi # Bring down all slaves if the port has any local slave for slave in $(port_get_slaves "${port}"); do port_down "${slave}" done } hook_down() { hook_default_down $@ }