mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-29 02:16:07 +00:00

This is an implementation of draft-ietf-ospf-segment-routing-extensions-24 and RFC7684 for Extended Link & Prefix Opaque LSA. Look to doc/OSPF_SR.rst for implementation details & known limitations. New files: - ospfd/ospf_sr.h: Segment Routing structure definition (SubTLVs + SRDB) - ospfd/ospf_sr.c: Main functions for Segment Routing support - ospfd/ospf_ext.h: TLVs and SubTLVs definition for RFC7684 - ospfd/ospf_ext.c: RFC7684 Extended Link / Prefix implementation - doc/OSPF-SRr.rst: Documentation Modified Files: - doc/ospfd.texi: Add new Segment Routing CLI command definition - lib/command.h: Add new string command for Segment Routing CLI - lib/mpls.h: Add default value for SRGB - lib/route_types.txt: Add new OSPF Segment Routing route type - ospfd/ospf_dump.[c,h]: Add OSPF SR debug - ospfd/ospf_memory.[c,h]: Add new Segment Routing memory type - ospfd/ospf_opaque.[c,h]: Add ospf_sr_init() starting function - ospfd/ospf_ri.c: Add new functions to Set/Get Segment Routing TLVs Add new ospf_router_info_lsa_upadte() to send Opaque LSA to ospf_sr.c() - ospfd/ospf_ri.h: Add new Router Information SR SubTLVs - ospfd/ospf_spf.c: Add new scheduler when running SPF to trigger update of NHLFE - ospfd/ospfd.h: Add new thread for Segment Routing scheduler - ospfd/subdir.am: Add new files - vtysh/Makefile.am: Add new ospf_sr.c file for vtysh - zebra/kernel_netlink.c: Add new OSPF_SR route type - zebra/rt_netlink.[c,h]: Add new OSPF_SR route type - zebra/zebra_mpls.h: Add new OSPF_SR route type Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
78 lines
2.5 KiB
C
78 lines
2.5 KiB
C
/* Header file exported by rt_netlink.c to zebra.
|
|
* Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
|
*
|
|
* This file is part of GNU Zebra.
|
|
*
|
|
* GNU Zebra is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2, or (at your option) any
|
|
* later version.
|
|
*
|
|
* GNU Zebra is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; see the file COPYING; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _ZEBRA_RT_NETLINK_H
|
|
#define _ZEBRA_RT_NETLINK_H
|
|
|
|
#ifdef HAVE_NETLINK
|
|
|
|
#include "zebra/zebra_mpls.h"
|
|
|
|
#define NL_DEFAULT_ROUTE_METRIC 20
|
|
|
|
/*
|
|
* Additional protocol strings to push into routes
|
|
* If we add anything new here please make sure
|
|
* to update:
|
|
* zebra2proto Function
|
|
* proto2zebra Function
|
|
* is_selfroute Function
|
|
* tools/frr To flush the route upon exit
|
|
*
|
|
* Finally update this file to allow iproute2 to
|
|
* know about this new route.
|
|
* tools/etc/iproute2/rt_protos.d
|
|
*/
|
|
#define RTPROT_BGP 186
|
|
#define RTPROT_ISIS 187
|
|
#define RTPROT_OSPF 188
|
|
#define RTPROT_RIP 189
|
|
#define RTPROT_RIPNG 190
|
|
#if !defined(RTPROT_BABEL)
|
|
#define RTPROT_BABEL 42
|
|
#endif
|
|
#define RTPROT_NHRP 191
|
|
#define RTPROT_EIGRP 192
|
|
#define RTPROT_LDP 193
|
|
#define RTPROT_SHARP 194
|
|
#define RTPROT_OSPF_SR 195
|
|
|
|
void rt_netlink_init(void);
|
|
|
|
extern int netlink_mpls_multipath(int cmd, zebra_lsp_t *lsp);
|
|
|
|
extern int netlink_route_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|
ns_id_t ns_id, int startup);
|
|
extern int netlink_route_read(struct zebra_ns *zns);
|
|
|
|
extern int netlink_neigh_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|
ns_id_t ns_id);
|
|
extern int netlink_macfdb_read(struct zebra_ns *zns);
|
|
extern int netlink_macfdb_read_for_bridge(struct zebra_ns *zns,
|
|
struct interface *ifp,
|
|
struct interface *br_if);
|
|
extern int netlink_neigh_read(struct zebra_ns *zns);
|
|
extern int netlink_neigh_read_for_vlan(struct zebra_ns *zns,
|
|
struct interface *vlan_if);
|
|
|
|
#endif /* HAVE_NETLINK */
|
|
|
|
#endif /* _ZEBRA_RT_NETLINK_H */
|