From 13b0e83b5b52d1a0ab87772ecc93fe91b2740386 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Mon, 14 Jan 2008 23:41:34 -0800 Subject: [PATCH] [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 --- net/netfilter/xt_pkttype.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/netfilter/xt_pkttype.c b/net/netfilter/xt_pkttype.c index 276244902ab5..080f3246eee7 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