lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 22 Mar 2013 15:50:00 +0800 From: Cong Wang <amwang@...hat.com> To: netdev@...r.kernel.org Cc: Pravin B Shelar <pshelar@...ira.com>, Eric Dumazet <edumazet@...gle.com>, "David S. Miller" <davem@...emloft.net>, Cong Wang <amwang@...hat.com> Subject: [Patch net-next] ip_gre: increase inner ip header ID during segmentation From: Cong Wang <amwang@...hat.com> According to the previous discussion [1] on netdev list, DaveM insists we should increase the IP header ID for each segmented packets. This patch fixes it. Cc: Pravin B Shelar <pshelar@...ira.com> Cc: Eric Dumazet <edumazet@...gle.com> Cc: "David S. Miller" <davem@...emloft.net> Signed-off-by: Cong Wang <amwang@...hat.com> 1. http://marc.info/?t=136384172700001&r=1&w=2 --- diff --git a/net/ipv4/gre.c b/net/ipv4/gre.c index 7a4c710..3cf20a4 100644 --- a/net/ipv4/gre.c +++ b/net/ipv4/gre.c @@ -125,9 +125,11 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb, netdev_features_t enc_features; int ghl = GRE_HEADER_SECTION; struct gre_base_hdr *greh; + struct iphdr *iph; int mac_len = skb->mac_len; int tnl_hlen; bool csum; + __be16 id; if (unlikely(skb_shinfo(skb)->gso_type & ~(SKB_GSO_TCPV4 | @@ -170,6 +172,8 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb, skb_set_network_header(skb, skb_inner_network_offset(skb)); skb->mac_len = skb_inner_network_offset(skb); + iph = (struct iphdr *)skb->data; + id = iph->id; /* segment inner packet. */ enc_features = skb->dev->hw_enc_features & netif_skb_features(skb); segs = skb_mac_gso_segment(skb, enc_features); @@ -179,6 +183,8 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb, skb = segs; tnl_hlen = skb_tnl_header_len(skb); do { + iph = (struct iphdr *)skb->data; + iph->id = id++; __skb_push(skb, ghl); if (csum) { __be32 *pcsum; -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists