# Canonical Zserv route types information registry for Quagga.
#
# Used to construct route_types.c and route_types.h
#
# comma-seperated fields of either 2 fields (help strings) or 7 fields.
# White space before and after the comma seperators is stripped.
# Lines /beginning/ with # are comments.
#
####
# 9 field line has format:
# ZServ route type, canonical name, daemon, route char, ipv4, ipv6, redist, short desc, Restrictions
#
# Zserv route type: 	Corresponding with zebra.h. Key field.
# canonical name:	Typically derived from the route type definition.
#			Used in 'redistribute' commands in daemons.
#			Key field.
# daemon:		The daemon which may originates this route type
#			for redistribution to other daemons.
#			NULL if not applicable.
#			M:N definitions of type:daemon are allowed.
#			Used to construct vty command strings.
# route char:		Single character to denote the route, if applicable.
#			Used to denote route type where space is tight,
#			e.g. 'show ip route' / 'show ipv6 route'.
#			'X' is reserved as the 'not needed' placeholder.
# ipv4:			IPv4 capable? yes/no, or 1/0.
# ipv6:			IPv6 capable? ditto.
# redist:               Allow this protocol to be used in redistribution statements
# short desc:		Very brief description. Used in header of
#			'show ip route'. May be specified as NULL
#			if the canonical name suffices.
# Restriction:          If this cannot be used with the listed protocol for redistribution events
#
# Key fields obviously must be a unique ASCII alpha-numeric word.
#   Lower-case is required, brevity is optional but highly desirable.
#
####
# 2 field format:
#
# Zserv route type, Long description
#
# Long description:     Full description, but should try fit on a line.
####
#
# If you add a new routing protocol here, make sure you also update
# meta_queue_map in zebra_rib.c
#
##  type                cname      daemon  C    4  6  Redist short help  Restrictions
ZEBRA_ROUTE_SYSTEM,     system,    NULL,   'X', 0, 0, 0,     "Reserved"
ZEBRA_ROUTE_KERNEL,     kernel,    zebra,  'K', 1, 1, 1,     "kernel route"
ZEBRA_ROUTE_CONNECT,    connected, zebra,  'C', 1, 1, 1,     "connected"
ZEBRA_ROUTE_STATIC,     static,    zebra,  'S', 1, 1, 1,     "static"
ZEBRA_ROUTE_RIP,        rip,       ripd,   'R', 1, 0, 1,     "RIP"
ZEBRA_ROUTE_RIPNG,      ripng,     ripngd, 'R', 0, 1, 1,     "RIPng"
ZEBRA_ROUTE_OSPF,       ospf,      ospfd,  'O', 1, 0, 1,     "OSPF"
ZEBRA_ROUTE_OSPF6,      ospf6,     ospf6d, 'O', 0, 1, 1,     "OSPFv3"
ZEBRA_ROUTE_ISIS,       isis,      isisd,  'I', 1, 1, 1,     "IS-IS"
ZEBRA_ROUTE_BGP,        bgp,       bgpd,   'B', 1, 1, 1,     "BGP"
ZEBRA_ROUTE_PIM,	pim,	   pimd,   'P', 0, 0, 0,     "PIM"
ZEBRA_ROUTE_EIGRP,      eigrp,     eigrpd, 'E', 1, 0, 1,     "EIGRP"
ZEBRA_ROUTE_NHRP,       nhrp,      nhrpd,  'N', 1, 1, 1,     "NHRP"
# HSLS and OLSR both are AFI independent (so: 1, 1), however
# we want to disable for them for general Quagga distribution.
# This at least makes it trivial for users of these protocols
# to 'switch on' redist support (direct numeric entry remaining
# possible).
ZEBRA_ROUTE_HSLS,       hsls,      hslsd,  'H', 0, 0, 0,     "HSLS"
ZEBRA_ROUTE_OLSR,       olsr,      olsrd,  'o', 0, 0, 0,     "OLSR"
ZEBRA_ROUTE_TABLE,      table,     zebra,  'T', 1, 1, 1,     "Table"
ZEBRA_ROUTE_LDP,        ldp,       ldpd,   'L', 0, 0, 0,     "LDP"
#vnc when sent to zebra 
ZEBRA_ROUTE_VNC,        vnc,       NULL,   'v', 1, 1, 1,     "VNC"
# vnc when sent to bgp
ZEBRA_ROUTE_VNC_DIRECT, vnc-direct,NULL,   'V', 1, 1, 1,     "VNC-Direct", bgpd
# vnc when sent to bgp (resolve NVE mode)
ZEBRA_ROUTE_VNC_DIRECT_RH, vnc-rn, NULL,   'V', 0, 0, 0,     "VNC-RN"
#  bgp unicast -> vnc 
ZEBRA_ROUTE_BGP_DIRECT, bgp-direct, NULL,  'b', 0, 0, 0,     "BGP-Direct"
#  bgp unicast -> vnc 
ZEBRA_ROUTE_BGP_DIRECT_EXT, bgp-direct-to-nve-groups, NULL, 'e', 0, 0, 0, "BGP2VNC"
ZEBRA_ROUTE_BABEL,      babel,     babeld, 'A', 1, 1, 1,     "Babel"
ZEBRA_ROUTE_SHARP,      sharp,     sharpd, 'D', 1, 1, 1,     "SHARP"
ZEBRA_ROUTE_PBR,        pbr,       pbrd,   'F', 1, 1, 0,     "PBR"
ZEBRA_ROUTE_BFD,        bfd,       bfdd,   '-', 0, 0, 0,     "BFD"
ZEBRA_ROUTE_OPENFABRIC, openfabric, fabricd,  'f', 1, 1, 1, "OpenFabric"
ZEBRA_ROUTE_VRRP,       vrrp,      vrrpd,  '-', 0, 0, 0,     "VRRP"
ZEBRA_ROUTE_NHG,        nhg,       none,  '-', 0, 0, 0,     "Nexthop Group"
ZEBRA_ROUTE_SRTE,       srte,      none,   '-', 0, 0, 0,     "SR-TE"
ZEBRA_ROUTE_ALL,        wildcard,  none,   '-', 0, 0, 0,     "-"


