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 jonatan.schlag@ipfire.org --- src/header-config | 4 ++++ src/header-zone | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/header-config b/src/header-config index b697797..d55d7e5 100644 --- a/src/header-config +++ b/src/header-config @@ -22,3 +22,7 @@ hook_new() { cmd_not_implemented } + +hook_destroy() { + return ${EXIT_OK} +} diff --git a/src/header-zone b/src/header-zone index 2e3fa09..4d3c251 100644 --- a/src/header-zone +++ b/src/header-zone @@ -221,7 +221,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() {