Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-shared-attributes.yang b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-shared-attributes.yang
new file mode 100644
index 0000000..3a03b40
--- /dev/null
+++ b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-shared-attributes.yang
@@ -0,0 +1,170 @@
+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;
+        }
+      }
+    }
+  }
+}