INFO_SETTINGS="HOOK PORT_PARENTS PORT_CHILDREN"
+HOOK_PORT_PATTERN="${PORT_PATTERN}"
+
# 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
exit ${EXIT_FALSE}
}
-hook_add() {
- cmd_not_implemented
+hook_hotplug_rename_by_address() {
+ local port="${1}"
+ assert isset port
+
+ local device="${2}"
+ assert isset device
+
+ # Read in the conifguration file.
+ if ! port_settings_read "${port}"; then
+ return ${EXIT_ERROR}
+ fi
+
+ # Get the current MAC address of the device.
+ local address="$(device_get_address "${device}")"
+ assert isset address
+
+ # Check if the address matches with the configuration.
+ if list_match "${address}" "${ADDRESS}" "${DEVICE}"; then
+ log DEBUG "Device '${device}' is port '${port}'"
+ return ${EXIT_OK}
+ fi
+
+ log DEBUG "Device '${device}' is not port '${port}'"
+ return ${EXIT_ERROR}
+}
+
+# Returns the suggested name of the port
+hook_find_port_name() {
+ assert isset HOOK_PORT_PATTERN
+ port_find_free "${HOOK_PORT_PATTERN}"
+}
+
+hook_default_new() {
+ local ${HOOK_SETTINGS[*]}
+
+ # Import all default variables
+ hook_set_defaults
+
+ if ! hook_parse_cmdline "$@"; then
+ return ${EXIT_ERROR}
+ fi
+
+ # Determine a name for this port
+ local port="$(hook_find_port_name)"
+ assert isset port
+
+ # Save settings
+ if ! port_settings_write "${port}" ${HOOK_SETTINGS[*]}; then
+ return ${EXIT_ERROR}
+ fi
+
+ return ${EXIT_OK}
+}
+
+hook_new() {
+ hook_default_new "$@"
}
hook_default_edit() {
assert isset port
shift
- port_settings_read "${port}" ${HOOK_SETTINGS}
+ # Read settings
+ if ! port_settings_read "${port}" ${HOOK_SETTINGS[*]}; then
+ error "Could not read settings for port ${port}"
+ return ${EXIT_ERROR}
+ fi
+
+ # Parse command line arguments
+ if ! hook_parse_cmdline "$@"; then
+ return ${EXIT_ERROR}
+ fi
- if ! hook_parse_cmdline $@; then
+ # Save settings
+ if ! port_settings_write "${port}" ${HOOK_SETTINGS[*]}; then
+ error "Could not write settings for port ${port}"
return ${EXIT_ERROR}
fi
- port_settings_write "${port}" ${HOOK_SETTINGS}
+ # Apply settings
+ port_restart "${port}"
return ${EXIT_OK}
}
hook_edit() {
- hook_default_edit $@
+ hook_default_edit "$@"
}
# Returns a list of all children of this port
hook_children() {
local port="${1}"
- if ! port_settings_read "${port}" ${HOOK_SETTINGS}; then
+ if ! port_settings_read "${port}" ${HOOK_SETTINGS[*]}; then
log ERROR "Could not read port settings: ${port}"
return ${EXIT_OK}
fi
print "${SLAVES}"
}
-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}
-
- assign "${key}" "${!val}"
- done
-
- for key in ${INFO_SETTINGS}; do
- echo "${key}=\"${!key}\""
- done
-
- exit ${ERROR_OK}
-}
-
hook_status() {
local port="${1}"
assert isset port
done
}
+# Depends on the port existing
hook_up() {
- hook_default_up $@
+ hook_default_up "$@"
}
hook_default_down() {
}
hook_down() {
- hook_default_down $@
+ hook_default_down "$@"
}