X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Fvport-gre.c;h=5beae42eded3ed680c4c740fe6f9bd31ed479965;hb=f613a0d72c521ca3a4eeb2c29ac523f6fdf72667;hp=9c1c1cc825388ed64229f28058f338077c21d20f;hpb=aae369c706cd56886f8560c43960110f79e062dc;p=sliver-openvswitch.git diff --git a/datapath/vport-gre.c b/datapath/vport-gre.c index 9c1c1cc82..5beae42ed 100644 --- 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 - * 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; + __ip_select_ident(ip_hdr(skb), dst, 0); return skb; } @@ -385,8 +388,8 @@ static void gre_exit(void) } const struct vport_ops gre_vport_ops = { - .type = ODP_VPORT_TYPE_GRE, - .flags = VPORT_F_GEN_STATS | VPORT_F_TUN_ID, + .type = OVS_VPORT_TYPE_GRE, + .flags = VPORT_F_TUN_ID, .init = gre_init, .exit = gre_exit, .create = gre_create,