## help strings
ZEBRA_ROUTE_SYSTEM, "Reserved route type, for internal use only"
ZEBRA_ROUTE_KERNEL, "Kernel routes (not installed via the zebra RIB)"
ZEBRA_ROUTE_CONNECT,"Connected routes (directly attached subnet or host)"
ZEBRA_ROUTE_STATIC, "Statically configured routes"
ZEBRA_ROUTE_RIP,    "Routing Information Protocol (RIP)"
ZEBRA_ROUTE_RIPNG,  "Routing Information Protocol next-generation (IPv6) (RIPng)"
ZEBRA_ROUTE_OSPF,   "Open Shortest Path First (OSPFv2)"
ZEBRA_ROUTE_OSPF6,  "Open Shortest Path First (IPv6) (OSPFv3)"
ZEBRA_ROUTE_ISIS,   "Intermediate System to Intermediate System (IS-IS)"
ZEBRA_ROUTE_BGP,    "Border Gateway Protocol (BGP)"
ZEBRA_ROUTE_PIM,    "Protocol Independent Multicast (PIM)"
ZEBRA_ROUTE_EIGRP,  "Enhanced Interior Gateway Routing Protocol (EIGRP)"
ZEBRA_ROUTE_NHRP,   "Next Hop Resolution Protocol (NHRP)"
ZEBRA_ROUTE_HSLS,   "Hazy-Sighted Link State Protocol (HSLS)"
ZEBRA_ROUTE_VNC,    "Virtual Network Control (VNC)"
ZEBRA_ROUTE_OLSR,   "Optimised Link State Routing (OLSR)"
ZEBRA_ROUTE_TABLE,  "Non-main Kernel Routing Table"
ZEBRA_ROUTE_LDP,    "Label Distribution Protocol (LDP)"
ZEBRA_ROUTE_VNC_DIRECT,    "VNC direct (not via zebra) routes"
ZEBRA_ROUTE_BABEL,  "Babel routing protocol (Babel)"
ZEBRA_ROUTE_SHARP, "Super Happy Advanced Routing Protocol (sharpd)"
ZEBRA_ROUTE_PBR, "Policy Based Routing (PBR)"
ZEBRA_ROUTE_BFD, "Bidirectional Fowarding Detection (BFD)"
ZEBRA_ROUTE_VRRP, "Virtual Router Redundancy Protocol (VRRP)"
ZEBRA_ROUTE_OPENFABRIC, "OpenFabric Routing Protocol"
ZEBRA_ROUTE_NHG, "Zebra Nexthop Groups (NHG)"
