submodule openconfig-bgp-peer-group {

  belongs-to openconfig-bgp {
    prefix "oc-bgp";
  }

  import openconfig-extensions { prefix oc-ext; }
  import openconfig-routing-policy { prefix oc-rpol; }

  // Include the common submodule
  include openconfig-bgp-common;
  include openconfig-bgp-common-multiprotocol;
  include openconfig-bgp-common-structure;

  // meta
  organization
    "OpenConfig working group";

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

  description
    "This sub-module contains groupings that are specific to the
    peer-group context of the OpenConfig BGP module.";

  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";
  }

  grouping bgp-peer-group-config {
    description
      "Configuration parameters relating to a base BGP peer group that
      are not also applicable to any other context (e.g., neighbor)";

    leaf peer-group-name {
      type string;
      description
        "Name of the BGP peer-group";
    }

  }

  grouping bgp-peer-group-afi-safi-list {
    description
      "List of address-families associated with the BGP peer-group";

    list afi-safi {
      key "afi-safi-name";

      description
        "AFI,SAFI configuration available for the
        neighbour or group";

      leaf afi-safi-name {
        type leafref {
          path "../config/afi-safi-name";
        }
        description
          "Reference to the AFI-SAFI name used as a key
          for the AFI-SAFI list";
      }

      container config {
        description
          "Configuration parameters for the AFI-SAFI";
        uses bgp-common-mp-afi-safi-config;
      }
      container state {
        config false;
        description
          "State information relating to the AFI-SAFI";
        uses bgp-common-mp-afi-safi-config;
      }

      container graceful-restart {
        description
          "Parameters relating to BGP graceful-restart";
        container config {
          description
            "Configuration options for BGP graceful-restart";
          uses bgp-common-mp-afi-safi-graceful-restart-config;
        }
        container state {
          config false;
          description
            "State information for BGP graceful-restart";
          uses bgp-common-mp-afi-safi-graceful-restart-config;
        }
      }

      uses bgp-common-structure-neighbor-group-add-paths;
      uses bgp-common-global-group-use-multiple-paths;
      uses bgp-common-mp-all-afi-safi-list-contents;
    }
  }

  grouping bgp-peer-group-base {
    description
      "Parameters related to a BGP group";

    container config {
      description
        "Configuration parameters relating to the BGP neighbor or
        group";
      uses bgp-peer-group-config;
      uses bgp-common-neighbor-group-config;
    }
    container state {
      config false;
      description
        "State information relating to the BGP peer-group";
      uses bgp-peer-group-config;
      uses bgp-common-neighbor-group-config;
      uses bgp-common-state;
    }

    container timers {
      description
        "Timers related to a BGP peer-group";

      container config {
        description
          "Configuration parameters relating to timers used for the
          BGP neighbor or peer group";
        uses bgp-common-neighbor-group-timers-config;
      }
      container state {
        config false;
        description
          "State information relating to the timers used for the BGP
         group";
        uses bgp-common-neighbor-group-timers-config;
      }
    }

    container transport {
      description
        "Transport session parameters for the BGP peer-group";

      container config {
        description
          "Configuration parameters relating to the transport
          session(s) used for the BGP neighbor or group";
        uses bgp-common-neighbor-group-transport-config;
      }
      container state {
        config false;
        description
          "State information relating to the transport session(s)
          used for the BGP neighbor or group";
        uses bgp-common-neighbor-group-transport-config;
      }
    }

    container error-handling {
      description
        "Error handling parameters used for the BGP peer-group";

      container config {
        description
          "Configuration parameters enabling or modifying the
          behavior or enhanced error handling mechanisms for the BGP
          group";
        uses bgp-common-neighbor-group-error-handling-config;
      }
      container state {
        config false;
        description
          "State information relating to enhanced error handling
          mechanisms for the BGP group";
        uses bgp-common-neighbor-group-error-handling-config;
      }
    }

    container graceful-restart {
      description
        "Parameters relating the graceful restart mechanism for BGP";
      container config {
        description
          "Configuration parameters relating to graceful-restart";
        uses bgp-common-graceful-restart-config;
      }
      container state {
        config false;
        description
          "State information associated with graceful-restart";
        uses bgp-common-graceful-restart-config;
      }
    }

    uses bgp-common-structure-neighbor-group-logging-options;
    uses bgp-common-structure-neighbor-group-ebgp-multihop;
    uses bgp-common-structure-neighbor-group-route-reflector;
    uses bgp-common-structure-neighbor-group-as-path-options;
    uses bgp-common-global-group-use-multiple-paths;
    uses oc-rpol:apply-policy-group;

    container afi-safis {
      description
        "Per-address-family configuration parameters associated with
        thegroup";
      uses bgp-peer-group-afi-safi-list;
    }
  }

  grouping bgp-peer-group-list {
    description
      "The list of BGP peer groups";

    list peer-group {
      key "peer-group-name";
      description
        "List of BGP peer-groups configured on the local system -
        uniquely identified by peer-group name";

    leaf peer-group-name {
      type leafref {
        path "../config/peer-group-name";
      }
      description
        "Reference to the name of the BGP peer-group used as a
        key in the peer-group list";
      }

      uses bgp-peer-group-base;
    }
  }

}
