[NETFILTER]: xt_pkttype: Add explicit check for IPv4
authorJan Engelhardt <jengelh@computergmbh.de>
Tue, 15 Jan 2008 07:41:34 +0000 (23:41 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:02:24 +0000 (15:02 -0800)
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 <jengelh@computergmbh.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netfilter/xt_pkttype.c

index 2762449..080f324 100644 (file)
@@ -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