diff options
Diffstat (limited to 'net/openvswitch/vport-gre.c')
-rw-r--r-- | net/openvswitch/vport-gre.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/net/openvswitch/vport-gre.c b/net/openvswitch/vport-gre.c index 00270b608844..8e61a5c6ae7c 100644 --- a/net/openvswitch/vport-gre.c +++ b/net/openvswitch/vport-gre.c | |||
@@ -108,7 +108,7 @@ static int gre_rcv(struct sk_buff *skb, | |||
108 | return PACKET_REJECT; | 108 | return PACKET_REJECT; |
109 | 109 | ||
110 | key = key_to_tunnel_id(tpi->key, tpi->seq); | 110 | key = key_to_tunnel_id(tpi->key, tpi->seq); |
111 | ovs_flow_tun_info_init(&tun_info, ip_hdr(skb), key, | 111 | ovs_flow_tun_info_init(&tun_info, ip_hdr(skb), 0, 0, key, |
112 | filter_tnl_flags(tpi->flags), NULL, 0); | 112 | filter_tnl_flags(tpi->flags), NULL, 0); |
113 | 113 | ||
114 | ovs_vport_receive(vport, skb, &tun_info); | 114 | ovs_vport_receive(vport, skb, &tun_info); |
@@ -284,12 +284,22 @@ static void gre_tnl_destroy(struct vport *vport) | |||
284 | gre_exit(); | 284 | gre_exit(); |
285 | } | 285 | } |
286 | 286 | ||
287 | static int gre_get_egress_tun_info(struct vport *vport, struct sk_buff *skb, | ||
288 | struct ovs_tunnel_info *egress_tun_info) | ||
289 | { | ||
290 | return ovs_tunnel_get_egress_info(egress_tun_info, | ||
291 | ovs_dp_get_net(vport->dp), | ||
292 | OVS_CB(skb)->egress_tun_info, | ||
293 | IPPROTO_GRE, skb->mark, 0, 0); | ||
294 | } | ||
295 | |||
287 | static struct vport_ops ovs_gre_vport_ops = { | 296 | static struct vport_ops ovs_gre_vport_ops = { |
288 | .type = OVS_VPORT_TYPE_GRE, | 297 | .type = OVS_VPORT_TYPE_GRE, |
289 | .create = gre_create, | 298 | .create = gre_create, |
290 | .destroy = gre_tnl_destroy, | 299 | .destroy = gre_tnl_destroy, |
291 | .get_name = gre_get_name, | 300 | .get_name = gre_get_name, |
292 | .send = gre_tnl_send, | 301 | .send = gre_tnl_send, |
302 | .get_egress_tun_info = gre_get_egress_tun_info, | ||
293 | .owner = THIS_MODULE, | 303 | .owner = THIS_MODULE, |
294 | }; | 304 | }; |
295 | 305 | ||