Skip to content

Deprecate source/destination flow-label and add single flow-label leaf#1452

Open
earies wants to merge 2 commits into
openconfig:masterfrom
earies:flow-label
Open

Deprecate source/destination flow-label and add single flow-label leaf#1452
earies wants to merge 2 commits into
openconfig:masterfrom
earies:flow-label

Conversation

@earies
Copy link
Copy Markdown
Contributor

@earies earies commented Mar 20, 2026

  • (M) release/models/acl/openconfig-packet-match.yang
    • Deprecate source-flow-label and destination-flow-label
    • Add flow-label leaf to ipv6-protocol-fields-config grouping
    • Bump openconfig-version to 2.3.0

Change Scope

The IPv6 header contains a single 20-bit flow-label field; there is no distinct source or destination flow-label. Deprecate source-flow-label and destination-flow-label in ipv6-protocol-fields-config and replace with a single flow-label leaf matching the actual header structure.

This was raised 6y back via #346 but was never addressed and was closed/stale.

Platform Implementations

N/A

Tree View

         +--rw policy-forwarding
         |  +--rw config
         |  |  +--rw global-decap-policy?   string
         |  +--ro state
         |  |  +--ro global-decap-policy?   string
         |  +--rw policies
         |  |  +--rw policy* [policy-id]
         |  |     +--rw policy-id    -> ../config/policy-id
         |  |     +--rw config
         |  |     |  +--rw policy-id?   string
         |  |     |  +--rw type?        enumeration
         |  |     +--ro state
         |  |     |  +--ro policy-id?   string
         |  |     |  +--ro type?        enumeration
         |  |     +--rw rules
         |  |        +--rw rule* [sequence-id]
         |  |           +--rw sequence-id        -> ../config/sequence-id
         |  |           +--rw config
         |  |           |  +--rw sequence-id?      uint32
         |  |           |  +--rw address-family?   identityref
         |  |           |  +--rw description?      string
         |  |           +--ro state
         |  |           |  +--ro sequence-id?      uint32
         |  |           |  +--ro address-family?   identityref
         |  |           |  +--ro description?      string
         |  |           |  +--ro matched-pkts?     oc-yang:counter64
         |  |           |  +--ro matched-octets?   oc-yang:counter64
         |  |           +--rw l2
         |  |           |  +--rw config
         |  |           |  |  +--rw source-mac?             oc-yang:mac-address
         |  |           |  |  +--rw source-mac-mask?        oc-yang:mac-address
         |  |           |  |  +--rw destination-mac?        oc-yang:mac-address
         |  |           |  |  +--rw destination-mac-mask?   oc-yang:mac-address
         |  |           |  |  +--rw ethertype?              oc-pkt-match-types:ethertype-type
         |  |           |  +--ro state
         |  |           |     +--ro source-mac?             oc-yang:mac-address
         |  |           |     +--ro source-mac-mask?        oc-yang:mac-address
         |  |           |     +--ro destination-mac?        oc-yang:mac-address
         |  |           |     +--ro destination-mac-mask?   oc-yang:mac-address
         |  |           |     +--ro ethertype?              oc-pkt-match-types:ethertype-type
         |  |           +--rw ipv4
         |  |           |  +--rw config
         |  |           |  |  +--rw source-address?                   oc-inet:ipv4-prefix
         |  |           |  |  +--rw source-address-prefix-set?        -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
         |  |           |  |  +--rw destination-address?              oc-inet:ipv4-prefix
         |  |           |  |  +--rw destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
         |  |           |  |  +--rw fragment-offsets*                 oc-pkt-match-types:fragment-offset-range
         |  |           |  |  +--rw dscp?                             oc-inet:dscp
         |  |           |  |  +--rw dscp-set*                         oc-inet:dscp
         |  |           |  |  +--rw length?                           uint16
         |  |           |  |  +--rw protocol?                         oc-pkt-match-types:ip-protocol-type
         |  |           |  |  +--rw hop-limit?                        uint8
         |  |           |  +--ro state
         |  |           |  |  +--ro source-address?                   oc-inet:ipv4-prefix
         |  |           |  |  +--ro source-address-prefix-set?        -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
         |  |           |  |  +--ro destination-address?              oc-inet:ipv4-prefix
         |  |           |  |  +--ro destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
         |  |           |  |  +--ro fragment-offsets*                 oc-pkt-match-types:fragment-offset-range
         |  |           |  |  +--ro dscp?                             oc-inet:dscp
         |  |           |  |  +--ro dscp-set*                         oc-inet:dscp
         |  |           |  |  +--ro length?                           uint16
         |  |           |  |  +--ro protocol?                         oc-pkt-match-types:ip-protocol-type
         |  |           |  |  +--ro hop-limit?                        uint8
         |  |           |  +--rw icmpv4
         |  |           |     +--rw config
         |  |           |     |  +--rw type?   identityref
         |  |           |     |  +--rw code?   identityref
         |  |           |     +--ro state
         |  |           |        +--ro type?   identityref
         |  |           |        +--ro code?   identityref
         |  |           +--rw ipv6
         |  |           |  +--rw config
         |  |           |  |  +--rw source-address?                   oc-inet:ipv6-prefix
         |  |           |  |  +--rw source-address-prefix-set?        -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-        |  |           |  |  +--rw source-flow-label?                oc-inet:ipv6-flow-label
