Adding OpenConfig YANG models.

Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-ext.yang b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-ext.yang
new file mode 100644
index 0000000..3c7cf35
--- /dev/null
+++ b/models/openconfig/src/main/yang/rib/openconfig-rib-bgp-ext.yang
@@ -0,0 +1,166 @@
+module openconfig-rib-bgp-ext {
+
+  yang-version "1";
+
+  // namespace
+  namespace "http://openconfig.net/yang/rib/bgp-ext";
+
+  prefix "oc-bgprib-ext";
+
+  import openconfig-rib-bgp { prefix oc-bgprib; }
+  import openconfig-extensions { prefix oc-ext; }
+  import openconfig-rib-bgp-types { prefix oc-bgpribt; }
+
+  organization "OpenConfig working group";
+
+  contact
+    "OpenConfig working group
+    www.openconfig.net";
+
+  description
+    "Defines additional data nodes for the OpenConfig BGP RIB model.
+    These items reflect extensions that are desirable features but
+    are not currently supported in a majority of BGP
+    implementations.";
+
+  oc-ext:openconfig-version "0.3.0";
+
+  revision "2016-10-17" {
+    description
+      "OpenConfig BGP RIB refactor";
+    reference "0.3.0";
+  }
+
+  revision "2016-04-11" {
+    description
+      "OpenConfig public release";
+    reference "0.2.0";
+  }
+
+
+  grouping rib-ext-route-annotations {
+    description
+      "Extended annotations for routes in the routing tables";
+
+    leaf reject-reason {
+      type union {
+        type identityref {
+          base oc-bgpribt:BGP_NOT_SELECTED_BESTPATH;
+        }
+        type identityref {
+          base oc-bgpribt:BGP_NOT_SELECTED_POLICY;
+        }
+      }
+      description
+        "Indicates the reason the route is not used, either due to
+        policy filtering or bestpath selection";
+    }
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/oc-bgprib:loc-rib/" +
+    "oc-bgprib:routes/oc-bgprib:route/oc-bgprib:state" {
+      description
+        "Add extended annotations to the Loc-RIB for IPv4";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/oc-bgprib:loc-rib/" +
+    "oc-bgprib:routes/oc-bgprib:route/oc-bgprib:state" {
+      description
+        "Add extended annotations to the Loc-RIB for IPv6";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-in-pre/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state" {
+      description
+        "Add extended annotations to Adj-RIB for IPv4";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-in-post/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv4";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-out-pre/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv4";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-out-post/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv4";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-in-pre/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv6";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-in-post/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv6";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-out-pre/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv6";
+
+      uses rib-ext-route-annotations;
+  }
+
+  augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" +
+    "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" +
+    "oc-bgprib:neighbors/oc-bgprib:neighbor/" +
+    "oc-bgprib:adj-rib-out-post/oc-bgprib:routes/oc-bgprib:route" +
+    "/oc-bgprib:state"{
+      description
+        "Add extended annotations to Adj-RIB for IPv6";
+
+      uses rib-ext-route-annotations;
+  }
+
+}
\ No newline at end of file