/* autogenerated by embedmodel.py.  DO NOT EDIT */

#include <zebra.h>
#include "yang.h"

static const char model[] =
	"// SPDX-License-Identifier: BSD-2-Clause\n"
	"submodule frr-bgp-common-structure {\n"
	"  yang-version 1.1;\n"
	"\n"
	"  belongs-to frr-bgp {\n"
	"    prefix \"bgp\";\n"
	"  }\n"
	"\n"
	"  import ietf-inet-types {\n"
	"    prefix inet;\n"
	"  }\n"
	"\n"
	"  import frr-route-map {\n"
	"    prefix frr-route-map;\n"
	"  }\n"
	"\n"
	"  import frr-interface {\n"
	"    prefix frr-interface;\n"
	"  }\n"
	"\n"
	"  import ietf-bgp-types {\n"
	"    prefix bt;\n"
	"  }\n"
	"\n"
	"  import frr-bgp-types {\n"
	"    prefix frr-bt;\n"
	"  }\n"
	"\n"
	"  include \"frr-bgp-common\";\n"
	"\n"
	"  organization\n"
	"    \"FRRouting\";\n"
	"  contact\n"
	"    \"FRR Users List: <mailto:frog@lists.frrouting.org> FRR Development\n"
	"     List: <mailto:dev@lists.frrouting.org>\";\n"
	"  description\n"
	"    \"This submodule contains general data definitions for use in BGP.\n"
	"\n"
	"     Copyright 2020 FRRouting\n"
	"\n"
	"     Redistribution and use in source and binary forms, with or without\n"
	"     modification, are permitted provided that the following conditions\n"
	"     are met:\n"
	"\n"
	"     1. Redistributions of source code must retain the above copyright notice,\n"
	"     this list of conditions and the following disclaimer.\n"
	"\n"
	"     2. Redistributions in binary form must reproduce the above copyright\n"
	"     notice, this list of conditions and the following disclaimer in the\n"
	"     documentation and/or other materials provided with the distribution.\n"
	"\n"
	"     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n"
	"     \\\"AS IS\\\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n"
	"     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n"
	"     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n"
	"     HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n"
	"     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n"
	"     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n"
	"     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n"
	"     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n"
	"     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n"
	"     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\";\n"
	"\n"
	"  revision 2019-12-03 {\n"
	"    description\n"
	"      \"Initial revision.\";\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-ebgp-multihop {\n"
	"    description\n"
	"      \"Structural grouping used to include EBGP multi-hop\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container ebgp-multihop {\n"
	"      description\n"
	"        \"EBGP multi-hop parameters for the BGP group.\";\n"
	"      choice hop-count-choice {\n"
	"        case default-hop-count {\n"
	"          leaf enabled {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"When enabled the referenced group or neighbors are\n"
	"               permitted to be indirectly connected - including cases\n"
	"               where the TTL can be decremented between the BGP peers.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case max-hop-count {\n"
	"          leaf multihop-ttl {\n"
	"            type uint8 {\n"
	"              range \"1..255\";\n"
	"            }\n"
	"            description\n"
	"              \"Time-to-live value to use when packets are sent to the\n"
	"               referenced group or neighbors and ebgp-multihop is\n"
	"               enabled.\";\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"\n"
	"      leaf disable-connected-check {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' it enforces EBGP neighbors perform multihop.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping neighbor-local-as-options {\n"
	"    container local-as {\n"
	"      leaf local-as {\n"
	"        type inet:as-number;\n"
	"        description\n"
	"          \"The local autonomous system number that is to be used when\n"
	"           establishing sessions with the remote peer or peer group, if\n"
	"           this differs from the global BGP router autonomous system\n"
	"           number.\";\n"
	"      }\n"
	"\n"
	"      leaf no-prepend {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Do not prepend local-as to updates from EBGP peers. When\n"
	"           set to \'true\' it will not prepend local-as to updates. When\n"
	"           set to \'false\' it will prepend local-as to updates.\";\n"
	"      }\n"
	"\n"
	"      leaf replace-as {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Do not prepend local-as to updates from IBGP peers.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping neighbor-bfd-options {\n"
	"    container bfd-options {\n"
	"      leaf enable {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"BFD support.\";\n"
	"      }\n"
	"\n"
	"      leaf detect-multiplier {\n"
	"        when \"../enable = \'true\'\";\n"
	"        type uint8 {\n"
	"          range \"2..255\";\n"
	"        }\n"
	"        default \"3\";\n"
	"        description\n"
	"          \"Detect multiplier.\";\n"
	"      }\n"
	"\n"
	"      leaf required-min-rx {\n"
	"        when \"../enable = \'true\'\";\n"
	"        type uint16 {\n"
	"          range \"50..60000\";\n"
	"        }\n"
	"        units \"milliseconds\";\n"
	"        default \"300\";\n"
	"        description\n"
	"          \"Required min receive interval.\";\n"
	"      }\n"
	"\n"
	"      leaf desired-min-tx {\n"
	"        when \"../enable = \'true\'\";\n"
	"        type uint16 {\n"
	"          range \"50..60000\";\n"
	"        }\n"
	"        units \"milliseconds\";\n"
	"        default \"300\";\n"
	"        description\n"
	"          \"Desired min transmit interval.\";\n"
	"      }\n"
	"\n"
	"      leaf session-type {\n"
	"        when \"../enable = \'true\'\";\n"
	"        type frr-bt:bfd-session-type;\n"
	"        default \"not-configured\";\n"
	"        description\n"
	"          \"BFD session type.\";\n"
	"      }\n"
	"\n"
	"      leaf check-cp-failure {\n"
	"        when \"../enable = \'true\'\";\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Link dataplane status with BGP control plane.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping neighbor-remote-as {\n"
	"    container neighbor-remote-as {\n"
	"      leaf remote-as-type {\n"
	"        type frr-bt:as-type;\n"
	"        description\n"
	"          \"Remote AS type.\";\n"
	"      }\n"
	"\n"
	"      leaf remote-as {\n"
	"        when \"../remote-as-type = \'as-specified\'\";\n"
	"        type inet:as-number;\n"
	"        description\n"
	"          \"The remote autonomous system number received in\n"
	"           the BGP OPEN message.\";\n"
	"        reference\n"
	"          \"RFC 4271\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping neighbor-update-source {\n"
	"    description\n"
	"      \"Source of routing updates.\";\n"
	"    container update-source {\n"
	"      description\n"
	"        \"Source of routing updates config.\";\n"
	"      choice source {\n"
	"        case ip-based {\n"
	"          leaf ip {\n"
	"            type inet:ip-address;\n"
	"            description\n"
	"              \"IPv4 address/IPv6 address.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case interface-based {\n"
	"          leaf interface {\n"
	"            type frr-interface:interface-ref {\n"
	"              require-instance false;\n"
	"            }\n"
	"            description\n"
	"              \"The local interface.\";\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-add-paths {\n"
	"    description\n"
	"      \"Structural grouping used to include ADD-PATHs configuration\n"
	"       and state for both BGP neighbors and peer groups.\";\n"
	"    container add-paths {\n"
	"      description\n"
	"        \"Parameters relating to the advertisement and receipt of\n"
	"         multiple paths for a single NLRI (add-paths).\";\n"
	"      reference\n"
	"        \"RFC 7911: ADD-PATH.\";\n"
	"      leaf path-type {\n"
	"        type frr-bt:add-path-type;\n"
	"        default \"none\";\n"
	"        description\n"
	"          \"Enable ability to receive multiple path advertisements for\n"
	"           an NLRI from the neighbor or group.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-as-path-options {\n"
	"    description\n"
	"      \"Structural grouping used to include AS_PATH manipulation\n"
	"       configuration both BGP neighbors and peer groups.\";\n"
	"    container as-path-options {\n"
	"      description\n"
	"        \"AS_PATH manipulation parameters for the BGP neighbor or\n"
	"         group.\";\n"
	"      choice allowas-in {\n"
	"        case occurence-based {\n"
	"          leaf allow-own-as {\n"
	"            type uint8 {\n"
	"              range \"1..10\";\n"
	"            }\n"
	"            description\n"
	"              \"Specify the number of occurrences of the local BGP\n"
	"               speaker\'s AS that can occur within the AS_PATH before it\n"
	"               is rejected.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case origin-based {\n"
	"          leaf allow-own-origin-as {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"When set to \'true\' only accept my AS in the as-path\n"
	"               if the route was originated in my AS.\";\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"\n"
	"      leaf replace-peer-as {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Replace occurrences of the peer\'s AS in the AS_PATH with\n"
	"           the local autonomous system number. This is same as override\n"
	"           ASN CLI.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-capability-options {\n"
	"    description\n"
	"      \"Structural grouping used to include capability\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container capability-options {\n"
	"      description\n"
	"        \"Capability manipulation parameters for the BGP neighbor or\n"
	"         group.\";\n"
	"      leaf dynamic-capability {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' dynamic capability is advertise to this peer.\";\n"
	"      }\n"
	"\n"
	"      leaf strict-capability {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Strict capability negotiation match. When set to \'true\'\n"
	"           remote and local capabilities are strictly compared\n"
	"           if capabilities are different, send Unsupported Capability\n"
	"           error then reset connection.\";\n"
	"      }\n"
	"\n"
	"      leaf extended-nexthop-capability {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' extended next-hop capability is advertise\n"
	"           to this peer.\";\n"
	"      }\n"
	"\n"
	"      leaf capability-negotiate {\n"
	"        type boolean;\n"
	"        default \"true\";\n"
	"        description\n"
	"          \"When set to \'true\' sending Capability Negotiation in the open\n"
	"           message is suppressed to this peer.\";\n"
	"      }\n"
	"\n"
	"      leaf override-capability {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Overrides the result of Capability Negotiation, ignoring remote\n"
	"           peer\'s capability value, when set to \'true\'.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-default-originate-options {\n"
	"    description\n"
	"      \"Structural grouping used to include default-originate\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container default-originate {\n"
	"      description\n"
	"        \"default originate parameters for the BGP neighbor or\n"
	"         group.\";\n"
	"      leaf originate {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"If set to \'true\', send the default-route to the neighbour(s).\";\n"
	"      }\n"
	"\n"
	"      leaf route-map {\n"
	"        type frr-route-map:route-map-ref;\n"
	"        description\n"
	"          \"Route-map to specify criteria to originate default.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-prefix-limit {\n"
	"    container prefix-limit {\n"
	"      description\n"
	"        \"Parameters relating to the prefix limit for the AFI-SAFI.\";\n"
	"      list direction-list {\n"
	"        key \"direction\";\n"
	"        leaf direction {\n"
	"          type frr-bt:direction;\n"
	"          description\n"
	"            \"Prefix limit applied on Tx route-updates or Rx route-updates.\";\n"
	"        }\n"
	"\n"
	"        leaf max-prefixes {\n"
	"          type uint32;\n"
	"          mandatory true;\n"
	"          description\n"
	"            \"Maximum number of prefixes that will be accepted from the\n"
	"             neighbour.\";\n"
	"        }\n"
	"\n"
	"        leaf force-check {\n"
	"          type boolean;\n"
	"          default false;\n"
	"          description\n"
	"            \"Force check all received routes.\";\n"
	"        }\n"
	"\n"
	"        container options {\n"
	"          when \"../direction = \'in\'\";\n"
	"          choice options {\n"
	"            case warning {\n"
	"              leaf warning-only {\n"
	"                type boolean;\n"
	"                default \"false\";\n"
	"                description\n"
	"                  \"When set to \'true\' only give warning message when limit\n"
	"                   is exceeded.\";\n"
	"              }\n"
	"            }\n"
	"\n"
	"            case restart {\n"
	"              leaf restart-timer {\n"
	"                type uint16;\n"
	"                units \"minutes\";\n"
	"                description\n"
	"                  \"Time interval in seconds after which the BGP session is\n"
	"                   re-established after being torn down due to exceeding the\n"
	"                   max-prefix limit.\";\n"
	"              }\n"
	"            }\n"
	"\n"
	"            case threshold {\n"
	"              leaf shutdown-threshold-pct {\n"
	"                type bt:percentage;\n"
	"                description\n"
	"                  \"Threshold on number of prefixes that can be received from\n"
	"                   a neighbour before generation of warning messages or log\n"
	"                   entries. Expressed as a percentage of max-prefixes.\";\n"
	"              }\n"
	"            }\n"
	"\n"
	"            case threshold-restart {\n"
	"              leaf tr-shutdown-threshold-pct {\n"
	"                type bt:percentage;\n"
	"                description\n"
	"                  \"Threshold on number of prefixes that can be received from\n"
	"                   a neighbour before generation of warning messages or log\n"
	"                   entries. Expressed as a percentage of max-prefixes.\";\n"
	"              }\n"
	"\n"
	"              leaf tr-restart-timer {\n"
	"                type uint16;\n"
	"                units \"minutes\";\n"
	"                description\n"
	"                  \"Time interval in seconds after which the BGP session is\n"
	"                   re-established after being torn down due to exceeding the\n"
	"                   max-prefix limit.\";\n"
	"              }\n"
	"            }\n"
	"\n"
	"            case threshold-warning {\n"
	"              leaf tw-shutdown-threshold-pct {\n"
	"                type bt:percentage;\n"
	"                description\n"
	"                  \"Threshold on number of prefixes that can be received from\n"
	"                   a neighbour before generation of warning messages or log\n"
	"                   entries. Expressed as a percentage of max-prefixes.\";\n"
	"              }\n"
	"\n"
	"              leaf tw-warning-only {\n"
	"                type boolean;\n"
	"                default \"false\";\n"
	"                description\n"
	"                  \"When set to \'true\' only give warning message when limit\n"
	"                   is exceeded.\";\n"
	"              }\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-nexthop-self {\n"
	"    container nexthop-self {\n"
	"      description\n"
	"        \"Parameters relating to the nexthop-self for the AFI-SAFI.\";\n"
	"      leaf next-hop-self {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', EBGP learned routes are announced with the\n"
	"           local speaker\'s nexthop.\";\n"
	"      }\n"
	"\n"
	"      leaf next-hop-self-force {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', EBGP learned routes are announced with the\n"
	"           local speaker\'s nexthop.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-private-as {\n"
	"    container private-as {\n"
	"      description\n"
	"        \"Parameters relating to the private-as for the AFI-SAFI.\";\n"
	"      leaf remove-private-as-all {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', private ASNs are removed from outbound updates;\n"
	"           applies to all AS numbers.\";\n"
	"      }\n"
	"\n"
	"      leaf remove-private-as-all-replace {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', private ASNs are replaced by the local\n"
	"           speaker\'s ASN in all outbound updates; applies to all AS numbers.\";\n"
	"      }\n"
	"\n"
	"      leaf remove-private-as {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', removes private ASNs in outbound updates;\n"
	"           applies to all AS numbers.\";\n"
	"      }\n"
	"\n"
	"      leaf remove-private-as-replace {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\', private ASNs are replaced with the local\n"
	"           speaker\'s ASN in all outbound updates; applies to all AS numbers.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-weight {\n"
	"    container weight {\n"
	"      description\n"
	"        \"Parameters relating to the weight for the AFI-SAFI.\";\n"
	"      leaf weight-attribute {\n"
	"        type uint16 {\n"
	"          range \"0..65535\";\n"
	"        }\n"
	"        description\n"
	"          \"Set default weight for routes from this neighbor.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-route-reflector {\n"
	"    container route-reflector {\n"
	"      description\n"
	"        \"Parameters relating to the route-reflector for the AFI-SAFI.\";\n"
	"      leaf route-reflector-client {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Configure a neighbor as route reflector client.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-route-server {\n"
	"    container route-server {\n"
	"      description\n"
	"        \"Parameters relating to the route-server for the AFI-SAFI.\";\n"
	"      leaf route-server-client {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"Configure a neighbor as route server client.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-send-community {\n"
	"    container send-community {\n"
	"      description\n"
	"        \"Parameters relating to the send-community for the AFI-SAFI.\";\n"
	"      leaf send-community {\n"
	"        type boolean;\n"
	"        default \"true\";\n"
	"        description\n"
	"          \"Send standard community attribute to this neighbor.\";\n"
	"      }\n"
	"\n"
	"      leaf send-ext-community {\n"
	"        type boolean;\n"
	"        default \"true\";\n"
	"        description\n"
	"          \"Send extended community attribute to this neighbor.\";\n"
	"      }\n"
	"\n"
	"      leaf send-large-community {\n"
	"        type boolean;\n"
	"        default \"true\";\n"
	"        description\n"
	"          \"Send large community attribute to this neighbor.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-admin-shutdown {\n"
	"    description\n"
	"      \"Structural grouping used to include admin-shutdown\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container admin-shutdown {\n"
	"      description\n"
	"        \"BGP Administrative Shutdown Communication.\";\n"
	"      leaf enable {\n"
	"        type boolean;\n"
	"        description\n"
	"          \"When set to \'true\', BGP shutdown communication is enabled.\";\n"
	"      }\n"
	"\n"
	"      leaf message {\n"
	"        type string;\n"
	"        description\n"
	"          \"Shutdown message.\";\n"
	"        reference\n"
	"          \"draft-ietf-idr-shutdown-06\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-graceful-restart {\n"
	"    description\n"
	"      \"Structural grouping used to include graceful-restart\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container graceful-restart {\n"
	"      description\n"
	"        \"BGP Graceful restart feature.\";\n"
	"      choice mode {\n"
	"        case graceful-restart-mode {\n"
	"          leaf enable {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"Enable or disable the graceful-restart capability.\n"
	"               Setting this value to \'true\' enables the graceful-restart\n"
	"               and helper both at peer level. Setting this value to \'false\'\n"
	"               disables graceful restart and helper mode. The peer will inherit\n"
	"               global configuration.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case graceful-restart-helper-mode {\n"
	"          leaf graceful-restart-helper {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"Setting this value to \'true\' enables helper mode for the peer\n"
	"               Setting this value to \'false\' disables the helper mode. The\n"
	"               peer will inherit global configuration.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case graceful-restart-disable-mode {\n"
	"          leaf graceful-restart-disable {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"Setting this value to \'true\' disables the graceful-restart\n"
	"               and helper Mode. Setting this value to \'false\' causes the peer\n"
	"               to inherit global configuration.\";\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-soft-reconfiguration {\n"
	"    description\n"
	"      \"Structural grouping used to include soft-reconfiguration\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    leaf soft-reconfiguration {\n"
	"      type boolean;\n"
	"      default \"false\";\n"
	"      description\n"
	"        \"Allow inbound soft reconfiguration for this neighbor.\";\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-attr-unchanged {\n"
	"    description\n"
	"      \"Structural grouping used to include BGP route propagation\n"
	"       rules configuration for both BGP neighbors and peer groups.\";\n"
	"    container attr-unchanged {\n"
	"      description\n"
	"        \"BGP route propagation rules configuration.\";\n"
	"      leaf as-path-unchanged {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' as-path attribute is propagated unchanged.\";\n"
	"      }\n"
	"\n"
	"      leaf next-hop-unchanged {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' next-hop attribute is propagated unchanged.\";\n"
	"      }\n"
	"\n"
	"      leaf med-unchanged {\n"
	"        type boolean;\n"
	"        default \"false\";\n"
	"        description\n"
	"          \"When set to \'true\' med attribute is propagated unchanged.\";\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-orf-capability {\n"
	"    description\n"
	"      \"Structural grouping used to include orf\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container orf-capability {\n"
	"      choice orf-update {\n"
	"        case send {\n"
	"          leaf orf-send {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"Setting to \'true\' advertises the ORF capability.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case receive {\n"
	"          leaf orf-receive {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"When set to \'true\' it receives the orf capability.\";\n"
	"          }\n"
	"        }\n"
	"\n"
	"        case both {\n"
	"          leaf orf-both {\n"
	"            type boolean;\n"
	"            default \"false\";\n"
	"            description\n"
	"              \"When set to \'true\' it advertises/receives the orf capability.\";\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-config-timers {\n"
	"    description\n"
	"      \"Structural grouping used to include per neighbor timers\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container timers {\n"
	"      leaf advertise-interval {\n"
	"        type uint16 {\n"
	"          range \"0..600\";\n"
	"        }\n"
	"        units \"seconds\";\n"
	"        description\n"
	"          \"Minimum interval between sending BGP routing updates.\";\n"
	"      }\n"
	"\n"
	"      leaf connect-time {\n"
	"        type uint16 {\n"
	"          range \"1..65535\";\n"
	"        }\n"
	"        units \"seconds\";\n"
	"        description\n"
	"          \"BGP connect timer.\";\n"
	"      }\n"
	"\n"
	"      uses neighbor-timers;\n"
	"    }\n"
	"  }\n"
	"\n"
	"  grouping structure-neighbor-group-filter-config {\n"
	"    description\n"
	"      \"Structural grouping used to include filter\n"
	"       configuration for both BGP neighbors and peer groups.\";\n"
	"    container filter-config {\n"
	"      description\n"
	"        \"BGP Policy configuration for both BGP neighbors and groups.\";\n"
	"      uses rmap-policy-import;\n"
	"\n"
	"      uses rmap-policy-export;\n"
	"\n"
	"      uses plist-policy-import;\n"
	"\n"
	"      uses plist-policy-export;\n"
	"\n"
	"      uses access-list-policy-import;\n"
	"\n"
	"      uses access-list-policy-export;\n"
	"\n"
	"      uses as-path-filter-list-policy-import;\n"
	"\n"
	"      uses as-path-filter-list-policy-export;\n"
	"\n"
	"      uses unsuppress-map-policy-import;\n"
	"\n"
	"      uses unsuppress-map-policy-export;\n"
	"    }\n"
	"  }\n"
	"}\n"
	"";

static struct yang_module_embed embed = {
	.mod_name = "frr-bgp",
	.mod_rev = "",
	.sub_mod_name = "frr-bgp-common-structure",
	.sub_mod_rev = "2019-12-03",
	.data = model,
	.format = LYS_IN_YANG,
};

static void embed_register(void) __attribute__((_CONSTRUCTOR(2000)));
static void embed_register(void)
{
	yang_module_embed(&embed);
}
