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;

        }
      }
    }
  }

}