patch-2.4.4 linux/include/net/ip.h
Next file: linux/include/net/ipip.h
Previous file: linux/include/net/icmp.h
Back to the patch index
Back to the overall index
- Lines: 21
- Date:
Fri Apr 27 15:49:41 2001
- Orig file:
v2.4.3/linux/include/net/ip.h
- Orig date:
Mon Mar 26 15:48:31 2001
diff -u --recursive --new-file v2.4.3/linux/include/net/ip.h linux/include/net/ip.h
@@ -188,11 +188,16 @@
extern void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst);
-static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst)
+static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst, struct sock *sk)
{
- if (iph->frag_off&__constant_htons(IP_DF))
- iph->id = 0;
- else
+ if (iph->frag_off&__constant_htons(IP_DF)) {
+ /* This is only to work around buggy Windows95/2000
+ * VJ compression implementations. If the ID field
+ * does not change, they drop every other packet in
+ * a TCP stream using header compression.
+ */
+ iph->id = ((sk && sk->daddr) ? htons(sk->protinfo.af_inet.id++) : 0);
+ } else
__ip_select_ident(iph, dst);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)