File tree Expand file tree Collapse file tree 1 file changed +6
-1
lines changed Expand file tree Collapse file tree 1 file changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -2304,7 +2304,8 @@ static struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb,
2304
2304
struct sk_buff * segs = ERR_PTR (- EINVAL );
2305
2305
int mac_len = skb -> mac_len ;
2306
2306
int tnl_hlen = skb_inner_mac_header (skb ) - skb_transport_header (skb );
2307
- int outer_hlen ;
2307
+ int outer_hlen , id ;
2308
+ struct iphdr * iph ;
2308
2309
netdev_features_t enc_features ;
2309
2310
2310
2311
if (unlikely (!pskb_may_pull (skb , tnl_hlen )))
@@ -2315,6 +2316,8 @@ static struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb,
2315
2316
skb_reset_mac_header (skb );
2316
2317
skb_set_network_header (skb , skb_inner_network_offset (skb ));
2317
2318
skb -> mac_len = skb_inner_network_offset (skb );
2319
+ iph = ip_hdr (skb );
2320
+ id = ntohs (iph -> id );
2318
2321
2319
2322
/* segment inner packet. */
2320
2323
enc_features = skb -> dev -> hw_enc_features & netif_skb_features (skb );
@@ -2329,6 +2332,8 @@ static struct sk_buff *skb_udp_tunnel_segment(struct sk_buff *skb,
2329
2332
int udp_offset = outer_hlen - tnl_hlen ;
2330
2333
2331
2334
skb -> mac_len = mac_len ;
2335
+ iph = (struct iphdr * )skb_inner_network_header (skb );
2336
+ iph -> id = htons (id ++ );
2332
2337
2333
2338
skb_push (skb , outer_hlen );
2334
2339
skb_reset_mac_header (skb );
You can’t perform that action at this time.
0 commit comments