From: Jonatan Schlag Date: Fri, 14 Jul 2017 12:19:42 +0000 (+0200) Subject: header-zone: refactor hook_config_destroy X-Git-Tag: 009~114 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6ef07140242e17ba27af8ccaaa60a3d3f471dee;p=network.git header-zone: refactor hook_config_destroy We now just bring the hook down, execute hook_destroy which can be not empty inside the hook, because it is defined in src/header-config. After this we delete the config file. Fixes: #11416 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- diff --git a/src/header-config b/src/header-config index e3c64233..868dce49 100644 --- a/src/header-config +++ b/src/header-config @@ -76,3 +76,7 @@ hook_edit() { exit ${EXIT_OK} } + +hook_destroy() { + return ${EXIT_OK} +} diff --git a/src/header-zone b/src/header-zone index 219b0d62..189fbc38 100644 --- a/src/header-zone +++ b/src/header-zone @@ -243,7 +243,21 @@ hook_config_destroy() { local hook=$(zone_config_get_hook_from_id ${zone} ${id}) assert isset hook - hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@" + # First we bring the hook down + hook_config_cmd "down" "${zone}" "${hook}" "${hook}.${id}" + + # If a hook_destroy function is implemented in the hook this function will be executed. + # If not a empty defined in header-config is executed. + if ! hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@"; then + + # A better error message should printed inside the hook. + # We will not bring the config up because we do not know if it is safe or if some parts are already destroyed. + log ERROR "Could not destroy config with the follwoing id: ${id}" + return ${EXIT_ERROR} + fi + + # Now we delete the config of the zone + zone_config_settings_destroy "${zone}" "${hook}.${id}" } hook_config_edit() {