diff -ur v2.4.25/linux/net/ipv4/ipvs/ip_vs_conn.c linux/net/ipv4/ipvs/ip_vs_conn.c --- v2.4.25/linux/net/ipv4/ipvs/ip_vs_conn.c 2003-11-28 22:04:14.000000000 +0200 +++ linux/net/ipv4/ipvs/ip_vs_conn.c 2004-03-20 11:19:35.121157568 +0200 @@ -890,8 +890,6 @@ /* update checksum because skb might be defragmented */ ip_send_check(old_iph); - skb->h.raw = skb->nh.raw; - /* * Okay, now see if we can stuff it in the buffer as-is. */ @@ -911,6 +909,7 @@ old_iph = skb->nh.iph; } + skb->h.raw = skb->nh.raw; skb->nh.raw = skb_push(skb, sizeof(struct iphdr)); memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));