diff options
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.yang | 589 |
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 |