Bug 4911 - unbreak a55db97e8ce43aec9e2f3a3fe70f6bec3272195b
authorIsaku Yamahata <isaku.yamahata@intel.com>
Sat, 9 Jan 2016 02:15:49 +0000 (18:15 -0800)
committerIsaku Yamahata <isaku.yamahata@intel.com>
Sat, 9 Jan 2016 04:07:13 +0000 (20:07 -0800)
The change set of a55db97e8ce43aec9e2f3a3fe70f6bec3272195b,
change id of Ib740544ddbbb08745aa7f21aa9246acad1ad1d53
breaks ipv6 work around as follows.
This patch unbreaks it and apply same change to similar work around.

> java.lang.IllegalArgumentException: Could not parse [2003:0:0:0:0:0:0:1/64]
>         at org.apache.commons.net.util.SubnetUtils.calculate(SubnetUtils.java:240)[242:org.apache.commons.net:3.3.0]
>         at org.apache.commons.net.util.SubnetUtils.<init>(SubnetUtils.java:52)[242:org.apache.commons.net:3.3.0]
>         at org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.RoutingService.programRouterInterface(RoutingService.java:62)[279:org.opendaylight.ovsdb.openstack.net-virt-providers:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.programRouterInterfaceStage2(NeutronL3Adapter.java:1195)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.programRouterInterfaceStage1(NeutronL3Adapter.java:1183)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.programFlowForNetworkFromExternal(NeutronL3Adapter.java:1080)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.programFlowsForNeutronRouterInterface(NeutronL3Adapter.java:1054)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.handleNeutronRouterInterfaceEvent(NeutronL3Adapter.java:522)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.handleNeutronPortEvent(NeutronL3Adapter.java:483)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter.handleInterfaceEvent(NeutronL3Adapter.java:796)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.SouthboundHandler.handleInterfaceUpdate(SouthboundHandler.java:91)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.SouthboundHandler.processPortUpdate(SouthboundHandler.java:299)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.SouthboundHandler.processPortEvent(SouthboundHandler.java:287)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.SouthboundHandler.processEvent(SouthboundHandler.java:232)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl.dispatchEvent(EventDispatcherImpl.java:95)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl.access$200(EventDispatcherImpl.java:27)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl$1.run(EventDispatcherImpl.java:56)[278:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_66]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_66]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_66]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_66]
>         at java.lang.Thread.run(Thread.java:745)[:1.8.0_66]

Change-Id: I979f7538c9eb8686e9de2773e70514dfb90a4892
Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java
openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java

index 779e22159ce483f56f35d95ce126f64abfa3c381..9c0d0f5440bc55d16a5c0633c329a45d4ef1e0a6 100644 (file)
@@ -58,6 +58,15 @@ public class ArpResponderService extends AbstractServiceInstance implements ArpP
     @Override
     public Status programStaticArpEntry(Long dpid, String segmentationId, String macAddressStr,
                                         InetAddress ipAddress, Action action) {
+        if (ipAddress instanceof Inet6Address) {
+            // WORKAROUND: For now ipv6 is not supported
+            // TODO: implement ipv6 case
+            LOG.debug("ipv6 address case is not implemented yet. dpid {} segmentationId {} macAddressStr, "
+                    + "ipAddress {} action {}",
+                    dpid, segmentationId, macAddressStr, ipAddress, action);
+            return new Status(StatusCode.NOTIMPLEMENTED);
+        }
+
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
         FlowBuilder flowBuilder = new FlowBuilder();
         String flowName = "ArpResponder_" + segmentationId + "_" + ipAddress.getHostAddress();
@@ -76,15 +85,6 @@ public class ArpResponderService extends AbstractServiceInstance implements ArpP
             }
         }
 
-        if (ipAddress instanceof Inet6Address) {
-            // WORKAROUND: For now ipv6 is not supported
-            // TODO: implement ipv6 case
-            LOG.debug("ipv6 address case is not implemented yet. dpid {} segmentationId {} macAddressStr, "
-                    + "ipAddress {} action {}",
-                    dpid, segmentationId, macAddressStr, ipAddress, action);
-            return new Status(StatusCode.NOTIMPLEMENTED);
-        }
-
         flowBuilder.setMatch(matchBuilder.build());
 
         if (action.equals(Action.ADD)) {
index 87bb0ff2eda2a54878de54a3c38fdecc1ce084bd..e603ef65fce1d58486db785f59307eed27260750 100644 (file)
@@ -108,13 +108,6 @@ public class InboundNatService extends AbstractServiceInstance implements Config
     @Override
     public Status programIpRewriteExclusion(Long dpid, String segmentationId, String excludedCidr,
                                             Action action) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
-        FlowBuilder flowBuilder = new FlowBuilder();
-        String flowName = "InboundNATExclusion_" + segmentationId + "_" + excludedCidr;
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(1024);
-
-        MatchBuilder matchBuilder = new MatchBuilder();
-        MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(segmentationId));
         String ipAddress = excludedCidr.substring(0, excludedCidr.indexOf("/"));
         InetAddress inetAddress;
         try {
@@ -129,6 +122,15 @@ public class InboundNatService extends AbstractServiceInstance implements Config
                     excludedCidr);
             return new Status(StatusCode.NOTIMPLEMENTED);
         }
