fib6_rules.c (71af75b6929458d85f63c0649dc26d6f4c19729e) fib6_rules.c (cdef485217d30382f3bf6448c54b4401648fe3f1)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * net/ipv6/fib6_rules.c IPv6 Routing Policy Rules
4 *
5 * Copyright (C)2003-2006 Helsinki University of Technology
6 * Copyright (C)2003-2006 USAGI/WIDE Project
7 *
8 * Authors

--- 253 unchanged lines hidden (view full) ---

262{
263 if (arg->lookup_ptr == fib6_table_lookup)
264 return fib6_rule_action_alt(rule, flp, flags, arg);
265
266 return __fib6_rule_action(rule, flp, flags, arg);
267}
268
269INDIRECT_CALLABLE_SCOPE bool fib6_rule_suppress(struct fib_rule *rule,
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * net/ipv6/fib6_rules.c IPv6 Routing Policy Rules
4 *
5 * Copyright (C)2003-2006 Helsinki University of Technology
6 * Copyright (C)2003-2006 USAGI/WIDE Project
7 *
8 * Authors

--- 253 unchanged lines hidden (view full) ---

262{
263 if (arg->lookup_ptr == fib6_table_lookup)
264 return fib6_rule_action_alt(rule, flp, flags, arg);
265
266 return __fib6_rule_action(rule, flp, flags, arg);
267}
268
269INDIRECT_CALLABLE_SCOPE bool fib6_rule_suppress(struct fib_rule *rule,
270 int flags,
270 struct fib_lookup_arg *arg)
271{
272 struct fib6_result *res = arg->result;
273 struct rt6_info *rt = res->rt6;
274 struct net_device *dev = NULL;
275
276 if (!rt)
277 return false;

--- 11 unchanged lines hidden (view full) ---

289 * belonging to a forbidden interface group
290 */
291 if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup)
292 goto suppress_route;
293
294 return false;
295
296suppress_route:
271 struct fib_lookup_arg *arg)
272{
273 struct fib6_result *res = arg->result;
274 struct rt6_info *rt = res->rt6;
275 struct net_device *dev = NULL;
276
277 if (!rt)
278 return false;

--- 11 unchanged lines hidden (view full) ---

290 * belonging to a forbidden interface group
291 */
292 if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup)
293 goto suppress_route;
294
295 return false;
296
297suppress_route:
297 if (!(arg->flags & FIB_LOOKUP_NOREF))
298 ip6_rt_put(rt);
298 ip6_rt_put_flags(rt, flags);
299 return true;
300}
301
302INDIRECT_CALLABLE_SCOPE int fib6_rule_match(struct fib_rule *rule,
303 struct flowi *fl, int flags)
304{
305 struct fib6_rule *r = (struct fib6_rule *) rule;
306 struct flowi6 *fl6 = &fl->u.ip6;

--- 209 unchanged lines hidden ---
299 return true;
300}
301
302INDIRECT_CALLABLE_SCOPE int fib6_rule_match(struct fib_rule *rule,
303 struct flowi *fl, int flags)
304{
305 struct fib6_rule *r = (struct fib6_rule *) rule;
306 struct flowi6 *fl6 = &fl->u.ip6;

--- 209 unchanged lines hidden ---