blob: 6ca14b445ad5e44a8dee6e6bd41ad04c7d33a2b6 [file] [log] [blame]
submodule openconfig-rib-bgp-tables {
belongs-to openconfig-rib-bgp {
prefix "oc-rib-bgp";
}
// import some basic types
import ietf-inet-types { prefix inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-policy-types { prefix oc-pol-types; }
include openconfig-rib-bgp-attributes;
include openconfig-rib-bgp-shared-attributes;
include openconfig-rib-bgp-table-attributes;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This submodule contains structural data definitions for
BGP routing tables.";
oc-ext:openconfig-version "0.3.0";
revision "2016-10-17" {
description
"OpenConfig BGP RIB refactor";
reference "0.3.0";
}
grouping bgp-adj-rib-common-attr-refs {
description
"Definitions of common references to attribute sets for
multiple AFI-SAFIs for Adj-RIB tables";
leaf attr-index {
type leafref {
path "../../../../../../../../../../attr-sets/attr-set/" +
"state/index";
}
description
"Reference to the common attribute group for the
route";
}
leaf community-index {
type leafref {
path "../../../../../../../../../../communities/community/" +
"state/index";
}
description
"Reference to the community attribute for the route";
}
leaf ext-community-index {
type leafref {
path "../../../../../../../../../../ext-communities/" +
"ext-community/state/index";
}
description
"Reference to the extended community attribute for the
route";
}
}
grouping bgp-loc-rib-common-attr-refs {
description
"Definitions of common references to attribute sets for
multiple AFI-SAFIs for LOC-RIB tables";
leaf attr-index {
type leafref {
path "../../../../../../../../attr-sets/attr-set/" +
"state/index";
}
description
"Reference to the common attribute group for the
route";
}
leaf community-index {
type leafref {
path "../../../../../../../../communities/community/" +
"state/index";
}
description
"Reference to the community attribute for the route";
}
leaf ext-community-index {
type leafref {
path "../../../../../../../../ext-communities/" +
"ext-community/state/index";
}
description
"Reference to the extended community attribute for the
route";
}
}
grouping bgp-loc-rib-common-keys {
description
"Common references used in keys for IPv4 and IPv6
LOC-RIB entries";
leaf origin {
type union {
type inet:ip-address-no-zone;
type identityref {
base oc-pol-types:INSTALL_PROTOCOL_TYPE;
}
}
description
"Indicates the origin of the route. If the route is learned
from a neighbor, this value is the neighbor address. If
the route was injected or redistributed from another
protocol, the origin indicates the source protocol for the
route.";
}
leaf path-id {
type uint32;
default 0;
description
"If the route is learned from a neighbor, the path-id
corresponds to the path-id for the route in the
corresponding adj-rib-in-post table. If the route is
injected from another protocol, or the neighbor does not
support BGP add-paths, the path-id should be set
to zero, also the default value.";
}
}
grouping bgp-loc-rib-key-refs {
description
"Key references to support operational state structure for
the BGP LOC-RIB table";
leaf prefix {
type leafref {
path "../state/prefix";
}
description
"Reference to the prefix list key";
}
leaf origin {
type leafref {
path "../state/origin";
}
description
"Reference to the origin list key";
}
leaf path-id {
type leafref {
path "../state/path-id";
}
description
"Reference to the path-id list key";
}
}
grouping ipv4-loc-rib-top {
description
"Top-level grouping for IPv4 routing tables";
container loc-rib {
config false;
description
"Container for the IPv4 BGP LOC-RIB data";
uses bgp-common-table-attrs-top;
container routes {
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix origin path-id";
description
"List of routes in the table, keyed by the route
prefix, the route origin, and path-id. The route
origin can be either the neighbor address from which
the route was learned, or the source protocol that
injected the route. The path-id distinguishes routes
for the same prefix received from a neighbor (e.g.,
if add-paths is eanbled).";
uses bgp-loc-rib-key-refs;
container state {
description
"Operational state data for route entries in the
BGP LOC-RIB";
leaf prefix {
type inet:ipv4-prefix;
description
"The IPv4 prefix corresponding to the route";
}
uses bgp-loc-rib-common-keys;
uses bgp-loc-rib-common-attr-refs;
uses bgp-loc-rib-attr-state;
uses bgp-common-route-annotations-state;
uses bgp-loc-rib-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
}
grouping ipv6-loc-rib-top {
description
"Top-level grouping for IPv6 routing tables";
container loc-rib {
config false;
description
"Container for the IPv6 BGP LOC-RIB data";
uses bgp-common-table-attrs-top;
container routes {
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix origin path-id";
description
"List of routes in the table, keyed by the route
prefix, the route origin, and path-id. The route
origin can be either the neighbor address from which
the route was learned, or the source protocol that
injected the route. The path-id distinguishes routes
for the same prefix received from a neighbor (e.g.,
if add-paths is eanbled).";
uses bgp-loc-rib-key-refs;
container state {
description
"Operational state data for route entries in the
BGP LOC-RIB";
leaf prefix {
type inet:ipv6-prefix;
description
"The IPv6 prefix corresponding to the route";
}
uses bgp-loc-rib-common-keys;
uses bgp-loc-rib-common-attr-refs;
uses bgp-loc-rib-attr-state;
uses bgp-common-route-annotations-state;
uses bgp-loc-rib-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
}
grouping bgp-adj-rib-key-refs {
description
"Key references to support operational state structure for
the BGP Adj-RIB tables";
leaf prefix {
type leafref {
path "../state/prefix";
}
description
"Reference to the prefix list key";
}
leaf path-id {
type leafref {
path "../state/path-id";
}
description
"Reference to the path-id list key";
}
}
grouping ipv4-adj-rib-common {
description
"Common structural grouping for each IPv4 adj-RIB table";
uses bgp-common-table-attrs-top;
container routes {
config false;
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix path-id";
description
"List of routes in the table, keyed by a combination of
the route prefix and path-id to distinguish multiple
routes received from a neighbor for the same prefix,
e.g., when BGP add-paths is enabled.";
uses bgp-adj-rib-key-refs;
container state {
description
"Operational state data for BGP Adj-RIB entries";
leaf prefix {
type inet:ipv4-prefix;
description
"Prefix for the route";
}
uses bgp-adj-rib-attr-state;
uses bgp-adj-rib-common-attr-refs;
uses bgp-common-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
grouping ipv4-adj-rib-in-post {
description
"Common structural grouping for the IPv4 adj-rib-in
post-policy table";
uses bgp-common-table-attrs-top;
container routes {
config false;
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix path-id";
description
"List of routes in the table, keyed by a combination of
the route prefix and path-id to distinguish multiple
routes received from a neighbor for the same prefix,
e.g., when BGP add-paths is enabled.";
uses bgp-adj-rib-key-refs;
container state {
description
"Operational state data for BGP Adj-RIB entries";
leaf prefix {
type inet:ipv4-prefix;
description
"Prefix for the route";
}
uses bgp-adj-rib-attr-state;
uses bgp-adj-rib-common-attr-refs;
uses bgp-common-route-annotations-state;
uses bgp-adj-rib-in-post-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
grouping ipv4-adj-rib-top {
description
"Top-level grouping for Adj-RIB table";
container neighbors {
config false;
description
"Enclosing container for neighbor list";
list neighbor {
key "neighbor-address";
description
"List of neighbors (peers) of the local BGP speaker";
leaf neighbor-address {
type leafref {
path "../state/neighbor-address";
}
description
"Reference to the list key";
}
container state {
description
"Operational state for each neighbor BGP Adj-RIB";
leaf neighbor-address {
type inet:ip-address-no-zone;
description
"IP address of the BGP neighbor or peer";
}
}
container adj-rib-in-pre {
description
"Per-neighbor table containing the NLRI updates
received from the neighbor before any local input
policy rules or filters have been applied. This can
be considered the 'raw' updates from the neighbor.";
uses ipv4-adj-rib-common;
}
container adj-rib-in-post {
description
"Per-neighbor table containing the paths received from
the neighbor that are eligible for best-path selection
after local input policy rules have been applied.";
uses ipv4-adj-rib-in-post;
}
container adj-rib-out-pre {
description
"Per-neighbor table containing paths eligble for
sending (advertising) to the neighbor before output
policy rules have been applied";
uses ipv4-adj-rib-common;
}
container adj-rib-out-post {
description
"Per-neighbor table containing paths eligble for
sending (advertising) to the neighbor after output
policy rules have been applied";
uses ipv4-adj-rib-common;
}
}
}
}
grouping ipv6-adj-rib-common {
description
"Common structural grouping for each IPv6 adj-RIB table";
uses bgp-common-table-attrs-state;
container routes {
config false;
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix path-id";
description
"List of routes in the table";
uses bgp-adj-rib-key-refs;
container state {
description
"Operational state data for BGP Adj-RIB entries";
leaf prefix {
type inet:ipv6-prefix;
description
"Prefix for the route";
}
uses bgp-adj-rib-attr-state;
uses bgp-adj-rib-common-attr-refs;
uses bgp-common-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
grouping ipv6-adj-rib-in-post {
description
"Common structural grouping for the IPv6 adj-rib-in
post-policy table";
uses bgp-common-table-attrs-state;
container routes {
config false;
description
"Enclosing container for list of routes in the routing
table.";
list route {
key "prefix path-id";
description
"List of routes in the table";
uses bgp-adj-rib-key-refs;
container state {
description
"Operational state data for BGP Adj-RIB entries";
leaf prefix {
type inet:ipv6-prefix;
description
"Prefix for the route";
}
uses bgp-adj-rib-attr-state;
uses bgp-adj-rib-common-attr-refs;
uses bgp-common-route-annotations-state;
uses bgp-adj-rib-in-post-route-annotations-state;
}
uses bgp-unknown-attr-top;
}
}
}
grouping ipv6-adj-rib-top {
description
"Top-level grouping for Adj-RIB table";
container neighbors {
config false;
description
"Enclosing container for neighbor list";
list neighbor {
key "neighbor-address";
description
"List of neighbors (peers) of the local BGP speaker";
leaf neighbor-address {
type leafref {
path "../state/neighbor-address";
}
description
"Reference to the list key";
}
container state {
description
"Operational state for each neighbor BGP Adj-RIB";
leaf neighbor-address {
type inet:ip-address-no-zone;
description
"IP address of the BGP neighbor or peer";
}
}
container adj-rib-in-pre {
description
"Per-neighbor table containing the NLRI updates
received from the neighbor before any local input
policy rules or filters have been applied. This can
be considered the 'raw' updates from the neighbor.";
uses ipv6-adj-rib-common;
}
container adj-rib-in-post {
description
"Per-neighbor table containing the paths received from
the neighbor that are eligible for best-path selection
after local input policy rules have been applied.";
uses ipv6-adj-rib-in-post;
}
container adj-rib-out-pre {
description
"Per-neighbor table containing paths eligble for
sending (advertising) to the neighbor before output
policy rules have been applied";
uses ipv6-adj-rib-common;
}
container adj-rib-out-post {
description
"Per-neighbor table containing paths eligble for
sending (advertising) to the neighbor after output
policy rules have been applied";
uses ipv6-adj-rib-common;
}
}
}
}
}