*/
package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Lists;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import java.util.List;
+import java.util.ListIterator;
+
/**
* @author msunal
*
public final class IpConverter {
public static long Ipv4AddressToLong(Ipv4Address ipv4Address) {
- String ipAddress = ipv4Address.getValue();
- long result = 0;
- String[] atoms = ipAddress.split("\\.");
- for (int i = 3; i >= 0; i--) {
- result |= (Long.parseLong(atoms[3 - i]) << (i * 8));
+ long result = 0 ;
+ Iterable<String> splitted = Splitter.on('.')
+ .trimResults()
+ .omitEmptyStrings()
+ .split(ipv4Address.getValue());
+
+ List<String> splittedAddress = Lists.newArrayList(splitted.iterator());
+ int maxIndex = splittedAddress.size() - 1;
+ ListIterator<String> listIter = splittedAddress.listIterator();
+ while(listIter.hasNext()) {
+ String current = listIter.next();
+ int i = splittedAddress.indexOf(current);
+ result |= (Long.parseLong(current) << ((maxIndex-i) * 8));
}
return result & 0xFFFFFFFF;
}
--- /dev/null
+package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+
+public class IpConverterTest {
+
+ @Test
+ public void testIpv4AddressToLong() {
+ Ipv4Address ipAddress = new Ipv4Address("192.168.1.2");
+ long address = 0xc0a80102L;
+ assertEquals(address, IpConverter.Ipv4AddressToLong(ipAddress));
+ }
+
+ @Test
+ public void testIpv4AddressToLong2() {
+ Ipv4Address ipAddress = new Ipv4Address("10.168.1.2");
+ long address = 0x0aa80102L;
+ assertEquals(address, IpConverter.Ipv4AddressToLong(ipAddress));
+ }
+
+}