module openconfig-bgp-types {
  yang-version "1";

  namespace "http://openconfig.net/yang/bgp-types";

  prefix "oc-bgp-types";

  import openconfig-types { prefix "oc-types"; }
  import openconfig-inet-types { prefix "oc-inet"; }
  import openconfig-extensions { prefix "oc-ext"; }

  // Include definitions of BGP error notifications
  include openconfig-bgp-errors;

  // meta
  organization
    "OpenConfig working group";

  contact
    "OpenConfig working group
    netopenconfig@googlegroups.com";

  description
    "This module contains general data definitions for use in BGP
    policy. It can be imported by modules that make use of BGP
    attributes";

  oc-ext:openconfig-version "4.0.1";

  revision "2017-07-30" {
    description
      "Clarification of add-paths send-max leaf";
    reference "4.0.1";
  }

  revision "2017-07-10" {
    description
      "Add error notifications; moved add-paths config; add AS
      prepend policy features; removed unneeded config leaves";
    reference "4.0.0";
  }

  revision "2017-02-02" {
    description
      "Bugfix to remove remaining global-level policy data";
    reference "3.0.1";
  }

  revision "2017-01-26" {
    description
      "Add dynamic neighbor support, migrate to OpenConfig types";
    reference "3.0.0";
  }

  revision "2016-06-21" {
    description
      "OpenConfig BGP refactor";
    reference "2.1.1";
  }


  identity BGP_CAPABILITY {
    description "Base identity for a BGP capability";
  }

  identity MPBGP {
    base BGP_CAPABILITY;
    description
      "Multi-protocol extensions to BGP";
    reference "RFC2858";
  }

  identity ROUTE_REFRESH {
    base BGP_CAPABILITY;
    description
      "The BGP route-refresh functionality";
    reference "RFC2918";
  }

  identity ASN32 {
    base BGP_CAPABILITY;
    description
      "4-byte (32-bit) AS number functionality";
    reference "RFC6793";
  }

  identity GRACEFUL_RESTART {
    base BGP_CAPABILITY;
    description
      "Graceful restart functionality";
    reference "RFC4724";
  }

  identity ADD_PATHS {
    base BGP_CAPABILITY;
    description
      "BGP add-paths";
    reference "draft-ietf-idr-add-paths";
  }

  identity AFI_SAFI_TYPE {
    description
      "Base identity type for AFI,SAFI tuples for BGP-4";
    reference "RFC4760 - multiprotocol extensions for BGP-4";
  }