+        |  |           |  |  x--rw source-flow-label?                oc-inet:ipv6-flow-label
         |  |           |  |  +--rw destination-address?              oc-inet:ipv6-prefix
         |  |           |  |  +--rw destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-        |  |           |  |  +--rw destination-flow-label?           oc-inet:ipv6-flow-label
+        |  |           |  |  x--rw destination-flow-label?           oc-inet:ipv6-flow-label
+        |  |           |  |  +--rw flow-label?                       oc-inet:ipv6-flow-label
         |  |           |  |  +--rw dscp?                             oc-inet:dscp
         |  |           |  |  +--rw dscp-set*                         oc-inet:dscp
         |  |           |  |  +--rw length?                           uint16
         |  |           |  |  +--rw protocol?                         oc-pkt-match-types:ip-protocol-type
         |  |           |  |  +--rw hop-limit?                        uint8
         |  |           |  +--ro state
         |  |           |  |  +--ro source-address?                   oc-inet:ipv6-prefix
         |  |           |  |  +--ro source-address-prefix-set?        -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-        |  |           |  |  +--ro source-flow-label?                oc-inet:ipv6-flow-label
+        |  |           |  |  x--ro source-flow-label?                oc-inet:ipv6-flow-label
         |  |           |  |  +--ro destination-address?              oc-inet:ipv6-prefix
         |  |           |  |  +--ro destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-        |  |           |  |  +--ro destination-flow-label?           oc-inet:ipv6-flow-label
