projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dpif-linux: Use get_32aligned_u64() in an appropriate place.
[openvswitch]
/
datapath
/
vport-gre.c
diff --git
a/datapath/vport-gre.c
b/datapath/vport-gre.c
index 0f45f8f705027bf2239045df62eb900c7391c99c..8775d38c54dc16d14a2a67caa79cf33c444072e5 100644
(file)
--- a/
datapath/vport-gre.c
+++ b/
datapath/vport-gre.c
@@
-103,9
+103,12
@@
static struct sk_buff *gre_update_header(const struct vport *vport,
0));
/*
* Allow our local IP stack to fragment the outer packet even if the
0));
/*
* Allow our local IP stack to fragment the outer packet even if the
- * DF bit is set as a last resort.
+ * DF bit is set as a last resort. We also need to force selection of
+ * an IP ID here because Linux will otherwise leave it at 0 if the
+ * packet originally had DF set.
*/
skb->local_df = 1;
*/
skb->local_df = 1;
+ __ip_select_ident(ip_hdr(skb), dst, 0);
return skb;
}
return skb;
}
@@
-204,7
+207,7
@@
static void gre_err(struct sk_buff *skb, u32 info)
* out key as if it were the in key and then check to see if the input
* and output keys are the same.
*/
* out key as if it were the in key and then check to see if the input
* and output keys are the same.
*/
- if (mutable->in_key != mutable->out_key)
+ if (mutable->
key.
in_key != mutable->out_key)
return;
if (!!(mutable->flags & TNL_F_IN_KEY_MATCH) !=
return;
if (!!(mutable->flags & TNL_F_IN_KEY_MATCH) !=
@@
-342,7
+345,7
@@
static int gre_rcv(struct sk_buff *skb)
__skb_pull(skb, hdr_len);
skb_postpull_rcsum(skb, skb_transport_header(skb), hdr_len + ETH_HLEN);
__skb_pull(skb, hdr_len);
skb_postpull_rcsum(skb, skb_transport_header(skb), hdr_len + ETH_HLEN);
- tnl_rcv(vport, skb);
+ tnl_rcv(vport, skb
, iph->tos
);
return 0;
error:
return 0;
error:
@@
-385,8
+388,8
@@
static void gre_exit(void)
}
const struct vport_ops gre_vport_ops = {
}
const struct vport_ops gre_vport_ops = {
- .type = O
DP
_VPORT_TYPE_GRE,
- .flags = VPORT_F_
GEN_STATS | VPORT_F_
TUN_ID,
+ .type = O
VS
_VPORT_TYPE_GRE,
+ .flags = VPORT_F_TUN_ID,
.init = gre_init,
.exit = gre_exit,
.create = gre_create,
.init = gre_init,
.exit = gre_exit,
.create = gre_create,