netfilter: ipt_ecn: fix inversion for IP header ECN match
Userspace allows to specify inversion for IP header ECN matches, the kernel silently accepts it, but doesn't invert the match result. Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
@@ -25,7 +25,8 @@ MODULE_LICENSE("GPL");
|
|||||||
static inline bool match_ip(const struct sk_buff *skb,
|
static inline bool match_ip(const struct sk_buff *skb,
|
||||||
const struct ipt_ecn_info *einfo)
|
const struct ipt_ecn_info *einfo)
|
||||||
{
|
{
|
||||||
return (ip_hdr(skb)->tos & IPT_ECN_IP_MASK) == einfo->ip_ect;
|
return ((ip_hdr(skb)->tos & IPT_ECN_IP_MASK) == einfo->ip_ect) ^
|
||||||
|
!!(einfo->invert & IPT_ECN_OP_MATCH_IP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool match_tcp(const struct sk_buff *skb,
|
static inline bool match_tcp(const struct sk_buff *skb,
|
||||||
|
Reference in New Issue
Block a user