mbox

[2/3] header-zone: refactor hook_config_edit

Message ID 1500059452-3421-2-git-send-email-jonatan.schlag@ipfire.org
State Superseded
Headers

Message

Jonatan Schlag July 15, 2017, 5:10 a.m. UTC
  Before a config is edit we should bring the config down and after up again.
Also we need to have 2 arguments or more.

Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
 src/header-zone | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
  

Comments

Michael Tremer July 15, 2017, 9:56 a.m. UTC | #1
Hi,

and no no no no. We cannot restart the zone just because some
configuration is being changed. That would disrupt connections and that
might not always be required.

The hook_up() and hook_down() functions are usually designed to take
care of this and check if a zone is already up and potentially only
change the settings that need to be changed.

That will allow to edit things on a live system without disrupting any
users which I think is very important.

-Michael

On Fri, 2017-07-14 at 21:10 +0200, Jonatan Schlag wrote:
> Before a config is edit we should bring the config down and after up
> again.
> Also we need to have 2 arguments or more.
> 
> Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
> ---
>  src/header-zone | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/src/header-zone b/src/header-zone
> index 2e3fa09..3b074ee 100644
> --- a/src/header-zone
> +++ b/src/header-zone
> @@ -225,7 +225,7 @@ hook_config_destroy() {
>  }
>  
>  hook_config_edit() {
> -	assert [ $# -eq 2 ]
> +	assert [ $# -ge 2 ]
>  	local zone=${1}
>  	# The id must be the id and not the hid.
>  	local id=${2}
> @@ -240,7 +240,14 @@ hook_config_edit() {
>  	local hook=$(zone_config_get_hook_from_id ${zone} ${id})
>  	assert isset hook
>  
> +	# Bring the config down
> +	hook_config_cmd "down" "${zone}" "${hook}" "${hook}.${id}"
> +
> +	# Edit the hook
>  	hook_config_cmd "edit" "${zone}" "${hook}" "${hook}.${id}"
> "$@"
> +
> +	# Bring the config up again
> +	hook_config_cmd "up" "${zone}" "${hook}" "${hook}.${id}"
>  }
>  
>  hook_config_show() {