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

Pravin B Shelar pshelar at nicira.com
Sat Oct 27 20:06:53 UTC 2012


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 +
 lib/netdev-vport.c          |    3 +++
 5 files changed, 29 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..d4a043c 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,
 	OVS_VPORT_TYPE_PATCH = 100, /* virtual tunnel connecting two vports */
 	OVS_VPORT_TYPE_GRE,      /* GRE tunnel */
 	OVS_VPORT_TYPE_CAPWAP,   /* CAPWAP tunnel */
diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c
index 621abd1..a864341 100644
--- a/lib/netdev-vport.c
+++ b/lib/netdev-vport.c
@@ -154,6 +154,9 @@ netdev_vport_get_netdev_type(const struct dpif_linux_vport *vport)
     case OVS_VPORT_TYPE_PATCH:
         return "patch";
 
+    case OVS_VPORT_TYPE_FT_GRE:
+        return "gre";
+
     case OVS_VPORT_TYPE_GRE:
         if (tnl_port_config_from_nlattr(vport->options, vport->options_len,
                                         a)) {
-- 
1.7.10




More information about the dev mailing list