+        |  |           |  |  x--ro destination-flow-label?           oc-inet:ipv6-flow-label
+        |  |           |  |  +--ro flow-label?                       oc-inet:ipv6-flow-label
         |  |           |  |  +--ro dscp?                             oc-inet:dscp
         |  |           |  |  +--ro dscp-set*                         oc-inet:dscp
         |  |           |  |  +--ro length?                           uint16
         |  |           |  |  +--ro protocol?                         oc-pkt-match-types:ip-protocol-type
         |  |           |  |  +--ro hop-limit?                        uint8
         |  |           |  +--rw icmpv6
         |  |           |     +--rw config
         |  |           |     |  +--rw type?   identityref
         |  |           |     |  +--rw code?   identityref
         |  |           |     +--ro state
         |  |           |        +--ro type?   identityref
         |  |           |        +--ro code?   identityref
         |  |           +--rw transport
         |  |           |  +--rw config
         |  |           |  |  +--rw source-port?                  oc-pkt-match-types:port-num-range
         |  |           |  |  +--rw source-port-set?              -> /oc-sets:defined-sets/port-sets/port-set/name
         |  |           |  |  +--rw destination-port?             oc-pkt-match-types:port-num-range
         |  |           |  |  +--rw destination-port-set?         -> /oc-sets:defined-sets/port-sets/port-set/name
         |  |           |  |  +--rw detail-mode?                  enumeration
         |  |           |  |  +--rw explicit-detail-match-mode?   enumeration
         |  |           |  |  +--rw explicit-tcp-flags*           identityref
         |  |           |  |  +--rw builtin-detail?               enumeration
         |  |           |  +--ro state
         |  |           |     +--ro source-port?                  oc-pkt-match-types:port-num-range
         |  |           |     +--ro source-port-set?              -> /oc-sets:defined-sets/port-sets/port-set/name
         |  |           |     +--ro destination-port?             oc-pkt-match-types:port-num-range
         |  |           |     +--ro destination-port-set?         -> /oc-sets:defined-sets/port-sets/port-set/name
         |  |           |     +--ro detail-mode?                  enumeration
         |  |           |     +--ro explicit-detail-match-mode?   enumeration
         |  |           |     +--ro explicit-tcp-flags*           identityref
         |  |           |     +--ro builtin-detail?               enumeration
         |  |           +--rw action
         |  |           |  +--rw config
         |  |           |  |  x--rw discard?                           boolean
         |  |           |  |  +--rw decapsulate-gre?                   boolean
         |  |           |  |  +--rw decap-network-instance?            -> /network-instances/network-instance/config/name
         |  |           |  |  +--rw decap-fallback-network-instance?   -> /network-instances/network-instance/config/name
         |  |           |  |  +--rw log?                               boolean
         |  |           |  |  +--rw post-decap-network-instance?       -> /network-instances/network-instance/config/name
         |  |           |  |  +--rw network-instance?                  -> /network-instances/network-instance/config/name
         |  |           |  |  +--rw path-selection-group?              -> ../../../../../../../path-selection-groups/path-selection-group/config/group-id
         |  |           |  |  +--rw next-hop?                          oc-inet:ip-address
         |  |           |  |  +--rw next-hop-group?                    -> ../../../../../../../../static/next-hop-groups/next-hop-group/config/name
         |  |           |  |  +--rw decapsulate-mpls-in-udp?           boolean
         |  |           |  |  +--rw decapsulate-gue?                   boolean
         |  |           |  |  x--rw ip-ttl?                            uint8
         |  |           |  +--ro state
         |  |           |  |  x--ro discard?                           boolean
         |  |           |  |  +--ro decapsulate-gre?                   boolean
         |  |           |  |  +--ro decap-network-instance?            -> /network-instances/network-instance/config/name
         |  |           |  |  +--ro decap-fallback-network-instance?   -> /network-instances/network-instance/config/name
         |  |           |  |  +--ro log?                               boolean
         |  |           |  |  +--ro post-decap-network-instance?       -> /network-instances/network-instance/config/name
         |  |           |  |  +--ro network-instance?                  -> /network-instances/network-instance/config/name
         |  |           |  |  +--ro path-selection-group?              -> ../../../../../../../path-selection-groups/path-selection-group/config/group-id
         |  |           |  |  +--ro next-hop?                          oc-inet:ip-address
         |  |           |  |  +--ro next-hop-group?                    -> ../../../../../../../../static/next-hop-groups/next-hop-group/config/name
         |  |           |  |  +--ro decapsulate-mpls-in-udp?           boolean
         |  |           |  |  +--ro decapsulate-gue?                   boolean
         |  |           |  |  x--ro ip-ttl?                            uint8
         |  |           |  +--rw encapsulate-gre
         |  |           |  |  +--rw config
         |  |           |  |  |  +--rw identifying-prefix?   oc-inet:ip-prefix
         |  |           |  |  +--ro state
         |  |           |  |  |  +--ro identifying-prefix?   oc-inet:ip-prefix
         |  |           |  |  +--rw targets
         |  |           |  |     +--rw target* [id]
         |  |           |  |        +--rw id        -> ../config/id
         |  |           |  |        +--rw config
         |  |           |  |        |  +--rw id?            string
         |  |           |  |        |  +--rw source?        oc-inet:ip-address
         |  |           |  |        |  +--rw destination?   oc-inet:ip-prefix
         |  |           |  |        |  +--rw ip-ttl?        uint8
         |  |           |  |        +--ro state
         |  |           |  |           +--ro id?            string
         |  |           |  |           +--ro source?        oc-inet:ip-address
         |  |           |  |           +--ro destination?   oc-inet:ip-prefix
         |  |           |  |           +--ro ip-ttl?        uint8
         |  |           |  +--rw ipv4
         |  |           |  |  +--rw config
         |  |           |  |  |  +--rw dscp?   oc-inet-types:dscp
         |  |           |  |  |  +--rw ttl?    uint8
         |  |           |  |  +--ro state
         |  |           |  |     +--ro dscp?   oc-inet-types:dscp
         |  |           |  |     +--ro ttl?    uint8
         |  |           |  +--rw ipv6
         |  |           |  |  +--rw config
         |  |           |  |  |  +--rw dscp?        oc-inet-types:dscp
         |  |           |  |  |  +--rw hop-limit?   uint8
         |  |           |  |  +--ro state
         |  |           |  |     +--ro dscp?        oc-inet-types:dscp
         |  |           |  |     +--ro hop-limit?   uint8
         |  |           |  +--rw mpls
         |  |           |  |  +--rw config
         |  |           |  |  |  +--rw mpls-traffic-class?   oc-mplst:mpls-tc
         |  |           |  |  +--ro state
         |  |           |  |     +--ro mpls-traffic-class?   oc-mplst:mpls-tc
         |  |           |  +--rw forwarding
         |  |           |  |  +--rw config
         |  |           |  |  |  +--rw forwarding-action?      identityref
