]> git.ipfire.org Git - people/ms/network.git/commitdiff
port: ethernet: Correctly create new configurations
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 Sep 2018 15:00:24 +0000 (17:00 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 Sep 2018 15:00:24 +0000 (17:00 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/functions/functions.settings
src/functions/functions.util
src/hooks/ports/ethernet

index becf3f0f16a67cf22f1e2b9fb0c79b8423594c41..69f4c238c286f36b20c9ee57633a0b597f2f3b60 100644 (file)
@@ -153,15 +153,16 @@ settings_write() {
                return ${EXIT_ERROR}
        fi
 
-       log DEBUG "Writing settings file '${settings_file}'"
+       if ! make_parent_directory "${settings_file}"; then
+               return ${EXIT_ERROR}
+       fi
 
-       mkdir -p $(dirname ${settings_file}) 2>/dev/null
-       > ${settings_file}
+       log DEBUG "Writing settings file '${settings_file}'"
 
        local param
        for param in $(list_sort "$@"); do
-               echo "${param}=\"${!param}\"" >> ${settings_file}
-       done
+               echo "${param}=\"${!param}\""
+       done > ${settings_file}
 }
 
 settings_remove() {
index 8831d84b3953c0aca5918bbc3840e6e5f4861edd..1be6dc14cc822d9038cdba7d326f57ab796c2f3f 100644 (file)
@@ -251,7 +251,13 @@ file_get_age() {
 make_directory() {
        local path="${1}"
 
-       mkdir -p "${path}"
+       if ! mkdir -p "${path}"; then
+               log ERROR "Could not create directory ${path}"
+               return ${EXIT_ERROR}
+       fi
+
+       log DEBUG "Created directory ${path}"
+       return ${EXIT_OK}
 }
 
 make_parent_directory() {
index 9222bce65a5ee60d769b08ca1cdf664c89c5492d..18e9d57c35e10bfe366e875b6ad4e1892acc7c1c 100644 (file)
@@ -100,6 +100,22 @@ hook_parse_cmdline() {
        done
 }
 
+# This function is only called automatically by hotplug to create
+# a new ethernet port.
+hook_new() {
+       local port="${1}"
+       assert isset port
+
+       local DEVICE="$(device_get_address "${port}")"
+
+       if ! port_settings_write "${port}" ${HOOK_SETTINGS}; then
+               log ERROR "Could not write settings for port ${port}"
+               return ${EXIT_ERROR}
+       fi
+
+       return ${EXIT_OK}
+}
+
 hook_create() {
        return ${EXIT_OK}
 }