aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport-gre.c
diff options
context:
space:
mode:
authorWenyu Zhang <wenyuz@vmware.com>2014-11-06 09:51:24 -0500
committerPravin B Shelar <pshelar@nicira.com>2014-11-09 21:58:44 -0500
commit8f0aad6f35f7e8b3118b7b8a65e8e76b135cc4cb (patch)
tree5f3dd8374c3c1584cb2b516f4191e70b82472f68 /net/openvswitch/vport-gre.c
parent9ba559d9ca3711940be3e7207dac13c4f0654d43 (diff)
openvswitch: Extend packet attribute for egress tunnel info
OVS vswitch has extended IPFIX exporter to export tunnel headers to improve network visibility. To export this information userspace needs to know egress tunnel for given packet. By extending packet attributes datapath can export egress tunnel info for given packet. So that userspace can ask for egress tunnel info in userspace action. This information is used to build IPFIX data for given flow. Signed-off-by: Wenyu Zhang <wenyuz@vmware.com> Acked-by: Romain Lenglet <rlenglet@vmware.com> Acked-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
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