@@ -11493,216 +11495,218 @@
      |        |              +--ro matched-octets?    oc-yang:counter64
      |        +--rw queues
      |        |  +--rw queue* [name]
      |        |     +--rw name      -> ../config/name
      |        |     +--rw config
      |        |     |  +--rw name?                       string
      |        |     |  +--rw queue-management-profile?   -> ../../../../../../../queue-management-profiles/queue-management-profile/config/name
      |        |     +--ro state
      |        |        +--ro name?                       string
      |        |        +--ro queue-management-profile?   -> ../../../../../../../queue-management-profiles/queue-management-profile/config/name
      |        |        +--ro max-queue-len?              oc-yang:counter64
      |        |        +--ro avg-queue-len?              oc-yang:counter64
      |        |        +--ro transmit-pkts?              oc-yang:counter64
      |        |        +--ro transmit-octets?            oc-yang:counter64
      |        |        +--ro dropped-pkts?               oc-yang:counter64
      |        |        +--ro dropped-octets?             oc-yang:counter64
      |        |        +--ro ecn-marked-pkts?            oc-yang:counter64
      |        |        +--ro ecn-marked-octets?          oc-yang:counter64
      |        |        +--ro ecn-selected-pkts?          oc-yang:counter64
      |        |        +--ro ecn-selected-octets?        oc-yang:counter64
      |        +--rw scheduler-policy
      |           +--rw config
      |           |  +--rw name?   -> ../../../../../../scheduler-policies/scheduler-policy/config/name
      |           +--ro state
      |           |  +--ro name?   -> ../../../../../../scheduler-policies/scheduler-policy/config/name
      |           +--ro schedulers
      |              +--ro scheduler* [sequence]
      |                 +--ro sequence    -> ../state/sequence
      |                 +--ro state
      |                    +--ro sequence?            -> ../../../../../../../../scheduler-policies/scheduler-policy[name=current()/../../../../config/name]/schedulers/scheduler/config/sequence
      |                    +--ro conforming-pkts?     oc-yang:counter64
      |                    +--ro conforming-octets?   oc-yang:counter64
      |                    +--ro exceeding-pkts?      oc-yang:counter64
      |                    +--ro exceeding-octets?    oc-yang:counter64
      |                    +--ro violating-pkts?      oc-yang:counter64
      |                    +--ro violating-octets?    oc-yang:counter64
      +--rw classifiers
      |  +--rw classifier* [name]
      |     +--rw name      -> ../config/name
      |     +--rw config
      |     |  +--rw name?   string
      |     |  +--rw type?   enumeration
      |     +--ro state
      |     |  +--ro name?   string
      |     |  +--ro type?   enumeration
      |     +--rw terms
      |        +--rw term* [id]
      |           +--rw id            -> ../config/id
      |           +--rw config
      |           |  +--rw id?   string
      |           +--ro state
      |           |  +--ro id?   string
      |           +--rw conditions
      |           |  +--rw l2
      |           |  |  +--rw config
      |           |  |  |  +--rw source-mac?             oc-yang:mac-address
      |           |  |  |  +--rw source-mac-mask?        oc-yang:mac-address
      |           |  |  |  +--rw destination-mac?        oc-yang:mac-address
      |           |  |  |  +--rw destination-mac-mask?   oc-yang:mac-address
      |           |  |  |  +--rw ethertype?              oc-pkt-match-types:ethertype-type
      |           |  |  +--ro state
      |           |  |     +--ro source-mac?             oc-yang:mac-address
      |           |  |     +--ro source-mac-mask?        oc-yang:mac-address
      |           |  |     +--ro destination-mac?        oc-yang:mac-address
      |           |  |     +--ro destination-mac-mask?   oc-yang:mac-address
      |           |  |     +--ro ethertype?              oc-pkt-match-types:ethertype-type
      |           |  +--rw ipv4
      |           |  |  +--rw config
      |           |  |  |  +--rw source-address?                   oc-inet:ipv4-prefix
      |           |  |  |  +--rw source-address-prefix-set?        -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
      |           |  |  |  +--rw destination-address?              oc-inet:ipv4-prefix
      |           |  |  |  +--rw destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
      |           |  |  |  +--rw fragment-offsets*                 oc-pkt-match-types:fragment-offset-range
      |           |  |  |  +--rw dscp?                             oc-inet:dscp
      |           |  |  |  +--rw dscp-set*                         oc-inet:dscp
      |           |  |  |  +--rw length?                           uint16
      |           |  |  |  +--rw protocol?                         oc-pkt-match-types:ip-protocol-type
      |           |  |  |  +--rw hop-limit?                        uint8
      |           |  |  +--ro state
      |           |  |  |  +--ro source-address?                   oc-inet:ipv4-prefix
      |           |  |  |  +--ro source-address-prefix-set?        -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
      |           |  |  |  +--ro destination-address?              oc-inet:ipv4-prefix
      |           |  |  |  +--ro destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv4-prefix-sets/ipv4-prefix-set/name
      |           |  |  |  +--ro fragment-offsets*                 oc-pkt-match-types:fragment-offset-range
      |           |  |  |  +--ro dscp?                             oc-inet:dscp
      |           |  |  |  +--ro dscp-set*                         oc-inet:dscp
      |           |  |  |  +--ro length?                           uint16
      |           |  |  |  +--ro protocol?                         oc-pkt-match-types:ip-protocol-type
      |           |  |  |  +--ro hop-limit?                        uint8
      |           |  |  +--rw icmpv4
      |           |  |     +--rw config
      |           |  |     |  +--rw type?   identityref
      |           |  |     |  +--rw code?   identityref
      |           |  |     +--ro state
      |           |  |        +--ro type?   identityref
      |           |  |        +--ro code?   identityref
      |           |  +--rw ipv6
      |           |  |  +--rw config
      |           |  |  |  +--rw source-address?                   oc-inet:ipv6-prefix
      |           |  |  |  +--rw source-address-prefix-set?        -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-     |           |  |  |  +--rw source-flow-label?                oc-inet:ipv6-flow-label
