Italo Busi <[email protected]> wrote:
> Martin, Jernej,
> 
> I am a bit confused by your replies
> 
> With a reference to my short example below, are you saying that NEW
> (B) provides an NBC change while NEW (A) provides a BC change for OLD?

I'm saying that A is allowed according to RFC 7950, but B is not
allowed.  And as you have demonstrated, this is a bug.

(But you have also demonstrated the workaround!)


/martin


> 
> Actually , this is exactly the result I have got by testing NEW (A)
> and NEW (B) with pyang
> 
> However, if I am not mistaken, based on section 7.18.2 of RFC7950, NEW
> (A) seems equivalent to NEW (B): if identity B (baz) is derived from A
> (foo) and C (bar) is derived from B (baz), then C (bar) is also
> derived from A (foo) ...
> 
> Italo
> 
> > -----Original Message-----
> > From: Jernej Tuljak <[email protected]>
> > Sent: martedì 31 gennaio 2023 08:19
> > To: Martin Björklund <[email protected]>
> > Cc: Italo Busi <[email protected]>; [email protected]
> > Subject: Re: [netmod] Changing an identity base
> > 
> > On 30/01/2023 11:17, Martin Björklund wrote:
> > > Hi,
> > >
> > >
> > > Jernej Tuljak <[email protected]> wrote:
> > >> On 30/01/2023 10:19, Italo Busi wrote:
> > >>> Yes, the intention is not to change the semantic of bar but to
> > >>> introduce a more “restricted” identity from which bar could be
> > >>> derived
> > >>>
> > >>> Something like introducing an identity for italian-car in between
> > >>> car and Ferrari identities
> > >>>
> > >> I understand your intention. I do not understand the intention behind
> > >> text in RFC 7950, however.
> > >>
> > >> My clarification request was aimed at RFC 7950 authors and whether a
> > >> revision like this could be considered as not changing the semantics
> > >> of the original identity definition because:
> > >>
> > >>     Otherwise, if the semantics of any previous definition are
> > >> changed
> > >>     (i.e., if a non-editorial change is made to any definition other
> > >> than
> > >>     those specifically allowed above), then this MUST be achieved by
> > >> a
> > >>     new definition with a new identifier.
> > >>
> > >> So, RFC authors: Is "NEWB:bar" definition semantically equivalent to
> > >> "OLD:bar" definition?
> > > I think that this change isn't allowed according to RFC 7950, but it
> > > should have been.  If there ever is a new version of YANG, this should
> > > be fixed.
> > >
> > > The quoted text says:
> > >
> > >    if a non-editorial change is made to any definition other
> > >    than those specifically allowed above, then this MUST be achieved
> > > by a
> > >    new definition with a new identifier
> > >
> > > This is a non-editorial change that is not "specifically allowed
> > > above".
> > 
> > That has been my interpretation as well so far. Our tools were
> > implemented
> > accordingly. I believe that the Pyang plugin also reports an error for
> > a change
> > like this.
> > 
> > Jernej
> > 
> > >
> > > /martin
> > >
> > >
> > >
> > >> Jernej
> > >>
> > >>> Italo
> > >>>
> > >>> *From:* Jernej Tuljak <[email protected]>
> > >>> *Sent:* lunedì 30 gennaio 2023 08:51
> > >>> *To:* Italo Busi <[email protected]>; [email protected]
> > >>> *Subject:* Re: [netmod] Changing an identity base
> > >>>
> > >>> On 27/01/2023 17:54, Italo Busi wrote:
> > >>>
> > >>>      According to section 11 of RFC7950, the following change is
> > >>>      considered BC:
> > >>>
> > >>>         o  A "base" statement may be added to an "identity" statement.
> > >>>
> > >>>      Since, as explained in section 7.18.2 of RFC7950, the derivation
> > >>>      of identities is transitive, my understanding is that replacing a
> > >>>      "base" statement with new  "base" statement which is derived from
> > >>>      the previous one is also a BC change.
> > >>>
> > >>>      Considering the example below, the NEW (A) change is BC according
> > >>>      to section 11 of RFC7950. However, NEW (B) is equivalent to NEW
> > >>>      (A), since the new baz is derived from foo, and therefore it is
> > >>>      also a BC change.
> > >>>
> > >>>      Is my understanding correct?
> > >>>
> > >>>
> > >>> I'd like a clarification regarding this as well.  Is "NEWB:bar"
> > >>> definition semantically equivalent to "OLD:bar" definition?
> > >>>
> > >>> Jernej
> > >>>
> > >>>
> > >>>      Thanks, Italo
> > >>>
> > >>>      OLD
> > >>>
> > >>>      identity foo {}
> > >>>
> > >>>      identity bar {
> > >>>
> > >>>        base foo;
> > >>>
> > >>>      }
> > >>>
> > >>>      NEW (A)
> > >>>
> > >>>      identity foo {}
> > >>>
> > >>>      identity baz {
> > >>>
> > >>>        base foo
> > >>>
> > >>>      }
> > >>>
> > >>>      identity bar {
> > >>>
> > >>>        base foo;
> > >>>
> > >>>        base baz;
> > >>>
> > >>>      }
> > >>>
> > >>>      NEW (B)
> > >>>
> > >>>      identity foo {}
> > >>>
> > >>>      identity baz {
> > >>>
> > >>>        base foo
> > >>>
> > >>>      }
> > >>>
> > >>>      identity bar {
> > >>>
> > >>>        base baz;
> > >>>
> > >>>      }
> > >>>
> > >>>
> > >>>
> > >>>      _______________________________________________
> > >>>
> > >>>      netmod mailing list
> > >>>
> > >>>      [email protected]
> > >>>
> > >>>      https://www.ietf.org/mailman/listinfo/netmod
> > >>>
> 
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to