On Wed, Nov 14, 2018 at 05:30:37PM +0300, Pavel Balaev wrote:
> Hello, for now IP rules supports only old TOS values and we cannot use
> DSCP.
> 
> This patch adds support for DSCP values in IP rules:
> 
> $ ip r add default via 192.168.0.6 table test
> $ ip ru add tos 0x80 table test
> $ ip ru
> 0:    from all lookup local 
> 32764:        from all tos CS4 lookup test 
> 32766:        from all lookup main 
> 32767:        from all lookup default 
> $ ip r get fibmatch 8.8.8.9 tos 0x80
> default tos CS4 via 192.168.0.6 dev lan table test
> 
> Signed-off-by: Pavel Balaev <m...@void.so>
> ---
>  net/ipv4/fib_rules.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
> index f8eb78d0..7a6c5bfe 100644
> --- a/net/ipv4/fib_rules.c
> +++ b/net/ipv4/fib_rules.c
> @@ -220,7 +220,7 @@ static int fib4_rule_configure(struct fib_rule *rule, 
> struct sk_buff *skb,
>       int err = -EINVAL;
>       struct fib4_rule *rule4 = (struct fib4_rule *) rule;
>  
> -     if (frh->tos & ~IPTOS_TOS_MASK) {
> +     if (frh->tos & ~(IPTOS_TOS_MASK | IPTOS_PREC_MASK)) {
>               NL_SET_ERR_MSG(extack, "Invalid tos");
>               goto errout;
>       }
> -- 
> 2.18.1
> 

In addition. This patch adds ability to set newer RFC2597 values. They
also presents in /etc/iproute2/rt_dsfield:

# Newer RFC2597 values
0x28    AF11
0x30    AF12
0x38    AF13
0x48    AF21
....

If one tries to apply this values with iproure2 (ip rule add tos 0x28
...) he will get error from netlink: "Invalid tos" for this moment.

Reply via email to