From: Isaku Yamahata Date: Sat, 9 Jan 2016 02:15:49 +0000 (-0800) Subject: Bug 4911 - unbreak a55db97e8ce43aec9e2f3a3fe70f6bec3272195b X-Git-Tag: release/beryllium-sr2~155^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=a42e4a33f842fc40a0ca81d7250abc8bbe152514;p=netvirt.git Bug 4911 - unbreak a55db97e8ce43aec9e2f3a3fe70f6bec3272195b 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.(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 --- diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java index 779e22159c..9c0d0f5440 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java @@ -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)) { diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java index 87bb0ff2ed..e603ef65fc 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java @@ -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()); diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java index f8a8c26a64..675b073cf9 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java @@ -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)) { diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java index add7dc62c1..f077f09e64 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java @@ -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()); diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java index a0b88e49e5..5006e7fd3e 100644 --- a/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java +++ b/openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java @@ -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());