Add GPE option to ITM config 69/60769/3
authorJaime Caamaño Ruiz <jaime.caamano.ruiz@ericsson.com>
Thu, 1 Jun 2017 10:20:54 +0000 (12:20 +0200)
committerJaime Caamaño Ruiz <jaime.caamano.ruiz@ericsson.com>
Wed, 26 Jul 2017 13:12:01 +0000 (15:12 +0200)
Add a GPE option on ITM config as a straight forward way to enable the
VXLAN GPE extension system wide.

Change-Id: I3cf5ce42cddef15c071a0b80ab0cc95a83e2b4d1
Signed-off-by: Jaime Caamaño Ruiz <jaime.caamano.ruiz@ericsson.com>
itm/itm-api/src/main/yang/itm-config.yang
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java

index f6591b535a1c949b64762d008eb40df37a4034b0..f60269f473aaf150cc02ca27f5c801528bda1d16 100644 (file)
@@ -161,5 +161,11 @@ module itm-config {
             }
             default 0;
        }
+       leaf gpe-extension-enabled {
+            description "Enable the GPE extension for VXLAN tunnel interfaces
+                configured through ITM.";
+            type boolean;
+            default false;
+       }
     }
 }
index 7f85e61e2950d673a3bb32598a6888c67cfd87a7..949201d5899a1ee4e5b6bb7b56792e20ae038c11 100644 (file)
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.net.util.SubnetUtils;
 import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
@@ -1573,7 +1572,7 @@ public class ItmUtils {
     }
 
     public static List<TunnelOptions> buildTunnelOptions(TunnelEndPoints tep, ItmConfig itmConfig) {
-        List<TunnelOptions> tunOptions = null;
+        List<TunnelOptions> tunOptions = new ArrayList<>();
 
         String tos = tep.getOptionTunnelTos();
         if (tos == null) {
@@ -1581,13 +1580,21 @@ public class ItmUtils {
         }
         /* populate tos option only if its not default value of 0 */
         if (tos != null && !tos.equals("0")) {
-            tunOptions = new ArrayList<>(1);
             TunnelOptionsBuilder optionsBuilder = new TunnelOptionsBuilder();
             optionsBuilder.setKey(new TunnelOptionsKey("tos"));
             optionsBuilder.setTunnelOption("tos");
             optionsBuilder.setValue(tos);
             tunOptions.add(optionsBuilder.build());
         }
-        return tunOptions;
+
+        if (tep.getTunnelType() == TunnelTypeVxlan.class && itmConfig.isGpeExtensionEnabled()) {
+            TunnelOptionsBuilder optionsBuilder = new TunnelOptionsBuilder();
+            optionsBuilder.setKey(new TunnelOptionsKey("exts"));
+            optionsBuilder.setTunnelOption("exts");
+            optionsBuilder.setValue("gpe");
+            tunOptions.add(optionsBuilder.build());
+        }
+
+        return tunOptions.isEmpty() ? null : tunOptions;
     }
 }
index e5e3ad9064059333b59585562b1792278560a732..96df8b8dace6cad42309b740a76496bf244d49e3 100644 (file)
@@ -56,7 +56,10 @@ public class ItmTestModule extends AbstractGuiceJsr250Module {
         bind(ITMManager.class);
         bind(ItmProvider.class);
         ItmConfig itmConfigObj = new ItmConfigBuilder()
-            .setDefTzEnabled(true).setDefTzTunnelType(ITMConstants.TUNNEL_TYPE_VXLAN).build();
+                .setDefTzEnabled(true)
+                .setDefTzTunnelType(ITMConstants.TUNNEL_TYPE_VXLAN)
+                .setGpeExtensionEnabled(false)
+                .build();
         bind(ItmConfig.class).toInstance(itmConfigObj);
         bind(ItmMonitoringIntervalListener.class);
         bind(DpnTepsInfoListener.class);