  identity IPV4_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "IPv4 unicast (AFI,SAFI = 1,1)";
    reference "RFC4760";
  }

  identity IPV6_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "IPv6 unicast (AFI,SAFI = 2,1)";
    reference "RFC4760";
  }

  identity IPV4_LABELED_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "Labeled IPv4 unicast (AFI,SAFI = 1,4)";
    reference "RFC3107";
  }

  identity IPV6_LABELED_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "Labeled IPv6 unicast (AFI,SAFI = 2,4)";
    reference "RFC3107";
  }

  identity L3VPN_IPV4_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)";
    reference "RFC4364";
  }

  identity L3VPN_IPV6_UNICAST {
    base AFI_SAFI_TYPE;
    description
      "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)";
    reference "RFC4659";
  }

  identity L3VPN_IPV4_MULTICAST {
    base AFI_SAFI_TYPE;
    description
      "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)";
    reference "RFC6514";
  }

  identity L3VPN_IPV6_MULTICAST {
    base AFI_SAFI_TYPE;
    description
      "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)";
    reference "RFC6514";
  }

  identity L2VPN_VPLS {
    base AFI_SAFI_TYPE;
    description
      "BGP-signalled VPLS (AFI,SAFI = 25,65)";
    reference "RFC4761";
  }

  identity L2VPN_EVPN {
    base AFI_SAFI_TYPE;
    description
      "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)";
  }

  identity BGP_WELL_KNOWN_STD_COMMUNITY {
    description
      "Reserved communities within the standard community space
      defined by RFC1997. These communities must fall within the
      range 0x00000000 to 0xFFFFFFFF";
    reference "RFC1997";
  }

  identity NO_EXPORT {
    base BGP_WELL_KNOWN_STD_COMMUNITY;
    description
      "Do not export NLRI received carrying this community outside
      the bounds of this autonomous system, or this confederation if
      the local autonomous system is a confederation member AS. This
      community has a value of 0xFFFFFF01.";
    reference "RFC1997";
  }

  identity NO_ADVERTISE {
    base BGP_WELL_KNOWN_STD_COMMUNITY;
    description
      "All NLRI received carrying this community must not be
      advertised to other BGP peers. This community has a value of
      0xFFFFFF02.";
    reference "RFC1997";
  }

  identity NO_EXPORT_SUBCONFED {
    base BGP_WELL_KNOWN_STD_COMMUNITY;
    description
      "All NLRI received carrying this community must not be
      advertised to external BGP peers - including over confederation
      sub-AS boundaries. This community has a value of 0xFFFFFF03.";
    reference "RFC1997";
  }

  identity NOPEER {
    base BGP_WELL_KNOWN_STD_COMMUNITY;
    description
      "An autonomous system receiving NLRI tagged with this community
      is advised not to readvertise the NLRI to external bi-lateral
      peer autonomous systems. An AS may also filter received NLRI
      from bilateral peer sessions when they are tagged with this
      community value";
    reference "RFC3765";
  }

  typedef bgp-session-direction {
    type enumeration {
      enum INBOUND {
        description
          "Refers to all NLRI received from the BGP peer";
      }
      enum OUTBOUND {
        description
          "Refers to all NLRI advertised to the BGP peer";
      }
    }
    description
      "Type to describe the direction of NLRI transmission";
  }

  typedef bgp-well-known-community-type {
    type identityref {
      base BGP_WELL_KNOWN_STD_COMMUNITY;
    }
    description
      "Type definition for well-known IETF community attribute
      values";
    reference
      "IANA Border Gateway Protocol (BGP) Well Known Communities";
  }


  typedef bgp-std-community-type {
    // TODO: further refine restrictions and allowed patterns
    // 4-octet value:
    //  <as number> 2 octets
    //  <community value> 2 octets
    type union {
      type uint32 {
      // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 -
      // 0xFFFFFFFF are reserved
      }
      type string {
        pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'      +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):'      +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
    }
    description
      "Type definition for standard commmunity attributes represented as
      a integer value, or a string of the form N:M where N and M are
      integers between 0 and 65535.";
    reference "RFC 1997 - BGP Communities Attribute";
  }

  typedef bgp-ext-community-type {
    type union {
      type string {
        // Type 1: 2-octet global and 4-octet local
        //         (AS number)        (Integer)
        pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'      +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):'      +
                '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'    +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9])$';
      }
      type string {
        // Type 2: 4-octet global and 2-octet local
        //         (ipv4-address)     (integer)
        pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'         +
                '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'         +
                '2[0-4][0-9]|25[0-5]):'                                +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
      type string {
        // RFC5668: 4-octet global and 2-octet local
        //            (AS number)        (integer)
        pattern '^(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'   +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9]):'                                    +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
      type string {
        // route-target with Type 1
        // route-target:(ASN):(local-part)
        pattern '^route\-target:'                                             +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):'      +
                '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'    +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9])$';
      }
      type string {
        // route-target with Type 2
        // route-target:(IPv4):(local-part)
        pattern '^route\-target:'                                      +
                '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'          +
                '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'         +
                '2[0-4][0-9]|25[0-5]):'                                +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
      type string {
        // 4-byte AS Type 1 route-target
        pattern '^route\-target:'                                            +
                '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'    +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9]):'                                    +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
      type string {
        // route-origin with Type 1
        pattern '^route\-origin:'                                            +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):'      +
                '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'    +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9])$';
      }
      type string {
        // route-origin with Type 2
        pattern '^route\-origin:'                                      +
                '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|'          +
                '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|'         +
                '2[0-4][0-9]|25[0-5]):'                                +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
      type string {
        // 4-byte AS Type 1 route-origin
        pattern '^route\-origin:'                                            +
                '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}'    +
                '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' +
                '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|'             +
                '[1-9][0-9]{1,8}|[0-9]):'                                    +
                '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}'       +
                '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$';
      }
    }
    description
      "Type definition for extended community attributes. In the case that
      common communities are utilised, they are represented as a string
      of the form:
        - <2b AS>:<4b value> per RFC4360 section 3.1
        - <4b IPv4>:<2b value> per RFC4360 section 3.2
        - <4b AS>:<2b value> per RFC5668 section 2.
        - route-target:<2b AS>:<4b value> per RFC4360 section 4
        - route-target:<4b IPv4>:<2b value> per RFC4360 section 4
        - route-origin:<2b ASN>:<4b value> per RFC4360 section 5
        - route-origin:<4b IPv4>:<2b value> per RFC4360 section 5";
    reference
      "RFC 4360 - BGP Extended Communities Attribute
       RFC 5668 - 4-Octet AS Specific BGP Extended Community";
  }

  typedef bgp-ext-community-recv-type {
    type union {
      type bgp-ext-community-type;
      type binary {
        length 8;
      }
    }
    description
      "A type definition utilised to define the extended community
      in a context where the system is receiving the extended
      community from an external source, such that the value may be
      unknown. In the case that the received extended community is
      unknown it is defined to be a 8-octet quantity formatted
      according to RFC4360:

      Type Field: 1 or 2 octets.
      Value Field: Remaining octets.

      The high-order octet of the type field is encoded such that
      bit 0 indicates whether the extended community type is IANA
      assigned; and bit 1 indicates whether the extended community
      is transitive.  The remaining bits of the high-order type
      field must be interpreted to determine whether the low-order
      type field should be parsed, or whether the entire remainder
      of the extended community is a value.";
    reference
      "RFC 4360 - BGP Extended Communities Attribute
       RFC 5668 - 4-Octet AS Specific BGP Extended Community";
  }

  typedef bgp-community-regexp-type {
    // TODO: needs more work to decide what format these regexps can
    // take.
    type oc-types:std-regexp;
    description
      "Type definition for communities specified as regular
      expression patterns";
  }

  typedef bgp-origin-attr-type {
    type enumeration {
      enum IGP {
        description
          "Origin of the NLRI is internal";
      }
      enum EGP {
        description
          "Origin of the NLRI is EGP";
      }
      enum INCOMPLETE {
        description
          "Origin of the NLRI is neither IGP or EGP";
      }
    }
    description
      "Type definition for standard BGP origin attribute";
    reference "RFC 4271 - A Border Gateway Protocol 4 (BGP-4),
      Sec 4.3";
  }

  typedef peer-type {
    type enumeration {
      enum INTERNAL {
        description
          "Internal (iBGP) peer";
      }
      enum EXTERNAL {
        description
          "External (eBGP) peer";
      }
    }
    description
      "Labels a peer or peer group as explicitly internal or
      external";
  }

  identity REMOVE_PRIVATE_AS_OPTION {
    description
      "Base identity for options for removing private autonomous
      system numbers from the AS_PATH attribute";
  }

  identity PRIVATE_AS_REMOVE_ALL {
    base REMOVE_PRIVATE_AS_OPTION;
    description
      "Strip all private autonmous system numbers from the AS_PATH.
      This action is performed regardless of the other content of the
      AS_PATH attribute, and for all instances of private AS numbers
      within that attribute.";
  }

  identity PRIVATE_AS_REPLACE_ALL {
    base REMOVE_PRIVATE_AS_OPTION;
    description
      "Replace all instances of private autonomous system numbers in
      the AS_PATH with the local BGP speaker's autonomous system
      number. This action is performed regardless of the other
      content of the AS_PATH attribute, and for all instances of
      private AS number within that attribute.";
  }

  typedef remove-private-as-option {
    type identityref {
      base REMOVE_PRIVATE_AS_OPTION;
    }
    description
      "Set of options for configuring how private AS path numbers
      are removed from advertisements";
  }

  typedef rr-cluster-id-type {
    type union {
      type uint32;
      type oc-inet:ipv4-address;
    }
    description
      "Union type for route reflector cluster ids:
      option 1: 4-byte number
      option 2: IP address";
  }

  typedef community-type {
    type enumeration {
      enum STANDARD {
        description "Send only standard communities";
      }
      enum EXTENDED {
        description "Send only extended communities";
      }
      enum BOTH {
        description "Send both standard and extended communities";
      }
      enum NONE {
        description "Do not send any community attribute";
      }
    }
    description
      "type describing variations of community attributes:
      STANDARD: standard BGP community [rfc1997]
      EXTENDED: extended BGP community [rfc4360]
      BOTH: both standard and extended community";
  }


  typedef as-path-segment-type {
    type enumeration {
      enum AS_SEQ {
        description
          "Ordered set of autonomous systems that a route in
          the UPDATE message has traversed";
      }
      enum AS_SET {
        description
          "Unordered set of autonomous systems that a route in
          the UPDATE message has traversed";
      }
      enum AS_CONFED_SEQUENCE {
        description
          "Ordered set of Member Autonomous
          Systems in the local confederation that the UPDATE message
          has traversed";
      }
      enum AS_CONFED_SET {
        description
          "Unordered set of Member Autonomous Systems
          in the local confederation that the UPDATE message has
          traversed";
      }
    }
    description
      "Defines the types of BGP AS path segments.";
  }
}
