]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/header-port
Refactor network-hotplug-rename
[people/ms/network.git] / src / header-port
index 8756e24065ccf7e5014a57236dfbb06a192407ca..6cf0cc9fb83c854b2810cbd9dfa6868319e82245 100644 (file)
@@ -40,8 +40,24 @@ hook_hotplug_rename() {
        exit ${EXIT_FALSE}
 }
 
-hook_add() {
-       cmd_not_implemented
+hook_default_new() {
+       local ${HOOK_SETTINGS}
+       if ! hook_parse_cmdline "$@"; then
+               return ${EXIT_ERROR}
+       fi
+
+       assert isset HOOK_PORT_PATTERN
+
+       local port=$(port_find_free ${HOOK_PORT_PATTERN})
+       assert isset port
+
+       port_settings_write "${port}" ${HOOK_SETTINGS}
+
+       exit ${EXIT_OK}
+}
+
+hook_new() {
+       hook_default_new "$@"
 }
 
 hook_default_edit() {
@@ -49,41 +65,43 @@ 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 "$@"
 }
 
-hook_info() {
+# Returns a list of all children of this port
+hook_children() {
        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
+       if ! port_settings_read "${port}" ${HOOK_SETTINGS}; then
+               log ERROR "Could not read port settings: ${port}"
+               return ${EXIT_OK}
+       fi
 
-       exit ${ERROR_OK}
+       print "${SLAVES}"
 }
 
 hook_status() {
@@ -125,8 +143,9 @@ hook_default_up() {
        done
 }
 
+# Depends on the port existing
 hook_up() {
-       hook_default_up $@
+       hook_default_up "$@"
 }
 
 hook_default_down() {
@@ -145,5 +164,5 @@ hook_default_down() {
 }
 
 hook_down() {
-       hook_default_down $@
+       hook_default_down "$@"
 }