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

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

static const char model[] =
	"module ietf-bgp-types {\n"
	"  yang-version \"1.1\";\n"
	"  namespace \"urn:ietf:params:xml:ns:yang:ietf-bgp-types\";\n"
	"\n"
	"  prefix \"bt\";\n"
	"\n"
	"  import ietf-inet-types {\n"
	"    prefix inet;\n"
	"  }\n"
	"\n"
	"  // meta\n"
	"  organization\n"
	"    \"IETF IDR Working Group\";\n"
	"\n"
	"  contact\n"
	"    \"WG Web:   <http://tools.ietf.org/wg/idr>\n"
	"     WG List:  <idr@ietf.org>\n"
	"\n"
	"     Authors: Mahesh Jethanandani (mjethanandani at gmail.com),\n"
	"              Keyur Patel (keyur at arrcus.com),\n"
	"              Susan Hares (shares at ndzh.com),\n"
	"              Jeffrey Haas (jhaas at pfrc.org).\";\n"
	"  description\n"
	"    \"This module contains general data definitions for use in BGP\n"
	"     policy. It can be imported by modules that make use of BGP\n"
	"     attributes\";\n"
	"\n"
	"  revision 2019-10-03 {\n"
	"    description\n"
	"      \"Initial Version\";\n"
	"    reference\n"
	"      \"RFC XXX, BGP Model for Service Provider Network.\";\n"
	"  }\n"
	"\n"
	"  identity bgp-capability {\n"
	"    description \"Base identity for a BGP capability\";\n"
	"  }\n"
	"\n"
	"  identity mp-bgp {\n"
	"    base bgp-capability;\n"
	"    description\n"
	"      \"Multi-protocol extensions to BGP\";\n"
	"    reference\n"
	"      \"RFC 4760\";\n"
	"  }\n"
	"\n"
	"  identity route-refresh {\n"
	"    base bgp-capability;\n"
	"    description\n"
	"      \"The BGP route-refresh functionality\";\n"
	"    reference\n"
	"      \"RFC2918\";\n"
	"  }\n"
	"\n"
	"  identity asn32 {\n"
	"    base bgp-capability;\n"
	"    description\n"
	"      \"4-byte (32-bit) AS number functionality\";\n"
	"    reference\n"
	"      \"RFC6793\";\n"
	"  }\n"
	"\n"
	"  identity graceful-restart {\n"
	"    base bgp-capability;\n"
	"    description\n"
	"      \"Graceful restart functionality\";\n"
	"    reference\n"
	"      \"RFC4724\";\n"
	"  }\n"
	"\n"
	"  identity add-paths {\n"
	"    base bgp-capability;\n"
	"    description\n"
	"      \"BGP add-paths\";\n"
	"    reference\n"
	"      \"RFC 7911.\";\n"
	"  }\n"
	"\n"
	"  identity afi-safi-type {\n"
	"    description\n"
	"      \"Base identity type for AFI,SAFI tuples for BGP-4\";\n"
	"    reference\n"
	"      \"RFC4760 - multi-protocol extensions for BGP-4\";\n"
	"  }\n"
	"\n"
	"  identity ipv4-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"IPv4 unicast (AFI,SAFI = 1,1)\";\n"
	"    reference\n"
	"      \"RFC4760\";\n"
	"  }\n"
	"\n"
	"  identity ipv6-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"IPv6 unicast (AFI,SAFI = 2,1)\";\n"
	"    reference\n"
	"      \"RFC4760\";\n"
	"  }\n"
	"\n"
	"  identity ipv4-labeled-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Labeled IPv4 unicast (AFI,SAFI = 1,4)\";\n"
	"    reference\n"
	"      \"RFC3107\";\n"
	"  }\n"
	"\n"
	"  identity ipv6-labeled-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Labeled IPv6 unicast (AFI,SAFI = 2,4)\";\n"
	"    reference\n"
	"      \"RFC3107\";\n"
	"  }\n"
	"\n"
	"  identity l3vpn-ipv4-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)\";\n"
	"    reference\n"
	"      \"RFC4364\";\n"
	"  }\n"
	"\n"
	"  identity l3vpn-ipv6-unicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)\";\n"
	"    reference\n"
	"      \"RFC4659\";\n"
	"  }\n"
	"\n"
	"  identity l3vpn-ipv4-multicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)\";\n"
	"    reference\n"
	"      \"RFC6514\";\n"
	"  }\n"
	"\n"
	"  identity l3vpn-ipv6-multicast {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)\";\n"
	"    reference\n"
	"      \"RFC6514\";\n"
	"  }\n"
	"\n"
	"  identity l2vpn-vpls {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"BGP-signalled VPLS (AFI,SAFI = 25,65)\";\n"
	"    reference\n"
	"      \"RFC4761\";\n"
	"  }\n"
	"\n"
	"  identity l2vpn-evpn {\n"
	"    base afi-safi-type;\n"
	"    description\n"
	"      \"BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)\";\n"
	"  }\n"
	"\n"
	"  identity bgp-well-known-std-community {\n"
	"    description\n"
	"      \"Base identity for reserved communities within the standard\n"
	"       community space defined by RFC1997. These communities must\n"
	"       fall within the range 0xFFFF0000 to 0xFFFFFFFF\";\n"
	"    reference\n"
	"      \"RFC 1997: BGP Communities Attribute.\";\n"
	"  }\n"
	"\n"
	"  identity no-export {\n"
	"    base bgp-well-known-std-community;\n"
	"    description\n"
	"      \"Do not export NLRI received carrying this community outside\n"
	"       the bounds of this autonomous system, or this confederation if\n"
	"       the local autonomous system is a confederation member AS. This\n"
	"       community has a value of 0xFFFFFF01.\";\n"
	"    reference\n"
	"      \"RFC 1997: BGP Communities Attribute.\";\n"
	"  }\n"
	"\n"
	"  identity no-advertise {\n"
	"    base bgp-well-known-std-community;\n"
	"    description\n"
	"      \"All NLRI received carrying this community must not be\n"
	"       advertised to other BGP peers. This community has a value of\n"
	"       0xFFFFFF02.\";\n"
	"    reference\n"
	"      \"RFC 1997: BGP Communities Attribute.\";\n"
	"  }\n"
	"\n"
	"  identity no-export-subconfed {\n"
	"    base bgp-well-known-std-community;\n"
	"    description\n"
	"      \"All NLRI received carrying this community must not be\n"
	"       advertised to external BGP peers - including over confederation\n"
	"       sub-AS boundaries. This community has a value of 0xFFFFFF03.\";\n"
	"    reference\n"
	"      \"RFC 1997: BGP Communities Attribute.\";\n"
	"  }\n"
	"\n"
	"  identity no-peer {\n"
	"    base bgp-well-known-std-community;\n"
	"    description\n"
	"      \"An autonomous system receiving NLRI tagged with this community\n"
	"       is advised not to re-advertise the NLRI to external bi-lateral\n"
	"       peer autonomous systems. An AS may also filter received NLRI\n"
	"       from bilateral peer sessions when they are tagged with this\n"
	"       community value\";\n"
	"    reference\n"
	"      \"RFC 3765: NOPEER Community for BGP.\";\n"
	"  }\n"
	"  identity as-path-segment-type {\n"
	"    description\n"
	"      \"Base AS Path Segment Type. In [BGP-4], the path segment type\n"
	"       is a 1-octet field with the following values defined.\";\n"
	"    reference\n"
	"      \"RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3.\";\n"
	"  }\n"
	"\n"
	"  identity as-set {\n"
	"    base as-path-segment-type;\n"
	"    description\n"
	"      \"Unordered set of autonomous systems that a route in the UPDATE\n"
	"       message has traversed.\";\n"
	"    reference\n"
	"      \"RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3.\";\n"
	"  }\n"
	"\n"
	"  identity as-sequence {\n"
	"    base as-path-segment-type;\n"
	"    description\n"
	"      \"Ordered set of autonomous systems that a route in the UPDATE\n"
	"       message has traversed.\";\n"
	"    reference\n"
	"      \"RFC 4271: A Border Gateway Protocol 4 (BGP-4), Section 4.3.\";\n"
	"  }\n"
	"\n"
	"  identity as-confed-sequence {\n"
	"    base as-path-segment-type;\n"
	"    description\n"
	"      \"Ordered set of Member Autonomous Systems in the local\n"
	"       confederation that the UPDATE message has traversed.\";\n"
	"    reference\n"
	"      \"RFC 5065, Autonomous System Configuration for BGP.\";\n"
	"  }\n"
	"\n"
	"  identity as-confed-set {\n"
	"    base as-path-segment-type;\n"
	"    description\n"
	"      \"Unordered set of Member Autonomous Systems in the local\n"
	"       confederation that the UPDATE message has traversed.\";\n"
	"    reference\n"
	"      \"RFC 5065, Autonomous System Configuration for BGP.\";\n"
	"  }\n"
	"\n"
	"  /*\n"
	"   * Features.\n"
	"   */\n"
	"  feature send-communities {\n"
	"    description\n"
	"      \"Enable the propogation of communities.\";\n"
	"  }\n"
	"\n"
	"  feature ttl-security {\n"
	"    description\n"
	"      \"BGP Time To Live (TTL) security check support.\";\n"
	"    reference\n"
	"      \"RFC 5082, The Generalized TTL Security Mechanism (GTSM)\";\n"
	"  }\n"
	"\n"
	"  feature bfd {\n"
	"    description\n"
	"      \"Support for BFD detection of BGP neighbor reachability.\";\n"
	"    reference\n"
	"      \"RFC 5880, Bidirectional Forward Detection (BFD),\n"
	"       RFC 5881, Bidirectional Forward Detection for IPv4 and IPv6\n"
	"                 (Single Hop).\n"
	"       RFC 5883, Bidirectional Forwarding Detection (BFD) for Multihop\n"
	"                 Paths\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-session-direction {\n"
	"    type enumeration {\n"
	"      enum INBOUND {\n"
	"        description\n"
	"          \"Refers to all NLRI received from the BGP peer\";\n"
	"      }\n"
	"      enum OUTBOUND {\n"
	"        description\n"
	"          \"Refers to all NLRI advertised to the BGP peer\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Type to describe the direction of NLRI transmission\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-well-known-community-type {\n"
	"    type identityref {\n"
	"      base bgp-well-known-std-community;\n"
	"    }\n"
	"    description\n"
	"      \"Type definition for well-known IETF community attribute\n"
	"       values\";\n"
	"    reference\n"
	"      \"IANA Border Gateway Protocol (BGP) Well Known Communities\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-std-community-type {\n"
	"    // TODO: further refine restrictions and allowed patterns\n"
	"    // 4-octet value:\n"
	"    //  <as number> 2 octets\n"
	"    //  <community value> 2 octets\n"
	"    type union {\n"
	"      type uint32 {\n"
	"      // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 -\n"
	"      // 0xFFFFFFFF are reserved\n"
	"        range \"65536..4294901759\"; // 0x00010000..0xFFFEFFFF\n"
	"      }\n"
	"      type string {\n"
	"        pattern \'([0-9]+:[0-9]+)\';\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Type definition for standard community attributes\";\n"
	"    reference\n"
	"      \"RFC 1997 - BGP Communities Attribute\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-ext-community-type {\n"
	"    // TODO: needs more work to make this more precise given the\n"
	"    // variability of extended community attribute specifications\n"
	"    // 8-octet value:\n"
	"    //  <type> 2 octets\n"
	"    //  <value> 6 octets\n"
	"\n"
	"    type union {\n"
	"      type string {\n"
	"        // Type 1: 2-octet global and 4-octet local\n"
	"        //         (AS number)        (Integer)\n"
	"        pattern \'(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|\'            +\n"
	"                \'[1-9][0-9]{1,4}|[0-9]):\'                          +\n"
	"                \'(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|\' +\n"
	"                \'[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])\';\n"
	"      }\n"
	"      type string {\n"
	"        // Type 2: 4-octet global and 2-octet local\n"
	"        //         (ipv4-address)     (integer)\n"
	"        pattern \'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|\'      +\n"
	"                \'25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|\'     +\n"
	"                \'2[0-4][0-9]|25[0-5]):\'                            +\n"
	"                \'(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|\'            +\n"
	"                \'[1-9][0-9]{1,4}|[0-9])\';\n"
	"      }\n"
	"      type string {\n"
	"        // route-target with Type 1\n"
	"        // route-target:(ASN):(local-part)\n"
	"        pattern \'route\\-target:(6[0-5][0-5][0-3][0-5]|\'            +\n"
	"                \'[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):\'            +\n"
	"                \'(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|\' +\n"
	"                \'[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])\';\n"
	"      }\n"
	"      type string {\n"
	"        // route-target with Type 2\n"
	"        // route-target:(IPv4):(local-part)\n"
	"        pattern \'route\\-target:\' +\n"
	"                \'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|\'      +\n"
	"                \'25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|\'     +\n"
	"                \'2[0-4][0-9]|25[0-5]):\'                            +\n"
	"                \'(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|\'            +\n"
	"                \'[1-9][0-9]{1,4}|[0-9])\';\n"
	"      }\n"
	"      type string {\n"
	"        // route-origin with Type 1\n"
	"        pattern \'route\\-origin:(6[0-5][0-5][0-3][0-5]|\'            +\n"
	"                \'[1-5][0-9]{4}|[1-9][0-9]{1,4}|[0-9]):\'            +\n"
	"                \'(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-6]|\' +\n"
	"                \'[1-3][0-9]{9}|[1-9]([0-9]{1,7})?[0-9]|[1-9])\';\n"
	"      }\n"
	"      type string {\n"
	"        // route-origin with Type 2\n"
	"        pattern \'route\\-origin:\' +\n"
	"                \'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|\'      +\n"
	"                \'25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|\'     +\n"
	"                \'2[0-4][0-9]|25[0-5]):\'                            +\n"
	"                \'(6[0-5][0-5][0-3][0-5]|[1-5][0-9]{4}|\'            +\n"
	"                \'[1-9][0-9]{1,4}|[0-9])\';\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Type definition for extended community attributes\";\n"
	"    reference\n"
	"      \"RFC 4360 - BGP Extended Communities Attribute\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-community-regexp-type {\n"
	"    // TODO: needs more work to decide what format these regexps can\n"
	"    // take.\n"
	"    type string;\n"
	"    description\n"
	"      \"Type definition for communities specified as regular\n"
	"       expression patterns\";\n"
	"  }\n"
	"\n"
	"  typedef bgp-origin-attr-type {\n"
	"    type enumeration {\n"
	"      enum igp {\n"
	"        description \"Origin of the NLRI is internal\";\n"
	"      }\n"
	"      enum egp {\n"
	"        description \"Origin of the NLRI is EGP\";\n"
	"      }\n"
	"      enum incomplete {\n"
	"        description \"Origin of the NLRI is neither IGP or EGP\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Type definition for standard BGP origin attribute\";\n"
	"    reference\n"
	"      \"RFC 4271 - A Border Gateway Protocol 4 (BGP-4), Sec 4.3\";\n"
	"  }\n"
	"\n"
	"  typedef peer-type {\n"
	"    type enumeration {\n"
	"      enum internal {\n"
	"        description\n"
	"          \"internal (iBGP) peer\";\n"
	"      }\n"
	"      enum external {\n"
	"        description\n"
	"          \"external (eBGP) peer\";\n"
	"      }\n"
	"      enum confederation {\n"
	"        description\n"
	"        \"Confederation as peer\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Labels a peer or peer group as explicitly internal,\n"
	"       external or confederation.\";\n"
	"  }\n"
	"\n"
	"  identity REMOVE_PRIVATE_AS_OPTION {\n"
	"    description\n"
	"      \"Base identity for options for removing private autonomous\n"
	"       system numbers from the AS_PATH attribute\";\n"
	"  }\n"
	"\n"
	"  identity PRIVATE_AS_REMOVE_ALL {\n"
	"    base REMOVE_PRIVATE_AS_OPTION;\n"
	"    description\n"
	"      \"Strip all private autonomous system numbers from the AS_PATH.\n"
	"       This action is performed regardless of the other content of the\n"
	"       AS_PATH attribute, and for all instances of private AS numbers\n"
	"       within that attribute.\";\n"
	"  }\n"
	"\n"
	"  identity PRIVATE_AS_REPLACE_ALL {\n"
	"    base REMOVE_PRIVATE_AS_OPTION;\n"
	"    description\n"
	"      \"Replace all instances of private autonomous system numbers in\n"
	"       the AS_PATH with the local BGP speaker\'s autonomous system\n"
	"       number. This action is performed regardless of the other\n"
	"       content of the AS_PATH attribute, and for all instances of\n"
	"       private AS number within that attribute.\";\n"
	"  }\n"
	"\n"
	"  typedef remove-private-as-option {\n"
	"    type identityref {\n"
	"      base REMOVE_PRIVATE_AS_OPTION;\n"
	"    }\n"
	"    description\n"
	"      \"Set of options for configuring how private AS path numbers\n"
	"       are removed from advertisements\";\n"
	"  }\n"
	"\n"
	"  typedef percentage {\n"
	"    type uint8 {\n"
	"      range \"0..100\";\n"
	"    }\n"
	"    description\n"
	"      \"Integer indicating a percentage value\";\n"
	"  }\n"
	"\n"
	"  typedef rr-cluster-id-type {\n"
	"    type union {\n"
	"      type uint32;\n"
	"      type inet:ipv4-address;\n"
	"    }\n"
	"    description\n"
	"      \"Union type for route reflector cluster ids:\n"
	"       option 1: 4-byte number\n"
	"       option 2: IP address\";\n"
	"  }\n"
	"\n"
	"  typedef community-type {\n"
	"    type bits {\n"
	"      bit standard {\n"
	"        position 0;\n"
	"        description\n"
	"          \"Send only standard communities.\";\n"
	"        reference\n"
	"          \"RFC 1997: BGP Communities Attribute.\";\n"
	"      }\n"
	"      bit extended {\n"
	"        description\n"
	"          \"Send only extended communities.\";\n"
	"        reference\n"
	"          \"RFC 4360: BGP Extended Communities Attribute.\";\n"
	"      }\n"
	"      bit large {\n"
	"        description\n"
	"          \"Send only large communities.\";\n"
	"        reference\n"
	"          \"RFC 8092: BGP Large Communities Attribute.\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Type describing variations of community attributes.\n"
	"       The community types can be combined and a value of 0\n"
	"       implies \'none\'\";\n"
	"  }\n"
	"}\n"
	"";

static struct yang_module_embed embed = {
	.mod_name = "ietf-bgp-types",
	.mod_rev = "2019-10-03",
	.sub_mod_name = "",
	.sub_mod_rev = "",
	.data = model,
	.format = LYS_IN_YANG,
};

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