   module yms-ietf-te-types {

     namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";

     /* Replace with IANA when assigned */
     prefix "te-types";

     import yms-ietf-inet-types {
       prefix inet;
     }

     organization
       "IETF Traffic Engineering Architecture and Signaling (TEAS)
        Working Group";

     contact
       "WG Web:   <http://tools.ietf.org/wg/teas/>
        WG List:  <mailto:teas@ietf.org>

        WG Chair: Lou Berger
                  <mailto:lberger@labn.net>

        WG Chair: Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

        Editor:   Tarek Saad
                  <mailto:tsaad@cisco.com>

        Editor:   Rakesh Gandhi
                  <mailto:rgandhi@cisco.com>

        Editor:   Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

        Editor:   Himanshu Shah
                  <mailto:hshah@ciena.com>

        Editor:   Xufeng Liu
                  <mailto:xufeng.liu@ericsson.com>

        Editor:   Xia Chen
                  <mailto:jescia.chenxia@huawei.com>

        Editor:   Raqib Jones
                  <mailto:raqib@Brocade.com>

        Editor:   Bin Wen
                  <mailto:Bin_Wen@cable.comcast.com>";

     description
       "This module contains a collection of generally
       useful TE specific YANG data type defintions.";

     revision 2016-03-20 {
       description "Latest revision of TE generic types";
       reference "RFC3209";
     }

     identity tunnel-type {
       description
         "Base identity from which specific tunnel types are
         derived.";
     }

     identity tunnel-p2p {
       base tunnel-type;
       description
         "TE point-to-point tunnel type.";
     }

     identity tunnel-p2mp {
       base tunnel-type;
       description
         "TE point-to-multipoint tunnel type.";
     }

     identity state-type {
       description
         "Base identity for TE states";
     }

     identity state-up {
       base state-type;
       description
         "State up";
     }

     identity state-down {
       base state-type;
       description
         "State down";
     }

     identity lsp-prot-type {
       description
         "Base identity from which LSP protection types are
         derived.";
     }

     identity lsp-prot-unprotected {
       description
         "LSP protection 'Unprotected'";
       reference "RFC4872";
     }

     identity lsp-prot-reroute-extra {
       description
         "LSP protection '(Full) Rerouting'";
       reference "RFC4872";
     }

     identity lsp-prot-reroute {
       description
         "LSP protection 'Rerouting without Extra-Traffic'";
       reference "RFC4872";
     }

     identity lsp-prot-1-for-n {
       description
         "LSP protection '1:N Protection with Extra-Traffic'";
       reference "RFC4872";
     }

     identity lsp-prot-unidir-1-to-1 {
       description
         "LSP protection '1+1 Unidirectional Protection'";
       reference "RFC4872";
     }

     identity lsp-prot-bidir-1-to-1 {
       description
         "LSP protection '1+1 Bidirectional Protection'";
       reference "RFC4872";
     }

     identity switching-capabilities {
       description
         "Base identity for interface switching capabilities";
     }

     identity switching-psc1 {
       base switching-capabilities;
       description
         "Packet-Switch Capable-1 (PSC-1)";
     }

     identity switching-evpl {
       base switching-capabilities;
       description
         "Ethernet Virtual Private Line (EVPL)";
     }

     identity switching-l2sc {
       base switching-capabilities;
       description
         "Layer-2 Switch Capable (L2SC)";
     }

     identity switching-tdm {
       base switching-capabilities;
       description
         "Time-Division-Multiplex Capable (TDM)";
     }

     identity switching-otn {
       base switching-capabilities;
       description
         "OTN-TDM capable";
     }

     identity switching-dcsc {
       base switching-capabilities;
       description
         "Data Channel Switching Capable (DCSC)";
     }
     identity switching-lsc {
       base switching-capabilities;
       description
         "Lambda-Switch Capable (LSC)";
     }

     identity switching-fsc {
       base switching-capabilities;
       description
         "Fiber-Switch Capable (FSC)";
     }

     identity lsp-encoding-types {
       description
         "Base identity for encoding types";
     }

     identity lsp-encoding-packet {
       base lsp-encoding-types;
       description
         "Packet LSP encoding";
     }

     identity lsp-encoding-ethernet {
       base lsp-encoding-types;
       description
         "Ethernet LSP encoding";
     }

     identity lsp-encoding-pdh {
       base lsp-encoding-types;
       description
         "ANSI/ETSI LSP encoding";
     }

     identity lsp-encoding-sdh {
       base lsp-encoding-types;
       description
         "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
     }

     identity lsp-encoding-digital-wrapper {
       base lsp-encoding-types;
       description
         "Digital Wrapper LSP encoding";
     }

     identity lsp-encoding-lambda {
       base lsp-encoding-types;
       description
         "Lambda (photonic) LSP encoding";
     }

     identity lsp-encoding-fiber {
       base lsp-encoding-types;
       description
         "Fiber LSP encoding";
     }

     identity lsp-encoding-fiber-channel {
       base lsp-encoding-types;
       description
         "FiberChannel LSP encoding";
     }

     identity lsp-encoding-oduk {
       base lsp-encoding-types;
       description
         "G.709 ODUk (Digital Path)LSP encoding";
     }

     identity lsp-encoding-optical-channel {
       base lsp-encoding-types;
       description
         "Line (e.g., 8B/10B) LSP encoding";
     }

     identity lsp-encoding-line {
       base lsp-encoding-types;
       description
         "Line (e.g., 8B/10B) LSP encoding";
     }

     /* TE basic features */
     feature p2mp-te {
       description
         "Indicates support for P2MP-TE";
     }

     feature frr-te {
       description
         "Indicates support for TE FastReroute (FRR)";
     }

     feature extended-admin-groups {
       description
         "Indicates support for TE link extended admin
         groups.";
     }

     feature named-path-affinities {
       description
         "Indicates support for named path affinities";
     }

     feature named-extended-admin-groups {
       description
         "Indicates support for named extended admin groups";
     }

     feature named-srlg-groups {
       description
         "Indicates support for named SRLG groups";
     }

     feature named-path-constraints {
       description
         "Indicates support for named path constraints";
     }

     grouping explicit-route-subobject {
       description
         "The explicit route subobject grouping";
       choice type {
         description
           "The explicit route subobject type";
         case ipv4-address {
           description
             "IPv4 address explicit route subobject";
           leaf v4-address {
             type inet:ipv4-address;
             description
               "An IPv4 address.  This address is
               treated as a prefix based on the
               prefix length value below. Bits beyond
               the prefix are ignored on receipt and
               SHOULD be set to zero on transmission.";
           }
           leaf v4-prefix-length {
             type uint8;
             description
               "Length in bits of the IPv4 prefix";
           }
           leaf v4-loose {
             type boolean;
             description
               "Describes whether the object is loose
               if set, or otherwise strict";
           }
         }
         case ipv6-address {
           description
             "IPv6 address Explicit Route Object";
           leaf v6-address {
             type inet:ipv6-address;
             description
               "An IPv6 address.  This address is
               treated as a prefix based on the
               prefix length value below.  Bits
               beyond the prefix are ignored on
               receipt and SHOULD be set to zero
               on transmission.";
           }
           leaf v6-prefix-length {
             type uint8;
             description
               "Length in bits of the IPv4 prefix";
           }
           leaf v6-loose {
             type boolean;
             description
               "Describes whether the object is loose
               if set, or otherwise strict";
           }
         }
         case as-number {
           leaf as-number {
             type uint16;
             description "AS number";
           }
           description
             "Autonomous System explicit route subobject";
         }
         case unnumbered-link {
           leaf router-id {
             type inet:ip-address;
             description
               "A router-id address";
           }
           leaf interface-id {
             type uint32;
             description "The interface identifier";
           }
           description
             "Unnumbered link explicit route subobject";
           reference
             "RFC3477: Signalling Unnumbered Links in
             RSVP-TE";
         }
         case label {
           leaf value {
             type uint32;
             description "the label value";
           }
           description
             "The Label ERO subobject";
         }
         /* AS domain sequence..? */
       }
     }

     grouping record-route-subobject {
       description
         "The record route subobject grouping";
       choice type {
         description
           "The record route subobject type";
         case ipv4-address {
           leaf v4-address {
             type inet:ipv4-address;
             description
               "An IPv4 address.  This address is
               treated as a prefix based on the prefix
               length value below. Bits beyond the
               prefix are ignored on receipt and
               SHOULD be set to zero on transmission.";
           }
           leaf v4-prefix-length {
             type uint8;
             description
               "Length in bits of the IPv4 prefix";
           }
           leaf v4-flags {
             type uint8;
             description
               "IPv4 address sub-object flags";
             reference "RFC3209";
           }
         }
         case ipv6-address {
           leaf v6-address {
             type inet:ipv6-address;
             description
               "An IPv6 address.  This address is
               treated as a prefix based on the
               prefix length value below. Bits
               beyond the prefix are ignored on
               receipt and SHOULD be set to zero
               on transmission.";
           }
           leaf v6-prefix-length {
             type uint8;
             description
               "Length in bits of the IPv4 prefix";
           }
           leaf v6-flags {
             type uint8;
             description
               "IPv6 address sub-object flags";
             reference "RFC3209";
           }
         }
         case label {
           leaf value {
             type uint32;
             description "the label value";
           }
           leaf flags {
             type uint8;
             description
               "Label sub-object flags";
             reference "RFC3209";
           }
           description
             "The Label ERO subobject";
         }
       }
     }

     identity route-usage-type {
       description
         "Base identity for route usage";
     }

     identity route-include-ero {
       base route-usage-type;
       description
         "Include ERO from route";
     }

     identity route-exclude-ero {
       base route-usage-type;
       description
         "Exclude ERO from route";
     }

     identity route-exclude-srlg {
       base route-usage-type;
       description
         "Exclude SRLG from route";
     }

     identity path-metric-type {
       description
         "Base identity for path metric type";
     }

     identity path-metric-te {
       base path-metric-type;
       description
         "TE path metric";
     }

     identity path-metric-igp {
       base path-metric-type;
       description
         "IGP path metric";
     }

     identity path-tiebreaker-type {
       description
         "Base identity for path tie-breaker type";
     }

     identity path-tiebreaker-minfill {
       base path-tiebreaker-type;
       description
         "Min-Fill LSP path placement";
     }

     identity path-tiebreaker-maxfill {
       base path-tiebreaker-type;
       description
         "Max-Fill LSP path placement";
     }

     identity path-tiebreaker-randoom {
       base path-tiebreaker-type;
       description
         "Random LSP path placement";
     }

     identity bidir-provisioning-mode {
       description
         "Base identity for bidirectional provisioning
         mode.";
     }

     identity bidir-provisioning-single-sided {
       base bidir-provisioning-mode;
       description
         "Single-sided bidirectional provioning mode";
     }

     identity bidir-provisioning-double-sided {
       base bidir-provisioning-mode;
       description
         "Double-sided bidirectional provioning mode";
     }

     identity bidir-association-type {
       description
         "Base identity for bidirectional association type";
     }

     identity bidir-assoc-corouted {
       base bidir-association-type;
       description
         "Co-routed bidirectional association type";
     }

     identity bidir-assoc-non-corouted {
       base bidir-association-type;
       description
         "Non co-routed bidirectional association type";
     }

     identity resource-affinities-type {
       description
         "Base identity for resource affinities";
     }

     identity resource-aff-include-all {
       base resource-affinities-type;
       description
         "The set of attribute filters associated with a
         tunnel all of which must be present for a link
         to be acceptable";
     }

     identity resource-aff-include-any {
       base resource-affinities-type;
       description
         "The set of attribute filters associated with a
         tunnel any of which must be present for a link
         to be acceptable";
     }

     identity resource-aff-exclude-any {
       base resource-affinities-type;
       description
         "The set of attribute filters associated with a
         tunnel any of which renders a link unacceptable";
     }

     typedef admin-group {
       type binary {
         length 32;
       }
       description
         "Administrative group/Resource class/Color.";
     }

     typedef extended-admin-group {
       type binary;
       description
         "Extended administrative group/Resource class/Color.";
     }

     typedef admin-groups {
       type union {
         type admin-group;
         type extended-admin-group;
       }
       description "TE administrative group derived type";
     }

     typedef srlg {
       type uint32;
       description "SRLG type";
     }

     identity path-computation-srlg-type {
       description
         "Base identity for SRLG path computation";
     }

     identity srlg-ignore {
       base path-computation-srlg-type;
       description
         "Ignores SRLGs in path computation";
     }

     identity srlg-strict {
       base path-computation-srlg-type;
       description
         "Include strict SRLG check in path computation";
     }

     identity srlg-preferred {
       base path-computation-srlg-type;
       description
         "Include preferred SRLG check in path computation";
     }

     identity srlg-weighted {
       base path-computation-srlg-type;
       description
         "Include weighted SRLG check in path computation";
     }

     typedef te-metric {
       type uint32;
       description
         "TE link metric";
     }

     typedef topology-id {
       type string {
         pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
       }
       description
         "An identifier for a topology.";
     }

     /**
      * TE tunnel generic groupings
      **/

     /* Tunnel path selection parameters */
     grouping tunnel-path-selection {
       description
         "Tunnel path selection properties grouping";
       container path-selection {
         description
           "Tunnel path selection properties container";
         leaf topology {
           type te-types:topology-id;
           description
             "The tunnel path is computed using the specific
             topology identified by this identifier";
         }
         leaf cost-limit {
           type uint32 {
             range "1..4294967295";
           }
           description
             "The tunnel path cost limit.";
         }
         leaf hop-limit {
           type uint8 {
             range "1..255";
           }
           description
             "The tunnel path hop limit.";
         }
         leaf metric-type {
           type identityref {
             base path-metric-type;
           }
           default path-metric-te;
           description
             "The tunnel path metric type.";
         }
         leaf tiebreaker-type {
           type identityref {
             base path-tiebreaker-type;
           }
           default path-tiebreaker-maxfill;
           description
             "The tunnel path computation tie breakers.";
         }
         leaf ignore-overload {
           type boolean;
           description
             "The tunnel path can traverse overloaded node.";
         }
         uses tunnel-path-affinities;
         uses tunnel-path-srlgs;
       }
     }

     grouping tunnel-path-affinities {
       description
         "Path affinities grouping";
       container tunnel-path-affinities {
         if-feature named-path-affinities;
         description
           "Path affinities container";
         choice style {
           description
             "Path affinities representation style";
           case values {
             leaf value {
               type uint32 {
                 range "0..4294967295";
               }
               description
                 "Affinity value";
             }
             leaf mask {
               type uint32 {
                 range "0..4294967295";
               }
               description
                 "Affinity mask";
             }
           }
           case named {
             list constraints {
               key "usage";
               leaf usage {
                 type identityref {
                   base resource-affinities-type;
                 }
                 description "Affinities usage";
               }
               container constraint {
                 description
                   "Container for named affinities";
                 list affinity-names {
                   key "name";
                   leaf name {
                     type string;
                     description
                       "Affinity name";
                   }
                   description
                     "List of named affinities";
                 }
               }
               description
                 "List of named affinity constraints";
             }
           }
         }
       }
     }

     grouping tunnel-path-srlgs {
       description
         "Path SRLG properties grouping";
       container tunnel-path-srlgs {
         description
           "Path SRLG properties container";
         choice style {
           description
             "Type of SRLG representation";
           case values {
             leaf usage {
               type identityref {
                 base route-exclude-srlg;
               }
               description "SRLG usage";
             }
             leaf-list values {
               type te-types:srlg;
               description "SRLG value";
             }
           }
           case named {
             list constraints {
               key "usage";
               leaf usage {
                 type identityref {
                   base route-exclude-srlg;
                 }
                 description "SRLG usage";
               }
               container constraint {
                 description
                   "Container for named SRLG list";
                 list srlg-names {
                   key "name";
                   leaf name {
                     type string;
                     description
                       "The SRLG name";
                   }
                   description
                     "List named SRLGs";
                 }
               }
               description
                 "List of named SRLG constraints";
             }
           }
         }
       }
     }

     grouping tunnel-bidir-assoc-properties {
       description
         "TE tunnel associated bidirectional properties
         grouping";
       container bidirectional {
         description
           "TE tunnel associated bidirectional attributes.";
         container association {
           description
             "Tunnel bidirectional association properties";
           leaf id {
             type uint16;
             description
               "The TE tunnel association identifier.";
           }
           leaf source {
             type inet:ip-address;
             description
               "The TE tunnel association source.";
           }
           leaf global-source {
             type inet:ip-address;
             description
               "The TE tunnel association global
               source.";
           }
           leaf type {
             type identityref {
               base bidir-association-type;
             }
             default bidir-assoc-non-corouted;
             description
               "The TE tunnel association type.";
           }
           leaf provisioing {
             type identityref {
               base bidir-provisioning-mode;
             }
             description
               "Describes the provisioning model of the
               associated bidirectional LSP";
             reference
               "draft-ietf-teas-mpls-tp-rsvpte-ext-
               associated-lsp, section-3.2";
           }
         }
       }
     }
     /*** End of TE tunnel groupings ***/

     /**
      * TE interface generic groupings
      **/
   }
