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

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

static const char model[] =
	"// SPDX-License-Identifier: BSD-2-Clause\n"
	"module frr-staticd {\n"
	"  yang-version 1.1;\n"
	"  namespace \"http://frrouting.org/yang/staticd\";\n"
	"  prefix frr-staticd;\n"
	"\n"
	"  import frr-routing {\n"
	"    prefix frr-rt;\n"
	"  }\n"
	"\n"
	"  import frr-nexthop {\n"
	"    prefix frr-nexthop;\n"
	"  }\n"
	"\n"
	"  import frr-interface {\n"
	"    prefix frr-interface;\n"
	"  }\n"
	"\n"
	"  import ietf-inet-types {\n"
	"    prefix inet;\n"
	"  }\n"
	"\n"
	"  import frr-bfdd {\n"
	"    prefix frr-bfdd;\n"
	"  }\n"
	"\n"
	"  import frr-vrf {\n"
	"    prefix frr-vrf;\n"
	"  }\n"
	"\n"
	"  organization\n"
	"    \"FRRouting\";\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 staticd information.\n"
	"     This YANG module augments the ietf-routing with additional\n"
	"     nexthop information\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 2026-04-19 {\n"
	"    description\n"
	"      \"Add \'metric\' as a non-key path-list attribute with default 0.\n"
	"       Nexthops sharing (table-id, distance, metric) form one ECMP group\n"
	"       in the RIB; nexthops with different metrics are separate RIB entries\n"
	"       enabling metric-based floating static routes.\";\n"
	"    reference \"FRRouting\";\n"
	"  }\n"
	"\n"
	"  revision 2026-04-18 {\n"
	"    description\n"
	"      \"Flatten path-list: replace the two-level path-list/nexthop hierarchy\n"
	"       with a single flat list keyed by table-id and nexthop identity\n"
	"       (nh-type, vrf, gateway, interface).  Distance becomes a non-key\n"
	"       attribute with a default of 1.\";\n"
	"    reference \"FRRouting\";\n"
	"  }\n"
	"\n"
	"  revision 2026-01-23 {\n"
	"    description\n"
	"      \"Augments the nexthop container with a \'weight\' leaf.\";\n"
	"    reference \"FRRouting\";\n"
	"  }\n"
	"\n"
	"  revision 2019-12-03 {\n"
	"    description\n"
	"      \"Initial revision.\";\n"
	"    reference \"FRRouting\";\n"
	"  }\n"
	"\n"
	"  identity staticd {\n"
	"    base frr-rt:routing-protocol;\n"
	"    description\n"
	"      \"\'Staticd\' routing pseudo-protocol.\";\n"
	"  }\n"
	"\n"
	"  grouping staticd-prefix-attributes {\n"
	"    description\n"
	"      \"Grouping for staticd prefix attributes.\";\n"
	"    list path-list {\n"
	"      key \"table-id nh-type vrf gateway interface\";\n"
	"      description\n"
	"        \"List of paths associated with a staticd prefix.  Each entry\n"
	"         represents one nexthop; entries sharing the same table-id,\n"
	"         administrative distance, and metric are installed as ECMP in\n"
	"         the RIB.\";\n"
	"      leaf table-id {\n"
	"        type uint32;\n"
	"        description\n"
	"          \"Table-id associated with this route.\";\n"
	"      }\n"
	"\n"
	"      uses frr-nexthop:frr-nexthop-attributes;\n"
	"\n"
	"      leaf distance {\n"
	"        type frr-rt:administrative-distance;\n"
	"        default \"1\";\n"
	"        description\n"
	"          \"Admin distance associated with this route.\";\n"
	"      }\n"
	"\n"
	"      leaf metric {\n"
	"        type uint32;\n"
	"        default \"0\";\n"
	"        description\n"
	"          \"Route metric.  Nexthops sharing the same (table-id, distance,\n"
	"           metric) form one ECMP group; nexthops with different metrics\n"
	"           are separate RIB entries enabling metric-based floating routes.\";\n"
	"      }\n"
	"\n"
	"      leaf tag {\n"
	"        type uint32;\n"
	"        default \"0\";\n"
	"        description\n"
	"          \"Route tag\";\n"
	"      }\n"
	"\n"
	"      leaf weight {\n"
	"        type uint16 {\n"
	"          range \"1..65535\";\n"
	"        }\n"
	"        description\n"
	"          \"Weight to be used by the nexthop for purposes of ECMP.\";\n"
	"      }\n"
	"\n"
	"      container bfd-monitoring {\n"
	"        when \"../nh-type = \'ip4\' or ../nh-type = \'ip4-ifindex\' or\n"
	"              ../nh-type = \'ip6\' or ../nh-type = \'ip6-ifindex\'\";\n"
	"        presence\n"
	"          \"Present if BFD configuration is available.\";\n"
	"        description \"BFD monitoring options.\";\n"
	"        uses frr-bfdd:bfd-monitoring;\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"\n"
	"  typedef srv6-behavior-codepoint {\n"
	"    type enumeration {\n"
	"      enum End {\n"
	"        value 1;\n"
	"        description\n"
	"          \"This enum indicates End endpoint behavior.\";\n"
	"      }\n"
	"      enum End.X {\n"
	"        value 5;\n"
	"        description\n"
	"          \"This enum indicates End.X endpoint behavior.\";\n"
	"      }\n"
	"      enum End.DT6 {\n"
	"        value 18;\n"
	"        description\n"
	"          \"This enum indicates End.DT6 endpoint behavior.\";\n"
	"      }\n"
	"      enum End.DT4 {\n"
	"        value 19;\n"
	"        description\n"
	"          \"This enum indicates End.DT4 endpoint behavior.\";\n"
	"      }\n"
	"      enum End.DT46 {\n"
	"        value 20;\n"
	"        description\n"
	"          \"This enum indicates End.DT46 endpoint behavior.\";\n"
	"      }\n"
	"      enum uN {\n"
	"        value 43;\n"
	"        description\n"
	"          \"This enum indicates End with NEXT-CSID endpoint behavior.\";\n"
	"      }\n"
	"      enum uA {\n"
	"        value 52;\n"
	"        description\n"
	"          \"This enum indicates End.X with NEXT-CSID endpoint behavior.\";\n"
	"      }\n"
	"      enum uDT6 {\n"
	"        value 62;\n"
	"        description\n"
	"          \"This enum indicates End.DT6 with NEXT-CSID endpoint behavior.\";\n"
	"      }\n"
	"      enum uDT4 {\n"
	"        value 63;\n"
	"        description\n"
	"          \"This enum indicates End.DT4 with NEXT-CSID endpoint behavior.\";\n"
	"      }\n"
	"      enum uDT46 {\n"
	"        value 64;\n"
	"        description\n"
	"          \"This enum indicates End.DT46 with NEXT-CSID endpoint behavior.\";\n"
	"      }\n"
	"    }\n"
	"    description\n"
	"      \"SRv6 Endpoint Behaviors Codepoints as per\n"
	"      https://www.iana.org/assignments/segment-routing/segment-routing.xhtml.\";\n"
	"  }\n"
	"\n"
	"  augment \"/frr-rt:routing/frr-rt:control-plane-protocols/frr-rt:control-plane-protocol\" {\n"
	"    description\n"
	"      \"Augments the control-plane-protocol container with staticd pseudo-protocol instance.\";\n"
	"    container staticd {\n"
	"      when \"../frr-rt:type = \'frr-staticd:staticd\'\" {\n"
	"        description\n"
	"          \"This container is only valid for the \'staticd\' routing\n"
	"           protocol.\";\n"
	"      }\n"
	"      description\n"
	"        \"Support for a \'staticd\' pseudo-protocol instance\n"
	"         consists of a list of routes.\";\n"
	"      list route-list {\n"
	"        /* note dst-src routes are semantically invalid in MRIB */\n"
	"        must \"afi-safi = \'frr-rt:ipv6-unicast\'\n"
	"           or afi-safi = \'frr-rt:ipv6-labeled-unicast\'\n"
	"           or afi-safi = \'frr-rt:l3vpn-ipv6-unicast\'\n"
	"           or src-prefix = \'::/0\'\n"
	"        \";\n"
	"        key \"prefix src-prefix afi-safi\";\n"
	"        description\n"
	"          \"List of staticd IP routes.\";\n"
	"        leaf prefix {\n"
	"          type inet:ip-prefix;\n"
	"          description\n"
	"            \"IP prefix.\";\n"
	"        }\n"
	"        leaf src-prefix {\n"
	"          type inet:ipv6-prefix;\n"
	"          description\n"
	"            \"IPv6 source prefix for dst-src routes\";\n"
	"        }\n"
	"        leaf afi-safi {\n"
	"          type identityref {\n"
	"            base frr-rt:afi-safi-type;\n"
	"          }\n"
	"          description\n"
	"            \"AFI-SAFI type.\";\n"
	"        }\n"
	"\n"
	"        uses staticd-prefix-attributes;\n"
	"      }\n"
	"\n"
	"      container segment-routing {\n"
	"        description\n"
	"          \"Segment Routing configuration.\";\n"
	"        container srv6 {\n"
	"          description\n"
	"            \"Segment Routing over IPv6 (SRv6) configuration.\";\n"
	"          container static-sids {\n"
	"            description\n"
	"              \"This container lists the SRv6 Static SIDs instantiated on the local node.\";\n"
	"            list sid {\n"
	"              key \"sid\";\n"
	"              description\n"
	"                \"List of SRv6 Static SIDs.\";\n"
	"              leaf sid {\n"
	"                type inet:ipv6-prefix;\n"
	"                description\n"
	"                  \"Value of the SRv6 SID.\";\n"
	"              }\n"
	"              leaf behavior {\n"
	"                type srv6-behavior-codepoint;\n"
	"                description\n"
	"                  \"Behavior bound to the SRv6 SID.\";\n"
	"              }\n"
	"              leaf locator-name {\n"
	"                type string;\n"
	"                description\n"
	"                  \"SRv6 locator name.\";\n"
	"              }\n"
	"              leaf vrf-name {\n"
	"                type frr-vrf:vrf-ref;\n"
	"                description\n"
	"                  \"The VRF name.\";\n"
	"              }\n"
	"              list paths {\n"
	"                key \"path-index\";\n"
	"                description\n"
	"                  \"List of paths for the SRv6 Static SID.\";\n"
	"                leaf path-index {\n"
	"                  type uint8;\n"
	"                  description\n"
	"                    \"Path index\";\n"
	"                }\n"
	"                leaf interface {\n"
	"                  type frr-interface:interface-ref;\n"
	"                  description\n"
	"                    \"Interface name.\";\n"
	"                }\n"
	"                leaf next-hop {\n"
	"                  type inet:ip-address;\n"
	"                  description\n"
	"                    \"Nexthop IP address.\";\n"
	"                }\n"
	"              }\n"
	"            }\n"
	"          }\n"
	"        }\n"
	"      }\n"
	"    }\n"
	"  }\n"
	"}\n"
	"";

static struct yang_module_embed embed = {
	.mod_name = "frr-staticd",
	.mod_rev = "2026-04-19",
	.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);
}
