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

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

static const char model[] =
	"module frr-pathd {\n"
	"  yang-version 1.1;\n"
	"  namespace \"http://frrouting.org/yang/pathd\";\n"
	"  prefix frr-pathd;\n"
	"\n"
	"  import ietf-inet-types {\n"
	"    prefix inet;\n"
	"  }\n"
	"  import ietf-routing-types {\n"
	"    prefix rt-types;\n"
	"  }\n"
	"\n"
	"  organization\n"
	"    \"Free Range Routing\";\n"
	"  contact\n"
	"    \"FRR Users List:       <mailto:frog@lists.frrouting.org>\n"
	"     FRR Development List: <mailto:dev@lists.frrouting.org>\";\n"
	"  description\n"
	"    \"This module defines a model for managing FRR pathd daemon.\";\n"
	"\n"
	"  revision 2018-11-06 {\n"
	"    description\n"
	"      \"Initial revision.\";\n"
	"    reference \"FRRouting\";\n"
	"  }\n"
	"\n"
	"  typedef protocol-origin-type {\n"
	"    type enumeration {\n"
	"      enum pcep {\n"
	"        value 1;\n"
	"        description \"The object was created through PCEP\";\n"
	"      }\n"
	"      enum bgp {\n"
	"        value 2;\n"
	"        description \"The object was created through GBP\";\n"
	"      }\n"
	"      enum local {\n"
	"        value 3;\n"
	"        description \"The object was created through CLI, Yang model via Netconf, gRPC, etc\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"Indication for the protocol origin of an object.\";\n"
	"  }\n"
	"\n"
	"  typedef originator-type {\n"
	"        type string {\n"
	"          length \"1..64\";\n"
	"        }\n"
	"        description\n"
	"          \"Identifier of the originator of an object, could be \'config\', \'1.1.1.1:4189\' or \'2001:db8:85a3::8a2e:370:7334:4189\'\";\n"
	"      }\n"
	"\n"
	"  container pathd {\n"
	"    description\n"
	"      \"Path properties for Segment Routing TE\";\n"
	"\n"
	"    container srte {\n"
	"      description\n"
	"        \"Segment Routing TE properties\";\n"
	"\n"
	"      list segment-list {\n"
	"        key \"name\";\n"
	"        description \"Segment-list properties\";\n"
	"        leaf name {\n"
	"          type string {\n"
	"            length \"1..64\";\n"
	"          }\n"
	"          description \"Segment-list name\";\n"
	"        }\n"
	"        leaf protocol-origin {\n"
	"          type protocol-origin-type;\n"
	"          mandatory true;\n"
	"          description\n"
	"            \"Indication for the protocol origin of the segment list.\";\n"
	"        }\n"
	"        leaf originator {\n"
	"          type originator-type;\n"
	"          mandatory true;\n"
	"          description \"Originator of the segment list\";\n"
	"        }\n"
	"        list segment {\n"
	"          key \"index\";\n"
	"          description \"Configure Segment/hop at the index\";\n"
	"          leaf index {\n"
	"            type uint32;\n"
	"            description \"Segment index\";\n"
	"\t  }\n"
	"        leaf sid-value {\n"
	"          type rt-types:mpls-label;\n"
	"          description \"MPLS label value\";\n"
	"        }\n"
	"        container nai {\n"
	"          presence \"The segment has a Node or Adjacency Identifier\";\n"
	"          description\n"
	"            \"Node or Adjacency Identifier for the segment\";\n"
	"\n"
	"          leaf type {\n"
	"            type enumeration {\n"
	"              enum ipv4_node {\n"
	"                value 1;\n"
	"                description \"IPv4 node identifier\";\n"
	"              }\n"
	"              enum ipv6_node {\n"
	"                value 2;\n"
	"                description \"IPv6 node identifier\";\n"
	"              }\n"
	"              enum ipv4_adjacency {\n"
	"                value 3;\n"
	"                description \"IPv4 adjacency\";\n"
	"              }\n"
	"              enum ipv6_adjacency {\n"
	"                value 4;\n"
	"                description \"IPv6 adjacency\";\n"
	"              }\n"
	"              enum ipv4_unnumbered_adjacency {\n"
	"                value 5;\n"
	"                description \"IPv4 unnumbered adjacency\";\n"
	"              }\n"
	"              enum ipv4_local_iface {\n"
	"                value 7;\n"
	"                description \"IPv4 prefix with local interface id\";\n"
	"              }\n"
	"              enum ipv6_local_iface {\n"
	"                value 8;\n"
	"                description \"IPv6 prefix with local interface id\";\n"
	"              }\n"
	"              enum ipv4_algo {\n"
	"                value 9;\n"
	"                description \"IPv4 prefix with optional algorithm\";\n"
	"              }\n"
	"              enum ipv6_algo {\n"
	"                value 10;\n"
	"                description \"IPv6 prefix with optional algorithm\";\n"
	"              }\n"
	"            }\n"
	"            mandatory true;\n"
	"            description \"NAI type\";\n"
	"          }\n"
	"          leaf local-address {\n"
	"            type inet:ip-address;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Local address of the NAI\";\n"
	"          }\n"
	"          leaf local-prefix-len {\n"
	"            when \"../type = \'ipv4_local_iface\' or ../type = \'ipv6_local_iface\' or ../type = \'ipv4_algo\' or ../type = \'ipv6_algo\'\";\n"
	"            type uint8;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Prefix length of the local address\";\n"
	"          }\n"
	"          leaf local-interface {\n"
	"            when \"../type = \'ipv4_local_iface\' or ../type = \'ipv6_local_iface\' or ../type = \'ipv4_unnumbered_adjacency\'\";\n"
	"            type uint32;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Local interface ID for the NAI\";\n"
	"          }\n"
	"          leaf remote-address {\n"
	"            when \"../type = \'ipv4_adjacency\' or ../type = \'ipv6_adjacency\' or ../type = \'ipv4_unnumbered_adjacency\'\";\n"
	"            type inet:ip-address;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Remote address of the NAI\";\n"
	"          }\n"
	"          leaf remote-interface {\n"
	"            when \"../type = \'ipv4_unnumbered_adjacency\'\";\n"
	"            type uint32;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Remote interface ID for the NAI\";\n"
	"          }\n"
	"          leaf algorithm {\n"
	"            when \"../type = \'ipv4_algo\' or ../type = \'ipv6_algo\'\";\n"
	"            type uint8;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Algorithm to use for the NAI\";\n"
	"          }\n"
	"         }\n"
	"        }\n"
	"      }\n"
	"      list policy {\n"
	"        key \"color endpoint\";\n"
	"        unique \"name\";\n"
	"        description\n"
	"          \"List of SR Policies.\";\n"
	"\n"
	"        leaf color {\n"
	"          type uint32;\n"
	"          description\n"
	"            \"Color of the SR Policy.\";\n"
	"        }\n"
	"        leaf endpoint {\n"
	"          type inet:ip-address;\n"
	"          description\n"
	"            \"Indication for the endpoint of the SR Policy.\";\n"
	"        }\n"
	"        leaf name {\n"
	"          type string {\n"
	"            length \"1..64\";\n"
	"          }\n"
	"          description\n"
	"            \"Name of the SR Policy.\";\n"
	"        }\n"
	"        leaf binding-sid {\n"
	"          type rt-types:mpls-label;\n"
	"          description\n"
	"            \"BSID of the SR Policy.\";\n"
	"        }\n"
	"        leaf is-operational {\n"
	"          type boolean;\n"
	"          config false;\n"
	"          description\n"
	"            \"True if a valid candidate path of this policy is operational in zebra, False otherwise\";\n"
	"        }\n"
	"        list candidate-path {\n"
	"          key \"preference\";\n"
	"          unique \"name\";\n"
	"          description\n"
	"            \"List of Candidate Paths of the SR Policy.\";\n"
	"          leaf preference {\n"
	"            type uint32;\n"
	"            description\n"
	"              \"Administrative preference.\";\n"
	"          }\n"
	"          leaf name {\n"
	"            type string {\n"
	"              length \"1..64\";\n"
	"            }\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Symbolic Name of the Candidate Path.\";\n"
	"          }\n"
	"          leaf is-best-candidate-path {\n"
	"            type boolean;\n"
	"            config false;\n"
	"            description\n"
	"              \"True if the candidate path is the best candidate path, False otherwise\";\n"
	"          }\n"
	"          leaf protocol-origin {\n"
	"            type protocol-origin-type;\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Indication for the protocol origin of the Candidate Path.\";\n"
	"          }\n"
	"          leaf originator {\n"
	"            type originator-type;\n"
	"            mandatory true;\n"
	"            description \"Originator of the candidate path\";\n"
	"          }\n"
	"          leaf discriminator {\n"
	"            type uint32;\n"
	"            config false;\n"
	"            description \"Candidate path distinguisher\";\n"
	"          }\n"
	"          leaf type {\n"
	"            type enumeration {\n"
	"              enum explicit {\n"
	"                value 1;\n"
	"                description\n"
	"                  \"Explicit path defined by a segment list\";\n"
	"              }\n"
	"              enum dynamic {\n"
	"                value 2;\n"
	"                description\n"
	"                  \"Dynamic path computed by a routing protocol\";\n"
	"              }\n"
	"            }\n"
	"            mandatory true;\n"
	"            description\n"
	"              \"Type of the Candidate Path.\";\n"
	"          }\n"
	"          leaf segment-list-name {\n"
	"            type leafref {\n"
	"              path ../../../segment-list/name;\n"
	"            }\n"
	"            description\n"
	"              \"The name of the Segment List to use as LSP.\";\n"
	"          }\n"
	"          container constraints {\n"
	"            when \"../type = \'dynamic\'\";\n"
	"            description\n"
	"              \"Generic dynamic path constraints\";\n"
	"            container bandwidth {\n"
	"              presence \"If the candidate has a bandwidth constraint\";\n"
	"              description\n"
	"                \"The bandwidth needed by the candidate path.\";\n"
	"              leaf required {\n"
	"                type boolean;\n"
	"                default \"true\";\n"
	"                description\n"
	"                  \"If the bandwidth limitation is a requirement or only a suggestion\";\n"
	"              }\n"
	"              leaf value {\n"
	"                type decimal64 {\n"
	"                    fraction-digits 6;\n"
	"                }\n"
	"                mandatory true;\n"
	"                description\n"
	"                  \"The bandwidth value for the candidate path.\";\n"
	"              }\n"
	"            }\n"
	"            container affinity {\n"
	"              description\n"
	"                \"Affinity let you configure how the links should be used when calculating a path.\";\n"
	"              leaf exclude-any {\n"
	"                type uint32;\n"
	"                description\n"
	"                  \"A 32-bit vector representing a set of attribute filters which renders a link unacceptable.\";\n"
	"              }\n"
	"              leaf include-any {\n"
	"                type uint32;\n"
	"                description\n"
	"                  \"A 32-bit vector representing a set of attribute filters which renders a link acceptable. A null set (all bits set to zero) automatically passes.\";\n"
	"              }\n"
	"              leaf include-all {\n"
	"                type uint32;\n"
	"                description\n"
	"                  \"A 32-bit vector representing a set of attribute filters which must be present for a link to be acceptable.  A null set (all bits set to zero) automatically passes.\";\n"
	"              }\n"
	"            }\n"
	"            list metrics {\n"
	"              key \"type\";\n"
	"              description\n"
	"                \"This list contains the different metrics that can be used to describe a path.\";\n"
	"\n"
	"              leaf type {\n"
	"                type enumeration {\n"
	"                  enum igp {\n"
	"                    value 1;\n"
	"                    description \"IGP metric\";\n"
	"                  }\n"
	"                  enum te {\n"
	"                    value 2;\n"
	"                    description \"TE metric\";\n"
	"                  }\n"
	"                  enum hc {\n"
	"                    value 3;\n"
	"                    description \"Hop Counts\";\n"
	"                  }\n"
	"                  enum abc {\n"
	"                    value 4;\n"
	"                    description \"Aggregate bandwidth consumption\";\n"
	"                  }\n"
	"                  enum lmll {\n"
	"                    value 5;\n"
	"                    description \"Load of the most loaded link\";\n"
	"                  }\n"
	"                  enum cigp {\n"
	"                    value 6;\n"
	"                    description \"Cumulative IGP cost\";\n"
	"                  }\n"
	"                  enum cte {\n"
	"                    value 7;\n"
	"                    description \"Cumulative TE cost\";\n"
	"                  }\n"
	"                  enum pigp {\n"
	"                    value 8;\n"
	"                    description \"P2MP IGP metric\";\n"
	"                  }\n"
	"                  enum pte {\n"
	"                    value 9;\n"
	"                    description \"P2MP TE metric\";\n"
	"                  }\n"
	"                  enum phc {\n"
	"                    value 10;\n"
	"                    description \"P2MP hop count metric\";\n"
	"                  }\n"
	"                  enum msd {\n"
	"                    value 11;\n"
	"                    description \"Segment-ID (SID) Depth\";\n"
	"                  }\n"
	"                  enum pd {\n"
	"                    value 12;\n"
	"                    description \"Path Delay metric\";\n"
	"                  }\n"
	"                  enum pdv {\n"
	"                    value 13;\n"
	"                    description \"Path Delay Variation metric\";\n"
	"                  }\n"
	"                  enum pl {\n"
	"                    value 14;\n"
	"                    description \"Path Loss metric\";\n"
	"                  }\n"
	"                  enum ppd {\n"
	"                    value 15;\n"
	"                    description \"P2MP Path Delay metric\";\n"
	"                  }\n"
	"                  enum ppdv {\n"
	"                    value 16;\n"
	"                    description \"P2MP Path Delay variation metric\";\n"
	"                  }\n"
	"                  enum ppl {\n"
	"                    value 17;\n"
	"                    description \"P2MP Path Loss metric\";\n"
	"                  }\n"
	"                  enum nap {\n"
	"                    value 18;\n"
	"                    description \"Number of adaptations on a path\";\n"
	"                  }\n"
	"                  enum nlp {\n"
	"                    value 19;\n"
	"                    description \"Number of layers on a path\";\n"
	"                  }\n"
	"                  enum dc {\n"
	"                    value 20;\n"
	"                    description \"Domain Count metric\";\n"
	"                  }\n"
	"                  enum bnc {\n"
	"                    value 21;\n"
	"                    description \"Border Node Count metric\";\n"
	"                  }\n"
	"                }\n"
	"                description\n"
	"                  \"Type of the metric.\";\n"
	"              }\n"
	"              leaf required {\n"
	"                type boolean;\n"
	"                default \"true\";\n"
	"                description\n"
	"                  \"If the metric is a requirement, or if it is only a suggestion\";\n"
	"              }\n"
	"              leaf is-bound {\n"
	"                type boolean;\n"
	"                description\n"
	"                  \"Defines if the value is a bound (a maximum) for the path metric that must not be exceeded.\";\n"
	"              }\n"
	"              leaf is-computed {\n"
	"                type boolean;\n"
	"                description\n"
	"                  \"Defines if the value has been generated by the originator of the path.\";\n"
	"              }\n"
	"              leaf value {\n"
	"                type decimal64 {\n"
	"                    fraction-digits 6;\n"
	"                }\n"
	"                mandatory true;\n"
	"                description\n"
	"                  \"Value of the metric.\";\n"
	"              }\n"
	"            }\n"
	"            container objective-function {\n"
	"              presence \"If the candidate has an objective function constraint\";\n"
	"              description\n"
	"                \"Define objective function constraint as a list of preferred functions\";\n"
	"              leaf required {\n"
	"                type boolean;\n"
	"                default \"true\";\n"
	"                description\n"
	"                  \"If an objective function is a requirement, or if it is only a suggestion\";\n"
	"              }\n"
	"              leaf type {\n"
	"                type enumeration {\n"
	"                  enum mcp {\n"
	"                    value 1;\n"
	"                    description \"Minimum Cost Path\";\n"
	"                  }\n"
	"                  enum mlp {\n"
	"                    value 2;\n"
	"                    description \"Minimum Load Path\";\n"
	"                  }\n"
	"                  enum mbp {\n"
	"                    value 3;\n"
	"                    description \"Maximum residual Bandwidth Path\";\n"
	"                  }\n"
	"                  enum mbc {\n"
	"                    value 4;\n"
	"                    description \"Minimize aggregate Bandwidth Consumption\";\n"
	"                  }\n"
	"                  enum mll {\n"
	"                    value 5;\n"
	"                    description \"Minimize the Load of the most loaded Link\";\n"
	"                  }\n"
	"                  enum mcc {\n"
	"                    value 6;\n"
	"                    description \"Minimize the Cumulative Cost of a set of paths\";\n"
	"                  }\n"
	"                  enum spt {\n"
	"                    value 7;\n"
	"                    description \"Shortest Path Tree\";\n"
	"                  }\n"
	"                  enum mct {\n"
	"                    value 8;\n"
	"                    description \"Minimum Cost Tree\";\n"
	"                  }\n"
	"                  enum mplp {\n"
	"                    value 9;\n"
	"                    description \"Minimum Packet Loss Path\";\n"
	"                  }\n"
	"                  enum mup {\n"
	"                    value 10;\n"
	"                    description \"Maximum Under-Utilized Path\";\n"
	"                  }\n"
	"                  enum mrup {\n"
	"                    value 11;\n"
	"                    description \"Maximum Reserved Under-Utilized Path\";\n"
	"                  }\n"
	"                  enum mtd {\n"
	"                    value 12;\n"
	"                    description \"Minimize the number of Transit Domains\";\n"
	"                  }\n"
	"                  enum mbn {\n"
	"                    value 13;\n"
	"                    description \"Minimize the number of Border Nodes\";\n"
	"                  }\n"
	"                  enum mctd {\n"
	"                    value 14;\n"
	"                    description \"Minimize the number of Common Transit Domains\";\n"
	"                  }\n"
	"                  enum msl {\n"
	"                    value 15;\n"
	"                    description \"Minimize the number of Shared Links\";\n"
	"                  }\n"
	"                  enum mss {\n"
	"                    value 16;\n"
	"                    description \"Minimize the number of Shared SRLGs\";\n"
	"                  }\n"
	"                  enum msn {\n"
	"                    value 17;\n"
	"                    description \"Minimize the number of Shared Nodes\";\n"
	"                  }\n"
	"                }\n"
	"                mandatory true;\n"
	"                description\n"
	"                  \"Type of objective function.\";\n"
	"              }\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"}\n"
	"";

static struct yang_module_embed embed = {
	.mod_name = "frr-pathd",
	.mod_rev = "2018-11-06",
	.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);
}
