diff --git a/net/ipv6/fib6_rules.c b/net/ipv6/fib6_rules.c index 7b4908cc52b36b361832ff422d7ede2459b46633..91f6233d8efd47955b6aa9da1a0d850bf693075e 100644 --- a/net/ipv6/fib6_rules.c +++ b/net/ipv6/fib6_rules.c @@ -121,6 +121,9 @@ static int fib6_rule_match(struct fib_rule *rule, struct flowi *fl, int flags) !ipv6_prefix_equal(&fl->fl6_src, &r->src.addr, r->src.plen)) return 0; + if (r->tclass && r->tclass != ((ntohl(fl->fl6_flowlabel) >> 20) & 0xff)) + return 0; + return 1; }