mirror_frr/zebra/rt_netlink.h
Donald Sharp 1f5705f042 zebra: zebra-use-fixed-metric-cost.patch
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.
2015-05-19 17:40:35 -07:00

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 */