I2RS Working Group L. Wang
Internet-Draft S. Hares
Intended status: Standards Track S. Zhuang
Expires: April 27, 2015 Huawei
October 24, 2014

An I2RS BGP Data Modell
draft-wang-i2rs-bgp-dm-00.txt

Abstract

This document introduces a yang data for i2RS BGP protocol and network policy that aligns with the I2RS BGP use cases. This draft utilizes the general Policy based routing structured found in the RIB Information Model (IM) and Policy Base Policy.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on April 27, 2015.

Copyright Notice

Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.


Table of Contents

1. Introduction

The Interface to the Routing System (I2RS) provides read and write access to the information and state within the routing process within routing elements via protocol message exchange between an I2RS Client and an I2RS Agent associated with the a routing system. The [I-D.ietf-i2rs-architecture] describes the basic interactions of this exchange. One of the important functions of this messages exchange is for the I2RS client to interact with one or more I2RS agents to collect information from network routing systems.

One of the key information pieces that I2RS clients may collect from I2RS agents is the BGP information regarding BGP peers, BGP routes, and network topologies created within BGP. This document introduces a basic information model for BGP policies. This policy model can be linked with other information models such as the I2RS RIB informational model [I-D.ietf-i2rs-rib-info-model], and uses the generic policy found in the Policy Routing modules in [I-D.hares-i2rs-bnp-info-model]. This basic BGP Information Model is an extendable policy model is a product of the industry approach to I2RS.

2. Definitions and Acronyms

3. BGP Yang top-level description

