--- zzzz-none-000/linux-2.6.13.1/net/ipv4/ip_input.c 2005-09-10 02:42:58.000000000 +0000 +++ ohio-7170-487/linux-2.6.13.1/net/ipv4/ip_input.c 2008-02-25 19:29:11.000000000 +0000 @@ -285,6 +285,8 @@ struct iphdr *iph = skb->nh.iph; int err; + skb_trace(skb, 15); + /* * Initialise the virtual path cache for the packet. It describes * how the packet travels inside Linux networking. @@ -344,6 +346,9 @@ if (ip_options_rcv_srr(skb)) goto drop; } + } else { + struct ip_options *opt = &(IPCB(skb)->opt); + opt->optlen = 0; } return dst_input(skb); @@ -417,6 +422,9 @@ } } + /* 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);