Re: [yang-doctors] Fwd: Re: Issue with ietf-dslite@2017-11-15.yang and yangdump-pro

Ladislav Lhotka <lhotka@nic.cz> Sat, 23 December 2017 13:13 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 78002129C6F for <yang-doctors@ietfa.amsl.com>; Sat, 23 Dec 2017 05:13:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.009
X-Spam-Level:
X-Spam-Status: No, score=-7.009 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=nic.cz
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id o98_iUw9iH-s for <yang-doctors@ietfa.amsl.com>; Sat, 23 Dec 2017 05:13:51 -0800 (PST)
Received: from mail.nic.cz (mail.nic.cz [217.31.204.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7BD95128954 for <yang-doctors@ietf.org>; Sat, 23 Dec 2017 05:13:51 -0800 (PST)
Received: from birdie (nat-14.bravonet.eu [77.48.225.14]) by mail.nic.cz (Postfix) with ESMTPSA id 84C92634A3; Sat, 23 Dec 2017 14:13:49 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1514034829; bh=Fu60lHrAxONeV14hJ9p9RXcG9AxQaY9VFUv/wWBCEEM=; h=From:To:Date; b=OT2llaBff1XSb9URgPbtPcSfjyCNy3Ctfe+UG+SyQCcMOb6ruKOl5Vsg/MqdZKjTx iTbYRlo6jde9nAWDzuD9uDkz+wfbrBHaf2HzKcQhnq1Y1BROH6+3oINuK2PBWqF823 w8KwIx2EqJ5IKQ4aCJIE8fov+GCQg+v7GM6Ap5nw=
Message-ID: <1514034829.13134.15.camel@nic.cz>
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, andy@yumaworks.com
Cc: yang-doctors@ietf.org, mvasko@cesnet.cz
Date: Sat, 23 Dec 2017 14:13:49 +0100
In-Reply-To: <20171223.130153.578331858878241339.mbj@tail-f.com>
References: <CABCOCHQNga26AJgHhrk-rHTVhunJpqv--pUCum1RHaQeSJ+Tvw@mail.gmail.com> <20171223.112117.2194029012176106073.mbj@tail-f.com> <CABCOCHQ7GXs9UsiaP=J3TaQqe9ZPP_C-1aLT1Mcep6SyY-X_wQ@mail.gmail.com> <20171223.130153.578331858878241339.mbj@tail-f.com>
Organization: CZ.NIC
Content-Type: text/plain; charset="UTF-8"
X-Mailer: Evolution 3.26.3
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: clamav-milter 0.99.2 at mail
X-Virus-Status: Clean
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/FFF0caUxpQmcj_zh8fSl8bC6eC0>
Subject: Re: [yang-doctors] Fwd: Re: Issue with ietf-dslite@2017-11-15.yang and yangdump-pro
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Dec 2017 13:13:54 -0000

On Sat, 2017-12-23 at 13:01 +0100, Martin Bjorklund wrote:
> Andy Bierman <andy@yumaworks.com> wrote:
> > On Sat, Dec 23, 2017 at 2:21 AM, Martin Bjorklund <mbj@tail-f.com> wrote:
> > 
> > > Hi,
> > > 
> > > See section 9.10.3 in RFC 7950:
> > > 
> > >    The string value of a node of type "identityref" in a "must" or
> > >    "when" XPath expression is the referred identity's qualified name
> > >    with the prefix present.
> > > 
> > > and re. the prefix:
> > > 
> > >    If the referred identity is defined in an
> > >    imported module, the prefix in the string value is the prefix defined
> > >    in the corresponding "import" statement.  Otherwise, the prefix in
> > >    the string value is the prefix for the current module.
> > > 
> > > 
> > > I most cases you should consider using derived-from-or-self instead of
> > > equality test for identiyrefs.
> > > 
> > > 
> > 
> > So what is "the current module"?
> > What is the resolution of 'X'? Is it foo:X or bar:X?
> 
> foo:X

No, the resolution of 'X' is 'X' because it is an XPath 1.0 string and XPath
knows nothing about YANG identities. Because of the rule of sec. 9.10.3, the
equality expression is always false.

That's why we introduced the new XPath functions derived-from() and derived-
from-or-self() in YANG 1.1.

Lada 

> 
> 
> /martin
> 
> 
> > 
> > 
> > 
> > > 
> > > /martin
> > > 
> > > 
> > 
> > Andy
> > 
> > 
> > > 
> > > 
> > > 
> > > Andy Bierman <andy@yumaworks.com> wrote:
> > > > On Fri, Dec 15, 2017 at 4:38 AM, Radek Krejčí <rkrejci@cesnet.cz> wrote:
> > > > 
> > > > > Hi,
> > > > > I'm adding Michal Vasko to cc, he knows better how these things are
> > > > > checked in libyang.
> > > > > 
> > > > > It seems to me that Andy refers the text which does not apply here.
> > > > > The
> > > > > identity name was used as part of XPath expresion (when-stmt), so the
> > > > > definition of the context nodes for the when-stmt (RFC 7950, sec
> > > 
> > > 7.21.5)
> > > > > and XPath context rules should apply here. Not the rules for the
> > > > > identityref's base statement. In this case, the when-stmt is in
> > > 
> > > augment so
> > > > > the context node (which we also understand as the current node in this
> > > > > case) is the augment's target node. And according to XPath context
> > > 
> > > rules
> > > > > (RFC 7950, sec 6.4.1):
> > > > > 
> > > > >  o  Names without a namespace prefix belong to the same namespace as
> > > 
> > > the
> > > > > identifier of the current node.
> > > > > 
> > > > 
> > > > 
> > > > I cc:ed YANG doctors to get more opinions...
> > > > 
> > > > The current node is the augment-stmt.
> > > > Note that it does not say context node, which is the target of the
> > > 
> > > augment.
> > > > I think prefixes (and default prefix) are resolved in the module
> > > 
> > > containing
> > > > the statement.
> > > > 
> > > > 
> > > > module foo {
> > > > 
> > > >    import bar { prefix b; }
> > > >    identity X;
> > > > 
> > > >    augment b:/some-node {
> > > >       leaf test {
> > > >          type string;
> > > >          when "/b:some-node/b:other-node = 'X'";
> > > >       }
> > > >    }
> > > > }
> > > > 
> > > > module bar {
> > > > 
> > > >    identity W;
> > > >    identity X { base W; }
> > > >    container some-node {
> > > >        leaf other-node {
> > > >          type identityref { base W; }
> > > >        }
> > > >    }
> > > > }
> > > > 
> > > > Q) Does other-node = 'X' resolve to foo:X or bar:X?  IMO: foo:X
> > > > 
> > > > 
> > > > 
> > > > Andy
> > > > 
> > > > 
> > > > 
> > > > > In this particular case, the augment node with the when-stmt augments
> > > 
> > > the
> > > > > same module which defines napt44, so they are in the correct namespace
> > > 
> > > and
> > > > > the identity name can be used without the prefix. So it should be
> > > > > fine,
> > > > > while I believe that using prefix in the cases of identities is always
> > > > > better approach. From the first sight (it may be challenging for human
> > > 
> > > to
> > > > > correctly resolve the context/current node in some cases), I would
> > > > > also
> > > > > expect prefix.
> > > > > 
> > > > > I propose to keep the change in the draft (added nat prefix), since it
> > > > > improves readability of the expression. But I don't think that it is
> > > > > an
> > > > > error to ommit the prefix.
> > > > > 
> > > > > Regards,
> > > > > Radek
> > > > > 
> > > > > 
> > > > > Dne 19.11.2017 v 20:42 Benoit Claise napsal(a):
> > > > > > Hi Radek,
> > > > > > 
> > > > > > Here is a bug report for you.
> > > > > > 
> > > > > > Regards, Benoit
> > > > > > 
> > > > > > 
> > > > > > -------- Forwarded Message --------
> > > > > > Subject:      Re: Issue with ietf-dslite@2017-11-15.yang and
> > > > > 
> > > > > yangdump-pro
> > > > > > Date:         Sat, 18 Nov 2017 13:22:58 -0800
> > > > > > From:         Andy Bierman <andy@yumaworks.com>
> > > > > > To:   Benoit Claise <bclaise@cisco.com>
> > > > > > CC:   draft-ietf-softwire-dslite-yang@ietf.org <
> > > > > 
> > > > > draft-ietf-softwire-dslite-yang@ietf.org>, Mahesh Jethanandani <
> > > > > mjethanandani@gmail.com>
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > Hi,
> > > > > > 
> > > > > > yangdump-pro is correct. Every other compiler missed it...
> > > > > > 
> > > > > > 9.10.2.  The identityref's "base" Statement
> > > > > > 
> > > > > >    The "base" statement, which is a substatement to the "type"
> > > > > >    statement, MUST be present at least once if the type is
> > > > > >    "identityref".  The argument is the name of an identity, as
> > > 
> > > defined
> > > > > >    by an "identity" statement.  If a prefix is present on the
> > > 
> > > identity
> > > > > >    name, it refers to an identity defined in the module that was
> > > > > >    imported with that prefix.  *Otherwise, an identity with the
> > > 
> > > matching
> > > > > name MUST be defined in the current module or an included submodule.*
> > > > > > 
> > > > > > Using ietf-dslite@2017-11-15.yang and ietf-nat@2017-11-15.yang
> > > > > > 
> > > > > > When I change 'natp44' to 'nat:natp44' in both when-stmts:
> > > > > > 
> > > > > > andy@andy-homedev:~/Desktop/FD1289/IETF$ yangdump-pro
> > > > > 
> > > > > ietf-dslite@2017-11-15.yang modpath=.
> > > > > > 
> > > > > > *** /home/andy/Desktop/FD1289/IETF/ietf-dslite@2017-11-15.yang
> > > > > > *** 0 Errors, 0 Warnings
> > > > > > 
> > > > > > andy@andy-homedev:~/Desktop/FD1289/IETF$
> > > > > > 
> > > > > > 
> > > > > > Andy
> > > > > > 
> > > > > > 
> > > > > > On Sat, Nov 18, 2017 at 11:07 AM, Benoit Claise <bclaise@cisco.com
> > > > > 
> > > > > <mailto:bclaise@cisco.com>> wrote:
> > > > > > 
> > > > > >     Hi Andy,
> > > > > > 
> > > > > >     Can you please have a look at ietf-dslite@2017-11-15.yang at
> > > > > 
> > > > > http://www.claise.be/IETFYANGPageCompilation.html <
> > > 
> > > http://www.claise.be/
> > > > > IETFYANGPageCompilation.html> .
> > > > > >     yangdump-pro reports a new error, while the other validators are
> > > > > 
> > > > > fine.
> > > > > > 
> > > > > >     Copying Mahesh, as YANG doctor.
> > > > > > 
> > > > > >     Regards, Benoit
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > > 
> 
> _______________________________________________
> yang-doctors mailing list
> yang-doctors@ietf.org
> https://www.ietf.org/mailman/listinfo/yang-doctors
-- 
Ladislav Lhotka
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67