+     |           |  |  |  x--rw source-flow-label?                oc-inet:ipv6-flow-label
      |           |  |  |  +--rw destination-address?              oc-inet:ipv6-prefix
      |           |  |  |  +--rw destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-     |           |  |  |  +--rw destination-flow-label?           oc-inet:ipv6-flow-label
+     |           |  |  |  x--rw destination-flow-label?           oc-inet:ipv6-flow-label
+     |           |  |  |  +--rw flow-label?                       oc-inet:ipv6-flow-label
      |           |  |  |  +--rw dscp?                             oc-inet:dscp
      |           |  |  |  +--rw dscp-set*                         oc-inet:dscp
      |           |  |  |  +--rw length?                           uint16
      |           |  |  |  +--rw protocol?                         oc-pkt-match-types:ip-protocol-type
      |           |  |  |  +--rw hop-limit?                        uint8
      |           |  |  +--ro state
      |           |  |  |  +--ro source-address?                   oc-inet:ipv6-prefix
      |           |  |  |  +--ro source-address-prefix-set?        -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-     |           |  |  |  +--ro source-flow-label?                oc-inet:ipv6-flow-label
+     |           |  |  |  x--ro source-flow-label?                oc-inet:ipv6-flow-label
      |           |  |  |  +--ro destination-address?              oc-inet:ipv6-prefix
      |           |  |  |  +--ro destination-address-prefix-set?   -> /oc-sets:defined-sets/ipv6-prefix-sets/ipv6-prefix-set/name
-     |           |  |  |  +--ro destination-flow-label?           oc-inet:ipv6-flow-label
+     |           |  |  |  x--ro destination-flow-label?           oc-inet:ipv6-flow-label
+     |           |  |  |  +--ro flow-label?                       oc-inet:ipv6-flow-label
      |           |  |  |  +--ro dscp?                             oc-inet:dscp
      |           |  |  |  +--ro dscp-set*                         oc-inet:dscp
      |           |  |  |  +--ro length?                           uint16
      |           |  |  |  +--ro protocol?                         oc-pkt-match-types:ip-protocol-type
      |           |  |  |  +--ro hop-limit?                        uint8
      |           |  |  +--rw icmpv6
      |           |  |     +--rw config
      |           |  |     |  +--rw type?   identityref
      |           |  |     |  +--rw code?   identityref
      |           |  |     +--ro state
      |           |  |        +--ro type?   identityref
      |           |  |        +--ro code?   identityref
      |           |  +--rw transport
      |           |  |  +--rw config
      |           |  |  |  +--rw source-port?                  oc-pkt-match-types:port-num-range
      |           |  |  |  +--rw source-port-set?              -> /oc-sets:defined-sets/port-sets/port-set/name
      |           |  |  |  +--rw destination-port?             oc-pkt-match-types:port-num-range
      |           |  |  |  +--rw destination-port-set?         -> /oc-sets:defined-sets/port-sets/port-set/name
      |           |  |  |  +--rw detail-mode?                  enumeration
      |           |  |  |  +--rw explicit-detail-match-mode?   enumeration
      |           |  |  |  +--rw explicit-tcp-flags*           identityref
      |           |  |  |  +--rw builtin-detail?               enumeration
      |           |  |  +--ro state
      |           |  |     +--ro source-port?                  oc-pkt-match-types:port-num-range
      |           |  |     +--ro source-port-set?              -> /oc-sets:defined-sets/port-sets/port-set/name
      |           |  |     +--ro destination-port?             oc-pkt-match-types:port-num-range
      |           |  |     +--ro destination-port-set?         -> /oc-sets:defined-sets/port-sets/port-set/name
      |           |  |     +--ro detail-mode?                  enumeration
      |           |  |     +--ro explicit-detail-match-mode?   enumeration
      |           |  |     +--ro explicit-tcp-flags*           identityref
      |           |  |     +--ro builtin-detail?               enumeration
      |           |  +--rw mpls
      |           |     +--rw config
      |           |     |  +--rw traffic-class?       oc-mpls:mpls-tc
      |           |     |  +--rw start-label-value?   oc-mpls:mpls-label
      |           |     |  +--rw end-label-value?     oc-mpls:mpls-label
      |           |     |  +--rw ttl-value?           uint8
      |           |     +--ro state
      |           |        +--ro traffic-class?       oc-mpls:mpls-tc
      |           |        +--ro start-label-value?   oc-mpls:mpls-label
      |           |        +--ro end-label-value?     oc-mpls:mpls-label
      |           |        +--ro ttl-value?           uint8
      |           +--rw actions
      |              +--rw config
      |              |  +--rw target-group?   -> ../../../../../../../forwarding-groups/forwarding-group/config/name
      |              +--ro state
      |              |  +--ro target-group?   -> ../../../../../../../forwarding-groups/forwarding-group/config/name
      |              +--rw remark
      |                 +--rw config
      |                 |  +--rw set-dscp?      uint8
      |                 |  +--rw set-dot1p?     uint8
      |                 |  +--rw set-mpls-tc?   uint8
      |                 +--ro state
      |                    +--ro set-dscp?      uint8
      |                    +--ro set-dot1p?     uint8
      |                    +--ro set-mpls-tc?   uint8
      +--rw forwarding-groups
      |  +--rw forwarding-group* [name]
      |     +--rw name      -> ../config/name
      |     +--rw config
      |     |  +--rw name?                     string
      |     |  +--rw fabric-priority?          uint8
      |     |  +--rw output-queue?             -> ../../../../queues/queue/config/name
      |     |  +--rw unicast-output-queue?     -> ../../../../queues/queue/config/name
      |     |  +--rw multicast-output-queue?   -> ../../../../queues/queue/config/name
      |     +--ro state
      |        +--ro name?                     string
      |        +--ro fabric-priority?          uint8
      |        +--ro output-queue?             -> ../../../../queues/queue/config/name
      |        +--ro unicast-output-queue?     -> ../../../../queues/queue/config/name
      |        +--ro multicast-output-queue?   -> ../../../../queues/queue/config/name
      +--rw queues
      |  +--rw queue* [name]
      |     +--rw name      -> ../config/name
      |     +--rw config
      |     |  +--rw name?       string
      |     |  +--rw queue-id?   uint8
      |     +--ro state
      |        +--ro name?       string
      |        +--ro queue-id?   uint8
      +--rw scheduler-policies
      |  +--rw scheduler-policy* [name]
      |     +--rw name          -> ../config/name
      |     +--rw config
      |     |  +--rw name?   string
      |     +--ro state
      |     |  +--ro name?   string
      |     +--rw schedulers
      |        +--rw scheduler* [sequence]
      |           +--rw sequence                -> ../config/sequence
      |           +--rw config
      |           |  +--rw sequence?   uint32
      |           |  +--rw type?       identityref
      |           |  +--rw priority?   enumeration
      |           +--ro state
      |           |  +--ro sequence?   uint32
      |           |  +--ro type?       identityref
      |           |  +--ro priority?   enumeration
      |           +--rw inputs
      |           |  +--rw input* [id]

@earies earies requested a review from a team as a code owner March 20, 2026 15:49
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a long-standing inaccuracy in the openconfig-packet-match.yang model by correcting the representation of the IPv6 flow-label. Previously, the model incorrectly defined separate source and destination flow-labels. The changes streamline the model to align with the actual IPv6 header specification, where only a single flow-label exists. This update improves the model's fidelity and ensures consistency with network protocols.

Highlights

  • IPv6 Flow Label Correction: The source-flow-label and destination-flow-label leaves within the ipv6-protocol-fields-config grouping have been deprecated. These have been replaced by a single flow-label leaf to accurately reflect the IPv6 header structure, which contains only one flow-label field.
  • YANG Model Version Update: The openconfig-version in the openconfig-packet-match.yang model has been incremented from 2.2.0 to 2.3.0.
  • Changelog Entry Added: A new revision entry for 2026-03-20 has been added to the YANG module, documenting the deprecation and replacement of the IPv6 flow-label definitions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request deprecates source-flow-label and destination-flow-label in favor of a single flow-label leaf, which aligns the model with the IPv6 header specification. The model version is bumped and a revision history is added. I have a couple of suggestions to improve the clarity of the descriptions for the deprecated leaves.

Comment thread release/models/acl/openconfig-packet-match.yang
Comment thread release/models/acl/openconfig-packet-match.yang
@dplore dplore moved this to Ready to discuss in OC Operator Review Mar 25, 2026
@dplore
Copy link
Copy Markdown
Member

dplore commented Mar 25, 2026

/gcbrun

@OpenConfigBot
Copy link
Copy Markdown

OpenConfigBot commented Mar 25, 2026

No major YANG version changes in commit dd8ed37

@earies
Copy link
Copy Markdown
Contributor Author

earies commented Apr 15, 2026

cc: @ElodinLaarz @dplore @rgwilton @jsterne for comment/review

@ElodinLaarz
Copy link
Copy Markdown
Contributor

Discussed in the OC Operators Meeting on May 5th 2026:

LGTM. Seems to have been an oversight.

Gemini comments seem reasonable (put the deprecated label at the start of the description), and then you can rebase the changes to sync and run checks.

Can add to last-call in 2 weeks. (May 19th, 2026)

@ElodinLaarz ElodinLaarz moved this from Ready to discuss to last-call in OC Operator Review May 5, 2026
  * (M) release/models/acl/openconfig-packet-match.yang
    - Deprecate source-flow-label and destination-flow-label
    - Add flow-label leaf to ipv6-protocol-fields-config grouping
    - Bump openconfig-version to 2.4.0
@earies
Copy link
Copy Markdown
Contributor Author

earies commented May 12, 2026

Discussed in the OC Operators Meeting on May 5th 2026:

LGTM. Seems to have been an oversight.

Gemini comments seem reasonable (put the deprecated label at the start of the description), and then you can rebase the changes to sync and run checks.

Can add to last-call in 2 weeks. (May 19th, 2026)

Thx - addressed in latest commit

@dplore
Copy link
Copy Markdown
Member

dplore commented May 12, 2026

/gcbrub

@dplore
Copy link
Copy Markdown
Member

dplore commented May 12, 2026

/gcbrun

@dplore
Copy link
Copy Markdown
Member

dplore commented May 12, 2026

Note, last call remains at May 19,2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: last-call

Development

Successfully merging this pull request may close these issues.

4 participants