* [PATCH v2 1/2] zone: new function zone_config_settings_destroy
@ 2017-07-14 12:19 Jonatan Schlag
2017-07-14 12:19 ` [PATCH v2 2/2] header-zone: refactor hook_config_destroy Jonatan Schlag
0 siblings, 1 reply; 2+ messages in thread
From: Jonatan Schlag @ 2017-07-14 12:19 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 1036 bytes --]
Similar to zone_config_settings_write and zone_config_settings_read
this function provides an easy way to delete a config file.
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/functions/functions.zone | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/functions/functions.zone b/src/functions/functions.zone
index acf68f5..44237cd 100644
--- a/src/functions/functions.zone
+++ b/src/functions/functions.zone
@@ -1272,6 +1272,24 @@ zone_config_settings_write() {
settings_write "${path}" ${args}
}
+zone_config_settings_destroy() {
+ # This function deletes the config file for a given zone and config
+ assert [ $# -ge 2 ]
+ local zone="${1}"
+ local config="${2}"
+
+ local path="$(zone_dir "${zone}")/configs/${config}"
+
+ # Check if path is valid
+ if [ ! -f ${path} ]; then
+ log ERROR "Path: '${path}' is not valid"
+ return ${EXIT_ERROR}
+ fi
+
+ log DEBUG "Deleting config file ${path}"
+ rm -f "${path}"
+
+}
zone_port_settings_read() {
assert [ $# -ge 2 ]
--
2.6.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH v2 2/2] header-zone: refactor hook_config_destroy
2017-07-14 12:19 [PATCH v2 1/2] zone: new function zone_config_settings_destroy Jonatan Schlag
@ 2017-07-14 12:19 ` Jonatan Schlag
0 siblings, 0 replies; 2+ messages in thread
From: Jonatan Schlag @ 2017-07-14 12:19 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 1712 bytes --]
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(a)ipfire.org>
---
| 4 ++++
| 16 +++++++++++++++-
2 files changed, 19 insertions(+), 1 deletion(-)
--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}
+}
--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() {
--
2.6.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-07-14 12:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-14 12:19 [PATCH v2 1/2] zone: new function zone_config_settings_destroy Jonatan Schlag
2017-07-14 12:19 ` [PATCH v2 2/2] header-zone: refactor hook_config_destroy Jonatan Schlag
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox