module ietf-bgp-l3vpn {
  namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn";
  // replace with IANA namespace when assigned
  prefix l3vpn ;

  import ietf-network-instance {
    prefix ni;
    revision-date 2016-06-23;
  }

  import ietf-interfaces {
    prefix if;
  }

// TODO: TBD for bgp-info
//  import ietf-bgp {
//    prefix bgp;
//    revision-date 2016-06-21;
//  }

  organization
     "IETF BGP Enabled Services WG";

  contact
     "BESS working group - bess@ietf.org";
  description
    "This YANG module defines a YANG data model to configure and
     manage BGP Layer3 VPNs. It augments the IETF bgp yang model
     and IETF network instance model to add L3VPN specific
     configuration and operational knobs.


     Terms and Acronyms

     AF : Address Family

     AS : Autonomous System

     ASBR : Autonomous Systems Border Router

     BGP (bgp) : Border Gateway Protocol

     CE  : Customer Edge

     IP (ip) : Internet Protocol

     IPv4 (ipv4):Internet Protocol Version 4

     IPv6 (ipv6): Internet Protocol Version 6

     L3VPN: Layer 3 VPN

     PE : Provider Edge

     RT : Route Target

     RD : Route Distinguisher

     VPN : Virtual Private Network

     VRF : Virtual Routing and Forwarding

    ";

  revision 2016-09-09 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A YANG Data Model for BGP L3VPN config management";
  }

  //RD
  grouping route-distinguisher-params {
    description "BGP route distinguisher";
    container route-distinguisher {
      description "Route distinguisher value as per RFC4364";
        container config {
          description
            "Configuration parameters for route distinguisher";
          leaf rd {
            type string;
            description "Route distinguisher value as per RFC4364";
          }
        }
        container state {
          config "false" ;
          description
            "State information for route distinguisher";
          leaf rd {
            type string;
            description "Route distinguisher value";
          }
        }
     }
  }

  //Label mode
  typedef bgp-label-mode {
    type enumeration {
      enum per-ce {
        description "Allocate labels per CE";
      }
      enum per-route {
        description "Allocate labels per prefix";
      }
      enum per-vpn {
        description "Allocate labels per VRF";
      }
    }
    description "BGP label allocation mode";
  }

  //Fwding mode
  typedef fwd-mode-type {
    type enumeration {
      enum mpls {
        description "Forwarding mode mpls";
      }
    }
    description
      "Enable forwarding mode under ASBR facing interface";
  }

  grouping forwarding-mode {
    description "Forwarding mode of interface for ASBR scenario";
    container forwarding-mode {
      description "Forwarding mode of interface for ASBR scenario";
      container config {
        description "Configuration of Forwarding mode";
        leaf forwarding-mode {
          type  fwd-mode-type;
          description "Forwarding mode for this interface";
        }
      }
      container state {
        config "false";
        description "State information of Forwarding mode";
        leaf forwarding-mode {
        type  fwd-mode-type;
          description "Forwarding mode for this interface";
        }
      }
    }
 }

  grouping label-security {
    description "Mpls label security for ASBR option B scenario";
    container mpls-label-security {
      description "MPLS label secruity";
      container config {
        description "Configuration parameters";
        leaf rpf {
          type boolean;
          description "Enable MPLS label security rpf on interface";
        }
      }
      container state {
        config "false";
        description "State information";
        leaf rpf {
          type boolean;
          description "MPLS label security rpf on interface";
        }
      }
    }
  }


  //per VPN instance table limit under BGP
  grouping prefix-limit {
    description
       "The prefix limit command sets a limit on the maximum
        number of prefixes supported in the existing VPN
        instance, preventing the PE from importing excessive
        VPN route prefixes.
       ";

    leaf prefix-limit-number {
      type uint32 {
         range "1..4294967295";
      }
      description
             "Specifies the maximum number of prefixes supported in the
              VPN instance IPv4 or IPv6 address family.";
    }

    choice prefix-limit-action {
      description ".";
      case enable-alert-percent {
        leaf alert-percent-value {
           type uint8 {
             range "1..100";
           }
           description
             "Specifies the proportion of the alarm threshold to the
              maximum number of prefixes.";
        }
        leaf route-unchanged {
           type boolean;
           default "false";
           description
                 "Indicates that the routing table remains unchanged.
                  By default, route-unchanged is not configured. When
                  the number of prefixes in the routing table is
                  greater than the value of the parameter number,
                  routes are processed as follows:
                  (1)If route-unchanged is configured, routes in the
                     routing table remain unchanged.
                  (2)If route-unchanged is not configured, all routes
                     in the routing table are deleted and then
                     re-added.";
        }
      }
      case enable-simple-alert {
        leaf simple-alert {
          type boolean;
          default "false";
          description
                 "Indicates that when the number of VPN route prefixes
                  exceeds number, prefixes can still join the VPN
                  routing table and alarms are displayed.";
        }
      }
    }
  }

  grouping  vpn-pfx-limit {
    description "Per VPN instance table limit under BGP";
    container vpn-prefix-limit {
      description "Prefix limit for this table";
      container config {
         description "Config parameters";
         uses prefix-limit;
      }
      container state {
         config "false";
         description "State parameters";
         uses prefix-limit;
      }
    }
  }

  grouping route-target-set {
    description
      "Extended community route-target set ";
    list rts {
      key "rt" ;
      description
         "List of route-targets" ;
      leaf rt {
        type string {
          pattern '([0-9]+:[0-9]+)';
        }
        description "Route target extended community as per RFC4360";
      }
      leaf rt-type {
        type enumeration {
          enum import {
            description "Route target is for import routes";
          }
          enum export {
            description "Route target is for export routes";
          }
          enum both {
            description
              "Route target is for both import and export routes";
          }
        }
        description "Route target type";
      }
    }
    leaf route-policy {
      type string;
      description
         "Reference to the policy containing set of routes.
          TBD: leafref to policy entry in IETF policy model";
    }
  }

  grouping import-from-gbl {
    description "Import from global routing table";
    leaf enable {
      type boolean;
        description "Enable";
    }
    leaf advertise-as-vpn {
      type boolean;
      description
        "Advertise routes imported from global table as VPN routes";
    }
    leaf route-policy {
      type string;
      description "Route policy as filter for importing routes";
    }

    leaf bgp-valid-route {
      type boolean;
      description
        "Enable all valid routes (including non-best paths) to be
         candidate for import";
    }

    leaf protocol {
      type enumeration {
        enum ALL {
          value "0";
          description "ALL:";
        }
        enum Direct {
          value "1";
          description "Direct:";
        }
        enum OSPF {
          value "2";
          description "OSPF:";
        }
        enum ISIS {
          value "3";
          description "ISIS:";
        }
        enum Static {
          value "4";
          description "Static:";
        }
        enum RIP {
          value "5";
          description "RIP:";
        }
        enum BGP {
          value "6";
          description "BGP:";
        }
        enum OSPFV3 {
          value "7";
          description "OSPFV3:";
        }
        enum RIPNG {
          value "8";
          description "RIPNG:";
        }
      }
      description
         "Specifies the protocol from which routes are imported.
          At present, In the IPv4 unicast address family view,
          the protocol can be IS-IS,static, direct and BGP.";
      }

      leaf instance {
        type string;
        description
             "Specifies the instance id of the protocol";
      }
  }
  grouping global-imports {
      description "Grouping for imports from global routing table";
    container import-from-global {
      description "Import from global routing table";
      container config {
          description "Configuration";
          uses import-from-gbl;
      }
      container state {
          config "false";
          description "State";
          uses import-from-gbl;
      }
    }
  }


  grouping export-to-gbl {
    description "Export routes to default VRF";
    leaf enable {
      type boolean;
        description "Enable";
    }
  }

  grouping global-exports {
    description "Grouping for exports routes to global table";
    container export-to-global {
      description "Export to global routing table";
      container config {
         description "Configuration";
         uses export-to-gbl;
      }
      container state {
        config "false";
        description "State";
        uses export-to-gbl;
      }
    }
  }

  grouping route-target-params {
    description "Grouping to specify rules for route import and export";
    container route-targets {
      description
        "Set of route-targets to match for import and export routes
         to/from VRF";
      container config {
         description
               "Configuration of route targets";
           uses route-target-set ;
      }
      container state {
        config "false" ;
        description
               "State information for route targets";
           uses route-target-set ;
      }
    }
  }

  grouping route-tbl-limit-params {
     description "Grouping for VPN table prefix limit config";
     leaf routing-table-limit-number {
        type uint32 {
          range "1..4294967295";
        }
        description
          "Specifies the maximum number of routes supported by a
           VPN instance. ";
        }

       choice routing-table-limit-action {
          description ".";
           case enable-alert-percent {
             leaf alert-percent-value {
               type uint8 {
                 range "1..100";
               }
               description
                 "Specifies the percentage of the maximum number of
                  routes. When the maximum number of routes that join
                  the VPN instance is up to the value
                  (number*alert-percent)/100, the system prompts
                  alarms. The VPN routes can be still added to the
                  routing table, but after the number of routes
                  reaches number, the subsequent routes are
                  dropped.";
           }
        }
        case enable-simple-alert {
          leaf simple-alert {
               type boolean;
               description
                 "Indicates that when VPN routes exceed number, routes
                  can still be added into the routing table, but the
                  system prompts alarms.
                  However, after the total number of VPN routes and
                  network public routes reaches the unicast route limit
                  specified in the License, the subsequent VPN routes
                  are dropped.";
             }
           }
       }
   }

   grouping routing-tbl-limit {
      description ".";
      container routing-table-limit {
         description
           "The routing-table limit command sets a limit on the maximum
            number of routes that the IPv4 or IPv6 address family of a
            VPN instance can support.
            By default, there is no limit on the maximum number of
            routes that the IPv4 or IPv6 address family of a VPN
            instance can support, but the total number of private
            network and public network routes on a device cannot
            exceed the allowed maximum number of unicast routes.";
          container config {
             description "Config parameters";
             uses route-tbl-limit-params;
          }
          container state {
              config "false";
              description "State parameters";
              uses route-tbl-limit-params;
          }
       }
   }

  // Tunnel policy parameters
  grouping tunnel-params {
     description "Tunnel parameters";
     container tunnel-params {
        description "Tunnel config parameters";
        container config {
           description "configuration parameters";
           leaf tunnel-policy {
              type string;
              description
                  "Tunnel policy name.";
           }
        }
        container state {
           config "false";
           description "state parameters";
           leaf tunnel-policy {
              type string;
              description
                   "Tunnel policy name.";
           }
        }
     }
  }

  // Grouping for the L3vpn specific parameters under VRF
  // (network-instance)
  grouping l3vpn-vrf-params {
      description "Specify route filtering rules for import/export";
      container ipv4 {
         description
           "Specify route filtering rules for import/export";
         container unicast {
            description
              "Specify route filtering rules for import/export";
            uses route-target-params;
            uses global-imports;
            uses global-exports;
            uses routing-tbl-limit;
            uses tunnel-params;
         }
      }
      container ipv6 {
         description
           "Ipv6 address family specific rules for import/export";
         container unicast {
             description "Ipv6 unicast address family";
             uses route-target-params;
             uses global-imports;
             uses global-exports;
             uses routing-tbl-limit;
             uses tunnel-params;
         }
     }
  }

  grouping bgp-label-mode {
       description "MPLS/VPN label allocation mode";
       container config {
         description
           "Configuration parameters for label allocation mode";
         leaf label-mode {
           type bgp-label-mode;
           description "Label allocation mode";
         }
       }
       container state {
         config "false" ;
         description "State information for label allocation mode";
         leaf label-mode {
           type bgp-label-mode;
           description "Label allocation mode";
         }
       }
  }

  grouping retain-route-targets {
       description "Grouping for route target accept";
    container retain-route-targets {
      description "Control route target acceptance behavior for ASBRs";
      container config {
         description
           "Configuration parameters for retaining route targets";
         leaf all {
            type empty;
            description "Disable filtering of all route-targets";
         }
         leaf route-policy {
            type string;
            description "Filter routes as per filter policy name
                         TBD: leafref to IETF routing policy model";
         }
      }
      container state {
         config "false" ;
         description "State information for retaining route targets";
         leaf all {
            type empty;
            description "Disable filtering of all route-targets";
         }
         leaf route-policy {
            type string;
            description "Filter routes as per filter policy name";
         }
      }
    }
  }

  grouping nexthop-opts {
     description "Next hop control options for inter-as route exchange";
     leaf next-hop-self {
        type boolean;
        description
          "Set nexthop of the route to self when advertising routes";
     }
     leaf next-hop-unchanged {
        type boolean;
        description "Enforce no nexthop change when advertising routes";
     }
  }

  grouping asbr-nexthop-options {
     description "Nexthop parameters for inter-as VPN options ";
     container nexthop-options {
         description "Nexthop related options for inter-as options";
         container config {
             description "Configuration parameters for nexthop options";
             uses nexthop-opts;
         }
         container state {
             config "false";
             description "State information for nexthop options" ;
             uses nexthop-opts;
         }
     }
  }

  //
  // VRF specific parameters.
  // RD and RTs and route import-export rules are added under
  // network instance container in network instance model, hence
  // per VRF scoped
  augment "/ni:devices/ni:device/ni:network-instances/ni:network-instance" {
     description
       "Augment network instance for per VRF L3vpn parameters";
     container l3vpn {
        //Enable this check once network instance model has
        //identify defined for VRF type
        //when "../type='rt:vrf-network-instance'" {
        //  description
        //    "This container is only valid for vrf routing instance.";
        //}
        description "Configuration of L3VPN specific parameters";

        uses route-distinguisher-params;
        uses l3vpn-vrf-params ;
     }
  }

  // bgp mpls forwarding enable required for inter-as option AB.
  augment "/if:devices/if:device/if:interfaces/if:interface" {
    description
      "BGP mpls forwarding mode configuration on interface for
       ASBR scenario";
    uses forwarding-mode ;
    uses label-security;
  }

  //
  // BGP Specific Paramters
  //

  //
  // Retain route-target for inter-as option ASBR knob.
  // vpn prefix limits
  // vpnv4/vpnv6 address-family only.
  //augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
  //        "bgp:afi-safi/bgp:l3vpn-ipv4-unicast" {
  //  description "Retain route targets for ASBR scenario";
  //  uses retain-route-targets;
  //  uses vpn-pfx-limit;
 // }

 // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
 //         "bgp:afi-safi/bgp:l3vpn-ipv6-unicast" {
 //   description "Retain route targets for ASBR scenario";
 //   uses retain-route-targets;
 //   uses vpn-pfx-limit;
 // }

  // Label allocation mode configuration. Certain AFs only.
 // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
 //         "bgp:afi-safi/bgp:ipv4-unicast" {
 //    description
 //      "Augment BGP global AF mode for label allocation mode
 //       configuration";
 //    uses bgp-label-mode ;
 //    uses routing-tbl-limit;
 // }

 // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
 //         "bgp:afi-safi/bgp:ipv6-unicast" {
 //    description
 //      "Augment BGP global AF mode for label allocation mode
 //       configuration";
 //    uses bgp-label-mode ;
 //    uses routing-tbl-limit;
 // }


  // Nexthop options for the inter-as ASBR peering.
 // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor" {
 //    description
 //      "Augment BGP NBR mode with nexthop options for inter-as ASBRs";
 //    uses asbr-nexthop-options;
 // }

 // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group" {
 //    description
 //      "Augment BGP peer-group mode with nexthop options for inter-as
 //       ASBRs";
 //    uses asbr-nexthop-options;
 // }

 // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor/" +
 //         "bgp:afi-safis/bgp:afi-safi" {
 //    description
 //      "Augment BGP NBR AF mode with nexthop options for inter-as
 //       ASBRs";
 //    uses asbr-nexthop-options;
 // }

 // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group/" +
 //         "bgp:afi-safis/bgp:afi-safi" {
 //    description
 //      "Augment BGP peer-group AF mode with nexthop options for inter-as
 //       ASBRs";
 //    uses asbr-nexthop-options;
 // }
}
