[ovs-dev] [PATCH v2] datapath: Add Upstream id for GRE type.

Pravin B Shelar pshelar at nicira.com
Mon Oct 29 21:31:57 UTC 2012


v1-v2:
	- Dropped userspace changes.
--8<--------------------------cut here-------------------------->8--

Once GRE is upstream it will have new type to have continuous sequence
of ids for vport type.  Following patch adds this ID to have
compatibility with it.

Signed-off-by: Pravin B Shelar <pshelar at nicira.com>
---
 datapath/vport-gre.c        |   23 +++++++++++++++++++++++
 datapath/vport.c            |    1 +
 datapath/vport.h            |    1 +
 include/linux/openvswitch.h |    1 +
 4 files changed, 26 insertions(+)

diff --git a/datapath/vport-gre.c b/datapath/vport-gre.c
index d02d4ec..e810173 100644
--- a/datapath/vport-gre.c
+++ b/datapath/vport-gre.c
@@ -488,6 +488,11 @@ static struct vport *gre_create(const struct vport_parms *parms)
 	return ovs_tnl_create(parms, &ovs_gre_vport_ops, &gre_tnl_ops);
 }
 
+static struct vport *gre_create_ft(const struct vport_parms *parms)
+{
+	return ovs_tnl_create(parms, &ovs_gre_ft_vport_ops, &gre_tnl_ops);
+}
+
 static const struct tnl_ops gre64_tnl_ops = {
 	.tunnel_type	= TNL_T_PROTO_GRE64,
 	.ipproto	= IPPROTO_GRE,
@@ -536,6 +541,24 @@ static void gre_exit(void)
 	inet_del_protocol(&gre_protocol_handlers, IPPROTO_GRE);
 }
 
+const struct vport_ops ovs_gre_ft_vport_ops = {
+	.type		= OVS_VPORT_TYPE_FT_GRE,
+	.flags		= VPORT_F_TUN_ID,
+	.init		= gre_init,
+	.exit		= gre_exit,
+	.create		= gre_create_ft,
+	.destroy	= ovs_tnl_destroy,
+	.set_addr	= ovs_tnl_set_addr,
+	.get_name	= ovs_tnl_get_name,
+	.get_addr	= ovs_tnl_get_addr,
+	.get_options	= ovs_tnl_get_options,
+	.set_options	= ovs_tnl_set_options,
+	.get_dev_flags	= ovs_vport_gen_get_dev_flags,
+	.is_running	= ovs_vport_gen_is_running,
+	.get_operstate	= ovs_vport_gen_get_operstate,
+	.send		= ovs_tnl_send,
+};
+
 const struct vport_ops ovs_gre_vport_ops = {
 	.type		= OVS_VPORT_TYPE_GRE,
 	.flags		= VPORT_F_TUN_ID,
diff --git a/datapath/vport.c b/datapath/vport.c
index d9c8cfd..bb2bd27 100644
--- a/datapath/vport.c
+++ b/datapath/vport.c
@@ -41,6 +41,7 @@ static const struct vport_ops *base_vport_ops_list[] = {
 	&ovs_internal_vport_ops,
 	&ovs_patch_vport_ops,
 	&ovs_gre_vport_ops,
+	&ovs_gre_ft_vport_ops,
 	&ovs_gre64_vport_ops,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
 	&ovs_capwap_vport_ops,
diff --git a/datapath/vport.h b/datapath/vport.h
index 61d5274..5a7caf5 100644
--- a/datapath/vport.h
+++ b/datapath/vport.h
@@ -254,6 +254,7 @@ extern const struct vport_ops ovs_netdev_vport_ops;
 extern const struct vport_ops ovs_internal_vport_ops;
 extern const struct vport_ops ovs_patch_vport_ops;
 extern const struct vport_ops ovs_gre_vport_ops;
+extern const struct vport_ops ovs_gre_ft_vport_ops;
 extern const struct vport_ops ovs_gre64_vport_ops;
 extern const struct vport_ops ovs_capwap_vport_ops;
 
diff --git a/include/linux/openvswitch.h b/include/linux/openvswitch.h
index 89feb61..e761357 100644
--- a/include/linux/openvswitch.h
+++ b/include/linux/openvswitch.h
@@ -182,6 +182,7 @@ enum ovs_vport_type {
 	OVS_VPORT_TYPE_UNSPEC,
 	OVS_VPORT_TYPE_NETDEV,   /* network device */
 	OVS_VPORT_TYPE_INTERNAL, /* network device implemented by datapath */
+	OVS_VPORT_TYPE_FT_GRE,	 /* Flow based GRE tunnel. */
 	OVS_VPORT_TYPE_PATCH = 100, /* virtual tunnel connecting two vports */
 	OVS_VPORT_TYPE_GRE,      /* GRE tunnel */
 	OVS_VPORT_TYPE_CAPWAP,   /* CAPWAP tunnel */
-- 
1.7.10




More information about the dev mailing list