mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-02 18:40:14 +00:00

Zebra: Use a fixed route metric when populating kernel The route metric is not used by the Linux kernel and is irrelevant to the forwarding decision made by the kernel. Metric is a parameter used only by a routing protocol to compute best path(s) and to communicate this info to its peers. Consequently, there is no value in pushing the metric provided by a protocol daemon to the kernel. There is a significant advantage, at least on the Linux kernel, in pushing a constant metric with a route populated by zebra. The metric is used as a priority field in the kernel and modifying the metric due to say topology changes causes multiple routes to be inserted into the kernel, with differing priorities instead of replacing the existing one. This prevents us from using replace semantic when a route changes. So, this patch pushes a constant metric with a route populated by zebra.
48 lines
1.4 KiB
C
48 lines
1.4 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 GNU Zebra; see the file COPYING. If not, write to the Free
|
|
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef _ZEBRA_RT_NETLINK_H
|
|
#define _ZEBRA_RT_NETLINK_H
|
|
|
|
#ifdef HAVE_NETLINK
|
|
|
|
#define NL_PKT_BUF_SIZE 8192
|
|
#define NL_DEFAULT_ROUTE_METRIC 20
|
|
|
|
extern int
|
|
addattr32 (struct nlmsghdr *n, int maxlen, int type, int data);
|
|
extern int
|
|
addattr_l (struct nlmsghdr *n, int maxlen, int type, void *data, int alen);
|
|
|
|
extern int
|
|
rta_addattr_l (struct rtattr *rta, int maxlen, int type, void *data, int alen);
|
|
|
|
extern const char *
|
|
nl_msg_type_to_str (uint16_t msg_type);
|
|
|
|
extern const char *
|
|
nl_rtproto_to_str (u_char rtproto);
|
|
|
|
|
|
#endif /* HAVE_NETLINK */
|
|
|
|
#endif /* _ZEBRA_RT_NETLINK_H */
|