Message ID | 1364182589-1766-1-git-send-email-pshelar@nicira.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
This issue is present in net-tree. Can you apply this patch net-tree? Thanks. On Sun, Mar 24, 2013 at 8:36 PM, Pravin B Shelar <pshelar@nicira.com> wrote: > ip-header id needs to be incremented even if IP_DF flag is set. > This behaviour was changed in commit 490ab08127cebc25e3a26 > (IP_GRE: Fix IP-Identification). > > Following patch fixes it so that identification is always > incremented. > > Reported-by: Cong Wang <amwang@redhat.com> > Signed-off-by: Pravin B Shelar <pshelar@nicira.com> > --- > include/net/ipip.h | 16 ++++++---------- > net/ipv4/af_inet.c | 3 +-- > 2 files changed, 7 insertions(+), 12 deletions(-) > > diff --git a/include/net/ipip.h b/include/net/ipip.h > index 0c046e3..483b91a 100644 > --- a/include/net/ipip.h > +++ b/include/net/ipip.h > @@ -74,15 +74,11 @@ 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; > - else > - __ip_select_ident(iph, dst, > - (skb_shinfo(skb)->gso_segs ?: 1) - 1); > - } > + /* Use inner packet iph-id if possible. */ > + if (skb->protocol == htons(ETH_P_IP) && old_iph->id) > + iph->id = old_iph->id; > + else > + __ip_select_ident(iph, dst, > + (skb_shinfo(skb)->gso_segs ?: 1) - 1); > } > #endif > diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c > index 9e5882c..70b2d4c 100644 > --- a/net/ipv4/af_inet.c > +++ b/net/ipv4/af_inet.c > @@ -1334,8 +1334,7 @@ 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->id = htons(id++); > } > iph->tot_len = htons(skb->len - skb->mac_len); > iph->check = 0; > -- > 1.7.1 > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Pravin Shelar <pshelar@nicira.com> Date: Tue, 26 Mar 2013 10:34:17 -0700 > This issue is present in net-tree. Can you apply this patch net-tree? Good point, applied to 'net', thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/net/ipip.h b/include/net/ipip.h index 0c046e3..483b91a 100644 --- a/include/net/ipip.h +++ b/include/net/ipip.h @@ -74,15 +74,11 @@ 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; - else - __ip_select_ident(iph, dst, - (skb_shinfo(skb)->gso_segs ?: 1) - 1); - } + /* Use inner packet iph-id if possible. */ + if (skb->protocol == htons(ETH_P_IP) && old_iph->id) + iph->id = old_iph->id; + else + __ip_select_ident(iph, dst, + (skb_shinfo(skb)->gso_segs ?: 1) - 1); } #endif diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 9e5882c..70b2d4c 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -1334,8 +1334,7 @@ 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->id = htons(id++); } iph->tot_len = htons(skb->len - skb->mac_len); iph->check = 0;
ip-header id needs to be incremented even if IP_DF flag is set. This behaviour was changed in commit 490ab08127cebc25e3a26 (IP_GRE: Fix IP-Identification). Following patch fixes it so that identification is always incremented. Reported-by: Cong Wang <amwang@redhat.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com> --- include/net/ipip.h | 16 ++++++---------- net/ipv4/af_inet.c | 3 +-- 2 files changed, 7 insertions(+), 12 deletions(-)