|
@@ -1909,17 +1909,20 @@ static struct sock *__udp4_lib_demux_lookup(struct net *net,
|
|
|
|
|
|
void udp_v4_early_demux(struct sk_buff *skb)
|
|
|
{
|
|
|
- const struct iphdr *iph = ip_hdr(skb);
|
|
|
- const struct udphdr *uh = udp_hdr(skb);
|
|
|
+ struct net *net = dev_net(skb->dev);
|
|
|
+ const struct iphdr *iph;
|
|
|
+ const struct udphdr *uh;
|
|
|
struct sock *sk;
|
|
|
struct dst_entry *dst;
|
|
|
- struct net *net = dev_net(skb->dev);
|
|
|
int dif = skb->dev->ifindex;
|
|
|
|
|
|
/* validate the packet */
|
|
|
if (!pskb_may_pull(skb, skb_transport_offset(skb) + sizeof(struct udphdr)))
|
|
|
return;
|
|
|
|
|
|
+ iph = ip_hdr(skb);
|
|
|
+ uh = udp_hdr(skb);
|
|
|
+
|
|
|
if (skb->pkt_type == PACKET_BROADCAST ||
|
|
|
skb->pkt_type == PACKET_MULTICAST)
|
|
|
sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr,
|