+
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
+        FlowBuilder flowBuilder = new FlowBuilder();
+        String flowName = "InboundNATExclusion_" + segmentationId + "_" + excludedCidr;
+        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(1024);
+
+        MatchBuilder matchBuilder = new MatchBuilder();
+        MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(segmentationId));
+
         MatchUtils.createDstL3IPv4Match(matchBuilder, new Ipv4Prefix(excludedCidr));
         flowBuilder.setMatch(matchBuilder.build());
 
index f8a8c26a64d5343750d0e0bcd4a18ea30056bb9e..675b073cf9270436d27da9b57ed27fa1da6d4aff 100644 (file)
@@ -52,6 +52,14 @@ public class L3ForwardingService extends AbstractServiceInstance implements L3Fo
     @Override
     public Status programForwardingTableEntry(Long dpid, String segmentationId, InetAddress ipAddress,
                                               String macAddress, Action action) {
+        if (ipAddress instanceof Inet6Address) {
+            // WORKAROUND: For now ipv6 is not supported
+            // TODO: implement ipv6 case
+            LOG.debug("ipv6 address is not implemented yet. dpid {} segmentationId {} ipAddress {} macAddress {} Action {}",
+                      dpid, segmentationId, ipAddress, macAddress, action);
+            return new Status(StatusCode.NOTIMPLEMENTED);
+        }
+
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
         FlowBuilder flowBuilder = new FlowBuilder();
         String flowName = "L3Forwarding_" + segmentationId + "_" + ipAddress.getHostAddress();
@@ -61,13 +69,6 @@ public class L3ForwardingService extends AbstractServiceInstance implements L3Fo
         MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(segmentationId));
         MatchUtils.createDstL3IPv4Match(matchBuilder, MatchUtils.iPv4PrefixFromIPv4Address(ipAddress.getHostAddress()));
 
-        if (ipAddress instanceof Inet6Address) {
-            // WORKAROUND: For now ipv6 is not supported
-            // TODO: implement ipv6 case
-            LOG.debug("ipv6 address is not implemented yet. dpid {} segmentationId {} ipAddress {} macAddress {} Action {}",
-                      dpid, segmentationId, ipAddress, macAddress, action);
-            return new Status(StatusCode.NOTIMPLEMENTED);
-        }
         flowBuilder.setMatch(matchBuilder.build());
 
         if (action.equals(Action.ADD)) {
index add7dc62c18969cd8d8ae09f38bdaccf8500f5e9..f077f09e644c1f5c7fa7cdac75ddec408116f004 100644 (file)
@@ -145,14 +145,6 @@ public class OutboundNatService extends AbstractServiceInstance implements Outbo
     @Override
     public Status programIpRewriteExclusion(Long dpid, String segmentationId, String excludedCidr,
                                             Action action) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
-        FlowBuilder flowBuilder = new FlowBuilder();
-        String flowName = "OutboundNATExclusion_" + segmentationId + "_" + excludedCidr;
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(1024);
-
-        MatchBuilder matchBuilder = new MatchBuilder();
-        MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(segmentationId));
-
         String ipAddress = excludedCidr.substring(0, excludedCidr.indexOf("/"));
         InetAddress inetAddress;
         try {
@@ -167,6 +159,15 @@ public class OutboundNatService extends AbstractServiceInstance implements Outbo
                       excludedCidr);
             return new Status(StatusCode.NOTIMPLEMENTED);
         }
+
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
+        FlowBuilder flowBuilder = new FlowBuilder();
+        String flowName = "OutboundNATExclusion_" + segmentationId + "_" + excludedCidr;
+        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(1024);
+
+        MatchBuilder matchBuilder = new MatchBuilder();
+        MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(segmentationId));
+
         MatchUtils.createDstL3IPv4Match(matchBuilder, new Ipv4Prefix(excludedCidr));
         flowBuilder.setMatch(matchBuilder.build());
 
index a0b88e49e5d1914fd052993ce91b5210589a4967..5006e7fd3e475b6b2dae75ca7183c2bdc76f9b70 100644 (file)
@@ -58,6 +58,12 @@ public class RoutingService extends AbstractServiceInstance implements RoutingPr
     @Override
     public Status programRouterInterface(Long dpid, String sourceSegId, String destSegId, String macAddress,
                                          InetAddress address, int mask, Action action) {
+        if (address instanceof Inet6Address) {
+            // WORKAROUND: For now ipv6 is not supported
+            // TODO: implement ipv6 case
+            LOG.debug("ipv6 address is not implemented yet. address {}", address);
+            return new Status(StatusCode.NOTIMPLEMENTED);
+        }
 
         SubnetUtils addressSubnetInfo = new SubnetUtils(address.getHostAddress() + "/" + mask);
         final String prefixString = addressSubnetInfo.getInfo().getNetworkAddress() + "/" + mask;
@@ -77,12 +83,6 @@ public class RoutingService extends AbstractServiceInstance implements RoutingPr
             MatchUtils.createTunnelIDMatch(matchBuilder, new BigInteger(sourceSegId));
         }
 
-        if (address instanceof Inet6Address) {
-            // WORKAROUND: For now ipv6 is not supported
-            // TODO: implement ipv6 case
-            LOG.debug("ipv6 address is not implemented yet. address {}", address);
-            return new Status(StatusCode.NOTIMPLEMENTED);
-        }
         MatchUtils.createDstL3IPv4Match(matchBuilder, new Ipv4Prefix(prefixString));
         flowBuilder.setMatch(matchBuilder.build());