public inbox for network@lists.ipfire.org
 help / color / mirror / Atom feed
* [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>
---
 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() {
-- 
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