[1/5] zone: zone_config_check_same_setting check for config to edit
Message ID | 1502533349-13935-1-git-send-email-jonatan.schlag@ipfire.org |
---|---|
State | New |
Headers |
Return-Path: <network-bounces@lists.ipfire.org> Received: from mail01.ipfire.org (unknown [172.28.1.200]) by web02.ipfire.org (Postfix) with ESMTP id 6462C61E79 for <patchwork@ipfire.org>; Sat, 12 Aug 2017 12:22:34 +0200 (CEST) Received: from mail01.ipfire.org (localhost [IPv6:::1]) by mail01.ipfire.org (Postfix) with ESMTP id 3027E283A; Sat, 12 Aug 2017 12:22:34 +0200 (CEST) Received: from ipfire.localdomain (dslb-088-073-208-189.088.073.pools.vodafone-ip.de [88.73.208.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 8FE522594; Sat, 12 Aug 2017 12:22:31 +0200 (CEST) From: Jonatan Schlag <jonatan.schlag@ipfire.org> To: network@lists.ipfire.org Subject: [PATCH 1/5] zone: zone_config_check_same_setting check for config to edit Date: Sat, 12 Aug 2017 12:22:25 +0200 Message-Id: <1502533349-13935-1-git-send-email-jonatan.schlag@ipfire.org> X-Mailer: git-send-email 2.6.3 X-BeenThere: network@lists.ipfire.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List for the network package <network.lists.ipfire.org> List-Unsubscribe: <http://lists.ipfire.org/mailman/options/network>, <mailto:network-request@lists.ipfire.org?subject=unsubscribe> List-Archive: <http://lists.ipfire.org/pipermail/network/> List-Post: <mailto:network@lists.ipfire.org> List-Help: <mailto:network-request@lists.ipfire.org?subject=help> List-Subscribe: <http://lists.ipfire.org/mailman/listinfo/network>, <mailto:network-request@lists.ipfire.org?subject=subscribe> Errors-To: network-bounces@lists.ipfire.org Sender: "network" <network-bounces@lists.ipfire.org> |
Message
Jonatan Schlag
Aug. 12, 2017, 8:22 p.m. UTC
We now check if we get the config, which we edit in this moment and when we continue.
Fixes: #11451
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
src/functions/functions.zone | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
Comments
Hi, this patchset looks fine, but I think the solution is a little bit too complicated. Could we not let hook_parse_cmdline() remain untouched and just let it parse all inputs? We need to parse all arguments anyways before we can make a decision. We could then check for any conflicts later in hook_edit(). That looks easier to me since: a) the format of hook_parse_cmdline() would be the same throughout all zones, ports and configs b) we do not need to carry around the ID variable. It will be empty any ways when we are creating a new configuration and then become difficult to handle. Your thoughts? Best, -Michael On Sat, 2017-08-12 at 12:22 +0200, Jonatan Schlag wrote: > We now check if we get the config, which we edit in this moment and when we > continue. > > Fixes: #11451 > > Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org> > --- > src/functions/functions.zone | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/src/functions/functions.zone b/src/functions/functions.zone > index 1eb492f..941314d 100644 > --- a/src/functions/functions.zone > +++ b/src/functions/functions.zone > @@ -1155,12 +1155,13 @@ zone_config_check_same_setting() { > # with the same setting is already configured for this zone. > # Returns True when yes and False when no. > > - assert [ $# -eq 4 ] > + assert [ $# -eq 5 ] > > local zone=${1} > local hook=${2} > - local key=${3} > - local value=${4} > + local id=${3} > + local key=${4} > + local value=${5} > > # The key should be local for this function > local ${key} > @@ -1171,6 +1172,12 @@ zone_config_check_same_setting() { > if [[ $(zone_config_get_hook "${zone}" "${config}") != > ${hook} ]]; then > continue > fi > + > + # Check if we get the config we want to create or edit (we > must ignore this config on edit) > + if [[ "${hook}.${id}" = "${config}" ]]; then > + continue > + fi > + > # Get the value of the key for a given function > zone_config_settings_read "${zone}" "${config}" \ > --ignore-superfluous-settings "${key}"