[BIRD 2.0.x] Netlink: ignore dead routes

Bernd Naumann bena at spreadshirt.net
Fri Oct 23 08:48:38 CEST 2020


I have a question:
What is then `check link` supposed to do?

At least for 1.6, babel is the only protocol which enables it by 
default, and the others, for in example direct, static, and ospf it is 
needed to be set by the user, and I would have assumed exactly that 
behavior.

Or is this specific to 2.0 only?

Thanks.


On 22.10.20 16:16, Vincent Bernat wrote:
> With net.ipv4.conf.XXX.ignore_routes_with_linkdown sysctl, a user can
> ensure the kernel does not use a route whose target interface is down.
> The route is marked with a "dead"/RTNH_F_DEAD flag. Currently, BIRD
> still uses and distributes this route. This patch just ignores such a
> route.
> 
> This patch could be backported to 1.6.x.
> 
> Signed-off-by: Vincent Bernat <vincent at bernat.ch>
> ---
>   sysdep/linux/netlink.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c
> index f85bcf35685b..c28126510e6e 100644
> --- a/sysdep/linux/netlink.c
> +++ b/sysdep/linux/netlink.c
> @@ -1690,6 +1690,9 @@ nl_parse_route(struct nl_parse_state *s, struct nlmsghdr *h)
>   	  if (i->rtm_flags & RTNH_F_ONLINK)
>   	    ra->nh.flags |= RNF_ONLINK;
>   
> +          if (i->rtm_flags & RTNH_F_DEAD)
> +            return;
> +
>   	  neighbor *nbr;
>   	  nbr = neigh_find(&p->p, ra->nh.gw, ra->nh.iface,
>   			   (ra->nh.flags & RNF_ONLINK) ? NEF_ONLINK : 0);
> 


More information about the Bird-users mailing list