submodule openconfig-rib-bgp-shared-attributes {

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


  // import some basic types
  import openconfig-extensions { prefix oc-ext; }

  include openconfig-rib-bgp-attributes;

  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This submodule contains structural data definitions for
    attribute sets shared across routes.";


  oc-ext:openconfig-version "0.3.0";

  revision "2016-10-17" {
    description
      "OpenConfig BGP RIB refactor";
    reference "0.3.0";
  }


  grouping attribute-sets-top {
    description
      "Top level grouping for list of common attribute sets";

    container attr-sets {
      description
        "Enclosing container for the list of path attribute sets";

      list attr-set {
        key "index";

        description
          "List of path attributes that may be in use by multiple
          routes in the table";

        leaf index {
          type leafref {
            path "../state/index";
          }
          description
            "Reference to list key";
        }

        container state {
          config false;
          description
            "Operational state for common path attributes";

          leaf index {
            type uint64;
            description
              "System generated index for each attribute set.  The
              index is used to reference an attribute set from a
              specific path.  Multiple paths may reference the same
              attribute set.";
          }

          uses bgp-shared-common-attr-state;
        }
        uses bgp-aggregator-attr-top;
        uses bgp-as-path-attr-top;
        uses bgp-as4-path-attr-top;
      }
    }
  }

  grouping community-sets-top {
    description
      "Top level grouping for list of shared community attribute
      sets";

    container communities {
      description
        "Enclosing container for the list of community attribute
        sets";

      list community {
        key "index";

        description
          "List of path attributes that may be in use by multiple
          routes in the table";

        leaf index {
          type leafref {
            path "../state/index";
          }
          description
            "Reference to the list key";
        }

        container state {
          config false;
          description
            "Operational state for shared BGP community attribute";

          leaf index {
            type uint64;
            description
              "System generated index for each attribute set.  The
              index is used to reference an attribute set from a
              specific path.  Multiple paths may reference the same
              attribute set.";
          }

          uses bgp-community-attr-state;
        }
      }
    }
  }

  grouping ext-community-sets-top {
    description
      "Top level grouping for list of extended community attribute
      sets";

    container ext-communities {
      description
        "Enclosing container for the list of extended community
        attribute sets";

      list ext-community {
        key "index";

        description
          "List of path attributes that may be in use by multiple
          routes in the table";

        leaf index {
          type leafref {
            path "../state/index";
          }
          description
            "Reference to the list key";
        }

        container state {
          config false;
          description
            "Operational state for shared BGP extended community
            attribute";

          leaf index {
            type uint64;
            description
              "System generated index for each attribute set.  The
              index is used to reference an attribute set from a
              specific path.  Multiple paths may reference the same
              attribute set.";
          }

          uses bgp-extended-community-attr-state;
        }
      }
    }
  }
}
