Lines Matching full:rule

35 static bool fib6_rule_matchall(const struct fib_rule *rule)  in fib6_rule_matchall()  argument
37 struct fib6_rule *r = container_of(rule, struct fib6_rule, common); in fib6_rule_matchall()
41 return fib_rule_matchall(rule); in fib6_rule_matchall()
44 bool fib6_rule_default(const struct fib_rule *rule) in fib6_rule_default() argument
46 if (!fib6_rule_matchall(rule) || rule->action != FR_ACT_TO_TBL || in fib6_rule_default()
47 rule->l3mdev) in fib6_rule_default()
49 if (rule->table != RT6_TABLE_LOCAL && rule->table != RT6_TABLE_MAIN) in fib6_rule_default()
136 static int fib6_rule_saddr(struct net *net, struct fib_rule *rule, int flags, in fib6_rule_saddr() argument
139 struct fib6_rule *r = (struct fib6_rule *)rule; in fib6_rule_saddr()
142 * we check the result if it meets requirement of the rule. in fib6_rule_saddr()
144 if ((rule->flags & FIB_RULE_FIND_SADDR) && in fib6_rule_saddr()
161 static int fib6_rule_action_alt(struct fib_rule *rule, struct flowi *flp, in fib6_rule_action_alt() argument
166 struct net *net = rule->fr_net; in fib6_rule_action_alt()
171 switch (rule->action) { in fib6_rule_action_alt()
183 tb_id = fib_rule_get_table(rule, arg); in fib6_rule_action_alt()
191 err = fib6_rule_saddr(net, rule, flags, flp6, in fib6_rule_action_alt()
199 static int __fib6_rule_action(struct fib_rule *rule, struct flowi *flp, in __fib6_rule_action() argument
206 struct net *net = rule->fr_net; in __fib6_rule_action()
211 switch (rule->action) { in __fib6_rule_action()
229 tb_id = fib_rule_get_table(rule, arg); in __fib6_rule_action()
243 err = fib6_rule_saddr(net, rule, flags, flp6, in __fib6_rule_action()
267 INDIRECT_CALLABLE_SCOPE int fib6_rule_action(struct fib_rule *rule, in fib6_rule_action() argument
272 return fib6_rule_action_alt(rule, flp, flags, arg); in fib6_rule_action()
274 return __fib6_rule_action(rule, flp, flags, arg); in fib6_rule_action()
277 INDIRECT_CALLABLE_SCOPE bool fib6_rule_suppress(struct fib_rule *rule, in fib6_rule_suppress() argument
294 if (rt->rt6i_dst.plen <= rule->suppress_prefixlen) in fib6_rule_suppress()
300 if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup) in fib6_rule_suppress()
310 INDIRECT_CALLABLE_SCOPE int fib6_rule_match(struct fib_rule *rule, in fib6_rule_match() argument
313 struct fib6_rule *r = (struct fib6_rule *) rule; in fib6_rule_match()
340 if (rule->ip_proto && (rule->ip_proto != fl6->flowi6_proto)) in fib6_rule_match()
343 if (fib_rule_port_range_set(&rule->sport_range) && in fib6_rule_match()
344 !fib_rule_port_inrange(&rule->sport_range, fl6->fl6_sport)) in fib6_rule_match()
347 if (fib_rule_port_range_set(&rule->dport_range) && in fib6_rule_match()
348 !fib_rule_port_inrange(&rule->dport_range, fl6->fl6_dport)) in fib6_rule_match()
397 static int fib6_rule_configure(struct fib_rule *rule, struct sk_buff *skb, in fib6_rule_configure() argument
404 struct fib6_rule *rule6 = (struct fib6_rule *) rule; in fib6_rule_configure()
420 if (rule->action == FR_ACT_TO_TBL && !rule->l3mdev) { in fib6_rule_configure()
421 if (rule->table == RT6_TABLE_UNSPEC) { in fib6_rule_configure()
426 if (fib6_new_table(net, rule->table) == NULL) { in fib6_rule_configure()
441 if (fib_rule_requires_fldissect(rule)) in fib6_rule_configure()
450 static int fib6_rule_delete(struct fib_rule *rule) in fib6_rule_delete() argument
452 struct net *net = rule->fr_net; in fib6_rule_delete()
455 fib_rule_requires_fldissect(rule)) in fib6_rule_delete()
461 static int fib6_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh, in fib6_rule_compare() argument
464 struct fib6_rule *rule6 = (struct fib6_rule *) rule; in fib6_rule_compare()
504 static int fib6_rule_fill(struct fib_rule *rule, struct sk_buff *skb, in fib6_rule_fill() argument
507 struct fib6_rule *rule6 = (struct fib6_rule *) rule; in fib6_rule_fill()
537 static size_t fib6_rule_nlmsg_payload(struct fib_rule *rule) in fib6_rule_nlmsg_payload() argument