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>
@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();
}
}
- 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)) {
@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 {
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());
@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();
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)) {
@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 {
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());
@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;
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());