From 72f5eaa3517841df2b9e2093cfdefef93af22208 Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Mon, 12 Jan 2026 11:27:43 -0500 Subject: [PATCH 1/5] Add support for SRv6 Signed-off-by: Carmine Scarpitta --- release/models/aft/openconfig-aft-common.yang | 377 +++++++++++++++++- .../models/aft/openconfig-aft-counters.yang | 8 +- .../models/aft/openconfig-aft-ethernet.yang | 8 +- release/models/aft/openconfig-aft-ipv4.yang | 8 +- release/models/aft/openconfig-aft-ipv6.yang | 10 +- release/models/aft/openconfig-aft-mpls.yang | 8 +- release/models/aft/openconfig-aft-pf.yang | 8 +- .../aft/openconfig-aft-state-synced.yang | 8 +- release/models/aft/openconfig-aft.yang | 8 +- 9 files changed, 434 insertions(+), 9 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 67beb166b3..870a3df505 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description @@ -366,6 +372,8 @@ submodule openconfig-aft-common { "State parameters relating to IP encapsulation headers."; uses aft-common-entry-nexthop-ip-state; + + uses aft-common-entry-nexthop-ipv6-state; } } @@ -639,6 +647,41 @@ submodule openconfig-aft-common { } } + grouping aft-common-entry-nexthop-ipv6-state { + description + "IPv6 encapsulation applied on a next-hop"; + + leaf-list srv6-sid-list { + type oc-inet:ipv6-address; + ordered-by user; + description + "Additional SRv6 SIDs set on the Segment Routing Header (SRH)."; + } + + leaf flow-label { + type uint32 { + range "0..1048575"; + } + description + "Flow Label, used to identify a packet belong to a particular flow. + If this value is set, it overrides the hashing computed by the device + and forces the value configured."; + } + + leaf traffic-class { + type uint8; + description + "Traffic Class value."; + } + + leaf hop-limit { + type uint8; + default "64"; + description + "Hop Limit value."; + } + } + grouping aft-common-entry-nexthop-encap-gre-config { description "GRE encapsulation applied on a IPv4 and IPv6 next-hop."; @@ -863,6 +906,338 @@ submodule openconfig-aft-common { } } + grouping aft-common-ipv6-state { + description + "Common parameters across IPv6 address family"; + + leaf srv6-behavior-type { + type enumeration { + enum RESERVED { + value 0; + description "Reserved"; + } + enum END { + value 1; + description "End"; + } + enum END_WITH_PSP { + value 2; + description "End with PSP"; + } + enum END_WITH_USP { + value 3; + description "End with USP"; + } + enum END_WITH_PSP_USP { + value 4; + description "End with PSP & USP"; + } + enum END_X { + value 5; + description "End.X"; + } + enum END_X_WITH_PSP { + value 6; + description "End.X with PSP"; + } + enum END_X_WITH_USP { + value 7; + description "End.X with USP"; + } + enum END_X_WITH_PSP_USP { + value 8; + description "End.X with PSP & USP"; + } + enum END_T { + value 9; + description "End.T"; + } + enum END_T_WITH_PSP { + value 10; + description "End.T with PSP"; + } + enum END_T_WITH_USP { + value 11; + description "End.T with USP"; + } + enum END_T_WITH_PSP_USP { + value 12; + description "End.T with PSP & USP"; + } + enum END_B6_INSERT { + value 13; + description "End.B6.Insert"; + } + enum END_B6_ENCAPS { + value 14; + description "End.B6.Encaps"; + } + enum END_BM { + value 15; + description "End.BM"; + } + enum END_DX6 { + value 16; + description "End.DX6"; + } + enum END_DX4 { + value 17; + description "End.DX4"; + } + enum END_DT6 { + value 18; + description "End.DT6"; + } + enum END_DT4 { + value 19; + description "End.DT4"; + } + enum END_DT46 { + value 20; + description "End.DT46"; + } + enum END_DX2 { + value 21; + description "End.DX2"; + } + enum END_DX2V { + value 22; + description "End.DX2V"; + } + enum END_DT2U { + value 23; + description "End.DT2U"; + } + enum END_DT2M { + value 24; + description "End.DT2M"; + } + enum END_B6_INSERT_RED { + value 26; + description "End.B6.Insert.Red"; + } + enum END_B6_ENCAPS_RED { + value 27; + description "End.B6.Encaps.Red"; + } + enum END_WITH_USD { + value 28; + description "End with USD"; + } + enum END_WITH_PSP_USD { + value 29; + description "End with PSP & USD"; + } + enum END_WITH_USP_USD { + value 30; + description "End with USP & USD"; + } + enum END_WITH_PSP_USP_USD { + value 31; + description "End with PSP, USP & USD"; + } + enum END_X_WITH_USD { + value 32; + description "End.X with USD"; + } + enum END_X_WITH_PSP_USD { + value 33; + description "End.X with PSP & USD"; + } + enum END_X_WITH_USP_USD { + value 34; + description "End.X with USP & USD"; + } + enum END_X_WITH_PSP_USP_USD { + value 35; + description "End.X with PSP, USP & USD"; + } + enum END_T_WITH_USD { + value 36; + description "End.T with USD"; + } + enum END_T_WITH_PSP_USD { + value 37; + description "End.T with PSP & USD"; + } + enum END_T_WITH_USP_USD { + value 38; + description "End.T with USP & USD"; + } + enum END_T_WITH_PSP_USP_USD { + value 39; + description "End.T with PSP, USP & USD"; + } + enum END_WITH_NEXT_ONLY_CSID { + value 42; + description "End with NEXT-ONLY-CSID"; + } + enum END_WITH_NEXT_CSID { + value 43; + description "End with NEXT-CSID"; + } + enum END_WITH_NEXT_CSID_PSP { + value 44; + description "End with NEXT-CSID & PSP"; + } + enum END_WITH_NEXT_CSID_USP { + value 45; + description "End with NEXT-CSID & USP"; + } + enum END_WITH_NEXT_CSID_PSP_USP { + value 46; + description "End with NEXT-CSID, PSP & USP"; + } + enum END_WITH_NEXT_CSID_USD { + value 47; + description "End with NEXT-CSID & USD"; + } + enum END_WITH_NEXT_CSID_PSP_USD { + value 48; + description "End with NEXT-CSID, PSP & USD"; + } + enum END_WITH_NEXT_CSID_USP_USD { + value 49; + description "End with NEXT-CSID, USP & USD"; + } + enum END_WITH_NEXT_CSID_PSP_USP_USD { + value 50; + description "End with NEXT-CSID, PSP, USP & USD"; + } + enum END_X_WITH_NEXT_ONLY_CSID { + value 51; + description "End.X with NEXT-ONLY-CSID"; + } + enum END_X_WITH_NEXT_CSID { + value 52; + description "End.X with NEXT-CSID"; + } + enum END_X_WITH_NEXT_CSID_PSP { + value 53; + description "End.X with NEXT-CSID & PSP"; + } + enum END_X_WITH_NEXT_CSID_USP { + value 54; + description "End.X with NEXT-CSID & USP"; + } + enum END_X_WITH_NEXT_CSID_PSP_USP { + value 55; + description "End.X with NEXT-CSID, PSP & USP"; + } + enum END_X_WITH_NEXT_CSID_USD { + value 56; + description "End.X with NEXT-CSID & USD"; + } + enum END_X_WITH_NEXT_CSID_PSP_USD { + value 57; + description "End.X with NEXT-CSID, PSP & USD"; + } + enum END_X_WITH_NEXT_CSID_USP_USD { + value 58; + description "End.X with NEXT-CSID, USP & USD"; + } + enum END_X_WITH_NEXT_CSID_PSP_USP_USD { + value 59; + description "End.X with NEXT-CSID, PSP, USP & USD"; + } + enum UDX6 { + value 60; + description "uDX6 (End.DX6 with NEXT-CSID)"; + } + enum UDX4 { + value 61; + description "uDX4 (End.DX4 with NEXT-CSID)"; + } + enum UDT6 { + value 62; + description "uDT6 (End.DT6 with NEXT-CSID)"; + } + enum UDT4 { + value 63; + description "uDT4 (End.DT4 with NEXT-CSID)"; + } + enum UDT46 { + value 64; + description "uDT46 (End.DT46 with NEXT-CSID)"; + } + enum UDX2 { + value 65; + description "uDX2 (End.DX2 with NEXT-CSID)"; + } + enum UDX2V { + value 66; + description "uDX2V (End.DX2V with NEXT-CSID)"; + } + enum UDT2U { + value 67; + description "uDT2U (End.DT2U with NEXT-CSID)"; + } + enum UDT2M { + value 68; + description "uDT2M (End.DT2M with NEXT-CSID)"; + } + enum END_T_WITH_NEXT_CSID { + value 85; + description "End.T with NEXT-CSID"; + } + enum END_T_WITH_NEXT_CSID_PSP { + value 86; + description "End.T with NEXT-CSID & PSP"; + } + enum END_T_WITH_NEXT_CSID_USP { + value 87; + description "End.T with NEXT-CSID & USP"; + } + enum END_T_WITH_NEXT_CSID_PSP_USP { + value 88; + description "End.T with NEXT-CSID, PSP & USP"; + } + enum END_T_WITH_NEXT_CSID_USD { + value 89; + description "End.T with NEXT-CSID & USD"; + } + enum END_T_WITH_NEXT_CSID_PSP_USD { + value 90; + description "End.T with NEXT-CSID, PSP & USD"; + } + enum END_T_WITH_NEXT_CSID_USP_USD { + value 91; + description "End.T with NEXT-CSID, USP & USD"; + } + enum END_T_WITH_NEXT_CSID_PSP_USP_USD { + value 92; + description "End.T with NEXT-CSID, PSP, USP & USD"; + } + enum END_B6_ENCAPS_WITH_NEXT_CSID { + value 93; + description "End.B6.Encaps with NEXT-CSID"; + } + enum END_B6_ENCAPS_RED_WITH_NEXT_CSID { + value 94; + description "End.B6.Encaps.Red with NEXT-CSID"; + } + enum END_BM_WITH_NEXT_CSID { + value 95; + description "End.BM with NEXT-CSID"; + } + enum END_B6_ENCAPS_RED_WITH_NEXT_CSID_PSP_USD { + value 98; + description "End.B6.Encaps.Red with NEXT-CSID, PSP & USD"; + } + enum END_B6_INSERT_RED_WITH_NEXT_CSID_PSP_USD { + value 99; + description "End.B6.Insert.Red with NEXT-CSID, PSP & USD"; + } + } + description + "Behavior type associated with the SID. The behavior types are + defined in the IANA SRv6 Endpoint Behaviors registry."; + reference + "IANA SRv6 Endpoint Behaviors registry + (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; + } + } + grouping aft-next-hop-groups-structural { description "Logical grouping for groups of next-hops."; diff --git a/release/models/aft/openconfig-aft-counters.yang b/release/models/aft/openconfig-aft-counters.yang index 1ed9debc9e..cfeaea39bc 100644 --- a/release/models/aft/openconfig-aft-counters.yang +++ b/release/models/aft/openconfig-aft-counters.yang @@ -18,7 +18,13 @@ module openconfig-aft-counters { description "Submodule providing a unified subtree for AFT entry counters."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-07-04" { description diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index af225feb8a..16ee2e9465 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 2b913d8fe2..427e2d113f 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index e1b2c6087c..0ce7647bae 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description @@ -238,5 +244,7 @@ submodule openconfig-aft-ipv6 { } } uses aft-common-ip-state; + + uses aft-common-ipv6-state; } } diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 79bd72391e..0529c74815 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 67e3887c67..2e49c8e199 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index b5563233f5..45a554477c 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 272bde5631..b588d0f212 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "3.3.0"; + } revision "2025-08-07" { description From 30bed3b0c8941c5ce0b9394a5df3c19efc0253a1 Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Tue, 13 Jan 2026 05:36:45 -0500 Subject: [PATCH 2/5] Move hop-limit and traffic-class to openconfig-inet-types.yang - Move hop-limit and traffic-class to openconfig-inet-types.yang - Reuse the existing ipv6-flow-label type for the IPv6 Flow Label Signed-off-by: Carmine Scarpitta --- release/models/aft/openconfig-aft-common.yang | 13 +++++------- .../models/types/openconfig-inet-types.yang | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 870a3df505..d19bfb4c04 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -659,9 +659,7 @@ submodule openconfig-aft-common { } leaf flow-label { - type uint32 { - range "0..1048575"; - } + type oc-inet:ipv6-flow-label; description "Flow Label, used to identify a packet belong to a particular flow. If this value is set, it overrides the hashing computed by the device @@ -669,16 +667,15 @@ submodule openconfig-aft-common { } leaf traffic-class { - type uint8; + type oc-inet:ipv6-traffic-class; description - "Traffic Class value."; + "Traffic Class value to use for the encapsulated packet."; } leaf hop-limit { - type uint8; - default "64"; + type oc-inet:ipv6-hop-limit; description - "Hop Limit value."; + "Hop Limit value to use for the encapsulated packet."; } } diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 63f0978318..d07a641ee1 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -460,6 +460,27 @@ module openconfig-inet-types { "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; } + typedef ipv6-traffic-class { + type uint8; + description + "The IPv6 traffic-class is an 8-bit value within the IPv6 header + that is available for use by originating nodes and/or forwarding + routers to identify and distinguish between different classes or + priorities of IPv6 packets."; + reference + "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef ipv6-hop-limit { + type uint8; + description + "The IPv6 hop-limit is an 8-bit value within the IPv6 header + that is decremented by 1 by each node that forwards the packet. + When the hop limit field reaches zero, the packet is discarded."; + reference + "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; + } + typedef port-number { type uint16; description From 092cdeff53bafc7070b7acebeeb883b6956f6215 Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Tue, 13 Jan 2026 05:47:43 -0500 Subject: [PATCH 3/5] Move SRv6 endpoint types to openconfig-inet-types.yang Signed-off-by: Carmine Scarpitta --- release/models/aft/openconfig-aft-common.yang | 319 +------------- .../models/types/openconfig-inet-types.yang | 415 ++++++++++++++++++ 2 files changed, 416 insertions(+), 318 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index d19bfb4c04..3bc15fa58e 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -908,324 +908,7 @@ submodule openconfig-aft-common { "Common parameters across IPv6 address family"; leaf srv6-behavior-type { - type enumeration { - enum RESERVED { - value 0; - description "Reserved"; - } - enum END { - value 1; - description "End"; - } - enum END_WITH_PSP { - value 2; - description "End with PSP"; - } - enum END_WITH_USP { - value 3; - description "End with USP"; - } - enum END_WITH_PSP_USP { - value 4; - description "End with PSP & USP"; - } - enum END_X { - value 5; - description "End.X"; - } - enum END_X_WITH_PSP { - value 6; - description "End.X with PSP"; - } - enum END_X_WITH_USP { - value 7; - description "End.X with USP"; - } - enum END_X_WITH_PSP_USP { - value 8; - description "End.X with PSP & USP"; - } - enum END_T { - value 9; - description "End.T"; - } - enum END_T_WITH_PSP { - value 10; - description "End.T with PSP"; - } - enum END_T_WITH_USP { - value 11; - description "End.T with USP"; - } - enum END_T_WITH_PSP_USP { - value 12; - description "End.T with PSP & USP"; - } - enum END_B6_INSERT { - value 13; - description "End.B6.Insert"; - } - enum END_B6_ENCAPS { - value 14; - description "End.B6.Encaps"; - } - enum END_BM { - value 15; - description "End.BM"; - } - enum END_DX6 { - value 16; - description "End.DX6"; - } - enum END_DX4 { - value 17; - description "End.DX4"; - } - enum END_DT6 { - value 18; - description "End.DT6"; - } - enum END_DT4 { - value 19; - description "End.DT4"; - } - enum END_DT46 { - value 20; - description "End.DT46"; - } - enum END_DX2 { - value 21; - description "End.DX2"; - } - enum END_DX2V { - value 22; - description "End.DX2V"; - } - enum END_DT2U { - value 23; - description "End.DT2U"; - } - enum END_DT2M { - value 24; - description "End.DT2M"; - } - enum END_B6_INSERT_RED { - value 26; - description "End.B6.Insert.Red"; - } - enum END_B6_ENCAPS_RED { - value 27; - description "End.B6.Encaps.Red"; - } - enum END_WITH_USD { - value 28; - description "End with USD"; - } - enum END_WITH_PSP_USD { - value 29; - description "End with PSP & USD"; - } - enum END_WITH_USP_USD { - value 30; - description "End with USP & USD"; - } - enum END_WITH_PSP_USP_USD { - value 31; - description "End with PSP, USP & USD"; - } - enum END_X_WITH_USD { - value 32; - description "End.X with USD"; - } - enum END_X_WITH_PSP_USD { - value 33; - description "End.X with PSP & USD"; - } - enum END_X_WITH_USP_USD { - value 34; - description "End.X with USP & USD"; - } - enum END_X_WITH_PSP_USP_USD { - value 35; - description "End.X with PSP, USP & USD"; - } - enum END_T_WITH_USD { - value 36; - description "End.T with USD"; - } - enum END_T_WITH_PSP_USD { - value 37; - description "End.T with PSP & USD"; - } - enum END_T_WITH_USP_USD { - value 38; - description "End.T with USP & USD"; - } - enum END_T_WITH_PSP_USP_USD { - value 39; - description "End.T with PSP, USP & USD"; - } - enum END_WITH_NEXT_ONLY_CSID { - value 42; - description "End with NEXT-ONLY-CSID"; - } - enum END_WITH_NEXT_CSID { - value 43; - description "End with NEXT-CSID"; - } - enum END_WITH_NEXT_CSID_PSP { - value 44; - description "End with NEXT-CSID & PSP"; - } - enum END_WITH_NEXT_CSID_USP { - value 45; - description "End with NEXT-CSID & USP"; - } - enum END_WITH_NEXT_CSID_PSP_USP { - value 46; - description "End with NEXT-CSID, PSP & USP"; - } - enum END_WITH_NEXT_CSID_USD { - value 47; - description "End with NEXT-CSID & USD"; - } - enum END_WITH_NEXT_CSID_PSP_USD { - value 48; - description "End with NEXT-CSID, PSP & USD"; - } - enum END_WITH_NEXT_CSID_USP_USD { - value 49; - description "End with NEXT-CSID, USP & USD"; - } - enum END_WITH_NEXT_CSID_PSP_USP_USD { - value 50; - description "End with NEXT-CSID, PSP, USP & USD"; - } - enum END_X_WITH_NEXT_ONLY_CSID { - value 51; - description "End.X with NEXT-ONLY-CSID"; - } - enum END_X_WITH_NEXT_CSID { - value 52; - description "End.X with NEXT-CSID"; - } - enum END_X_WITH_NEXT_CSID_PSP { - value 53; - description "End.X with NEXT-CSID & PSP"; - } - enum END_X_WITH_NEXT_CSID_USP { - value 54; - description "End.X with NEXT-CSID & USP"; - } - enum END_X_WITH_NEXT_CSID_PSP_USP { - value 55; - description "End.X with NEXT-CSID, PSP & USP"; - } - enum END_X_WITH_NEXT_CSID_USD { - value 56; - description "End.X with NEXT-CSID & USD"; - } - enum END_X_WITH_NEXT_CSID_PSP_USD { - value 57; - description "End.X with NEXT-CSID, PSP & USD"; - } - enum END_X_WITH_NEXT_CSID_USP_USD { - value 58; - description "End.X with NEXT-CSID, USP & USD"; - } - enum END_X_WITH_NEXT_CSID_PSP_USP_USD { - value 59; - description "End.X with NEXT-CSID, PSP, USP & USD"; - } - enum UDX6 { - value 60; - description "uDX6 (End.DX6 with NEXT-CSID)"; - } - enum UDX4 { - value 61; - description "uDX4 (End.DX4 with NEXT-CSID)"; - } - enum UDT6 { - value 62; - description "uDT6 (End.DT6 with NEXT-CSID)"; - } - enum UDT4 { - value 63; - description "uDT4 (End.DT4 with NEXT-CSID)"; - } - enum UDT46 { - value 64; - description "uDT46 (End.DT46 with NEXT-CSID)"; - } - enum UDX2 { - value 65; - description "uDX2 (End.DX2 with NEXT-CSID)"; - } - enum UDX2V { - value 66; - description "uDX2V (End.DX2V with NEXT-CSID)"; - } - enum UDT2U { - value 67; - description "uDT2U (End.DT2U with NEXT-CSID)"; - } - enum UDT2M { - value 68; - description "uDT2M (End.DT2M with NEXT-CSID)"; - } - enum END_T_WITH_NEXT_CSID { - value 85; - description "End.T with NEXT-CSID"; - } - enum END_T_WITH_NEXT_CSID_PSP { - value 86; - description "End.T with NEXT-CSID & PSP"; - } - enum END_T_WITH_NEXT_CSID_USP { - value 87; - description "End.T with NEXT-CSID & USP"; - } - enum END_T_WITH_NEXT_CSID_PSP_USP { - value 88; - description "End.T with NEXT-CSID, PSP & USP"; - } - enum END_T_WITH_NEXT_CSID_USD { - value 89; - description "End.T with NEXT-CSID & USD"; - } - enum END_T_WITH_NEXT_CSID_PSP_USD { - value 90; - description "End.T with NEXT-CSID, PSP & USD"; - } - enum END_T_WITH_NEXT_CSID_USP_USD { - value 91; - description "End.T with NEXT-CSID, USP & USD"; - } - enum END_T_WITH_NEXT_CSID_PSP_USP_USD { - value 92; - description "End.T with NEXT-CSID, PSP, USP & USD"; - } - enum END_B6_ENCAPS_WITH_NEXT_CSID { - value 93; - description "End.B6.Encaps with NEXT-CSID"; - } - enum END_B6_ENCAPS_RED_WITH_NEXT_CSID { - value 94; - description "End.B6.Encaps.Red with NEXT-CSID"; - } - enum END_BM_WITH_NEXT_CSID { - value 95; - description "End.BM with NEXT-CSID"; - } - enum END_B6_ENCAPS_RED_WITH_NEXT_CSID_PSP_USD { - value 98; - description "End.B6.Encaps.Red with NEXT-CSID, PSP & USD"; - } - enum END_B6_INSERT_RED_WITH_NEXT_CSID_PSP_USD { - value 99; - description "End.B6.Insert.Red with NEXT-CSID, PSP & USD"; - } - } + type oc-inet:srv6-endpoint-type; description "Behavior type associated with the SID. The behavior types are defined in the IANA SRv6 Endpoint Behaviors registry."; diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index d07a641ee1..22c0bbc9b0 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -509,4 +509,419 @@ module openconfig-inet-types { "RFC 3986, paragraph 1.1.3"; } + // SRv6 endpoint behavior identities + + identity srv6-endpoint-type { + description + "Base identity for SRv6 endpoint behavior types."; + reference + "IANA SRv6 Endpoint Behaviors registry + (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; + } + + identity End { + base srv6-endpoint-type; + description "Endpoint function"; + } + + identity End_PSP { + base srv6-endpoint-type; + description "End with PSP"; + } + + identity End_USP { + base srv6-endpoint-type; + description "End with USP"; + } + + identity End_PSP_USP { + base srv6-endpoint-type; + description "End with PSP & USP"; + } + + identity End.X { + base srv6-endpoint-type; + description "Endpoint with L3 cross-connect"; + } + + identity End.X_PSP { + base srv6-endpoint-type; + description "End.X with PSP"; + } + + identity End.X_USP { + base srv6-endpoint-type; + description "End.X with USP"; + } + + identity End.X_PSP_USP { + base srv6-endpoint-type; + description "End.X with PSP & USP"; + } + + identity End.T { + base srv6-endpoint-type; + description "Endpoint with specific IPv6 table lookup"; + } + + identity End.T_PSP { + base srv6-endpoint-type; + description "End.T with PSP"; + } + + identity End.T_USP { + base srv6-endpoint-type; + description "End.T with USP"; + } + + identity End.T_PSP_USP { + base srv6-endpoint-type; + description "End.T with PSP & USP"; + } + + identity End.B6.Insert { + base srv6-endpoint-type; + description "End.B6.Insert"; + } + + identity End.B6.Encaps { + base srv6-endpoint-type; + description "Endpoint bound to an SRv6 Policy with encapsulation"; + } + + identity End.BM { + base srv6-endpoint-type; + description "Endpoint bound to an SR-MPLS Policy"; + } + + identity End.DX6 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and IPv6 cross-connect"; + } + + identity End.DX4 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and IPv4 cross-connect"; + } + + identity End.DT6 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific + IPv6 table lookup"; + } + + identity End.DT4 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific + IPv4 table lookup"; + } + + identity End.DT46 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and specific IP + table lookup"; + } + + identity End.DX2 { + base srv6-endpoint-type; + description "Endpoint with decapsulation and L2 cross-connect"; + } + + identity End.DX2V { + base srv6-endpoint-type; + description "Endpoint with decapsulation and VLAN L2 table lookup"; + } + + identity End.DT2U { + base srv6-endpoint-type; + description "Endpoint with decapsulation and unicast MAC L2 table lookup"; + } + + identity End.DT2M { + base srv6-endpoint-type; + description "Endpoint with decapsulation and L2 table flooding"; + } + + identity End.B6.Insert.Red { + base srv6-endpoint-type; + description "End.B6.Insert with reduced SRH"; + } + + identity End.B6.Encaps.Red { + base srv6-endpoint-type; + description "End.B6.Encaps with reduced SRH"; + } + + identity End_USD { + base srv6-endpoint-type; + description "End with USD"; + } + + identity End_PSP_USD { + base srv6-endpoint-type; + description "End with PSP & USD"; + } + + identity End_USP_USD { + base srv6-endpoint-type; + description "End with USP and USD"; + } + + identity End_PSP_USP_USD { + base srv6-endpoint-type; + description "End with PSP, USP & USD"; + } + + identity End.X_USD { + base srv6-endpoint-type; + description "End.X with USD"; + } + + identity End.X_PSP_USD { + base srv6-endpoint-type; + description "End.X with PSP & USD"; + } + + identity End.X_USP_USD { + base srv6-endpoint-type; + description "End.X with USP & USD"; + } + + identity End.X_PSP_USP_USD { + base srv6-endpoint-type; + description "End.X with PSP, USP & USD"; + } + + identity End.T_USD { + base srv6-endpoint-type; + description "End.T with USD"; + } + + identity End.T_PSP_USD { + base srv6-endpoint-type; + description "End.T with PSP & USD"; + } + + identity End.T_USP_USD { + base srv6-endpoint-type; + description "End.T with USP & USD"; + } + + identity End.T_PSP_USP_USD { + base srv6-endpoint-type; + description "End.T with PSP, USP & USD"; + } + + identity End_NEXT-ONLY-CSID { + base srv6-endpoint-type; + description "End with NEXT-ONLY-CSID"; + } + + identity END_NEXT-CSID { + base srv6-endpoint-type; + description "End with NEXT-CSID"; + } + + identity End_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End with NEXT-CSID & PSP"; + } + + identity End_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End with NEXT-CSID & USP"; + } + + identity End_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP & USP"; + } + + identity End_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID & USD"; + } + + identity End_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP & USD"; + } + + identity End_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, USP & USD"; + } + + identity End_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End with NEXT-CSID, PSP, USP & USD"; + } + + identity End.X_NEXT-ONLY-CSID { + base srv6-endpoint-type; + description "End.X with NEXT-ONLY-CSID"; + } + + identity End.X_NEXT-CSID { + base srv6-endpoint-type; + description "End.X with NEXT-CSID"; + } + + identity End.X_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & PSP"; + } + + identity End.X_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & USP"; + } + + identity End.X_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP & USP"; + } + + identity End.X_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID & USD"; + } + + identity End.X_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP & USD"; + } + + identity End.X_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, USP & USD"; + } + + identity End.X_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End.X with NEXT-CSID, PSP, USP & USD"; + } + + identity End.DX6_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX6 with NEXT-CSID"; + } + + identity End.DX4_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX4 with NEXT-CSID"; + } + + identity End.DT6_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT6 with NEXT-CSID"; + } + + identity End.DT4_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT4 with NEXT-CSID"; + } + + identity End.DT46_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT46 with NEXT-CSID"; + } + + identity End.DX2_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX2 with NEXT-CSID"; + } + + identity End.DX2V_NEXT-CSID { + base srv6-endpoint-type; + description "End.DX2V with NEXT-CSID"; + } + + identity End.DT2U_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT2U with NEXT-CSID"; + } + + identity End.DT2M_NEXT-CSID { + base srv6-endpoint-type; + description "End.DT2M with NEXT-CSID"; + } + + identity End.T_NEXT-CSID { + base srv6-endpoint-type; + description "End.T with NEXT-CSID"; + } + + identity End.T_NEXT-CSID_PSP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & PSP"; + } + + identity End.T_NEXT-CSID_USP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & USP"; + } + + identity End.T_NEXT-CSID_PSP_USP { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP & USP"; + } + + identity End.T_NEXT-CSID_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID & USD"; + } + + identity End.T_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP & USD"; + } + + identity End.T_NEXT-CSID_USP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, USP & USD"; + } + + identity End.T_NEXT-CSID_PSP_USP_USD { + base srv6-endpoint-type; + description "End.T with NEXT-CSID, PSP, USP & USD"; + } + + identity End.B6.Encaps_NEXT-CSID { + base srv6-endpoint-type; + description "End.B6.Encaps with NEXT-CSID"; + } + + identity End.B6.Encaps.Red_NEXT-CSID { + base srv6-endpoint-type; + description "End.B6.Encaps.Red with NEXT-CSID"; + } + + identity End.BM_NEXT-CSID { + base srv6-endpoint-type; + description "End.BM with NEXT-CSID"; + } + + identity End.B6.Encaps.Red_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.B6.Encaps.Red with NEXT-CSID, PSP & USD"; + } + + identity End.B6.Insert.Red_NEXT-CSID_PSP_USD { + base srv6-endpoint-type; + description "End.B6.Insert.Red with NEXT-CSID, PSP & USD"; + } + + typedef srv6-endpoint-behavior-type { + type identityref { + base srv6-endpoint-type; + } + description + "SRv6 endpoint behavior type. The behavior types are defined in the + IANA SRv6 Endpoint Behaviors registry."; + reference + "IANA SRv6 Endpoint Behaviors registry + (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; + } + } From 4899185a469b5dfaef643baae721b447065a459d Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Tue, 13 Jan 2026 08:23:04 -0500 Subject: [PATCH 4/5] Fix issues and bump openconfig-inet-types.yang to v0.9.0 Signed-off-by: Carmine Scarpitta --- release/models/aft/openconfig-aft-common.yang | 6 ++++-- .../models/types/openconfig-inet-types.yang | 20 +++++++------------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 3bc15fa58e..4f5ec81f1d 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -907,8 +907,10 @@ submodule openconfig-aft-common { description "Common parameters across IPv6 address family"; - leaf srv6-behavior-type { - type oc-inet:srv6-endpoint-type; + leaf srv6-endpoint-behavior { + type identityref { + base oc-inet:srv6-endpoint-type; + } description "Behavior type associated with the SID. The behavior types are defined in the IANA SRv6 Endpoint Behaviors registry."; diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 22c0bbc9b0..0df382145c 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,13 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2026-01-12" { + description + "Add suport for Segment Routing over IPv6 (SRv6)."; + reference "0.9.0"; + } revision "2025-06-18" { description @@ -912,16 +918,4 @@ module openconfig-inet-types { description "End.B6.Insert.Red with NEXT-CSID, PSP & USD"; } - typedef srv6-endpoint-behavior-type { - type identityref { - base srv6-endpoint-type; - } - description - "SRv6 endpoint behavior type. The behavior types are defined in the - IANA SRv6 Endpoint Behaviors registry."; - reference - "IANA SRv6 Endpoint Behaviors registry - (https://www.iana.org/assignments/segment-routing/segment-routing.xhtml)"; - } - } From cbc1ee8ddf7d574bd8a2cdb9cb949b5afe15cb00 Mon Sep 17 00:00:00 2001 From: Carmine Scarpitta Date: Tue, 13 Jan 2026 08:35:31 -0500 Subject: [PATCH 5/5] Fix typo in identity Signed-off-by: Carmine Scarpitta --- release/models/types/openconfig-inet-types.yang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 0df382145c..8a78d1410e 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -723,7 +723,7 @@ module openconfig-inet-types { description "End with NEXT-ONLY-CSID"; } - identity END_NEXT-CSID { + identity End_NEXT-CSID { base srv6-endpoint-type; description "End with NEXT-CSID"; }