Hi Mahesh, 

> On Jan 17, 2026, at 1:18 PM, Mahesh Jethanandani <[email protected]> 
> wrote:
> 
> Hi Ran/Acee,
> 
>> 
>> On Jan 16, 2026, at 2:09 AM, [email protected] wrote:
>> 
>> Hi Acee,Mahesh,
>> Thank you both for the detailed discussion regarding the must statement.
>> Our tests show that if we omit the check for anycast-flag = 'true', the 
>> constraint would incorrectly block any configuration where node-flag is 
>> true, even if anycast-flag remains at its default false value. 
> 
> When a node has a default value, the must statement validates that default 
> value against the rest of the configuration just as strictly as it would 
> validate a value explicitly entered by a user.

Ran and I don't disagree. So the default for both the flags is 'false'. So, the 
part of the expression inside the parentheses will be 'false' with defaults. 

must "not(../anycast-flag = 'true' and "
     + "/rt:routing/rt:control-plane-protocols/"
     + "rt:control-plane-protocol/ospf:ospf/"
     + "ospf:areas/ospf:area/ospf:interfaces/"
     + "ospf:interface/ospf:node-flag = 'true')" {
  error-message "The anycast-flag and the node-flag MUST "
        + "NOT both be set to 1 (true).";
  description
  "Ensures architectural consistency by preventing a prefix
  from being marked as both anycast and node-specific.";
}

    not('false' and 'false')  = 'true'. 

So, with the defaults, the statement will evaluate as true and there will be no 
error. 


Thanks,
Acee


