X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv4%2Fip_input.c;h=212734ca238fa88e2bcee0eb43e13c246a5f9720;hb=a2f44b27303a5353859d77a3e96a1d3f33f56ab7;hp=1826d4ef0e604eca9b90eb984c7f02de034038c9;hpb=134734d875a0a48d994ef20b9905209b4b8b6f75;p=linux-2.6.git diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c index 1826d4ef0..212734ca2 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -121,7 +121,6 @@ #include #include #include -#include #include #include @@ -337,7 +336,7 @@ static inline int ip_rcv_finish(struct sk_buff *skb) * Initialise the virtual path cache for the packet. It describes * how the packet travels inside Linux networking. */ - if (likely(skb->dst == NULL)) { + if (skb->dst == NULL) { int err = ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, skb->dev); if (unlikely(err)) { @@ -429,6 +428,9 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, goto drop; } + /* Remove any debris in the socket control block */ + memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); + return NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, dev, NULL, ip_rcv_finish); @@ -440,7 +442,4 @@ out: return NET_RX_DROP; } -#if defined(CONFIG_VNET) || defined(CONFIG_VNET_MODULE) -EXPORT_SYMBOL(ip_rcv); -#endif EXPORT_SYMBOL(ip_statistics);