| From 206cdb3a765fa3a7fcacf6f32bbc0722823d8455 Mon Sep 17 00:00:00 2001 |
| From: Mantas M <grawity@gmail.com> |
| Date: Fri, 16 Dec 2016 10:30:59 +0200 |
| Subject: [PATCH] net: ipv6: check route protocol when deleting routes |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit c2ed1880fd61a998e3ce40254a99a2ad000f1a7d upstream. |
| |
| The protocol field is checked when deleting IPv4 routes, but ignored for |
| IPv6, which causes problems with routing daemons accidentally deleting |
| externally set routes (observed by multiple bird6 users). |
| |
| This can be verified using `ip -6 route del <prefix> proto something`. |
| |
| Signed-off-by: Mantas Mikulėnas <grawity@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/ipv6/route.c b/net/ipv6/route.c |
| index a5351aa492b3..9fd2414836c1 100644 |
| --- a/net/ipv6/route.c |
| +++ b/net/ipv6/route.c |
| @@ -2155,6 +2155,8 @@ static int ip6_route_del(struct fib6_config *cfg) |
| continue; |
| if (cfg->fc_metric && cfg->fc_metric != rt->rt6i_metric) |
| continue; |
| + if (cfg->fc_protocol && cfg->fc_protocol != rt->rt6i_protocol) |
| + continue; |
| dst_hold(&rt->dst); |
| read_unlock_bh(&table->tb6_lock); |
| |
| -- |
| 2.12.0 |
| |