Lines Matching defs:frh
176 static int validate_rulemsg(struct fib_rule_hdr *frh, struct nlattr **tb,
181 if (frh->src_len)
183 frh->src_len > (ops->addr_size * 8) ||
187 if (frh->dst_len)
189 frh->dst_len > (ops->addr_size * 8) ||
200 struct fib_rule_hdr *frh = nlmsg_data(nlh);
206 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh)))
209 ops = lookup_rules_ops(frh->family);
215 err = nlmsg_parse(nlh, sizeof(*frh), tb, FRA_MAX, ops->policy);
219 err = validate_rulemsg(frh, tb, ops);
254 rule->action = frh->action;
255 rule->flags = frh->flags;
256 rule->table = frh_get_table(frh, tb);
283 err = ops->configure(rule, skb, nlh, frh, tb);
336 struct fib_rule_hdr *frh = nlmsg_data(nlh);
342 if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh)))
345 ops = lookup_rules_ops(frh->family);
351 err = nlmsg_parse(nlh, sizeof(*frh), tb, FRA_MAX, ops->policy);
355 err = validate_rulemsg(frh, tb, ops);
360 if (frh->action && (frh->action != rule->action))
363 if (frh->table && (frh_get_table(frh, tb) != rule->table))
382 if (!ops->compare(rule, frh, tb))
446 struct fib_rule_hdr *frh;
448 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*frh), flags);
452 frh = nlmsg_data(nlh);
453 frh->table = rule->table;
455 frh->res1 = 0;
456 frh->res2 = 0;
457 frh->action = rule->action;
458 frh->flags = rule->flags;
461 frh->flags |= FIB_RULE_UNRESOLVED;
467 frh->flags |= FIB_RULE_DEV_DETACHED;
482 if (ops->fill(rule, skb, nlh, frh) < 0)