import org.opendaylight.lispflowmapping.lisp.util.MapNotifyBuilderHelper;
import org.opendaylight.lispflowmapping.lisp.util.MapRequestUtil;
import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
MapNotifyBuilder builder = new MapNotifyBuilder();
List<TransportAddress> rlocs = null;
if (merge) {
- Set<IpAddress> notifyRlocs = new HashSet<IpAddress>();
+ Set<IpAddressBinary> notifyRlocs = new HashSet<IpAddressBinary>();
List<MappingRecordItem> mergedMappings = new ArrayList<MappingRecordItem>();
for (MappingRecordItem record : mapRegister.getMappingRecordItem()) {
MappingRecord mapping = record.getMappingRecord();
MappingRecord currentRecord = (MappingRecord) mapService.getMapping(MappingOrigin.Southbound,
mapping.getEid());
mergedMappings.add(new MappingRecordItemBuilder().setMappingRecord(currentRecord).build());
- Set<IpAddress> sourceRlocs = (Set<IpAddress>) mapService.getData(MappingOrigin.Southbound,
- mapping.getEid(), SubKeys.SRC_RLOCS);
+ Set<IpAddressBinary> sourceRlocs = (Set<IpAddressBinary>) mapService.getData(
+ MappingOrigin.Southbound, mapping.getEid(), SubKeys.SRC_RLOCS);
if (sourceRlocs != null) {
notifyRlocs.addAll(sourceRlocs);
}
}
}
- private static List<TransportAddress> getTransportAddresses(Set<IpAddress> addresses) {
+ private static List<TransportAddress> getTransportAddresses(Set<IpAddressBinary> addresses) {
List<TransportAddress> rlocs = new ArrayList<TransportAddress>();
- for (IpAddress address : addresses) {
+ for (IpAddressBinary address : addresses) {
TransportAddressBuilder tab = new TransportAddressBuilder();
tab.setIpAddress(address);
tab.setPort(new PortNumber(LispMessage.PORT_NUM));
import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
import org.opendaylight.lispflowmapping.interfaces.mapcache.IMapCache;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord;
if (shouldMerge) {
List<XtrId> expiredMappings = new ArrayList<XtrId>();
- Set<IpAddress> sourceRlocs = new HashSet<IpAddress>();
+ Set<IpAddressBinary> sourceRlocs = new HashSet<IpAddressBinary>();
MappingRecord mergedEntry = MappingMergeUtil.mergeXtrIdMappings(getXtrIdMappingList(xtrIdDao),
expiredMappings, sourceRlocs);
removeExpiredXtrIdTableEntries(xtrIdDao, expiredMappings);
package org.opendaylight.lispflowmapping.implementation.util;
import com.google.common.base.Splitter;
+import com.google.common.net.InetAddresses;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressStringifier;
+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.IpAddressBinaryBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.AddMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
public static TransportAddress getTransportAddressFromRloc(Rloc rloc) {
TransportAddressBuilder tab = new TransportAddressBuilder();
Address address = rloc.getAddress();
+ // once we switch to using Ipv4Binary and Ipv6Binary by default for RLOCs, we will only need to keep the below
+ // for backwards compatibility reasons, but the default will be to just return the reference for the binary
+ // object, yey!
if (address instanceof Ipv4) {
- tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((Ipv4) address).getIpv4().getValue()));
+ String ipv4 = ((Ipv4) address).getIpv4().getValue();
+ tab.setIpAddress(IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ipv4).getAddress()));
tab.setPort(new PortNumber(LispMessage.PORT_NUM));
} else if (address instanceof Ipv6) {
- tab.setIpAddress(IpAddressBuilder.getDefaultInstance(((Ipv6) address).getIpv6().getValue()));
+ String ipv6 = ((Ipv6) address).getIpv6().getValue();
+ tab.setIpAddress(IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ipv6).getAddress()));
tab.setPort(new PortNumber(LispMessage.PORT_NUM));
} else if (address instanceof KeyValueAddress) {
SimpleAddress sa = ((KeyValueAddress) address).getKeyValueAddress().getValue();
String ip = it.next();
int port = Integer.valueOf(it.next());
- tab.setIpAddress(IpAddressBuilder.getDefaultInstance(ip));
+ tab.setIpAddress(IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ip).getAddress()));
tab.setPort(new PortNumber(port));
}
} else if (address instanceof DistinguishedName) {
String ip = it.next();
int port = Integer.valueOf(it.next());
- tab.setIpAddress(IpAddressBuilder.getDefaultInstance(ip));
+ tab.setIpAddress(IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ip).getAddress()));
tab.setPort(new PortNumber(port));
} else if (address instanceof ApplicationData) {
ApplicationData appData = (ApplicationData) address;
- tab.setIpAddress(appData.getApplicationData().getAddress().getIpAddress());
+ tab.setIpAddress(getIpAddressBinary(appData.getApplicationData().getAddress().getIpAddress()));
tab.setPort(new PortNumber(appData.getApplicationData().getLocalPortLow()));
}
return tab.build();
return null;
}
}
+
+ // We will see if we need to keep this method post full binary-migration, and if yes, will probably move to
+ // LispAddressUtil (and add tests!)
+ private static IpAddressBinary getIpAddressBinary(IpAddress address) {
+ if (address.getIpv4Address() != null) {
+ String ipv4 = address.getIpv4Address().getValue();
+ return IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ipv4).getAddress());
+ } else if (address.getIpv6Address() != null) {
+ String ipv6 = address.getIpv6Address().getValue();
+ return IpAddressBinaryBuilder.getDefaultInstance(InetAddresses.forString(ipv6).getAddress());
+ }
+ return null;
+ }
}
import java.util.Map;
import java.util.Set;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper;
import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecordBuilder;
}
public static MappingRecord mergeXtrIdMappings(List<Object> records, List<XtrId> expiredMappings,
- Set<IpAddress> sourceRlocs) {
+ Set<IpAddressBinary> sourceRlocs) {
MappingRecordBuilder mrb = null;
XtrId xtrId = null;
Long timestamp = Long.MAX_VALUE;
import static org.junit.Assert.assertNull;
import com.google.common.collect.Lists;
+
import java.util.ArrayList;
import java.util.List;
+
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.opendaylight.lispflowmapping.interfaces.lisp.IMapServerAsync;
import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+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.lisp.proto.rev151105.AddMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapReply;
@Mock private static MapRegister mapRegisterMock;
@InjectMocks private static LispMappingService lispMappingService;
+ private static final byte[] IPV4_BYTES_1 = new byte[] {1, 2, 3, 0};
+ private static final byte[] IPV4_BYTES_2 = new byte[] {1, 2, 4, 0};
private static final String IPV4_STRING_1 = "1.2.3.0";
- private static final String IPV4_STRING_2 = "1.2.4.0";
private static final String IPV4_SOURCE_STRING = "192.168.0.1";
private static final String IPV4_PREFIX_STRING = "/24";
.setMappingRecord(new MappingRecordBuilder().setEid(IPV4_PREFIX_EID_1).build());
private static final TransportAddress TRANSPORT_ADDRESS_1 = new TransportAddressBuilder()
- .setIpAddress(new IpAddress(Ipv4Address.getDefaultInstance(IPV4_STRING_1)))
+ .setIpAddress(new IpAddressBinary(new Ipv4AddressBinary(IPV4_BYTES_1)))
.setPort(new PortNumber(9999)).build();
private static final TransportAddress TRANSPORT_ADDRESS_2 = new TransportAddressBuilder()
- .setIpAddress(new IpAddress(Ipv4Address.getDefaultInstance(IPV4_STRING_2)))
+ .setIpAddress(new IpAddressBinary(new Ipv4AddressBinary(IPV4_BYTES_2)))
.setPort(new PortNumber(8888)).build();
private static final TransportAddress TRANSPORT_ADDRESS = new TransportAddressBuilder()
- .setIpAddress(new IpAddress(Ipv4Address.getDefaultInstance(IPV4_STRING_1)))
+ .setIpAddress(new IpAddressBinary(new Ipv4AddressBinary(IPV4_BYTES_1)))
.setPort(new PortNumber(LispMessage.PORT_NUM)).build();
/**
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.SourceDestKeyHelper;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+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.lisp.proto.rev151105.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
private static MapServer mapServer;
private static MapRegister mapRegister;
- private static final String IPV4_STRING_1 = "1.2.3.0";
+ private static final String IPV4_STRING_1 = "1.2.3.0";
private static final String IPV4_STRING_2 = "1.2.4.0";
private static final String IPV4_STRING_3 = "192.168.0.1";
private static final String IPV4_STRING_4 = "192.168.0.2";
private static final Rloc RLOC_5 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_5);
private static final Rloc RLOC_6 = LispAddressUtil.asIpv4Rloc(IPV4_STRING_6);
+ private static final IpAddressBinary IPV4_BINARY_1 =
+ new IpAddressBinary(new Ipv4AddressBinary(new byte[] {1, 2, 3, 0}));
+ private static final IpAddressBinary IPV4_BINARY_2 =
+ new IpAddressBinary(new Ipv4AddressBinary(new byte[] {1, 2, 4, 0}));
+
private static final long TWO_DAYS = 86400000L * 2;
private static final SubscriberRLOC SUBSCRIBER_RLOC_1 = new SubscriberRLOC(RLOC_1, // timedOut() == true
private static final MappingRecord OLD_MAPPING_RECORD_2 = getDefaultMappingRecordBuilder()
.setLocatorRecord(Lists.newArrayList(LOCATOR_RECORD_2)).build();
- private static final Set<IpAddress> DEFAULT_IP_ADDRESS_SET = getDefaultIpAddressSet();
+ private static final Set<IpAddressBinary> DEFAULT_IP_ADDRESS_SET = getDefaultIpAddressSet();
@Before
public void init() throws NoSuchFieldException, IllegalAccessException {
mappingMergeField.setBoolean(CONFIG_INI, value);
}
- private static Set<IpAddress> getDefaultIpAddressSet() {
- final IpAddress ipAddress = new IpAddress(new Ipv4Address(IPV4_STRING_3));
- final IpAddress ipAddress_2 = new IpAddress(new Ipv4Address(IPV4_STRING_4));
- final Set<IpAddress> addressSet = Sets.newHashSet(ipAddress, ipAddress_2);
+ private static Set<IpAddressBinary> getDefaultIpAddressSet() {
+ final Set<IpAddressBinary> addressSet = Sets.newHashSet(IPV4_BINARY_1, IPV4_BINARY_2);
return addressSet;
}
private static List<TransportAddress> getTransportAddressList() {
TransportAddressBuilder transportAddressBuilder_1 = new TransportAddressBuilder()
- .setIpAddress(new IpAddress(new Ipv4Address(IPV4_STRING_3)))
+ .setIpAddress(IPV4_BINARY_1)
.setPort(new PortNumber(LispMessage.PORT_NUM));
TransportAddressBuilder transportAddressBuilder_2 = new TransportAddressBuilder()
- .setIpAddress(new IpAddress(new Ipv4Address(IPV4_STRING_4)))
+ .setIpAddress(IPV4_BINARY_2)
.setPort(new PortNumber(LispMessage.PORT_NUM));
final List<TransportAddress> transportAddressList = Lists.newArrayList(
- transportAddressBuilder_2.build(),
- transportAddressBuilder_1.build());
+ transportAddressBuilder_1.build(),
+ transportAddressBuilder_2.build());
return transportAddressList;
}
import org.opendaylight.lispflowmapping.interfaces.dao.SubKeys;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
+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.lisp.proto.rev151105.XtrId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord;
private static SimpleMapCache simpleMapCache;
private static final String IPV4_STRING_1 = "1.2.3.0";
- private static final String IPV4_STRING_2 = "1.2.4.0";
private static final String IPV4_STRING_DST = "192.168.0.1";
private static final String IPV4_PREFIX_STRING = "/24";
private static final short MASK = 24;
private static final long VNI_0 = 0L;
private static final long VNI_100 = 100L;
+ private static final byte[] IPV4_RLOC_BINARY = new byte[] {0, 1, 4, 0};
private static final byte[] XTR_ID = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
private static final Eid EID_IPV4_PREFIX_1_VNI = LispAddressUtil
private static final Eid NORMALIZED_EID_2 = MaskUtil.normalize(EID_IPV4_PREFIX_2);
private static final Eid NORMALIZED_EID_IPV4 = MaskUtil.normalize(EID_IPV4);
- private static final IpAddress IP_ADDRESS = new IpAddress(new Ipv4Address(IPV4_STRING_2));
+ private static final IpAddressBinary IP_ADDRESS = new IpAddressBinary(new Ipv4AddressBinary(IPV4_RLOC_BINARY));
private static final ConfigIni CONFIG_INI = ConfigIni.getInstance();
private static final long REGISTRATION_VALIDITY = CONFIG_INI.getRegistrationValiditySb();
private static final MappingAuthkey MAPPING_AUTHKEY = new MappingAuthkeyBuilder()
Mockito.when(tableMock.getSpecific(NORMALIZED_EID_1, SubKeys.XTRID_RECORDS)).thenReturn(xtrIdDaoMock);
Mockito.when(mappingRecordMock.getXtrId()).thenReturn(new XtrId(XTR_ID));
- Set<IpAddress> ipAddresses = Sets.newHashSet(IP_ADDRESS);
+ Set<IpAddressBinary> ipAddresses = Sets.newHashSet(IP_ADDRESS);
List<Object> records = Lists.newArrayList(getDefaultMappingRecordBuilder().build());
PowerMockito.doReturn(records).when(simpleMapCache, // stubs private getXtrIdMappingList method
PowerMockito.method(SimpleMapCache.class, "getXtrIdMappingList", ILispDAO.class))
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+
import org.junit.Test;
import org.mockito.Mockito;
import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+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.lisp.proto.rev151105.SiteId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
private static final Rloc IPV4_RLOC_2 = LispAddressUtil.asIpv4Rloc(IPV4_RLOC_STRING_2);
private static final Rloc IPV4_RLOC_3 = LispAddressUtil.asIpv4Rloc(IPV4_RLOC_STRING_3);
private static final Rloc IPV4_RLOC_4 = LispAddressUtil.asIpv4Rloc(IPV4_RLOC_STRING_4);
- private static final IpAddress IPV4_SOURCE_RLOC_1 = new IpAddress(new Ipv4Address("192.168.0.1"));
- private static final IpAddress IPV4_SOURCE_RLOC_2 = new IpAddress(new Ipv4Address("192.168.0.2"));
- private static final IpAddress IPV4_SOURCE_RLOC_3 = new IpAddress(new Ipv4Address("192.168.0.3"));
+ private static final IpAddressBinary IPV4_SOURCE_RLOC_1 = new IpAddressBinary(
+ new Ipv4AddressBinary(new byte[] {1, 1, 1, 1}));
+ private static final IpAddressBinary IPV4_SOURCE_RLOC_2 = new IpAddressBinary(
+ new Ipv4AddressBinary(new byte[] {2, 2, 2, 2}));
+ private static final IpAddressBinary IPV4_SOURCE_RLOC_3 = new IpAddressBinary(
+ new Ipv4AddressBinary(new byte[] {3, 3, 3, 3}));
private static final String LOCATOR_ID_STRING = "locator-id";
.setXtrId(XTR_ID_3)
.setTimestamp(timestamp_3).build();
- Set<IpAddress> sourceRlocs = Sets.newHashSet();
+ Set<IpAddressBinary> sourceRlocs = Sets.newHashSet();
final List<XtrId> expiredMappings = Lists.newArrayList();
final List<Object> mappingRecords =
Lists.newArrayList(expiredMappingRecord_1, expiredMappingRecord_2, expiredMappingRecord_3);
package org.opendaylight.lispflowmapping.lisp.serializer;
import java.net.Inet4Address;
+import java.net.Inet6Address;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.ByteUtil;
import org.opendaylight.lispflowmapping.lisp.util.NumberUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
+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.proto.rev151105.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MessageType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
}
- private static IpAddress getSourceRloc(InetAddress sourceRloc) {
+ private static IpAddressBinary getSourceRloc(InetAddress sourceRloc) {
if (sourceRloc == null) {
- sourceRloc = InetAddress.getLoopbackAddress();
+ sourceRloc = Inet4Address.getLoopbackAddress();
}
if (sourceRloc instanceof Inet4Address) {
- return new IpAddress(new Ipv4Address(sourceRloc.getHostAddress()));
- } else {
- return new IpAddress(new Ipv6Address(sourceRloc.getHostAddress()));
+ return new IpAddressBinary(new Ipv4AddressBinary(sourceRloc.getAddress()));
+ } else if (sourceRloc instanceof Inet6Address) {
+ return new IpAddressBinary(new Ipv6AddressBinary(sourceRloc.getAddress()));
}
+
+ return null;
}
private interface Flags {
prefix "lisp-proto";
import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+ import odl-inet-binary-types { prefix inet-bin; revision-date 2016-03-03; }
import odl-lisp-address-types { prefix odl-lisp-address; revision-date 2016-05-04; }
organization "LISP Flow Mapping";
grouping transport-address {
container transport-address {
leaf ipAddress {
- type inet:ip-address;
+ type inet-bin:ip-address-binary;
reference "http://www.iana.org/assignments/safi-namespace/safi-namespace.xhtml";
}
leaf port {
"64 bit site identifier.";
}
leaf source-rloc {
- type inet:ip-address;
+ type inet-bin:ip-address-binary;
description
"The Source IP address used for sending the enclosing control
packet in RLOC space.";
import java.net.InetAddress;
import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.concurrent.ThreadFactory;
+
import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
import org.opendaylight.lispflowmapping.southbound.lisp.LispSouthboundHandler;
import org.opendaylight.lispflowmapping.southbound.lisp.LispXtrSouthboundHandler;
import org.opendaylight.lispflowmapping.type.sbplugin.IConfigLispSouthboundPlugin;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.IpAddressBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MessageType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.transport.address.TransportAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.sb.rev150904.OdlLispSbService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.net.InetAddresses;
+import com.google.common.base.Preconditions;
public class LispSouthboundPlugin implements IConfigLispSouthboundPlugin, AutoCloseable {
protected static final Logger LOG = LoggerFactory.getLogger(LispSouthboundPlugin.class);
public void handleSerializedLispBuffer(TransportAddress address, ByteBuffer outBuffer,
final MessageType packetType) {
- InetAddress ip = InetAddresses.forString(new String(address.getIpAddress().getValue()));
+ InetAddress ip = getInetAddress(address);
InetSocketAddress recipient = new InetSocketAddress(ip, address.getPort().getValue());
// the wrappedBuffer() method doesn't copy data, so this conversion shouldn't hurt performance
ByteBuf data = wrappedBuffer(outBuffer.array());
channel.flush();
}
+ private InetAddress getInetAddress(TransportAddress address) {
+ Preconditions.checkNotNull(address, "TransportAddress must not be null");
+ IpAddressBinary ip = address.getIpAddress();
+ try {
+ if (ip.getIpv4AddressBinary() != null) {
+ return InetAddress.getByAddress(ip.getIpv4AddressBinary().getValue());
+ } else if (ip.getIpv6AddressBinary() != null) {
+ return InetAddress.getByAddress(ip.getIpv6AddressBinary().getValue());
+ }
+ } catch (UnknownHostException e) {
+ LOG.debug("Could not convert TransportAddress {} to InetAddress", address, e);
+ }
+ return null;
+ }
+
public LispSouthboundStats getStats() {
return statistics;
}
requestMappingBuilder.setMapRequest(LispNotificationHelper.convertMapRequest(request));
TransportAddressBuilder transportAddressBuilder = new TransportAddressBuilder();
transportAddressBuilder.setIpAddress(
- LispNotificationHelper.getIpAddressFromInetAddress(finalSourceAddress));
+ LispNotificationHelper.getIpAddressBinaryFromInetAddress(finalSourceAddress));
transportAddressBuilder.setPort(new PortNumber(port));
requestMappingBuilder.setTransportAddress(transportAddressBuilder.build());
if (notificationPublishService != null) {
AddMappingBuilder addMappingBuilder = new AddMappingBuilder();
addMappingBuilder.setMapRegister(LispNotificationHelper.convertMapRegister(mapRegister));
TransportAddressBuilder transportAddressBuilder = new TransportAddressBuilder();
- transportAddressBuilder.setIpAddress(LispNotificationHelper.getIpAddressFromInetAddress(sourceAddress));
+ transportAddressBuilder.setIpAddress(LispNotificationHelper
+ .getIpAddressBinaryFromInetAddress(sourceAddress));
transportAddressBuilder.setPort(new PortNumber(port));
addMappingBuilder.setTransportAddress(transportAddressBuilder.build());
if (notificationPublishService != null) {
GotMapNotifyBuilder gotMapNotifyBuilder = new GotMapNotifyBuilder();
gotMapNotifyBuilder.setMapNotify(LispNotificationHelper.convertMapNotify(mapNotify));
TransportAddressBuilder transportAddressBuilder = new TransportAddressBuilder();
- transportAddressBuilder.setIpAddress(LispNotificationHelper.getIpAddressFromInetAddress(sourceAddress));
+ transportAddressBuilder.setIpAddress(LispNotificationHelper
+ .getIpAddressBinaryFromInetAddress(sourceAddress));
transportAddressBuilder.setPort(new PortNumber(port));
gotMapNotifyBuilder.setTransportAddress(transportAddressBuilder.build());
if (notificationPublishService != null) {
GotMapReplyBuilder gotMapReplyBuilder = new GotMapReplyBuilder();
gotMapReplyBuilder.setMapReply(LispNotificationHelper.convertMapReply(mapReply));
TransportAddressBuilder transportAddressBuilder = new TransportAddressBuilder();
- transportAddressBuilder.setIpAddress(LispNotificationHelper.getIpAddressFromInetAddress(sourceAddress));
+ transportAddressBuilder.setIpAddress(LispNotificationHelper
+ .getIpAddressBinaryFromInetAddress(sourceAddress));
transportAddressBuilder.setPort(new PortNumber(port));
gotMapReplyBuilder.setTransportAddress(transportAddressBuilder.build());
if (notificationPublishService != null) {
requestMappingBuilder.setMapRequest(LispNotificationHelper.convertMapRequest(request));
TransportAddressBuilder transportAddressBuilder = new TransportAddressBuilder();
transportAddressBuilder.setIpAddress(
- LispNotificationHelper.getIpAddressFromInetAddress(finalSourceAddress));
+ LispNotificationHelper.getIpAddressBinaryFromInetAddress(finalSourceAddress));
transportAddressBuilder.setPort(new PortNumber(LispMessage.PORT_NUM));
requestMappingBuilder.setTransportAddress(transportAddressBuilder.build());
if (notificationPublishService != null) {
import java.net.InetAddress;
+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.IpAddressBinaryBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifynotification.MapNotify;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifynotification.MapNotifyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregisternotification.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplynotification.MapReplyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequest;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
public final class LispNotificationHelper {
// Utility class, should not be instantiated
.setProbe(mapReply.isProbe()).setSecurityEnabled(mapReply.isSecurityEnabled()).build();
}
- public static IpAddress getIpAddressFromInetAddress(InetAddress address) {
+ public static IpAddressBinary getIpAddressBinaryFromInetAddress(InetAddress address) {
InetAddress inetAddress = address;
if (inetAddress == null) {
inetAddress = InetAddress.getLoopbackAddress();
}
- return IetfInetUtil.INSTANCE.ipAddressFor(address);
+ return IpAddressBinaryBuilder.getDefaultInstance(address.getAddress());
}
}