summaryrefslogtreecommitdiffstats
path: root/srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang
diff options
context:
space:
mode:
Diffstat (limited to 'srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang')
-rw-r--r--srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang589
1 files changed, 589 insertions, 0 deletions
diff --git a/srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang b/srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang
new file mode 100644
index 000000000..e87a92f14
--- /dev/null
+++ b/srv6/srv6-api/src/main/yang/ietf-srv6-types@2018-03-01.yang
@@ -0,0 +1,589 @@
+module ietf-srv6-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-types";
+ prefix srv6-types;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ organization
+ "IETF SPRING Working Group";
+ contact
+ "WG Web: <http://tools.ietf.org/wg/spring/>
+ WG List: <mailto:spring@ietf.org>
+
+ Editor: Kamran Raza
+ <mailto:skraza@cisco.com>
+
+ Editor: Jaganbabu Rajamanickam
+ <maito:jrajaman@cisco.com>
+
+ Editor: Xufeng Liu
+ <mailto:Xufeng_Liu@jabil.com>
+
+ Editor: Zhibo Hu
+ <mailto:huzhibo@huawei.com>
+
+ Editor: Iftekhar Hussain
+ <mailto:IHussain@infinera.com>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Daniel Voyer
+ <mailto:daniel.voyer@bell.ca>
+
+ Editor: Hani Elmalky
+ <mailto:hani.elmalky@ericsson.com>
+
+ Editor: Satoru Matsushima
+ <mailto:satoru.matsushima@gmail.com>
+
+ Editor: Katsuhiro Horiba
+
+ <mailto:katsuhiro.horiba@g.softbank.co.jp>
+
+ Editor: Ahmed AbdelSalam
+ <mailto:ahmed.abdelsalam@gssi.it>
+
+ ";
+
+ description
+ "This YANG module defines the essential types for the
+ management of Segment-Routing with IPv6 dataplane (SRv6).
+
+ Copyright (c) 2018 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).";
+
+ reference "RFC XXXX";
+
+ revision 2018-03-01 {
+ description
+ "Updated to align with SRv6 network programming draft rev 04";
+ reference
+ "RFC XXXX: YANG Data Model for SRv6";
+ }
+
+ revision 2017-11-12 {
+ description
+ "Initial revision";
+ reference
+ "RFC XXXX: YANG Data Model for SRv6";
+ }
+
+ identity srv6-endpoint-type {
+ description
+ "Base identity from which specific SRv6 Endpoint types are derived.";
+ }
+
+ /* Endpoints defined under draft-filsfils-spring-srv6-network-programming */
+
+ identity End {
+ base srv6-endpoint-type;
+ description
+ "End function (variant: no PSP, no USP).";
+
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End_PSP {
+ base srv6-endpoint-type;
+ description
+ "End function (variant: PSP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End_USP {
+ base srv6-endpoint-type;
+ description
+ "End function (variant: USP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End_PSP_USP {
+ base srv6-endpoint-type;
+ description
+ "End function (variant: PSP and USP).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.X {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with cross-connect to an array
+ of layer-3 adjacencies (variant: no PSP, no USP).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.X_PSP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with cross-connect to an array
+ of layer-3 adjacencies (variant: PSP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.X_USP {
+ base srv6-endpoint-type;
+
+ description
+ "Endpoint with cross-connect to an array
+ of layer-3 adjacencies (variant: USP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.X_PSP_USP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with cross-connect to an array
+ of layer-3 adjacencies (variant: PSP and USP).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.T {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with specific IPv6 table lookup
+ (variant: no PSP, no USP).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.T_PSP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with specific IPv6 table lookup
+ (variant: PSP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.T_USP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with specific IPv6 table lookup
+ (variant: USP only).";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.T_PSP_USP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with specific IPv6 table lookup
+ (variant: PSP and USP).";
+
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.B6 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint bound to an SRv6 Policy";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.B6.Encaps {
+ base srv6-endpoint-type;
+ description
+ "This is a variation of the End.B6 behavior
+ where the SRv6 Policy also includes an
+ IPv6 Source Address A.";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.BM {
+ base srv6-endpoint-type;
+ description
+ "Endpoint bound to an SR-MPLS Policy";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DX6 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and cross-connect
+ to an array of IPv6 adjacencies";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DX4 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and cross-connect
+ to an array of IPv4 adjacencies";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+
+ identity End.DT6 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and specific
+ IPv6 table lookup";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DT4 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and specific
+ IPv4 table lookup";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DT46 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and specific IP
+ (IPv4 or IPv6) table lookup";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DX2 {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and Layer-2
+ cross-connect to an L2 interface";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DX2V {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and specific
+ VLAN L2 table lookup";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DT2U {
+ base srv6-endpoint-type;
+ description
+
+ "Endpoint with decapsulation and specific
+ unicast MAC L2 table lookup";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.DT2M {
+ base srv6-endpoint-type;
+ description
+ "Endpoint with decapsulation and specific L2 table
+ flooding";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.OTP {
+ base srv6-endpoint-type;
+ description
+ "Endpoint for OAM operation of timestamp and punt";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ identity End.S {
+ base srv6-endpoint-type;
+ description
+ "Endpoint in search of a target in table TE";
+ reference
+ "draft-filsfils-spring-srv6-network-programming-04";
+ }
+
+ /* Endpoints defined under draft-xuclad-spring-sr-service-chaining */
+
+ identity End.AS {
+ base srv6-endpoint-type;
+ description
+ "Service-Chaining Static proxy for inner type (Ethernet,
+ IPv4 or IPv6)";
+ reference
+ "draft-xuclad-spring-sr-service-chaining-01";
+ }
+
+ identity End.AD {
+ base srv6-endpoint-type;
+ description
+ "Service-Chaining Dynamic proxy for inner type (Ethernet,
+ IPv4 or IPv6)";
+ reference
+
+ "draft-xuclad-spring-sr-service-chaining-01";
+ }
+
+ identity End.ASM {
+ base srv6-endpoint-type;
+ description
+ "Service-Chaining Shared memory SR proxy for inner type
+ (Ethernet, IPv4 or IPv6)";
+ reference
+ "draft-xuclad-spring-sr-service-chaining-01";
+ }
+
+ identity End.AM {
+ base srv6-endpoint-type;
+ description
+ "Service-Chaining Masquerading SR proxy";
+ reference
+ "draft-xuclad-spring-sr-service-chaining-01";
+ }
+
+ /* Endpoints defined under draft-ietf-dmm-srv6-mobile-uplane */
+
+ identity End.MAP {
+ base srv6-endpoint-type;
+ description
+ "DMM End.MAP";
+ reference
+ "draft-ietf-dmm-srv6-mobile-uplane-01";
+ }
+
+ identity End.M.GTP6.UP {
+ base srv6-endpoint-type;
+ description
+ "DMM End.M.GTP6.UP";
+ reference
+ "draft-ietf-dmm-srv6-mobile-uplane-01";
+ }
+
+ identity End.M.GTP6.DN {
+ base srv6-endpoint-type;
+
+ description
+ "DMM End.M.GTP6.DN";
+ reference
+ "draft-ietf-dmm-srv6-mobile-uplane-01";
+ }
+
+ identity End.M.GTP4.DN {
+ base srv6-endpoint-type;
+ description
+ "DMM End.M.GTP4.DN";
+ reference
+ "draft-ietf-dmm-srv6-mobile-uplane-01";
+ }
+
+ identity End.Limit {
+ base srv6-endpoint-type;
+ description
+ "DMM End.Limit";
+ reference
+ "draft-ietf-dmm-srv6-mobile-uplane-01";
+ }
+
+ typedef srv6-transit-type {
+
+ type enumeration {
+ /* draft-filsfils-spring-srv6-network-programming-04 */
+ enum T { value 1; description "Transit behavior"; }
+ enum T.Insert {
+ description "Transit behavior with insertion of an SRv6 policy";
+ }
+ enum T.Insert.Red {
+ description "Transit behavior with reduced insertion of an SRv6 policy";
+ }
+ enum T.Encaps {
+ description "Transit behavior with encap of an SRv6 policy";
+ }
+ enum T.Encaps.Red {
+ description "Transit behavior with reduced encap of an SRv6 policy";
+ }
+ enum T.Encaps.L2 {
+ description "T.Encaps behavior on the received L2 frame";
+ }
+ enum T.Encaps.L2.Red {
+ description "T.Encaps.Red behavior on the received L2 frame";
+ }
+ }
+
+ description "SRv6 Transit behavior types";
+
+ }
+
+ typedef srv6-security-rule-type {
+ type enumeration {
+ /* draft-filsfils-spring-srv6-network-programming-04 */
+ enum SEC1 { value 1; description "Security rule SEC1"; }
+ enum SEC2 { description "Security rule SEC2"; }
+ enum SEC3 { description "Security rule SEC3"; }
+ enum SEC4 { description "Security rule SEC4"; }
+ }
+
+ description "SRv6 Security rule types";
+ }
+
+ typedef srv6-counter-type {
+ type enumeration {
+ /* draft-filsfils-spring-srv6-network-programming-04 */
+ enum CNT1 { value 1; description "CNT1"; }
+ enum CNT2 { description "CNT2"; }
+ enum CNT3 { description "CNT3"; }
+ }
+
+ description "SRv6 counter types";
+ }
+
+ typedef srv6-sid {
+ type inet:ipv6-prefix;
+ description
+ "This type defines a SID value in SRv6";
+ }
+
+ typedef srv6-func-opcode {
+ type uint32;
+ description
+ "This is a typedef for SID FUNC's opcode type";
+ }
+
+ typedef srv6-func-opcode-reserved {
+ type uint32 {
+ range "1 .. 63";
+ }
+
+ description
+ "This is a typedef for SID FUNC's reserved opcode type";
+ }
+
+ typedef srv6-func-opcode-unreserved {
+ type uint32 {
+
+ range "64 .. max";
+ }
+
+ description
+ "This is a typedef for SID FUNC's allocatable (unreserved) opcode type";
+ }
+
+ typedef srv6-func-opcode-reserved-type {
+ type enumeration {
+ enum invalid { value 0; description "Invalid opcode"; }
+ }
+
+ description "SRv6 SID FUNC Reserved Opcodes";
+ }
+
+ typedef srv6-locator-len {
+ type uint8 {
+ range "32 .. 96";
+ }
+ description
+ "This type defines an SRv6 locator len with range constraints";
+ }
+
+ typedef srv6-sid-pfxlen {
+ type uint8 {
+ range "33 .. 128";
+ }
+ default 128;
+ description
+ "This type defines a SID prefixlen with range constraints";
+ }
+
+ typedef sid-alloc-type {
+ type enumeration {
+ enum Dynamic {
+ description
+ "SID allocated dynamically.";
+ }
+ enum Explicit {
+ description
+ "SID allocated with explicit (static) value";
+ }
+ }
+ description
+ "Types of sid allocation used.";
+ }
+
+ identity srv6-sid-owner-type {
+
+ description
+ "Base identity from which SID owner types are derived.";
+ }
+
+ identity isis {
+ base srv6-sid-owner-type;
+ description "ISIS";
+ }
+
+ identity ospfv3 {
+ base srv6-sid-owner-type;
+ description "OSPFv3";
+ }
+
+ identity bgp {
+ base srv6-sid-owner-type;
+ description "BGP";
+ }
+
+ identity evpn {
+ base srv6-sid-owner-type;
+ description "EVPN";
+ }
+
+ identity sr-policy {
+ base srv6-sid-owner-type;
+ description "SR Policy";
+ }
+
+ identity service-function {
+ base srv6-sid-owner-type;
+ description "SF";
+ }
+
+ // TODO: Rtg module ?
+ typedef table-id {
+ type uint32;
+ description
+ "Routing Table Id";
+ }
+
+ typedef srv6-status-type {
+ type enumeration {
+ enum up { value 1; description "State is Up"; }
+ enum down { description "State is Down"; }
+ }
+ description
+ "Status type";
+
+ }
+
+ typedef srv6-nexthop-type {
+ type enumeration {
+ enum ipv4 { value 1; description "IPv4 next-hop"; }
+ enum ipv6 { description "IPv6 next-hop"; }
+ enum mpls { description "MPLS next-hop"; }
+ enum l2 { description "L2 next-hop"; }
+ }
+ description
+ "Forwarding Next-hop type";
+ }
+
+} // module