> 
> A great example of this is the Tag Protocol Identifier (TPID) in the 
> openconfig-vlan (and openconfig-interfaces) modules.
> 
> Example: VLAN TPID with a Default Value
> 
> When configuring a VLAN on an interface, the TPID (which identifies the frame 
> as a 802.1Q tag) almost always defaults to 0x8100. However, this value is 
> only valid if the interface is of a type that actually supports VLAN tagging 
> (like an Ethernet port). In your example, the anycast-flag should be set only 
> if the node-flag is not set. Note, there is no check for the current value of 
> the node.
> 
> The YANG Snippet
> 
> leaf tpid {
>   type identityref {
>     base oc-vlan-types:TPID_TYPES;
>   }
>   default oc-vlan-types:TPID_0X8100;
> 
>   must "derived-from-or-self(../../config/type, 'oc-ift:ETHERNET_CSMACD') or 
> " +
>        "derived-from-or-self(../../config/type, 'oc-ift:IF_AGGREGATE')" {
>     error-message "TPID can only be configured on Ethernet or Aggregate 
> interfaces";
>   }
>     description
>     "Optionally set the tag protocol identifier of the VLAN header.";
> }
> 
> How the Interaction Works
> 
> This creates a specific logical flow for the NETCONF server:
> 
>  * The Default Kicks In: If the user creates the VLAN container but does not 
> specify a tpid, the YANG engine automatically assigns the value TPID_0X8100.
>  * The Cross-Tree Check: The must statement then "looks" at the parent 
> interface's type flag (located at ../../config/type).
>  * The Conflict: * If the interface is a Loopback, the must statement 
> evaluates to false.
>    * Even though the user didn't explicitly set the TPID (they just accepted 
> the default), the server rejects the configuration.
>    * The error message will trigger: "TPID can only be configured on Ethernet 
> or Aggregate interfaces".
> 
> Cheers
> 
> Mahesh Jethanandani
> [email protected]
>> 
>> 
>> 
>> I have attached the diff-document with the previous version, which  includes 
>> a fix for a sequence issue and addresses a minor YANG validation error. All 
>> other parts remain unchanged. Please check it.  Many thanks!
>> 
>> BR,
>> Ran
>> 
>> Original
>> From: MaheshJethanandani <[email protected]>
>> To: Acee Lindem <[email protected]>;
>> Cc: 陈然00080434;The IESG <[email protected]>;[email protected] 
>> <[email protected]>;lsr-chairs <[email protected]>;lsr 
>> <[email protected]>;
>> Date: 2026年01月16日 11:49
>> Subject: [Lsr] Re: Mahesh Jethanandani's No Objection on 
>> draft-ietf-lsr-anycast-flag-11: (with COMMENT)
>> _______________________________________________
>> Lsr mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>> Hi Acee,
>> 
>>> On Jan 15, 2026, at 6:58 PM, Acee Lindem <[email protected]> wrote:
>>> 
>>> Hi Mahesh, 
>>> 
>>>> On Jan 15, 2026, at 8:08 PM, Mahesh Jethanandani <[email protected]> 
>>>> wrote:
>>>> 
>>>> Hi Ran,
>>>> Thanks for addressing my comments.
>>>> 
>>>> Just as a note, in the must statement, the check for “./anycast-flag = 
>>>> ’true’” is redundant or may lead to inaccurate output. The whole idea of 
>>>> the must statement is to check the condition stated by the must statement 
>>>> *before* allowing you to set the value of the flag (to true). Since the 
>>>> flag is set to ‘false’ by default, your must statement will always fail 
>>>> the check. I would suggest you remove the first part of the must statement 
>>>> that checks for ‘anycast-flag’ and just check for the ’node-flag’ to be 
>>>> set to ’true’.
>>> 
>>> This seems correct as written independent of the default since the must 
>>> constraint is negated. Am I missing something? 
>> 
>> The question is when is the must statement evaluated. I believe it is 
>> evaluated before the value is set. Therefore, since the default for 
>> ‘anycast-flag' is ‘false’ the must (not(./anycast-flag = ’true’)) part of 
>> the mst statement will evaluate to must(not(0)), which is true, making that 
>> part of the statement redundant. 
>> 
>> Does that make sense?
>> 
>> Cheers.
>> 
>>> 
>>>  One could also remove the “not()” and  check for ’false’ with a logical 
>>> or. 
>>> 
>>> Thanks,
>>> Acee
>>> 
>>> 
>>> 
>>> 
>>>> 
>>>> Cheers.
>>>> 
>>>>> On Jan 15, 2026, at 4:34 PM, <[email protected]> <[email protected]> 
>>>>> wrote:
>>>>> 
>>>>> Hi Acee,Mahesh,
>>>>> 
>>>>> 
>>>>> 
>>>>> Thank you for your feedback and the insightful suggestion.
>>>>> I have updated the draft accordingly. You can review the changes via the 
>>>>> diff link below: 
>>>>> https://author-tools.ietf.org/iddiff?url1=draft-ietf-lsr-anycast-flag-11&url2=draft-ietf-lsr-anycast-flag-12&difftype=--html.
>>>>>  
>>>>> BR,
>>>>> Ran
>>>>> 
>>>> 
>>>> 
>>>> Mahesh Jethanandani
>>>> [email protected]
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>> 
>> 
>> Mahesh Jethanandani
>> [email protected]
>> 
>> 
>> 
>> 
>> 
>> 
>> From: AceeLindem <[email protected]>
>> To: Mahesh Jethanandani <[email protected]>;
>> Cc: The IESG <[email protected]>;[email protected] 
>> <[email protected]>;lsr-chairs <[email protected]>;lsr 
>> <[email protected]>;
>> Date: 2026年01月12日 06:36
>> Subject: [Lsr] Re: Mahesh Jethanandani's No Objection on 
>> draft-ietf-lsr-anycast-flag-11: (with COMMENT)
>> Hi Mahesh,  
>> 
>> > On Jan 7, 2026, at 6:09 PM, Mahesh Jethanandani <[email protected]> 
>> > wrote:
>> >  
>> > Hi Acee,
>> >  
>> >> On Jan 6, 2026, at 5:03 PM, Acee Lindem <[email protected]> wrote:
>> >>  
>> >> Hi Mahesh,  
>> >>  
>> >>> On Jan 6, 2026, at 7:31 PM, Mahesh Jethanandani via Datatracker 
>> >>> <[email protected]> wrote:
>> >>>  
>> >>> Mahesh Jethanandani has entered the following ballot position for
>> >>> draft-ietf-lsr-anycast-flag-11: No Objection
>> >>>  
>> >>> When responding, please keep the subject line intact and reply to all
>> >>> email addresses included in the To and CC lines. (Feel free to cut this
>> >>> introductory paragraph, however.)
>> >>>  
>> >>>  
>> >>> Please refer to 
>> >>> https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/
>> >>>   
>> >>> for more information about how to handle DISCUSS and COMMENT positions.
>> >>>  
>> >>>  
>> >>> The document, along with other ballot positions, can be found here:
>> >>> https://datatracker.ietf.org/doc/draft-ietf-lsr-anycast-flag/
>> >>>  
>> >>>  
>> >>>  
>> >>> ----------------------------------------------------------------------
>> >>> COMMENT:
>> >>> ----------------------------------------------------------------------
>> >>>  
>> >>> Thanks to all the folks who have provided review comments on this 
>> >>> document. In
>> >>> particular want to call out OPSDIR review comments from Juergen, and YANG
>> >>> Doctor comments provided by Joe Clarke. Some of these comments builds on 
>> >>> the
>> >>> review they have provided.
>> >>>  
>> >>> Section 1, paragraph 0
>> >>>>  An IP prefix may be configured as anycast and as such the same value
>> >>>>  can be advertised by multiple routers.  It is useful for other
>> >>>>  routers to know that the advertisement is for an anycast prefix.
>> >>>  
>> >>> I agree with Juergen that this section could do more to explain the 
>> >>> motivation
>> >>> for the draft, and move all the implementation details to later 
>> >>> sections. For
>> >>> example, and as Juergen asks, what are the implications of other routers 
>> >>> not
>> >>> knowing about the advertisement? I know that Ran provided the 
>> >>> explanation in
>> >>> his response, but it would be even better if that was added here.
>> >>  
>> >> No - we already went down a rat hole with this in the WG and Ketan 
>> >> suggested to remove it.
>> >> Please discuss with him.  
>> >  
>> > Ok. I will wait for him to respond.
>> >  
>> >>  
>> >>  
>> >>>  
>> >>> Section 2, paragraph 0
>> >>>>  An IP prefix may be configured as anycast and it is useful for other
>> >>>>  routers to know that the advertisement is for an anycast prefix.
>> >>>  
>> >>> I would encourage the authors to add some of the responses Ran gave to 
>> >>> the
>> >>> OPSDIR review to be added in this document. In this case, the question 
>> >>> asked
>> >>> was, what is prefix and where is it being applied? This might be obvious 
>> >>> to
>> >>> "router folks" but it cannot be assumed that everyone knows what it 
>> >>> means.
>> >>>  
>> >>> Section 4.2, paragraph 0
>> >>>>  The following is the YANG module:
>> >>>  
>> >>> Please reference all the RFC from which the module imports data from or 
>> >>> refers
>> >>> to. For example, it could say - "This YANG module imports definitions 
>> >>> from
>> >>> [RFC8349] and [RFC9129]".
>> >>>  
>> >>> Section 6.2, paragraph 3
>> >>>>  There are a number of data nodes defined in this YANG module that are
>> >>>>  writable/creatable/deletable (i.e., config true, which is the
>> >>>>  default).  These data nodes can be considered sensitive or vulnerable
>> >>>>  in some network environments.  Write operations (e.g., edit-config)
>> >>>>  to these data nodes without proper protection can have a negative
>> >>>>  effect on network operations.  Specifically, the following subtrees
>> >>>>  and data nodes have particular sensitivities/vulnerabilities:
>> >>>  
>> >>> Is it true that this YANG module defines multiple data nodes? I can see 
>> >>> only
>> >>> one. The last statement should also be corrected for its pluarity.
>> >>  
>> >> As you well know, this is the boiler plate from 
>> >> draft-ietf-netmod-rfc8407bis. Perhaps
>> >> this should be corrected  there with "(s)"s rather than "s"s.  
>> >  
>> > Yes, it is boilerplate, but nothings says it cannot be modified.
>> >  
>> >>  
>> >>>  
>> >>> Section 6.2, paragraph 3
>> >>>>  As specified in Section 2, the AC-flag and the N-flag MUST NOT both
>> >>>>  be set to 1.  An attacker or a misconfiguration that violates this
>> >>>>  rule creates a configuration anomaly.  The handling of such anomalies
>> >>>>  is defined in Section 2.  Modifications to these data nodes without
>> >>>>  proper protection could prevent interpreting the IPv4 prefix as
>> >>>>  anycast or node-specific.
>> >>>  
>> >>> If the idea is to detect a configuration anomaly, why is that not 
>> >>> detected
>> >>> using a "must" statement? Please add one. Otherwise, this hardly belongs 
>> >>> in a
>> >>> Security Considerations section.
>> >>  
>> >> We don't normally validate read-only data, i.e., operational state.
>> >> Rather, it is rendered as is so that anomalies can be detected.  
>> >  
>> > I do not understand. The YANG module is defining a RW leaf for 
>> > ‘anycast-flag’. A must statement there could check if the N-flag is set or 
>> > not before allowing the flag to be set to true. No?
>> >  
>> > Something like  
>> >  
>> > must 
>> > ‘not(/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/node-flag)'
>> >  
>> 
>> Yes - the co-authors could add this constraint to the read-write node. I'll 
>> leave it to them.
>> 
>> 
>> >  
>> > And I just noticed that the 'identity ac-flag’ is not used in the module. 
>> > Is it being used somewhere else? If not, do we need it?
>> 
>> This identity could be returned in the flag container in the 
>> extended-prefix-opaque container.
>> 
>> 
>> Thanks,
>> Acee
>> 
>> 
>> 
>> 
>> >  
>> > An example would really help here.
>> >  
>> >>  
>> >>  
>> >>  
>> >>>  
>> >>> Section 6.2, paragraph 3
>> >>>>  Some of the readable data nodes in this YANG module may be considered
>> >>>>  sensitive or vulnerable in some network environments.  It is thus
>> >>>>  important to control read access (e.g., via get, get-config, or
>> >>>>  notification) to these data nodes.  Specifically, the following
>> >>>>  subtrees and data nodes have particular sensitivities/
>> >>>>  vulnerabilities:
>> >>>  
>> >>> Same issue with pluraity in this section.
>> >>>  
>> >>> Section 6.2, paragraph 3
>> >>>>  Exposure of the OSPF link state database may be useful in mounting
>> >>>>  Denial-of-Service (DoS) attacks.
>> >>>  
>> >>> How is lsdb being exposed by this model? If not, please remove.
>> >>  
>> >> The new flag is part of an LSA encoding which is in the Link State 
>> >> Database (LSDB).  
>> >  
>> > Sure. But the module that is defining the LSDB or access to it should be 
>> > the place where this statement would make sense.
>> >  
>> > Thanks.
>> >  
>> >>  
>> >> Acee  
>> >>  
>> >>  
>> >>  
>> >>>  
>> >>> -------------------------------------------------------------------------------
>> >>> NIT
>> >>> -------------------------------------------------------------------------------
>> >>>  
>> >>> All comments below are about very minor potential issues that you may 
>> >>> choose to
>> >>> address in some way - or ignore - as you see fit. Some were flagged by
>> >>> automated tools (via https://github.com/larseggert/ietf-reviewtool), so 
>> >>> there
>> >>> will likely be some false positives. There is no need to let me know 
>> >>> what you
>> >>> did with these suggestions.
>> >>>  
>> >>> "I", paragraph 2
>> >>>> OULD be logged as an operational error (subject to rate-limiting). The 
>> >>>> AC-fla
>> >>>>                                     ^
>> >>> It appears that a white space is missing.
>> >>>  
>> >>> "I", paragraph 9
>> >>>> eted according to OSPFv2 [RFC7684]. Thus the Flags field of the BGP-LS 
>> >>>> Prefix
>> >>>>                                   ^^^^
>> >>> A comma may be missing after the conjunctive/linking adverb "Thus".
>> >  
>> >  
>> >  
>> > Mahesh Jethanandani
>> > [email protected]
>> >  
>> >  
>> >  
>> >  
>> >  
>> >  
>> 
>> _______________________________________________
>> Lsr mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>> 
>> <draft-ietf-lsr-anycast-flag-13.diff.html>


_______________________________________________
Lsr mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to