submodule openconfig-bgp-common-multiprotocol {

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

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

  include openconfig-bgp-common;

  // meta
  organization
    "OpenConfig working group";

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

  description
    "This sub-module contains groupings that are related to support
    for multiple protocols in BGP. The groupings are common across
    multiple contexts.";

  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-common-mp-afi-safi-graceful-restart-config {
    description
      "BGP graceful restart parameters that apply on a per-AFI-SAFI
      basis";

    leaf enabled {
      type boolean;
      default false;
      description
        "This leaf indicates whether graceful-restart is enabled for
        this AFI-SAFI";
    }
  }

  grouping bgp-common-mp-afi-safi-config {
    description
      "Configuration parameters used for all BGP AFI-SAFIs";

    leaf afi-safi-name {
      type identityref {
        base oc-bgp-types:AFI_SAFI_TYPE;
      }
      description "AFI,SAFI";
    }

    leaf enabled {
      type boolean;
      default false;
      description
        "This leaf indicates whether the IPv4 Unicast AFI,SAFI is
        enabled for the neighbour or group";
    }
  }

  grouping bgp-common-mp-all-afi-safi-list-contents {
    description
      "A common grouping used for contents of the list that is used
      for AFI-SAFI entries";

    // import and export policy included for the afi/safi
    uses oc-rpol:apply-policy-group;

    uses bgp-common-mp-ipv4-unicast-group;
    uses bgp-common-mp-ipv6-unicast-group;
    uses bgp-common-mp-ipv4-labeled-unicast-group;
    uses bgp-common-mp-ipv6-labeled-unicast-group;
    uses bgp-common-mp-l3vpn-ipv4-unicast-group;
    uses bgp-common-mp-l3vpn-ipv6-unicast-group;
    uses bgp-common-mp-l3vpn-ipv4-multicast-group;
    uses bgp-common-mp-l3vpn-ipv6-multicast-group;
    uses bgp-common-mp-l2vpn-vpls-group;
    uses bgp-common-mp-l2vpn-evpn-group;
  }

  // Groupings relating to each address family
  grouping bgp-common-mp-ipv4-unicast-group {
    description
      "Group for IPv4 Unicast configuration options";

    container ipv4-unicast {
      when "../afi-safi-name = 'oc-bgp-types:IPV4_UNICAST'" {
        description
          "Include this container for IPv4 Unicast specific
          configuration";
      }

      description "IPv4 unicast configuration options";

      // include common IPv[46] unicast options
      uses bgp-common-mp-ipv4-ipv6-unicast-common;

      // placeholder for IPv4 unicast  specific configuration
    }
  }

  grouping bgp-common-mp-ipv6-unicast-group {
    description
      "Group for IPv6 Unicast configuration options";

    container ipv6-unicast {
      when "../afi-safi-name = 'oc-bgp-types:IPV6_UNICAST'" {
        description
          "Include this container for IPv6 Unicast specific
          configuration";
      }

      description "IPv6 unicast configuration options";

      // include common IPv[46] unicast options
      uses bgp-common-mp-ipv4-ipv6-unicast-common;

      // placeholder for IPv6 unicast specific configuration
      // options
    }
  }

  grouping bgp-common-mp-ipv4-labeled-unicast-group {
    description
      "Group for IPv4 Labeled Unicast configuration options";

    container ipv4-labeled-unicast {
      when "../afi-safi-name = 'oc-bgp-types:IPV4_LABELED_UNICAST'" {
        description
          "Include this container for IPv4 Labeled Unicast specific
          configuration";
      }

      description "IPv4 Labeled Unicast configuration options";

      uses bgp-common-mp-all-afi-safi-common;

      // placeholder for IPv4 Labeled Unicast specific config
      // options
    }
  }

  grouping bgp-common-mp-ipv6-labeled-unicast-group {
    description
      "Group for IPv6 Labeled Unicast configuration options";

    container ipv6-labeled-unicast {
      when "../afi-safi-name = 'oc-bgp-types:IPV6_LABELED_UNICAST'" {
        description
          "Include this container for IPv6 Labeled Unicast specific
          configuration";
      }

      description "IPv6 Labeled Unicast configuration options";

      uses bgp-common-mp-all-afi-safi-common;

      // placeholder for IPv6 Labeled Unicast specific config
      // options.
    }
  }

  grouping bgp-common-mp-l3vpn-ipv4-unicast-group {
    description
      "Group for IPv4 Unicast L3VPN configuration options";

    container l3vpn-ipv4-unicast {
      when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_UNICAST'" {
        description
          "Include this container for IPv4 Unicast L3VPN specific
          configuration";
      }

      description "Unicast IPv4 L3VPN configuration options";

      // include common L3VPN configuration options
      uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common;

      // placeholder for IPv4 Unicast L3VPN specific config options.
    }
  }

  grouping bgp-common-mp-l3vpn-ipv6-unicast-group {
    description
      "Group for IPv6 Unicast L3VPN configuration options";

    container l3vpn-ipv6-unicast {
      when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_UNICAST'" {
        description
          "Include this container for unicast IPv6 L3VPN specific
          configuration";
      }

      description "Unicast IPv6 L3VPN configuration options";

      // include common L3VPN configuration options
      uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common;

      // placeholder for IPv6 Unicast L3VPN specific configuration
      // options
    }
  }

  grouping bgp-common-mp-l3vpn-ipv4-multicast-group {
    description
      "Group for IPv4 L3VPN multicast configuration options";

    container l3vpn-ipv4-multicast {
      when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_MULTICAST'" {
        description
          "Include this container for multicast IPv6 L3VPN specific
          configuration";
      }

      description "Multicast IPv4 L3VPN configuration options";

      // include common L3VPN multicast options
      uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common;

      // placeholder for IPv4 Multicast L3VPN specific configuration
      // options
    }
  }

  grouping bgp-common-mp-l3vpn-ipv6-multicast-group {
    description
      "Group for IPv6 L3VPN multicast configuration options";

    container l3vpn-ipv6-multicast {
      when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_MULTICAST'" {
        description
          "Include this container for multicast IPv6 L3VPN specific
          configuration";
      }

      description "Multicast IPv6 L3VPN configuration options";

      // include common L3VPN multicast options
      uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common;

      // placeholder for IPv6 Multicast L3VPN specific configuration
      // options
    }
  }

  grouping bgp-common-mp-l2vpn-vpls-group {
    description
      "Group for BGP-signalled VPLS configuration options";

    container l2vpn-vpls {
      when "../afi-safi-name = 'oc-bgp-types:L2VPN_VPLS'" {
        description
          "Include this container for BGP-signalled VPLS specific
          configuration";
      }

      description "BGP-signalled VPLS configuration options";

      // include common L2VPN options
      uses bgp-common-mp-l2vpn-common;

      // placeholder for BGP-signalled VPLS specific configuration
      // options
    }
  }

  grouping bgp-common-mp-l2vpn-evpn-group {
    description
      "Group for BGP EVPN configuration options";

    container l2vpn-evpn {
      when "../afi-safi-name = 'oc-bgp-types:L2VPN_EVPN'" {
        description
          "Include this container for BGP EVPN specific
          configuration";
      }

      description "BGP EVPN configuration options";

      // include common L2VPN options
      uses bgp-common-mp-l2vpn-common;

      // placeholder for BGP EVPN specific configuration options
    }
  }

  // Common groupings across multiple AFI,SAFIs
  grouping bgp-common-mp-all-afi-safi-common {
    description
      "Grouping for configuration common to all AFI,SAFI";

    container prefix-limit {
      description
        "Configure the maximum number of prefixes that will be
        accepted from a peer";

      container config {
        description
          "Configuration parameters relating to the prefix
          limit for the AFI-SAFI";
        uses bgp-common-mp-all-afi-safi-common-prefix-limit-config;
      }

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

  grouping bgp-common-mp-ipv4-ipv6-unicast-common {
    description
      "Common configuration that is applicable for IPv4 and IPv6
      unicast";

    // include common afi-safi options.
    uses bgp-common-mp-all-afi-safi-common;

    // configuration options that are specific to IPv[46] unicast
    container config {
      description
        "Configuration parameters for common IPv4 and IPv6 unicast
        AFI-SAFI options";
      uses bgp-common-mp-ipv4-ipv6-unicast-common-config;
    }
    container state {
      config false;
      description
        "State information for common IPv4 and IPv6 unicast
        parameters";
      uses bgp-common-mp-ipv4-ipv6-unicast-common-config;
    }
  }

  grouping bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common {
    description
      "Common configuration applied across L3VPN for IPv4
       and IPv6";

    // placeholder -- specific configuration options that are generic
    // across IPv[46] unicast address families.
    uses bgp-common-mp-all-afi-safi-common;
  }

  grouping bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common {
    description
      "Common configuration applied across L3VPN for IPv4
      and IPv6";

    // placeholder -- specific configuration options that are
    // generic across IPv[46] multicast address families.
    uses bgp-common-mp-all-afi-safi-common;
  }

  grouping bgp-common-mp-l2vpn-common {
    description
      "Common configuration applied across L2VPN address
      families";

    // placeholder -- specific configuration options that are
    // generic across L2VPN address families
    uses bgp-common-mp-all-afi-safi-common;
  }

  // Config groupings for common groups
  grouping bgp-common-mp-all-afi-safi-common-prefix-limit-config {
    description
      "Configuration parameters relating to prefix-limits for an
      AFI-SAFI";

    leaf max-prefixes {
      type uint32;
      description
        "Maximum number of prefixes that will be accepted
        from the neighbour";
    }

    leaf prevent-teardown {
      type boolean;
      default false;
      description
        "Do not tear down the BGP session when the maximum
        prefix limit is exceeded, but rather only log a
        warning. The default of this leaf is false, such
        that when it is not specified, the session is torn
        down.";
    }

    leaf shutdown-threshold-pct {
      type oc-types:percentage;
      description
        "Threshold on number of prefixes that can be received
        from a neighbour before generation of warning messages
        or log entries. Expressed as a percentage of
        max-prefixes";
    }

    leaf restart-timer {
      type decimal64 {
        fraction-digits 2;
      }
      units "seconds";
      description
        "Time interval in seconds after which the BGP session
        is re-established after being torn down due to exceeding
        the max-prefix limit.";
    }
  }

  grouping bgp-common-mp-ipv4-ipv6-unicast-common-config {
    description
      "Common configuration parameters for IPv4 and IPv6 Unicast
      address families";

    leaf send-default-route {
      type boolean;
      default "false";
      description
        "If set to true, send the default-route to the neighbour(s)";
    }
  }
}
