| 1 | From: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> |
| 2 | Date: Tue, 10 May 2011 08:00:21 +0000 (+0200) |
| 3 | Subject: netfilter: IPv6: fix DSCP mangle code |
| 4 | X-Git-Tag: v2.6.39~15^2~13^2~1 |
| 5 | X-Git-Url: http://git390.marist.edu/cgi-bin/gitweb.cgi?p=linux-2.6.git;a=commitdiff_plain;h=1ed2f73d90fb49bcf5704aee7e9084adb882bfc5 |
| 6 | |
| 7 | netfilter: IPv6: fix DSCP mangle code |
| 8 | |
| 9 | The mask indicates the bits one wants to zero out, so it needs to be |
| 10 | inverted before applying to the original TOS field. |
| 11 | |
| 12 | Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> |
| 13 | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> |
| 14 | --- |
| 15 | |
| 16 | --- a/net/netfilter/xt_DSCP.c |
| 17 | +++ b/net/netfilter/xt_DSCP.c |
| 18 | @@ -135,7 +135,7 @@ tos_tg6(struct sk_buff *skb, const struc |
| 19 | u_int8_t orig, nv; |
| 20 | |
| 21 | orig = ipv6_get_dsfield(iph); |
| 22 | - nv = (orig & info->tos_mask) ^ info->tos_value; |
| 23 | + nv = (orig & ~info->tos_mask) ^ info->tos_value; |
| 24 | |
| 25 | if (orig != nv) { |
| 26 | if (!skb_make_writable(skb, sizeof(struct iphdr))) |
| 27 | |