*/
package org.opendaylight.lispflowmapping.lisp.util;
+import static org.opendaylight.yangtools.yang.common.UintConversions.fromJava;
+
import com.google.common.base.Preconditions;
import com.google.common.net.InetAddresses;
-
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
-
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.NoAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePathBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.ExplicitLocatorPathBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.HopBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.key.value.address.KeyValueAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePath;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv6AddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4BinaryAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.key.value.address.KeyValueAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePath;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.ExplicitLocatorPathBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.HopBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
+import org.opendaylight.yangtools.yang.common.Empty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return (Address) new AsNumberBuilder().setAsNumber(address).build();
}
}
+
public static Rloc toRloc(SimpleAddress address) {
RlocBuilder builder = new RlocBuilder();
builder.setAddressType(addressTypeFromSimpleAddress(address));
return builder.build();
}
- // XXX getMapping rcp fails if VNI set to 0
- public static Eid toEidNoVni(IpPrefix prefix) {
+ public static Eid toEid(IpPrefix prefix, InstanceIdType vni) {
EidBuilder builder = new EidBuilder();
builder.setAddress(addressFromIpPrefix(prefix));
builder.setAddressType(addressTypeFromIpPrefix(prefix));
+ builder.setVirtualNetworkId(vni);
return builder.build();
}
- public static Eid toEid(IpPrefix prefix, InstanceIdType vni) {
+ public static Eid toEid(Ipv6Address address, InstanceIdType vni) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv6Afi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress((Address) new Ipv6Builder().setIpv6(address).build());
+ return builder.build();
+ }
+
+ public static Eid toEid(Ipv6AddressBinary address, InstanceIdType vni) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv6BinaryAfi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress((Address) new Ipv6BinaryBuilder().setIpv6Binary(address).build());
+ return builder.build();
+ }
+
+ public static Eid toEid(DistinguishedNameType dn, InstanceIdType vni) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(DistinguishedNameAfi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress((Address) new DistinguishedNameBuilder().setDistinguishedName(dn).build());
+ return builder.build();
+ }
+
+ public static Eid toEid(MacAddress mac, InstanceIdType vni) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(MacAfi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress((Address) new MacBuilder().setMac(mac).build());
+ return builder.build();
+ }
+
+ public static Eid toEid(Ipv6Prefix prefix, InstanceIdType vni) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv6PrefixAfi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress((Address) new Ipv6PrefixBuilder().setIpv6Prefix(prefix).build());
+ return builder.build();
+ }
+
+ // XXX getMapping rcp fails if VNI set to 0
+ public static Eid toEidNoVni(IpPrefix prefix) {
EidBuilder builder = new EidBuilder();
builder.setAddress(addressFromIpPrefix(prefix));
builder.setAddressType(addressTypeFromIpPrefix(prefix));
- builder.setVirtualNetworkId(vni);
return builder.build();
}
public static Eid toIpPrefixEid(IpAddress addr, int vni) {
// If you touch this, be sure that sfclisp compiles!
int mask = addressTypeFromIpAddress(addr) == Ipv4Afi.class ? 32 : 128;
- IpPrefix prefix = asIpPrefix(String.valueOf(addr.getValue()), mask);
+ IpPrefix prefix = asIpPrefix(addr.stringValue(), mask);
// XXX getMapping rcp fails if VNI set to 0
return toEidNoVni(prefix);
}
return asIpv4PrefixEid(prefix, null);
}
+ public static Eid asIpv4PrefixEid(Ipv4Address addr, InstanceIdType vni) {
+ return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(addr)), vni);
+ }
+
public static Eid asIpv4PrefixEid(final String prefix, final InstanceIdType iiType) {
return toEid(new Ipv4Prefix(prefix), iiType);
}
+ public static Eid asIpv4PrefixEid(Eid eid, Inet4Address address, short mask) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv4PrefixAfi.class);
+ builder.setVirtualNetworkId(eid.getVirtualNetworkId());
+ builder.setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(
+ IetfInetUtil.INSTANCE.ipv4PrefixFor(address, mask)).build());
+ return builder.build();
+ }
+
public static Eid asIpv4PrefixBinaryEid(final String prefix) {
return asIpv4PrefixBinaryEid(prefix, null);
}
+ public static Eid asIpv4PrefixBinaryEid(long vni, final String prefix) {
+ InstanceIdType iid = new InstanceIdType(fromJava(vni));
+ return asIpv4PrefixBinaryEid(prefix, iid);
+ }
+
public static Eid asIpv4PrefixBinaryEid(final String prefix, final InstanceIdType iiType) {
String address = MaskUtil.getPrefixAddress(prefix);
short mask = Short.valueOf(MaskUtil.getPrefixMask(prefix));
byte[] ipv4 = InetAddresses.forString(address).getAddress();
return toEid(new Ipv4PrefixBinaryBuilder().setIpv4AddressBinary(new Ipv4AddressBinary(ipv4))
- .setIpv4MaskLength(mask).build(), iiType);
+ .setIpv4MaskLength(fromJava(mask)).build(), iiType);
}
- public static Eid asIpv4Eid(String address) {
- return toEid(new Ipv4AddressBinary(InetAddresses.forString(address).getAddress()), null);
+ public static Eid asIpv4PrefixBinaryEid(Eid eid, byte[] address, short mask) {
+ return asIpv4PrefixBinaryEid(eid.getVirtualNetworkId(), address, mask);
}
- public static Eid toEid(Ipv6Prefix prefix, InstanceIdType vni) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv6PrefixAfi.class);
- builder.setVirtualNetworkId(vni);
- builder.setAddress((Address) new Ipv6PrefixBuilder().setIpv6Prefix(prefix).build());
- return builder.build();
+ public static Eid asIpv4PrefixBinaryEid(long vni, byte[] address, short mask) {
+ return asIpv4PrefixBinaryEid(new InstanceIdType(fromJava(vni)), address, mask);
}
- public static Eid toEid(Ipv6Address address, InstanceIdType vni) {
+ public static Eid asIpv4PrefixBinaryEid(InstanceIdType vni, byte[] address, short mask) {
+ Preconditions.checkArgument(address.length == 4,
+ "asIpv4PrefixBinaryEid called with incorrect length byte array ({})", address.length);
EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv6Afi.class);
+ builder.setAddressType(Ipv4PrefixBinaryAfi.class);
builder.setVirtualNetworkId(vni);
- builder.setAddress((Address) new Ipv6Builder().setIpv6(address).build());
+ builder.setAddress(new Ipv4PrefixBinaryBuilder().setIpv4AddressBinary(new Ipv4AddressBinary(address))
+ .setIpv4MaskLength(fromJava(mask)).build());
return builder.build();
}
- public static Eid toEid(Ipv6AddressBinary address, InstanceIdType vni) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv6BinaryAfi.class);
- builder.setVirtualNetworkId(vni);
- builder.setAddress((Address) new Ipv6BinaryBuilder().setIpv6Binary(address).build());
- return builder.build();
+ public static Eid asIpv4Eid(String address) {
+ return toEid(new Ipv4AddressBinary(InetAddresses.forString(address).getAddress()), null);
+ }
+
+ public static Eid asIpv4Eid(String address, long vni) {
+ return toEid(new Ipv4AddressBinary(InetAddresses.forString(address).getAddress()),
+ new InstanceIdType(fromJava(vni)));
+ }
+
+ public static Eid asIpv6Eid(String address) {
+ return toEid(new Ipv6AddressBinary(InetAddresses.forString(address).getAddress()), null);
}
public static Eid asIpv6Eid(String address, long vni) {
- return toEid(new Ipv6AddressBinary(InetAddresses.forString(address).getAddress()), new InstanceIdType(vni));
+ return toEid(new Ipv6AddressBinary(InetAddresses.forString(address).getAddress()),
+ new InstanceIdType(fromJava(vni)));
}
public static Eid asIpv6PrefixEid(String prefix) {
return toEid(new Ipv6Prefix(prefix), null);
}
- public static Eid asIpv6Eid(String address) {
- return toEid(new Ipv6AddressBinary(InetAddresses.forString(address).getAddress()), null);
+ public static Eid asIpv6PrefixEid(Ipv6Address addr, InstanceIdType vni) {
+ return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(addr)), vni);
+ }
+
+ public static Eid asIpv6PrefixEid(Eid eid, Inet6Address address, short mask) {
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv6PrefixAfi.class);
+ builder.setVirtualNetworkId(eid.getVirtualNetworkId());
+ builder.setAddress(new Ipv6PrefixBuilder().setIpv6Prefix(
+ IetfInetUtil.INSTANCE.ipv6PrefixFor(address, mask)).build());
+ return builder.build();
}
public static Eid asIpv6PrefixBinaryEid(final String prefix) {
return asIpv6PrefixBinaryEid(prefix, null);
}
+ public static Eid asIpv6PrefixBinaryEid(long vni, final String prefix) {
+ InstanceIdType iid = new InstanceIdType(fromJava(vni));
+ return asIpv6PrefixBinaryEid(prefix, iid);
+ }
+
public static Eid asIpv6PrefixBinaryEid(final String prefix, final InstanceIdType iiType) {
String address = MaskUtil.getPrefixAddress(prefix);
short mask = Short.valueOf(MaskUtil.getPrefixMask(prefix));
byte[] ipv6 = InetAddresses.forString(address).getAddress();
return toEid(new Ipv6PrefixBinaryBuilder().setIpv6AddressBinary(new Ipv6AddressBinary(ipv6))
- .setIpv6MaskLength(mask).build(), iiType);
+ .setIpv6MaskLength(fromJava(mask)).build(), iiType);
}
- public static Eid asIpv4Eid(String address, long vni) {
- return toEid(new Ipv4AddressBinary(InetAddresses.forString(address).getAddress()), new InstanceIdType(vni));
+ public static Eid asIpv6PrefixBinaryEid(Eid eid, byte[] address, short mask) {
+ return asIpv6PrefixBinaryEid(eid.getVirtualNetworkId(), address, mask);
+ }
+
+ public static Eid asIpv6PrefixBinaryEid(long vni, byte[] address, short mask) {
+ return asIpv6PrefixBinaryEid(new InstanceIdType(fromJava(vni)), address, mask);
+ }
+
+ public static Eid asIpv6PrefixBinaryEid(InstanceIdType vni, byte[] address, short mask) {
+ Preconditions.checkArgument(address.length == 16,
+ "asIpv6PrefixBinaryEid called with incorrect length byte array ({})", address.length);
+ EidBuilder builder = new EidBuilder();
+ builder.setAddressType(Ipv6PrefixBinaryAfi.class);
+ builder.setVirtualNetworkId(vni);
+ builder.setAddress(new Ipv6PrefixBinaryBuilder().setIpv6AddressBinary(new Ipv6AddressBinary(address))
+ .setIpv6MaskLength(fromJava(mask)).build());
+ return builder.build();
}
public static Eid asBinaryEid(SimpleAddress address, InstanceIdType iid) {
return LispAddressUtil.asEid(address, iid);
}
+ public static Eid asIpPrefixBinaryEid(Eid eid) {
+ Address address = eid.getAddress();
+ if (address instanceof Ipv4Binary) {
+ return LispAddressUtil.asIpv4PrefixBinaryEid(eid, ((Ipv4Binary) address).getIpv4Binary().getValue(),
+ (short) 32);
+ } else if (address instanceof Ipv6Binary) {
+ return LispAddressUtil.asIpv6PrefixBinaryEid(eid, ((Ipv6Binary) address).getIpv6Binary().getValue(),
+ (short) 128);
+ } else if (address instanceof Ipv4PrefixBinary || address instanceof Ipv6PrefixBinary) {
+ return eid;
+ } else if (address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
+ .types.rev151105.lisp.address.address.Ipv4) {
+ return LispAddressUtil.asIpv4PrefixBinaryEid(((Ipv4) address).getIpv4().getValue() + "/32",
+ eid.getVirtualNetworkId());
+ } else if (address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
+ .types.rev151105.lisp.address.address.Ipv6) {
+ return LispAddressUtil.asIpv6PrefixBinaryEid(((Ipv6) address).getIpv6().getValue() + "/128",
+ eid.getVirtualNetworkId());
+ }
+ return convertToBinary(eid);
+ }
+
public static int ipVersionFromString(String ip) {
if (IP4_PATTERN.matcher(ip).matches()) {
return 4;
int version = ipVersionFromString(addr);
if (version == 4 && (mask >= 0 && mask <= 32)) {
return new IpPrefix(new Ipv4Prefix(addr + "/" + mask));
- } else if (version == 6 && (mask >=0 && mask <= 128)) {
+ } else if (version == 6 && (mask >= 0 && mask <= 128)) {
return new IpPrefix(new Ipv6Prefix(addr + "/" + mask));
} else {
return null;
}
}
- public static Eid asIpv4PrefixEid(Ipv4Address addr, InstanceIdType vni) {
- return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(addr)), vni);
- }
-
- public static Eid asIpv6PrefixEid(Ipv6Address addr, InstanceIdType vni) {
- return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(addr)), vni);
- }
-
- public static Eid asIpv4PrefixEid(Eid eid, Inet4Address address, short mask) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv4PrefixAfi.class);
- builder.setVirtualNetworkId(eid.getVirtualNetworkId());
- builder.setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(
- IetfInetUtil.INSTANCE.ipv4PrefixFor(address, mask)).build());
- return builder.build();
- }
-
- public static Eid asIpv6PrefixEid(Eid eid, Inet6Address address, short mask) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv6PrefixAfi.class);
- builder.setVirtualNetworkId(eid.getVirtualNetworkId());
- builder.setAddress(new Ipv6PrefixBuilder().setIpv6Prefix(
- IetfInetUtil.INSTANCE.ipv6PrefixFor(address, mask)).build());
- return builder.build();
- }
-
- public static Eid asIpv4PrefixBinaryEid(Eid eid, byte[] address, short mask) {
- Preconditions.checkArgument(address.length == 4,
- "asIpv4PrefixBinaryEid called with incorrect length byte array ({})", address.length);
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv4PrefixBinaryAfi.class);
- builder.setVirtualNetworkId(eid.getVirtualNetworkId());
- builder.setAddress(new Ipv4PrefixBinaryBuilder().setIpv4AddressBinary(new Ipv4AddressBinary(address))
- .setIpv4MaskLength(mask).build());
- return builder.build();
- }
-
- public static Eid asIpv6PrefixBinaryEid(Eid eid, byte[] address, short mask) {
- Preconditions.checkArgument(address.length == 16,
- "asIpv6PrefixBinaryEid called with incorrect length byte array ({})", address.length);
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(Ipv6PrefixBinaryAfi.class);
- builder.setVirtualNetworkId(eid.getVirtualNetworkId());
- builder.setAddress(new Ipv6PrefixBinaryBuilder().setIpv6AddressBinary(new Ipv6AddressBinary(address))
- .setIpv6MaskLength(mask).build());
- return builder.build();
- }
-
public static Eid asServicePathEid(long vni, long servicePathId, short serviceIndex) {
EidBuilder eb = new EidBuilder();
eb.setAddressType(ServicePathLcaf.class);
if (vni >= 0) {
- eb.setVirtualNetworkId(new InstanceIdType(vni));
+ eb.setVirtualNetworkId(new InstanceIdType(fromJava(vni)));
}
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
.lisp.address.address.service.path.ServicePathBuilder spb =
new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
.lisp.address.address.service.path.ServicePathBuilder();
- spb.setServicePathId(new ServicePathIdType(servicePathId));
- spb.setServiceIndex(serviceIndex);
+ spb.setServicePathId(new ServicePathIdType(fromJava(servicePathId)));
+ spb.setServiceIndex(fromJava(serviceIndex));
return eb.setAddress(addressFromServicePath(spb.build())).build();
}
- public static Eid toEid(MacAddress mac, InstanceIdType vni) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(MacAfi.class);
- builder.setVirtualNetworkId(vni);
- builder.setAddress((Address) new MacBuilder().setMac(mac).build());
- return builder.build();
- }
-
public static Eid asMacEid(String address, long vni) {
- return toEid(new MacAddress(address), new InstanceIdType(vni));
+ return toEid(new MacAddress(address), new InstanceIdType(fromJava(vni)));
}
public static Eid asMacEid(String address) {
return toEid(new MacAddress(address), null);
}
- public static Eid toEid(DistinguishedNameType dn, InstanceIdType vni) {
- EidBuilder builder = new EidBuilder();
- builder.setAddressType(DistinguishedNameAfi.class);
- builder.setVirtualNetworkId(vni);
- builder.setAddress((Address) new DistinguishedNameBuilder().setDistinguishedName(dn).build());
- return builder.build();
- }
-
public static Eid asDistinguishedNameEid(String address, long vni) {
- return toEid(new MacAddress(address), new InstanceIdType(vni));
+ return toEid(new MacAddress(address), new InstanceIdType(fromJava(vni)));
}
public static Eid asDistinguishedNameEid(String address) {
return builder.build();
}
- public static Eid asSrcDstEid(String src, String dst, int smask, int dmask, int vni) {
+ public static Eid asSrcDstEid(String src, String dst, int smask, int dmask, long vni) {
EidBuilder builder = new EidBuilder();
builder.setAddressType(SourceDestKeyLcaf.class);
- builder.setVirtualNetworkId(new InstanceIdType(Long.valueOf(vni)));
+ builder.setVirtualNetworkId(new InstanceIdType(fromJava(Long.valueOf(vni))));
builder.setAddress(
new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
.lisp.address.address.SourceDestKeyBuilder()
}
public static Rloc asTeLcafRloc(List<IpAddress> hopList) {
- RlocBuilder teBuilder = new RlocBuilder();
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
- .lisp.address.address.ExplicitLocatorPathBuilder elpBuilder =
- new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
- .lisp.address.address.ExplicitLocatorPathBuilder();
ExplicitLocatorPathBuilder teAddrBuilder = new ExplicitLocatorPathBuilder();
teAddrBuilder.setHop(new ArrayList<Hop>());
for (IpAddress hop : hopList) {
teAddrBuilder.getHop().add(hopBuilder.build());
}
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
+ .lisp.address.address.ExplicitLocatorPathBuilder elpBuilder =
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
+ .lisp.address.address.ExplicitLocatorPathBuilder();
elpBuilder.setExplicitLocatorPath(teAddrBuilder.build());
+
+ RlocBuilder teBuilder = new RlocBuilder();
teBuilder.setAddress(elpBuilder.build());
teBuilder.setAddressType(ExplicitLocatorPathLcaf.class);
return teBuilder.build();
List<LocatorRecord> locatorRecords = new ArrayList<LocatorRecord>();
for (Rloc locator : locators) {
LocatorRecordBuilder locatorBuilder = new LocatorRecordBuilder();
- locatorBuilder.setLocalLocator(false).setRlocProbed(false).setWeight((short) 1).setPriority((short) 1)
- .setMulticastWeight((short) 1).setMulticastPriority((short) 1).setRouted(true)
+ locatorBuilder.setLocalLocator(false).setRlocProbed(false)
+ .setWeight(fromJava((short) 1)).setPriority(fromJava((short) 1))
+ .setMulticastWeight(fromJava((short) 1)).setMulticastPriority(fromJava((short) 1)).setRouted(true)
.setRloc(locator).setLocatorId("SFC_LISP").build();
locatorRecords.add(locatorBuilder.build());
}
EidBuilder builder = new EidBuilder();
builder.setAddressType(NoAddressAfi.class);
builder.setVirtualNetworkId(null);
- builder.setAddress(new NoAddressBuilder().setNoAddress(true).build());
+ builder.setAddress(new NoAddressBuilder().setNoAddress(Empty.getInstance()).build());
return builder.build();
}
Ipv4PrefixBinaryBuilder pb = new Ipv4PrefixBinaryBuilder();
byte[] address = InetAddresses.forString(MaskUtil.getAddressStringForIpv4Prefix(prefix)).getAddress();
pb.setIpv4AddressBinary(new Ipv4AddressBinary(address));
- pb.setIpv4MaskLength(MaskUtil.getMaskForAddress(prefix));
+ pb.setIpv4MaskLength(fromJava(MaskUtil.getMaskForAddress(prefix)));
return pb.build();
}
- private static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
- .lisp.address.address.Ipv4Prefix convertFromBinary(Ipv4PrefixBinary prefix) {
- return new Ipv4PrefixBuilder().setIpv4Prefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(
- prefix.getIpv4AddressBinary().getValue(),
- prefix.getIpv4MaskLength())).build();
- }
-
private static Ipv6PrefixBinary convertToBinary(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix prefix) {
Ipv6PrefixBinaryBuilder pb = new Ipv6PrefixBinaryBuilder();
byte[] address = InetAddresses.forString(MaskUtil.getAddressStringForIpv6Prefix(prefix)).getAddress();
pb.setIpv6AddressBinary(new Ipv6AddressBinary(address));
- pb.setIpv6MaskLength(MaskUtil.getMaskForAddress(prefix));
+ pb.setIpv6MaskLength(fromJava(MaskUtil.getMaskForAddress(prefix)));
return pb.build();
}
- private static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
- .lisp.address.address.Ipv6Prefix convertFromBinary(Ipv6PrefixBinary prefix) {
- return new Ipv6PrefixBuilder().setIpv6Prefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(
- prefix.getIpv6AddressBinary().getValue(),
- prefix.getIpv6MaskLength())).build();
-}
-
private static Ipv4Binary convertToBinary(Ipv4 address) {
byte[] addr = InetAddresses.forString(address.getIpv4().getValue()).getAddress();
return new Ipv4BinaryBuilder().setIpv4Binary(new Ipv4AddressBinary(addr)).build();
}
- private static Ipv4 convertFromBinary(Ipv4Binary address) {
- return new Ipv4Builder().setIpv4(IetfInetUtil.INSTANCE.ipv4AddressFor(address.getIpv4Binary().getValue()))
- .build();
- }
-
private static Ipv6Binary convertToBinary(Ipv6 address) {
byte[] addr = InetAddresses.forString(address.getIpv6().getValue()).getAddress();
return new Ipv6BinaryBuilder().setIpv6Binary(new Ipv6AddressBinary(addr)).build();
}
- private static Ipv6 convertFromBinary(Ipv6Binary address) {
- return new Ipv6Builder().setIpv6(IetfInetUtil.INSTANCE.ipv6AddressFor(address.getIpv6Binary().getValue()))
- .build();
- }
-
private static Pair<Class<? extends LispAddressFamily>, Address> convertToBinary(Address addr) {
Address convAddr = null;
Class<? extends LispAddressFamily> convType = null;
return new ImmutablePair<Class<? extends LispAddressFamily>, Address>(convType, convAddr);
}
+ public static Eid convertToBinary(Eid eid) {
+ Pair<Class<? extends LispAddressFamily>, Address> converted = convertToBinary(eid.getAddress());
+ if (converted.getRight() == null) {
+ return eid;
+ }
+ EidBuilder eb = new EidBuilder(eid);
+ eb.setAddressType(converted.getLeft());
+ eb.setAddress(converted.getRight());
+ return eb.build();
+ }
+
+ public static Rloc convertToBinary(Rloc rloc) {
+ Pair<Class<? extends LispAddressFamily>, Address> converted = convertToBinary(rloc.getAddress());
+ if (converted.getRight() == null) {
+ return rloc;
+ }
+ RlocBuilder rb = new RlocBuilder(rloc);
+ rb.setAddressType(converted.getLeft());
+ rb.setAddress(converted.getRight());
+ return rb.build();
+ }
+
+ /**
+ * Converts the {@link InetAddress} into Ipv4 or Ipv6 {@link IpAddressBinary}. If null parameter is passed, method
+ * returns the Ipv4 loopback address (127.0.0.1).
+ *
+ * @param inetAddress Any Ipv4 or Ipv6 InetAddress.
+ * @return The converted Ipv4 or Ipv6 IpAddressBinary, or Ipv4 loopback address (127.0.0.1) if null is passed.
+ */
+ public static IpAddressBinary addressBinaryFromInet(InetAddress inetAddress) {
+ if (inetAddress == null) {
+ inetAddress = Inet4Address.getLoopbackAddress();
+ }
+
+ if (inetAddress instanceof Inet4Address) {
+ return new IpAddressBinary(new Ipv4AddressBinary(inetAddress.getAddress()));
+ } else if (inetAddress instanceof Inet6Address) {
+ return new IpAddressBinary(new Ipv6AddressBinary(inetAddress.getAddress()));
+ }
+ return null;
+ }
+
+ public static IpAddressBinary addressBinaryFromAddress(Address address) {
+ if (address instanceof Ipv4Binary) {
+ return new IpAddressBinary(((Ipv4Binary) address).getIpv4Binary());
+ } else if (address instanceof Ipv6Binary) {
+ return new IpAddressBinary(((Ipv6Binary) address).getIpv6Binary());
+ }
+ return null;
+ }
+
+ private static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
+ .lisp.address.address.Ipv4Prefix convertFromBinary(Ipv4PrefixBinary prefix) {
+ return new Ipv4PrefixBuilder().setIpv4Prefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(
+ prefix.getIpv4AddressBinary().getValue(),
+ prefix.getIpv4MaskLength().toJava())).build();
+ }
+
+ private static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
+ .lisp.address.address.Ipv6Prefix convertFromBinary(Ipv6PrefixBinary prefix) {
+ return new Ipv6PrefixBuilder().setIpv6Prefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(
+ prefix.getIpv6AddressBinary().getValue(),
+ prefix.getIpv6MaskLength().toJava())).build();
+ }
+
+ private static Ipv4 convertFromBinary(Ipv4Binary address) {
+ return new Ipv4Builder().setIpv4(IetfInetUtil.INSTANCE.ipv4AddressFor(address.getIpv4Binary().getValue()))
+ .build();
+ }
+
+ private static Ipv6 convertFromBinary(Ipv6Binary address) {
+ return new Ipv6Builder().setIpv6(IetfInetUtil.INSTANCE.ipv6AddressFor(address.getIpv6Binary().getValue()))
+ .build();
+ }
+
private static Pair<Class<? extends LispAddressFamily>, Address> convertFromBinary(Address addr) {
Address convAddr = null;
Class<? extends LispAddressFamily> convType = null;
return new ImmutablePair<Class<? extends LispAddressFamily>, Address>(convType, convAddr);
}
- public static Eid convertToBinary(Eid eid) {
- Pair<Class<? extends LispAddressFamily>, Address> converted = convertToBinary(eid.getAddress());
- if (converted.getRight() == null) {
- return eid;
- }
- EidBuilder eb = new EidBuilder(eid);
- eb.setAddressType(converted.getLeft());
- eb.setAddress(converted.getRight());
- return eb.build();
- }
-
public static Eid convertFromBinary(Eid eid) {
Pair<Class<? extends LispAddressFamily>, Address> converted = convertFromBinary(eid.getAddress());
if (converted.getRight() == null) {
return eb.build();
}
- public static Rloc convertToBinary(Rloc rloc) {
- Pair<Class<? extends LispAddressFamily>, Address> converted = convertToBinary(rloc.getAddress());
- if (converted.getRight() == null) {
- return rloc;
- }
- RlocBuilder rb = new RlocBuilder(rloc);
- rb.setAddressType(converted.getLeft());
- rb.setAddress(converted.getRight());
- return rb.build();
- }
-
public static Rloc convertFromBinary(Rloc rloc) {
Pair<Class<? extends LispAddressFamily>, Address> converted = convertFromBinary(rloc.getAddress());
if (converted.getRight() == null) {
}
public static boolean addressNeedsConversionToBinary(Address address) {
- if (address instanceof Ipv4 || address instanceof Ipv6 ||
- address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
- .lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix ||
- address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
+ if (address instanceof Ipv4 || address instanceof Ipv6
+ || address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
+ .lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix
+ || address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix) {
return true;
}
}
public static boolean addressNeedsConversionFromBinary(Address address) {
- if (address instanceof Ipv4Binary || address instanceof Ipv6Binary ||
- address instanceof Ipv4PrefixBinary || address instanceof Ipv6PrefixBinary) {
+ if (address instanceof Ipv4Binary || address instanceof Ipv6Binary
+ || address instanceof Ipv4PrefixBinary || address instanceof Ipv6PrefixBinary) {
return true;
}
return false;
}
- public static int compareIpAddressByteArrays(byte[] a, byte[] b) {
- int i;
- if (a.length < b.length) {
+ public static int compareIpAddressByteArrays(byte[] one, byte[] two) {
+ if (one.length < two.length) {
return -1;
- } else if (a.length > b.length) {
+ } else if (one.length > two.length) {
return 1;
- } else if (a.length == 4 && b.length == 4) {
- for (i = 0; i < 4; i++) {
- if (a[i] < b[i]) {
+ } else if (one.length == 4 && two.length == 4) {
+ for (int i = 0; i < 4; i++) {
+ if (one[i] < two[i]) {
return -1;
- } else if (a[i] > b[i]) {
+ } else if (one[i] > two[i]) {
return 1;
}
}
return 0;
- } else if (a.length == 16 && b.length == 16) {
- for (i = 0; i < 16; i++) {
- if (a[i] < b[i]) {
+ } else if (one.length == 16 && two.length == 16) {
+ for (int i = 0; i < 16; i++) {
+ if (one[i] < two[i]) {
return -1;
- } else if (a[i] > b[i]) {
+ } else if (one[i] > two[i]) {
return 1;
}
}
public static short getIpPrefixMask(Eid eid) {
Address addr = eid.getAddress();
if (addr instanceof Ipv4PrefixBinary) {
- return ((Ipv4PrefixBinary) addr).getIpv4MaskLength();
+ return ((Ipv4PrefixBinary) addr).getIpv4MaskLength().toJava();
} else if (addr instanceof Ipv6PrefixBinary) {
- return ((Ipv6PrefixBinary) addr).getIpv6MaskLength();
+ return ((Ipv6PrefixBinary) addr).getIpv6MaskLength().toJava();
}
return 0;
}