2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor;
10 import com.google.common.base.Splitter;
11 import java.util.List;
12 import java.util.ListIterator;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
14 import org.opendaylight.yangtools.yang.common.Uint32;
17 * IP conversion utilities.
21 public final class IpConverter {
22 private static final Splitter SPLITTER = Splitter.on('.').trimResults().omitEmptyStrings();
24 private IpConverter() {
27 public static long ipv4AddressToLong(final Ipv4Address ipv4Address) {
29 List<String> splittedAddress = SPLITTER.splitToList(ipv4Address.getValue());
31 int maxIndex = splittedAddress.size() - 1;
32 ListIterator<String> listIter = splittedAddress.listIterator();
33 while (listIter.hasNext()) {
34 String current = listIter.next();
35 int index = splittedAddress.indexOf(current);
36 result |= Long.parseLong(current) << (maxIndex - index) * 8;
38 return result & 0xFFFFFFFF;
41 public static Ipv4Address longToIpv4Address(final Uint32 ip) {
42 return longToIpv4Address(ip.toJava());
45 public static Ipv4Address longToIpv4Address(final long ip) {
47 StringBuilder sb = new StringBuilder(15);
48 for (int i = 0; i < 4; i++) {
49 sb.insert(0, Long.toString(tmpIp & 0xff));
55 return new Ipv4Address(sb.toString());