Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 330305cc authored by Pravin B Shelar's avatar Pravin B Shelar Committed by David S. Miller
Browse files

ipv4: Fix ip-header identification for gso packets.



ip-header id needs to be incremented even if IP_DF flag is set.
This behaviour was changed in commit 490ab081
(IP_GRE: Fix IP-Identification).

Following patch fixes it so that identification is always
incremented.

Reported-by: default avatarCong Wang <amwang@redhat.com>
Signed-off-by: default avatarPravin B Shelar <pshelar@nicira.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9fe16b78
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -77,9 +77,6 @@ static inline void tunnel_ip_select_ident(struct sk_buff *skb,
{
	struct iphdr *iph = ip_hdr(skb);

	if (iph->frag_off & htons(IP_DF))
		iph->id	= 0;
	else {
	/* Use inner packet iph-id if possible. */
	if (skb->protocol == htons(ETH_P_IP) && old_iph->id)
		iph->id	= old_iph->id;
@@ -87,5 +84,4 @@ static inline void tunnel_ip_select_ident(struct sk_buff *skb,
		__ip_select_ident(iph, dst,
				  (skb_shinfo(skb)->gso_segs ?: 1) - 1);
}
}
#endif
+1 −2
Original line number Diff line number Diff line
@@ -1333,7 +1333,6 @@ static struct sk_buff *inet_gso_segment(struct sk_buff *skb,
				iph->frag_off |= htons(IP_MF);
			offset += (skb->len - skb->mac_len - iph->ihl * 4);
		} else  {
			if (!(iph->frag_off & htons(IP_DF)))
			iph->id = htons(id++);
		}
		iph->tot_len = htons(skb->len - skb->mac_len);