module actn-ietf-routing-types {

  namespace "urn:ietf:params:xml:ns:yang:actn-ietf-routing-types";
  prefix "rt-types";

  import yrt-ietf-yang-types {
    prefix "yang";
  }

  import yrt-ietf-inet-types {
    prefix "inet";
  }

  organization "IETF Routing Area Working Group (rtgwg)";

  contact
      "Routing Area Working Group - <rtgwg@ietf.org>";

  description
    "This module contains a collection of YANG data types
     considered generally useful for routing protocols.";

  revision 2017-02-27 {
    description
      "Initial revision.";
    reference
      "RFC TBD: Routing YANG Data Types";
  }

  /*** collection of types related to routing ***/
  typedef router-id {
    type yang:dotted-quad;
    description
      "A 32-bit number in the dotted quad format assigned to each
       router. This number uniquely identifies the router within an
       Autonomous System.";
  }

  // address-family
  identity address-family {
    description
      "Base identity from which identities describing address
       families are derived.";
  }

  identity ipv4 {
    base address-family;
    description
      "This identity represents IPv4 address family.";
  }

  identity ipv6 {
    base address-family;
    description
      "This identity represents IPv6 address family.";
  }

  //The rest of the values deinfed in the IANA registry

  identity nsap {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity hdlc {
    base address-family;
    description
      "(8-bit multidrop)
        Address family from IANA registry.";
  }
  identity bbn1822 {
    base address-family;
    description
      "AHIP (BBN report #1822)
       Address family from IANA registry.";
  }
  identity ieee802 {
    base address-family;
    description
      "(includes all 802 media plus Ethernet canonical format)
       Address family from IANA registry.";
  }
  identity e163 {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity e164 {
    base address-family;
    description
      "SMDS, Frame Relay, ATM
       Address family from IANA registry.";
  }
  identity f69 {
    base address-family;
    description
      "(Telex)
       Address family from IANA registry.";
  }
  identity x121 {
    base address-family;
    description
      "(X.25, Frame Relay)
       Address family from IANA registry.";
  }
  identity ipx {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity appletalk {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity decnet-iv {
    base address-family;
    description
      "Decnet IV
       Address family from IANA registry.";
  }
  identity vines {
    base address-family;
    description
      "Banyan Vines
       Address family from IANA registry.";
  }
  identity e164-nsap {
    base address-family;
    description
      "E.164 with NSAP format subaddress
       Address family from IANA registry.";
  }
  identity dns {
    base address-family;
    description
      "Domain Name System
       Address family from IANA registry.";
  }
  identity dn {
    base address-family;
    description
      "Distinguished Name
       Address family from IANA registry.";
  }
  identity as-num {
    base address-family;
    description
      "AS Number
       Address family from IANA registry.";
  }
  identity xtp-v4 {
    base address-family;
    description
      "XTP over IPv4
       Address family from IANA registry.";
  }
  identity xtp-v6 {
    base address-family;
    description
      "XTP over IPv6
       Address family from IANA registry.";
  }
  identity xtp {
    base address-family;
    description
      "XTP native mode XTP
       Address family from IANA registry.";
  }
  identity fc-port {
    base address-family;
    description
      "Fibre Channel World-Wide Port Name
       Address family from IANA registry.";
  }
  identity fc-node {
    base address-family;
    description
      "Fibre Channel World-Wide Node Name
       Address family from IANA registry.";
  }
  identity gwid {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity l2vpn {
    base address-family;
    description
      "Address family from IANA registry.";
  }
  identity mpls-tp-section-eid {
    base address-family;
    description
      "MPLS-TP Section Endpoint Identifier
       Address family from IANA registry.";
  }
  identity mpls-tp-lsp-eid {
    base address-family;
    description
      "MPLS-TP LSP Endpoint Identifier
       Address family from IANA registry.";
  }
  identity mpls-tp-pwe-eid {
    base address-family;
    description
      "MPLS-TP Pseudowire Endpoint Identifier
       Address family from IANA registry.";
  }
  identity mt-v4 {
    base address-family;
    description
      "Multi-Topology IPv4.
       Address family from IANA registry.";
  }
  identity mt-v6 {
    base address-family;
    description
      "Multi-Topology IPv6.
       Address family from IANA registry.";
  }

  /*** collection of types related to VPN ***/
  typedef route-target {
    type string {
      pattern
        '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
      + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|'
      + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|'
      + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|'
      + '[0-3]?\d{0,8}\d))|'
      + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|'
      + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|'
      + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|'
      + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|'
      + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|'
      + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):'
      + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
      + '[0-5]?\d{0,3}\d))';
    }
    description
      "A route target is an 8-octet BGP extended community
       initially identifying a set of sites in a BGP
       VPN (RFC 4364). However, it has since taken on a more
       general role in BGP route filtering.
       A route target consists of three fields:
       a 2-octet type field, an administrator field,
       and an assigned number field.
       According to the data formats for type 0, 1, and 2 defined in
       RFC4360 and RFC5668, the encoding pattern is defined as:

       0:2-octet-asn:4-octet-number
       1:4-octet-ipv4addr:2-octet-number
       2:4-octet-asn:2-octet-number.

       Some valid examples are: 0:100:100, 1:1.1.1.1:100, and
       2:1234567890:203.";
    reference
      "RFC4360: BGP Extended Communities Attribute.
       RFC5668: 4-Octet AS Specific BGP Extended Community.";
  }

  typedef route-target-type {
    type enumeration {
      enum "import" {
        value "0";
        description
          "The route target applies to route import.";
       }
      enum "export" {
        value "1";
        description
          "The route target applies to route export.";
       }
      enum "both" {
        value "2";
        description
          "The route target applies to both route import and
           route export.";
       }
    }
    description
      "Indicates the role a route target takes
       in route filtering.";
    reference
      "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
  }

  typedef route-distinguisher {
    type string {
      pattern
        '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
      + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|'
      + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|'
      + '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|'
      + '[0-3]?\d{0,8}\d))|'
      + '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|'
      + '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|'
      + '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|'
      + '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|'
      + '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|'
      + '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):'
      + '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
      + '[0-5]?\d{0,3}\d))|'
      + '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):'
      + '[\da-fA-F]{1,12})';
    }
    description
      "A route distinguisher is an 8-octet value used to distinguish
       routes from different BGP VPNs (RFC 4364). A route
       distinguisher consists of three fields: A 2-octet type field,
       an administrator field, and an assigned number field.
       According to the data formats for type 0, 1, and 2 defined in
       RFC4364, the encoding pattern is defined as:

       0:2-octet-asn:4-octet-number
       1:4-octet-ipv4addr:2-octet-number
       2:4-octet-asn:2-octet-number.
       2-octet-other-hex-number:6-octet-hex-number

       Some valid examples are: 0:100:100, 1:1.1.1.1:100, and
       2:1234567890:203.";
    reference
      "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
  }

  /*** collection of types common to multicast ***/
  typedef ipv4-multicast-group-address {
    type inet:ipv4-address {
      pattern '(2((2[4-9])|(3[0-9]))\.).*';
    }
    description
      "This type represents an IPv4 multicast group address,
       which is in the range from 224.0.0.0 to 239.255.255.255.";
    reference
      "RFC1112: Host Extensions for IP Multicasting.";
  }

  typedef ipv6-multicast-group-address {
    type inet:ipv6-address {
      pattern
        '(([fF]{2}[0-9a-fA-F]{2}):).*';
    }
    description
      "This type represents an IPv6 multicast group address,
       which is in the range of FF00::/8.";
    reference
      "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7.
       RFC7346: IPv6 Multicast Address Scopes.";
  }

  typedef ip-multicast-group-address {
    type union {
      type ipv4-multicast-group-address;
      type ipv6-multicast-group-address;
    }
    description
     "This type represents an IP multicast group address and is IP
      version neutral. The format of the textual representation
      implies the IP version.";
  }

  typedef ipv4-multicast-source-address {
    type union {
      type enumeration {
        //TODO: FIXME
        //enum '*' {
        enum 'any-src-addr' {
          description
          "Any source address.";
        }
      }
      type inet:ipv4-address;
    }
    description
      "Multicast source IPv4 address type.";
  }

  typedef ipv6-multicast-source-address {
    type union {
      type enumeration {
        //TODO: FIXME
        //enum '*' {
        enum 'any-src-addr' {
          description
          "Any source address.";
        }
      }
      type inet:ipv6-address;
    }
    description
      "Multicast source IPv6 address type.";
  }

  /*** collection of types common to protocols ***/
  typedef bandwidth-ieee-float32 {
    type string {
      pattern
        '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
      + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
      + '1[01]\d|0?\d?\d)?)';
    }
    description
      "Bandwidth in IEEE 754 floating point 32-bit binary format:
       (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
       where Exponent uses 8 bits, and Fraction uses 23 bits.
       The units are octets per second.
       The encoding format is the external hexadecimal-significand
       character sequences specified in IEEE 754 and C99,
       restricted to be normalized, non-negative, and non-fraction:
       0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D
       where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are
       integers in the range of [0..127].
       When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH',
       the least significant digit must be an even number.
       'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power
       of two.
       Some examples are: 0x0p0, 0x1p10, and 0x1.abcde2p+20";
    reference
      "IEEE Std 754-2008: IEEE Standard for Floating-Point
       Arithmetic.";
  }

  typedef link-access-type {
    type enumeration {
      enum "broadcast" {
        description
        "Specify broadcast multi-access network.";
      }
      enum "non-broadcast-multiaccess" {
        description
        "Specify Non-Broadcast Multi-Access (NBMA) network.";
      }
      enum "point-to-multipoint" {
        description
        "Specify point-to-multipoint network.";
      }
      enum "point-to-point" {
        description
        "Specify point-to-point network.";
      }
    }
    description
      "Link access type.";
  }

  typedef timer-multiplier {
    type uint8;
    description
      "The number of timer value intervals that should be
       interpreted as a failure.";
  }

  typedef timer-value-seconds16 {
    type union {
      type uint16 {
        range "1..65535";
        }
      type enumeration {
        enum "infinity" {
          description "The timer is set to infinity.";
        }
        enum "not-set" {
          description "The timer is not set.";
        }
      }
    }
    units seconds;
    description "Timer value type, in seconds (16 bit range).";
  }

  typedef timer-value-seconds32 {
    type union {
      type uint32 {
        range "1..4294967295";
        }
      type enumeration {
        enum "infinity" {
          description "The timer is set to infinity.";
        }
        enum "not-set" {
          description "The timer is not set.";
        }
      }
    }
    units seconds;
    description "Timer value type, in seconds (32 bit range).";
  }

  typedef timer-value-milliseconds {
    type union {
      type uint32{
        range "1..4294967295";
        }
      type enumeration {
        enum "infinity" {
          description "The timer is set to infinity.";
        }
        enum "not-set" {
          description "The timer is not set.";
        }
      }
    }
    units milliseconds;
    description "Timer value type, in milliseconds.";
  }

  /*** collection of types related to MPLS/GMPLS ***/
  typedef generalized-label {
    type binary;
    description
      "Generalized label. Nodes sending and receiving the
       Generalized Label know the kinds of link they are
       using. Hence, the Generalized Label does not identify
       its type.  Instead, nodes are expected to know from
       the context and type of label to expect.";
    reference "RFC3471: Section 3.2";
  }

  identity mpls-label-special-purpose-value {
    description
      "Base identity for deriving identities describing
       special-purpose Multiprotocol Label Switching (MPLS) label
       values.";
    reference
      "RFC7274: Allocating and Retiring Special-Purpose MPLS
       Labels.";
  }

  identity ipv4-explicit-null-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the IPv4 Explicit NULL Label.";
    reference
      "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
  }

  identity router-alert-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the Router Alert Label.";
    reference
      "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
  }

  identity ipv6-explicit-null-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the IPv6 Explicit NULL Label.";
    reference
      "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
  }

  identity implicit-null-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the Implicit NULL Label.";
    reference
      "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
  }

  identity entropy-label-indicator {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the Entropy Label Indicator.";
    reference
      "RFC6790: The Use of Entropy Labels in MPLS Forwarding.
       Sections 3 and 10.1.";
  }

  identity gal-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the Generic Associated Channel Label
       (GAL).";
    reference
      "RFC5586: MPLS Generic Associated Channel.
       Sections 4 and 10.";
  }

  identity oam-alert-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the OAM Alert Label.";
    reference
      "RFC3429: Assignment of the 'OAM Alert Label' for Multiprotocol
       Label Switching Architecture (MPLS) Operation and Maintenance
       (OAM) Functions.
       Sections 3 and 6.";
  }

  identity extension-label {
    base mpls-label-special-purpose-value;
    description
      "This identity represents the Extension Label.";
    reference
      "RFC7274: Allocating and Retiring Special-Purpose MPLS Labels.
       Sections 3.1 and 5.";
  }

  typedef mpls-label-special-purpose {
    type identityref {
      base mpls-label-special-purpose-value;
    }
    description
      "This type represents the special-purpose Multiprotocol Label
       Switching (MPLS) label values.";
    reference
      "RFC3032: MPLS Label Stack Encoding.
       RFC7274: Allocating and Retiring Special-Purpose MPLS
       Labels.";
  }

  typedef mpls-label-general-use {
    type uint32 {
      range "16..1048575";
    }
    description
      "The 20 bits label values in an MPLS label stack entry,
       specified in RFC3032. This label value does not include
       the encodings of Traffic Class and TTL (time to live).
       The label range specified by this type is for general use,
       with special-purpose MPLS label values excluded.";
    reference
      "RFC3032: MPLS Label Stack Encoding.";
  }

  typedef mpls-label {
    type union {
      type mpls-label-special-purpose;
      type mpls-label-general-use;
    }
    description
      "The 20 bits label values in an MPLS label stack entry,
       specified in RFC3032. This label value does not include
       the encodings of Traffic Class and TTL (time to live).";
    reference
      "RFC3032: MPLS Label Stack Encoding.";
  }

  /*
   * Groupings
   */
  grouping mpls-label-stack {
    description
      "A grouping that specifies an MPLS label stack.";
    container mpls-label-stack {
      description
        "Container for a list of MPLS label stack entries.";
      list entry {
        key "id";
        description
          "List of MPLS label stack entries.";
        leaf id {
          type uint8;
          description
            "Identifies the sequence of an MPLS label stack entries.
             An entry with smaller ID value is precedes an entry in
             the label stack with a smaller ID.";
        }
        leaf label {
          type rt-types:mpls-label;
          description
            "Label value.";
        }
        leaf ttl {
          type uint8;
          description
            "Time to Live (TTL).";
          reference
            "RFC3032: MPLS Label Stack Encoding.";
        }
        leaf traffic-class {
          type uint8 {
            range "0..7";
          }
          description
            "Traffic Class (TC).";
          reference
            "RFC5462: Multiprotocol Label Switching (MPLS) Label
             Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
             Field.";
        }
      }
    }
  } // mpls-label-stack

  grouping vpn-route-targets {
    description
      "A grouping that specifies Route Target import-export rules
       used in the BGP enabled Virtual Private Networks (VPNs).";
    reference
      "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).
       RFC4664: Framework for Layer 2 Virtual Private Networks
       (L2VPNs)";
    list vpn-target {
      key route-target;
      description
        "List of Route Targets.";
      leaf route-target {
        type rt-types:route-target;
        description
          "Route Target value";
      }
      leaf route-target-type {
        type rt-types:route-target-type;
        mandatory true;
        description
          "Import/export type of the Route Target.";
      }
    }
  } // vpn-route-targets
}
