tunnel: Mark GRE64 tunnel protocol deprecated.
authorPravin B Shelar <pshelar@nicira.com>
Tue, 28 Jul 2015 18:29:54 +0000 (11:29 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Tue, 28 Jul 2015 18:29:54 +0000 (11:29 -0700)
GRE64 was introduced to extend GRE key from 32-bit to 64-bit using
key and sequence number field. But GRE64 is not standard
protocol. There are not many users of this protocol. Therefore we
have decided to deprecate it. Since GRE64 is not in upstream
OVS kernel module removing it will bring upstream and out-of-tree
module closer.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
NEWS
datapath/vport-gre.c
lib/netdev-vport.c
tests/ofproto-macros.at
vswitchd/vswitch.xml

diff --git a/NEWS b/NEWS
index fdcc0c6..fc07fbf 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -108,6 +108,8 @@ v2.4.0 - xx xxx xxxx
      how daemons will talk with syslog.
    - Support for "ovs-appctl vlog/list-pattern" command that lets to query
      logging message format for each destination.
+   - GRE64 and ipsec_gre64 tunnel protocol is deprecated and will be removed
+     from OVS v2.5 release.
 
 
 v2.3.0 - 14 Aug 2014
index 7bbcf57..e9e995a 100644 (file)
@@ -330,6 +330,7 @@ static struct vport *gre64_create(const struct vport_parms *parms)
        struct vport *vport;
        int err;
 
+       pr_warn_once("GRE64 tunnel protocol is deprecated.");
        err = gre_init();
        if (err)
                return ERR_PTR(err);
index ea9abf9..f7e2d02 100644 (file)
@@ -242,6 +242,13 @@ netdev_vport_alloc(void)
     return &netdev->up;
 }
 
+static struct netdev *
+netdev_gre64_vport_alloc(void)
+{
+    VLOG_WARN_ONCE("GRE64 tunnel protocol is deprecated. It will be removed from OVS release 2.5.");
+    return netdev_vport_alloc();
+}
+
 static int
 netdev_vport_construct(struct netdev *netdev_)
 {
@@ -1315,7 +1322,7 @@ netdev_vport_range(struct unixctl_conn *conn, int argc,
 }
 
 \f
-#define VPORT_FUNCTIONS(GET_CONFIG, SET_CONFIG,             \
+#define VPORT_FUNCTIONS(ALLOC, GET_CONFIG, SET_CONFIG,      \
                         GET_TUNNEL_CONFIG, GET_STATUS,      \
                         BUILD_HEADER,                       \
                         PUSH_HEADER, POP_HEADER)            \
