Added support for IPv6 addresses to class IpAddress:
- For some of the methods, the IP Version needs to be specified by the
caller. This applies to the IpPrefix API as well.
- For now, everywhere IpAddress is used and the IP version has to be
explicitly specified by the caller, we assume/specify IPv4.
- Added unit test for class IpAddress: for both IPv4 and IPv6 addresses.
diff --git a/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java b/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
index 953e88a..16e3798 100644
--- a/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
@@ -132,7 +132,8 @@
// for one of our external addresses.
if (isOutsidePort(inPort)) {
IpAddress target =
- IpAddress.valueOf(arp.getTargetProtocolAddress());
+ IpAddress.valueOf(IpAddress.Version.INET,
+ arp.getTargetProtocolAddress());
PortAddresses addresses =
hostService.getAddressBindingsForPort(inPort);
@@ -149,7 +150,8 @@
// it could be a request from an internal host to an external
// address. Forward it over to the correct port.
IpAddress source =
- IpAddress.valueOf(arp.getSenderProtocolAddress());
+ IpAddress.valueOf(IpAddress.Version.INET,
+ arp.getSenderProtocolAddress());
PortAddresses sourceAddresses = findPortInSubnet(source);
if (sourceAddresses != null) {
for (InterfaceIpAddress ia : sourceAddresses.ipAddresses()) {
@@ -164,8 +166,9 @@
// Continue with normal proxy ARP case
VlanId vlan = VlanId.vlanId(eth.getVlanID());
- Set<Host> hosts = hostService.getHostsByIp(IpAddress.valueOf(arp
- .getTargetProtocolAddress()));
+ Set<Host> hosts =
+ hostService.getHostsByIp(IpAddress.valueOf(IpAddress.Version.INET,
+ arp.getTargetProtocolAddress()));
Host dst = null;
Host src = hostService.getHost(HostId.hostId(eth.getSourceMAC(),
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
index e3822ad..fd85f65 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/impl/DistributedClusterStore.java
@@ -148,7 +148,8 @@
private IpAddress memberAddress(Member member) {
byte[] address = member.getSocketAddress().getAddress().getAddress();
- return IpAddress.valueOf(address);
+ // TODO: Add support for IPv6
+ return IpAddress.valueOf(IpAddress.Version.INET, address);
}
// Interceptor for membership events.
diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpAddressSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpAddressSerializer.java
index 686adb2..ae60793 100644
--- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpAddressSerializer.java
+++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpAddressSerializer.java
@@ -46,7 +46,8 @@
final int octLen = input.readInt();
byte[] octs = new byte[octLen];
input.readBytes(octs);
- return IpAddress.valueOf(octs);
+ // TODO: Add support for reading/writing the IP version
+ return IpAddress.valueOf(IpAddress.Version.INET, octs);
}
}
diff --git a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
index 004f75f..5d895d7 100644
--- a/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
+++ b/core/store/serializers/src/main/java/org/onlab/onos/store/serializers/IpPrefixSerializer.java
@@ -15,6 +15,7 @@
*/
package org.onlab.onos.store.serializers;
+import org.onlab.packet.IpAddress;
import org.onlab.packet.IpPrefix;
import com.esotericsoftware.kryo.Kryo;
@@ -51,6 +52,7 @@
byte[] octs = new byte[octLen];
input.readBytes(octs);
int prefLen = input.readInt();
- return IpPrefix.valueOf(octs, prefLen);
+ // TODO: Add support for reading/writing the IP version
+ return IpPrefix.valueOf(IpAddress.Version.INET, octs, prefLen);
}
}