aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport-gre.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/openvswitch/vport-gre.c')
-rw-r--r--net/openvswitch/vport-gre.c12
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
287static 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
287static struct vport_ops ovs_gre_vport_ops = { 296static 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