module: bgp-protocol
   +--rw bgp-protocol
      +--rw router-id?                      inet:ip-address
      +--rw as-number?                      uint32
      +--ro protocol-status?                enumeration
      +--rw shutdown-protocol?              boolean
      +--ro bgp-role?                       enumeration
      +--rw bgp-ipv4-uni-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
 	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw 
	  |  |     |  |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?  
                                                	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32 
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-labeled-ipv4-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* 
	              [ipv4-route ipv4-prefix-length mpls-label]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw mpls-label            mpls-label-def
      |  |     +--rw bgp-route-type?       enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 	      boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id    uint8
	  |  |     |  |  |  +--rw cost-id         uint32 
      |  |     |  |  +--rw usextcommsize?    uint16
      |  |     |  |  +--rw ulrefcount?       uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                  	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* 
	                 [ipv4-route ipv4-prefix-length mpls-label]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw mpls-label            mpls-label-def
      |     |     +--rw bgp-route-type?       enumeration
	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* 
	                [ipv4-route ipv4-prefix-length mpls-label]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw mpls-label            mpls-label-def
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?   rib-state-def
      |              +--ro rib-last-state?      rib-state-def
      |              +--ro rib-rejected-reason?   enumeration
      |              +--ro not-preferred-reason?  enumeration
      +--rw bgp-ipv4-multi-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw insertion-point    uint32   
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                                  	  enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-vpnv4-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* 
	          [ipv4-route ipv4-prefix-length route-distinguisher]
      |  |     +--rw ipv4-route             inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length     uint8
      |  |     +--rw mpls-label?            mpls-label-def
      |  |     +--rw route-distinguisher route-distinguisher-def
      |  |     +--rw bgp-route-type?        enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 		  boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?       enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?   rib-state-def
      |  |        +--ro rib-last-state?      rib-state-def
      |  |        +--ro rib-rejected-reason?  enumeration
      |  |        +--ro not-preferred-reason? enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in			  policy-group-name
      |     +--rw bgp-policy-out		  policy-group-name
      |     +--ro peer-policy-in-pset	  policy-set-name
      |     +--ro peer-policy-out-pset	  policy-set-name
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                         	  enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                        	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* 
	           [ipv4-route ipv4-prefix-length route-distinguisher]
      |     |     +--rw ipv4-route             inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length     uint8
      |     |     +--rw mpls-label?            mpls-label-def
      |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     +--rw bgp-route-type?        enumeration
	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?           enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop    inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?      enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* 
	              [ipv4-route ipv4-prefix-length route-distinguisher]
      |           +--rw ipv4-route             inet:ipv4-prefix
      |           +--rw ipv4-prefix-length     uint8
      |           +--rw mpls-label?            mpls-label-def
      |           +--rw route-distinguisher route-distinguisher-def
      |           +--rw bgp-route-type?        enumeration
	  |           +--rw route-admin-distance   uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?         enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?              uint32
      |           |  +--rw bgp-localpref?        uint32
      |           |  +--rw bgp-atomic-aggregate? uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?    enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv4-l3vpn-instance-list* [bgp-l3vpn-instance-name]
      |  +--rw bgp-l3vpn-instance-name    string
      |  +--rw bgp-instance-name?         string
      |  +--rw bgp-instance-create?       enumeration
      |  +--rw bgp-instance-type?         enumeration
      |  +--rw bgp-vendor-type?           enumeration
      |  +--rw afi?                       afi-def
      |  +--rw safi?                      safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv4-route ipv4-prefix-length]
      |  |     +--rw ipv4-route            inet:ipv4-prefix
      |  |     +--rw ipv4-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?              uint32
      |  |     |  +--rw bgp-localpref?        uint32
      |  |     |  +--rw bgp-atomic-aggregate? uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 		  boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id    uint8
	  |  |     |  |  |  +--rw cost-id         uint32   
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                 	   enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                            	       enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* 
	                 [ipv4-route ipv4-prefix-length]
      |     |     +--rw ipv4-route            inet:ipv4-prefix
      |     |     +--rw ipv4-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
   	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
  	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv4-route ipv4-prefix-length]
      |           +--rw ipv4-route            inet:ipv4-prefix
      |           +--rw ipv4-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?    rib-state-def
      |              +--ro rib-last-state?       rib-state-def
      |              +--ro rib-rejected-reason?  enumeration
      |              +--ro not-preferred-reason? enumeration
      +--rw bgp-ipv6-uni-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id    uint8
	  |  |     |  |  |  +--rw cost-id         uint32   
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value?  enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value?  enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                       	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
   	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?  inet:ip-address
      |     |     |  +--rw bgp-med?              uint32
      |     |     |  +--rw bgp-localpref?        uint32
      |     |     |  +--rw bgp-atomic-aggregate? uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?       uint32
      |     |     |  |  +--rw ulasnumber?        uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?     uint16
      |     |     |  |  +--rw ulrefcount?        uint32
      |     |     |  |  +--rw extcommattr-value? string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?         uint16
      |     |     |  |  +--rw ulrefclus?         uint32
      |     |     |  |  +--rw clusterlist-value? string
      |     |     |  +--rw bgp-originator-id?    uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?    rib-state-def
      |     |        +--ro rib-last-state?       rib-state-def
      |     |        +--ro rib-rejected-reason?  enumeration
      |     |        +--ro not-preferred-reason? enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?        enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?     et:ip-address
      |           |  +--rw bgp-med?              uint32
      |           |  +--rw bgp-localpref?        uint32
      |           |  +--rw bgp-atomic-aggregate? uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?    uint32
      |           |  |  +--rw ulasnumber?     uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?     uint16
      |           |  |  +--rw ulrefcomm?      uint32
      |           |  |  +--rw commattr-value? string
      |           |  +--rw bgp-extcommattr
  	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id    uint8
	  |           |  |  |  +--rw cost-id         uint32   
      |           |  |  +--rw usextcommsize?     uint16
      |           |  |  +--rw ulrefcount?        uint32
      |           |  |  +--rw extcommattr-value? string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?         uint16
      |           |  |  +--rw ulrefclus?         uint32
      |           |  |  +--rw clusterlist-value? string
      |           |  +--rw bgp-originator-id?    uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state? rib-state-def
      |              +--ro rib-last-state?    rib-state-def
      |              +--ro rib-rejected-reason?  enumeration
      |              +--ro not-preferred-reason? enumeration
      +--rw bgp-labeled-ipv6-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* 
	               [ipv6-route ipv6-prefix-length mpls-label]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw mpls-label            mpls-label-def
      |  |     +--rw bgp-route-type?       enumeration
	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?        enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?  inet:ip-address
      |  |     |  +--rw bgp-med?              uint32
      |  |     |  +--rw bgp-localpref?        uint32
      |  |     |  +--rw bgp-atomic-aggregate? uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 	      boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id    uint8
	  |  |     |  |  |  +--rw cost-id         uint32   
      |  |     |  |  +--rw usextcommsize?     uint16
      |  |     |  |  +--rw ulrefcount?        uint32
      |  |     |  |  +--rw extcommattr-value? string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?         uint16
      |  |     |  |  +--rw ulrefclus?         uint32
      |  |     |  |  +--rw clusterlist-value? string
      |  |     |  +--rw bgp-originator-id?    uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state? rib-state-def
      |  |        +--ro rib-last-state?    rib-state-def
      |  |        +--ro rib-rejected-reason?  enumeration
      |  |        +--ro not-preferred-reason? enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?  inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address? inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?  peer-state
      |     |  +--ro peer-last-state?     peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                             	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* 
	               [ipv6-route ipv6-prefix-length mpls-label]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw mpls-label            mpls-label-def
      |     |     +--rw bgp-route-type?       enumeration
 	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?        enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?      uint16
      |     |     |  |  +--rw ulrefcount?     uint16
      |     |     |  |  +--rw asstring?       string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
  	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id    uint8
	  |     |     |  |  |  +--rw cost-id         uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* 
	                [ipv6-route ipv6-prefix-length mpls-label]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw mpls-label            mpls-label-def
      |           +--rw bgp-route-type?       enumeration
	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
  	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id       uint8
	  |           |  |  |  +--rw cost-id            uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv6-multi-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
 	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?             enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
  	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                                   	  enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                  	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
 	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
  	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id       uint8
	  |     |     |  |  |  +--rw cost-id            uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
 	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?             enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?            inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
  	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id       uint8
	  |           |  |  |  +--rw cost-id            uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-vpnv6-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list*
           	  [ipv6-route ipv6-prefix-length route-distinguisher]
      |  |     +--rw ipv6-route             inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length     uint8
      |  |     +--rw mpls-label?            mpls-label-def
      |  |     +--rw route-distinguisher route-distinguisher-def
      |  |     +--rw bgp-route-type?        enumeration
 	  |  |     +--rw route-admin-distance   uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?         enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?            inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?      enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                               	       enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                              	      enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* 
	            [ipv6-route ipv6-prefix-length route-distinguisher]
      |     |     +--rw ipv6-route             inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length     uint8
      |     |     +--rw mpls-label?            mpls-label-def
      |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     +--rw bgp-route-type?        enumeration
 	  |     |     +--rw route-admin-distance   uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?           enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?   inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id       uint8
	  |     |     |  |  |  +--rw cost-id            uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?      enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* 
	              [ipv6-route ipv6-prefix-length route-distinguisher]
      |           +--rw ipv6-route             inet:ipv6-prefix
      |           +--rw ipv6-prefix-length     uint8
      |           +--rw mpls-label?            mpls-label-def
      |           +--rw route-distinguisher route-distinguisher-def
      |           +--rw bgp-route-type?        enumeration
 	  |           +--rw route-admin-distance   uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?         enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
  	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id      uint8
	  |           |  |  |  +--rw cost-id           uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?      enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv6-l3vpn-instance-list* [bgp-l3vpn-instance-name]
      |  +--rw bgp-l3vpn-instance-name    string
      |  +--rw bgp-instance-name?         string
      |  +--rw bgp-instance-create?       enumeration
      |  +--rw bgp-instance-type?         enumeration
      |  +--rw bgp-vendor-type?           enumeration
      |  +--rw afi?                       afi-def
      |  +--rw safi?                      safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-list* [ipv6-route ipv6-prefix-length]
      |  |     +--rw ipv6-route            inet:ipv6-prefix
      |  |     +--rw ipv6-prefix-length    uint8
      |  |     +--rw bgp-route-type?       enumeration
 	  |  |     +--rw route-admin-distance  uint16
      |  |     +--rw bgp-attribute-list
      |  |     |  +--rw bgp-origin?           enumeration
      |  |     |  +--rw bgp-aspath
      |  |     |  |  +--rw usascount?         uint16
      |  |     |  |  +--rw ulrefcount?        uint16
      |  |     |  |  +--rw asstring?          string
      |  |     |  |  +--ro usascountfrcomp?   uint16
      |  |     |  |  +--rw usastotalcount?    uint16
      |  |     |  |  +--rw usas4pathlen?      uint16
      |  |     |  |  +--rw as4pathvalue?      string
      |  |     |  +--rw bgp-nexthop?   inet:ip-address
      |  |     |  +--rw bgp-med?                uint32
      |  |     |  +--rw bgp-localpref?          uint32
      |  |     |  +--rw bgp-atomic-aggregate?   uint32
      |  |     |  +--rw bgp-aggregator
      |  |     |  |  +--rw ulipaddress?   uint32
      |  |     |  |  +--rw ulasnumber?    uint32
      |  |     |  +--rw bgp-commattr
      |  |     |  |  +--rw uscommsize?       uint16
      |  |     |  |  +--rw ulrefcomm?        uint32
      |  |     |  |  +--rw commattr-value?   string
      |  |     |  +--rw bgp-extcommattr
	  |  |     |  |  +--rw custom-community
	  |  |     |  |  +--rw valid 			 boolean
	  |  |     |  |  |  +--rw insertion-point uint32
	  |  |     |  |  |  +--rw community-id       uint8
	  |  |     |  |  |  +--rw cost-id            uint32   
      |  |     |  |  +--rw usextcommsize?       uint16
      |  |     |  |  +--rw ulrefcount?          uint32
      |  |     |  |  +--rw extcommattr-value?   string
      |  |     |  +--rw bgp-clusterlist
      |  |     |  |  +--rw uscluslen?           uint16
      |  |     |  |  +--rw ulrefclus?           uint32
      |  |     |  |  +--rw clusterlist-value?   string
      |  |     |  +--rw bgp-originator-id?      uint32
      |  |     +--ro bgp-route-create?     enumeration
      |  |     +--ro bgp-rt-state-info
      |  |        +--ro rib-current-state?      rib-state-def
      |  |        +--ro rib-last-state?         rib-state-def
      |  |        +--ro rib-rejected-reason?    enumeration
      |  |        +--ro not-preferred-reason?   enumeration
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value?
                                                  	   enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                                       enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-rib-in-list* [ipv6-route ipv6-prefix-length]
      |     |     +--rw ipv6-route            inet:ipv6-prefix
      |     |     +--rw ipv6-prefix-length    uint8
      |     |     +--rw bgp-route-type?       enumeration
 	  |     |     +--rw route-admin-distance  uint16
      |     |     +--rw bgp-attribute-list
      |     |     |  +--rw bgp-origin?             enumeration
      |     |     |  +--rw bgp-aspath
      |     |     |  |  +--rw usascount?         uint16
      |     |     |  |  +--rw ulrefcount?        uint16
      |     |     |  |  +--rw asstring?          string
      |     |     |  |  +--ro usascountfrcomp?   uint16
      |     |     |  |  +--rw usastotalcount?    uint16
      |     |     |  |  +--rw usas4pathlen?      uint16
      |     |     |  |  +--rw as4pathvalue?      string
      |     |     |  +--rw bgp-nexthop?            inet:ip-address
      |     |     |  +--rw bgp-med?                uint32
      |     |     |  +--rw bgp-localpref?          uint32
      |     |     |  +--rw bgp-atomic-aggregate?   uint32
      |     |     |  +--rw bgp-aggregator
      |     |     |  |  +--rw ulipaddress?   uint32
      |     |     |  |  +--rw ulasnumber?    uint32
      |     |     |  +--rw bgp-commattr
      |     |     |  |  +--rw uscommsize?       uint16
      |     |     |  |  +--rw ulrefcomm?        uint32
      |     |     |  |  +--rw commattr-value?   string
      |     |     |  +--rw bgp-extcommattr
	  |     |     |  |  +--rw custom-community
	  |     |     |  |  |  +--rw valid 			 boolean
	  |     |     |  |  |  +--rw insertion-point uint32
	  |     |     |  |  |  +--rw community-id       uint8
	  |     |     |  |  |  +--rw cost-id            uint32   
      |     |     |  |  +--rw usextcommsize?       uint16
      |     |     |  |  +--rw ulrefcount?          uint32
      |     |     |  |  +--rw extcommattr-value?   string
      |     |     |  +--rw bgp-clusterlist
      |     |     |  |  +--rw uscluslen?           uint16
      |     |     |  |  +--rw ulrefclus?           uint32
      |     |     |  |  +--rw clusterlist-value?   string
      |     |     |  +--rw bgp-originator-id?      uint32
      |     |     +--ro bgp-route-create?     enumeration
      |     |     +--ro bgp-rt-state-info
      |     |        +--ro rib-current-state?      rib-state-def
      |     |        +--ro rib-last-state?         rib-state-def
      |     |        +--ro rib-rejected-reason?    enumeration
      |     |        +--ro not-preferred-reason?   enumeration
      |     +--rw bgp-rib-out
      |        +--rw bgp-rib-out-list* 
	                  [ipv6-route ipv6-prefix-length]
      |           +--rw ipv6-route            inet:ipv6-prefix
      |           +--rw ipv6-prefix-length    uint8
      |           +--rw bgp-route-type?       enumeration
 	  |           +--rw route-admin-distance  uint16
      |           +--rw bgp-attribute-list
      |           |  +--rw bgp-origin?           enumeration
      |           |  +--rw bgp-aspath
      |           |  |  +--rw usascount?         uint16
      |           |  |  +--rw ulrefcount?        uint16
      |           |  |  +--rw asstring?          string
      |           |  |  +--ro usascountfrcomp?   uint16
      |           |  |  +--rw usastotalcount?    uint16
      |           |  |  +--rw usas4pathlen?      uint16
      |           |  |  +--rw as4pathvalue?      string
      |           |  +--rw bgp-nexthop?   inet:ip-address
      |           |  +--rw bgp-med?                uint32
      |           |  +--rw bgp-localpref?          uint32
      |           |  +--rw bgp-atomic-aggregate?   uint32
      |           |  +--rw bgp-aggregator
      |           |  |  +--rw ulipaddress?   uint32
      |           |  |  +--rw ulasnumber?    uint32
      |           |  +--rw bgp-commattr
      |           |  |  +--rw uscommsize?       uint16
      |           |  |  +--rw ulrefcomm?        uint32
      |           |  |  +--rw commattr-value?   string
      |           |  +--rw bgp-extcommattr
	  |           |  |  +--rw custom-community
	  |           |  |  |  +--rw valid 			 boolean
	  |           |  |  |  +--rw insertion-point uint32
	  |           |  |  |  +--rw community-id       uint8
	  |           |  |  |  +--rw cost-id            uint32   
      |           |  |  +--rw usextcommsize?       uint16
      |           |  |  +--rw ulrefcount?          uint32
      |           |  |  +--rw extcommattr-value?   string
      |           |  +--rw bgp-clusterlist
      |           |  |  +--rw uscluslen?           uint16
      |           |  |  +--rw ulrefclus?           uint32
      |           |  |  +--rw clusterlist-value?   string
      |           |  +--rw bgp-originator-id?      uint32
      |           +--ro bgp-route-create?     enumeration
      |           +--ro bgp-rt-state-info
      |              +--ro rib-current-state?      rib-state-def
      |              +--ro rib-last-state?         rib-state-def
      |              +--ro rib-rejected-reason?    enumeration
      |              +--ro not-preferred-reason?   enumeration
      +--rw bgp-ipv4-mvpn-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?       enumeration
 	  |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?        enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?            inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
	  |  |  |  |  +--rw custom-community
	  |  |  |  |  |  +--rw valid 			 boolean
	  |  |  |  |  |  +--rw insertion-point uint32
	  |  |  |  |  |  +--rw community-id       uint8
	  |  |  |  |  |  +--rw cost-id            uint32   
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16
      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string
      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?           enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mvpn-route-type)?
      |  |     +--:(INTRA_AS_I_PMSI_AD)
      |  |     |  +--rw intra-as-i-pmsi-ad-route* 
	        [route-type route-distinguisher origin-router-ip-addr]
      |  |     |     +--rw route-type           mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw origin-router-ip-addr inet:ip-prefix
      |  |     +--:(INTER_AS_I_PMSI_AD)
      |  |     |  +--rw inter_as_i_pmsi_as_route*
                   	  [route-type route-distinguisher source-as]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw source-as           inet:as-number
      |  |     +--:(S_PMSI_AD)
      |  |     |  +--rw s-pmsi-ad-route* 
            [route-type route-distinguisher multicast-source 
                           multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source    inet:ip-prefix
      |  |     |     +--rw multicast-group     inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |     |  +--rw leaf-ad-route* 
	                         [route-type route-key origin-router-ip-addr]
      |  |     |     +--rw route-type               mvpn-route-type
      |  |     |     +--rw route-key                binary
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(SOURCE_ACTIVE_AD)
      |  |     |  +--rw source-active-ad-route* 
	   [route-type route-distinguisher multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SHARED_TREE_JOIN)
      |  |     |  +--rw shared-tree-join-route* 
                       [route-type route-distinguisher source-as 
                                multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw source-as              inet:as-number
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SOURCE_TREE_JOIN)
      |  |        +--rw source-tree-join-route* 
                       [route-type route-distinguisher source-as 
                                 multicast-source multicast-group]
      |  |           +--rw route-type             mvpn-route-type
      |  |           +--rw route-distinguisher route-distinguisher-def
      |  |           +--rw source-as              inet:as-number
      |  |           +--rw multicast-source       inet:ip-prefix
      |  |           +--rw multicast-group        inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
	                                          enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value? 
                                          	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
 	  |     |  +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?   inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr
      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
	  |     |  |  |  +--rw custom-community
	  |     |  |  |  |  +--rw valid 		  boolean
	  |     |  |  |  |  +--rw insertion-point uint32
	  |     |  |  |  |  +--rw community-id       uint8
	  |     |  |  |  |  +--rw cost-id            uint32   
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?           enumeration
      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration
      |     |  +--rw (bgp-mvpn-route-type)?
      |     |     +--:(INTRA_AS_I_PMSI_AD)
      |     |     |  +--rw intra-as-i-pmsi-ad-route* 
	               [route-type route-distinguisher origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(INTER_AS_I_PMSI_AD)
      |     |     |  +--rw inter_as_i_pmsi_as_route*
                          	  [route-type route-distinguisher source-as]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as           inet:as-number
      |     |     +--:(S_PMSI_AD)
      |     |     |  +--rw s-pmsi-ad-route* 
                           [route-type route-distinguisher 
              multicast-source multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw multicast-source    inet:ip-prefix
      |     |     |     +--rw multicast-group     inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |     |  +--rw leaf-ad-route* 
	                       [route-type route-key origin-router-ip-addr]
      |     |     |     +--rw route-type               mvpn-route-type
      |     |     |     +--rw route-key                binary
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(SOURCE_ACTIVE_AD)
      |     |     |  +--rw source-active-ad-route* 
	   [route-type route-distinguisher multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher    route-distinguisher-def
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SHARED_TREE_JOIN)
      |     |     |  +--rw shared-tree-join-route* 
                  [route-type route-distinguisher source-as 
                              multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as              inet:as-number
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SOURCE_TREE_JOIN)
      |     |        +--rw source-tree-join-route* 
                     [route-type route-distinguisher source-as
                                   multicast-source multicast-group]
      |     |           +--rw route-type             mvpn-route-type
      |     |           +--rw route-distinguisher route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix
      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?          enumeration
 	  |        +--rw route-admin-distance     uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?           enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16
      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
	  |        |  |  +--rw custom-community
	  |        |  |  |  +--rw valid 			 boolean
	  |        |  |  |  +--rw insertion-point uint32
	  |        |  |  |  +--rw community-id       uint8
	  |        |  |  |  +--rw cost-id            uint32   
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string
      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?           enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration
      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mvpn-route-type)?
      |           +--:(INTRA_AS_I_PMSI_AD)
      |           |  +--rw intra-as-i-pmsi-ad-route* 
	            [route-type route-distinguisher origin-router-ip-addr]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(INTER_AS_I_PMSI_AD)
      |           |  +--rw inter_as_i_pmsi_as_route* 
	                        [route-type route-distinguisher source-as]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as           inet:as-number
      |           +--:(S_PMSI_AD)
      |           |  +--rw s-pmsi-ad-route* 
                        [route-type route-distinguisher multicast-source
                           multicast-group origin-router-ip-addr]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source    inet:ip-prefix
      |           |     +--rw multicast-group     inet:ip-prefix
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(LEAF_AD)
      |           |  +--rw leaf-ad-route* 
	                      [route-type route-key origin-router-ip-addr]
      |           |     +--rw route-type               mvpn-route-type
      |           |     +--rw route-key                binary
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(SOURCE_ACTIVE_AD)
      |           |  +--rw source-active-ad-route* 
	    [route-type route-distinguisher multicast-source multicast-group]
      |           |     +--rw route-type             mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SHARED_TREE_JOIN)
      |           |  +--rw shared-tree-join-route* 
	                    [route-type route-distinguisher source-as 
		                         multicast-source multicast-group]
      |           |     +--rw route-type             mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SOURCE_TREE_JOIN)
      |              +--rw source-tree-join-route* 
	                  [route-type route-distinguisher source-as
		                    multicast-source multicast-group]
      |                 +--rw route-type             mvpn-route-type
      |                 +--rw route-distinguisher route-distinguisher-def
      |                 +--rw source-as              inet:as-number
      |                 +--rw multicast-source       inet:ip-prefix
      |                 +--rw multicast-group        inet:ip-prefix
      +--rw bgp-ipv6-mvpn-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?          enumeration
 	  |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?             enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?            inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
	  |  |  |  |  +--rw custom-community
	  |  |  |  |  |  +--rw valid 			 boolean
	  |  |  |  |  |  +--rw insertion-point uint32
	  |  |  |  |  |  +--rw community-id       uint8
	  |  |  |  |  |  +--rw cost-id            uint32   
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16
      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string
      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?           enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mvpn-route-type)?
      |  |     +--:(INTRA_AS_I_PMSI_AD)
      |  |     |  +--rw intra-as-i-pmsi-ad-route* 
	               [route-type route-distinguisher origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(INTER_AS_I_PMSI_AD)
      |  |     |  +--rw inter_as_i_pmsi_as_route* 
	                      [route-type route-distinguisher source-as]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw source-as              inet:as-number
      |  |     +--:(S_PMSI_AD)
      |  |     |  +--rw s-pmsi-ad-route* 
                 [route-type route-distinguisher multicast-source 
                        multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source         inet:ip-prefix
      |  |     |     +--rw multicast-group          inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |     |  +--rw leaf-ad-route* 
	                      [route-type route-key origin-router-ip-addr]
      |  |     |     +--rw route-type          mvpn-route-type
      |  |     |     +--rw route-key           binary
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(SOURCE_ACTIVE_AD)
      |  |     |  +--rw source-active-ad-route*
                    	 [route-type route-distinguisher 
						      multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher route-distinguisher-def
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SHARED_TREE_JOIN)
      |  |     |  +--rw shared-tree-join-route* 
	                     [route-type route-distinguisher 
						        source-as multicast-source multicast-group]
      |  |     |     +--rw route-type             mvpn-route-type
      |  |     |     +--rw route-distinguisher    route-distinguisher-def
      |  |     |     +--rw source-as              inet:as-number
      |  |     |     +--rw multicast-source       inet:ip-prefix
      |  |     |     +--rw multicast-group        inet:ip-prefix
      |  |     +--:(SOURCE_TREE_JOIN)
      |  |        +--rw source-tree-join-route*
    	                  [route-type route-distinguisher source-as
                   		            multicast-source multicast-group]
      |  |           +--rw route-type          mvpn-route-type
      |  |           +--rw route-distinguisher route-distinguisher-def
      |  |           +--rw source-as           inet:as-number
      |  |           +--rw multicast-source    inet:ip-prefix
      |  |           +--rw multicast-group     inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv6-address?    inet:ipv6-prefix
      |     |  +--rw remote-ipv6-address?   inet:ipv6-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value? 
	                                          enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value? 
	                                          enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                          	  enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value?
                                         	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
 	  |  |     +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?   inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr
      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
	  |     |  |  |  +--rw custom-community
	  |     |  |  |  +--rw valid 			 boolean
	  |     |  |  |  +--rw insertion-point uint32
	  |     |  |  |  +--rw community-id       uint8
      |     |  |  |  +--rw cost-id            uint32   
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?           enumeration
      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration
      |     |  +--rw (bgp-mvpn-route-type)?
      |     |     +--:(INTRA_AS_I_PMSI_AD)
      |     |     |  +--rw intra-as-i-pmsi-ad-route* 
	     [route-type route-distinguisher origin-router-ip-addr]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(INTER_AS_I_PMSI_AD)
      |     |     |  +--rw inter_as_i_pmsi_as_route* 
	                 [route-type route-distinguisher source-as]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as           inet:as-number
      |     |     +--:(S_PMSI_AD)
      |     |     |  +--rw s-pmsi-ad-route* 
                      [route-type route-distinguisher multicast-source
                               multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type           mvpn-route-type
      |     |     |     +--rw route-distinguisher  route-distinguisher-def
      |     |     |     +--rw multicast-source     inet:ip-prefix
      |     |     |     +--rw multicast-group      inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |     |  +--rw leaf-ad-route* 
	            [route-type route-key origin-router-ip-addr]
      |     |     |     +--rw route-type               mvpn-route-type
      |     |     |     +--rw route-key                binary
      |     |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |     |     +--:(SOURCE_ACTIVE_AD)
      |     |     |  +--rw source-active-ad-route* 
	                       [route-type route-distinguisher 
	                            multicast-source multicast-group]
      |     |     |     +--rw route-type          mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw multicast-source    inet:ip-prefix
      |     |     |     +--rw multicast-group     inet:ip-prefix
      |     |     +--:(SHARED_TREE_JOIN)
      |     |     |  +--rw shared-tree-join-route* 
	                   [route-type route-distinguisher source-as
                               	  multicast-source multicast-group]
      |     |     |     +--rw route-type             mvpn-route-type
      |     |     |     +--rw route-distinguisher route-distinguisher-def
      |     |     |     +--rw source-as              inet:as-number
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     +--:(SOURCE_TREE_JOIN)
      |     |        +--rw source-tree-join-route* 
	                      [route-type route-distinguisher source-as
                      	          multicast-source multicast-group]
      |     |           +--rw route-type          mvpn-route-type
      |     |           +--rw route-distinguisher route-distinguisher-def
      |     |           +--rw source-as              inet:as-number
      |     |           +--rw multicast-source       inet:ip-prefix
      |     |           +--rw multicast-group        inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?          enumeration
 	  |        +--rw route-admin-distance  uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?           enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16
      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
	  |        |  |  +--rw custom-community
	  |        |  |  |  +--rw valid 			 boolean
	  |        |  |  |  +--rw insertion-point uint32
	  |        |  |  |  +--rw community-id       uint8
	  |        |  |  |  +--rw cost-id            uint32   
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string
      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?           enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration
      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mvpn-route-type)?
      |           +--:(INTRA_AS_I_PMSI_AD)
      |           |  +--rw intra-as-i-pmsi-ad-route* 
	             [route-type route-distinguisher origin-router-ip-addr]
      |           |     +--rw route-type           mvpn-route-type
      |           |     +--rw route-distinguisher  route-distinguisher-def
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(INTER_AS_I_PMSI_AD)
      |           |  +--rw inter_as_i_pmsi_as_route* 
	                        [route-type route-distinguisher source-as]
      |           |     +--rw route-type           mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           +--:(S_PMSI_AD)
      |           |  +--rw s-pmsi-ad-route* 
                   [route-type route-distinguisher multicast-source 
                            multicast-group origin-router-ip-addr]
      |           |     +--rw route-type            mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source         inet:ip-prefix
      |           |     +--rw multicast-group          inet:ip-prefix
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(LEAF_AD)
      |           |  +--rw leaf-ad-route* 
	                       [route-type route-key origin-router-ip-addr]
      |           |     +--rw route-type               mvpn-route-type
      |           |     +--rw route-key                binary
      |           |     +--rw origin-router-ip-addr    inet:ip-prefix
      |           +--:(SOURCE_ACTIVE_AD)
      |           |  +--rw source-active-ad-route* 
	                      [route-type route-distinguisher 
	                           multicast-source multicast-group]
      |           |     +--rw route-type          mvpn-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SHARED_TREE_JOIN)
      |           |  +--rw shared-tree-join-route* 
	                 [route-type route-distinguisher source-as
                         	multicast-source multicast-group]
      |           |     +--rw route-type           mvpn-route-type
      |           |     +--rw route-distinguisher  route-distinguisher-def
      |           |     +--rw source-as              inet:as-number
      |           |     +--rw multicast-source       inet:ip-prefix
      |           |     +--rw multicast-group        inet:ip-prefix
      |           +--:(SOURCE_TREE_JOIN)
      |              +--rw source-tree-join-route* 
	                 [route-type route-distinguisher source-as 
	                           multicast-source multicast-group]
      |                 +--rw route-type             mvpn-route-type
      |                 +--rw route-distinguisher route-distinguisher-def
      |                 +--rw source-as              inet:as-number
      |                 +--rw multicast-source       inet:ip-prefix
      |                 +--rw multicast-group        inet:ip-prefix
      +--rw bgp-mcast-vpls-instance
      |  +--rw bgp-instance-name?     string
      |  +--rw bgp-instance-create?   enumeration
      |  +--rw bgp-instance-type?     enumeration
      |  +--rw bgp-vendor-type?       enumeration
      |  +--rw afi?                   afi-def
      |  +--rw safi?                  safi-def
      |  +--rw bgp-local-rib
      |  |  +--rw bgp-route-type?       enumeration
 	  |  |  +--rw route-admin-distance  uint16
      |  |  +--rw bgp-attribute-list
      |  |  |  +--rw bgp-origin?        enumeration
      |  |  |  +--rw bgp-aspath
      |  |  |  |  +--rw usascount?         uint16
      |  |  |  |  +--rw ulrefcount?        uint16
      |  |  |  |  +--rw asstring?          string
      |  |  |  |  +--ro usascountfrcomp?   uint16
      |  |  |  |  +--rw usastotalcount?    uint16
      |  |  |  |  +--rw usas4pathlen?      uint16
      |  |  |  |  +--rw as4pathvalue?      string
      |  |  |  +--rw bgp-nexthop?   inet:ip-address
      |  |  |  +--rw bgp-med?                uint32
      |  |  |  +--rw bgp-localpref?          uint32
      |  |  |  +--rw bgp-atomic-aggregate?   uint32
      |  |  |  +--rw bgp-aggregator
      |  |  |  |  +--rw ulipaddress?   uint32
      |  |  |  |  +--rw ulasnumber?    uint32
      |  |  |  +--rw bgp-commattr
      |  |  |  |  +--rw uscommsize?       uint16
      |  |  |  |  +--rw ulrefcomm?        uint32
      |  |  |  |  +--rw commattr-value?   string
      |  |  |  +--rw bgp-extcommattr
	  |  |  |  |  +--rw custom-community
	  |  |  |  |  |  +--rw valid 			 boolean
	  |  |  |  |  |  +--rw insertion-point uint32
	  |  |  |  |  |  +--rw community-id       uint8
	  |  |  |  |  |  +--rw cost-id            uint32   
      |  |  |  |  +--rw usextcommsize?       uint16
      |  |  |  |  +--rw ulrefcount?          uint32
      |  |  |  |  +--rw extcommattr-value?   string
      |  |  |  +--rw bgp-clusterlist
      |  |  |  |  +--rw uscluslen?           uint16
      |  |  |  |  +--rw ulrefclus?           uint32
      |  |  |  |  +--rw clusterlist-value?   string
      |  |  |  +--rw bgp-originator-id?      uint32
      |  |  +--ro bgp-route-create?          enumeration
      |  |  +--ro bgp-rt-state-info
      |  |  |  +--ro rib-current-state?      rib-state-def
      |  |  |  +--ro rib-last-state?         rib-state-def
      |  |  |  +--ro rib-rejected-reason?    enumeration
      |  |  |  +--ro not-preferred-reason?   enumeration
      |  |  +--rw (bgp-mcast-vpls-route-type)?
      |  |     +--:(SELECTIVE_TREE_AD_ROUTE)
      |  |     |  +--rw selective-tree-ad-route
	       [route-type route-distinguisher multicast-source
		    		  multicast-group origin-router-ip-addr]
      |  |     |     +--rw route-type        mcast-vpls-route-type
      |  |     |     +--rw route-distinguisher 
	                                     route-distinguisher-def
      |  |     |     +--rw multicast-source         inet:ip-prefix
      |  |     |     +--rw multicast-group          inet:ip-prefix
      |  |     |     +--rw origin-router-ip-addr    inet:ip-prefix
      |  |     +--:(LEAF_AD)
      |  |        +--rw leaf-ad-route* 
	                   [route-type route-key origin-router-ip-addr]
      |  |           +--rw route-type        mcast-vpls-route-type
      |  |           +--rw route-key         binary
      |  |           +--rw origin-router-ip-addr    inet:ip-prefix
      |  +--rw bgp-peer-list* [bgp-peer-name]
      |     +--rw peer-session-address
      |     |  +--rw local-ipv4-address?    inet:ipv4-prefix
      |     |  +--rw remote-ipv4-address?   inet:ipv4-prefix
      |     +--rw bgp-peer-name           string
      |     +--ro bgp-peer-type?          enumeration
      |     +--ro bgp-peer-create?        enumeration
      |     +--rw bgp-policy-in
      |     +--rw bgp-policy-out
      |     +--ro peer-policy-in-pset
      |     +--ro peer-policy-out-pset
      |     +--rw peer-state-info
      |     |  +--ro peer-current-state?         peer-state
      |     |  +--ro peer-last-state?            peer-state
      |     |  +--ro peer-down-reason
      |     |  |  +--ro error-code?       enumeration
      |     |  |  +--ro sub-error-code
      |     |  |     +--ro (sub-error-code-type)?
      |     |  |        +--:(head-error-sub-code)
      |     |  |        |  +--ro head-error-sub-value?
                                       	     enumeration
      |     |  |        +--:(open-error-sub-code)
      |     |  |        |  +--ro open-error-sub-value?
                                         	  enumeration
      |     |  |        +--:(update-error-sub-code)
      |     |  |        |  +--ro update-error-sub-value? 
                                         	  enumeration
      |     |  |        +--:(route-refresh-error-sub-code)
      |     |  |           +--ro route-refresh-error-sub-value? 
                                          	  enumeration
      |     |  +--ro peer-received-update-cnt?   uint64
      |     |  +--ro peer-transmit-update-cnt?   uint64
      |     |  +--ro peer-received-route-cnt?    uint64
      |     |  +--ro peer-send-route-cnt?        uint64
      |     |  +--rw max-prefix-rcv-limit?       uint64
      |     |  +--rw max-prefix-xmt-limit?       uint64
      |     |  +--ro peer-prefix-high?           uint64
      |     |  +--ro peer-prefix-low?            uint64
      |     |  +--ro peer-perfix-ave?            uint64
      |     |  +--ro peer-prefix-time?           uint64
      |     |  +--ro peer-prefix-max?            uint64
      |     |  +--ro publish-version?            uint64
      |     +--rw bgp-rib-in
      |     |  +--rw bgp-route-type?       enumeration
 	  |     |  +--rw route-admin-distance  uint16
      |     |  +--rw bgp-attribute-list
      |     |  |  +--rw bgp-origin?        enumeration
      |     |  |  +--rw bgp-aspath
      |     |  |  |  +--rw usascount?         uint16
      |     |  |  |  +--rw ulrefcount?        uint16
      |     |  |  |  +--rw asstring?          string
      |     |  |  |  +--ro usascountfrcomp?   uint16
      |     |  |  |  +--rw usastotalcount?    uint16
      |     |  |  |  +--rw usas4pathlen?      uint16
      |     |  |  |  +--rw as4pathvalue?      string
      |     |  |  +--rw bgp-nexthop?            inet:ip-address
      |     |  |  +--rw bgp-med?                uint32
      |     |  |  +--rw bgp-localpref?          uint32
      |     |  |  +--rw bgp-atomic-aggregate?   uint32
      |     |  |  +--rw bgp-aggregator
      |     |  |  |  +--rw ulipaddress?   uint32
      |     |  |  |  +--rw ulasnumber?    uint32
      |     |  |  +--rw bgp-commattr
      |     |  |  |  +--rw uscommsize?       uint16
      |     |  |  |  +--rw ulrefcomm?        uint32
      |     |  |  |  +--rw commattr-value?   string
      |     |  |  +--rw bgp-extcommattr
	  |     |  |  |  +--rw custom-community
	  |     |  |  |  |  +--rw valid 			 boolean
	  |     |  |  |  |  +--rw insertion-point uint32
	  |     |  |  |  |  +--rw community-id       uint8
	  |     |  |  |  |  +--rw cost-id            uint32   
      |     |  |  |  +--rw usextcommsize?       uint16
      |     |  |  |  +--rw ulrefcount?          uint32
      |     |  |  |  +--rw extcommattr-value?   string
      |     |  |  +--rw bgp-clusterlist
      |     |  |  |  +--rw uscluslen?           uint16
      |     |  |  |  +--rw ulrefclus?           uint32
      |     |  |  |  +--rw clusterlist-value?   string
      |     |  |  +--rw bgp-originator-id?      uint32
      |     |  +--ro bgp-route-create?          enumeration
      |     |  +--ro bgp-rt-state-info
      |     |  |  +--ro rib-current-state?      rib-state-def
      |     |  |  +--ro rib-last-state?         rib-state-def
      |     |  |  +--ro rib-rejected-reason?    enumeration
      |     |  |  +--ro not-preferred-reason?   enumeration
      |     |  +--rw (bgp-mcast-vpls-route-type)?
      |     |     +--:(SELECTIVE_TREE_AD_ROUTE)
      |     |     |  +--rw selective-tree-ad-route* 
                 [route-type route-distinguisher multicast-source 
                             multicast-group origin-router-ip-addr]
      |     |     |     +--rw route-type      mcast-vpls-route-type
      |     |     |     +--rw route-distinguisher 
	                              route-distinguisher-def
      |     |     |     +--rw multicast-source       inet:ip-prefix
      |     |     |     +--rw multicast-group        inet:ip-prefix
      |     |     |     +--rw origin-router-ip-addr  inet:ip-prefix
      |     |     +--:(LEAF_AD)
      |     |        +--rw leaf-ad-route* 
	                   [route-type route-key origin-router-ip-addr]
      |     |           +--rw route-type     mcast-vpls-route-type
      |     |           +--rw route-key      binary
      |     |           +--rw origin-router-ip-addr  inet:ip-prefix
      |     +--rw bgp-rib-out
      |        +--rw bgp-route-type?       enumeration
 	  |        +--rw route-admin-distance  uint16
      |        +--rw bgp-attribute-list
      |        |  +--rw bgp-origin?        enumeration
      |        |  +--rw bgp-aspath
      |        |  |  +--rw usascount?         uint16
      |        |  |  +--rw ulrefcount?        uint16
      |        |  |  +--rw asstring?          string
      |        |  |  +--ro usascountfrcomp?   uint16
      |        |  |  +--rw usastotalcount?    uint16
      |        |  |  +--rw usas4pathlen?      uint16
      |        |  |  +--rw as4pathvalue?      string
      |        |  +--rw bgp-nexthop?            inet:ip-address
      |        |  +--rw bgp-med?                uint32
      |        |  +--rw bgp-localpref?          uint32
      |        |  +--rw bgp-atomic-aggregate?   uint32
      |        |  +--rw bgp-aggregator
      |        |  |  +--rw ulipaddress?   uint32
      |        |  |  +--rw ulasnumber?    uint32
      |        |  +--rw bgp-commattr
      |        |  |  +--rw uscommsize?       uint16
      |        |  |  +--rw ulrefcomm?        uint32
      |        |  |  +--rw commattr-value?   string
      |        |  +--rw bgp-extcommattr
	  |        |  |  +--rw custom-community
	  |        |  |  |  +--rw valid 			 boolean
	  |        |  |  |  +--rw insertion-point uint32
	  |        |  |  |  +--rw community-id       uint8
	  |        |  |  |  +--rw cost-id            uint32   
      |        |  |  +--rw usextcommsize?       uint16
      |        |  |  +--rw ulrefcount?          uint32
      |        |  |  +--rw extcommattr-value?   string
      |        |  +--rw bgp-clusterlist
      |        |  |  +--rw uscluslen?           uint16
      |        |  |  +--rw ulrefclus?           uint32
      |        |  |  +--rw clusterlist-value?   string
      |        |  +--rw bgp-originator-id?      uint32
      |        +--ro bgp-route-create?          enumeration
      |        +--ro bgp-rt-state-info
      |        |  +--ro rib-current-state?      rib-state-def
      |        |  +--ro rib-last-state?         rib-state-def
      |        |  +--ro rib-rejected-reason?    enumeration
      |        |  +--ro not-preferred-reason?   enumeration
      |        +--rw (bgp-mcast-vpls-route-type)?
      |           +--:(SELECTIVE_TREE_AD_ROUTE)
      |           |  +--rw selective-tree-ad-route* 
                 [route-type route-distinguisher multicast-source
                        multicast-group origin-router-ip-addr]
      |           |     +--rw route-type          mcast-vpls-route-type
      |           |     +--rw route-distinguisher route-distinguisher-def
      |           |     +--rw multicast-source    inet:ip-prefix
      |           |     +--rw multicast-group     inet:ip-prefix
      |           |     +--rw origin-router-ip-addr inet:ip-prefix
      |           +--:(LEAF_AD)
      |              +--rw leaf-ad-route* 
                        [route-type route-key origin-router-ip-addr]
      |                 +--rw route-type     mcast-vpls-route-type
      |                 +--rw route-key      binary
      |                 +--rw origin-router-ip-addr  inet:ip-prefix
      +--rw bgp-evpn-instance
         +--rw bgp-instance-name?     string
         +--rw bgp-instance-create?   enumeration
         +--rw bgp-instance-type?     enumeration
         +--rw bgp-vendor-type?       enumeration
         +--rw afi?                   afi-def
         +--rw safi?                  safi-def
         +--rw bgp-local-rib
         |  +--rw bgp-route-type?       enumeration
    	 |  +--rw route-admin-distance  uint16
         |  +--rw bgp-attribute-list
         |  |  +--rw bgp-origin?        enumeration
         |  |  +--rw bgp-aspath
         |  |  |  +--rw usascount?         uint16
         |  |  |  +--rw ulrefcount?        uint16
         |  |  |  +--rw asstring?          string
         |  |  |  +--ro usascountfrcomp?   uint16
         |  |  |  +--rw usastotalcount?    uint16
         |  |  |  +--rw usas4pathlen?      uint16
         |  |  |  +--rw as4pathvalue?      string
         |  |  +--rw bgp-nexthop?            inet:ip-address
         |  |  +--rw bgp-med?                uint32
         |  |  +--rw bgp-localpref?          uint32
         |  |  +--rw bgp-atomic-aggregate?   uint32
         |  |  +--rw bgp-aggregator
         |  |  |  +--rw ulipaddress?   uint32
         |  |  |  +--rw ulasnumber?    uint32
         |  |  +--rw bgp-commattr
         |  |  |  +--rw uscommsize?       uint16
         |  |  |  +--rw ulrefcomm?        uint32
         |  |  |  +--rw commattr-value?   string
         |  |  +--rw bgp-extcommattr
	     |  |  |  +--rw custom-community
	     |  |  |  |  +--rw valid 			 boolean
	     |  |  |  |  +--rw insertion-point uint32
	     |  |  |  |  +--rw community-id       uint8
	     |  |  |  |  +--rw cost-id            uint32   
         |  |  |  +--rw usextcommsize?       uint16
         |  |  |  +--rw ulrefcount?          uint32
         |  |  |  +--rw extcommattr-value?   string
         |  |  +--rw bgp-clusterlist
         |  |  |  +--rw uscluslen?           uint16
         |  |  |  +--rw ulrefclus?           uint32
         |  |  |  +--rw clusterlist-value?   string
         |  |  +--rw bgp-originator-id?      uint32
         |  +--ro bgp-route-create?            enumeration
         |  +--ro bgp-rt-state-info
         |  |  +--ro rib-current-state?      rib-state-def
         |  |  +--ro rib-last-state?         rib-state-def
         |  |  +--ro rib-rejected-reason?    enumeration
         |  |  +--ro not-preferred-reason?   enumeration
         |  +--rw (bgp-evpn-route-type)?
         |     +--:(EVPN_AD_ROUTE)
         |     |  +--rw evpn-ad-route* 
		     [route-type route-distinguisher esi eth-tag-id]
         |     |     +--rw route-type             evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw esi                    string
         |     |     +--rw eth-tag-id             uint32
         |     +--:(EVPN_MAC_ROUTE)
         |     |  +--rw evpn-mac-route* 
               [route-type route-distinguisher esi eth-tag-id 
           mac-length mac-address ip-address-length ip-address]
         |     |     +--rw route-type          evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw esi                 string
         |     |     +--rw eth-tag-id          uint32
         |     |     +--rw mac-length          uint8
         |     |     +--rw mac-address         yang:mac-address
         |     |     +--rw ip-address-length   uint8
         |     |     +--rw ip-address          inet:ip-address
         |     |     +--rw label1?             uint32
         |     |     +--rw label2?             uint32
         |     +--:(EVPN_INC_MCAST_TREE)
         |     |  +--rw evpn-inc-mcast-tree-route* 
                 [route-type route-distinguisher eth-tag-id 
                     ip-address-length origin-router-ip-addr]
         |     |     +--rw route-type          evpn-route-type
         |     |     +--rw route-distinguisher route-distinguisher-def
         |     |     +--rw eth-tag-id          uint32
         |     |     +--rw ip-address-length   uint8
         |     |     +--rw origin-router-ip-addr  inet:ip-prefix
         |     +--:(EVPN_ETH_SEGMENT_ROUTE)
         |        +--rw evpn-eth-segment-route* 
                        [route-type route-distinguisher esi 
                            ip-address-length origin-router-ip-addr]
         |           +--rw route-type           evpn-route-type
         |           +--rw route-distinguisher  route-distinguisher-def
         |           +--rw esi                  string
         |           +--rw ip-address-length    uint8
         |           +--rw origin-router-ip-addr inet:ip-prefix
         +--rw bgp-peer-list* [bgp-peer-name]
            +--rw peer-session-address
            |  +--rw local-ipv4-address?  inet:ipv4-prefix
            |  +--rw remote-ipv4-address? inet:ipv4-prefix
            +--rw bgp-peer-name           string
            +--ro bgp-peer-type?          enumeration
            +--ro bgp-peer-create?        enumeration
            +--rw bgp-policy-in
            +--rw bgp-policy-out
            +--ro peer-policy-in-pset
            +--ro peer-policy-out-pset
            +--rw peer-state-info
            |  +--ro peer-current-state?         peer-state
            |  +--ro peer-last-state?            peer-state
            |  +--ro peer-down-reason
            |  |  +--ro error-code?       enumeration
            |  |  +--ro sub-error-code
            |  |     +--ro (sub-error-code-type)?
            |  |        +--:(head-error-sub-code)
            |  |        |  +--ro head-error-sub-value? enumeration
            |  |        +--:(open-error-sub-code)
            |  |        |  +--ro open-error-sub-value? enumeration
            |  |        +--:(update-error-sub-code)
            |  |        |  +--ro update-error-sub-value? enumeration
            |  |        +--:(route-refresh-error-sub-code)
            |  |           +--ro route-refresh-error-sub-value?   
			                                            enumeration
            |  +--ro peer-received-update-cnt?   uint64
            |  +--ro peer-transmit-update-cnt?   uint64
            |  +--ro peer-received-route-cnt?    uint64
            |  +--ro peer-send-route-cnt?        uint64
            |  +--rw max-prefix-rcv-limit?       uint64
            |  +--rw max-prefix-xmt-limit?       uint64
            |  +--ro peer-prefix-high?           uint64
            |  +--ro peer-prefix-low?            uint64
            |  +--ro peer-perfix-ave?            uint64
            |  +--ro peer-prefix-time?           uint64
            |  +--ro peer-prefix-max?            uint64
            |  +--ro publish-version?            uint64
            +--rw bgp-rib-in
            |  +--rw bgp-route-type?       enumeration
 	        |  +--rw route-admin-distance  uint16
            |  +--rw bgp-attribute-list
            |  |  +--rw bgp-origin?        enumeration
            |  |  +--rw bgp-aspath
            |  |  |  +--rw usascount?         uint16
            |  |  |  +--rw ulrefcount?        uint16
            |  |  |  +--rw asstring?          string
            |  |  |  +--ro usascountfrcomp?   uint16
            |  |  |  +--rw usastotalcount?    uint16
            |  |  |  +--rw usas4pathlen?      uint16
            |  |  |  +--rw as4pathvalue?      string
            |  |  +--rw bgp-nexthop?            inet:ip-address
            |  |  +--rw bgp-med?                uint32
            |  |  +--rw bgp-localpref?          uint32
            |  |  +--rw bgp-atomic-aggregate?   uint32
            |  |  +--rw bgp-aggregator
            |  |  |  +--rw ulipaddress?   uint32
            |  |  |  +--rw ulasnumber?    uint32
            |  |  +--rw bgp-commattr
            |  |  |  +--rw uscommsize?       uint16
            |  |  |  +--rw ulrefcomm?        uint32
            |  |  |  +--rw commattr-value?   string
            |  |  +--rw bgp-extcommattr
	        |  |  |  +--rw custom-community
	        |  |  |  |  +--rw valid 			 boolean
	        |  |  |  |  +--rw insertion-point uint32
	        |  |  |  |  +--rw community-id       uint8
	        |  |  |  |  +--rw cost-id            uint32   
            |  |  |  +--rw usextcommsize?       uint16
            |  |  |  +--rw ulrefcount?          uint32
            |  |  |  +--rw extcommattr-value?   string
            |  |  +--rw bgp-clusterlist
            |  |  |  +--rw uscluslen?           uint16
            |  |  |  +--rw ulrefclus?           uint32
            |  |  |  +--rw clusterlist-value?   string
            |  |  +--rw bgp-originator-id?      uint32
            |  +--ro bgp-route-create?            enumeration
            |  +--ro bgp-rt-state-info
            |  |  +--ro rib-current-state?      rib-state-def
            |  |  +--ro rib-last-state?         rib-state-def
            |  |  +--ro rib-rejected-reason?    enumeration
            |  |  +--ro not-preferred-reason?   enumeration
            |  +--rw (bgp-evpn-route-type)?
            |     +--:(EVPN_AD_ROUTE)
            |     |  +--rw evpn-ad-route* 
			     [route-type route-distinguisher esi eth-tag-id]
            |     |     +--rw route-type             evpn-route-type
            |     |     +--rw route-distinguisher route-distinguisher-def
            |     |     +--rw esi                    string
            |     |     +--rw eth-tag-id             uint32
            |     +--:(EVPN_MAC_ROUTE)
            |     |  +--rw evpn-mac-route* 
                       [route-type route-distinguisher esi eth-tag-id 
                    mac-length mac-address ip-address-length ip-address]
            |     |     +--rw route-type             evpn-route-type
            |     |     +--rw route-distinguisher route-distinguisher-def
            |     |     +--rw esi                    string
            |     |     +--rw eth-tag-id             uint32
            |     |     +--rw mac-length             uint8
            |     |     +--rw mac-address            yang:mac-address
            |     |     +--rw ip-address-length      uint8
            |     |     +--rw ip-address             inet:ip-address
            |     |     +--rw label1?                uint32
            |     |     +--rw label2?                uint32
            |     +--:(EVPN_INC_MCAST_TREE)
            |     |  +--rw evpn-inc-mcast-tree-route* 
	                  [route-type route-distinguisher eth-tag-id 
	                     ip-address-length origin-router-ip-addr]
            |     |     +--rw route-type               evpn-route-type
            |     |     +--rw route-distinguisherroute-distinguisher-def
            |     |     +--rw eth-tag-id               uint32
            |     |     +--rw ip-address-length        uint8
            |     |     +--rw origin-router-ip-addr    inet:ip-prefix
            |     +--:(EVPN_ETH_SEGMENT_ROUTE)
            |        +--rw evpn-eth-segment-route* 
	                     [route-type route-distinguisher esi 
	                       ip-address-length origin-router-ip-addr]
            |           +--rw route-type               evpn-route-type
            |           +--rw route-distinguisher route-distinguisher-def
            |           +--rw esi                      string
            |           +--rw ip-address-length        uint8
            |           +--rw origin-router-ip-addr    inet:ip-prefix
            +--rw bgp-rib-out
               +--rw bgp-route-type?       enumeration
 	           +--rw route-admin-distance  uint16
               +--rw bgp-attribute-list
               |  +--rw bgp-origin?        enumeration
               |  +--rw bgp-aspath
               |  |  +--rw usascount?         uint16
               |  |  +--rw ulrefcount?        uint16
               |  |  +--rw asstring?          string
               |  |  +--ro usascountfrcomp?   uint16
               |  |  +--rw usastotalcount?    uint16
               |  |  +--rw usas4pathlen?      uint16
               |  |  +--rw as4pathvalue?      string
               |  +--rw bgp-nexthop?            inet:ip-address
               |  +--rw bgp-med?                uint32
               |  +--rw bgp-localpref?          uint32
               |  +--rw bgp-atomic-aggregate?   uint32
               |  +--rw bgp-aggregator
               |  |  +--rw ulipaddress?   uint32
               |  |  +--rw ulasnumber?    uint32
               |  +--rw bgp-commattr
               |  |  +--rw uscommsize?       uint16
               |  |  +--rw ulrefcomm?        uint32
               |  |  +--rw commattr-value?   string
               |  +--rw bgp-extcommattr
   	           |  |  +--rw custom-community
	           |  |  |  +--rw valid 			 boolean
	           |  |  |  +--rw insertion-point uint32
	           |  |  |  +--rw community-id       uint8
	           |  |  |  +--rw cost-id            uint32   
               |  |  +--rw usextcommsize?       uint16
               |  |  +--rw ulrefcount?          uint32
               |  |  +--rw extcommattr-value?   string
               |  +--rw bgp-clusterlist
               |  |  +--rw uscluslen?           uint16
               |  |  +--rw ulrefclus?           uint32
               |  |  +--rw clusterlist-value?   string
               |  +--rw bgp-originator-id?      uint32
               +--ro bgp-route-create?            enumeration
               +--ro bgp-rt-state-info
               |  +--ro rib-current-state?      rib-state-def
               |  +--ro rib-last-state?         rib-state-def
               |  +--ro rib-rejected-reason?    enumeration
               |  +--ro not-preferred-reason?   enumeration
               +--rw (bgp-evpn-route-type)?
                  +--:(EVPN_AD_ROUTE)
                  |  +--rw evpn-ad-route* 
				   [route-type route-distinguisher esi eth-tag-id]
                  |     +--rw route-type             evpn-route-type
                  |     +--rw route-distinguisher route-distinguisher-def
                  |     +--rw esi                    string
                  |     +--rw eth-tag-id             uint32
                  +--:(EVPN_MAC_ROUTE)
                  |  +--rw evpn-mac-route* 
	                  [route-type route-distinguisher esi eth-tag-id 
	                  mac-length mac-address ip-address-length ip-address]
                  |     +--rw route-type             evpn-route-type
                  |     +--rw route-distinguisher route-distinguisher-def
                  |     +--rw esi                    string
                  |     +--rw eth-tag-id             uint32
                  |     +--rw mac-length             uint8
                  |     +--rw mac-address            yang:mac-address
                  |     +--rw ip-address-length      uint8
                  |     +--rw ip-address             inet:ip-address
                  |     +--rw label1?                uint32
                  |     +--rw label2?                uint32
                  +--:(EVPN_INC_MCAST_TREE)
                  |  +--rw evpn-inc-mcast-tree-route* 
	                    [route-type route-distinguisher eth-tag-id 
	                             ip-address-length origin-router-ip-addr]
                  |     +--rw route-type               evpn-route-type
                  |     +--rw route-distinguisherroute-distinguisher-def
                  |     +--rw eth-tag-id               uint32
                  |     +--rw ip-address-length        uint8
                  |     +--rw origin-router-ip-addr    inet:ip-prefix
                  +--:(EVPN_ETH_SEGMENT_ROUTE)
                     +--rw evpn-eth-segment-route* 
	                         [route-type route-distinguisher esi 
	                            ip-address-length origin-router-ip-addr]
                        +--rw route-type               evpn-route-type
                        +--rw route-distinguisher   route-distinguisher-def
                        +--rw esi                      string
                        +--rw ip-address-length        uint8
                        +--rw origin-router-ip-addr    inet:ip-prefix		  
	

Below is the full BGP Yang top-level description for the configuration portion of I2RS configuration model. Additional information on the structure of the information model is described in [I-D.hares-i2rs-bnp-info-model].

4. BGP Yang description

		  
//<code begins> file "i2rs bgp@2014-09-30.yang"        

module bgp-protocol  {
    
  namespace "urn:huawei:params:xml:ns:yang:rt:i2rs:bgp";
    // replace with iana namespace when assigned
    prefix "bgp-protocol";
  
  import ietf-inet-types {
    prefix inet;
    //rfc6991
  }
  import ietf-yang-types {
    prefix yang;
    //RFC6991
  }

  organization
    "huawei technologies co., ltd. ";
  contact
     "email: wanglixing@huawei.com
      email: shares@ndzh.com
      email: zhuangshunwan@huawei.com";

    description
      "
        terms and acronyms

        isis (isis): 

        ip (ip): internet protocol

        ipv4 (ipv4):internet protocol version 4

        ipv6 (ipv6): internet protocol version 6

        metric(metric): multi exit discriminator

        igp (igp): interior gateway protocol

        mtu (mtu) maximum transmission unit
       ";

  
  revision "2014-08-22" {
    description "initial revision";
    reference "draft-hares-i2rs-bgp-im-00";
  }
  
/*common definition wanglixing*/
  typedef afi-def {
    description
      "afi is address family,it can be write and read.";      
    type enumeration {
      enum "ipv4";
      enum "ipv6";
      enum "l2vpn";
    }
  }

  typedef safi-def {
    description
      "afi is sub-address family,it can be write and read. ";    
    type enumeration {
      enum "unicast";
      enum "multicast";
      enum "l3vpn";
      enum "mpls";
      enum "mvpn";
      enum "rt-constrain";
      enum "ipv4-flow-spec";
      enum "vpnv4-flow-spec";
      enum "clns-vpn";
      enum "ng-mvpn";
      enum "mdt-safi";
    }
  }

  typedef mvpn-route-type {
    reference "http://tools.ietf.org/html/rfc6514#section-4";
      type enumeration {
        enum INTRA_AS_I_PMSI_AD {
          value 1;
        }
        enum INTER_AS_I_PMSI_AD {
          value 2;
        }
        enum S_PMSI_AD {
          value 3;
        }
        enum LEAF_AD {
          value 4;
        }
        enum SOURCE_ACTIVE_AD {
          value 5;
        }
        enum SHARED_TREE_JOIN {
          value 6;
        }
        enum SOURCE_TREE_JOIN {
          value 7;
        }
     }
  }

  typedef mcast-vpls-route-type {
    reference "http://tools.ietf.org/html/rfc7117#section-9.2";
      type enumeration {
        enum SELECTIVE_TREE_AD_ROUTE {
          value 3;
        }
        enum LEAF_AD {
          value 4;
        }
     }
  }
  
  typedef evpn-route-type {
    reference "draft-ietf-l2vpn-evpn-08";
      type enumeration {
        enum EVPN_AD_ROUTE {
          value 1;
        }
        enum EVPN_MAC_ROUTE {
          value 2;
        }
        enum EVPN_INC_MCAST_TREE {
          value 3;
        }
        enum EVPN_ETH_SEGMENT_ROUTE {
          value 4;
        }
     }
  }
        
  typedef bgp-route-create-mode {
    description
      "the way of creating of bgp route.";
    type enumeration {
      enum "not-i2rs-route";
      enum "i2rsclient-create-bgp-route";
      enum "i2rsagent-fails-bgp-route-create";
      enum "i2rsagent-created-bgp-route";
      enum "i2rsagent-bgp-route-create";
      enum "i2rsagent-rejects-bgp-route-create";
      enum "i2rsagent-attempts-bgp-route-create";
    }
  }

  typedef bgp-route-type-def {
    type enumeration {
      enum "bgp-route-type-rd";
      enum "bgp-route-type-ipv4";
      enum "bgp-route-type-ipv6";
      enum "bgp-labeled-ipv4";
      enum "bgp-labeled-ipv6";
      enum "bgp-route-type-flow";
      enum "bgp-route-type-evpn";
      enum "bgp-route-type-mvpn";
      enum "bgp-route-type-vpls";
      enum "bgp-route-type-bgp-ls";
      enum "bgp-route-type-l2vpn-signaling-nlri";
      enum "bgp-rt-constraint";
      enum "pw-route";
    }
  }  
  typedef peer-state {
    type enumeration {
      enum "established";
      enum "idle";
      enum "connect";
      enum "active";
      enum "open-send";
      enum "open-confirm";
    }
  }

  typedef rib-state-def {
    type enumeration {
      enum "active";
      enum "in-active";
      enum "primary";
      enum "backup";
      enum "suppress flap dampened";
	  enum "suppress non-flap dampen";
	  enum "active on altrenative best path";
    }
  }

    typedef mpls-label-def {
      description
        "label of the vrf.";
      type uint32 {
        range "16..1048574";
      }
    }

    typedef route-distinguisher-def {
    description
      "the route-distinguisher command configures a route distinguisher (rd)
       for the ipv4 or ipv6 address family of a vpn instance.
       format is asn:nn or ip-address:nn.";
    type string {
      length "3..21";
    }
  }

    
  grouping bgp-instance-commom {
    description
      "the common structure of bgp instance.";    
      
    leaf bgp-instance-name {
      type string;
    }

    leaf bgp-instance-create {
    type enumeration {
      enum "not-i2rs";
      enum "i2rsclient-create-bgp-instance";
      enum "i2rsagent-fails-bgp-instance-create";
      enum "i2rsagent-created-bgp-instance";
      enum "i2rsagent-bgp-instance-create";
      enum "i2rsagent-rejects-bgp-instance-create";
      enum "i2rsagent-attempts-bgp-instance-create";
    }
    }

    leaf bgp-instance-type {
      type enumeration {
        enum "bgp-ipv4-uni";
        enum "bgp-ipv4-multi";
        enum "bgp-ipv4-l3vpn";
        enum "bgp-ipv4-mvpn";
        enum "bgp-vpls";
        enum "bgp-mdt";
        enum "bgp-evpn";
        enum "bgp-ls";
        enum "bgp-ipv4-mpls-vpn";
        enum "bgp-ipv4-mpls-mvpn";
        enum "bgp-route-target";
        enum "bgp-ipv4-flow";
        enum "bgp-ipv4-vpn-flow";
        enum "bgp-ipv4-vrf-list";
        enum "bgp-ipv6-vrf-list";
        enum "bgp-ipv6-uni";
        enum "bgp-ipv6-vpnv6";
      }
    }

    leaf bgp-vendor-type {
      type enumeration {
        enum "cisco";
        enum "huawei";
      }
    }
    
    leaf afi {
      type afi-def;
    }

    leaf safi {
      type safi-def;
    }

  }  
  


  grouping bgp-route-common {
    leaf bgp-route-type {
      type enumeration {
      enum "bgp-route-type-rd";
      enum "bgp-route-type-ipv4";
      enum "bgp-route-type-ipv6";
      enum "bgp-labeled-ipv4";
      enum "bgp-labeled-ipv6";
      enum "bgp-route-type-flow";
      enum "bgp-route-type-evpn";
      enum "bgp-route-type-mvpn";
      enum "bgp-route-type-vpls";
      enum "bgp-route-type-bgp-ls";
      enum "bgp-route-type-l2vpn-signaling-nlri";
      enum "bgp-rt-constraint";
      enum "pw-route";
      }    
	 leaf route-admin-distance
	   byte uint16:
    }
	
   grouping bgp-ext-custom-community {
     leaf valid {
	 description 
	  "valid custom community";
	  
	  type boolean;
	 }
	 leaf insertion-point {
	 description 
	   "place community inserted.";
	   
	   type uint32;
	 }
	 leaf community-id {
	 description 
	  "custom community identifier.";
	  
	  type uint8;
	  }
	 leaf cost-id {
	 descriptoin 
	   "cost identifier.";
	  
	  leaf uint32; 
	  }
	 }
	 

    container bgp-attribute-list {
      leaf bgp-origin {
        type enumeration {
          enum "bgp-originattr-igp";
          enum "bgp-originattr-egp";
          enum "bgp-originattr-incomplete";
        }
      }

      container bgp-aspath {
        leaf usascount {
          description
            "number of as's in the as path, exclude
             confed-sequence and confed-set.";

          type uint16;
        }
        leaf ulrefcount {
          description
            "reference count to this aspath.";

          type uint16;
        }
        leaf asstring {
          type string;
        }

        leaf usascountfrcomp {
          description
            "the count used for selecting best route,
            all as-seq + 1(if exist as-set) or 0 (if no as-set),
            ignore conf-as type.";

          config "false";
          type uint16;
        }

        leaf usastotalcount {
          description
            "for as-path-limit.";
          type uint16;
        }
        leaf usas4pathlen {
          description
            " length of pucas4pathvalue, tlv's l.";
          type uint16;
        }

        leaf as4pathvalue {
          type string;
        }

      }//end of "container bgp-aspath"

      leaf bgp-nexthop {
        type inet:ip-address;
      }

      leaf bgp-med {
        type uint32;
      }

      leaf bgp-localpref {
        type uint32;              }

      leaf bgp-atomic-aggregate {
        type uint32;
      }

      container bgp-aggregator {
        leaf ulipaddress {
          description
            "ip address formed the aggregate route.";
          type uint32;
        }
        leaf ulasnumber {
          description
            "last as number that formed the aggregate route";
          type uint32;
        }
      }

      container bgp-commattr {
 
        leaf ulrefcomm {
          description
            "number of routes having the same community value.";

          type uint32;
        }
        leaf commattr-value {
          description
            "community value.";

          type string;
        }
      }

	  container custom-communty {
	      leaf valid {
		  description 
		    "custom community is valid." ;
		  
		  type boolean;
		}
	      leaf 
      container bgp-extcommattr {
	    uses bgp-ext-custom-community;
        leaf usextcommsize {
          description
            "number of communities.";

          type uint16;
        }
        leaf ulrefcount {
          description
            "number of routes having the same community value.";

          type uint32;
        }
        leaf extcommattr-value {
          description
            "community value.";

          type string;
        }
      } //end of "container bgp-extcommattr"

      container bgp-clusterlist {
        leaf uscluslen {
          description
            "length of cluster list.";

          type uint16;
        }
        leaf ulrefclus {
          description
            "count of number of routes referring to this
             cluster list.";

          type uint32;
        }
        leaf clusterlist-value {
          description
            "cluster list values.";

          type string;
        }
      } 

      leaf bgp-originator-id {
        description
          "ip address of the originator id.";

        type uint32;
      }

    }


    leaf bgp-route-create {
      description
        "the way of creating of bgp route.";
      type enumeration {
        enum "not-i2rs-route";
        enum "i2rsclient-create-bgp-route";
        enum "i2rsagent-fails-bgp-route-create";
        enum "i2rsagent-created-bgp-route";
        enum "i2rsagent-bgp-route-create";
        enum "i2rsagent-rejects-bgp-route-create";
        enum "i2rsagent-attempts-bgp-route-create";
      }   
      config false;
    }
                                
    container bgp-rt-state-info {
      config false;
      leaf rib-current-state{
        type rib-state-def;
        config false;
      }
      leaf rib-last-state{
        type rib-state-def;
        config false;
      } 
      leaf rib-rejected-reason {
        description
          "the way of creating of bgp route.";
        type enumeration {
          enum "peer-withdraw";
          enum "policy-results";
          enum "nexthop-unreachable";
          enum "malformed-peer-down";
          enum "malformed-discard";
          enum "malformed-ignore";
        } 
        config false;
      }
      leaf not-preferred-reason {
        type enumeration {
          enum "peer-address";
          enum "router-id";
          enum "cluster-list-length";
          enum "igp-metric";
          enum "peer-type";
          enum "origin";
          enum "weight-or-preferred-value";
          enum "local-preference";
          enum "route-type";
          enum "as-path-length";
          enum "med";
		  enum "flap-dampened route";
		  enum "not-this-path-prefix-uses-alt-best-path";
		  enum "overlapping-route-marked-to-remove";
        }
        config false;
      }
    }


  }



                         
  grouping bgp-peer-common {

    leaf bgp-peer-name {
      type string;
    }

    leaf bgp-peer-type {
      description
        "the bgp-peer-type provides a list of bgp peer type found within the bgp instances 
        associated with the bgp protocol function on the device  associated with the i2rs agent. 
        these can be asbr (as border router e-bgp), pe (provider edge e-bgp), ibgp peer, 
        or rr (route reflector).";   
     type enumeration {
       enum "asbr";
       enum "ibgp";
       enum "rr";
       enum "rr-client";
       enum "pe";
       enum "ce";
       enum "bgp-vendor-types";
       enum "bgp-vendor-type";
      }    
      config false;
    }

    leaf bgp-peer-create {
      description
        "provides the i2rs creation status for this peer as: not-created by
        i2rs, requested by client but not processed, or an i2rs agent's
        response to the request: (agent reject peer creation, agent
        attempting peer creation, agent failed peer creation, and agent
        created bgp peer).";   
      type enumeration {
        enum "not-i2rs-created-peer";
        enum "i2rsclient-bgp-peer-create-request";
        enum "i2rsagent-rejects-bgp-peer-create";
        enum "i2rsagent-attempts-bgp-instance-create";
        enum "i2rsagent-fails-bgp-instance-create";
        enum "i2rsagent-created-bgp-peer";
      }
      config false;
    }
    container bgp-policy-in {

    }
    container bgp-policy-out {

    }
    container peer-policy-in-pset {
      description "this is the variable the i2rs client reads to receive the full policy-
      set used for this bgp peers inbound policy.  the i2rs agent must
      to keep this policy variable in-sync with the i2rs peer-policy-in.";
      config false;
    }
    container peer-policy-out-pset {
      description "this is the variable the i2rs client reads to receive the full policy-
      set used for this bgp peers inbound policy.  the i2rs agent must
      to keep this policy variable in-sync with the i2rs peer- policy-out.";
      config false;
    }
    container peer-state-info {
      description "the  current state of the bgp peer in the bgp state machine.";
      leaf peer-current-state {
        type peer-state;
        config false;
      }
      leaf peer-last-state {
        description "the  last state of the bgp peer according to the bgp state machine.";
        type peer-state;
        config false;
      }
      
      container peer-down-reason {
        description "the error code and sub-error code of the last peer down.";   
        leaf error-code {
          type enumeration {
            enum message-header-error {
              value "1";
            }
            enum open-message-error {
              value "2";
            }
            enum update-message-error {
              value "3";
            }
            enum hold-timer-expired {
              value "4";
            }
            enum finite-state-machine-error {
              value "5";
            }
            enum cease {
              value "6";
            }
            enum route-refresh-error {
              value "7";
            }                 
          }
        }     
        container sub-error-code {
          choice sub-error-code-type {
            case head-error-sub-code{
              leaf head-error-sub-value {
                type enumeration {
                  enum connection-not-synchronized {
                    value "1";
                  }
                  enum bad-message-length {
                    value "2";
                  }
                  enum bad-message-type {
                    value "3";
                  }
                }
              }
            }
            case open-error-sub-code{
              leaf open-error-sub-value {
                type enumeration {
                  enum unsupported-version-number {
                    value "1";
                  }
                  enum bad-peer-as {
                    value "2";
                  }
                  enum bad-bgp-identifier {
                    value "3";
                  }
                  enum unsupported-optional-parameter {
                    value "4";
                  }
                  enum deprecated-see-appendix-a {
                    value "5";
                  }
                  enum unacceptable-hold-time {
                    value "6";
                  }
                }
              }
            }
            case update-error-sub-code{
              leaf update-error-sub-value {
                type enumeration {
                  enum malformed-attribute-list {
                    value "1";
                  }
                  enum unrecognized-well-known-attribute {
                    value "2";
                  }
                  enum missing-well-known-attribute {
                    value "3";
                  }
                  enum attribute-flags-error {
                    value "4";
                  }
                  enum attribute-length-error {
                    value "5";
                  }
                  enum invalid-origin-attribute {
                    value "6";
                  }
                  enum deprecated-see-appendix {
                    value "7";
                  }           
                  enum invalid-next-hop-attribute {
                    value "8";
                  }
                  enum optional-attribute-error {
                    value "9";
                  }
                  enum invalid-network-field {
                    value "10";
                  }
                  enum malformed-as-path {
                    value "11";
                  }                 
                }
              }
            }
            case route-refresh-error-sub-code{
              leaf route-refresh-error-sub-value {
                type enumeration {
                  enum invalid-message-length {
                    value "1";
                  }
                }
              }
            }
          }
        }
        config false;
      }
        
      leaf peer-received-update-cnt {
        description
          "the count of the received update packets..";
        type uint64;
        config false;
      }
      leaf peer-transmit-update-cnt {
        description
          "the count of the transmit update packets.";
        type uint64;
        config false;
      }  
      leaf peer-received-route-cnt {
        description
          "contains current total number of unique prefix routes received from peer.";
        type uint64;
        config false;
      }
      leaf peer-send-route-cnt {
        description
          "contains current total number prefix routes sent to peer.";
        type uint64;
        config false;
      }

      leaf max-prefix-rcv-limit {
        description
          "maximum unique prefix routes accepted from peer.";
        type uint64;
      }
      leaf max-prefix-xmt-limit {
        description
          "maximum unique prefix routes transmit to peer.";
        type uint64;
      }

      leaf peer-prefix-high {
        description
          "contains high water mark count of total unique routes by prefix received from peer.";
        type uint64;
        config false;
      }
      leaf peer-prefix-low {
        description
          "contains the low water mark count of total unique routes by prefix received from peer.";
        type uint64;
        config false;
      }
      leaf peer-perfix-ave {
         description
          "contains the average number of prefix routes from peer (running).";
        type uint64;
        config false;
      }
      leaf peer-prefix-time {
        type uint64;
        config false;
      }
      leaf peer-prefix-max {
        type uint64;
        config false;
      }
      leaf publish-version {
        type uint64;
        config false;
      }
    }
  }//end of "container bgp-peer-list"  

  
  grouping bgp-mvpn-rib {
    uses bgp-route-common;
    
    choice bgp-mvpn-route-type { 
      case INTRA_AS_I_PMSI_AD {
        list intra-as-i-pmsi-ad-route{
          key "route-type route-distinguisher origin-router-ip-addr";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case INTER_AS_I_PMSI_AD {
        list inter_as_i_pmsi_as_route {
          key "route-type route-distinguisher source-as";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf source-as{
            type inet:as-number;
          }
        }
      }
      case S_PMSI_AD {
        list s-pmsi-ad-route {
          key "route-type route-distinguisher multicast-source 
           multicast-group origin-router-ip-addr";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case LEAF_AD{
        list leaf-ad-route {
          key "route-type route-key origin-router-ip-addr";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-key{
            type binary; 
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case SOURCE_ACTIVE_AD {
        list source-active-ad-route {
          key "route-type route-distinguisher 
            multicast-source multicast-group";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }
      case SHARED_TREE_JOIN {
        list shared-tree-join-route {
          key "route-type route-distinguisher source-as 
            multicast-source multicast-group";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf source-as{
            type inet:as-number;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }
      case SOURCE_TREE_JOIN {
        list source-tree-join-route {
          key "route-type route-distinguisher source-as 
            multicast-source multicast-group";
        
          leaf route-type{
            type mvpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf source-as{
            type inet:as-number;
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
        }
      }
      
    }
  }  

  grouping bgp-mcast-vpls-rib {
    uses bgp-route-common;
    
    choice bgp-mcast-vpls-route-type { 
      case SELECTIVE_TREE_AD_ROUTE {
        list selective-tree-ad-route{
          key "route-type route-distinguisher multicast-source 
           multicast-group origin-router-ip-addr";
        
          leaf route-type{
            type mcast-vpls-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf multicast-source{
            type inet:ip-prefix;
          }
          leaf multicast-group{
            type inet:ip-prefix;
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case LEAF_AD {
        list leaf-ad-route {
          key "route-type route-key origin-router-ip-addr";
        
          leaf route-type{
            type mcast-vpls-route-type;
          }
          leaf route-key{
            type binary; 
          }
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
    
    }
  }

  grouping bgp-evpn-rib {
    uses bgp-route-common;
    
    choice bgp-evpn-route-type { 
      case EVPN_AD_ROUTE {
        list evpn-ad-route{
          key "route-type route-distinguisher esi eth-tag-id";
        
          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
        }
      }
      case EVPN_MAC_ROUTE {
        list evpn-mac-route {
          key "route-type route-distinguisher esi eth-tag-id 
          mac-length mac-address ip-address-length ip-address";
        
          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
          leaf mac-length {
            type uint8 {
              range "48";
            }
          }
          leaf mac-address {
            type yang:mac-address;
          }          
          leaf ip-address-length {
            type uint8 {
              range "0..32";
            }
          }
          leaf ip-address {
            type inet:ip-address;
          }
          leaf label1{
            type uint32 {
            	range "16..1048574";
            }
          }                                                  
          leaf label2{
            type uint32 {
            	range "16..1048574";
            }
          }  
        }
      }
      case EVPN_INC_MCAST_TREE {
        list evpn-inc-mcast-tree-route {
          key "route-type route-distinguisher eth-tag-id 
           ip-address-length origin-router-ip-addr";
        
          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }
          leaf eth-tag-id {
            type uint32 {
              range "1..4294967295";
            }
          }
          leaf ip-address-length {
            type uint8; //4 or 16 octets
          }          
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
      case EVPN_ETH_SEGMENT_ROUTE{
        list evpn-eth-segment-route {
          key "route-type route-distinguisher esi 
          ip-address-length origin-router-ip-addr";
        
          leaf route-type{
            type evpn-route-type;
          }
          leaf route-distinguisher{
            type route-distinguisher-def; 
          }          
          leaf esi{
            type string{
              length "24";
              pattern "(^00([0-9a-fA-F]){2}\.(([0-9a-fA-F]){4}\.){3}
              (([0-9a-fA-F]){4})$)";
            }
          }
          leaf ip-address-length {
            type uint8; //4 or 16 octets
          }           
          leaf origin-router-ip-addr{
            type inet:ip-prefix;
          }
        }
      }
    }
  }  
  
  container bgp-protocol {
    leaf router-id {
      type inet:ip-address;
    }
    leaf as-number {
      type uint32;
    }
    
    leaf protocol-status {
      description
        "administartive status of bgp protocol.";
      type enumeration {
         enum "unknown";
         enum "up";
         enum "down";
      }
      config false;
    }
    
    leaf shutdown-protocol {
      type boolean;
    }
    
    leaf bgp-role {
      type enumeration {
         enum "asbr";
         enum "pe";
         enum "ibgp";
         enum "rr";
      }
      config false;
    }
    
    container bgp-ipv4-uni-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    container bgp-labeled-ipv4-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length mpls-label";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length mpls-label";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length mpls-label";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    
    container bgp-ipv4-multi-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }    

    container bgp-vpnv4-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length route-distinguisher";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length route-distinguisher";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length route-distinguisher";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    
    


    list bgp-ipv4-l3vpn-instance-list {
      key "bgp-l3vpn-instance-name"; 
      leaf bgp-l3vpn-instance-name {
        type string;
      }
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv4-route ipv4-prefix-length";
          leaf ipv4-route{
            type inet:ipv4-prefix;
          }
          leaf ipv4-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv4-route ipv4-prefix-length";
            leaf ipv4-route{
              type inet:ipv4-prefix;
            }
            leaf ipv4-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    /*ipv6*/
    container bgp-ipv6-uni-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
           }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    container bgp-labeled-ipv6-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length mpls-label";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length mpls-label";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length mpls-label";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    
    container bgp-ipv6-multi-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }    

    container bgp-vpnv6-instance {
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length route-distinguisher";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          leaf mpls-label{
            type mpls-label-def;
          }
          leaf route-distinguisher{
            type route-distinguisher-def;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length route-distinguisher";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length route-distinguisher";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            leaf mpls-label{
              type mpls-label-def;
            }
            leaf route-distinguisher{
              type route-distinguisher-def;
            }
            uses bgp-route-common;
          }
        }
      }
    }
    


    list bgp-ipv6-l3vpn-instance-list {
      key "bgp-l3vpn-instance-name"; 
      leaf bgp-l3vpn-instance-name {
        type string;
      }
      uses bgp-instance-commom;
      container bgp-local-rib{
        list bgp-route-list{
          key "ipv6-route ipv6-prefix-length";
          leaf ipv6-route{
            type inet:ipv6-prefix;
          }
          leaf ipv6-prefix-length{
            type uint8;
          }
          uses bgp-route-common;
        }
      }
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        container bgp-rib-in{
          list bgp-rib-in-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
        container bgp-rib-out{
          list bgp-rib-out-list{
            key "ipv6-route ipv6-prefix-length";
            leaf ipv6-route{
              type inet:ipv6-prefix;
            }
            leaf ipv6-prefix-length{
              type uint8;
            }
            uses bgp-route-common;
          }
        }
      }
    }

    container bgp-ipv4-mvpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mvpn-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        
        container bgp-rib-in{
            uses bgp-mvpn-rib;
        }
        container bgp-rib-out{
            uses bgp-mvpn-rib;
        }
      }
    }
    
    container bgp-ipv6-mvpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mvpn-rib;
      }
      
      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv6-address{
            type inet:ipv6-prefix;
          }
          leaf remote-ipv6-address{
            type inet:ipv6-prefix;
          }
        }
        uses bgp-peer-common;
        
        container bgp-rib-in{
            uses bgp-mvpn-rib;
        }
        container bgp-rib-out{
            uses bgp-mvpn-rib;
        }
      }
    }
    
    container bgp-mcast-vpls-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-mcast-vpls-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        
        container bgp-rib-in{
            uses bgp-mcast-vpls-rib;
        }
        container bgp-rib-out{
            uses bgp-mcast-vpls-rib;
        }
      }
    }

    container bgp-evpn-instance {
      uses bgp-instance-commom;

      container bgp-local-rib{
        uses bgp-evpn-rib;
      }

      list bgp-peer-list{
        key "bgp-peer-name";
        container peer-session-address{
          leaf local-ipv4-address{
            type inet:ipv4-prefix;
          }
          leaf remote-ipv4-address{
            type inet:ipv4-prefix;
          }
        }
        uses bgp-peer-common;
        
        container bgp-rib-in{
            uses bgp-evpn-rib;
        }
        container bgp-rib-out{
            uses bgp-evpn-rib;
        }
      }
    }

       
  }//end of "container bgp-protocol"

}
//<code ends>

		  	 

5. IANA Considerations

This draft includes no request to IANA.

6. Security Considerations

TBD.

7. Informative References

[I-D.hares-i2rs-bnp-info-model] Hares, S. and Q. Wu, "An Information Model for Basic Network Policy", Internet-Draft draft-hares-i2rs-bnp-info-model-00, September 2014.
[I-D.ietf-i2rs-architecture] Atlas, A., Halpern, J., Hares, S., Ward, D. and T. Nadeau, "An Architecture for the Interface to the Routing System", Internet-Draft draft-ietf-i2rs-architecture-05, July 2014.
[I-D.ietf-i2rs-rib-info-model] Bahadur, N., Folkes, R., Kini, S. and J. Medved, "Routing Information Base Info Model", Internet-Draft draft-ietf-i2rs-rib-info-model-03, May 2014.
[I-D.ietf-netconf-restconf] Bierman, A., Bjorklund, M. and K. Watsen, "RESTCONF Protocol", Internet-Draft draft-ietf-netconf-restconf-02, October 2014.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3060] Moore, B., Ellesson, E., Strassner, J. and A. Westerinen, "Policy Core Information Model -- Version 1 Specification", RFC 3060, February 2001.
[RFC3460] Moore, B., "Policy Core Information Model (PCIM) Extensions", RFC 3460, January 2003.
[RFC3644] Snir, Y., Ramberg, Y., Strassner, J., Cohen, R. and B. Moore, "Policy Quality of Service (QoS) Information Model", RFC 3644, November 2003.
[RFC5394] Bryskin, I., Papadimitriou, D., Berger, L. and J. Ash, "Policy-Enabled Path Computation Framework", RFC 5394, December 2008.
[RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax Used to Form Encoding Rules in Various Routing Protocol Specifications", RFC 5511, April 2009.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration Protocol (NETCONF) Access Control Model", RFC 6536, March 2012.

Authors' Addresses

Lixing Wang Huawei Beijing, PRC EMail: wanglixing@huawei.com
Susan Hares Huawei 7453 Hickory Hill Saline, MI 48176 USA EMail: shares@ndzh.com
Shunwan Zhuang Huawei Beijing, PRC EMail: Zhuangshunwan@huawei.com