@@ -1323,7 +1330,7 @@ netdev_vport_range(struct unixctl_conn *conn, int argc,
     netdev_vport_run,                                       \
     netdev_vport_wait,                                      \
                                                             \
-    netdev_vport_alloc,                                     \
+    ALLOC,                                                  \
     netdev_vport_construct,                                 \
     netdev_vport_destruct,                                  \
     netdev_vport_dealloc,                                   \
@@ -1385,9 +1392,10 @@ netdev_vport_range(struct unixctl_conn *conn, int argc,
     NULL,                   /* rx_drain */
 
 
-#define TUNNEL_CLASS(NAME, DPIF_PORT, BUILD_HEADER, PUSH_HEADER, POP_HEADER)   \
+#define TUNNEL_CLASS(NAME, DPIF_PORT, ALLOC, BUILD_HEADER, PUSH_HEADER, POP_HEADER)   \
     { DPIF_PORT,                                                               \
-        { NAME, VPORT_FUNCTIONS(get_tunnel_config,                             \
+        { NAME, VPORT_FUNCTIONS(ALLOC,                                         \
+                                get_tunnel_config,                             \
                                 set_tunnel_config,                             \
                                 get_netdev_tunnel_config,                      \
                                 tunnel_get_status,                             \
@@ -1399,20 +1407,26 @@ netdev_vport_tunnel_register(void)
     /* The name of the dpif_port should be short enough to accomodate adding
      * a port number to the end if one is necessary. */
     static const struct vport_class vport_classes[] = {
-        TUNNEL_CLASS("geneve", "genev_sys", netdev_geneve_build_header,
+        TUNNEL_CLASS("geneve", "genev_sys", netdev_vport_alloc,
+                                            netdev_geneve_build_header,
                                             push_udp_header,
                                             netdev_geneve_pop_header),
-        TUNNEL_CLASS("gre", "gre_sys", netdev_gre_build_header,
+        TUNNEL_CLASS("gre", "gre_sys", netdev_vport_alloc,
+                                       netdev_gre_build_header,
                                        netdev_gre_push_header,
                                        netdev_gre_pop_header),
-        TUNNEL_CLASS("ipsec_gre", "gre_sys", NULL, NULL, NULL),
-        TUNNEL_CLASS("gre64", "gre64_sys", NULL,  NULL, NULL),
-        TUNNEL_CLASS("ipsec_gre64", "gre64_sys", NULL, NULL, NULL),
-        TUNNEL_CLASS("vxlan", "vxlan_sys", netdev_vxlan_build_header,
+        TUNNEL_CLASS("ipsec_gre", "gre_sys", netdev_vport_alloc,
+                                             NULL, NULL, NULL),
+        TUNNEL_CLASS("gre64", "gre64_sys", netdev_gre64_vport_alloc,
+                                             NULL,  NULL, NULL),
+        TUNNEL_CLASS("ipsec_gre64", "gre64_sys", netdev_gre64_vport_alloc,
+                                                 NULL, NULL, NULL),
+        TUNNEL_CLASS("vxlan", "vxlan_sys", netdev_vport_alloc,
+                                           netdev_vxlan_build_header,
                                            push_udp_header,
                                            netdev_vxlan_pop_header),
-        TUNNEL_CLASS("lisp", "lisp_sys", NULL, NULL, NULL),
-        TUNNEL_CLASS("stt", "stt_sys", NULL, NULL, NULL),
+        TUNNEL_CLASS("lisp", "lisp_sys", netdev_vport_alloc, NULL, NULL, NULL),
+        TUNNEL_CLASS("stt", "stt_sys", netdev_vport_alloc, NULL, NULL, NULL),
     };
     static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
 
@@ -1435,7 +1449,8 @@ netdev_vport_patch_register(void)
 {
     static const struct vport_class patch_class =
         { NULL,
-            { "patch", VPORT_FUNCTIONS(get_patch_config,
+            { "patch", VPORT_FUNCTIONS(netdev_vport_alloc,
+                                       get_patch_config,
                                        set_patch_config,
                                        NULL,
                                        NULL, NULL, NULL, NULL) }};
index 74b02b7..aa09480 100644 (file)
@@ -123,6 +123,7 @@ check_logs () {
 /timeval.*disk: [[0-9]]* reads, [[0-9]]* writes/d
 /timeval.*context switches: [[0-9]]* voluntary, [[0-9]]* involuntary/d
 /ovs_rcu.*blocked [[0-9]]* ms waiting for .* to quiesce/d
+/netdev_vport.*GRE64 tunnel protocol is deprecated*/d
 /|WARN|/p
 /|ERR|/p
 /|EMER|/p" ovs-vswitchd.log ovsdb-server.log
index c43bfd1..191dac7 100644 (file)
 
           <dt><code>gre64</code></dt>
           <dd>
+            GRE64 tunnel protocol is deprecated and will be removed from OVS
+            v2.5 release.
             It is same as GRE, but it allows 64 bit key. To store higher 32-bits
             of key, it uses GRE protocol sequence number field. This is non
             standard use of GRE protocol since OVS does not increment
 
           <dt><code>ipsec_gre64</code></dt>
           <dd>
+            GRE64 tunnel protocol is deprecated and will be removed from OVS
+            v2.5 release.
             Same as IPSEC_GRE except 64 bit key.
           </dd>