Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-table-attributes.yang b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-table-attributes.yang
new file mode 100644
index 0000000..285f0a9
--- /dev/null
+++ b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-table-attributes.yang
@@ -0,0 +1,113 @@
+submodule openconfig-rib-bgp-table-attributes {
+
+  belongs-to openconfig-rib-bgp {
+    prefix "oc-rib-bgp";
+  }
+
+
+  // import some basic types
+  import openconfig-extensions { prefix oc-ext; }
+  import openconfig-types { prefix oc-types; }
+  import openconfig-rib-bgp-types { prefix oc-bgpribt; }
+
+  // meta
+  organization "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "This submodule contains common data definitions for data
+    related to a RIB entry, or RIB table.";
+
+
+  oc-ext:openconfig-version "0.3.0";
+
+  revision "2016-10-17" {
+    description
+      "OpenConfig BGP RIB refactor";
+    reference "0.3.0";
+  }
+
+
+
+  grouping bgp-common-route-annotations-state {
+    description
+      "Data definitions for flags and other information attached
+      to routes in both LOC-RIB and Adj-RIB";
+
+    leaf last-modified {
+      type oc-types:timeticks64;
+      description
+        "Timestamp when this path was last modified.
+
+        The value is the timestamp in seconds relative to
+        the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
+    }
+
+    leaf valid-route {
+      type boolean;
+      description
+        "Indicates that the route is considered valid by the
+        local router";
+    }
+
+    leaf invalid-reason {
+      type identityref {
+        base oc-bgpribt:INVALID_ROUTE_REASON;
+      }
+      description
+        "If the route is rejected as invalid, this indicates the
+        reason.";
+    }
+
+  }
+
+  grouping bgp-loc-rib-route-annotations-state {
+    description
+      "Data definitions for information attached to routes in the
+      LOC-RIB";
+
+    // placeholder for route metadata specific to the LOC-RIB
+
+  }
+
+  grouping bgp-adj-rib-in-post-route-annotations-state {
+    description
+      "Data definitions for information attached to routes in the
+      Adj-RIB-in post-policy table";
+
+    leaf best-path {
+      type boolean;
+      description
+        "Current path was selected as the best path.";
+    }
+  }
+
+  grouping bgp-common-table-attrs-state {
+    description
+      "Common attributes attached to all routing tables";
+
+    // placeholder for metadata associated with all tables
+  }
+
+  grouping bgp-common-table-attrs-top {
+    description
+      "Operational state data for common attributes attached to
+      all routing tables";
+    // no enclosing container as this data will fit under an
+    // existing LOC-RIB container
+
+    container state {
+      config false;
+      description
+        "Operational state data for data related to the entire
+        LOC-RIB";
+
+      uses bgp-common-table-attrs-state;
+    }
+  }
+
+
+}
\ No newline at end of file