Lines Matching full:dscp
39 dscp_t dscp; member
41 u8 dscp_full:1; /* DSCP or TOS selector */
55 if (r->dst_len || r->src_len || r->dscp) in fib4_rule_matchall()
191 /* When DSCP selector is used we need to match on the entire DSCP field in fib4_rule_match()
193 * to mask the upper three DSCP bits prior to matching to maintain in fib4_rule_match()
197 (r->dscp ^ inet_dsfield_to_dscp(fl4->flowi4_tos)) & r->dscp_mask) in fib4_rule_match()
199 else if (!r->dscp_full && r->dscp && in fib4_rule_match()
200 !fib_dscp_masked_match(r->dscp, fl4)) in fib4_rule_match()
234 if (rule4->dscp) { in fib4_nl2rule_dscp()
235 NL_SET_ERR_MSG(extack, "Cannot specify both TOS and DSCP"); in fib4_nl2rule_dscp()
239 rule4->dscp = inet_dsfield_to_dscp(nla_get_u8(nla) << 2); in fib4_nl2rule_dscp()
254 "Cannot specify DSCP mask without DSCP value"); in fib4_nl2rule_dscp_mask()
259 if (rule4->dscp & ~dscp_mask) { in fib4_nl2rule_dscp_mask()
260 NL_SET_ERR_MSG_ATTR(extack, nla, "Invalid DSCP mask"); in fib4_nl2rule_dscp_mask()
289 /* IPv4 currently doesn't handle high order DSCP bits correctly */ in fib4_rule_configure()
294 rule4->dscp = inet_dsfield_to_dscp(frh->tos); in fib4_rule_configure()
388 inet_dscp_to_dsfield(rule4->dscp) != frh->tos)) in fib4_rule_compare()
392 dscp_t dscp; in fib4_rule_compare() local
394 dscp = inet_dsfield_to_dscp(nla_get_u8(tb[FRA_DSCP]) << 2); in fib4_rule_compare()
395 if (!rule4->dscp_full || rule4->dscp != dscp) in fib4_rule_compare()
432 inet_dscp_to_dsfield(rule4->dscp) >> 2) || in fib4_rule_fill()
437 frh->tos = inet_dscp_to_dsfield(rule4->dscp); in fib4_rule_fill()
461 + nla_total_size(1) /* dscp */ in fib4_rule_nlmsg_payload()
462 + nla_total_size(1); /* dscp mask */ in fib4_rule_nlmsg_payload()