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

Martin Bjorklund <mbj@tail-f.com> Sat, 23 December 2017 10:21 UTC

Return-Path: <mbj@tail-f.com>
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 AB8AF127863 for <yang-doctors@ietfa.amsl.com>; Sat, 23 Dec 2017 02:21:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 P0tn7ZC7BUnU for <yang-doctors@ietfa.amsl.com>; Sat, 23 Dec 2017 02:21:20 -0800 (PST)
Received: from mail.tail-f.com (mail.tail-f.com [46.21.102.45]) by ietfa.amsl.com (Postfix) with ESMTP id 4653B127601 for <yang-doctors@ietf.org>; Sat, 23 Dec 2017 02:21:20 -0800 (PST)
Received: from localhost (h-85-209.A165.priv.bahnhof.se [94.254.85.209]) by mail.tail-f.com (Postfix) with ESMTPSA id 288011AE0446; Sat, 23 Dec 2017 11:21:18 +0100 (CET)
Date: Sat, 23 Dec 2017 11:21:17 +0100
Message-Id: <20171223.112117.2194029012176106073.mbj@tail-f.com>
To: andy@yumaworks.com
Cc: rkrejci@cesnet.cz, mvasko@cesnet.cz, yang-doctors@ietf.org
From: Martin Bjorklund <mbj@tail-f.com>
In-Reply-To: <CABCOCHQNga26AJgHhrk-rHTVhunJpqv--pUCum1RHaQeSJ+Tvw@mail.gmail.com>
References: <beee188d-d505-1378-f01c-96352d23cf98@cisco.com> <ae339851-851d-05fd-f7ab-a33345a858cf@cesnet.cz> <CABCOCHQNga26AJgHhrk-rHTVhunJpqv--pUCum1RHaQeSJ+Tvw@mail.gmail.com>
X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO)
Mime-Version: 1.0
Content-Type: Text/Plain; charset="utf-8"
Content-Transfer-Encoding: base64
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/-CFChjTtf2SJtaRGY-fiO_ryFJw>
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 10:21:22 -0000

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.


/martin




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
> > >
> > >
> > >
> >
> >
> >