From: Jan Engelhardt Date: Tue, 15 Jan 2008 07:41:34 +0000 (-0800) Subject: [NETFILTER]: xt_pkttype: Add explicit check for IPv4 X-Git-Tag: v2.6.25-rc1~1162^2~729 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13b0e83b5b52d1a0ab87772ecc93fe91b2740386;p=linux-2.6 [NETFILTER]: xt_pkttype: Add explicit check for IPv4 In the PACKET_LOOPBACK case, the skb data was always interpreted as IPv4, but that is not valid for IPv6, obviously. Fix this by adding an extra condition to check for AF_INET. Signed-off-by: Jan Engelhardt Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller --- diff --git a/net/netfilter/xt_pkttype.c b/net/netfilter/xt_pkttype.c index 276244902a..080f3246ee 100644 --- a/net/netfilter/xt_pkttype.c +++ b/net/netfilter/xt_pkttype.c @@ -31,7 +31,8 @@ pkttype_mt(const struct sk_buff *skb, const struct net_device *in, const struct xt_pkttype_info *info = matchinfo; if (skb->pkt_type == PACKET_LOOPBACK) - type = ipv4_is_multicast(ip_hdr(skb)->daddr) + type = match->family == AF_INET && + ipv4_is_multicast(ip_hdr(skb)->daddr) ? PACKET_MULTICAST : PACKET_BROADCAST; else