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 <pshe...@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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev